Repository: g1eny0ung/hugo-theme-dream Branch: master Commit: 853d3e913085 Files: 110 Total size: 236.9 KB Directory structure: gitextract_ef1mvqor/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ └── feature_request.yaml │ └── workflows/ │ └── docs.yml ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── archetypes/ │ ├── about.md │ ├── posts/ │ │ └── index.md │ └── posts.md ├── assets/ │ ├── css/ │ │ └── output.css │ └── js/ │ ├── grid.js │ ├── main.js │ └── toc.js ├── config.toml ├── decapCMS/ │ ├── config.yml │ └── index.html ├── docs/ │ ├── app/ │ │ ├── AdSense.jsx │ │ ├── [[...mdxPath]]/ │ │ │ └── page.jsx │ │ └── layout.jsx │ ├── content/ │ │ ├── CHANGELOG.md │ │ ├── _meta.js │ │ ├── about-page.md │ │ ├── adsense.mdx │ │ ├── archives-page.md │ │ ├── base-configurations.mdx │ │ ├── custom-nav-items.mdx │ │ ├── custom.mdx │ │ ├── decap-cms.md │ │ ├── i18n.md │ │ ├── index.mdx │ │ ├── light-and-dark-mode.mdx │ │ ├── migrate-to-v3.mdx │ │ ├── params-configurations.mdx │ │ ├── post-page.mdx │ │ ├── search.md │ │ ├── social-comments.mdx │ │ ├── social-links.mdx │ │ ├── summary-images.mdx │ │ ├── syntax-highlighting.mdx │ │ ├── website-analytics.mdx │ │ └── zen-mode.mdx │ ├── mdx-components.jsx │ ├── next.config.mjs │ ├── package.json │ └── public/ │ └── .nojekyll ├── hugo.example.toml ├── i18n/ │ ├── ar.toml │ ├── bn.toml │ ├── ca.toml │ ├── de.toml │ ├── en.toml │ ├── es.toml │ ├── fr.toml │ ├── he.toml │ ├── it.toml │ ├── ja.toml │ ├── lv.toml │ ├── pt.toml │ ├── ro.toml │ ├── ru.toml │ ├── sl.toml │ ├── tr.toml │ ├── vi.toml │ └── zh.toml ├── layouts/ │ ├── 404.html │ ├── _default/ │ │ ├── _markup/ │ │ │ ├── render-blockquote.html │ │ │ ├── render-codeblock-math.html │ │ │ ├── render-codeblock-mermaid.html │ │ │ ├── render-image.html │ │ │ └── render-link.html │ │ ├── baseof.html │ │ ├── single.html │ │ ├── summary.html │ │ ├── term.html │ │ ├── terms.html │ │ └── zen-summary.html │ ├── index.html │ ├── partials/ │ │ ├── author.html │ │ ├── back.html │ │ ├── commentSystemHeads.html │ │ ├── commentSystems.html │ │ ├── disqus.html │ │ ├── footer.html │ │ ├── footerLeft.html │ │ ├── footerRight.html │ │ ├── head.html │ │ ├── luxon.html │ │ ├── mathjax.html │ │ ├── nav.html │ │ ├── navCustomItems.html │ │ ├── navMobileMenu.html │ │ ├── paginator.html │ │ ├── renderMobileNavItem.html │ │ ├── renderNavItem.html │ │ ├── scripts.html │ │ ├── share.html │ │ ├── socials.html │ │ └── zen-back.html │ └── section/ │ ├── posts.html │ └── search.html ├── package.json ├── src/ │ ├── input.css │ └── js/ │ ├── grid.js │ ├── main.js │ └── toc.js ├── tailwind.config.js └── theme.toml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # EditorConfig is awesome: https://EditorConfig.org # top-most EditorConfig file root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: g1eny0ung # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yaml ================================================ name: Bug report description: Create a report to help us improve title: '[Bug]: ' labels: - bug assignees: - g1eny0ung body: - type: input id: version attributes: label: Version description: What version of Dream are you using? placeholder: v3.x.x or master validations: required: true - type: dropdown id: browsers attributes: label: What browsers are you seeing the problem on? multiple: true options: - Chrome - Firefox - Safari - Microsoft Edge - type: textarea id: bug attributes: label: Describe the bug description: A clear and concise description of what the bug is. validations: required: true - type: textarea id: reproduce attributes: label: To Reproduce description: Steps to reproduce the behavior. placeholder: | You can also include screenshots or any other relevant information here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yaml ================================================ name: Feature request description: Suggest an idea for this project title: '[Feature]: ' labels: - feature assignees: - g1eny0ung body: - type: markdown attributes: value: | > [!TIP] > Thanks for suggesting a feature! Please fill out the sections below to help us understand your request better. > > If you have a question or need help, please open a discussion instead. - type: textarea id: feature attributes: label: Feature request description: Please describe the feature you'd like to see added to the project. placeholder: I'd like to see [...] validations: required: true - type: textarea id: solution attributes: label: Proposed solution description: Please describe a possible solution to the feature request. placeholder: I think we could [...] - type: textarea id: context attributes: label: Additional context description: Add any other context or screenshots about the feature request here. placeholder: I have an idea [...] ================================================ FILE: .github/workflows/docs.yml ================================================ # Sample workflow for building and deploying a Next.js site to GitHub Pages # # To get started with Next.js see: https://nextjs.org/docs/getting-started # name: Deploy docs to Pages on: # Runs on pushes targeting the default branch push: branches: ['master'] paths: - 'docs/**' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: group: 'pages' cancel-in-progress: false jobs: # Build job build: runs-on: ubuntu-latest defaults: run: working-directory: docs steps: - name: Checkout uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 8 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' cache-dependency-path: 'docs/pnpm-lock.yaml' - name: Restore cache uses: actions/cache@v4 with: path: | docs/.next/cache key: ${{ runner.os }}-nextjs-${{ hashFiles('docs/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-nextjs- - run: pnpm install - name: Build run: pnpm run build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: './docs/out' # Deployment job deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 ================================================ FILE: .gitignore ================================================ .DS_Store node_modules package-lock.json yarn.lock docs/.next docs/out ================================================ FILE: .prettierrc ================================================ { "semi": false, "singleQuote": true, "printWidth": 120 } ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2019 Yue Yang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # 🌱 hugo-theme-dream ![GitHub Release](https://img.shields.io/github/v/release/g1eny0ung/hugo-theme-dream) ![GitHub License](https://img.shields.io/github/license/g1eny0ung/hugo-theme-dream) > [!IMPORTANT] > The latest version of Dream is v3.x. > > If you are using v2.x, please check the [v2 branch](https://github.com/g1eny0ung/hugo-theme-dream/tree/v2) and its [docs](https://hugo-theme-dream-docs-v2.netlify.app/). - [Intro](#intro) - [Documentation](#documentation) - [Examples](#examples) - [Publish your site](#publish-your-site) ## Intro Dream is a [Hugo](https://gohugo.io/) theme. I build it for [my blog](https://g1en.site). The main features are **Masonry Layout Posts** and **Flippable About Page**. Dream also supports **light and dark mode** out of the box. ![Screenshot](https://github.com/g1eny0ung/hugo-theme-dream/blob/master/images/screenshot.png?raw=true) For people who prefer a simple and clean interface, Dream has a [**Zen mode**](https://hugo-theme-dream.g1en.site/zen-mode). It is more concentrated on reading and writing. Zen Mode ## Documentation ## Examples - [My blog](https://g1en.site) and its [source code](https://github.com/g1eny0ung/blog) - [A demo of Zen mode](https://g1en-site-zen-mode-preview.netlify.app/) ## Publish your site See [Hosting & Deployment](https://gohugo.io/hosting-and-deployment/). ## License 🌱 Hugo Theme Dream is licensed under the MIT License. Author: [g1eny0ung](https://github.com/g1eny0ung). ================================================ FILE: archetypes/about.md ================================================ --- title: {{ replace .TranslationBaseName "-" " " | title }} date: {{ .Date }} draft: true --- ================================================ FILE: archetypes/posts/index.md ================================================ --- title: {{ replace .File.ContentBaseName "-" " " | title }} date: {{ .Date }} lastmod: {{ .Date }} author: Author Name # avatar: /img/author.jpg # authorlink: https://author.site cover: /img/cover.jpg # images: # - /img/cover.jpg categories: - category1 tags: - tag1 - tag2 # nolastmod: true draft: true --- Cut out summary from your post content here. The remaining content of your post. ================================================ FILE: archetypes/posts.md ================================================ --- title: {{ replace .File.ContentBaseName "-" " " | title }} date: {{ .Date }} lastmod: {{ .Date }} author: Author Name # avatar: /img/author.jpg # authorlink: https://author.site cover: /img/cover.jpg # covercaption: a description of the cover image # images: # - /img/cover.jpg categories: - category1 tags: - tag1 - tag2 # nolastmod: true # math: true draft: true --- Cut out summary from your post content here. The remaining content of your post. ================================================ FILE: assets/css/output.css ================================================ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */ @layer properties; @layer theme, base, components, utilities; @layer theme { :root, :host { --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-500: oklch(63.7% 0.237 25.331); --color-red-600: oklch(57.7% 0.245 27.325); --color-yellow-500: oklch(79.5% 0.184 86.047); --color-yellow-600: oklch(68.1% 0.162 75.834); --color-green-500: oklch(72.3% 0.219 149.579); --color-green-600: oklch(62.7% 0.194 149.214); --color-blue-500: oklch(62.3% 0.214 259.815); --color-blue-600: oklch(54.6% 0.245 262.881); --color-purple-500: oklch(62.7% 0.265 303.9); --color-purple-600: oklch(55.8% 0.288 302.321); --color-black: #000; --spacing: 0.25rem; --text-xs: 0.75rem; --text-xs--line-height: calc(1 / 0.75); --text-sm: 0.875rem; --text-sm--line-height: calc(1.25 / 0.875); --text-lg: 1.125rem; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 1.25rem; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 1.875rem; --text-3xl--line-height: calc(2.25 / 1.875); --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --radius-lg: 0.5rem; --default-font-family: var(--font-sans); --default-mono-font-family: var(--font-mono); } } @layer base { *, ::after, ::before, ::backdrop, ::file-selector-button { box-sizing: border-box; margin: 0; padding: 0; border: 0 solid; } html, :host { line-height: 1.5; -webkit-text-size-adjust: 100%; tab-size: 4; font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); font-feature-settings: var(--default-font-feature-settings, normal); font-variation-settings: var(--default-font-variation-settings, normal); -webkit-tap-highlight-color: transparent; } hr { height: 0; color: inherit; border-top-width: 1px; } abbr:where([title]) { -webkit-text-decoration: underline dotted; text-decoration: underline dotted; } h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; } a { color: inherit; -webkit-text-decoration: inherit; text-decoration: inherit; } b, strong { font-weight: bolder; } code, kbd, samp, pre { font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); font-feature-settings: var(--default-mono-font-feature-settings, normal); font-variation-settings: var(--default-mono-font-variation-settings, normal); font-size: 1em; } small { font-size: 80%; } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } table { text-indent: 0; border-color: inherit; border-collapse: collapse; } :-moz-focusring { outline: auto; } progress { vertical-align: baseline; } summary { display: list-item; } ol, ul, menu { list-style: none; } img, svg, video, canvas, audio, iframe, embed, object { display: block; vertical-align: middle; } img, video { max-width: 100%; height: auto; } button, input, select, optgroup, textarea, ::file-selector-button { font: inherit; font-feature-settings: inherit; font-variation-settings: inherit; letter-spacing: inherit; color: inherit; border-radius: 0; background-color: transparent; opacity: 1; } :where(select:is([multiple], [size])) optgroup { font-weight: bolder; } :where(select:is([multiple], [size])) optgroup option { padding-inline-start: 20px; } ::file-selector-button { margin-inline-end: 4px; } ::placeholder { opacity: 1; } @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { ::placeholder { color: currentcolor; @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, currentcolor 50%, transparent); } } } textarea { resize: vertical; } ::-webkit-search-decoration { -webkit-appearance: none; } ::-webkit-date-and-time-value { min-height: 1lh; text-align: inherit; } ::-webkit-datetime-edit { display: inline-flex; } ::-webkit-datetime-edit-fields-wrapper { padding: 0; } ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { padding-block: 0; } ::-webkit-calendar-picker-indicator { line-height: 1; } :-moz-ui-invalid { box-shadow: none; } button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { appearance: button; } ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; } [hidden]:where(:not([hidden="until-found"])) { display: none !important; } } @layer utilities { .menu { @layer daisyui.l1.l2.l3 { display: flex; width: fit-content; flex-direction: column; flex-wrap: wrap; padding: calc(0.25rem * 2); --menu-active-fg: var(--color-neutral-content); --menu-active-bg: var(--color-neutral); font-size: 0.875rem; :where(li ul) { position: relative; margin-inline-start: calc(0.25rem * 4); padding-inline-start: calc(0.25rem * 2); white-space: nowrap; &:before { position: absolute; inset-inline-start: calc(0.25rem * 0); top: calc(0.25rem * 3); bottom: calc(0.25rem * 3); background-color: var(--color-base-content); opacity: 10%; width: var(--border); content: ""; } } :where(li > .menu-dropdown:not(.menu-dropdown-show)) { display: none; } :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { display: grid; grid-auto-flow: column; align-content: flex-start; align-items: center; gap: calc(0.25rem * 2); border-radius: var(--radius-field); padding-inline: calc(0.25rem * 3); padding-block: calc(0.25rem * 1.5); text-align: start; transition-property: color, background-color, box-shadow; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); grid-auto-columns: minmax(auto, max-content) auto max-content; text-wrap: balance; user-select: none; } :where(li > details > summary) { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } &::-webkit-details-marker { display: none; } } :where(li > details > summary), :where(li > .menu-dropdown-toggle) { &:after { justify-self: flex-end; display: block; height: 0.375rem; width: 0.375rem; rotate: -135deg; translate: 0 -1px; transition-property: rotate, translate; transition-duration: 0.2s; content: ""; transform-origin: 50% 50%; box-shadow: 2px 2px inset; pointer-events: none; } } details { overflow: hidden; interpolate-size: allow-keywords; } details::details-content { block-size: 0; @media (prefers-reduced-motion: no-preference) { transition-behavior: allow-discrete; transition-property: block-size, content-visibility; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } } details[open]::details-content { block-size: auto; } :where(li > details[open] > summary):after, :where(li > .menu-dropdown-toggle.menu-dropdown-show):after { rotate: 45deg; translate: 0 1px; } :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title), li:not(.menu-title, .disabled) > details > summary:not(.menu-title) ):not(.menu-active, :active, .btn) { &.menu-focus, &:focus-visible { cursor: pointer; background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } color: var(--color-base-content); --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } } :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title):not(.menu-active, :active, .btn):hover, li:not(.menu-title, .disabled) > details > summary:not(.menu-title):not(.menu-active, :active, .btn):hover ) { cursor: pointer; background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } box-shadow: 0 1px oklch(0% 0 0 / 0.01) inset, 0 -1px oklch(100% 0 0 / 0.01) inset; } :where(li:empty) { background-color: var(--color-base-content); opacity: 10%; margin: 0.5rem 1rem; height: 1px; } :where(li) { position: relative; display: flex; flex-shrink: 0; flex-direction: column; flex-wrap: wrap; align-items: stretch; .badge { justify-self: flex-end; } & > *:not(ul, .menu-title, details, .btn):active, & > *:not(ul, .menu-title, details, .btn).menu-active, & > details > summary:active { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } color: var(--menu-active-fg); background-color: var(--menu-active-bg); background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--fx-noise); &:not(&:active) { box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg); } } &.menu-disabled { pointer-events: none; color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-base-content) 20%, transparent); } } } .dropdown:focus-within { .menu-dropdown-toggle:after { rotate: 45deg; translate: 0 1px; } } .dropdown-content { margin-top: calc(0.25rem * 2); padding: calc(0.25rem * 2); &:before { display: none; } } } } .dropdown { @layer daisyui.l1.l2.l3 { position: relative; display: inline-block; position-area: var(--anchor-v, bottom) var(--anchor-h, span-right); & > *:not(:has(~ [class*="dropdown-content"])):focus { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } .dropdown-content { position: absolute; } &.dropdown-close .dropdown-content, &:not(details, .dropdown-open, .dropdown-hover:hover, :focus-within) .dropdown-content, &.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible) ~ .dropdown-content { display: none; transform-origin: top; opacity: 0%; scale: 95%; } &[popover], .dropdown-content { z-index: 999; @media (prefers-reduced-motion: no-preference) { animation: dropdown 0.2s; transition-property: opacity, scale, display; transition-behavior: allow-discrete; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } } @starting-style { &[popover], .dropdown-content { scale: 95%; opacity: 0; } } &:not(.dropdown-close) { &.dropdown-open, &:not(.dropdown-hover):focus, &:focus-within { > [tabindex]:first-child { pointer-events: none; } .dropdown-content { opacity: 100%; scale: 100%; } } &.dropdown-hover:hover { .dropdown-content { opacity: 100%; scale: 100%; } } } &:is(details) { summary { &::-webkit-details-marker { display: none; } } } &:where([popover]) { background: #0000; } &[popover] { position: fixed; color: inherit; @supports not (position-area: bottom) { margin: auto; &.dropdown-close, &.dropdown-open:not(:popover-open) { display: none; transform-origin: top; opacity: 0%; scale: 95%; } &::backdrop { background-color: color-mix(in oklab, #000 30%, #0000); } } &.dropdown-close, &:not(.dropdown-open, :popover-open) { display: none; transform-origin: top; opacity: 0%; scale: 95%; } } } } .btn { :where(&) { @layer daisyui.l1.l2.l3 { width: unset; } } @layer daisyui.l1.l2.l3 { display: inline-flex; flex-shrink: 0; cursor: pointer; flex-wrap: nowrap; align-items: center; justify-content: center; gap: calc(0.25rem * 1.5); text-align: center; vertical-align: middle; outline-offset: 2px; webkit-user-select: none; user-select: none; padding-inline: var(--btn-p); color: var(--btn-fg); --tw-prose-links: var(--btn-fg); height: var(--size); font-size: var(--fontsize, 0.875rem); font-weight: 600; outline-color: var(--btn-color, var(--color-base-content)); transition-property: color, background-color, border-color, box-shadow; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); transition-duration: 0.2s; border-start-start-radius: var(--join-ss, var(--radius-field)); border-start-end-radius: var(--join-se, var(--radius-field)); border-end-start-radius: var(--join-es, var(--radius-field)); border-end-end-radius: var(--join-ee, var(--radius-field)); background-color: var(--btn-bg); background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--btn-noise); border-width: var(--border); border-style: solid; border-color: var(--btn-border); text-shadow: 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 0.15)); touch-action: manipulation; box-shadow: 0 0.5px 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow); --size: calc(var(--size-field, 0.25rem) * 10); --btn-bg: var(--btn-color, var(--color-base-200)); --btn-fg: var(--color-base-content); --btn-p: 1rem; --btn-border: var(--btn-bg); @supports (color: color-mix(in lab, red, red)) { --btn-border: color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%)); } --btn-shadow: 0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg); @supports (color: color-mix(in lab, red, red)) { --btn-shadow: 0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000); } --btn-noise: var(--fx-noise); @media (hover: hover) { &:hover { --btn-bg: var(--btn-color, var(--color-base-200)); @supports (color: color-mix(in lab, red, red)) { --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%); } } } &:focus-visible, &:has(:focus-visible) { outline-width: 2px; outline-style: solid; isolation: isolate; } &:active:not(.btn-active) { translate: 0 0.5px; --btn-bg: var(--btn-color, var(--color-base-200)); @supports (color: color-mix(in lab, red, red)) { --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 5%); } --btn-border: var(--btn-color, var(--color-base-200)); @supports (color: color-mix(in lab, red, red)) { --btn-border: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%); } --btn-shadow: 0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0); } &:is(input[type="checkbox"], input[type="radio"]) { appearance: none; &[aria-label]::after { --tw-content: attr(aria-label); content: var(--tw-content); } } &:where(input:checked:not(.filter .btn)) { --btn-color: var(--color-primary); --btn-fg: var(--color-primary-content); isolation: isolate; } } &:disabled { @layer daisyui.l1.l2 { &:not(.btn-link, .btn-ghost) { background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } box-shadow: none; } pointer-events: none; --btn-border: #0000; --btn-noise: none; --btn-fg: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000); } } } &[disabled] { @layer daisyui.l1.l2 { &:not(.btn-link, .btn-ghost) { background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } box-shadow: none; } pointer-events: none; --btn-border: #0000; --btn-noise: none; --btn-fg: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000); } } } } .input { @layer daisyui.l1.l2.l3 { cursor: text; border: var(--border) solid #0000; position: relative; display: inline-flex; flex-shrink: 1; appearance: none; align-items: center; gap: calc(0.25rem * 2); background-color: var(--color-base-100); padding-inline: calc(0.25rem * 3); vertical-align: middle; white-space: nowrap; width: clamp(3rem, 20rem, 100%); height: var(--size); font-size: max(var(--font-size, 0.875rem), 0.875rem); touch-action: manipulation; border-start-start-radius: var(--join-ss, var(--radius-field)); border-start-end-radius: var(--join-se, var(--radius-field)); border-end-start-radius: var(--join-es, var(--radius-field)); border-end-end-radius: var(--join-ee, var(--radius-field)); border-color: var(--input-color); box-shadow: 0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset; @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset; } --size: calc(var(--size-field, 0.25rem) * 10); --input-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --input-color: color-mix(in oklab, var(--color-base-content) 20%, #0000); } &:where(input) { display: inline-flex; } :where(input) { display: inline-flex; height: 100%; width: 100%; appearance: none; background-color: transparent; border: none; &:focus, &:focus-within { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } } :where(input[type="url"]), :where(input[type="email"]) { direction: ltr; } :where(input[type="date"]) { display: inline-flex; } &:focus, &:focus-within { --input-color: var(--color-base-content); box-shadow: 0 1px var(--input-color); @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000); } outline: 2px solid var(--input-color); outline-offset: 2px; isolation: isolate; } @media (pointer: coarse) { @supports (-webkit-touch-callout: none) { &:focus, &:focus-within { --font-size: 1rem; } } } &:has(> input[disabled]), &:is(:disabled, [disabled]), fieldset:disabled & { cursor: not-allowed; border-color: var(--color-base-200); background-color: var(--color-base-200); color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-base-content) 40%, transparent); } &::placeholder { color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-base-content) 20%, transparent); } } box-shadow: none; } &:has(> input[disabled]) > input[disabled] { cursor: not-allowed; } &::-webkit-date-and-time-value { text-align: inherit; } &[type="number"] { &::-webkit-inner-spin-button { margin-block: calc(0.25rem * -3); margin-inline-end: calc(0.25rem * -3); } } &::-webkit-calendar-picker-indicator { position: absolute; inset-inline-end: 0.75em; } &:has(> input[type="date"]) { :where(input[type="date"]) { display: inline-flex; webkit-appearance: none; appearance: none; } input[type="date"]::-webkit-calendar-picker-indicator { position: absolute; inset-inline-end: 0.75em; width: 1em; height: 1em; cursor: pointer; } } } } .range { @layer daisyui.l1.l2.l3 { appearance: none; webkit-appearance: none; --range-thumb: var(--color-base-100); --range-thumb-size: calc(var(--size-selector, 0.25rem) * 6); --range-progress: currentColor; --range-fill: 1; --range-p: 0.25rem; --range-bg: currentColor; @supports (color: color-mix(in lab, red, red)) { --range-bg: color-mix(in oklab, currentColor 10%, #0000); } cursor: pointer; overflow: hidden; background-color: transparent; vertical-align: middle; width: clamp(3rem, 20rem, 100%); --radius-selector-max: calc( var(--radius-selector) + var(--radius-selector) + var(--radius-selector) ); border-radius: calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max))); border: none; height: var(--range-thumb-size); [dir="rtl"] & { --range-dir: -1; } &:focus { outline: none; } &:focus-visible { outline: 2px solid; outline-offset: 2px; } &::-webkit-slider-runnable-track { width: 100%; background-color: var(--range-bg); border-radius: var(--radius-selector); height: calc(var(--range-thumb-size) * 0.5); } @media (forced-colors: active) { &::-webkit-slider-runnable-track { border: 1px solid; } } @media (forced-colors: active) { &::-moz-range-track { border: 1px solid; } } &::-webkit-slider-thumb { position: relative; box-sizing: border-box; border-radius: calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max))); background-color: var(--range-thumb); height: var(--range-thumb-size); width: var(--range-thumb-size); border: var(--range-p) solid; appearance: none; webkit-appearance: none; top: 50%; color: var(--range-progress); transform: translateY(-50%); box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir, 1) * -100cqw) - (var(--range-dir, 1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill)); @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir, 1) * -100cqw) - (var(--range-dir, 1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill)); } } &::-moz-range-track { width: 100%; background-color: var(--range-bg); border-radius: var(--radius-selector); height: calc(var(--range-thumb-size) * 0.5); } &::-moz-range-thumb { position: relative; box-sizing: border-box; border-radius: calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max))); background-color: currentColor; height: var(--range-thumb-size); width: var(--range-thumb-size); border: var(--range-p) solid; top: 50%; color: var(--range-progress); box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir, 1) * -100cqw) - (var(--range-dir, 1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill)); @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir, 1) * -100cqw) - (var(--range-dir, 1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill)); } } &:disabled { cursor: not-allowed; opacity: 30%; } } } .timeline { @layer daisyui.l1.l2.l3 { position: relative; display: flex; > li { position: relative; display: grid; flex-shrink: 0; align-items: center; grid-template-rows: var(--timeline-row-start, minmax(0, 1fr)) auto var( --timeline-row-end, minmax(0, 1fr) ); grid-template-columns: var(--timeline-col-start, minmax(0, 1fr)) auto var( --timeline-col-end, minmax(0, 1fr) ); > hr { border: none; width: 100%; &:first-child { grid-column-start: 1; grid-row-start: 2; } &:last-child { grid-column-start: 3; grid-column-end: none; grid-row-start: 2; grid-row-end: auto; } @media print { border: 0.1px solid var(--color-base-300); } } } :where(hr) { height: calc(0.25rem * 1); background-color: var(--color-base-300); } &:has(.timeline-middle hr) { &:first-child { border-start-start-radius: 0; border-end-start-radius: 0; border-start-end-radius: var(--radius-selector); border-end-end-radius: var(--radius-selector); } &:last-child { border-start-start-radius: var(--radius-selector); border-end-start-radius: var(--radius-selector); border-start-end-radius: 0; border-end-end-radius: 0; } } &:not(:has(.timeline-middle)) { :first-child hr:last-child { border-start-start-radius: var(--radius-selector); border-end-start-radius: var(--radius-selector); border-start-end-radius: 0; border-end-end-radius: 0; } :last-child hr:first-child { border-start-start-radius: 0; border-end-start-radius: 0; border-start-end-radius: var(--radius-selector); border-end-end-radius: var(--radius-selector); } } } } .menu-horizontal { @layer daisyui.l1.l2 { display: inline-flex; flex-direction: row; & > li:not(.menu-title) > details { & > ul { position: absolute; margin-inline-start: calc(0.25rem * 0); margin-top: calc(0.25rem * 4); transform-origin: top; border-radius: var(--radius-box); background-color: var(--color-base-100); padding-block: calc(0.25rem * 2); padding-inline-end: calc(0.25rem * 2); opacity: 0%; scale: 95%; box-shadow: 0 1px 3px 0 oklch(0% 0 0/0.1), 0 1px 2px -1px oklch(0% 0 0/0.1); @media (prefers-reduced-motion: no-preference) { @starting-style { scale: 95%; opacity: 0; } animation: menu 0.2s; transition-property: opacity, scale, display; transition-behavior: allow-discrete; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } } &[open] > ul { opacity: 100%; scale: 100%; } } & > li > details > ul { &:before { --tw-content: none; content: var(--tw-content); } } } } .avatar { @layer daisyui.l1.l2.l3 { position: relative; display: inline-flex; vertical-align: middle; & > div { display: block; aspect-ratio: 1 / 1; overflow: hidden; } img { height: 100%; width: 100%; object-fit: cover; } } } .card { @layer daisyui.l1.l2.l3 { position: relative; display: flex; flex-direction: column; border-radius: var(--radius-box); outline-width: 2px; transition: outline 0.2s ease-in-out; outline: 0 solid #0000; outline-offset: 2px; &:focus { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } &:focus-visible { outline-color: currentColor; } :where(figure:first-child) { overflow: hidden; border-start-start-radius: inherit; border-start-end-radius: inherit; border-end-start-radius: unset; border-end-end-radius: unset; } :where(figure:last-child) { overflow: hidden; border-start-start-radius: unset; border-start-end-radius: unset; border-end-start-radius: inherit; border-end-end-radius: inherit; } figure { display: flex; align-items: center; justify-content: center; } &:has(> input:is(input[type="checkbox"], input[type="radio"])) { cursor: pointer; user-select: none; } &:has(> :checked) { outline: 2px solid currentColor; } } } .sticky { position: sticky; } .dropdown-end { @layer daisyui.l1.l2 { --anchor-h: span-left; :where(.dropdown-content) { inset-inline-end: calc(0.25rem * 0); translate: 0 0; [dir="rtl"] & { translate: 0 0; } } &.dropdown-left { --anchor-h: left; --anchor-v: span-top; .dropdown-content { top: auto; bottom: calc(0.25rem * 0); } } &.dropdown-right { --anchor-h: right; --anchor-v: span-top; .dropdown-content { top: auto; bottom: calc(0.25rem * 0); } } } } .top-0 { top: calc(var(--spacing) * 0); } .join { display: inline-flex; align-items: stretch; --join-ss: 0; --join-se: 0; --join-es: 0; --join-ee: 0; :where(.join-item) { border-start-start-radius: var(--join-ss, 0); border-start-end-radius: var(--join-se, 0); border-end-start-radius: var(--join-es, 0); border-end-end-radius: var(--join-ee, 0); * { --join-ss: var(--radius-field); --join-se: var(--radius-field); --join-es: var(--radius-field); --join-ee: var(--radius-field); } } > .join-item:where(:first-child) { --join-ss: var(--radius-field); --join-se: 0; --join-es: var(--radius-field); --join-ee: 0; } :first-child:not(:last-child) { :where(.join-item) { --join-ss: var(--radius-field); --join-se: 0; --join-es: var(--radius-field); --join-ee: 0; } } > .join-item:where(:last-child) { --join-ss: 0; --join-se: var(--radius-field); --join-es: 0; --join-ee: var(--radius-field); } :last-child:not(:first-child) { :where(.join-item) { --join-ss: 0; --join-se: var(--radius-field); --join-es: 0; --join-ee: var(--radius-field); } } > .join-item:where(:only-child) { --join-ss: var(--radius-field); --join-se: var(--radius-field); --join-es: var(--radius-field); --join-ee: var(--radius-field); } :only-child { :where(.join-item) { --join-ss: var(--radius-field); --join-se: var(--radius-field); --join-es: var(--radius-field); --join-ee: var(--radius-field); } } > :where(:focus, :has(:focus)) { z-index: 1; } @media (hover: hover) { > :where(.btn:hover, :has(.btn:hover)) { isolation: isolate; } } } .z-1 { z-index: 1; } .z-30 { z-index: 30; } .timeline-end { @layer daisyui.l1.l2.l3 { grid-column-start: 1; grid-column-end: 4; grid-row-start: 3; grid-row-end: 4; margin: calc(0.25rem * 1); align-self: flex-start; justify-self: center; } } .timeline-start { @layer daisyui.l1.l2.l3 { grid-column-start: 1; grid-column-end: 4; grid-row-start: 1; grid-row-end: 2; margin: calc(0.25rem * 1); align-self: flex-end; justify-self: center; } } .timeline-vertical { @layer daisyui.l1.l2 { flex-direction: column; > li { justify-items: center; --timeline-row-start: minmax(0, 1fr); --timeline-row-end: minmax(0, 1fr); > hr { height: 100%; width: calc(0.25rem * 1); &:first-child { grid-column-start: 2; grid-row-start: 1; } &:last-child { grid-column-start: 2; grid-column-end: auto; grid-row-start: 3; grid-row-end: none; } } } .timeline-start { grid-column-start: 1; grid-column-end: 2; grid-row-start: 1; grid-row-end: 4; align-self: center; justify-self: flex-end; } .timeline-end { grid-column-start: 3; grid-column-end: 4; grid-row-start: 1; grid-row-end: 4; align-self: center; justify-self: flex-start; } &:has(.timeline-middle) { > li { > hr { &:first-child { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: var(--radius-selector); border-bottom-left-radius: var(--radius-selector); } &:last-child { border-top-left-radius: var(--radius-selector); border-top-right-radius: var(--radius-selector); border-bottom-right-radius: 0; border-bottom-left-radius: 0; } } } } &:not(:has(.timeline-middle)) { :first-child { > hr:last-child { border-top-left-radius: var(--radius-selector); border-top-right-radius: var(--radius-selector); border-bottom-right-radius: 0; border-bottom-left-radius: 0; } } :last-child { > hr:first-child { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: var(--radius-selector); border-bottom-left-radius: var(--radius-selector); } } } &.timeline-snap-icon { > li { --timeline-col-start: minmax(0, 1fr); --timeline-row-start: 0.5rem; } } } } .timeline-middle { @layer daisyui.l1.l2.l3 { grid-column-start: 2; grid-row-start: 2; } } .container { width: 100%; @media (width >= 40rem) { max-width: 40rem; } @media (width >= 48rem) { max-width: 48rem; } @media (width >= 64rem) { max-width: 64rem; } @media (width >= 80rem) { max-width: 80rem; } @media (width >= 96rem) { max-width: 96rem; } } .divider { @layer daisyui.l1.l2.l3 { display: flex; height: calc(0.25rem * 4); flex-direction: row; align-items: center; align-self: stretch; white-space: nowrap; margin: var(--divider-m, 1rem 0); --divider-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --divider-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } &:before, &:after { content: ""; height: calc(0.25rem * 0.5); width: 100%; flex-grow: 1; background-color: var(--divider-color); } @media print { &:before, &:after { border: 0.5px solid; } } &:not(:empty) { gap: calc(0.25rem * 4); } } } .container { margin-inline: auto; } .mx-8 { margin-inline: calc(var(--spacing) * 8); } .mx-auto { margin-inline: auto; } .my-0 { margin-block: calc(var(--spacing) * 0); } .my-0\! { margin-block: calc(var(--spacing) * 0) !important; } .my-2 { margin-block: calc(var(--spacing) * 2); } .my-5 { margin-block: calc(var(--spacing) * 5); } .my-8 { margin-block: calc(var(--spacing) * 8); } .join-item { &:where(*:not(:first-child, :disabled, [disabled], .btn-disabled)) { margin-inline-start: calc(var(--border, 1px) * -1); margin-block-start: 0; } &:where(*:is(:disabled, [disabled], .btn-disabled)) { border-width: var(--border, 1px) 0 var(--border, 1px) var(--border, 1px); } } .prose { color: var(--tw-prose-body); max-width: 65ch; :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; word-break: break-word; } :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-lead); font-size: 1.25em; line-height: 1.6; margin-top: 1.2em; margin-bottom: 1.2em; } :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-links); text-decoration: underline; font-weight: 500; } :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-bold); font-weight: 600; } :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: decimal; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; } :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: upper-alpha; } :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: lower-alpha; } :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: upper-alpha; } :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: lower-alpha; } :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: upper-roman; } :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: lower-roman; } :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: upper-roman; } :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: lower-roman; } :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: decimal; } :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) { list-style-type: disc; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; } :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker { font-weight: 400; color: var(--tw-prose-counters); } :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker { color: var(--tw-prose-bullets); } :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 600; margin-top: 1.25em; } :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) { border-color: var(--tw-prose-hr); border-top-width: 1px; margin-top: 3em; margin-bottom: 3em; } :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: normal; font-style: normal; color: var(--tw-prose-body); border-inline-start-width: 0.25rem; border-inline-start-color: var(--tw-prose-quote-borders); quotes: "\201C""\201D""\2018""\2019"; margin-top: 1.6em; margin-bottom: 1.6em; padding-inline-start: 1em; } :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before { content: open-quote; } :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after { content: close-quote; } :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 800; font-size: 2.25em; margin-top: 0; margin-bottom: 0.8888889em; line-height: 1.1111111; } :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: 900; color: inherit; } :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 700; font-size: 1.5em; margin-top: 2em; margin-bottom: 1em; line-height: 1.3333333; } :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: 800; color: inherit; } :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 600; font-size: 1.25em; margin-top: 1.6em; margin-bottom: 0.6em; line-height: 1.6; } :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: 700; color: inherit; } :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 600; margin-top: 1.5em; margin-bottom: 0.5em; line-height: 1.5; } :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: 700; color: inherit; } :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; } :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) { display: block; margin-top: 2em; margin-bottom: 2em; } :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; } :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { font-weight: 500; font-family: inherit; color: var(--tw-prose-kbd); box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows); font-size: 0.875em; border-radius: 0.3125rem; padding-top: 0.1875em; padding-inline-end: 0.375em; padding-bottom: 0.1875em; padding-inline-start: 0.375em; } :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; font-size: 0.875em; } :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; font-size: 0.9em; } :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: inherit; } :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) { width: 100%; table-layout: auto; margin-top: 2em; margin-bottom: 2em; font-size: 0.875em; line-height: 1.7142857; } :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-th-borders); } :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-headings); font-weight: 600; vertical-align: bottom; padding-inline-end: 0.5714286em; padding-bottom: 0.5714286em; padding-inline-start: 0.5714286em; } :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-td-borders); } :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { border-bottom-width: 0; } :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { vertical-align: baseline; } :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) { border-top-width: 1px; border-top-color: var(--tw-prose-th-borders); } :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { vertical-align: top; } :where(th, td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { text-align: start; } :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; margin-bottom: 0; } :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) { color: var(--tw-prose-captions); font-size: 0.875em; line-height: 1.4285714; margin-top: 0.8571429em; } --tw-prose-body: oklch(37.3% 0.034 259.733); --tw-prose-headings: oklch(21% 0.034 264.665); --tw-prose-lead: oklch(44.6% 0.03 256.802); --tw-prose-links: oklch(21% 0.034 264.665); --tw-prose-bold: oklch(21% 0.034 264.665); --tw-prose-counters: oklch(55.1% 0.027 264.364); --tw-prose-bullets: oklch(87.2% 0.01 258.338); --tw-prose-hr: oklch(92.8% 0.006 264.531); --tw-prose-quotes: oklch(21% 0.034 264.665); --tw-prose-quote-borders: oklch(92.8% 0.006 264.531); --tw-prose-captions: oklch(55.1% 0.027 264.364); --tw-prose-kbd: oklch(21% 0.034 264.665); --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent); --tw-prose-code: oklch(21% 0.034 264.665); --tw-prose-pre-code: oklch(92.8% 0.006 264.531); --tw-prose-pre-bg: oklch(27.8% 0.033 256.848); --tw-prose-th-borders: oklch(87.2% 0.01 258.338); --tw-prose-td-borders: oklch(92.8% 0.006 264.531); --tw-prose-invert-body: oklch(87.2% 0.01 258.338); --tw-prose-invert-headings: #fff; --tw-prose-invert-lead: oklch(70.7% 0.022 261.325); --tw-prose-invert-links: #fff; --tw-prose-invert-bold: #fff; --tw-prose-invert-counters: oklch(70.7% 0.022 261.325); --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802); --tw-prose-invert-hr: oklch(37.3% 0.034 259.733); --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542); --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733); --tw-prose-invert-captions: oklch(70.7% 0.022 261.325); --tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%); --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338); --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802); --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733); font-size: 1rem; line-height: 1.75; :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; margin-bottom: 0; } :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0.5em; margin-bottom: 0.5em; } :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-start: 0.375em; } :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-start: 0.375em; } :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; } :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 1.25em; } :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-bottom: 1.25em; } :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 1.25em; } :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-bottom: 1.25em; } :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; } :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; } :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0.5em; padding-inline-start: 1.625em; } :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; } :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; } :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; } :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; } :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-start: 0; } :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-end: 0; } :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-top: 0.5714286em; padding-inline-end: 0.5714286em; padding-bottom: 0.5714286em; padding-inline-start: 0.5714286em; } :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-start: 0; } :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { padding-inline-end: 0; } :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; } :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-top: 0; } :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { margin-bottom: 0; } } .mt-2 { margin-top: calc(var(--spacing) * 2); } .mt-4 { margin-top: calc(var(--spacing) * 4); } .mt-6 { margin-top: calc(var(--spacing) * 6); } .mt-8 { margin-top: calc(var(--spacing) * 8); } .mr-1 { margin-right: calc(var(--spacing) * 1); } .mb-4 { margin-bottom: calc(var(--spacing) * 4); } .status { @layer daisyui.l1.l2.l3 { display: inline-block; aspect-ratio: 1 / 1; width: calc(0.25rem * 2); height: calc(0.25rem * 2); border-radius: var(--radius-selector); background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 20%, transparent); } background-position: center; background-repeat: no-repeat; vertical-align: middle; color: color-mix(in srgb, #000 30%, transparent); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-black) 30%, transparent); } background-image: radial-gradient( circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * 0.5)), #0000 ); box-shadow: 0 2px 3px -1px currentColor; @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000); } } } .badge { @layer daisyui.l1.l2.l3 { display: inline-flex; align-items: center; justify-content: center; gap: calc(0.25rem * 2); border-radius: var(--radius-selector); vertical-align: middle; color: var(--badge-fg); border: var(--border) solid var(--badge-color, var(--color-base-200)); font-size: 0.875rem; width: fit-content; background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--fx-noise); background-color: var(--badge-bg); --badge-bg: var(--badge-color, var(--color-base-100)); --badge-fg: var(--color-base-content); --size: calc(var(--size-selector, 0.25rem) * 6); height: var(--size); padding-inline: calc(var(--size) / 2 - var(--border)); } } .card-body { @layer daisyui.l1.l2.l3 { display: flex; flex: auto; flex-direction: column; gap: calc(0.25rem * 2); padding: var(--card-p, 1.5rem); font-size: var(--card-fs, 0.875rem); :where(p) { flex-grow: 1; } } } .alert { border-width: var(--border); border-color: var(--alert-border-color, var(--color-base-200)); @layer daisyui.l1.l2.l3 { border-style: solid; --alert-border-color: var(--color-base-200); display: grid; align-items: center; gap: calc(0.25rem * 4); border-radius: var(--radius-box); padding-inline: calc(0.25rem * 4); padding-block: calc(0.25rem * 3); color: var(--color-base-content); background-color: var(--alert-color, var(--color-base-200)); justify-content: start; justify-items: start; grid-auto-flow: column; grid-template-columns: auto; text-align: start; font-size: 0.875rem; line-height: 1.25rem; background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--fx-noise); box-shadow: 0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * 0.08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * 0.08)); @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * 0.08)) inset, 0 1px color-mix( in oklab, color-mix(in oklab, #000 20%, var(--alert-color, var(--color-base-200))) calc(var(--depth) * 20%), #0000 ), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * 0.08)); } &:has(:nth-child(2)) { grid-template-columns: auto minmax(auto, 1fr); } } } .card-actions { @layer daisyui.l1.l2.l3 { display: flex; flex-wrap: wrap; align-items: flex-start; gap: calc(0.25rem * 2); } } .card-title { @layer daisyui.l1.l2.l3 { display: flex; align-items: center; gap: calc(0.25rem * 2); font-size: var(--cardtitle-fs, 1.125rem); font-weight: 600; } } .prose { :root & { --tw-prose-body: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-body: color-mix(in oklab, var(--color-base-content) 80%, #0000); } --tw-prose-headings: var(--color-base-content); --tw-prose-lead: var(--color-base-content); --tw-prose-links: var(--color-base-content); --tw-prose-bold: var(--color-base-content); --tw-prose-counters: var(--color-base-content); --tw-prose-bullets: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-bullets: color-mix(in oklab, var(--color-base-content) 50%, #0000); } --tw-prose-hr: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-hr: color-mix(in oklab, var(--color-base-content) 20%, #0000); } --tw-prose-quotes: var(--color-base-content); --tw-prose-quote-borders: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-quote-borders: color-mix(in oklab, var(--color-base-content) 20%, #0000); } --tw-prose-captions: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-captions: color-mix(in oklab, var(--color-base-content) 50%, #0000); } --tw-prose-code: var(--color-base-content); --tw-prose-pre-code: var(--color-neutral-content); --tw-prose-pre-bg: var(--color-neutral); --tw-prose-th-borders: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-th-borders: color-mix(in oklab, var(--color-base-content) 50%, #0000); } --tw-prose-td-borders: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-td-borders: color-mix(in oklab, var(--color-base-content) 20%, #0000); } --tw-prose-kbd: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --tw-prose-kbd: color-mix(in oklab, var(--color-base-content) 80%, #0000); } :where(code):not(pre > code) { background-color: var(--color-base-200); border-radius: var(--radius-selector); border: var(--border) solid var(--color-base-300); padding-inline: 0.5em; padding-block: 0.2em; font-weight: inherit; &:before, &:after { display: none; } } } } .block { display: block; } .flex { display: flex; } .grid { display: grid; } .hidden { display: none; } .inline { display: inline; } .inline-flex { display: inline-flex; } .divider-vertical { @layer daisyui.l1.l2 { --divider-m: 1rem 0; &.divider { height: calc(0.25rem * 4); width: auto; flex-direction: row; &:before { height: calc(0.25rem * 0.5); width: 100%; } &:after { height: calc(0.25rem * 0.5); width: 100%; } } } } .btn-square { @layer daisyui.l1.l2 { padding-inline: calc(0.25rem * 0); width: var(--size); height: var(--size); } } .h-6 { height: calc(var(--spacing) * 6); } .h-8 { height: calc(var(--spacing) * 8); } .h-12 { height: calc(var(--spacing) * 12); } .h-\[60vh\] { height: 60vh; } .w-2\/3 { width: calc(2/3 * 100%); } .w-8 { width: calc(var(--spacing) * 8); } .w-12 { width: calc(var(--spacing) * 12); } .w-24 { width: calc(var(--spacing) * 24); } .w-36 { width: calc(var(--spacing) * 36); } .w-full { width: 100%; } .max-w-48 { max-width: calc(var(--spacing) * 48); } .max-w-\[65ch\] { max-width: 65ch; } .max-w-none { max-width: none; } .flex-1 { flex: 1; } .grow { flex-grow: 1; } .link { @layer daisyui.l1.l2.l3 { cursor: pointer; text-decoration-line: underline; &:focus { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } &:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; } } } .cursor-pointer { cursor: pointer; } .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .flex-col { flex-direction: column; } .flex-wrap { flex-wrap: wrap; } .items-center { align-items: center; } .items-end { align-items: flex-end; } .items-start { align-items: flex-start; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; } .gap-2 { gap: calc(var(--spacing) * 2); } .gap-4 { gap: calc(var(--spacing) * 4); } .space-y-4 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse)); margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse))); } } .space-y-8 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse)); margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse))); } } .justify-self-start\! { justify-self: flex-start !important; } .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .timeline-box { @layer daisyui.l1.l2.l3 { border: var(--border) solid; border-radius: var(--radius-box); border-color: var(--color-base-300); background-color: var(--color-base-100); padding-inline: calc(0.25rem * 4); padding-block: calc(0.25rem * 2); font-size: 0.75rem; box-shadow: 0 1px 2px 0 oklch(0% 0 0/0.05); } } .rounded-box { border-radius: var(--radius-box); } .rounded-box { border-radius: var(--radius-box); } .rounded-full { border-radius: calc(infinity * 1px); } .rounded-lg { border-radius: var(--radius-lg); } .border { border-style: var(--tw-border-style); border-width: 1px; } .border-base-content\/30 { border-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-base-content) 30%, transparent); } } .bg-base-100 { background-color: var(--color-base-100); } .bg-primary { background-color: var(--color-primary); } .p-1 { padding: calc(var(--spacing) * 1); } .p-2 { padding: calc(var(--spacing) * 2); } .p-4 { padding: calc(var(--spacing) * 4); } .px-0 { padding-inline: calc(var(--spacing) * 0); } .px-2 { padding-inline: calc(var(--spacing) * 2); } .px-4 { padding-inline: calc(var(--spacing) * 4); } .py-4 { padding-block: calc(var(--spacing) * 4); } .py-12 { padding-block: calc(var(--spacing) * 12); } .pt-8 { padding-top: calc(var(--spacing) * 8); } .pb-4 { padding-bottom: calc(var(--spacing) * 4); } .text-center { text-align: center; } .text-2xl { font-size: var(--text-2xl); line-height: var(--tw-leading, var(--text-2xl--line-height)); } .text-3xl { font-size: var(--text-3xl); line-height: var(--tw-leading, var(--text-3xl--line-height)); } .text-lg { font-size: var(--text-lg); line-height: var(--tw-leading, var(--text-lg--line-height)); } .text-sm { font-size: var(--text-sm); line-height: var(--tw-leading, var(--text-sm--line-height)); } .text-xl { font-size: var(--text-xl); line-height: var(--tw-leading, var(--text-xl--line-height)); } .text-xs { font-size: var(--text-xs); line-height: var(--tw-leading, var(--text-xs--line-height)); } .font-medium { --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); } .font-normal { --tw-font-weight: var(--font-weight-normal); font-weight: var(--font-weight-normal); } .font-semibold { --tw-font-weight: var(--font-weight-semibold); font-weight: var(--font-weight-semibold); } .text-base-content\/60 { color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-base-content) 60%, transparent); } } .text-primary-content { color: var(--color-primary-content); } .italic { font-style: italic; } .no-underline { text-decoration-line: none; } .prose { & :where(.btn-link):not(:where([class~="not-prose"], [class~="not-prose"] *)) { text-decoration-line: none; } } .underline { text-decoration-line: underline; } .opacity-0 { opacity: 0%; } .shadow-lg { --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .shadow-md { --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .shadow-xl { --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .btn-ghost { @layer daisyui.l1 { &:not(.btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn)) { --btn-shadow: ""; --btn-bg: #0000; --btn-border: #0000; --btn-noise: none; &:not(:disabled, [disabled], .btn-disabled) { outline-color: currentcolor; --btn-fg: var(--btn-color, currentColor); } } @media (hover: none) { &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover { outline-color: currentcolor; --btn-shadow: ""; --btn-bg: #0000; --btn-fg: var(--btn-color, currentColor); --btn-border: #0000; --btn-noise: none; } } } } .prose-quoteless { :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before { content: none; } :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after { content: none; } } .btn-outline { @layer daisyui.l1 { &:not( .btn-active, :hover, :active:focus, :focus-visible, input:checked:not(.filter .btn), :disabled, [disabled], .btn-disabled ) { --btn-shadow: ""; --btn-bg: #0000; --btn-fg: var(--btn-color); --btn-border: var(--btn-color); --btn-noise: none; } @media (hover: none) { &:not(.btn-active, :active, :focus-visible, input:checked:not(.filter .btn)):hover { --btn-shadow: ""; --btn-bg: #0000; --btn-fg: var(--btn-color); --btn-border: var(--btn-color); --btn-noise: none; } } } } .btn-sm { @layer daisyui.l1.l2 { --fontsize: 0.75rem; --btn-p: 0.75rem; --size: calc(var(--size-field, 0.25rem) * 8); } } .badge-primary { @layer daisyui.l1.l2 { --badge-color: var(--color-primary); --badge-fg: var(--color-primary-content); } } .select-none { -webkit-user-select: none; user-select: none; } .\[--timeline-col-start\:64px\] { --timeline-col-start: 64px; } .group-hover\:text-primary-content { &:is(:where(.group):hover *) { @media (hover: hover) { color: var(--color-primary-content); } } } .hover\:avatar-online { &:hover { @media (hover: hover) { @layer daisyui.l1.l2 { &:before { content: ""; position: absolute; z-index: 1; display: block; border-radius: calc(infinity * 1px); background-color: var(--color-success); outline: 2px solid var(--color-base-100); width: 15%; height: 15%; top: 7%; right: 7%; } } } } } .hover\:bg-base-content\/10 { &:hover { @media (hover: hover) { background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } } } } .hover\:bg-primary { &:hover { @media (hover: hover) { background-color: var(--color-primary); } } } .hover\:underline { &:hover { @media (hover: hover) { text-decoration-line: underline; } } } .hover\:badge-primary { &:hover { @media (hover: hover) { @layer daisyui.l1.l2 { --badge-color: var(--color-primary); --badge-fg: var(--color-primary-content); } } } } .sm\:flex { @media (width >= 40rem) { display: flex; } } .sm\:hidden { @media (width >= 40rem) { display: none; } } .sm\:items-center { @media (width >= 40rem) { align-items: center; } } .sm\:gap-2 { @media (width >= 40rem) { gap: calc(var(--spacing) * 2); } } .md\:divider-horizontal { @media (width >= 48rem) { @layer daisyui.l1.l2 { --divider-m: 0 1rem; &.divider { height: auto; width: calc(0.25rem * 4); flex-direction: column; &:before { height: 100%; width: calc(0.25rem * 0.5); } &:after { height: 100%; width: calc(0.25rem * 0.5); } } } } } .md\:w-1\/2 { @media (width >= 48rem) { width: calc(1/2 * 100%); } } .md\:basis-\[200px\] { @media (width >= 48rem) { flex-basis: 200px; } } .md\:flex-row { @media (width >= 48rem) { flex-direction: row; } } .md\:gap-4 { @media (width >= 48rem) { gap: calc(var(--spacing) * 4); } } .md\:px-0 { @media (width >= 48rem) { padding-inline: calc(var(--spacing) * 0); } } .lg\:col-span-2 { @media (width >= 64rem) { grid-column: span 2 / span 2; } } .lg\:mt-8 { @media (width >= 64rem) { margin-top: calc(var(--spacing) * 8); } } .lg\:mt-12 { @media (width >= 64rem) { margin-top: calc(var(--spacing) * 12); } } .lg\:block { @media (width >= 64rem) { display: block; } } .lg\:flex { @media (width >= 64rem) { display: flex; } } .lg\:grid { @media (width >= 64rem) { display: grid; } } .lg\:w-1\/3 { @media (width >= 64rem) { width: calc(1/3 * 100%); } } .lg\:basis-\[300px\] { @media (width >= 64rem) { flex-basis: 300px; } } .lg\:grid-cols-4 { @media (width >= 64rem) { grid-template-columns: repeat(4, minmax(0, 1fr)); } } .lg\:flex-col { @media (width >= 64rem) { flex-direction: column; } } .lg\:items-end { @media (width >= 64rem) { align-items: flex-end; } } .xl\:w-1\/4 { @media (width >= 80rem) { width: calc(1/4 * 100%); } } .dark\:border { &:where(.dark, .dark *) { border-style: var(--tw-border-style); border-width: 1px; } } .dark\:border-b { &:where(.dark, .dark *) { border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; } } .dark\:border-base-content\/30 { &:where(.dark, .dark *) { border-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-base-content) 30%, transparent); } } } .dark\:border-base-content\/60 { &:where(.dark, .dark *) { border-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-base-content) 60%, transparent); } } } .dark\:bg-base-content { &:where(.dark, .dark *) { background-color: var(--color-base-content); } } .dark\:prose-invert { &:where(.dark, .dark *) { --tw-prose-body: var(--tw-prose-invert-body); --tw-prose-headings: var(--tw-prose-invert-headings); --tw-prose-lead: var(--tw-prose-invert-lead); --tw-prose-links: var(--tw-prose-invert-links); --tw-prose-bold: var(--tw-prose-invert-bold); --tw-prose-counters: var(--tw-prose-invert-counters); --tw-prose-bullets: var(--tw-prose-invert-bullets); --tw-prose-hr: var(--tw-prose-invert-hr); --tw-prose-quotes: var(--tw-prose-invert-quotes); --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders); --tw-prose-captions: var(--tw-prose-invert-captions); --tw-prose-kbd: var(--tw-prose-invert-kbd); --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows); --tw-prose-code: var(--tw-prose-invert-code); --tw-prose-pre-code: var(--tw-prose-invert-pre-code); --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg); --tw-prose-th-borders: var(--tw-prose-invert-th-borders); --tw-prose-td-borders: var(--tw-prose-invert-td-borders); } } .\[\&_ion-icon\]\:text-lg { & ion-icon { font-size: var(--text-lg); line-height: var(--tw-leading, var(--text-lg--line-height)); } } } html { scroll-behavior: smooth; } #disqus_thread iframe[src*='ads-iframe'] { display: none; } #dream-global-bg { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-position: center; background-size: cover; z-index: -1; } .flip-container { width: 100vw; height: calc(100vh - 80px - 2rem); max-width: 100%; perspective: 1000px; &.flip-it { .flipper { transform: rotateY(180deg); } .front { overflow: hidden; } .back { transform: translateX(0) rotateY(180deg); } } .flipper { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform 0.75s; } .front, .back { position: absolute; top: 0; left: 0; width: 100%; height: 100%; backface-visibility: hidden; transition: transform 0.75s; } .front { transform: rotateY(0deg); } .back { transform: translateX(-25%) rotateY(180deg); } } #TableOfContents { position: sticky; top: calc(var(--spacing) * 24); max-height: calc(100vh - 7rem); overflow-y: auto; } @supports (-moz-appearance: none) { #TableOfContents { position: initial; } } #TableOfContents ul { @layer daisyui.l1.l2.l3 { display: flex; width: fit-content; flex-direction: column; flex-wrap: wrap; padding: calc(0.25rem * 2); --menu-active-fg: var(--color-neutral-content); --menu-active-bg: var(--color-neutral); font-size: 0.875rem; :where(li ul) { position: relative; margin-inline-start: calc(0.25rem * 4); padding-inline-start: calc(0.25rem * 2); white-space: nowrap; &:before { position: absolute; inset-inline-start: calc(0.25rem * 0); top: calc(0.25rem * 3); bottom: calc(0.25rem * 3); background-color: var(--color-base-content); opacity: 10%; width: var(--border); content: ""; } } :where(li > .menu-dropdown:not(.menu-dropdown-show)) { display: none; } :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { display: grid; grid-auto-flow: column; align-content: flex-start; align-items: center; gap: calc(0.25rem * 2); border-radius: var(--radius-field); padding-inline: calc(0.25rem * 3); padding-block: calc(0.25rem * 1.5); text-align: start; transition-property: color, background-color, box-shadow; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); grid-auto-columns: minmax(auto, max-content) auto max-content; text-wrap: balance; user-select: none; } :where(li > details > summary) { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } &::-webkit-details-marker { display: none; } } :where(li > details > summary), :where(li > .menu-dropdown-toggle) { &:after { justify-self: flex-end; display: block; height: 0.375rem; width: 0.375rem; rotate: -135deg; translate: 0 -1px; transition-property: rotate, translate; transition-duration: 0.2s; content: ""; transform-origin: 50% 50%; box-shadow: 2px 2px inset; pointer-events: none; } } details { overflow: hidden; interpolate-size: allow-keywords; } details::details-content { block-size: 0; @media (prefers-reduced-motion: no-preference) { transition-behavior: allow-discrete; transition-property: block-size, content-visibility; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } } details[open]::details-content { block-size: auto; } :where(li > details[open] > summary):after, :where(li > .menu-dropdown-toggle.menu-dropdown-show):after { rotate: 45deg; translate: 0 1px; } :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title), li:not(.menu-title, .disabled) > details > summary:not(.menu-title) ):not(.menu-active, :active, .btn) { &.menu-focus, &:focus-visible { cursor: pointer; background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } color: var(--color-base-content); --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } } :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title):not(.menu-active, :active, .btn):hover, li:not(.menu-title, .disabled) > details > summary:not(.menu-title):not(.menu-active, :active, .btn):hover ) { cursor: pointer; background-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent); } --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } box-shadow: 0 1px oklch(0% 0 0 / 0.01) inset, 0 -1px oklch(100% 0 0 / 0.01) inset; } :where(li:empty) { background-color: var(--color-base-content); opacity: 10%; margin: 0.5rem 1rem; height: 1px; } :where(li) { position: relative; display: flex; flex-shrink: 0; flex-direction: column; flex-wrap: wrap; align-items: stretch; .badge { justify-self: flex-end; } & > *:not(ul, .menu-title, details, .btn):active, & > *:not(ul, .menu-title, details, .btn).menu-active, & > details > summary:active { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } color: var(--menu-active-fg); background-color: var(--menu-active-bg); background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--fx-noise); &:not(&:active) { box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg); } } &.menu-disabled { pointer-events: none; color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, var(--color-base-content) 20%, transparent); } } } .dropdown:focus-within { .menu-dropdown-toggle:after { rotate: 45deg; translate: 0 1px; } } .dropdown-content { margin-top: calc(0.25rem * 2); padding: calc(0.25rem * 2); &:before { display: none; } } } @layer daisyui.l1.l2 { :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) { border-radius: var(--radius-field); padding-inline: calc(0.25rem * 2.5); padding-block: calc(0.25rem * 1); font-size: 0.75rem; } .menu-title { padding-inline: calc(0.25rem * 3); padding-block: calc(0.25rem * 2); } } } .dream-alert { > .heading { display: flex; align-items: center; gap: calc(var(--spacing) * 1); font-size: var(--text-sm); line-height: var(--tw-leading, var(--text-sm--line-height)); --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); } ion-icon { font-size: 1rem; } &.note { border-inline-start-color: var(--color-blue-600); &:where(.dark, .dark *) { border-inline-start-color: var(--color-blue-500); } .heading { color: var(--color-blue-600); &:where(.dark, .dark *) { color: var(--color-blue-500); } } } &.tip { border-inline-start-color: var(--color-green-600); &:where(.dark, .dark *) { border-inline-start-color: var(--color-green-500); } .heading { color: var(--color-green-600); &:where(.dark, .dark *) { color: var(--color-green-500); } } } &.important { border-inline-start-color: var(--color-purple-600); &:where(.dark, .dark *) { border-inline-start-color: var(--color-purple-500); } .heading { color: var(--color-purple-600); &:where(.dark, .dark *) { color: var(--color-purple-500); } } } &.warning { border-inline-start-color: var(--color-yellow-600); &:where(.dark, .dark *) { border-inline-start-color: var(--color-yellow-500); } .heading { color: var(--color-yellow-600); &:where(.dark, .dark *) { color: var(--color-yellow-500); } } } &.caution { border-inline-start-color: var(--color-red-600); &:where(.dark, .dark *) { border-inline-start-color: var(--color-red-500); } .heading { color: var(--color-red-600); &:where(.dark, .dark *) { color: var(--color-red-500); } } } } @layer base { :where(:root),:root:has(input.theme-controller[value=emerald]:checked),[data-theme=emerald] { color-scheme: light; --color-base-100: oklch(100% 0 0); --color-base-200: oklch(93% 0 0); --color-base-300: oklch(86% 0 0); --color-base-content: oklch(35.519% 0.032 262.988); --color-primary: oklch(76.662% 0.135 153.45); --color-primary-content: oklch(33.387% 0.04 162.24); --color-secondary: oklch(61.302% 0.202 261.294); --color-secondary-content: oklch(100% 0 0); --color-accent: oklch(72.772% 0.149 33.2); --color-accent-content: oklch(0% 0 0); --color-neutral: oklch(35.519% 0.032 262.988); --color-neutral-content: oklch(98.462% 0.001 247.838); --color-info: oklch(72.06% 0.191 231.6); --color-info-content: oklch(0% 0 0); --color-success: oklch(64.8% 0.15 160); --color-success-content: oklch(0% 0 0); --color-warning: oklch(84.71% 0.199 83.87); --color-warning-content: oklch(0% 0 0); --color-error: oklch(71.76% 0.221 22.18); --color-error-content: oklch(0% 0 0); --radius-selector: 1rem; --radius-field: 0.5rem; --radius-box: 1rem; --size-selector: 0.25rem; --size-field: 0.25rem; --border: 1px; --depth: 0; --noise: 0; } } @layer base { @media (prefers-color-scheme: dark) { :root:not([data-theme]) { color-scheme: dark; --color-base-100: oklch(20.84% 0.008 17.911); --color-base-200: oklch(18.522% 0.007 17.911); --color-base-300: oklch(16.203% 0.007 17.911); --color-base-content: oklch(83.768% 0.001 17.911); --color-primary: oklch(68.628% 0.185 148.958); --color-primary-content: oklch(0% 0 0); --color-secondary: oklch(69.776% 0.135 168.327); --color-secondary-content: oklch(13.955% 0.027 168.327); --color-accent: oklch(70.628% 0.119 185.713); --color-accent-content: oklch(14.125% 0.023 185.713); --color-neutral: oklch(30.698% 0.039 171.364); --color-neutral-content: oklch(86.139% 0.007 171.364); --color-info: oklch(72.06% 0.191 231.6); --color-info-content: oklch(0% 0 0); --color-success: oklch(64.8% 0.15 160); --color-success-content: oklch(0% 0 0); --color-warning: oklch(84.71% 0.199 83.87); --color-warning-content: oklch(0% 0 0); --color-error: oklch(71.76% 0.221 22.18); --color-error-content: oklch(0% 0 0); --radius-selector: 1rem; --radius-field: 2rem; --radius-box: 1rem; --size-selector: 0.25rem; --size-field: 0.25rem; --border: 1px; --depth: 0; --noise: 0; } } } @layer base { :root:has(input.theme-controller[value=emerald]:checked),[data-theme=emerald] { color-scheme: light; --color-base-100: oklch(100% 0 0); --color-base-200: oklch(93% 0 0); --color-base-300: oklch(86% 0 0); --color-base-content: oklch(35.519% 0.032 262.988); --color-primary: oklch(76.662% 0.135 153.45); --color-primary-content: oklch(33.387% 0.04 162.24); --color-secondary: oklch(61.302% 0.202 261.294); --color-secondary-content: oklch(100% 0 0); --color-accent: oklch(72.772% 0.149 33.2); --color-accent-content: oklch(0% 0 0); --color-neutral: oklch(35.519% 0.032 262.988); --color-neutral-content: oklch(98.462% 0.001 247.838); --color-info: oklch(72.06% 0.191 231.6); --color-info-content: oklch(0% 0 0); --color-success: oklch(64.8% 0.15 160); --color-success-content: oklch(0% 0 0); --color-warning: oklch(84.71% 0.199 83.87); --color-warning-content: oklch(0% 0 0); --color-error: oklch(71.76% 0.221 22.18); --color-error-content: oklch(0% 0 0); --radius-selector: 1rem; --radius-field: 0.5rem; --radius-box: 1rem; --size-selector: 0.25rem; --size-field: 0.25rem; --border: 1px; --depth: 0; --noise: 0; } } @layer base { :root:has(input.theme-controller[value=forest]:checked),[data-theme=forest] { color-scheme: dark; --color-base-100: oklch(20.84% 0.008 17.911); --color-base-200: oklch(18.522% 0.007 17.911); --color-base-300: oklch(16.203% 0.007 17.911); --color-base-content: oklch(83.768% 0.001 17.911); --color-primary: oklch(68.628% 0.185 148.958); --color-primary-content: oklch(0% 0 0); --color-secondary: oklch(69.776% 0.135 168.327); --color-secondary-content: oklch(13.955% 0.027 168.327); --color-accent: oklch(70.628% 0.119 185.713); --color-accent-content: oklch(14.125% 0.023 185.713); --color-neutral: oklch(30.698% 0.039 171.364); --color-neutral-content: oklch(86.139% 0.007 171.364); --color-info: oklch(72.06% 0.191 231.6); --color-info-content: oklch(0% 0 0); --color-success: oklch(64.8% 0.15 160); --color-success-content: oklch(0% 0 0); --color-warning: oklch(84.71% 0.199 83.87); --color-warning-content: oklch(0% 0 0); --color-error: oklch(71.76% 0.221 22.18); --color-error-content: oklch(0% 0 0); --radius-selector: 1rem; --radius-field: 2rem; --radius-box: 1rem; --size-selector: 0.25rem; --size-field: 0.25rem; --border: 1px; --depth: 0; --noise: 0; } } @layer base { :root { --fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E"); } } @layer base { :root { scrollbar-color: currentColor #0000; @supports (color: color-mix(in lab, red, red)) { scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) #0000; } } } @layer base { @property --radialprogress { syntax: ""; inherits: true; initial-value: 0%; } } @layer base { :root:not(span) { overflow: var(--page-overflow); } } @layer base { :root { background: var(--page-scroll-bg, var(--root-bg)); --page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000)) var(--root-bg, #0000); @supports (color: color-mix(in lab, red, red)) { --page-scroll-bg-on: linear-gradient(var(--root-bg, #0000), var(--root-bg, #0000)) color-mix(in srgb, var(--root-bg, #0000), oklch(0% 0 0) calc(var(--page-has-backdrop, 0) * 40%)); } --page-scroll-transition-on: background-color 0.3s ease-out; transition: var(--page-scroll-transition); scrollbar-gutter: var(--page-scroll-gutter, unset); scrollbar-gutter: if(style(--page-has-scroll: 1): var(--page-scroll-gutter, unset) ; else: unset); } @keyframes set-page-has-scroll { 0%, to { --page-has-scroll: 1; } } } @layer base { :root, [data-theme] { background: var(--page-scroll-bg, var(--root-bg)); color: var(--color-base-content); } :where(:root, [data-theme]) { --root-bg: var(--color-base-100); } } @keyframes rating { 0%, 40% { scale: 1.1; filter: brightness(1.05) contrast(1.05); } } @keyframes dropdown { 0% { opacity: 0; } } @keyframes radio { 0% { padding: 5px; } 50% { padding: 3px; } } @keyframes toast { 0% { scale: 0.9; opacity: 0; } 100% { scale: 1; opacity: 1; } } @keyframes rotator { 89.9999%, 100% { --first-item-position: 0 0%; } 90%, 99.9999% { --first-item-position: 0 calc(var(--items) * 100%); } 100% { translate: 0 -100%; } } @keyframes skeleton { 0% { background-position: 150%; } 100% { background-position: -50%; } } @keyframes menu { 0% { opacity: 0; } } @keyframes progress { 50% { background-position-x: -115%; } } @property --tw-space-y-reverse { syntax: "*"; inherits: false; initial-value: 0; } @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; } @property --tw-font-weight { syntax: "*"; inherits: false; } @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; } @property --tw-shadow-color { syntax: "*"; inherits: false; } @property --tw-shadow-alpha { syntax: ""; inherits: false; initial-value: 100%; } @property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; } @property --tw-inset-shadow-color { syntax: "*"; inherits: false; } @property --tw-inset-shadow-alpha { syntax: ""; inherits: false; initial-value: 100%; } @property --tw-ring-color { syntax: "*"; inherits: false; } @property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; } @property --tw-inset-ring-color { syntax: "*"; inherits: false; } @property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; } @property --tw-ring-inset { syntax: "*"; inherits: false; } @property --tw-ring-offset-width { syntax: ""; inherits: false; initial-value: 0px; } @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; } @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; } @layer properties { @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { *, ::before, ::after, ::backdrop { --tw-space-y-reverse: 0; --tw-border-style: solid; --tw-font-weight: initial; --tw-shadow: 0 0 #0000; --tw-shadow-color: initial; --tw-shadow-alpha: 100%; --tw-inset-shadow: 0 0 #0000; --tw-inset-shadow-color: initial; --tw-inset-shadow-alpha: 100%; --tw-ring-color: initial; --tw-ring-shadow: 0 0 #0000; --tw-inset-ring-color: initial; --tw-inset-ring-shadow: 0 0 #0000; --tw-ring-inset: initial; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; } } } ================================================ FILE: assets/js/grid.js ================================================ "use strict"; function initGrid() { document.querySelectorAll('.dream-grid').forEach(function (grid) { var msnry = new Masonry(grid, { itemSelector: '.dream-column' }); if (grid.classList.contains('dream-grid-about')) { window.aboutMasonry = msnry; } imagesLoaded(grid, function () { grid.style.opacity = 1; msnry.layout(); }); }); } initGrid(); ================================================ FILE: assets/js/main.js ================================================ "use strict"; document.addEventListener('alpine:init', function () { Alpine.store('darkMode', { init: function init() { var _this = this; var isDark = window.localStorage.getItem('hugo-theme-dream-is-dark'); if (isDark) { this.on = isDark; } else { this.mql.addEventListener('change', function (event) { _this.on = event.matches ? 'y' : 'n'; }); this.on = 'auto'; } setTimeout(function () { _this.setThemeForUtterances(); }, 6000); }, mql: window.matchMedia('(prefers-color-scheme: dark)'), on: 'n', isDark: function isDark() { return this.on === 'auto' ? this.mql.matches : this.on === 'y'; }, theme: function theme() { return this.isDark() ? window.darkTheme : window.lightTheme; }, iconMap: { n: 'sunny', y: 'moon', auto: 'desktop' }, icon: function icon() { return this.iconMap[this.on]; }, toggle: function toggle(status) { this.on = status; if (status === 'auto') { window.localStorage.removeItem('hugo-theme-dream-is-dark'); } else { window.localStorage.setItem('hugo-theme-dream-is-dark', status); } this.setThemeForUtterances(); this.changeSyntaxHighlightingTheme(); }, changeSyntaxHighlightingTheme: function changeSyntaxHighlightingTheme() { if (document.querySelector('#dream-single-post-main')) { var customSyntaxHighlightingUrl = this.isDark() ? window.customSyntaxHighlighting.dark : window.customSyntaxHighlighting.light; document.querySelector('link[data-custom-syntax-highlighting]').setAttribute('href', customSyntaxHighlightingUrl); } }, setThemeForUtterances: function setThemeForUtterances() { var utterances = document.querySelector('iframe.utterances-frame'); if (utterances) { utterances.contentWindow.postMessage({ type: 'set-theme', theme: this.isDark() ? 'github-dark' : 'github-light' }, 'https://utteranc.es'); } } }); }); ================================================ FILE: assets/js/toc.js ================================================ "use strict"; function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function tocHighlighter() { return { headings: [], links: [], debouncedScroll: null, init: function init() { var toc = document.querySelector('#TableOfContents'); if (!toc || window.getComputedStyle(toc.parentElement).display === 'none') { return; } this.links = _toConsumableArray(toc.querySelectorAll('a')); this.headings = this.links.map(function (link) { var _link$getAttribute; return document.getElementById((_link$getAttribute = link.getAttribute('href')) === null || _link$getAttribute === void 0 ? void 0 : _link$getAttribute.replace('#', '')); }).filter(Boolean); this.debouncedScroll = this.debounce(this.onScroll.bind(this), 300); this.debouncedScroll(); }, onScroll: function onScroll() { var closest = null; var minOffset = Infinity; this.headings.forEach(function (el, index) { var rect = el.getBoundingClientRect(); var offset = Math.abs(rect.top); if (rect.top < window.innerHeight && offset < minOffset) { minOffset = offset; closest = index; } }); if (closest !== null && this.links[closest]) { this.setActive(this.links[closest]); } }, setActive: function setActive(activeLink) { this.links.forEach(function (link) { return link.classList.remove('menu-active'); }); activeLink.classList.add('menu-active'); }, debounce: function debounce(fn, delay) { var timeout; return function () { var _this = this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } clearTimeout(timeout); timeout = setTimeout(function () { return fn.apply(_this, args); }, delay); }; } }; } ================================================ FILE: config.toml ================================================ [module] [module.hugoVersion] min = "0.97.0" extended = true ================================================ FILE: decapCMS/config.yml ================================================ backend: name: git-gateway branch: master publish_mode: editorial_workflow media_folder: static/img public_folder: /img collections: - name: 'post' label: 'Post' folder: 'content/posts' create: true slug: '{{year}}-{{month}}-{{day}}-{{slug}}' fields: - label: 'Draft' name: 'draft' widget: 'boolean' default: false - label: 'Title' name: 'title' widget: 'string' - label: 'Publish Date' name: 'date' widget: 'datetime' - label: 'Last Modified Date' name: 'lastmod' widget: 'datetime' required: false - label: 'Author' name: 'author' widget: 'string' required: false - label: 'Author Link' name: 'authorlink' widget: 'string' required: false - label: 'Cover' name: 'cover' widget: 'image' required: false - label: 'Categories' name: 'categories' widget: 'list' summary: '{{fields.category}}' field: label: 'Category' name: 'category' widget: 'string' - label: 'Tags' name: 'tags' widget: 'list' summary: '{{fields.tag}}' field: label: 'Tag' name: 'tag' widget: 'string' - label: 'Disable Last Modified Date' name: 'nolastmod' widget: 'boolean' default: false - label: 'Body' name: 'body' widget: 'markdown' - name: 'about' label: 'About' folder: 'content/about' create: true slug: '{{year}}-{{month}}-{{day}}-{{slug}}' fields: - label: 'Draft' name: 'draft' widget: 'boolean' default: false - label: 'Title' name: 'title' widget: 'string' - label: 'Publish Date' name: 'date' widget: 'datetime' - label: 'Body' name: 'body' widget: 'markdown' ================================================ FILE: decapCMS/index.html ================================================ Content Manager ================================================ FILE: docs/app/AdSense.jsx ================================================ 'use client' import { useEffect } from 'react' import Script from 'next/script' export default function AdSense() { useEffect(() => { ;(window.adsbygoogle = window.adsbygoogle || []).push({}) }, []) return (
> ``` ### showPrevNextPost Show previous and next post links in the single post page. ### reorderShares Same as [reorderNavItems](#reorderNavItems), reorder the share buttons in the single post page. This parameter is **an array of strings**, the default value is: ```toml reorderShares = ["x", "facebook", "whatsapp"] ``` > [!NOTE] > > This parameter also allows you to remove the default share items. > For example, if you don't want to show the `whatsapp` item, you can set the value as: > > `reorderShares = ["x", "facebook"]` ## Advanced > [!WARNING] > > Generally, the following advanced parameters are not necessary to be set. Their main purpose is to further customize > the entire theme. ### customCSS Add your custom CSS files **after** the theme CSS files. For example, create a folder named `css` under `static`, then add `custom.css` into it. View [Custom Theme](custom.md#css) for more details. ### customJS Like `customCSS`, add your custom JS files **after** the theme JS files. View [Custom Theme](custom.md#js) for more details. ## Experimental > [!WARNING] > > The experimental parameters are often not perfect. They have advantages as well as certain disadvantages. ### jsDate Use [Luxon](https://moment.github.io/luxon/index.html) to replace the Hugo built-in [.Format](https://gohugo.io/methods/time/format/) function. This allows you to define the time format more flexibly. You may not want to use this param if you want the final date is generated at compile time. After setting this param, all dates will output as an [RFC3339](https://en.wikipedia.org/wiki/ISO_8601) format and all rest format operations will be executed after the page is loaded. For how to define the format, see below. ### jsDateFormat Refer to this page (https://moment.github.io/luxon/docs/manual/formatting.html) to define your date format. For example, `yyyy-MM-dd` represents a date format like `2021-04-17`. ================================================ FILE: docs/content/post-page.mdx ================================================ # Post Page In [Quick Start](/), we created an example article as below: {/* prettier-ignore */} ```md --- title: {{ replace .TranslationBaseName "-" " " | title }} date: {{ .Date }} lastmod: {{ .Date }} author: Author Name # avatar: /img/author.jpg # authorlink: https://author.site cover: /img/cover.jpg # covercaption: a description of the cover image # images: # - /img/cover.jpg categories: - category1 tags: - tag1 - tag2 # nolastmod: true # math: true draft: true --- Cut out summary from your post content here. The remaining content of your post. ``` There are some parameters in the front matter you can use to customize your post page (and also its summary). View the below section to learn more about the parameters. ## Parameters | Parameter | Description | Required | Auto-generated | | -------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | -------------- | | `title` | Title of the post | Yes | Yes | | `date` | Date of the post | Yes | Yes | | `lastmod` | Last modified date of the post | No | Yes | | `author` | Author of the post, if it's not set, the global `author` will be used. If both are not set, the author will not be displayed. | No | No | | `avatar` | Author's avatar | No | No | | `authorlink` | Custom link for the current author | No | No | | `cover` | Cover image of the post | No | No | | `covercaption` | Caption for the cover image | No | No | | `images` | Used in `og:image` meta tag | No | No | | `categories` | Categories of the post | No | No | | `tags` | Tags of the post | No | No | | `nolastmod` | Disable the last modified date | No | No | ## Features > See https://g1en.site/posts/dream-post-features/ for a live demo. ### Alerts Dream supports [GitHub Alerts Markdown extension](https://github.blog/changelog/2023-12-14-new-markdown-extension-alerts-provide-distinctive-styling-for-significant-content/) compatible alerts. You can use it in your post like below: ```md > [!NOTE] > Useful information that users should know, even when skimming content. > [!TIP] > Helpful advice for doing things better or more easily. > [!IMPORTANT] > Key information users need to know to achieve their goal. > [!WARNING] > Urgent info that needs immediate user attention to avoid problems. > [!CAUTION] > Advises about risks or negative outcomes of certain actions. ``` If you want to change the default title of the alerts, you can add a [markdown attribute](https://gohugo.io/content-management/markdown-attributes/) named `text` like below: {/* prettier-ignore */} ```md > [!NOTE] > The default alert title is changed to "Hello". {text="Hello"} ``` > [!IMPORTANT] > > To enable markdown attributes, you still need to set below configuration in your `hugo.toml`: > > ```toml > [markup] > [markup.goldmark.parser.attribute] > block = true > ``` ### Mermaid Diagrams Dream supports [Mermaid](https://mermaid.js.org/) diagrams. You can use it like below: ````mdx filename="Markdown" ```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ``` ```` Rendered as: ```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ``` ### Mathematics Dream supports mathematical equations and expressions by using [MathJax](https://www.mathjax.org/). The implementation of this feature referred to https://gohugo.io/content-management/mathematics/. To use this feature, you need to enable and configure the Goldmark passthrough extension in your site configuration: ```toml [markup] [markup.goldmark] [markup.goldmark.extensions] [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)'], ['$', '$']] ``` And then you can use it like below: ````mdx filename="Markdown" ```math This is an inline \(a^*=x-b^*\) equation. This is also an inline $a^*=x-b^*$ equation. ``` ```math These are block equations: \[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \] These are also block equations: $$a^*=x-b^*$$ $$ a^*=x-b^* $$ ``` ```` If you don't want to use the `math` codeblock everywhere, you can also set **`math: true`** in the front matter of your post like below: ```md --- math: true # YAML syntax --- ``` This allows you to use mathematics with other markdown syntaxes in the whole post, like: ```md - This is an inline \(a^_=x-b^_\) equation. - This is also an inline $a^*=x-b^*$ equation. ``` ================================================ FILE: docs/content/search.md ================================================ # Search Dream has a built-in search feature that allows you to search for content on your site. You can enable it by adding a `_index.md` file to the `content/search` directory. This file can be empty, but it must exist. Dream will automatically generate the search page (/search) for you. ================================================ FILE: docs/content/social-comments.mdx ================================================ # Social Comments Currently, Dream supports these comment systems: - [Disqus](https://disqus.com/) - [utterances](https://utteranc.es/) - [Valine](https://valine.js.org/en/) - [Waline](https://waline.js.org/en/) - [Twikoo](https://twikoo.js.org/en/) ## Disqus In `hugo.toml`, set: ```toml [services] [services.disqus] shortname = "..." ``` > [!WARNING] > > You may have used `disqusShortname = "..."` before. This is deprecated in Hugo `0.120.0`. > > Please upgrade to the new configuration. See https://gohugo.io/methods/site/disqusshortname/ for more details. Disqus comments will be displayed on the [Post Page](post-page.mdx) and [About Page](about-page.md) ### Compatible with oklch colors Disqus will detect the color scheme of the website and change the color of the comments accordingly. However, Disqus does not support [oklch colors](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch) which is used in Dream. To make Disqus work with Dream, we need to make an extra hack. First, create a custom css file in `static/css/custom.css`: ```css [data-theme="emerald"] #disqus_thread { color-scheme: none; background-color: #fff; } [data-theme="emerald"] #disqus_thread a { color: #333c4d; } [data-theme="forest"] #disqus_thread { color-scheme: none; background-color: #171213; } [data-theme="forest"] #disqus_thread a { color: #cbc9ca; } ``` The `background-color` and `color` can be obtained by inspecting the website in the browser. Follow below steps: 1. Open the devtools in the browser (press `F12`). 2. Click the `html` tag in the `Elements` tab. 3. Then search for `background` in the `Styles` tab. 4. Open the color picker and transform the oklch format to hex format. 5. Copy them to the custom css file. After finishing above steps, remember to include this custom css file in `customCSS` in `hugo.toml`: ```toml [params] [params.advanced] customCSS = ["css/custom.css"] ``` You may want to change the default themes `emerald` and `forest` to other themes. Refer to [light-and-dark-mode](./light-and-dark-mode.md) and update `background-color` and `color` accordingly. ## utterances See: [utterancesRepo](params-configurations.mdx#utterancesrepo) The utterances only takes effect on the [Post Page](post-page.mdx). ## Valine See: [valine](params-configurations.mdx#valine) Valine only takes effect on the [Post Page](post-page.mdx). ## Waline See: [waline](params-configurations.mdx#waline) Waline only takes effect on the [Post Page](post-page.mdx). ## Twikoo See: [twikoo](params-configurations.mdx#twikoo) Twikoo only takes effect on the [Post Page](post-page.mdx). ================================================ FILE: docs/content/social-links.mdx ================================================ # Social Links You can render social links on the About page (`layouts/partials/back.html`) using a custom data file. This file must be named `data/socials.toml` (put it in the `data` folder) and must contain a array named `socials`. For example: ```toml # Go to https://ionic.io/ionicons to find available icons. socials = [ { href = "https://github.com/g1eny0ung", target="_blank", icon = "logo-github", title = "GitHub" }, { href = "https://x.com/g1eny0ung", target="_blank", icon = "logo-x", title = "X" }, # { href = "https://facebook.com/g1eny0ung", target="_blank", icon = "logo-facebook", title = "Facebook" }, # { href = "https://instagram.com/g1eny0ung", target="_blank", icon = "logo-instagram", title = "Instagram" }, { href = "https://www.linkedin.com/in/g1eny0ung", target="_blank", icon = "logo-linkedin", title = "Linkedin" }, { href = "https://stackoverflow.com/users/5676489/g1eny0ung", target="_blank", icon = "logo-stackoverflow", title = "stack overflow" }, # { href = "https://codepen.io/g1eny0ung", target="_blank", icon = "logo-codepen", title = "Codepen" }, ] ``` ## Properties Each table (object) in the array can have the following properties. ### Required - `href`: The URL of the social link. - `icon`: The name of the icon. You can find available icons [here](https://ionic.io/ionicons). ### Optional - `target`: The [target attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target) of the link. - `title`: The title of the social link. ================================================ FILE: docs/content/summary-images.mdx ================================================ # Summary Images Each post can have a cover image associated with it. This image is used in the summary view of the post. You can also display it on the single post page by setting the [`showSummaryCoverInPost`](./params-configurations.mdx#showsummarycoverinpost) parameter to `true`. ```md --- cover: /img/build-a-chrome-extension-with-figwheel-main.png --- ``` > [!TIP] > > For a better visualization, it's recommended to set a cover image for each post (although it's not mandatory). I > personally go to [Unsplash](https://unsplash.com/) or [Pexels](https://www.pexels.com/) to select covers (choose the small size). > > If you don't specify a cover image, Dream will use one of the predefined images as a placeholder in the summary card. > To disable this behavior, set [`noDefaultSummaryCover`](./params-configurations.mdx#nodefaultsummarycover) to `true`. ## Image Optimization > [!IMPORTANT] > > Hugo >= 0.97.0 is required. Dream will transform summary images to webp format automatically if you are using [page bundles](https://gohugo.io/content-management/page-bundles/) to organize your posts. This will make the first load of your site faster. The way it works is that Dream will look for the presence of the specified cover image in the [page resources](https://gohugo.io/content-management/page-resources/). If it exists, the image is processed. For example, you can organize your posts like this: ```txt content ├── posts │ ├── post-1 │ │ ├── index.md │ │ └── cover.jpg ``` Then in the front matter of `index.md`: ```md --- cover: cover.jpg images: - cover.jpg --- ``` ================================================ FILE: docs/content/syntax-highlighting.mdx ================================================ # Syntax Highlighting If you don't like the default syntax highlighting provided by Hugo, Setting `customSyntaxHighlighting = true` will enable the custom syntax highlighting provided by Chroma. > [!IMPORTANT] > > You still need to set below configuration in your `hugo.toml`: > > ```toml > [markup] > [markup.highlight] > noClasses = false > ``` > > This makes sure that the generated HTML uses classes for syntax highlighting, not inline styles. Then you need to specify what themes you want to use and generate them. They need to follow below established rules: - You must generate separate themes for light and dark modes - They must be named `syntax-light.css` and `syntax-dark.css` - They must be in the `assets/css` directory For example, you can generate them using the following command: ```bash # In your project directory. hugo gen chromastyles --style=github > assets/css/syntax-light.css hugo gen chromastyles --style=github-dark > assets/css/syntax-dark.css ``` Please refer to the [official documentation](https://gohugo.io/content-management/syntax-highlighting/) for more information. ================================================ FILE: docs/content/website-analytics.mdx ================================================ # Website Analytics Now, Dream only support [Google Analytics](https://www.google.com/analytics/). In `hugo.toml`, set: ```toml [services] [services.googleAnalytics] ID = '...' ``` > [!WARNING] > > You may have used `googleAnalytics = "..."` before. This is deprecated in Hugo `0.120.0`. > > Please upgrade to the new configuration. See https://gohugo.io/methods/site/googleanalytics/ for more details. ================================================ FILE: docs/content/zen-mode.mdx ================================================ # Zen Mode What is Zen mode? Zen mode is a simple layout that allows you to concentrate on reading and writing. It is a minimalist design that removes all distractions from the page. This mode is more suitable for people who prefer a simple and clean interface rather than the default masonry layout. Here is a demo of the Zen mode: https://g1en-site-zen-mode-preview.netlify.app/. And below is a screenshot of the Zen mode:
![Zen Mode](/images/zen-mode.png)
## Enable Zen Mode To enable Zen mode, just add `zenMode = true` to the configuration file. ```toml [params] zenMode = true ``` ================================================ FILE: docs/mdx-components.jsx ================================================ import { useMDXComponents as getThemeComponents } from 'nextra-theme-docs' // nextra-theme-blog or your custom theme // Get the default MDX components const themeComponents = getThemeComponents() // Merge components export function useMDXComponents(components) { return { ...themeComponents, ...components, } } ================================================ FILE: docs/next.config.mjs ================================================ import nextra from 'nextra' import path from 'path' const withNextra = nextra({}) export default withNextra({ turbopack: { root: path.resolve('./'), }, output: 'export', images: { unoptimized: true, }, }) ================================================ FILE: docs/package.json ================================================ { "name": "docs", "version": "1.0.0", "description": "", "type": "module", "scripts": { "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "next": "^16.1.6", "nextra": "^4.6.1", "nextra-theme-docs": "^4.6.1", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@theguild/remark-mermaid": "^0.3.0" } } ================================================ FILE: docs/public/.nojekyll ================================================ ================================================ FILE: hugo.example.toml ================================================ baseurl = "https://example.com" defaultContentLanguage = "en" languageCode = "en" title = "Hugo Theme Dream" theme = "dream" # [services] # [services.disqus] # shortname = "" # [services.googleAnalytics] # ID = "" [params] # zenMode = true lightTheme = "emerald" darkTheme = "forest" # backgroundImage = "img/global-background.jpg" # backgroundImageDark = "" author = "Dream" # description = "" # avatar = "img/avatar.png" headerTitle = "Hugo Theme Dream" # motto = "" # footerBottomText = "" # rss = true # utterancesRepo = "" # valine = true # LEANCLOUD_APP_ID = "" # LEANCLOUD_APP_KEY = "" # waline = true # walineServer = "" # email = "" siteStartYear = 2016 # favicon = "favicon.ico" # Syntax highlighting # customSyntaxHighlighting = true # options # stickyNav = true # reorderNavItems = ["about", "search", "rss", "posts", "categories", "tags"] # collapseNavItems = ["posts", "categories", "tags"] # noDefaultSummaryCover = true # showTableOfContents = true # showSummaryCoverInPost = true # imageZoomableInPost = true # showPrevNextPost = true # reorderShares = ["x", "facebook", "whatsapp"] # [params.navItems] # [params.twikoo] # enabled = true # envID = "" # region = "" # lang = "" # [params.advanced] # customCSS = ["css/custom.css"] # customJS = [] # [params.experimental] # jsDate = true # jsDateFormat = "yyyy年MM月dd日" ================================================ FILE: i18n/ar.toml ================================================ [home] other = "الصفحة الرئيسية" [backToHome] other = "العودة إلى الصفحة الرئيسية" [flip] other = "!اقلب" [archives] other = "أرشيف" [allTags] other = "كل العلامات" [tag] one = "1 علامة" other = "{{ .Count }} علامتان" [allCategories] other = "جميع الفئات" [category] one = "1 فئة" other = "{{ .Count }} فئات" [article] one = "1 مقال" other = "{{ .Count }} مقالات" [socialLinks] other = "روابط وسائل التواصل الاجتماعي" [minuteRead] one = " قراءة دقيقة" other = " ست دقائق للقر" [updatedAt] other = "تم التحديث في" [prevPage] other = "الصفحة السابقة" [nextPage] other = "الصفحة التالية" [search] other = "يبحث" ================================================ FILE: i18n/bn.toml ================================================ [home] other = "হোম" [backToHome] other = "হোমে ফেরত" [flip] other = "ফ্লিপ!" [archives] other = "আর্কাইভ" [allTags] other = "সকল ট্যাগ" [tag] one = "একটি ট্যাগ" other = "{{ .Count }}টি ট্যাগ" [allCategories] other = "সকল ক্যাটাগরি" [category] one = "একটি ক্যাটাগরি" other = "{{ .Count }}টি ক্যাটাগরি" [article] one = "একটি আর্টিকেল" other = "{{ .Count }}টি আর্টিকেল" [socialLinks] other = "সোশাল লিঙ্কস" [minuteRead] one = " মিনিট" other = " মিনিট" [updatedAt] other = "সর্বশেষ আপডেট" [prevPage] other = "আগের পেইজ" [nextPage] other = "পরের পেইজ" [search] other = "সার্চ" ================================================ FILE: i18n/ca.toml ================================================ [home] other = "Pàgina inicial" [backToHome] other = "Tornar a la pàgina d'inici" [flip] other = "Capgirar!" [archives] other = "Arxiu" [allTags] other = "Totes les etiquetes" [tag] one = "1 etiqueta" other = "{{ .Count }} etiquetes" [allCategories] other = "Totes les categories" [category] one = "1 categoria" other = "{{ .Count }} categories" [article] one = "1 article" other = "{{ .Count }} articles" [socialLinks] other = "Enllaços de xarxes socials" [minuteRead] one = " minut de lectura" other = " minuts de lectura" [updatedAt] other = "Actualització a" [prevPage] other = "Pàgina anterior" [nextPage] other = "Pàgina següent" [search] other = "Buscar" ================================================ FILE: i18n/de.toml ================================================ [home] other = "Start" [backToHome] other = "Zurück zum Start" [flip] other = "Flip it!" [archives] other = "Archiv" [allTags] other = "Alle Tags" [tag] one = "1 tag" other = "{{ .Count }} Tags" [allCategories] other = "Alle Kategorien" [category] one = "1 Kategorie" other = "{{ .Count }} Kategorien" [article] one = "1 Artikel" other = "{{ .Count }} Artikel" [socialLinks] other = "Social Links" [minuteRead] other = " Minuten Lesezeit" [updatedAt] other = "Aktualisiert " [prevPage] other = "Vorherige Seite" [nextPage] other = "Nächste Seite" ================================================ FILE: i18n/en.toml ================================================ # Alerts note = "Note" tip = "Tip" important = "Important" warning = "Warning" caution = "Caution" home = "Home" backToHome = "Back to home" flip = "Flip it!" about = "About" search = "Search" prevPage = "Previous page" nextPage = "Next page" archives = "Archives" allCategories = "All Categories" allTags = "All Tags" minuteRead = " minute read" updatedAt = "Updated at" socialLinks = "Social Links" [article] one = "1 article" other = "{{ .Count }} articles" [category] one = "1 category" other = "{{ .Count }} categories" [tag] one = "1 tag" other = "{{ .Count }} tags" ================================================ FILE: i18n/es.toml ================================================ # Alertas note = "Nota" tip = "Consejo" important = "Importante" warning = "Advertencia" caution = "Cuidado" home = "Inicio" backToHome = "Volver a inicio" flip = "Voltear!" about = "Acerca" search = "Buscar" prevPage = "Página anterior" nextPage = "Página siguiente" archives = "Archivos" allCategories = "Todas las categorías" allTags = "Todas las etiquetas" updatedAt = "Actualizado en" socialLinks = "Enlaces sociales" [minuteRead] one = " minuto de lectura" other = " minutos de lectura" [article] one = "1 artículo" other = "{{ .Count }} artículos" [category] one = "1 categoría" other = "{{ .Count }} categorías" [tag] one = "1 etiqueta" other = "{{ .Count }} etiquetas" ================================================ FILE: i18n/fr.toml ================================================ note = "Note" tip = "Astuce" important = "Important" warning = "Attention" caution = "Prudence" home = "Accueil" backToHome = "Revenir à l'accueil" flip = "Retourne ça !" about = "À propos" search = "Rechercher" prevPage = "Page précédente" nextPage = "Page suivante" archives = "Archives" allCategories = "Toutes les catégories" allTags = "Tous les étiquettes" updatedAt = "Mise à jour le" socialLinks = "Liens sociaux" [minuteRead] one = " minute de lecture" other = " minutes de lecture" [article] one = "1 article" other = "{{ .Count }} articles" [category] one = "1 catégorie" other = "{{ .Count }} catégories" [tag] one = "1 étiquette" other = "{{ .Count }} étiquettes" ================================================ FILE: i18n/he.toml ================================================ [home] other = "דף הבית" [backToHome] other = "חזור לדף הבית" [flip] other = "!להפוך" [archives] other = "ארכיון" [allTags] other = "כל התגים" [tag] one = "1 תג" other = "תגים {{ .Count }}" [allCategories] other = "כל הקטגוריות" [category] one = "1 קטגוריה" other = "קטגוריות {{ .Count }}" [article] one = "מאמר 1" other = "מאמרים {{ .Count }}" [socialLinks] other = "קישורים למדיה חברתית" [minuteRead] one = " דקה לקרוא" other = " דקות לקריאה" [updatedAt] other = "עודכן בשעה" [prevPage] other = "עמוד קודם" [nextPage] other = "עמוד הבא" [search] other = "לחפש" ================================================ FILE: i18n/it.toml ================================================ [home] other = "Home" [backToHome] other = "Torna alla home" [flip] other = "Flip it!" [about] other = "Chi siamo" [archives] other = "Archivi" [allTags] other = "Tutti i tag" [tag] one = "Un tag" other = "{{ .Count }} tag" [allCategories] other = "Tutte le categorie" [category] one = "Una categoria" other = "{{ .Count }} categorie" [article] one = "Un articolo" other = "{{ .Count }} articoli" [socialLinks] other = "Social" [minuteRead] one = " minuto" other = " minuti" [updatedAt] other = "Aggiornato al" [prevPage] other = "Pagina precedente" [nextPage] other = "Pagina successiva" [search] other = "Cerca" ================================================ FILE: i18n/ja.toml ================================================ [home] other = "Home" [backToHome] other = "Back to home" [flip] other = "Flip it!" [about] other = "About" [archives] other = "アーカイブ" [allTags] other = "タグ一覧" [tag] one = "1タグ" other = "{{ .Count }}タグ" [allCategories] other = "カテゴリー一覧" [category] one = "1カテゴリー" other = "{{ .Count }}カテゴリー" [article] one = "1記事" other = "{{ .Count }}記事" [socialLinks] other = "SNS" [minuteRead] other = "分で読めます" [updatedAt] other = "更新日時" [prevPage] other = "前へ" [nextPage] other = "次へ" [search] other = "検索" ================================================ FILE: i18n/lv.toml ================================================ [home] other = "Mājas lapa" [backToHome] other = "Atpakaļ uz sākumlapu" [flip] other = "Uzsist!" [archives] other = "Arhīvs" [allTags] other = "Visi tagi" [tag] one = "1 tagu" other = "{{ .Count }} tagi" [allCategories] other = "Visas kategorijas" [category] one = "1 kategorija" other = "{{ .Count }} kategorijas" [article] one = "1 raksts" other = "{{ .Count }} raksti" [socialLinks] other = "Saites sociālajos tīklos" [minuteRead] one = " minūte lasīta" other = " minūtes lasīts" [updatedAt] other = "Atjaunināts plkst" [prevPage] other = "Iepriekšējā lapa" [nextPage] other = "Nākamā lapaspuse" [search] other = "Meklēt" ================================================ FILE: i18n/pt.toml ================================================ note = "Nota" tip = "Dica" important = "Importante" warning = "Aviso" caution = "Cuidado" home = "Página inicial" backToHome = "Voltar para a página inicial" flip = "Girar!" about = "Sobre" search = "Pesquisar" prevPage = "Página anterior" nextPage = "Próxima página" archives = "Arquivos" allCategories = "Todas as categorias" allTags = "Todas as tags" updatedAt = "Atualizado" socialLinks = "Links de redes sociais" [minuteRead] one = " minuto de leitura" other = " minutos de leitura" [article] one = "1 artigo" other = "{{ .Count }} artigos" [category] one = "1 categoria" other = "{{ .Count }} categorias" [tag] one = "1 tag" other = "{{ .Count }} tags" ================================================ FILE: i18n/ro.toml ================================================ [home] other = "Pagina principala" [backToHome] other = "Înapoi la pagina de start" [flip] other = "Întoarceți!" [archives] other = "Arhive" [allTags] other = "Toate etichetele" [tag] one = "1 etichetă" other = "{{ .Count }} etichete" [allCategories] other = "Toate categoriile" [category] one = "1 categorie" other = "{{ .Count }} categorii" [article] one = "1 articol" other = "{{ .Count }} articole" [socialLinks] other = "Link-uri de social media" [minuteRead] one = " minut de citit" other = " minute de citire" [updatedAt] other = "Actualizat la" [prevPage] other = "Pagina precedentă" [nextPage] other = "Pagina următoare" [search] other = "Căutare" ================================================ FILE: i18n/ru.toml ================================================ [home] other = "Главная" [backToHome] other = "На главную" [flip] other = "Повернуть!" [archives] other = "Архивы" [allTags] other = "Все теги" [tag] one = "1 тег" few = "{{ .Count }} тега" many = "{{ .Count }} тегов" other = "{{ .Count }} тегов" [allCategories] other = "Все категории" [category] one = "1 категория" few = "{{ .Count }} категории" many = "{{ .Count }} категорий" other = "{{ .Count }} категорий" [article] one = "1 статья" few = "{{ .Count }} статьи" many = "{{ .Count }} статей" other = "{{ .Count }} статей" [socialLinks] other = "Социальные сети" [minuteRead] one = " минута чтения" few = " минуты чтения" many = " минут чтения" other = " минут чтения" [updatedAt] other = "Обновлено" [prevPage] other = "Предыдущая" [nextPage] other = "Следующая" [search] other = "Поиск" ================================================ FILE: i18n/sl.toml ================================================ [home] other = "Domača stran" [backToHome] other = "Vrnite se na domačo stran" [flip] other = "Obrniti!" [archives] other = "Arhiv" [allTags] other = "Vse oznake" [tag] one = "1 oznaka" other = "{{ .Count }} oznaki" [allCategories] other = "Vse kategorije" [category] one = "1 kategorija" other = "{{ .Count }} kategoriji" [article] one = "1 članek" other = "{{ .Count }} članka" [socialLinks] other = "Povezave do družabnih medijev" [minuteRead] one = " minuta za branje" other = " minuti za branje" [updatedAt] other = "Posodobljeno ob" [prevPage] other = "Prejšnja stran" [nextPage] other = "Naslednja stran" [search] other = "Iskanje" ================================================ FILE: i18n/tr.toml ================================================ [home] other = "Ana Sayfa" [backToHome] other = "Ana sayfaya geri dön" [flip] other = "Çevir!" [archives] other = "Arşivler" [allTags] other = "Tüm etiketler" [tag] one = "1 etiket" other = "{{ .Count }} etiket" [allCategories] other = "Tüm kategoriler" [category] one = "1 kategori" other = "{{ .Count }} kategori" [article] one = "1 makale" other = "{{ .Count }} makale" [socialLinks] other = "Sosyal Bağlantılar" [minuteRead] one = " dakika okuma süresi" other = " dakika okuma süresi" [updatedAt] other = "Güncellenme tarihi" [prevPage] other = "Önceki sayfa" [nextPage] other = "Sonraki sayfa" [search] other = "Arama" ================================================ FILE: i18n/vi.toml ================================================ # Alerts note = "Ghi chú" tip = "Mẹo vặt" important = "Quan trọng" warning = "Cảnh báo" caution = "Thận trọng" home = "Trang chủ" backToHome = "Quay lại trang chủ" flip = "Lật nó!" about = "Giới thiệu" search = "Tìm kiếm" prevPage = "Trang trước" nextPage = "Trang tiếp theo" archives = "Lưu trữ" allCategories = "Tất cả danh mục" allTags = "Tất cả thẻ" minuteRead = " phút đọc" updatedAt = "Cập nhật lúc" socialLinks = "Liên kết xã hội" [article] one = "1 bài viết" other = "{{ .Count }} bài viết" [category] one = "1 danh mục" other = "{{ .Count }} danh mục" [tag] one = "1 thẻ" other = "{{ .Count }} thẻ" ================================================ FILE: i18n/zh.toml ================================================ note = "注意" tip = "提示" important = "重要" warning = "警告" caution = "小心" home = "首页" backToHome = "返回首页" flip = "翻转一下!" about = "关于" search = "搜索" prevPage = "上一页" nextPage = "下一页" archives = "归档" allCategories = "所有分类" allTags = "所有标签" minuteRead = "分钟阅读" updatedAt = "更新于" socialLinks = "社交链接" [article] one = "1篇文章" other = "{{ .Count }}篇文章" [category] one = "1分类" other = "{{ .Count }}分类" [tag] one = "1标签" other = "{{ .Count }}标签" ================================================ FILE: layouts/404.html ================================================ {{ define "title" }}404 Not Found{{ end }} {{ define "main" }}

Oops...You are lost in dream.

Don't worry though, click the button below to wake up.

{{ end }} ================================================ FILE: layouts/_default/_markup/render-blockquote.html ================================================ {{ $icons := dict "note" "information-circle-outline" "tip" "bulb-outline" "important" "sparkles-outline" "warning" "warning-outline" "caution" "alert-circle-outline" }} {{ if eq .Type "alert" }}

{{- or .Attributes.text (T .AlertType) (title .AlertType) -}}

{{ .Text | safeHTML }}
{{ else }}
{{ .Text | safeHTML }}
{{ end }} ================================================ FILE: layouts/_default/_markup/render-codeblock-math.html ================================================

{{- .Inner | safeHTML -}}

{{ .Page.Store.Set "hasMathjax" true }} ================================================ FILE: layouts/_default/_markup/render-codeblock-mermaid.html ================================================
  {{ .Inner | htmlEscape | safeHTML }}
{{ .Page.Store.Set "hasMermaid" true }} ================================================ FILE: layouts/_default/_markup/render-image.html ================================================ {{- if .IsBlock -}}
{{ . }} {{- with .Title }}
{{ . }}
{{ end -}}
{{- else -}} {{ . }} {{- end -}} ================================================ FILE: layouts/_default/_markup/render-link.html ================================================ {{- $u := urls.Parse .Destination -}} {{- with .Text }}{{ . }}{{ end -}} ================================================ FILE: layouts/_default/baseof.html ================================================ {{ block "title" . -}} {{ T "home" }} {{- end }} | {{ site.Title }} {{ partial "head.html" . }} {{ block "css" . }} {{ end }} {{ range site.Params.Advanced.customCSS }} {{ end }} {{ with or site.Params.backgroundImage site.Params.backgroundImageDark }}
{{ end }} {{ partial "nav.html" . }}
{{ block "main" . }} {{ end }} {{ partial "footer.html" . }}
{{ if .IsHome }}
{{ else }}
{{ end }}
{{ if site.Params.zenMode }} {{ partial "zen-back.html" . }} {{ else }} {{ partial "back.html" . }} {{ end }} {{ partial "footer.html" . }}
{{ partial "scripts.html" . }} {{ block "js" . }} {{ end }} {{ if .Store.Get "hasMermaid" }} {{ end }} {{ if .Store.Get "hasMathjax" }} {{ partialCached "mathjax.html" . }} {{ end }} {{ range site.Params.Advanced.customJS }} {{ end }} {{ if site.Config.Services.GoogleAnalytics.ID }} {{ template "_internal/google_analytics.html" . }} {{ end }} ================================================ FILE: layouts/_default/single.html ================================================ {{ define "title" }}{{ .Title }}{{ end }} {{ define "css" }} {{ if site.Params.customSyntaxHighlighting }} {{ else }} {{ end }} {{ partialCached "commentSystemHeads.html" . }} {{ end }} {{ define "main" }}
{{ template "_internal/schema.html" . }}

{{ .Title }}

{{ if site.Params.Experimental.jsDate }} {{ .Date.Format "2006-01-02T15:04:05Z07:00" }} {{ else }} {{ .Date | time.Format "Monday, Jan 2, 2006" }} {{ end }} | {{ .ReadingTime }}{{ T "minuteRead" .ReadingTime }} {{ if ne .Params.nolastmod true }} | {{ T "updatedAt" }} {{ if site.Params.Experimental.jsDate }} {{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }} {{ else }} {{ .Lastmod | time.Format "Monday, Jan 2, 2006" }} {{ end }} {{ end }}

{{ $hasAuthor := or .Params.author site.Params.author }}
{{ if $hasAuthor }} {{ partial "author.html" (dict "Params" .Params "template" "single") }} {{ end }} {{ partial "share.html" . }}
{{ if and .Params.Cover site.Params.showSummaryCoverInPost }}
{{ .Title }} {{ with .Params.covercaption }}
{{ . }}
{{ end }}
{{ end }} {{ .Content | emojify }} {{ if fileExists "layouts/partials/adsense-post-bottom.html" }}
{{ partialCached "adsense-post-bottom.html" . }}
{{ end }}
{{ if site.Params.showPrevNextPost }}
{{ with .NextInSection }}
{{ T "prevPage" }} {{ .LinkTitle }}
{{ else }}
{{ end }} {{ with .PrevInSection }}
{{ T "nextPage" }} {{ .LinkTitle }}
{{ else }}
{{ end }}
{{ end }} {{ if or site.Config.Services.Disqus.Shortname site.Params.utterancesRepo site.Params.valine site.Params.waline site.Params.twikoo.enabled }}
{{ partialCached "commentSystems.html" . .RelPermalink }}
{{ end }}
{{ end }} {{ define "js" }} {{ if site.Params.Experimental.jsDate }} {{ partial "luxon.html" . }} {{ end }} {{ if site.Params.customSyntaxHighlighting }} {{- $syntaxLightCSS := resources.Get "css/syntax-light.css" | minify -}} {{- $syntaxDarkCSS := resources.Get "css/syntax-dark.css" | minify -}} {{ end }} {{ $tocJs := resources.Get "js/toc.js" }} {{ if hugo.IsProduction }} {{ $tocJs = $tocJs | minify }} {{ end }} {{ if site.Params.imageZoomableInPost }} {{ if fileExists "layouts/partials/medium-zoom.html" }} {{ partialCached "medium-zoom.html" . }} {{ else }} {{ end }} {{ end }} {{ if .Params.math }} {{ .Page.Store.Set "hasMathjax" true }} {{ end }} {{ end }} ================================================ FILE: layouts/_default/summary.html ================================================ {{ if .Params.cover }}
{{ with .Resources.Get .Params.cover }} {{ if eq .MediaType.SubType "svg" }} {{ .Title }} {{ else }} {{ $webp := .Resize (printf "%dx%d webp" .Width .Height) }} {{ .Title }} {{ end }} {{ else }} {{ .Title }} {{ end }}
{{ else if not site.Params.noDefaultSummaryCover }}
{{ with resources.Get (printf "images/default%d.jpg" (index (seq 4 | shuffle) 0)) }} {{ $webp := .Resize (printf "%dx%d webp" .Width .Height) }} {{ .Title }} {{ end }}
{{ end }}

{{ .Title }}

{{ if site.Params.Experimental.jsDate }} {{ .Date.Format "2006-01-02T15:04:05Z07:00" }} {{ else }} {{ .Date | time.Format "Monday, Jan 2, 2006" }} {{ end }}

{{ or .Description (.Summary | emojify | safeHTML) }} {{ $hasAuthor := or .Params.author site.Params.author }}
{{ if $hasAuthor }} {{ partial "author.html" (dict "Params" .Params "template" "summary") }} {{ end }}
{{ .ReadingTime }}{{ T "minuteRead" .ReadingTime }}
================================================ FILE: layouts/_default/term.html ================================================ {{ define "title" }} {{- .Title -}} {{ end }} {{ define "main"}} {{ if site.Params.zenMode }}
{{ else }}
{{ end }}

{{- .Title -}}

{{- T "article" (len .Pages) -}}

{{ $title := .Title }} {{ range (index site.Taxonomies .Data.Plural).Alphabetical }} {{ if eq .Page.Title $title }} {{ .Page.Title }} {{ else }} {{ .Page.Title }} {{ end }} {{ end }}
{{ if site.Params.zenMode }}
{{ else }}
{{ end }}
{{ $paginator := .Paginate .Pages }} {{ if site.Params.zenMode }}
{{ range $paginator.Pages }} {{ .Render "zen-summary" }} {{ end }}
{{ else }}
{{ range $paginator.Pages }}
{{ .Render "summary" }}
{{ end }}
{{ end }} {{ if gt $paginator.TotalPages 1 }}
{{ partial "paginator.html" (dict "paginator" $paginator) }}
{{ end }}
{{ end }} {{ define "js" }} {{ if site.Params.Experimental.jsDate }} {{ partial "luxon.html" . }} {{ end }} {{ end }} ================================================ FILE: layouts/_default/terms.html ================================================ {{ define "title" }} {{ $title := (strings.FirstUpper .Data.Plural) }} {{ $translation := T (print "all" $title) }} {{ default $title $translation -}} {{ end }} {{ define "main"}} {{ if site.Params.zenMode }}
{{ else }}
{{ end }}

{{- $title := T (print "all" (strings.FirstUpper .Data.Plural)) }} {{- default (strings.FirstUpper .Data.Plural) $title -}}

{{- if eq (len .Data.Terms) 1 }} {{- default (print "1 " .Data.Singular) (T .Data.Singular 1) }} {{- else }} {{- default (print (len .Data.Terms) " " .Data.Plural) (T .Data.Singular (len .Data.Terms)) }} {{- end -}}

{{ range .Data.Terms.Alphabetical }} {{ .Page.LinkTitle }} {{ end }}
{{ if site.Params.zenMode }}
{{ else }}
{{ end }}
{{ $paginator := .Paginate (where site.RegularPages (print ".Params." .Data.Plural) "ne" nil) }} {{ if site.Params.zenMode }}
{{ range $paginator.Pages }} {{ .Render "zen-summary" }} {{ end }}
{{ else }}
{{ range $paginator.Pages }}
{{ .Render "summary" }}
{{ end }}
{{ end }} {{ if gt $paginator.TotalPages 1 }}
{{ partial "paginator.html" (dict "paginator" $paginator) }}
{{ end }}
{{ end }} {{ define "js" }} {{ if site.Params.Experimental.jsDate }} {{ partial "luxon.html" . }} {{ end }} {{ end }} ================================================ FILE: layouts/_default/zen-summary.html ================================================

{{ .Title }}

{{ if site.Params.Experimental.jsDate }} {{ .Date.Format "2006-01-02T15:04:05Z07:00" }} {{ else }} {{ .Date | time.Format "Monday, Jan 2, 2006" }} {{ end }}
{{ if .Params.cover }}
{{ with .Resources.Get .Params.cover }} {{ if eq .MediaType.SubType "svg" }} {{ .Title }} {{ else }} {{ $webp := .Resize (printf "%dx%d webp" .Width .Height) }} {{ .Title }} {{ end }} {{ else }} {{ .Title }} {{ end }}
{{ else if not site.Params.noDefaultSummaryCover }}
{{ with resources.Get (printf "images/default%d.jpg" (index (seq 4 | shuffle) 0)) }} {{ $webp := .Resize (printf "%dx%d webp" .Width .Height) }} {{ .Title }} {{ end }}
{{ end }}
================================================ FILE: layouts/index.html ================================================ {{ define "main"}} {{ $paginator := .Paginate (where site.RegularPages "Type" "posts") }} {{ if site.Params.zenMode }}
{{ range $paginator.Pages }} {{ .Render "zen-summary" }} {{ end }}
{{ else }}
{{ range $paginator.Pages }}
{{ .Render "summary" }}
{{ end }}
{{ end }} {{ if gt $paginator.TotalPages 1 }}
{{ partial "paginator.html" (dict "paginator" $paginator) }}
{{ end }} {{ end }} {{ define "js" }} {{ if site.Params.Experimental.jsDate }} {{ partial "luxon.html" . }} {{ end }} {{ end }} ================================================ FILE: layouts/partials/author.html ================================================
{{ if .Params.avatar }}
{{ .Params.author }}
{{ else }} @ {{ end }}
================================================ FILE: layouts/partials/back.html ================================================
{{ with site.GetPage "/about" }} {{ $aboutPages := .Resources.ByType "page" }} {{ range (sort $aboutPages "Date" "asc") }}
{{ .Title }}
{{ .Content | emojify }}
{{ end }} {{ end }} {{ if (fileExists "data/socials.toml") }}
{{ T "socialLinks" }}
{{ partialCached "socials.html" . }}
{{ end }} {{ if and site.Config.Services.Disqus.Shortname .IsHome }}
{{ partial "disqus.html" (dict "Context" . "Identifier" "/") }}
{{ end }}
================================================ FILE: layouts/partials/commentSystemHeads.html ================================================ {{ if site.Params.valine }} {{ end }} {{ if site.Params.waline }} {{ end }} ================================================ FILE: layouts/partials/commentSystems.html ================================================ {{ if site.Config.Services.Disqus.Shortname }}
{{ partial "disqus.html" (dict "Context" . "Identifier" .RelPermalink) }}
{{ end }} {{ if site.Params.utterancesRepo }} {{ end }} {{ if site.Params.valine }}
{{ if fileExists "layouts/partials/valine.html" }} {{ partialCached "valine.html" . }} {{ else }}
{{ end }}
{{ end }} {{ if site.Params.waline }}
{{ if fileExists "layouts/partials/waline.html" }} {{ partialCached "waline.html" . }} {{ else }}
{{ end }}
{{ end }} {{ if site.Params.twikoo.enabled }}
{{ if fileExists "layouts/partials/twikoo.html" }} {{ partialCached "twikoo.html" . }} {{ else }}
{{ end }}
{{ end }} ================================================ FILE: layouts/partials/disqus.html ================================================ {{- $pc := site.Config.Privacy.Disqus -}} {{- if not $pc.Disable -}} {{ if site.Config.Services.Disqus.Shortname }}
{{end}} {{- end -}} ================================================ FILE: layouts/partials/footer.html ================================================ {{ if site.Params.zenMode }}