Full Code of divio/djangocms-admin-style for AI

master 2cc20cacc3ad cached
140 files
611.5 KB
169.6k tokens
115 symbols
1 requests
Download .txt
Showing preview only (654K chars total). Download the full file or copy to clipboard to get everything.
Repository: divio/djangocms-admin-style
Branch: master
Commit: 2cc20cacc3ad
Files: 140
Total size: 611.5 KB

Directory structure:
gitextract_fjw6171a/

├── .coveragerc
├── .csscomb.json
├── .dockerignore
├── .editorconfig
├── .eslintrc.js
├── .github/
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── codeql.yml
│       ├── lint.yml
│       ├── publish-to-live-pypi.yml
│       ├── publish-to-test-pypi.yml
│       ├── screenshots.yml
│       └── test.yml
├── .gitignore
├── .nvmrc
├── .pre-commit-config.yaml
├── .tx/
│   └── config
├── CHANGELOG.rst
├── Dockerfile
├── Dockerfile.django-2.2
├── Dockerfile.django-3.2
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── djangocms_admin_style/
│   ├── __init__.py
│   ├── locale/
│   │   ├── de/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── en/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── es/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── fr/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── it/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── lt/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── ru/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   └── uk/
│   │       └── LC_MESSAGES/
│   │           ├── django.mo
│   │           └── django.po
│   ├── models.py
│   ├── sass/
│   │   ├── components/
│   │   │   ├── _base.scss
│   │   │   ├── _changelist.scss
│   │   │   ├── _cms-update.scss
│   │   │   ├── _cmsplaceholders.scss
│   │   │   ├── _content.scss
│   │   │   ├── _dashboard.scss
│   │   │   ├── _dialog.scss
│   │   │   ├── _django-nested-admin.scss
│   │   │   ├── _drag-and-drop.scss
│   │   │   ├── _filer.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _forms.scss
│   │   │   ├── _header.scss
│   │   │   ├── _iconography.scss
│   │   │   ├── _icons.scss
│   │   │   ├── _login.scss
│   │   │   ├── _messages.scss
│   │   │   ├── _mobile.scss
│   │   │   ├── _modal.scss
│   │   │   ├── _shortcuts.scss
│   │   │   ├── _sideframe.scss
│   │   │   ├── _sticky-nav.scss
│   │   │   └── _tables.scss
│   │   ├── djangocms-admin.scss
│   │   ├── libs/
│   │   │   ├── _html5-boilerplate.scss
│   │   │   ├── _iconfont.scss
│   │   │   ├── _normalize.scss
│   │   │   └── html5-boilerplate/
│   │   │       ├── _fonts.scss
│   │   │       ├── _helpers.scss
│   │   │       ├── _media.scss
│   │   │       ├── _reset.scss
│   │   │       └── _styles.scss
│   │   ├── mixins/
│   │   │   ├── _all.scss
│   │   │   ├── _custom.scss
│   │   │   └── _zindex.scss
│   │   └── settings/
│   │       ├── _all.scss
│   │       ├── _cms.scss
│   │       ├── _custom.scss
│   │       └── _reset-django-dark-mode.scss
│   ├── static/
│   │   └── djangocms_admin_style/
│   │       ├── css/
│   │       │   └── djangocms-admin.css
│   │       └── js/
│   │           ├── base-admin.js
│   │           ├── dist/
│   │           │   ├── bundle.adminstyle.min.js
│   │           │   └── bundle.adminstyle.min.js.LICENSE.txt
│   │           └── modules/
│   │               ├── dark-mode.js
│   │               ├── datetimefields.js
│   │               ├── drag-touch-support.js
│   │               ├── form-submit.js
│   │               ├── related-widget-wrapper.js
│   │               ├── toolbar-dropdown.js
│   │               ├── ui-fixes.js
│   │               └── update-notification.js
│   ├── templates/
│   │   └── admin/
│   │       ├── base_site.html
│   │       ├── delete_confirmation.html
│   │       ├── delete_selected_confirmation.html
│   │       └── inc/
│   │           ├── branding.html
│   │           ├── cms_upgrade_notification.html
│   │           ├── extrahead.html
│   │           ├── extrastyle.html
│   │           ├── nav-global.html
│   │           ├── title.html
│   │           └── userlinks.html
│   └── templatetags/
│       ├── __init__.py
│       └── admin_style_tags.py
├── gulpfile.js
├── package.json
├── pyproject.toml
├── requirements.in
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── __init__.py
│   ├── frontend/
│   │   ├── .eslintrc.js
│   │   ├── casperjs.conf.js
│   │   └── integration/
│   │       ├── addNewUser.js
│   │       ├── dashboard.js
│   │       ├── handlers/
│   │       │   ├── externalMissing.js
│   │       │   ├── loadFailures.js
│   │       │   ├── missingPages.js
│   │       │   ├── pageErrors.js
│   │       │   └── suiteFailures.js
│   │       ├── loginAdmin.js
│   │       ├── pagetree.js
│   │       └── setup.js
│   ├── requirements/
│   │   ├── base.txt
│   │   ├── django-2.2.txt
│   │   ├── django-3.2.txt
│   │   ├── django-4.2.txt
│   │   └── django-5.0.txt
│   ├── settings-docker.py
│   ├── settings.py
│   ├── templates/
│   │   ├── base.html
│   │   ├── fullwidth.html
│   │   ├── page.html
│   │   └── simple.html
│   ├── test_migrations.py
│   └── test_templatetags.py
├── tox.ini
└── webpack.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .coveragerc
================================================
[run]
branch = True
source = djangocms_admin_style
omit =
    migrations/*
    tests/*

[report]
exclude_lines =
    pragma: no cover
    def __repr__
    if self.debug:
    if settings.DEBUG
    raise AssertionError
    raise NotImplementedError
    if 0:
    if __name__ == .__main__.:
ignore_errors = True


================================================
FILE: .csscomb.json
================================================
{
    "always-semicolon": true,
    "block-indent": "    ",
    "color-case": "lower",
    "color-shorthand": true,
    "element-case": "lower",
    "eof-newline": true,
    "leading-zero": true,
    "quotes": "double",
    "tab-size": true,
    "remove-empty-rulesets": true,
    "strip-spaces": true,
    "unitless-zero": true,
    "vendor-prefix-align": true,
    "space-between-declarations": "\n",
    "space-before-colon": "",
    "space-after-colon": " ",
    "space-before-combinator": " ",
    "space-after-combinator": " ",
    "space-before-opening-brace": " ",
    "space-after-opening-brace": "\n",
    "space-before-selector-delimiter": "",
    "space-after-selector-delimiter": "\n",
    "space-before-closing-brace": "\n",
    "sort-order": [
        "$variable",
        "$extend",
        "$include",

        "content",
        "display",
        "visibility",
        "position",
        "top",
        "right",
        "bottom",
        "left",
        "float",
        "clear",
        "overflow",
        "overflow-x",
        "overflow-y",
        "-ms-overflow-x",
        "-ms-overflow-y",
        "clip",
        "zoom",
        "flex-direction",
        "flex-order",
        "flex-pack",
        "flex-align",
        "z-index",

        "color",
        "font",
        "font-family",
        "font-size",
        "font-weight",
        "font-style",
        "font-variant",
        "font-size-adjust",
        "font-stretch",
        "font-effect",
        "font-emphasize",
        "font-emphasize-position",
        "font-emphasize-style",
        "font-smooth",
        "line-height",
        "text-align",
        "-webkit-text-align-last",
        "-moz-text-align-last",
        "-ms-text-align-last",
        "text-align-last",
        "vertical-align",
        "white-space",
        "text-decoration",
        "text-emphasis",
        "text-emphasis-color",
        "text-emphasis-style",
        "text-emphasis-position",
        "text-indent",
        "text-rendering",
        "-ms-text-justify",
        "text-justify",
        "letter-spacing",
        "word-spacing",
        "-ms-writing-mode",
        "text-outline",
        "text-transform",
        "text-wrap",
        "text-overflow",
        "-ms-text-overflow",
        "text-overflow-ellipsis",
        "text-overflow-mode",
        "text-shadow",
        "-ms-word-wrap",
        "word-wrap",
        "word-break",
        "-ms-word-break",
        "-moz-tab-size",

        "-webkit-box-sizing",
        "-moz-box-sizing",
        "box-sizing",
        "width",
        "min-width",
        "max-width",
        "height",
        "min-height",
        "max-height",
        "margin",
        "margin-top",
        "margin-right",
        "margin-bottom",
        "margin-left",
        "padding",
        "padding-top",
        "padding-right",
        "padding-bottom",
        "padding-left",
        "border",
        "border-spacing",
        "border-collapse",
        "border-width",
        "border-style",
        "border-color",
        "border-top",
        "border-top-width",
        "border-top-style",
        "border-top-color",
        "border-right",
        "border-right-width",
        "border-right-style",
        "border-right-color",
        "border-bottom",
        "border-bottom-width",
        "border-bottom-style",
        "border-bottom-color",
        "border-left",
        "border-left-width",
        "border-left-style",
        "border-left-color",
        "-webkit-border-radius",
        "-moz-border-radius",
        "border-radius",
        "-webkit-border-top-left-radius",
        "-moz-border-radius-topleft",
        "border-top-left-radius",
        "-webkit-border-top-right-radius",
        "-moz-border-radius-topright",
        "border-top-right-radius",
        "-webkit-border-bottom-right-radius",
        "-moz-border-radius-bottomright",
        "border-bottom-right-radius",
        "-webkit-border-bottom-left-radius",
        "-moz-border-radius-bottomleft",
        "border-bottom-left-radius",
        "-webkit-border-image",
        "-moz-border-image",
        "-o-border-image",
        "border-image",
        "-webkit-border-image-source",
        "-moz-border-image-source",
        "-o-border-image-source",
        "border-image-source",
        "-webkit-border-image-slice",
        "-moz-border-image-slice",
        "-o-border-image-slice",
        "border-image-slice",
        "-webkit-border-image-width",
        "-moz-border-image-width",
        "-o-border-image-width",
        "border-image-width",
        "-webkit-border-image-outset",
        "-moz-border-image-outset",
        "-o-border-image-outset",
        "border-image-outset",
        "-webkit-border-image-repeat",
        "-moz-border-image-repeat",
        "-o-border-image-repeat",
        "border-image-repeat",
        "outline",
        "outline-width",
        "outline-style",
        "outline-color",
        "outline-offset",
        "table-layout",
        "empty-cells",
        "caption-side",
        "list-style",
        "list-style-position",
        "list-style-type",
        "list-style-image",
        "quotes",
        "counter-reset",
        "counter-increment",
        "resize",
        "cursor",
        "-webkit-user-select",
        "-moz-user-select",
        "-ms-user-select",
        "user-select",
        "nav-index",
        "nav-up",
        "nav-right",
        "nav-down",
        "nav-left",
        "-o-tab-size",
        "tab-size",
        "-webkit-hyphens",
        "-moz-hyphens",
        "hyphens",
        "pointer-events",
        "opacity",
        "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
        "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
        "-ms-interpolation-mode",
        "background",
        "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
        "background-color",
        "background-image",
        "background-repeat",
        "background-attachment",
        "background-position",
        "background-position-x",
        "-ms-background-position-x",
        "background-position-y",
        "-ms-background-position-y",
        "-webkit-background-clip",
        "-moz-background-clip",
        "background-clip",
        "background-origin",
        "-webkit-background-size",
        "-moz-background-size",
        "-o-background-size",
        "background-size",
        "box-decoration-break",
        "-webkit-box-shadow",
        "-moz-box-shadow",
        "box-shadow",
        "filter:progid:DXImageTransform.Microsoft.gradient",
        "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
        "-webkit-transition",
        "-moz-transition",
        "-ms-transition",
        "-o-transition",
        "transition",
        "-webkit-transition-delay",
        "-moz-transition-delay",
        "-ms-transition-delay",
        "-o-transition-delay",
        "transition-delay",
        "-webkit-transition-timing-function",
        "-moz-transition-timing-function",
        "-ms-transition-timing-function",
        "-o-transition-timing-function",
        "transition-timing-function",
        "-webkit-transition-duration",
        "-moz-transition-duration",
        "-ms-transition-duration",
        "-o-transition-duration",
        "transition-duration",
        "-webkit-transition-property",
        "-moz-transition-property",
        "-ms-transition-property",
        "-o-transition-property",
        "transition-property",
        "-webkit-transform",
        "-moz-transform",
        "-ms-transform",
        "-o-transform",
        "transform",
        "-webkit-transform-origin",
        "-moz-transform-origin",
        "-ms-transform-origin",
        "-o-transform-origin",
        "transform-origin",
        "-webkit-animation",
        "-moz-animation",
        "-ms-animation",
        "-o-animation",
        "animation",
        "-webkit-animation-name",
        "-moz-animation-name",
        "-ms-animation-name",
        "-o-animation-name",
        "animation-name",
        "-webkit-animation-duration",
        "-moz-animation-duration",
        "-ms-animation-duration",
        "-o-animation-duration",
        "animation-duration",
        "-webkit-animation-play-state",
        "-moz-animation-play-state",
        "-ms-animation-play-state",
        "-o-animation-play-state",
        "animation-play-state",
        "-webkit-animation-timing-function",
        "-moz-animation-timing-function",
        "-ms-animation-timing-function",
        "-o-animation-timing-function",
        "animation-timing-function",
        "-webkit-animation-delay",
        "-moz-animation-delay",
        "-ms-animation-delay",
        "-o-animation-delay",
        "animation-delay",
        "-webkit-animation-iteration-count",
        "-moz-animation-iteration-count",
        "-ms-animation-iteration-count",
        "-o-animation-iteration-count",
        "animation-iteration-count",
        "-webkit-animation-direction",
        "-moz-animation-direction",
        "-ms-animation-direction",
        "-o-animation-direction",
        "animation-direction",
        "speak"
    ]
}


================================================
FILE: .dockerignore
================================================
testdb.sqlite
node_modules
env


================================================
FILE: .editorconfig
================================================
# editorconfig.org

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 80

[*.py]
max_line_length = 120
quote_type = single

[*.{scss,js,html}]
max_line_length = 120
indent_style = space
quote_type = double

[*.js]
max_line_length = 120
quote_type = single

[*.rst]
max_line_length = 80

[*.yml]
indent_size = 2


================================================
FILE: .eslintrc.js
================================================
module.exports = {
    "env": {
        "browser": true,
        "node": true,
        "jquery": true,
        "jasmine": true
    },
    "globals": {
        "CMS": true
    },
    "root": true,
    "ecmaFeatures": {
        "modules": true
    },
    "rules": {
        // Possible Errors
        "comma-dangle": [2, "never"],
        "no-cond-assign": 2,
        "no-console": 1,
        "no-constant-condition": 2,
        "no-control-regex": 2,
        "no-debugger": 2,
        "no-dupe-args": 2,
        "no-dupe-keys": 2,
        "no-duplicate-case": 2,
        "no-empty-character-class": 2,
        "no-empty": ["error", { "allowEmptyCatch": true }],
        "no-ex-assign": 2,
        "no-extra-boolean-cast": 2,
        "no-extra-parens": ["error", "all", {
            "nestedBinaryExpressions": false
        }],
        "no-extra-semi": 2,
        "no-func-assign": 2,
        "no-inner-declarations": 2,
        "no-invalid-regexp": 2,
        "no-irregular-whitespace": 2,
        "no-negated-in-lhs": 2,
        "no-obj-calls": 2,
        "no-regex-spaces": 2,
        "no-sparse-arrays": 2,
        "no-unexpected-multiline": 2,
        "no-unreachable": 2,
        "use-isnan": 2,
        "valid-jsdoc": [2, {
            "requireReturn": false,
            "requireParamDescription": false,
            "requireReturnDescription": false,
            "prefer": {
                "return": "returns"
            }
        }],
        "valid-typeof": 2,

        // Best Practices
        "accessor-pairs": 2,
        "block-scoped-var": 2,
        "complexity": ["error", { "max": 10 } ],
        "consistent-return": 0,
        "curly": 2,
        "default-case": 2,
        "dot-location": [2, "property"],
        "dot-notation": 2,
        "eqeqeq": 2,
        "guard-for-in": 2,
        "no-alert": 2,
        "no-caller": 2,
        "no-case-declarations": 2,
        "no-div-regex": 2,
        "no-else-return": 1,
        "no-empty-pattern": 2,
        "no-eq-null": 2,
        "no-eval": 2,
        "no-extend-native": 2,
        "no-extra-bind": 2,
        "no-fallthrough": 2,
        "no-floating-decimal": 2,
        "no-implicit-coercion": 0,
        "no-implied-eval": 2,
        "no-invalid-this": 0,
        "no-iterator": 2,
        "no-labels": 2,
        "no-lone-blocks": 2,
        "no-loop-func": 2,
        "no-magic-numbers": ["error", { "ignore": [0, -1, 1, 2], "ignoreArrayIndexes": true }],
        "no-multi-spaces": 2,
        "no-multi-str": 0,
        "no-native-reassign": 2,
        "no-new-func": 2,
        "no-new-wrappers": 2,
        "no-new": 0,
        "no-octal-escape": 2,
        "no-octal": 2,
        "no-param-reassign": 2,
        "no-process-env": 0,
        "no-proto": 2,
        "no-redeclare": 2,
        "no-return-assign": 2,
        "no-script-url": 2,
        "no-self-compare": 2,
        "no-sequences": 2,
        "no-throw-literal": 2,
        "no-unused-expressions": [2, { "allowShortCircuit": true }],
        "no-useless-call": 2,
        "no-useless-concat": 2,
        "no-void": 2,
        "no-warning-comments": 0,
        "no-with": 2,
        "radix": 2,
        "vars-on-top": 0, // FIXME should be enabled at some point
        "wrap-iife": [2, "inside"],
        "yoda": [2, "never", { "exceptRange": true }],

        // Strict Mode
        "strict": 0, // not required with webpack

        // Variables
        "init-declarations": 0,
        "no-catch-shadow": 2,
        "no-delete-var": 2,
        "no-label-var": 2,
        "no-shadow-restricted-names": 2,
        "no-shadow": 2,
        "no-undef-init": 2,
        "no-undef": 2,
        "no-undefined": 0,
        "no-unused-vars": 2,
        "no-use-before-define": 2,

        // Stylistic Issues
        "array-bracket-spacing": [2, "never"],
        "block-spacing": 2,
        "brace-style": [2, "1tbs"],
        "camelcase": 0,
        "comma-spacing": [2, {"before": false, "after": true}],
        "comma-style": [2, "last"],
        "computed-property-spacing": [2, "never"],
        "consistent-this": [2, "that"],
        "eol-last": 2,
        "func-names": 0,
        "func-style": 0,
        "id-length": 0,
        "id-match": 0,
        "indent": ["error", 4, {
            "SwitchCase": 1
        }],
        "jsx-quotes": 0,
        "key-spacing": [2, {"beforeColon": false, "afterColon": true}],
        "linebreak-style": [2, "unix"],
        "lines-around-comment": 0,
        "max-nested-callbacks": [2, 5],
        "new-cap": 2,
        "new-parens": 2,
        "newline-after-var": 2,
        "no-array-constructor": 2,
        "no-continue": 2,
        "no-inline-comments": 0,
        "no-lonely-if": 2,
        "no-mixed-spaces-and-tabs": 2,
        "no-multiple-empty-lines": [2, {"max": 2}],
        "no-negated-condition": 2,
        "no-nested-ternary": 2,
        "no-new-object": 2,
        "no-restricted-syntax": 0,
        "no-spaced-func": 0,
        "no-ternary": 0,
        "no-trailing-spaces": 2,
        "no-underscore-dangle": 0,
        "no-unneeded-ternary": 2,
        "object-curly-spacing": [2, "always", {
            "objectsInObjects": true,
            "arraysInObjects": true
        }],
        "one-var": [2, "never"],
        "operator-assignment": 2,
        "operator-linebreak": [2, "after"],
        "padded-blocks": 0,
        "quote-props": [2, "consistent-as-needed"],
        "quotes": [2, "single", "avoid-escape"],
        "require-jsdoc": 2,
        "semi-spacing": [2, {"before": false, "after": true}],
        "semi": [2, "always"],
        "sort-vars": 0,
        "keyword-spacing": 2,
        "space-before-blocks": 2,
        "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }],
        "space-in-parens": [2, "never"],
        "space-infix-ops": 2,
        "space-unary-ops": 2,
        "spaced-comment": 2,
        "wrap-regex": 2,

        // ES6
        "arrow-parens": [2, "always"],

        // Legacy
        "max-depth": [2, 4],
        "max-len": [2, 120],
        "max-params": [2, 3],
        "max-statements": 0,
        "no-bitwise": 2,
        "no-plusplus": 0
    }
}


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Description

<!--
If this is a security issue stop right here and follow our documentation:
http://docs.django-cms.org/en/latest/contributing/development-policies.html#reporting-security-issues
-->

## Related resources

<!--
Add here links to existing issues or conversation from GitHub
or any other resource.
-->

* #...
* #...

## Checklist

<!--
Please check the following items before submitting, otherwise,
your pull request will be closed.

Use 'x' to check each item: [x] I have ...
-->

* [ ] I have added or modified the tests when changing logic
* [ ] I have followed [the conventional commits guidelines](https://www.conventionalcommits.org/) to add meaningful information into the changelog
* [ ] I have read the [contribution guidelines ](https://github.com/django-cms/django-cms/blob/develop/CONTRIBUTING.rst)


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]
  schedule:
    - cron: "7 1 * * 0"

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ javascript ]

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}
          queries: +security-and-quality

      - name: Autobuild
        uses: github/codeql-action/autobuild@v2

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2
        with:
          category: "/language:${{ matrix.language }}"


================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint

on: [push]

jobs:
  flake8:
    name: flake8
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: Install flake8
        run: pip install --upgrade flake8
      - name: Run flake8
        uses: liskin/gh-problem-matcher-wrap@v1
        with:
          linters: flake8
          run: flake8

  ruff:
    name: ruff
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: python -Im pip install --user ruff
    - name: Run ruff on cms
      run: ruff check --output-format=github djangocms_admin_style


================================================
FILE: .github/workflows/publish-to-live-pypi.yml
================================================
name: Publish Python 🐍 distributions 📦 to pypi

on:
  release:
    types:
      - published

jobs:
  build-n-publish:
    name: Build and publish Python 🐍 distributions 📦 to pypi
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Set up Python 3.9
      uses: actions/setup-python@v1
      with:
        python-version: 3.9

    - name: Install pypa/build
      run: >-
        python -m
        pip install
        build
        --user
    - name: Build a binary wheel and a source tarball
      run: >-
        python -m
        build
        --sdist
        --wheel
        --outdir dist/
        .

    - name: Publish distribution 📦 to PyPI
      if: startsWith(github.ref, 'refs/tags')
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        user: __token__
        password: ${{ secrets.PYPI_API_TOKEN }}


================================================
FILE: .github/workflows/publish-to-test-pypi.yml
================================================
name: Publish Python 🐍 distributions 📦 to TestPyPI

on:
  push:
    branches:
      - master

jobs:
  build-n-publish:
    name: Build and publish Python 🐍 distributions 📦 to TestPyPI
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Set up Python 3.9
      uses: actions/setup-python@v1
      with:
        python-version: 3.9

    - name: Install pypa/build
      run: >-
        python -m
        pip install
        build
        --user
    - name: Build a binary wheel and a source tarball
      run: >-
        python -m
        build
        --sdist
        --wheel
        --outdir dist/
        .

    - name: Publish distribution 📦 to Test PyPI
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        user: __token__
        password: ${{ secrets.TEST_PYPI_API_TOKEN }}
        repository_url: https://test.pypi.org/legacy/
        skip_existing: true


================================================
FILE: .github/workflows/screenshots.yml
================================================
name: screenshots

on: pull_request

jobs:
  screenshots:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: [3.9]  # dockerfile uses 3.8
        django-version: ['2.2', '3.2']
        os: [
          ubuntu-20.04,
        ]

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Run screeshots
      run: make test VERSION=${{ matrix.django-version }}


================================================
FILE: .github/workflows/test.yml
================================================
name: CodeCov

on: [push, pull_request]

jobs:
  unit-tests:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: [ '3.8', '3.9', '3.10', '3.11']
        requirements-file: [
          django-2.2.txt,
          django-3.2.txt,
          django-4.2.txt,
          django-5.0.txt,
        ]
        os: [
          ubuntu-20.04,
        ]
        exclude:
        - requirements-file: django-5.0.txt
          python-version: 3.8
        - requirements-file: django-5.0.txt
          python-version: 3.9

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r tests/requirements/${{ matrix.requirements-file }}
        python setup.py install

    - name: Run coverage
      run: coverage run setup.py test

    - name: Upload Coverage to Codecov
      uses: codecov/codecov-action@v1


================================================
FILE: .gitignore
================================================
*.py[cod]
*$py.class
*.egg-info
*.log
*.pot
.DS_Store
.coverage
.eggs/
.idea/
.project/
.pydevproject/
.vscode/
.settings/
.tox/
__pycache__/
build/
dist/
env/
.venv/

/~
/node_modules
.sass-cache
*.css.map
npm-debug.log

local.sqlite
testdb.sqlite*

tests/screenshots/*
!tests/screenshots/reference-*
!djangocms_admin_style/static/djangocms_admin_style/js/dist


================================================
FILE: .nvmrc
================================================
20


================================================
FILE: .pre-commit-config.yaml
================================================
ci:
    autofix_commit_msg: |
        ci: auto fixes from pre-commit hooks

        for more information, see https://pre-commit.ci
    autofix_prs: false
    autoupdate_commit_msg: 'ci: pre-commit autoupdate'
    autoupdate_schedule: monthly

repos:
  - repo: https://github.com/asottile/pyupgrade
    rev: v3.21.2
    hooks:
      - id: pyupgrade
        args: ["--py39-plus"]

  - repo: https://github.com/adamchainz/django-upgrade
    rev: '1.30.0'
    hooks:
      - id: django-upgrade
        args: [--target-version, "3.2"]

  - repo: https://github.com/asottile/yesqa
    rev: v1.5.0
    hooks:
      - id: yesqa

  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-merge-conflict
      - id: debug-statements
      - id: mixed-line-ending
      - id: trailing-whitespace

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.2
    hooks:
      - id: codespell

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.15.12 # Use the desired Ruff version
    hooks:
      - id: ruff-check # For linting checks
        args: [--fix] # Optional: automatically fix fixable issues
      - id: ruff-format # For code formatting

  - repo: https://github.com/rstcheck/rstcheck
    rev: v6.2.5
    hooks:
    - id: rstcheck
      additional_dependencies:
      - sphinx==6.1.3
      - tomli==2.0.1


================================================
FILE: .tx/config
================================================
[main]
host = https://www.transifex.com

[djangocms-admin-style.djangocms_admin_style]
file_filter = djangocms_admin_style/locale/<lang>/LC_MESSAGES/django.po
source_file = djangocms_admin_style/locale/en/LC_MESSAGES/django.po
source_lang = en
type = PO



================================================
FILE: CHANGELOG.rst
================================================
=========
Changelog
=========

3.3.0 (2024-01-14)
==================

* Allow more than two columns (as in the original Django admin)
* Adjust flex-container in newer Django versions (4.2+) for submit row and admin header
* Fix help texts for checkboxes and radio buttons
* Fix logout menu entry to work with Django 5

3.2.7 (2024-01-04)
==================

* Style delete links
* Fix read-only fields overlapping with their labels
* Adjust flex-container in newer Django versions

3.2.6 (2023-09-18)
==================

* Fix bug which adds 'data-theme="undefined"' to admin html tag
* Fix broken styling with `.flex-container`
* Fix broken color input (#429)
* Add Django as requirement in setup.py (#423)


3.2.5 (2023-08-22)
==================

* Add support for Django 4.2+ dark mode switch buttons
* Add support for Django 4 view related admin buttons
* Improve styling compatibility with Django 4.2
* Add support for search field in admin nav (new in Django 4.2)

3.2.4 (2023-04-25)
==================

* Fix page tree dropdown cross styling
* Fix misaligned apphooks in changelist views.


3.2.3 (2023-01-13)
==================

* Fix paginator element overflowing its container.


3.2.2 (2023-01-06)
==================

* Fix support of django-shortcuts with original icons from django-shortcuts

3.2.1 (2022-12-15)
==================

* Check updates based on pypi releases
* Fix too large margin for change list in modal window
* Removed unused css generating conflicts for icons fonts of
  djangocms-admin-style and django-cms core.

3.2.0 (2022-06-13)
==================

* Added configurable dark mode (color scheme)

3.1.1 (2022-04-13)
==================

* Fix: Missing drop shadows and unreadable button coloring on hover

3.1.0 (2022-03-27)
==================

* Add dark mode depending on system settings

3.0.0 (2022-01-22)
==================

* Drop support for python 3.5, 3.6 and django 3.0
* Increase calendar box width to show Sundays
* Fix datetime fields layout
* Fix modal layout issue
* Improve readability in form

2.0.2 (2020-11-24)
==================

* Fix ``#changelist`` layout issue introduced since Django > 3.1.1


2.0.1 (2020-10-28)
==================

* Fixed the icon in the admin dashboard for models that are read only


2.0.0 (2020-08-26)
==================

* Added support for Django 3.1
* Dropped support for Python 2.7 and Python 3.4
* Dropped support for Django < 2.2
* Changed ``field-box`` class declarations to ``fieldBox``
* Fixed screenshot tests for Django 2.2 and higher


1.5.0 (2020-01-24)
==================

* Added support for Django 3.0
* Added support for Python 3.8


1.4.0 (2019-04-15)
==================

* Introduced support for Django 2.2 and django CMS 3.7
* Removed support for Django 2.0
* Extended test matrix
* Fixed screenshot tests for Django 2.1 and higher
* Added new classifiers


1.3.0 (2019-01-23)
==================

* Added support for Django 1.11, 2.0 and 2.1
* Removed support for Django 1.8, 1.9
* Adapted testing infrastructure (tox/travis) to incorporate
  django CMS 3.5 and 3.6
* Added isort and adapted imports
* Adapted code base to align with other supported addons


1.2.9 (2018-10-31)
==================

* Fixed a bug where it was possible to submit the same form multiple times


1.2.8 (2018-04-10)
==================

* Added styles for buttons in submit row
* Fixed multiple UI issues with Django 1.11


1.2.7 (2017-04-19)
==================

* Adjusted styles of the new version of django-select2
* Fixes display issues when using django-nested-admin
* Moved testing infrastructure to a centralised location ``/tests``
* Removed object tools background and shadow in modal windows
* Fixed size of "unknown" state icon
* Fixed an issue with tabular inlines restricting the size of <select>


1.2.6 (2016-10-24)
==================

* Fixed an issue with related-widget-links display after filer widgets
* Fixed an issue with related-widget-links when only change link was showing up
  after selects


1.2.5 (2016-10-04)
==================

* Fixed string representation in the tabular inline
* Fixed a regression which caused an error if the
  ``django.core.context_processors.request`` context processor was not configured.
* Fixed a potential security issue if the ``Site.name`` field contains malicious code.


1.2.4 (2016-09-15)
==================

* Fixes input and textarea fields in not aligned inline groups
* Fixes select field width in table
* Added missing labels to datetime fields that are already part of the field box
* Fixes the "Open my site" button in admin views to use Site name
* Set different width for related widget wrapper select field depending on amount of links
* Fixed file inputs appearance in Firefox
* Fixed an issue with oversized table headers
* Fixed an issue with sortable tables
* Fixed an issue with datetime fields
* Fixed an issue with long names and smaller screens in change list
* Fixed an issue with related widget wrappers and selects inside of tables
* Added single js bundle vs many small javascript files


1.2.3 (2016-06-22)
==================

* Added css regression tests framework
* Fixed an issue with datetime fields being displayed incorrectly (#347)
* Fixed a bug with related-widget add/change buttons inside changelist (#348)
* Fixed an issue with login screen on Django 1.9
* Fixed an issue with calendar display in Django 1.9
* Fixed inline grouped field with
* Synced translations with Transifex


1.2.2 (2016-05-25)
==================

* Fixed drag'n'drop on sortedm2m on touch devices
* Fixed mispositioned elements on tablets


1.2.0 (2016-05-19)
==================

* Fix missing border under copy permissions text & paddings/margins of the buttons
* Fix breadcrumbs position when cms debug bar is present
* Fix "take me back" button on delete confirmations
* Added frontend integration tests (written with Casper JS)


1.1.1 (2016-04-26)
==================

* Adds cancel link to delete confirmation page
* Adds documentation link to dropdown
* Fix hidden ckeditor toolbar under the django cms main toolbar
* Floats related widget wrapper links next to select field
* Fix cropped input text
* Adds djangocms-admin-style class to body
* Floats calendar and date pickers next to input field
* Floats calendar and date fields in modal
* Removes disabled action button border
* Adds highlighted area to error messages


1.1.0 (2016-02-01)
==================

* Fix django 1.9 style changes
* Fix selector chooser on mobile view because of django 1.9 style changes
* Fix date and calendar shortcuts because of 1.9 style changes
* Fix h1 styles because of 1.9 style changes
* Resets horizontal form fields to groups
* Removes unnecessary icon files from filer and moves js into static/djangocms_admin_style folder


1.0.9 (2016-01-28)
==================

* Fix that link doesn't break to newline after sortedm2m label
* Fix changelist paginator font size
* Remove admin menu link hover
* Fix related widget wrapper link size
* Fix checkbox-row if first child
* Remove input clear on every input for IE
* Fix add-another button size on advanced settings


1.0.8 (2016-01-05)
==================

* Fix file upload field in file plugin
* Resets input field background color for dark system
* Fix filer clear button size
* Adapt dashboard link color for better visibility
* Fix sortedm2m label and link alignment on firefox
* Fix sortedm2m list width on mobile
* Align sortedm2m label if it breaks to new line
* Remove sortedm2m vertical scrollbar and show full list content
* Fix changelist if no admin actions are visible
* Fix related widget wrapper list styles


1.0.7 (2015-12-03)
==================

* Fix login password field
* Enable sourcemaps generation when using --debug param on Gulp
* Fix restore cancel link height
* Fix image upload clearer image size
* Adds max height on filtered lists and filters to make it more usable for very long lists
* Adds translations


1.0.6 (2015-11-19)
==================

* Fix hover and selected lang link color in changelist table
* Fix paginator width in users list on sideframe
* Fix multiselect icons on mobile view
* Fix missing search icon
* Fix filter position and background color on edit page list window
* Fix calendar and time cancel link color
* Fix result list view on popup
* Fix basic and advanced link hover color
* Shows admin breadcrumbs on side frame
* Fix ui sortable handler
* Fix inline change link icon and position
* Fix required fields label style
* Fix tabular tables inline fields
* Fix add another button size on advanced page settings
* Fix tagged items delete label position
* Fix login password field


1.0.5 (2015-11-10)
==================

* Fix multiselect height
* Fix login screen
* Fix icon position in pagetree
* Fix showing widget icons on file, folder and image fields
* Fix header and header button default text
* Fix link/button plugin font color, button sizes and spaces


1.0.4 (2015-11-04)
==================

* Fix ``extrastyle.html`` link in README.rst
* Fix modal display in django CMS <= 3.1
* Fix multiple select showing dropdown icon
* Fix magnifier icon in django-filer for files
* Fix box-shadow on buttons
* Fix Advance and Basic button styling
* Fix limit search checkbox on filer


1.0.3 (2015-11-04)
==================

* Internal release


1.0.2 (2015-11-04)
==================

* Fix icon sizes being to large on the pagetree


1.0.1 (2015-11-03)
==================

* Fix button and error messages in Django 1.6


1.0.0 (2015-11-03)
==================

* Comprehensive visual overhaul with emphasis on supporting touch-devices
* New header markup on branding.html template.


================================================
FILE: Dockerfile
================================================
FROM python:3.8.12

# Pillow requirements
RUN apt-get update \
    && apt-get -y install libtiff5-dev libjpeg62-turbo-dev zlib1g-dev \
    libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev \
    build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

# Node setup
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
RUN apt install -y nodejs
RUN npm install -g gulp@4

# Preparing files
WORKDIR /app

COPY ./package.json /app/package.json
COPY ./package-lock.json /app/package-lock.json
COPY ./tests/requirements /app/tests/requirements

RUN npm install

CMD pip install -e . && gulp lint && gulp tests

ENV TZ="Europe/Zurich"


================================================
FILE: Dockerfile.django-2.2
================================================
FROM djangocms-admin-style-test:base

RUN pip install -r /app/tests/requirements/django-2.2.txt

ENV SCREENSHOT_REFERENCES="./tests/screenshots/reference-2.2"

COPY . /app


================================================
FILE: Dockerfile.django-3.2
================================================
FROM djangocms-admin-style-test:base

RUN pip install -r /app/tests/requirements/django-3.2.txt

ENV SCREENSHOT_REFERENCES="./tests/screenshots/reference-3.2"

COPY . /app


================================================
FILE: LICENSE
================================================
Copyright (c) 2012, Divio AG
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of Divio AG nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL DIVIO AG BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: MANIFEST.in
================================================
include LICENSE
include README.rst
recursive-include djangocms_admin_style *
recursive-include djangocms_admin_style/locale *
recursive-exclude * *.py[co]
recursive-exclude * *.scssc
recursive-exclude .*


================================================
FILE: Makefile
================================================
PORT = 8000
VERSION = 2.2


build:
	docker build -t djangocms-admin-style-test:base -f Dockerfile .

cleanup:
	rm -rf *testdb.sqlite

run:
	make cleanup
	make build
	docker build -t djangocms-admin-style-test:django-$(VERSION) -f Dockerfile.django-$(VERSION) .
	docker run -t --rm -p $(PORT):8000 -v `pwd`:/app djangocms-admin-style-test:django-$(VERSION) bash -c "pip install -r tests/requirements/django-$(VERSION).txt && python tests/settings-docker.py"

test:
	make build
	docker build -t djangocms-admin-style-test:django-$(VERSION) -f Dockerfile.django-$(VERSION) .
	docker run -t --rm -v `pwd`/tests/screenshots/django-$(VERSION):/app/tests/screenshots/results djangocms-admin-style-test:django-$(VERSION)

local:
	@echo "> The reference files in "tests/screenshots" will differ locally from the Docker version (linux)."
	@echo "> Make sure to run "npm install" using node 8 first."
	@echo ""
	make cleanup
	pip install -r tests/requirements/django-$(VERSION).txt
	pip install -e .
	export SCREENSHOT_REFERENCES="./tests/screenshots/reference-$(VERSION)"; gulp lint && gulp tests


================================================
FILE: README.rst
================================================
======================
django CMS Admin Style
======================

|pypi| |python| |django| |djangocms| |djangocms4| |coverage|

Adds pretty CSS styles for the django CMS admin interface. Supports optional
``django-admin-shortcuts`` package.


.. note::

    This project is considered 3rd party (no supervision by the `django CMS Association <https://www.django-cms.org/en/about-us/>`_). Join us on `Slack                 <https://www.django-cms.org/slack/>`_ for more information.

+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
| .. image:: https://raw.githubusercontent.com/divio/djangocms-admin-style/master/preview/dashboard.png   | .. image:: https://raw.githubusercontent.com/divio/djangocms-admin-style/master/preview/listview.png   |
+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
| .. image:: https://raw.githubusercontent.com/divio/djangocms-admin-style/master/preview/datepicker.png  | .. image:: https://raw.githubusercontent.com/divio/djangocms-admin-style/master/preview/shortcuts.png  |
+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+

The shortcuts you see on top of the dashboard are from `django-admin-shortcuts <https://github.com/alesdotio/django-admin-shortcuts/>`_

*******************************************
Contribute to this project and win rewards
*******************************************

Because this is a an open-source project, we welcome everyone to
`get involved in the project <https://www.django-cms.org/en/contribute/>`_ and
`receive a reward <https://www.django-cms.org/en/bounty-program/>`_ for their contribution.
Become part of a fantastic community and help us make django CMS the best CMS in the world.

We'll be delighted to receive your
feedback in the form of issues and pull requests. Before submitting your
pull request, please review our `contribution guidelines
<http://docs.django-cms.org/en/latest/contributing/index.html>`_.

We're grateful to all contributors who have helped create and maintain this package.
Contributors are listed at the `contributors <https://github.com/django-cms/djangocms-admin-style/graphs/contributors>`_
section.


Documentation
=============

See ``REQUIREMENTS`` in the `setup.py <https://github.com/divio/djangocms-admin-style/blob/master/setup.py>`_
file for additional dependencies:



Installation
------------

For a manual install:

* run ``pip install djangocms-admin-style``
* add ``djangocms_admin_style`` to your ``INSTALLED_APPS`` just before ``'django.contrib.admin'``
* run ``python manage.py migrate djangocms_admin_style``


Configuration
-------------

The django CMS Admin Style overrides django admin's ``base_site.html``,
but you can still partially customize this page. Look at the source of
``templates/admin/base_site.html`` and override the templates that are included
in various blocks. For example, you can add your own CSS in
``templates/admin/inc/extrastyle.html``.

The following additional settings can be set:

* ``CMS_ENABLE_UPDATE_CHECK = True``
  Set to ``False`` to disable the update notification.
* ``CMS_UPDATE_CHECK_TYPE = ('minor')``
  Set to ``('patch')`` to get only patch notifications.
  (minor = 3.x.x, patch = 3.4.x)

The update checker does not gather or record any data.

To **compile CSS** run the following commands using **node 16**:

* ``nvm use``
* ``npm install``
* ``npx gulp icons sass bundle``


For further options have a look at the ``gulpfile.js``.

Dark mode support
-----------------

Django supports a dark mode admin since version 3.1. djangocms-admin-style
introduces css variables that contain color codes and change with the selected
mode:

+-------------------------------+-----------+---------------------------+-----------+
| **CMS variable name**         | **Color** | **Django admin fallback** | **Color** |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-white``               | #ffffff   | ``--body-bg``             | #ffffff   |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-black``               | #000000   | ``--body-fg``             | #303030   |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray``                | #666      | ``--body-quiet-color``    | #666      |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-lightest``       | #f2f2f2   | ``--darkened-bg``         | #f8f8f8   |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-lighter``        | #ddd      | ``--border-color``        | #ccc      |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-light``          | #999      | ``--close-button-bg``     | #888      |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-darker``         | #454545   |                           |           |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-darkest``        | #333      |                           |           |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-gray-super-lightest`` | #f7f7f7   |                           |           |
+-------------------------------+-----------+---------------------------+-----------+
| ``--dca-primary``             | #00bbff   | ``--primary``             | #79aec8   |
+-------------------------------+-----------+---------------------------+-----------+


Extending styles in your own app
---------------------------------

If your project or app requires specific styles if djangocms-admin-style is
installed (e.g., to better adjust to the django CMS style) you can add selective
styling by adding the ``.djangocms-admin-style`` selector::

    // Show widget in CMS colors if djangocms-admin-style is installed
    .djangocms-admin-style #my-widget {
        color:  var(--dca-primary, black);
    }

We recommend to following rules for your app's admin css:

- Try avoid using ``color``, ``background`` etc. styles where possible and meaningful
- If necessary use as few as possible standard django CMS colors (preferably
  from see above list with fallback colors)
- Usage: ``var(--dca-color-var, var(--fallback-color-var, #xxxxxx))`` where
  ``#xxxxxx`` represents the light version of the color.

Running Tests
-------------

You can run tests by executing::

    virtualenv env
    source env/bin/activate
    pip install -r tests/requirements/base.txt
    python setup.py test

In order to run **integration tests** you need to have Docker installed,
then run the following command::

    make test

To test other Django versions simply append `VERSION=4.1``. You can also
run the test server through::

    make run

The integration tests are written using Casperjs, phantomcss and
djangocms-casper-helpers.


.. |pypi| image:: https://badge.fury.io/py/djangocms-admin-style.svg
    :target: http://badge.fury.io/py/djangocms-admin-style
.. |build| image:: https://travis-ci.org/django-cms/djangocms-admin-style.svg?branch=master
    :target: https://travis-ci.org/django-cms/djangocms-admin-style
.. |coverage| image:: https://codecov.io/gh/django-cms/djangocms-admin-style/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/django-cms/djangocms-admin-style

.. |python| image:: https://img.shields.io/badge/python-3.5+-blue.svg
    :target: https://pypi.org/project/djangocms-admin-style/
.. |django| image:: https://img.shields.io/badge/django-2.2%2B-blue.svg
    :target: https://www.djangoproject.com/
.. |djangocms| image:: https://img.shields.io/badge/django%20CMS-3.6%2B-blue.svg
    :target: https://www.django-cms.org/
.. |djangocms4| image:: https://img.shields.io/badge/django%20CMS-4-blue.svg
    :target: https://www.django-cms.org/


================================================
FILE: djangocms_admin_style/__init__.py
================================================
"""
See PEP 440 (https://www.python.org/dev/peps/pep-0440/)

Release logic:
 1. Increase version number (change __version__ below).
 2. Ensure the static bundle is upto date with
   ``nvm use && gulp icons && gulp sass bundle``
 3. Assure that all changes have been documented in CHANGELOG.rst.
 4. In setup.py check that
   - versions from all third party packages are pinned in ``REQUIREMENTS``.
   - the list of ``CLASSIFIERS`` is up-to-date.
 5. git add djangocms_admin_style/__init__.py CHANGELOG.rst setup.py
 6. git commit -m 'Bump to {new version}'
 7. git push
 8. Assure that all tests pass on https://github.com/django-cms/djangocms-admin-style/actions
 9. Create a new release on https://github.com/django-cms/djangocms-admin-style/releases/new
10. Publish the release when ready
11. Github actions will publish the new package to pypi
"""

__version__ = "3.3.1"


================================================
FILE: djangocms_admin_style/locale/de/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Angelo Dini <finalangeljp@hotmail.com>, 2016
# Diana Dünki <diana.duenki@divio.ch>, 2015
# Loriana Indelicato <loriana.indelicato@divio.ch>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: German (http://www.transifex.com/divio/djangocms-admin-style/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Home"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Löschen"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "Löschen von %(object_name)s '%(escaped_object)s' würde verwandte Objekte ebenfalls löschen, aber ihr Account hat nicht die nötigen Berechtigungen um folgende Objekte zu löschen:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "Das Löschen von %(object_name)s '%(escaped_object)s' würde das Löschen von folgenden geschützten Objekten erfordern:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen möchten? Alle folgenden Beziehungen werden gelöscht:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Ja, ich bin sicher."

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr "Nein, zurück gehen"

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Mehrere Objekte löschen"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "Das Löschen der selektierten %(objects_name)s würde verwandte Objekte ebenfalls löschen, aber ihr Account hat nicht die nötigen Berechtigungen um folgende Typen von Objekten zu löschen:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "Das Löschen des selektierten %(objects_name)s würde folgende geschützten Objekte ebenfalls löschen:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Sind Sie sicher, dass Sie das selektierte %(objects_name)s löschen möchten? Alle folgenden Objekte und ihre Beziehungen werden gelöscht:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Django Administration"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr "Dokumentation"

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Passwort ändern"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Ausloggen"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Öffne"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "meine Seite"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Django Seiten Adminstration"


================================================
FILE: djangocms_admin_style/locale/en/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-04-26 12:17+0000\n"
"Last-Translator: Stefan Foulis <stefan.foulis@gmail.com>\n"
"Language-Team: English (http://www.transifex.com/divio/djangocms-admin-style/"
"language/en/)\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Home"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Delete"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
"following protected related objects:"
msgstr ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
"following protected related objects:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Yes, I'm sure"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Delete multiple objects"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Django Administration"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Change password"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Log out"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Open"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "my site"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Django site admin"


================================================
FILE: djangocms_admin_style/locale/es/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Paulo <paulo.alvarado@divio.ch>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/divio/djangocms-admin-style/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Inicio"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Eliminar"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación de objetos relacionados, pero su cuenta no tiene permiso para borrar los siguientes tipos de objetos:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "La eliminación de %(object_name)s %(escaped_object)s requeriría eliminar los siguientes objetos relacionados protegidos:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s\"? Se borrarán los siguientes objetos relacionados:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Sí, estoy seguro"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Eliminar múltiples objetos."

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "La eliminación del %(objects_name)s seleccionado resultaría en el borrado de objetos relacionados, pero su cuenta no tiene permisos para borrar los siguientes tipos de objetos:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "La eliminación de %(objects_name)s seleccionado requeriría el borrado de los siguientes objetos protegidos relacionados:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "¿Está usted seguro que quiere eliminar el %(objects_name)s seleccionado? Todos los siguientes objetos y sus elementos relacionados serán borrados:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Administración de Django"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Cambiar contraseña"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Terminar sesión"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Abrir"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "mi sitio"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Sitio de administración de Django"


================================================
FILE: djangocms_admin_style/locale/fr/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Frigory33 <chironsylvain@orange.fr>, 2016
# Martin Koistinen <martin.koistinen@divio.ch>, 2015
# Thibault Jamme <teebo@glaine.net>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: French (http://www.transifex.com/divio/djangocms-admin-style/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Accueil"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Supprimer"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "Supprimer l'objet %(object_name)s « %(escaped_object)s » devrait provoquer la suppression des objets liés, mais votre compte n'a pas les permissions nécessaires pour supprimer les types d'objets suivants :"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquera la suppression des objets protégés liés suivants :"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Êtes-vous sûr(e) de vouloir supprimer l'objet %(object_name)s « %(escaped_object)s » ? Tous les éléments liés suivants seront supprimés :"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Oui, j'en suis sûr"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Supprimer plusieurs objets"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "Supprimer l'objet sélectionné %(objects_name)s devrait provoquer la suppression des objets liés, mais votre compte n'a pas les permissions nécessaires pour supprimer les types d'objets suivants :"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "Supprimer l'objet sélectionné %(objects_name)s provoquera la suppression des objets protégés liés suivants :"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Êtes-vous sûr(e) de vouloir supprimer l'objet sélectionné %(objects_name)s ? Tous les objets suivants et les éléments liés seront supprimés :"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Administration de Django"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Changer de mot de passe"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Se déconnecter"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Ouvrir"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "mon site"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Administrateur du site Django"


================================================
FILE: djangocms_admin_style/locale/it/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# yakky <i.spalletti@nephila.it>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/divio/djangocms-admin-style/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Home"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Cancella"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la cancellazione di oggetti collegati, ma questo account non ha i permessi per cancellare i seguenti tipi di oggetti:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "La cancellazione di %(object_name)s '%(escaped_object)s' richiederebbe l'eliminazione dei seguenti oggetti protetti correlati:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Confermi la cancellazione di %(object_name)s '%(escaped_object)s' ? Saranno rimossi tutte le loro voci correlate:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Sono sicuro"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Cancella più oggetti"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "Per eliminare l'elemento %(objects_name)s selezionato è necessario rimuovere anche gli oggetti correlati, ma il tuo account non dispone dell'autorizzazione a eliminare i seguenti tipi di oggetti:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "L'eliminazione dell'elemento %(objects_name)s selezionato richiederebbe la rimozione dei seguenti oggetti protetti correlati:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Confermi la cancellazione dell'elemento %(objects_name)s selezionato? Saranno rimossi tutti i seguenti oggetti e le loro voci correlate:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Amministrazione Django"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Cambia la password"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Annulla l'accesso"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Apri"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "Il mio sito"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Amministrazione sito Django"


================================================
FILE: djangocms_admin_style/locale/lt/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Matas Dailyda <matas@dailyda.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: Lithuanian (http://www.transifex.com/divio/djangocms-admin-style/language/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lt\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Pradinis"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Pašalinti"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "%(object_name)s '%(escaped_object)s' pašalinimas panaikintų susijusius objektus, bet Jūsų vartotojas neturi teisių pašalinti sekančių ojbektų tipų:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "Kad pašalinti  %(object_name)s '%(escaped_object)s' reiktų pašalinti susijusius sekančius apsaugotus objektus:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Ar tikrai norite pašalinti %(object_name)s \"%(escaped_object)s\"? Visi susiję sekantys objektai bus pašalinti:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Taip, esu tikras"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Pašalinti kelis objektus"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "%(objects_name)s pašalinimas panaikintų susijusius objektus, bet Jūsų vartotojas neturi teisių pašalinti sekančių ojbektų tipų:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "%(objects_name)s pašalinimas reikalautų panaikinti susijusius apsaugotus sekančius objektus:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Ar tikrai norite pašalinti pasirinktus %(objects_name)s? Visi sekantys objektai ir susiję vienetai bus pašalinti:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Django administravimas"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Keisti slaptažodį"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Atsijungti"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Atidaryti"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "mano tinklalapį"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Django tinklalapio administravimas"


================================================
FILE: djangocms_admin_style/locale/ru/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Mikhail Kolesnik <mike@openbunker.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/divio/djangocms-admin-style/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Домой"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Удалить"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "Удаление %(object_name)s '%(escaped_object)s' приведет к удалению связанных объектов, но ваша учетная запись не имеет прав для удаления следующих типов объектов:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "Удаление %(object_name)s '%(escaped_object)s' потребует удаления следующих связанных защищенных объектов:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Вы уверены, что хотите удалить %(object_name)s \"%(escaped_object)s\"? Все перечисленные связанные объекты также будут удалены:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Да, я уверен"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Удалить несколько объектов"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "Удаление выбранной %(objects_name)s приведет к удалению связанных объектов, но ваша учетная запись не имеет прав на удаление следующих типов объектов:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "Удаление выбранных %(objects_name)s потребует удаления следующих защищённых связанных объектов:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Вы уверены, что хотите удалить выбранные %(objects_name)s? Все перечисленные объекты и связанные с ними элементы будут удалены:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Администрирование Django"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Сменить пароль"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Выйти"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Открыть"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "мой сайт"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Администрирование Django сайта"


================================================
FILE: djangocms_admin_style/locale/uk/LC_MESSAGES/django.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Mikhail Kolesnik <mike@openbunker.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: django CMS Admin Style\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-20 15:12+0200\n"
"PO-Revision-Date: 2016-06-20 13:12+0000\n"
"Last-Translator: Angelo Dini <finalangeljp@hotmail.com>\n"
"Language-Team: Ukrainian (http://www.transifex.com/divio/djangocms-admin-style/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: uk\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: templates/admin/delete_confirmation.html:9
#: templates/admin/delete_selected_confirmation.html:9
msgid "Home"
msgstr "Домівка"

#: templates/admin/delete_confirmation.html:13
msgid "Delete"
msgstr "Видалити"

#: templates/admin/delete_confirmation.html:20
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
"related objects, but your account doesn't have permission to delete the "
"following types of objects:"
msgstr "Видалення %(object_name)s '%(escaped_object)s' призведе до видалення пов'язаних об'єктів, але ваш реєстраційний запис не має дозволу видаляти наступні типи об'єктів:"

#: templates/admin/delete_confirmation.html:28
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the"
" following protected related objects:"
msgstr "Видалення %(object_name)s '%(escaped_object)s' вимагатиме видалення наступних пов'язаних об'єктів:"

#: templates/admin/delete_confirmation.html:36
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
"All of the following related items will be deleted:"
msgstr "Ви впевнені, що хочете видалити %(object_name)s \"%(escaped_object)s\"? Всі пов'язані об'єкти, що перелічені, будуть видалені:"

#: templates/admin/delete_confirmation.html:41
#: templates/admin/delete_selected_confirmation.html:46
msgid "Yes, I'm sure"
msgstr "Так, я впевнений"

#: templates/admin/delete_confirmation.html:42
msgid "No, take me back"
msgstr ""

#: templates/admin/delete_selected_confirmation.html:12
msgid "Delete multiple objects"
msgstr "Видалити кілька об'єктів"

#: templates/admin/delete_selected_confirmation.html:19
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would result in deleting related "
"objects, but your account doesn't have permission to delete the following "
"types of objects:"
msgstr "Видалення обраних %(objects_name)s вимагатиме видалення пов'язаних об'єктів, але ваш обліковий запис не має прав для видалення таких типів об'єктів:"

#: templates/admin/delete_selected_confirmation.html:27
#, python-format
msgid ""
"Deleting the selected %(objects_name)s would require deleting the following "
"protected related objects:"
msgstr "Видалення обраних %(objects_name)s вимагатиме видалення наступних захищених пов'язаних об'єктів:"

#: templates/admin/delete_selected_confirmation.html:35
#, python-format
msgid ""
"Are you sure you want to delete the selected %(objects_name)s? All of the "
"following objects and their related items will be deleted:"
msgstr "Ви впевнені, що хочете видалити вибрані %(objects_name)s? Всі об'єкти, що перелічені, та пов'язані з ними елементи будуть видалені:"

#: templates/admin/inc/branding.html:6 templates/admin/inc/branding.html:9
msgid "Django Administration"
msgstr "Адміністрування Django"

#: templates/admin/inc/branding.html:15
msgid "Documentation"
msgstr ""

#: templates/admin/inc/branding.html:22
msgid "Change password"
msgstr "Змінити пароль"

#: templates/admin/inc/branding.html:28
msgid "Log out"
msgstr "Вийти"

#: templates/admin/inc/branding.html:36
msgid "Open"
msgstr "Відкрити"

#: templates/admin/inc/branding.html:36
msgid "my site"
msgstr "мій сайт"

#: templates/admin/inc/title.html:2
msgid "Django site admin"
msgstr "Aдміністрування Django сайта"


================================================
FILE: djangocms_admin_style/models.py
================================================


================================================
FILE: djangocms_admin_style/sass/components/_base.scss
================================================
//##############################################################################
// BASE

body {
    background-color: $gray-lightest;
    h1 {
        margin-left: 0 !important;
    }
    .module {
        h2 {
            padding-left: 0;
        }
        p {
            padding-left: 0;
            padding-right: 0;
            margin-left: 0 !important;
        }
        table {
            margin-bottom: 20px !important;
        }
    }
}


// general
body,
p {
    font-family: $base-font-family !important;
}

body,
select,
input,
textarea {
    color: $gray-darkest;
}

// disable clear X on IE #292
input::-ms-clear {
    display: none;
}

h1 {
    color: $gray-darkest;
    font-size: $font-size-large !important;
    font-weight: bold;
    margin: 0 10px 25px !important;
}
h2 {
    color: $gray-darkest;
    font-size: 130%;
    font-weight: bold;
    line-height: 1.75em;
    margin: 20px 10px 45px;
}
h3 {
    color: $gray-darkest;
    font-size: 120%;
    font-weight: bold;
}
h4 {
    color: $gray-darkest;
    font-size: 110%;
    font-weight: bold;
}
h5 {
    color: $gray-darkest;
    font-size: 100%;
}
h6 {
    color: $gray-darkest;
    font-size: 100%;
}

ul,
ol {
    margin-left: 20px;
}

// buttons and links
a.btn {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
}

.button.default, input[type=submit].default, .submit-row input.default {
    float: right;
}

.submit-row {
    display: block;
    text-align: right;
    input {
        display: inline-block;
    }
    .deletelink-box, .deletelink {
        display: inline-block;
        float: left;
    }
    a.deletelink {
        margin-left: 10px;
        display: inline-block;
    }
    .btn {
        padding: 10px 20px !important;
        height: 36px !important;
        box-sizing: border-box;
        display: inline-flex !important;
        vertical-align: top;
        align-items: center;
        & + .btn {
            margin-left: 10px;
        }
    }
}
.cms-btn-group {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    display: inline-block;
    padding: 10px 20px !important;
    // link make sure that hover color on basic and advanced buttons is overwritten #242
    &:link:hover {
        color: $btn-default-color !important;
    }
    // first-child stands for basic button
    &:first-child {
        border-radius: 3px 0 0 3px !important;
    }
    // last-child stands for advanced button
    &:last-child {
        margin-left: -4px;
        border-radius: 0 3px 3px 0 !important;
    }
}
.cms_btn-active {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    display: block;
    color: $font-color;
    padding: 10px 20px !important;
}
.cms-btn-active {
    box-shadow: $btn-active-shadow;
    background-color: $btn-cms-active !important;
    &:hover {
        background-color: $btn-cms-active-hover !important;
        border-color: $btn-cms-active-hover-border !important;
    }
}
a,
a:link {
    color: $color-primary;
    text-decoration: none;
    &:hover,
    &:active {
        color: $color-primary;
    }
    &:visited {
        color: $color-primary;
    }
}
// make sure that cancel link has correct height #261
a.button.cancel-link {
    float: right;
    font-family: $base-font-family;
    display: inline-block;
    line-height: 34px !important;
    height: 34px !important;
    margin-left: 10px;
    margin-right: 10px;
    margin-top: 0;
    padding: 0 20px !important
}
// resets general list styles for object-tool list elements
.colM ul:not(.object-tools):not(.messagelist) {
    margin: 20px 0 25px;
    border-bottom: solid 1px $gray-lighter;
    &:empty {
        border-bottom: 0;
    }
    li {
        color: $gray-darkest;
        font-size: $font-size-normal;
        font-weight: bold;
        list-style-type: none;
        padding: 10px 0;
        border-top: solid 1px $gray-lighter;
    }
    // 2nd level list
    ul {
        margin: 10px 0 -10px;
        border-bottom: 0;
        li {
            font-weight: normal;
            padding-left: 2%;
        }
        // 3rd level list
        ul {
            margin-left: 20px;
            li {
                padding-left: 0;
                padding-right: 0;
            }
        }
    }
}

p,
.description,
.timezonewarning {
    font-size: $font-size-normal !important;
    color: $gray !important;
    font-weight: normal;
    margin-bottom: 10px;
    padding-left: 0;
}
.datetimeshortcuts {
    font-size: $font-size-small !important;
}

code {
    color: $gray;
    font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
    font-size: 11px;
    background: inherit;
    strong {
        color: #930;
    }
}

pre {
    color: $gray;
    font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
    font-size: 11px;
    background: inherit;
    &.literal-block {
        background: $gray-lighter;
    }
}

div hr {
    margin: 20px 0;
    border: none;
    background: $gray-lighter;
}

strong {
    font-weight: bold;
}
.small,
small {
    font-size: $font-size-small;
    margin-top: 0;
}

.mini {
    font-size: 11px;
}

.clearfix:after {
    content: ".";
    display: block;
    visibility: hidden;
    clear: both;
    height: 0;
}

// error notes and messages
.errornote {
    display: inline-block;
    font-weight: normal;
    color: $color-danger !important;
    font-size: $font-size-normal !important;
    line-height: $line-height-normal;
    width: calc(80% - 20px);
    margin-bottom: 20px;
    padding: 10px;
    border: 0;
    border-radius: $border-radius-base;
    background: none;
    background-color: $color-danger-ultralight;
}
ul.errorlist {
    color: $color-danger !important;
    margin-bottom: 10px !important;
    background-color: transparent !important;
    border: 0 !important;
    a {
        &,
        &:link,
        &:hover,
        &:focus,
        &:visited {
            color: $gray-darkest;
        }
    }
    li {
        color: $color-danger !important;
        font-size: $font-size-normal !important;
        font-weight: normal !important;
        padding: 0 !important;
        margin: 0 !important;
        border: 0 !important;
        // hides error icon which #207
        background: none !important;
    }
}
.breadcrumbs + ul.messagelist {
    // updates messagelist position if there are breadcrumbs
    margin-top: $messages-breadcrumb-margin-top !important;
}
ul.messagelist {
    position: absolute;
    top: 0;
    left: 20%;
    right: 20%;
    margin-top: $messages-margin-top !important;
    z-index: 5;
    li {
        position: relative;
        color: $gray-lighter;
        font-size: $font-size-normal;
        font-weight: normal;
        padding: 5px 10px 5px 45px;
        background-image: none;
        background-color: $gray-darker !important;
        border-bottom: 0;
        &:before {
            position: absolute;
            left: 10px;
            font-size: 18px !important;
            margin-right: 20px !important;
        }
        &.success {
            // background image icon is replaced by font icon
            background-image: none;
            &:before {
                color: $color-success;
            }
        }
        &.error {
            // background image icon is replaced by font icon
            background-image: none;
            &:before {
                color: $color-danger;
            }
        }
        &.warning {
            // background image icon is replaced by font icon
            background-image: none;
            &:before {
                color: $color-warning;
            }
        }
        &.info {
            // background image icon is replaced by font icon
            background-image: none;
            &:before {
                color: $color-primary;
            }
        }
    }
}
// set image size to show retina images with correct size #212
img[src*="icon-no"],
img[src*="icon-yes"],
img[src*="icon-unknown"] {
    width: 16px;
    height: 16px;
}

// FIXME: These are actually fixes in the django CMS code base but setting here too for a quicker release
#sitemap li .cont {
    overflow: visible !important;
}


================================================
FILE: djangocms_admin_style/sass/components/_changelist.scss
================================================
//##############################################################################
// CHANGELIST

// resets form white background color #77
#changelist-form,
#changelist-search,
#changelist form,
#content-related form {
    margin-top: 0;
    margin-bottom: 0;
    padding: 0;
    background-color: transparent;
    box-shadow: none;
}
#image_container {
    margin-bottom: 5px;
}
#content-related {
    h3 {
        color: $gray-darker;
        font-size: $font-size-large !important;
        margin-top: 15px;
        margin-bottom: 10px;
    }
}
.change-list {
    min-height: inherit;
    background-image: none !important;
    .filtered {
        background: none !important;
    }
    .results,
    #toolbartable {
        box-shadow: $base-box-shadow;
        table {
            box-shadow: none;
        }
    }
    .results #result_list {
        box-shadow: none;
        .related-widget-wrapper a.change-related {
            margin-right: 0;
            margin-left: 5px;
        }
    }
    #toolbartable .paginator {
        box-shadow: none !important;
    }
    .paginator {
        color: $gray-light !important;
        // important is needed to make sure that paginator has correct font size #288
        font-size: $font-size-small !important;
        min-height: 20px;
        padding: 5px $paginator-padding !important;
        background-color: $white !important;
        .this-page {
            font-weight: normal;
            padding: 0;
        }
    }
    #changelist {
        display: block;
        width: auto !important;
        #action-toggle {
            vertical-align: middle;
        }
        .results {
            box-shadow: $base-box-shadow;
        }
        &.filtered {
            table {
                border: 0;
            }
            // adds max height on filter to make it more usable for very long filters #263
            #changelist-filter {
                overflow-y: auto;
                width: $filtered-filter-width !important;
                max-height: 585px;
                margin-left: $filtered-filter-margin;
                padding-right: $filtered-filter-padding;
                padding-left: 0;

                h2 {
                    letter-spacing: 0;
                }

                h3 {
                    font-weight: bold;
                }
            }
            .results,
            .paginator,
            .results + .paginator,
            #toolbartable .paginator {
                // removes box shadow top on paginator
                clip: rect(0, 99999px, 99999px, -2px);
            }
            .paginator {
                // calculates correct width because of margin right
                width: calc(100% - #{$filter-changelist-margin}) !important;
                border-right: 0;
                box-shadow: $base-box-shadow;
            }
            .actions {
                margin-right: $filtered-filter-width !important;
            }

            .changelist-form-container {
                position: relative;
                display: inline-block;
                width: calc(100% - #{$filter-changelist-margin}) !important;

                .results + .paginator {
                    box-sizing: border-box;
                    width: 100% !important;
                }
            }
        }
        table {
            tbody {
                th,
                td {
                    white-space: nowrap;
                    a,
                    a:link,
                    a:visited,
                    a:link:visited {
                        color: $color-primary;
                    }
                }
                .noItemsRow {
                    th,
                    td {
                        padding: 12px 0 12px 15px !important;
                    }
                }
                .drag {
                    max-width: 10px;
                    height: 36px;
                    margin: 0 21px;
                    cursor: move !important;
                    background: url("../img/drag.png");
                    background-size: 5px;
                }
                input[type="checkbox"],
                input[type="radio"] {
                    vertical-align: baseline;
                }
            }
        }
        #toolbar {
            overflow: hidden;
            height: auto;
            min-height: 30px;
            margin: 0 30px 10px 0 !important;
            padding: 3px 3px 3px 0;
            border: 0 !important;
            background: none !important;
            form label {
                display: inline-block;
                font-size: 100%;
                min-width: auto;
                padding: 0;
            }
            @at-root #toolbar #changelist-search form #searchbar,
                form #searchbar {
                font-size: $font-size-small;
                vertical-align: middle;
                box-sizing: border-box;
                width: auto !important;
                // makes sure that search doesn't jumps to new line #155
                max-width: 257px !important;
                // django 1.9
                height: 36px !important;
                padding: 9px 5px !important;
                border-radius: 3px !important;
            }
            // makes sure that if admin cations are visible that toolbar floats to position next to actions #275, #285
            &.actions-visible {
                float: left;
                margin-bottom: 5px !important;
            }
        }
        #changelist-filter {
            // resets position to float filter next to changelist
            position: static;
            float: right;
            min-height: 100%;
            margin-top: 8px;
            border-left: 0;
            border-top-right-radius: $border-radius-base;
            border-bottom-right-radius: $border-radius-base;
            background-color: $gray-lightest !important;
            h2,
            h3 {
                margin-bottom: 15px !important;
                padding-bottom: 10px !important;
                padding-left: 0 !important;
                border-bottom: solid 1px $gray-lighter;
            }
            h2 {
                color: $gray;
                font-size: $font-size-normal !important;
                font-weight: normal;
                text-transform: uppercase;
                padding: 2px 9px;
                background: none;
            }
            h3 {
                font-size: $font-size-normal;
                font-weight: bold;
                margin: 15px 0 10px !important;
                padding-bottom: 7px !important;
            }
            ul {
                font-size: $font-size-small;
                margin-bottom: 10px;
                margin-left: 0 !important;
                padding-left: 0;
                padding-bottom: 0;
                border-bottom: none;
            }
            li {
                font-size: $font-size-normal;
                margin-bottom: 15px;
                &.selected {
                    font-weight: bold;
                    margin-left: 0 !important;
                    padding-left: 0 !important;
                    border-left: 0 !important;
                    a {
                        color: $color-primary !important;
                    }
                }
            }
        }
        .actions {
            color: $gray-light;
            padding: 0 0 10px 0;
            border: none;
            background: none;
            select {
                white-space: nowrap;
                // makes sure that action select doesn't jumps to new line #155
                width: 257px !important;
                font-size: 12px;
                margin-top: 3px;
                margin-right: 10px;
                padding: 6px 40px 6px 20px;
                border: 1px solid $gray-lighter;
                border-radius: $border-radius-base;
            }
            label {
                display: inline-block;
                // make sure that only icon is displayed
                font: 0/0 a;
                margin-bottom: 0;
                margin-left: 0;
            }
            button {
                font-family: $base-font-family;
                font-size: $font-size-small;
                vertical-align: bottom;
                height: 36px;
                margin-top: 0;
                margin-right: 10px;
                margin-bottom: 0;
                padding: 10px 15px !important;
                box-shadow: none;
            }
            .action-counter {
                display: inline-block !important;
                font-size: $font-size-small;
                line-height: 36px;
                vertical-align: bottom;
            }
        }
        .toplinks {
            clear: both;
            overflow: hidden;
            margin-top: 20px !important;
            margin-bottom: 20px !important;
            border-top: 0;
            border-bottom: 0 !important;
            background: none;
            li {
                display: inline;
                float: left;
                color: $gray-darkest;
                font-size: $font-size-normal;
                font-weight: normal;
                text-transform: uppercase;
                margin-left: 25px;
                cursor: pointer;
                &:first-child {
                    margin-left: 0;
                }
            }
            a {
                display: block;
                position: relative;
                color: $color-primary;
                font-size: $font-size-normal;
                font-weight: normal;
                text-transform: uppercase;
            }
        }
        .results table {
            box-shadow: none !important;
        }
        .results + .paginator,
        #toolbartable .paginator,
        #has-filters ~ .paginator {
            // removes box shadow top on paginator
            clip: rect(0, 99999px, 99999px, -2px);
        }
        .paginator {
            // calculates correct width because of margin left and right
            width: calc(100% - 30px);
            border-top: none;
            background: none;
            box-shadow: $base-box-shadow !important;
        }
    }
    #changelist-search {
        #limit_search_to_folder {
            vertical-align: middle;
            margin-top: 2px;
            // adds space between search field and checkbox #216
            margin-left: 10px;
            + label {
                display: inline-block !important;
                color: $gray-light !important;
                font-size: $font-size-small !important;
                text-transform: none;
            }
        }
        .small {
            display: inline-block;
            margin-top: 5px;
        }
        input[type="checkbox"] {
            display: block;
        }
        input[type="submit"] {
            @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
            vertical-align: middle;
            text-indent: -9999px;
            box-sizing: border-box;
            margin-left: 10px !important;
            padding: 10px 16px !important;
            background-image: url("../img/icon_search_white@2x.png") !important;
            background-repeat: no-repeat !important;
            background-position: center !important;
            background-size: 20px !important;
            // django 1.9
            box-shadow: none !important;
            &:active {
                background-image: url("../img/icon_search_white@2x.png") !important;
            }
        }
        label {
            display: none !important;
            margin-bottom: 0;
            img {
                visibility: hidden;
            }
        }
    }
    #changelist-filter-button {
        color: $gray-light;
        font-size: $font-size-normal;
        text-transform: uppercase;
        width: 175px;
        margin-bottom: 5px;
        padding-left: 25px;
        border-left: 0;
        background: url("../img/icon_arrow_down.png") no-repeat left center;
        background-size: 25px;
        + #changelist-filter {
            position: absolute;
            top: 30px;
            margin-top: 1px;
            padding-left: 15px !important;
        }
    }
    // select field when multiple sites are available #201
    #site-selector {
        margin-top: -18px;
        margin-left: 0;
    }
}

#result_list {
    margin-bottom: 0 !important;
    tr[style*="background"] {
        background: $color-primary-light !important;
    }
    .drag {
        cursor: move !important;
    }
}
.djangocms-admin-style {
    table {
        margin-bottom: 0 !important;
    }
    thead {
        th {
            font-size: $font-size-normal;
            text-transform: uppercase;
            border-color: $gray-lighter;
            background-color: $white;
            border-top: none;
            &.sorted {
                background-color: $white;
            }
            &.action-checkbox-column {
                padding: 0 15px !important;
            }
            .text {
                float: none;
                padding-right: 0;
                a {
                    padding: 0 !important;
                }
            }
            .sortoptions {
                display: inline-block;
                float: right;
                padding-top: 0;
                a.sortremove {
                    &:after {
                        display: none;
                    }
                }
            }
        }
    }
}
#toolbartable {
    .paginator {
        background-color: transparent;
        box-shadow: none;
        .this-page {
            color: $gray-light;
            font-size: $font-size-small;
            font-weight: normal;
            padding: 0;
        }
    }
}

a.lang-code {
    color: $white !important;
    font-size: $font-size-small !important;
    font-weight: bold !important;
    text-transform: uppercase;
    margin-right: 10px !important;
    padding: 2px 8px !important;
    border: solid 1px $gray-lighter;
    border-radius: 10px !important;
    background-color: $gray-lighter;
    &:hover {
        color: $white !important;
    }
    &.current.active {
        color: $color-primary !important;
        border-color: $color-primary;
        background-color: $white !important;
        &:hover {
            color: $color-primary !important;
        }
    }
    &.active {
        color: $white !important;
        border-color: $color-primary;
        background-color: $color-primary !important;
        &:hover {
            color: $white !important;
        }
    }
}
.collapse {
    display: none;
}


================================================
FILE: djangocms_admin_style/sass/components/_cms-update.scss
================================================
.cms-update-message {
    position: relative;
    margin-bottom: 30px;
    padding: 10px 20px 10px 10px;
    border: 1px solid $color-primary;
    border-radius: 4px;
    background-color: rgba($color-primary, 0.1);

    .close {
        position: absolute;
        top: 0;
        right: 0;
        line-height: 20px;
        text-align: center;
        width: 20px;
        height: 20px;
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_cmsplaceholders.scss
================================================
//##############################################################################
// CMS PLACEHOLDERS

.plugin-holder {
    background: transparent url("../img/pluginlist-holder-bg.png") repeat-y !important;
    h2 {
        margin-bottom: 0 !important;
    }
    .plugin-list-holder {
        width: 285px;
        .text {
            width: 240px;
        }
        ul.plugin-list li.active {
            background: url("../img/bg-pattern-light.jpg") $gray-lighter repeat;
            &:hover {
                background: $white url("../../cms/images/sitemap-li-bg.jpg") repeat-x 0 -100px;
            }
        }
    }
}
.plugin-editor > iframe {
    min-height: 600px;
}


================================================
FILE: djangocms_admin_style/sass/components/_content.scss
================================================
//##############################################################################
// CONTENT

html {
    // makes sure that content-related has a height of 100%
    position: relative;
}

// containers
body {
    #container {
        position: static;
        width: auto !important;
        // makes sure that object tools not overlaps title #84
        min-width: 768px !important;
        padding-top: 0 !important;
        .breadcrumbs {
            position: absolute;
            top: 0;
            right: 3%;
            left: 3%;
            color: $gray !important;
            font-size: $font-size-normal;
            margin-top: $toolbar-height + 2;
            padding: $breadcrumb-padding 10px;
            border-top: 0;
            border-bottom: 1px solid $gray-lighter;
            background: transparent !important;
            a {
                color: $color-primary;
                &:first-child {
                    padding-left: 0;
                }
                &:hover {
                    color: $color-primary-dark !important;
                    text-decoration: none;
                }
            }
        }
        .breadcrumbs + .messagelist + #content,
        .breadcrumbs + #content {
            // calculates correct width by removing margin left and right
            margin-left: calc(3% + 10px) !important;
        }
    }
}
ul.messagelist + #content {
    // plus messages list height
    margin-top: $content-margin-top + 27px !important;
}
#content {
    width: auto !important;
    min-width: 0 !important;
    margin: $content-margin-top 3% 0 !important;
    padding: 0 !important;
    &.colMS {
        margin-right: 35% !important;
    }
    .module {
        padding: 0;
    }
}
#sitemap {
    clear: both;
}
#applications-group {
    h2 {
        margin-bottom: 30px;
    }
    .module {
        overflow: visible;
    }
    // reset table styles in applications group #193
    table {
        width: 100% !important;
        margin-left: 0 !important;
        box-shadow: none;
    }
}

// module
.module {
    @include box();
    margin-bottom: 0;
    background: none !important;
    &.collapse {
        display: block;
        margin-bottom: 0;
    }
    h2 {
        color: $gray-darkest;
        font-size: $font-size-large !important;
        font-weight: normal;
        margin-top: 0;
        margin-bottom: 15px;
        padding: 10px;
        border-bottom: 1px solid $gray-lighter;
        background: none;
    }
    caption {
        color: $gray;
        font-size: $font-size-normal !important;
        font-weight: normal;
        line-height: $font-size-normal;
        text-transform: uppercase;
        margin: 0 0 10px 10px;
        padding: 0;
        background: none;
        a.section,
        a.section:link,
        a.section:visited {
            color: $gray;
        }
    }
    table {
        margin: 0;
        padding: 0;
        thead th {
            padding: 20px 10px;
        }
        th {
            line-height: 13px;
            padding: 16px 10px;
        }
        td {
            line-height: 13px;
            padding: 8px 0 8px 40px;
        }
    }
}

// inlines
.inline-group {
    margin-top: 10px; // consistency with django 1.8
}
.module h2,
.module caption,
.inline-group h2 {
    color: $gray-darkest;
    font-size: $font-size-normal;
    font-weight: normal;
    line-height: $font-size-normal;
    padding-left: 0;
    letter-spacing: 0;
    background: none;
}
.inline-group h2 {
    text-transform: none;
}
.djangocms-admin-style .inline-group {
    @include box();
    overflow: auto;
    padding: 0;
    border: 0;
    .module {
        padding: 0;
        border: none !important;
        border-radius: 0;
        background: none !important;
        box-shadow: none;
        overflow: auto;
        h2 {
            font-size: $font-size-large !important;
            margin-bottom: 10px;
            padding-top: 0;
        }
        .add-row a {
            color: $color-success;
            border-bottom: none;
            &:before {
                color: $color-success;
            }
            &:hover {
                color: $color-success-dark !important;
            }
        }
        .add-row td {
            padding: 10px 0 !important;
            border-bottom: solid 1px $gray-lighter !important;
            background: none;
        }
        tr.add-row:hover {
            background: none;
        }
        .form-row {
            border-bottom: none !important;
        }
    }
    .add-row {
        border-bottom: 0 !important;
        &,
        td {
            border-bottom: none;
            background: none !important;
        }
        a {
            color: $color-success;
            font-size: $font-size-normal !important;
            padding-left: 0 !important;
            background: none !important;
            &:before {
                color: $color-success;
            }
        }
    }
}
#taggit_taggeditem_items-group {
    width: 80%;
    h2 {
        font-size: $font-size-large;
        font-weight: bold;
    }
    h3 {
        color: $gray-darkest;
        margin-top: 20px;
    }
    .module {
        width: 100%;
        margin: 0;
        padding: 10px 0;
        border-top: solid 1px $gray-lighter !important;
        border-bottom: solid 1px $gray-lighter !important;
    }
    .add-row {
        margin-top: 10px;
    }
    .inline-deletelink {
        color: $gray-darkest !important;
        // make sure that only icon is displayed
        font: 0/0 a;
        text-indent: inherit;
        &:before {
            font-size: $font-size-small;
        }
    }
}
.inline-related {
    margin-bottom: 5px;
    h3 {
        color: $gray;
        font-weight: normal;
        margin-bottom: 0;
        padding: 0;
        border-bottom: none;
        background: none;
        b,
        span {
            font-size: $font-size-normal;
            font-weight: normal;
        }
        span.delete label {
            // float label next to checkbox on tagged items #253
            display: inline-block;
            line-height: 20px;
            margin: 0 !important;
        }
        span.delete input {
            top: -3px;
            min-height: 0px;
        }
    }
    table {
        // calculates the correct width by removing margin left and right
        width: calc(100% - 4px) !important;
        margin: 0 2px !important;
    }
}
.inline-group[data-inline-type="stacked"] .inline-related {
    margin: 25px 5px 10px;
    box-shadow: $base-box-shadow;
    h3 {
        padding: 20px 25px;
        background: $gray-lightest;
        b,
        span {
            font-size: $font-size-large;
        }
        span {
            color: $black;
        }
    }
    fieldset.module {
        padding: 20px 25px !important;
    }
    input.vTextField,
    input.vURLField,
    textarea.vLargeTextField,
    .selector .selector-filter input {
        width: 100% !important;
    }
    .selector .selector-available h2,
    .selector .selector-chosen h2 {
        font-size: $font-size-normal !important;
        padding-top: 10px;
    }
}
.djangocms-admin-style .submit-row {
    margin: 10px -25px 0;
    padding: 20px 25px 0;
    border: 0;
    border-top: 1px solid $gray-lighter;
    border-radius: $border-radius-base;
    background: none;
    box-shadow: none;
    .deletelink-box {
        margin: 0;
    }
    .deletelink {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
        @include icon(trash-o);
        display: block;
        padding: 9px 20px !important;
        height: 36px;
        box-sizing: border-box;
    }
    input[type="submit"] {
        padding: 10px 20px !important;
        height: 36px;
        &.default {
            margin-left: 10px;
            padding: 10px 20px !important;
        }
    }
    input {
        width: auto !important;
        height: 36px;
        margin-left: 10px;
    }
}

// filter horizontal m2m
.sortedm2m-container {
    width: 100% !important;
    // make sure that list items don't have a fixed width to not break mobile view #282
    ul.sortedm2m,
    ul.sortedm2m li {
        width: 100%;
    }
    .sortedm2m {
        min-height: initial !important;
        // shows full list content without vertical scrollbar #284
        max-height: initial !important;
        padding: 10px 0 !important;
        border: 0 !important;
        li {
            white-space: initial;
            padding: 0 !important;
            border: 0 !important;
        }
        // make sure that if label breaks to new line that it is aligned #283
        label {
            // make sure that link after label doesn't break to new line #287
            display: inline-block;
            position: relative;
            line-height: 20px;
            padding-left: 20px !important;
            input {
                position: relative;
                top: auto;
                margin-left: -20px;
            }
        }
    }
    input[type="checkbox"],
    label {
        vertical-align: middle !important;
        span {
            // sets correct font size for labels #204
            font-size: 16px !important;
        }
    }
    .selector-filter {
        position: relative;
        width: 100% !important;
        input {
            width: calc(100% - 50px) !important;
            margin: 0px 50px 5px 0 !important;
        }
        img {
            position: absolute;
            right: 0;
            margin: 0;

            order: 2;
        }
    }
}
.selector {
    width: 100%;
    .selector-available,
    .selector-chosen {
        box-sizing: border-box;
        width: calc(47.5% - 5px);
        padding: 0 10px 5px;
        border: 1px solid $gray-lighter;
        border-radius: $border-radius-base;
        background-color: $white;
        h2 {
            color: $gray !important;
            font-size: $font-size-normal !important;
            font-weight: normal;
            line-height: $line-height-normal;
            text-transform: uppercase;
            margin-bottom: 5px;
            border: none;
            background: none !important;
        }
        input {
            width: 252px;
            margin: -5px 0 2px;
        }
        select[multiple] {
            height: 17.2em !important;
            background: $white !important;
        }
        .help-icon,
        img {
            width: 15px !important;
            height: 15px !important;
        }
    }
    .selector-chosen {
        select[multiple] {
            height: 248px !important;
        }
    }
    .selector-add,
    .selector-remove {
        font-size: 0;
        text-indent: 0;
        width: 22px;
        height: 22px;
        background: none;
        opacity: 0.5;
        &:before {
            font-size: 22px;
            margin: 0;
        }
        &.active {
            opacity: 1;
        }
    }
    a.selector-chooseall,
    a.selector-clearall {
        display: inline-block;
        height: 16px;
        color: $color-primary;
        font-weight: normal;
        background-image: none;
        padding: 3px 0 3px 18px;
        margin: 0;
        opacity: 0.5;
        overflow: visible;
        &:before {
            color: $gray-light;
        }
        &.active {
            opacity: 1;
            font-weight: normal;
            background-image: none;
            &:before {
                color: $color-primary;
            }
        }
    }
    .selector-filter {
        padding-right: 0;
        padding-left: 0;
        border: none;
        padding: 3px 0;
        label {
            display: none;
        }
        input {
            width: 100% !important;
            margin-bottom: 5px;
        }
    }
    select[multiple] {
        overflow-y: auto;
        width: 100% !important;
        margin-bottom: 5px;
        padding: 0;
        border: 1px solid $gray-lighter !important;
        // hides dropdown icon which is generally added to select fields #216
        background: none !important;
        option {
            font-size: $font-size-normal;
            line-height: $line-height-normal;
            white-space: normal;
            width: 100%;
            padding: 10px;
            border-bottom: solid 1px $gray-lighter;
        }
    }
    a {
        font-size: $font-size-normal;
        &:hover {
            color: $color-primary !important;
        }
    }
    ul.selector-chooser {
        width: 5% !important;
        margin: 10em 5px 0 5px !important;
        border: 0;
        // hides background image because of icon font replacement #216
        background: none;
        background-color: transparent;
        li {
            text-align: center;
            padding: 3px;
            border: 0;
        }
        a {
            display: inline-block;
            vertical-align: middle;
            margin-right: 0;
            margin-bottom: 0;
        }
    }
}

a.addlink {
    &,
    &:link,
    &:visited {
        color: $color-success;
    }
    &:hover,
    &:focus,
    &:active {
        color: $color-success-dark !important;
    }
}

#content-main .object-tools {
    .addlink {
        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
        font-weight: normal;
        height: auto !important;
        padding: 6px 20px !important;
    }
    .recoverlink {
        color: $color-primary !important;
        font-weight: normal;
        text-decoration: underline;
        padding: 9px 0 !important;
        border: 0 !important;
        border-radius: 0 !important;
        background-color: transparent !important;
        &:hover,
        &:active,
        &:focus {
            color: $color-primary-dark !important;
            text-decoration: underline !important;
            background-color: transparent !important;
            box-shadow: none !important;
        }
    }
    a:before {
        margin-left: -5px;
    }
}

// object tools
.object-tools {
    float: right;
    text-align: right;
    // make sure that buttons are aligned with title
    margin-top: -54px;
    margin-left: 0;
    background: $gray-lightest;
    white-space: nowrap;
    &:before {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        width: 20px;
        left: -20px;
        background: linear-gradient(to right, rgba($gray-lightest, 0), $gray-lightest);
    }
    li {
        display: inline-block;
        float: none;
        height: auto;
        margin-left: 10px;
        list-style: none;
        background: none;
        &:hover {
            background: none;
        }
        > a {
            @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
            line-height: inherit !important;
            height: auto !important;
            margin-right: 0 !important;
        }
    }
    .addlink {
        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
        color: $white !important;
    }
    .publishlink {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    }
    .previewdraftlink {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    }
    .revertlink {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    }
    .historylink {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    }
    .viewsitelink {
        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
    }
}

// tools need to be visible on an apphook page #202
.cms-admin-modal .object-tools {
    margin-top: -7px;
}
.cms-admin-modal .hide-in-modal {
    display: none;
}

// delete page
.delete-confirmation .colM {
    @include box();
    margin: 15px !important;
    padding: 25px !important;
    background-color: $white;
    box-shadow: $base-box-shadow;
    &#content {
        padding: 25px !important;
    }
    ul {
        margin-top: 10px;
    }
    // adds trash icon before p if it follows after h1 #184
    h1 + p {
        @include icon(trash);
        margin-top: -5px;
        margin-bottom: 0;
        &:before {
            font-size: 40px;
        }
    }
    h1 {
        // hides h1 because of doubled content #184
        display: none;
    }
    input[type="submit"] {
        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
        float: right;
        line-height: 22px;
    }
    form {
        padding: 0 !important;
        background: none;
        box-shadow: none;
    }
}

// cms pagelist
#sitemap li a.addlink,
#sitemap li a.deletelink {
    width: 11px;
    height: 11px;
}
.tree {
    .col1 .changelink {
        float: left;
        line-height: $font-size-large !important;
        margin: 6px 0 0 15px !important;
    }
}

// cms language buttons
.djangocms-admin-style {
    #page_form_lang_tabs,
    .parler-language-tabs {
        margin-bottom: 30px;
        border-bottom: solid 1px $gray-lighter;
    }
}
#page_form_lang_tabs input,
.parler-language-tabs span {
    color: $gray-darkest !important;
    font-size: $font-size-normal !important;
    font-weight: normal !important;
    text-transform: uppercase !important;
    margin: 0;
    padding: 10px 20px !important;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    &:hover,
    a:hover,
    &:focus,
    a:focus {
        color: $black !important;
        background-color: transparent !important;
    }
    &.selected,
    &.current {
        color: $color-primary !important;
        border-bottom: solid 3px $color-primary !important;
        background: transparent !important;
    }
    &.notfilled {
        color: $gray !important;
        background: transparent !important;
        &:hover,
        &:focus {
            color: $black !important;
            border-bottom: solid 3px $white !important;
            background-color: $white !important;
        }
    }
    a {
        color: $gray-darkest !important;
    }
}
.parler-language-tabs span {
    padding: 0 !important;
}
.parler-language-tabs .current,
.parler-language-tabs a {
    display: inline-block;
    padding: 10px 20px !important;
}

#lang_tab_content h2.header {
    position: relative;
    margin-bottom: -3px !important;
    border-top-right-radius: $border-radius-base;
    background: $color-primary !important;
}

// nani/hvad language buttons
.nani-language-tabs {
    position: relative;
    margin-bottom: -3px;
    border-bottom: 5px solid $color-primary;
    > span {
        display: inline-block;
        top: 0 !important;
        color: $gray-darkest !important;
        font-weight: normal !important;
        vertical-align: top;
        margin: 0 !important;
        padding: 8px 10px !important;
        border: none !important;
        background: $white;

        border-top-radius: $border-radius-base;
        a {
            color: $gray-darkest !important;
            padding: 5px 10px;
            &:hover,
            &:focus {
                color: $black !important;
                text-decoration: none;
            }
        }
        .deletelink {
            display: inline;
            right: -3px !important;
            bottom: 0 !important;
            margin: 0;
            padding: 0 0 0 12px !important;

            border-top-radius: 0;
        }
    }
    > .empty {
        color: $gray;
        opacity: 1 !important;
        background: $gray-lighter;
    }
    > .current {
        color: $white !important;
        text-shadow: 0 1px 1px rgba($black-fallback, 0.2);
        padding-right: 20px !important;
        padding-left: 20px !important;
        background: $color-primary;
    }
    > .current .deletelink {
        right: -12px !important;
    }
}
.inline-group .nani-language-tabs {
    margin-bottom: 0;
    > span {
        padding: 4px 10px !important;
    }
    > .current {
        padding-right: 20px !important;
        padding-left: 20px !important;
    }
    > .available {
        background: $gray-lighter;
    }
}

// CKEditor max-size fix #310
.cke_maximized {
    z-index: z(ckmaximized);
}

// attributes field
.attributes-pair .field-box {
    margin-bottom: 10px;

    .delete-attributes-pair {
        // override admin-style
        margin-left: 0px !important;
        margin-inline-start: 16px !important;
    }
}
.attributes-pair .field-box:first-child {
    padding-inline-end: 15px;
}


================================================
FILE: djangocms_admin_style/sass/components/_dashboard.scss
================================================
//##############################################################################
// DASHBOARD

body.dashboard {
    background-color: $white;
    h1 {
        // make sure that title is aligned with categories
        margin-left: 10px !important;
    }
    .breadcrumbs {
        padding: $breadcrumb-padding 10px !important;
    }
}

.dashboard #container {
    #content-main {
        min-width: 400px;
        max-width: 900px;
        padding-bottom: 20px;
        .module {
            margin-bottom: 45px;
        }
        table {
            // reset box shadow which is added on every table
            box-shadow: none;
            // make sure caption has no blue hover
            caption  {
                letter-spacing: 0;
                a:hover {
                    color: $black !important;
                }
            }
        }
        table th,
        table td {
            vertical-align: middle !important;
            line-height: $font-size-normal !important;
            width: auto;
            padding: 12px 10px !important;
            border-color: $gray-lighter;
            a {
                font-size: $font-size-normal;
                line-height: $font-size-normal;
                color: $color-primary;
                font-weight: normal;
                padding: 0 10px 0 0;
                &:hover {
                    color: $color-primary-dark !important;
                }
                &.addlink {
                    color: $color-success;
                    &:hover {
                        color: darken($color-success-dark, 10%) !important;
                    }
                }
            }
        }
        table th {
            width: 100%;
        }
        .module tr:first-child {
            th,
            td {
                border-top: 1px solid $gray-lighter;
            }
        }
    }
    #content-related {
        position: absolute;
        right: 0;
        top: 0;
        bottom: 0;
        height: 100%;
        width: 25%;
        padding-top: 135px;
        margin: 0;
        border-left: 1px solid $gray-lighter;
        background-color: $gray-lightest;
        .module {
            margin-left: 0;
            padding: 0 30px 10px !important;
            background-color: transparent;
            ul.actionlist {
                padding: 0;
                margin: 0;
                li {
                    position: relative;
                    font-size: $font-size-normal;
                    line-height: $font-size-normal;
                    padding: 6px 15px 6px 45px;
                    margin-bottom: 0;
                    border-bottom: solid 1px $gray-lighter;
                    a {
                        padding-right: 10px;
                    }
                    &:before {
                        position: absolute;
                        left: 15px;
                        top: 50%;
                        font-size: $font-size-normal;
                        margin-top: -9px;
                    }
                    .mini {
                        line-height: 11px;
                    }
                }
                .changelink a {
                    line-height: $font-size-large;
                }
                .mini {
                    color: $gray !important;
                }
            }
            h2 {
                font-size: $font-size-large !important;
                line-height: $font-size-large;
                color: $gray-darkest;
                font-weight: bold;
                padding: 0 0 27px;
                margin-bottom: 0;
                background: none;
                border-bottom: 0;
            }
            h3 {
                font-size: $font-size-normal !important;
                line-height: $font-size-normal;
                color: $gray;
                font-weight: normal;
                text-transform: uppercase;
                margin: 0;
                padding: 0 0 10px;
                border-bottom: 1px solid $gray-lighter;
            }
            p {
                color: $gray;
                font-size: $font-size-normal;
                padding: 0;
                margin-top: 10px;
            }
        }
    }
    table tbody tr:hover {
        // reset hover background on dashboard table
        background: none;
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_dialog.scss
================================================
// resets form and background styles in dialog window #186
// fixes missing border under copy permissions text & paddings/margins of the buttons #335

.cms-dialog {
    background-color: $white;
    form {
        background: none;
        box-shadow: none;
        p {
            margin: 0 20px;
            padding: $padding-normal 0 !important;
            &:after {
                content: "";
                position: absolute;
                left: 0;
                width: 100%;
                height: 30px;
                border-bottom: 1px solid $gray-lighter;
            }
        }
    }
    .submit-row {
        margin: 10px -20px 0;
        padding: 20px 20px 0px;
        input {
            margin-left: 0;
        }
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_django-nested-admin.scss
================================================
//##############################################################################
// TREEBEARD

// https://github.com/theatlantic/django-nested-admin
// style fixes for django-nested-admin integration

.djn-tabular .tabular .module {
    .inline-group .module h2 {
        padding-top: 10px;
    }
    .djn-items {
        border-left: 5px solid $gray-lighter !important;
        margin-left: 0;
    }
    .djn-tr td {
        vertical-align: top !important;
        width: auto !important;
        padding: 46px 0 0 7px !important;
    }
    .djn-tr td.original {
        padding-top: 0 !important;
    }
    .djn-tr td .datetimeshortcuts {
        margin-left: 10px;
        a {
            margin-right: 5px;
        }
        a:before {
            line-height: 0;
        }
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_drag-and-drop.scss
================================================
//##############################################################################
// TREEBEARD

#drag_line {
    border-top: solid 4px $color-primary !important;
    border-width: 2px !important;
    background: $color-primary-light !important;
    span {
        display: none;
    }
}
#ghost {
    position: absolute;
    left: 20px;
    width: 220px;
    max-width: 220px;
    min-height: 22px;
    padding: 20px !important;
    background-color: $color-primary;
    box-shadow: $base-box-shadow;
    opacity: 1 !important;
    z-index: 10;
    .drag-handler,
    .action-checkbox {
        display: none !important;
    }
    tr {
        background-color: $color-primary !important;
        td {
            font-weight: normal;
            vertical-align: middle;
            border-radius: $border-radius-base;
        }
    }
    .collapse {
        display: none;
    }
    a {
        color: $white;
        font-size: $font-size-large;
        line-height: $line-height-normal;
        font-weight: normal;
    }
}
.drag-handler {
    margin: 4px 0;
    span {
        width: 10px !important;
        padding: 10px 0 !important;
        background: url('../img/drag.png') repeat !important;
        background-size: 5px !important;
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_filer.scss
================================================
//##############################################################################
// FILER

.filebrowser {
    ul.messagelist + #content {
        // calculates correct messagelist position #130
        // plus 27px messages list height
        margin-top: $filer-content-margin + 27px !important;
    }
    #content {
        margin-top: $filer-content-margin !important;
    }
    h2 {
        display: none;
    }
    h1.folder_header {
        float: left;
        font-size: $font-size-large;
        margin: 0;
        background: none;
        .changelink {
            @include icon(pencil);
            font-size: $font-size-large;
            line-height: 30px;
            font-weight: normal;
        }
        img {
            height: 40px;
            width: 40px;
            margin-bottom: 10px;
            margin-right: 10px;
        }
        .backtoroot {
            display: inline-block;
            // make sure that only icon is displayed
            font: 0/0 a;
            padding-left: 15px;
            vertical-align: middle;
        }
        .small {
            margin-left: 5px;
        }
    }
    #content-top-bar {
        min-height: 47px;
        padding-top: 10px !important;
        border-bottom: solid 1px $gray-lighter;
        .object-tools {
            margin-top: 2px !important;
            a {
                padding: 6px 20px !important;
            }
            a:before {
                font-size: $font-size-normal;
            }
            .changelink {
                color: $color-primary !important;
                padding-left: 0 !important;
                padding-right: 0 !important;
                background-image: none !important;
                &:before {
                    vertical-align: middle;
                }
            }
        }
    }
    .module table td {
        line-height: $font-size-large;
    }
    #changelist {
        margin-bottom: 0;
        .paginator {
            // calculates the correct width because of margin left and right
            width: calc(70% - 30px) !important;
        }
    }
    &.change-list #changelist {
        overflow: visible !important;
        padding: 0 !important;
        margin-right: 0 !important;
    }
    #changelist-form > input + #toolbartable {
        clear: both;
    }
    #id_new_folder {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    }
    #toolbartable table {
        thead th {
            width: 0 !important;
            &.action-checkbox-column {
                text-align: left !important;
            }
        }
        tbody {
            tr.selected {
                span,
                td,
                button span:before {
                    color: $color-primary-light !important;
                }
            }
            td:first-child {
               text-align: left;
                padding-left: 15px !important;
            }
            th,
            td {
                font-size: $font-size-small !important;
                color: $gray-light !important;
                outline: 0;
                height: inherit !important;
                padding: 1px 10px !important;
                &.transpTiling {
                    padding-top: 3px !important;
                    padding-bottom: 3px !important;
                    img {
                        height: 35px;
                        width: 35px;
                    }
                }
                &.moveto {
                    text-align: right !important;
                    padding-left: 0 !important;
                    .movetolink {
                        margin: 0 0 0 20px;
                        vertical-align: middle;
                    }
                }
                .tiny {
                    font-size: $font-size-small !important;
                    color: $gray-light !important;
                }
                a {
                    font-size: $font-size-normal !important;
                    &.changelink,
                    &.deletelink {
                        display: inline-block;
                        float: none !important;
                        // make sure that only icon is displayed
                        font: 0/0 a !important;
                        padding: 0 !important;
                        margin: 0 0 0 20px !important;
                        vertical-align: middle;
                        &:before {
                           margin-right: 0;
                        }
                    }
                    &.deletelink {
                        @include icon(trash-o);
                    }
                }
            }
        }
        img {
            width: 38px;
            height: 38px;
        }
    }
    #changelist-wrapper {
        width: 70%;
        clear: both;
    }
    // clipboard
    .clipboard {
        float: right !important;
        width: 28% !important;
        // align clipboard with table/changelist
        margin-top: 0 !important;
        border-radius: $border-radius-base;
        border: 0 !important;
        box-shadow: $base-box-shadow;
        table {
            padding: 0;
            margin-bottom: 0 !important;
            border: 0 !important;
        }
        .noItemsRow td {
            text-align: left !important;
            padding: 12px 0 12px 15px !important;
        }
        .clipboardItem {
            .label {
                color: $color-primary;
                font-size: $font-size-normal !important;
                padding: 0 0 0 10px !important;
            }
            .thumbnail {
                padding: 7px 0 7px 10px !important;
                img {
                    width: 27px;
                    height: 27px;
                }
            }
        }
        thead th {
            font-size: $font-size-large;
            font-weight: bold;
            text-transform: none;
            padding: 5px 10px !important;
        }
        tfoot td {
            padding: 10px 10px 0;
            button {
                padding-bottom: 13px !important;
            }
        }
        td {
            height: auto !important;
            border-bottom: solid 1px $gray-lighter !important;
            border-top: 0;
            form {
                display: block !important;
                margin: 0 -10px !important;
                padding: 10px !important;
                border-top: solid 1px $gray-lighter;
                background: none;
                &:first-child {
                    padding-top: 0 !important;
                    border-top: 0;
                }
                button {
                    padding-bottom: 0 !important;
                }
            }
        }
        form {
            padding: 0 !important;
            box-shadow: none !important;
        }
        button {
            text-align: left;
            white-space: nowrap;
            padding: 0 !important;
            border: 0 !important;
            &:hover,
            &:active,
            &focus {
                border: 0;
                background: none !important;
                box-shadow: none !important;
                outline: none;
            }
            &.deletelink {
                @include icon(trash-o);
                border-top: solid 1px $gray-lighter;
                &[disabled] {
                    opacity: 0.5;
                }
            }
            &.pastelink {
                font-size: $font-size-normal !important;
                color: $color-primary !important;
                span {
                    display: none;
                }
                &[disabled] {
                    color: $gray-lighter !important;
                }
            }
            &:before {
                vertical-align: top;
                margin-right: 7px;
                margin-left: 7px;
            }
        }
    }
    // table
    #toolbartable {
        td,
        th {
            border-right: 0;
            &:nth-child(1) {
                width: 20px;
            }
            &:nth-child(2) {
                width: 50px;
            }
        }
        button {
            padding: 0 !important;
            border: 0 !important;
            background: none !important;
            box-shadow: none !important;
            outline: none;
            &:hover,
            &:active,
            &focus {
                border: 0;
                background: none !important;
                outline: none;
            }
            span {
                // make sure that only icon is displayed
                font: 0/0 a !important;
                &:before {
                    color: $color-primary;
                    vertical-align: middle;
                }
            }
        }
    }
    #toolbartable + .paginator {
        position: absolute;
        // removes boy shadow on top of paginator
        clip: rect(0, 99999px, 99999px, -2px);
        border-right: 0;
    }
}
// file upload
.filerFile {
    img {
        width: 36px;
        height: 36px;
        margin-right: 10px;
        &[src*="nofile"] {
            margin-right: 0;
            border: solid 1px $gray-lighter;
            border-radius: $border-radius-base;
            box-sizing: border-box;
        }
    }
    img,
    .related-lookup {
        display: inline-block;
        vertical-align: top;
        text-align: center !important;
    }
    .related-lookup {
        float: right !important;
        ~ a.related-lookup {
            display: none !important;
            + strong {
                display: none !important;
            }
        }
    }
    // required for django CMS <= 3.1
    a {
        box-sizing: border-box;
        padding-top: 10px !important;
    }
    span {
        display: inline-block;
        color: $gray;
        font-weight: normal;
        margin-top: 6px;
        margin-bottom: 6px;
        &:empty + .related-lookup {
            float: none !important;
            margin-left: 0 !important;
        }
    }
    .related-lookup,
    .filerClearer {
        @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
        float: right;
        margin: 0 0 0 5px !important;
        &:before {
            color: $gray-light !important;
            margin: 0;
            vertical-align: middle;
        }
    }
    .filerClearer {
        // make sure that clear button has correct size #272
        width: 10px;
        height: 10px;
        padding: 12px !important;
        border: solid 1px $gray-lighter;
        border-radius: $border-radius-base;
        cursor: pointer;
    }
    .related-lookup {
        display: inline-block !important;
        padding: 8px 10px !important;
        img {
            display: none;
        }
    }
}

// Django 1.9 fix for filer subject location view
.app-filer .module.collapsed h2 {
    padding-left: $padding-base * 2;
}



================================================
FILE: djangocms_admin_style/sass/components/_footer.scss
================================================
//##############################################################################
// FOOTER

#footer {
    padding: 0;
}


================================================
FILE: djangocms_admin_style/sass/components/_forms.scss
================================================
//##############################################################################
// FORMS

form {
    margin-bottom: 20px;
    padding: 25px 25px;
    background-color: $white;
    box-shadow: $base-box-shadow;
    fieldset, .inline-group {
        width: 80%;
    }

    // Newer Django admin styles use flexbox, we do not
    .flex-container {
        display: block;
        margin-right: 20px;
    }
    .flex-container.form-multiline {
        display: flex;
        margin-right: 0;
        div.fieldBox {
            display: block;
            //margin-right: 0;
        }
        & > div:has(> div.hidden) {
            display: none;
        }
    }
    fieldset.module > h2 {
        margin-right: 20px;
    }

    // only uses this styles if form-row is not set on a table row because before and after breaks tables #247
    .form-row:not(tr) {
        // adds clearfix because overflow hidden truncates highlighted focus fields #242
        @include micro-clearfix;
        .vForeignKeyRawIdAdminField,
        .vManyToManyRawIdAdminField {
            // calculates width that search button appears next to search input
            width: calc(100% - 50px) !important;
        }
    }
    .form-row {
        // Improve readability by increasing contrast
        & div > label:not(.vCheckboxLabel) {
            color: $gray-darker !important;
            font-weight: bold !important;
            width: 100% !important;
            text-transform: inherit;
        }
        // make sure that highlighted focus on fields is not truncated #242
        overflow: visible;
        border-bottom: 0;
        .btn-group-sizes .btn-default {
            min-height: inherit !important;
        }
        &.field-get_attachment_address a {
            display: block;
            position: relative;
            font-size: $font-size-large;
            line-height: $font-size-large;
            margin: 10px 0;
            padding-left: 30px;
            &:before {
                position: absolute;
                left: 0;
                color: $gray;
            }
        }
        &.field-sha1 {
            label {
                display: inline-block;
            }
            p {
                display: inline-block;
                color: $gray-darkest !important;
            }
        }
        &.field-image {
            .filerFile img {
                width: 36px;
                height: 36px;
                // fixes clear button size in form fields #262
                &.filerClearer {
                    width: 10px;
                    height: 10px;
                }
            }
        }
        &.field-folder {
            // hides related widget wrapper links because they don't work correctly and are not necessary because
            // of magnifier and delete link #224
            .related-widget-wrapper-link {
                display: none;
            }
        }
        .filer-dropzone ~ .related-widget-wrapper-link {
            // hides related widget wrapper links because they don't work with filer dropzones
            display: none;
        }
        &.field-thumbnail {
            margin: 0;
        }
        .related-lookup {
            display: inline-block;
            float: none;
            text-align: center;
            vertical-align: top;
            margin: 0 0 0 10px;
            padding: 9px !important;
            &:before {
                margin: 0 !important;
            }
            img {
                display: none;
            }
        }
        .vForeignKeyRawIdAdminField,
        .vManyToManyRawIdAdminField {
            width: auto !important;
        }

        // only affects field boxes when they are next to each other
        & > .fieldBox, & > div:not([class]) > .fieldBox,
        & > div:not([class]) > .flex-container > div:not(.related-widget-wrapper, .cke, .widget),
        .form-multiline > div:not(.related-widget-wrapper,
        .form-multiline > div:not([class]) > div:not(.related-widget-wrapper),
        .cke, .widget) {
            margin-right: 0px;
            box-sizing: border-box;
            width: 50%;
            max-width: 500px;

            & > label {
                text-transform: inherit;
            }
            & + .fieldBox {
                padding-top: 0;
            }

            &:not(:first-child) {
                border-top: none;
                // padding-right: 2vw;
            }
        }
    }
    input[type="color"] {
        width: revert;
    }
    button,
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="number"],
    input[type="url"],
    select,
    textarea {
        font-size: $font-size-small;
        width: 100% !important;
        max-width: none !important;
        border-radius: 3px !important;
        // resets background color for input fields for dark system #271
        background-color: $white;
        appearance: none;

        // resets default firefox error style
        &:-moz-ui-invalid {
            box-shadow: none;
        }
    }
    &,
    .datetime,
    .form-row .datetime {
        input.vDateField,
        input.vTimeField {
            margin-left: 0; // django 1.9
            margin-bottom: 0; // django 1.9
        }

        // add a little bit of space on top
        br + label {
            margin-top: 10px;
        }
    }
    select::-ms-expand {
        display: none;
    }
    button {
        width: auto !important;
    }
    .cke {
        box-sizing: border-box;
    }
    & {
        .field-number_of_visits p {
            margin-left: 0;
            padding-left: 0;
        }
        div.help,
        p.help {
            clear: both;
            color: $gray;
            font-size: $font-size-small !important;
            margin-top: 7px !important;
            margin-left: 2px !important;
            margin-bottom: 0;
            padding: 0 !important;
        }

        input + p.help,
        textarea + p.help,
        select + p.help,
        input + div.help,
        textarea + div.help,
        select + div.help {
            padding-left: 0;
            margin-left: 0;
        }
        div + div.help {
            margin-left: 0px;
            padding-left: 0px;
        }
        label {
            padding: 0 !important;
            line-height: 20px;
            &:not(.vCheckboxLabel):after {
                content: none;
            }
            & + div.readonly {
                margin-top: -5px;
            }
        }
        label + label {
            margin-left: 10px;
        }
    }
    .vCheckboxLabel,
    .field-type label,
    .sortedm2m label {
        color: $gray-darker !important;
        font-size: $font-size-large !important;
        vertical-align: bottom;
        text-transform: none;
        margin-bottom: 0;
        + a {
            font-size: $font-size-large;
            font-weight: normal;
        }
    }
    .field-type label {
        margin-top: 10px !important;
        margin-left: 2px !important;
    }
    .sortedm2m a {
        vertical-align: middle;
        // removed padding top makes sure that label is correct aligned with link #280
    }
    small {
        color: $gray;
    }
    hr {
        margin: 5px 0;
    }
    fieldset {
        line-height: 2em;
        vertical-align: middle;
        box-sizing: border-box;
        &.collapse h2 {
            color: $gray-darkest;
            font-size: $font-size-large;
            background: none;
        }
        &.collapsed {
            margin-bottom: 30px !important;
            border: 0;
            .collapse-toggle {
                color: $color-primary;
            }
        }
        .fieldBox {
            margin-inline-end: 20px !important;  // override admin-style rtl
        }
    }
    label select {
        display: block;
        margin-top: 5px;
        margin-left: 0 !important;
    }
    label,
    label.aligned {
        display: block;
        float: none !important;
        // FABR: !important not necessary
        color: $gray;  // !important;
        font-size: $font-size-normal;
        font-weight: normal !important;
        line-height: $line-height-normal;
        text-transform: uppercase;
        word-wrap: break-word;
        width: auto !important;
        margin-bottom: 5px;
        // make sure we can differentiate required from normal side #249
        &.required {
            color: $black !important;
            font-weight: bold !important;
        }
        &.btn {
            float: left !important;
            // FABR: ! Important conflicts with unfilled buttons
            color: $white; // !important;
            padding-block: 6px !important;
            padding-inline: 12px !important;

            [dir=rtl] & {
                float: right !important;
            }
        }
        &.btn-default,
        &.btn-link {
            color: $gray-darker; // !important;  // dito
        }
        &:after {
            height: 20px !important;
        }
    }
    label.aligned + div.readonly {
        width: 160px;
        margin-inline-start: 170px;
    }
    .aligned {
        // overriding admin style rtl.css
        // to match the style of djangocms-admin-style
        div.help {
            margin-right: 0px !important;
        }
        .form-row input[type="text"] {
            margin-right: 0px !important;
            margin-left: 0px !important;
        }
    }
    // input
    input,
    textarea {
        color: $gray-darkest;
        font-size: $font-size-small;
        line-height: 24px;
        box-sizing: border-box;
        height: 36px;
        min-height: 24px;
        padding: 6px !important;
        border: 1px solid $gray-lighter !important;
        border-radius: $border-radius-base;
        outline: none;
    }
    textarea {
        height: auto;
    }
    input[type="checkbox"],
    input[type="radio"] {
        position: relative;
        top: -1px;
        overflow: hidden;
        line-height: $base-line-height;
        vertical-align: bottom;
        width: auto !important;
        height: auto;
        min-height: unset;
        margin-inline-end: 10px !important;  // override admin-style rtl
        padding: 0 !important;
        border: 0 !important;
    }
    input[type="file"] {
        color: $gray;
        padding: 6px 5px;
        height: auto;
        border: 1px solid $gray-lighter;
        border-radius: $border-radius-base;
        outline: none;
    }
    select {
        font-size: $font-size-small;
        font-weight: normal;
        line-height: 20px;
        box-sizing: border-box;
        min-width: 160px;
        height: 36px !important;
        padding: 6px;
        border: 1px solid $gray-lighter;
        border-radius: $border-radius-base;
        background: $white url("../img/icon_arrow_down.png") no-repeat right center !important;
        background-size: 25px !important;

        appearance: none;

        [dir=rtl] & {
            // The png has a left padding of 30px. Its width is reduced from 60px to 25px
            // so the right possition should start from 12.5px (30*25/60)
            background-position: 12.5px center !important;
        }
    }
    select[multiple] {
        height: auto !important;
    }
    select + select {
        margin-top: 10px !important;
    }
    small {
        margin-left: 15px;
    }
    .form-controls {
        text-align: right;
        margin: 15px 0 0 0;
        p {
            margin-top: 6px;
        }
    }
    .input-list {
        display: inline-block;
        line-height: 20px;
        vertical-align: top;
    }
    .extra {
        .right {
            float: right;
            margin-right: 10px;
        }
    }
    .errors {
        margin-bottom: 20px;
        padding: 10px;
        border: 0;
        border-radius: $border-radius-base;
        background-color: $color-danger-ultralight;
        input,
        select,
        textarea {
            border-color: $gray-lighter;
        }
    }
    .form-row:not(tr) {
        padding: 0 2px 25px;
        border-bottom-color: $gray-lighter;
        &.errors {
            margin-bottom: 20px;
            padding: 10px;
            border: 0;
            border-radius: $border-radius-base;
            background-color: $color-danger-ultralight;
        }
    }
    .form-row:last-child {
        border-bottom-color: transparent;
    }
    h2 + .form-row > .checkbox-row {
        // make sure that there is not a double line after h2 #195
        padding-top: 0;
        border-top: 0;
    }
    .checkbox-row {
        line-height: 20px;
        margin-bottom: -5px;
        // wraps checkbox rows with border #188
        padding-top: 15px;
        border-top: solid 1px $gray-lighter;
        // remove border top and padding on first child #291
        &:first-child {
            padding-top: 0;
            border-top: 0;
        }
        input[type="checkbox"],
        input[type="radio"] {
            top: auto;
            vertical-align: middle;
            width: auto !important;
            height: auto !important;
        }
        label {
            color: $gray-darkest !important;
            font-size: $font-size-large;
            vertical-align: middle;
            text-transform: none;
            &.vCheckboxLabel {
                display: inline;
                vertical-align: middle;
            }
        }
    }

    // backport from django 1.9
    .aligned label.vCheckboxLabel {
        display: inline;
        + p {
            padding: 6px 0;
            margin-top: 0;
            margin-bottom: 0;
        }
    }
}

.form-row .select2-container {
    min-width: 250px + 12px;
    &.select2-container--admin-autocomplete .select2-selection {
        min-height: 36px;
        .select2-selection__arrow {
            height: 32px;
        }
        .select2-selection__clear {
            margin-top: 5px;
        }
    }
} // standard input width + default input padding

.inline-group .module:not(.aligned) .form-row input,
.inline-group .module:not(.aligned) .form-row textarea:not(.cke_source) {
    width: auto !important;
}

// select2
form {
    .select2-container {
        width: 100%;
        &.select2-container-active {
            .select2-choice,
            .select2-choices {
                box-shadow: none;
            }
        }
        &.select2-container--default .select2-selection--single {
            border: 1px solid $gray-lighter;
            border-radius: $border-radius-base;
            height: 36px;
            line-height: 36px;

            .select2-selection__arrow {
                height: 36px;
            }

            .select2-selection__rendered {
                font-size: $font-size-small;
                line-height: 34px;

                .select2-selection__clear {
                    line-height: 36px;
                }
            }
        }
        .select2-choice {
            line-height: 22px;
            height: 22px;
            padding: 6px 40px 6px 20px;
            border: 1px solid $gray-lighter;
            border-radius: $border-radius-base;
            background: none;
            & > .select2-chosen {
                font-size: $font-size-small;
                line-height: 22px;
            }
            .select2-arrow {
                right: 9px;
                width: 17px;
                border: none;
                border-radius: 0;
                background: none;
                b {
                    background: url("../img/select2.png") no-repeat 0 6px;
                    background-size: 50px;
                }
            }
            .select2-search-choice-close {
                top: 10px;
                right: 35px;
            }
        }
    }
    .select2-dropdown-open {
        &.select2-drop-above {
            .select2-choice,
            .select2-choices {
                border-color: $gray-lighter !important;
                background-image: none !important;
            }
        }
        .select2-choice {
            background-color: $white;
            background-image: none;
            .select2-arrow b {
                background-position: -16px 5px;
            }
        }
    }
}
.select2-dropdown {
    border-color: $gray-lighter !important;
}
.select2-drop-active {
    border: 1px solid $gray-lighter !important;
}
.select2-results {
    margin: 0 10px 10px !important;
    padding: 0 !important;
    .select2-no-results,
    .select2-searching,
    .select2-ajax-error,
    .select2-selection-limit {
        color: $gray;
        font-size: $font-size-small;
        padding: 0 !important;
        background-color: transparent !important;
    }
    .select2-highlighted {
        border-radius: $border-radius-base;
        background-color: $color-primary !important;
    }
}
.select2-match {
    font-size: $font-size-normal !important;
}
.select2-search {
    padding: 10px !important;
    input {
        font-size: $font-size-small !important;
        width: 100% !important;
        padding: 10px 40px 10px 20px !important;
        border: 1px solid $gray-lighter !important;
        border-radius: $border-radius-base !important;
        background: url("../img/select2.png") no-repeat right -27px !important;
        background-size: 50px !important;
    }
}

input:invalid,
textarea:invalid {
    border-radius: $border-radius-base;
}
.no-boxshadow input:invalid,
.no-boxshadow textarea:invalid {
    background-color: $color-danger-ultralight;
}

// buttons
button {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
}
input[type="submit"],
input[type="button"] {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    font-weight: normal !important;
    width: auto !important;
    padding: 10px 20px !important;
    &.default {
        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
        padding: 10px 20px !important;
    }
}
a.button {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    text-decoration: none;
    cursor: pointer;
    &.tab {
        border-radius: 0;
    }
}

// date time
.form-row {
    p.datetime {
        font-size: $font-size-normal !important;
        font-weight: normal;
        line-height: 36px;
        margin-left: 0;
        padding-left: 0;
    }
}

// calendar
div.calendar {
    table {
        max-width: 250px !important;
        caption {
            color: $gray !important;
            margin: 0;
            padding: 10px 30px;
            border-bottom: solid 1px $gray-lighter;
            background-color: $white;
            background-image: none;

            border-top-radius: $border-radius-base;
        }
        th {
            color: $gray-darkest;
            font-family: $base-font-family;
            background: none;
        }
        td {
            padding: 0;
            background: $gray-lightest;
            &.nonday {
                background-color: $gray-lightest !important;
            }
        }
        td a {
            padding: 7px;
            &:hover,
            &:active,
            &:focus {
                color: $gray-darker;
                background: $color-primary-light !important;
            }
        }
    }
    .today a {
        color: $gray-darker;
        font-weight: normal;
        background-color: $gray-lighter;
    }
}
div.calendarbox {
    width: 256px !important;
    table {
        margin-bottom: 0 !important;
        td {
            height: auto !important;
            padding: 0 !important;
            &.selected {
                a {
                    color: $white;
                    background-color: $color-primary;
                    &:hover {
                        color: $gray-darker;
                    }
                }
            }
        }
        th {
            padding: 10px;
            border-bottom: 0;
        }
        th,
        td {
            font-size: $font-size-normal;
            font-weight: normal;
            line-height: $line-height-normal;
            border-color: $gray-lighter;
            background-color: $white;
            a {
                color: $gray;
                font-family: $base-font-family;
                font-weight: normal;
            }
        }
    }
    .calendarnav-previous,
    .calendarnav-next {
        top: 0;
        text-indent: initial;
        color: $color-primary;
        font-size: 0;
        text-decoration: none;
        padding: 6px 7px;
        background: none;
        &:hover,
        &:focus {
            background: none;
        }
    }
    .calendar-shortcuts {
        font-size: $font-size-small;
        line-height: $line-height-normal;
        width: 100%;
        border-color: $gray-lighter !important;
        background: $white;
        a {
            font-size: $font-size-small !important;
            width: auto;
            margin-top: 0 !important;
            margin-right: 5px !important;
            padding: 9px 10px !important;
            &:first-child {
                margin-left: 5px;
            }
        }
    }
    .calendar-cancel {
        padding: 5px 0 !important;
    }
}
div.calendarbox,
div.clockbox {
    margin: 0;
    padding: 0;
    border: 1px solid $gray-lighter;
    border-radius: $border-radius-base;
    background: $white !important;
    box-shadow: $base-box-shadow;
    caption,
    h2 {
        font-size: $font-size-normal;
    }
    .calendar-cancel {
        font-size: $font-size-small !important;
        line-height: $line-height-normal;
        margin-top: 0 !important;
        border-color: $gray-lighter !important;
        background: $white;

        border-bottom-radius: $border-radius-base;
        a {
            // adds separate color to cancel link to have a clear difference to other links #236
            color: $gray-darkest !important;
        }
    }
}
// clock
div.clockbox {
    border-top-radius: $border-radius-base;
    h2 {
        color: $gray !important;
        font-size: 14px !important;
        font-weight: normal;
        text-transform: uppercase;
        margin-bottom: 0;
        padding: 10px 30px;
        border-radius: $border-radius-base;
        background-color: $white;
        background-image: none;
    }
    .timelist li {
        border-top: solid 1px $gray-lighter;
        &:first-child {
            border-top: 0;
        }
        a {
            font-size: $font-size-normal;
            font-weight: normal;
            line-height: $line-height-normal;
            padding: 10px 2px;
            &:hover {
                background-color: $color-primary-light !important;
            }
        }
    }
    .calendar-cancel {
        padding: 10px 0 !important;
    }
}
.timelist a {
    &,
    &:active,
    &:focus,
    &:hover {
        background: none !important;
    }
}

span.datetimeshortcuts,
.calendar-shortcuts {
    display: inline-block;
    font-size: 0 !important;
    padding: 4px 0 !important;
    margin-left: 0 !important;

    a {
        @include button-variant($btn-action-bgcolor, $btn-action-color, $btn-default-border, true);
        display: inline-block;
        line-height: 14px;
        box-sizing: content-box;
        height: 14px;
        margin-top: 0 !important;
        margin-bottom: 0;
        padding: 10px 16px !important;

        &:before {
            color: $color-primary;
            margin: -2px 0 0;
        }

        &:not(:last-child) {
            margin-right: 5px;
        }
    }
}

// filter horizontal
.selector {
    .selector-chooseall,
    .selector-clearall {
        font-size: $font-size-small;
        line-height: $font-size-normal;
    }
    select {
        overflow: hidden;
    }
}

form select[multiple] {
    overflow: auto;
    width: 100%;
    max-width: 240px;
    padding: 10px;
    // hides dropdown icon which is generally added to select fields #216
    background: none !important;
}
.js-icon-widgets {
    select {
        display: inline-block;
        width: 88% !important;
    }
    .btn {
        width: 10%;
        margin-left: 1%;
        padding: 0 !important;
    }
}

.fa-question-circle:before {
    font-size: $font-size-normal;
}

// adds background color to password and type fields #175
.field-type p {
    margin: 15px 0;
    padding: 10px !important;
    background-color: $gray-lightest;
}
#id_password {
    margin: 15px 0;
    background-color: $gray-lightest;
}
.field-type p:empty {
    // reset background color and padding if field type is empty #186
    padding: 0 !important;
    background-color: transparent;
}

//related-widget
.related-widget-wrapper {
    // required in admin/aldryn_newsblog/article/add to ensure outline is not cut off #249
    overflow: visible;
    display: block;
    width: 100%;
    &.widget-wrapper-links-1 {
        select, .select2 {
            width: calc(100% - 46px) !important;
        }
    }
    &.widget-wrapper-links-2 {
        select, .select2 {
            width: calc(100% - 87px) !important;
        }
    }
    &.widget-wrapper-links-3 {
        select, .select2 {
            width: calc(100% - 128px) !important;
        }
    }
    &.widget-wrapper-links-4 {
        select, .select2 {
            width: calc(100% - 169px) !important;
        }
    }
    // makes sure that related widget wrapper links are floated next to select field #315
    select {
        float: left;
        min-width: inherit !important;
        padding-right: 35px !important;
        margin-right: 10px !important;
    }
    select + .related-widget-wrapper-link,
    .related-widget-wrapper-link + .related-widget-wrapper-link {
        margin: 0;
    }
    .related-widget-wrapper-link + .related-widget-wrapper-link + .related-widget-wrapper-link {
        margin-left: 5px;
        margin-right: 0;
    }
    a {
        margin-top: 0;
        &.change-related {
            margin-right: 5px;
            &:last-child {
                margin-right: 0;
            }
        }
    }
    // resets list styles that list looks same as sortedm2m #286
    ul {
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
        li {
            padding: 0 !important;
            border: 0 !important;
            label {
                color: $gray-darkest !important;
                font-size: 16px;
                line-height: 20px;
                text-transform: none;
                input {
                    vertical-align: middle !important;
                }
            }
        }
        // makes sure that inline list has space between elements and no border #286
        &.inline {
            @include micro-clearfix;
            li {
                margin-right: 10px;
                border: 0;
            }
        }
    }
}
.related-widget-wrapper-link {
    // make sure that add another button has correct width and height on carousel slide plugin #291
    width: 36px;
    height: 36px;
}
.related-widget-wrapper-link {
    opacity: 0.3;
}

.related-widget-wrapper-link:link {
    opacity: 1;
}

.related-widget-wrapper-link:link:focus,
.related-widget-wrapper-link:link:hover {
    opacity: 1;
}


================================================
FILE: djangocms_admin_style/sass/components/_header.scss
================================================
//##############################################################################
// HEADER

#header {
    // replaced overflow hidden with clearfix to fix header on login page #220
    @include micro-clearfix;
    overflow: visible;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    color: $gray-darkest !important;
    width: 100% !important;
    height: $toolbar-height;
    padding: 0 !important;
    background-color: $white;
    background-image: none;
    box-shadow: $toolbar-shadow;
    z-index: z(header);
    #branding {
        display: block;
        width: 100%;
        h1 {
            // hides h1 because of text appears in list on dropdown menu
            display: none;
            float: left;
            font-size: $font-size-normal;
            line-height: $toolbar-height;
            color: $gray-darkest;
            font-weight: bold;
            height: $toolbar-height;
            padding: 0;
            margin: 0;
        }
    }
    #user-tools {
        // user tools are added to dropdown menu
        display: none;
        float: right;
        font-size: 13px;
        line-height: $toolbar-height;
        height: $toolbar-height;
        width: 270px;
        padding: 0;
        strong {
            font-size: 13px;
        }
    }
    a {
        &:link,
        &:visited {
            color: $gray-darkest;
        }
    }
    .toolbar-item-navigation-break {
        text-indent: -119988px;
        overflow: hidden;
        text-align: left;
        height: 1px;
        margin: 4px 0;
        padding: 0 0 3px;
        border-bottom: 1px solid $gray-lighter;
    }
    .toolbar-item-navigation {
        li  {
            position: relative;
            float: left;
            list-style-type: none;
            padding: 0;
            .menu-item-open {
                color: $white!important;
                background: $color-primary;
                // removes hover color #289
                &:hover {
                    color: $white !important;
                }
            }
            ul {
                position: absolute;
                top: $toolbar-height;
                left: 0;
                min-width: 180px;
                margin-left: 0;
                padding: 4px 0;
                border: 1px solid $white;
                border-top: none;
                border-radius: 0 0 4px 4px;
                background: $white;
                filter: opacity(.95);
                box-shadow: 0 1px 1px rgba($black-fallback, .4);
                &.submenu-open {
                    display: block;
                }
            }
            > a {
                font-weight: bold;
            }
            a {
                float: left;
                color: $black;
                font-size: $font-size-normal;
                line-height: $toolbar-height;
                list-style-type: none;
                height: $toolbar-height;
                padding: 0 10px;
                cursor: default;
                // removes hover color #289
                &:hover {
                    color: $black !important;
                }
            }
            ul {
                display: none;
                li {
                    float: none;
                    a {
                        display: block;
                        float: none;
                        white-space: nowrap;
                        line-height: 30px;
                        font-weight: normal;
                        height: 30px;
                        padding: 0 10px 0 15px !important;
                        cursor: pointer;
                        span {
                            font-weight: bold;
                            font-size: $font-size-normal;
                        }
                        &:hover {
                            color: $white !important;
                            background: $color-primary;
                        }
                    }
                    form {
                        box-shadow: none;
                        margin: 0;
                        padding: 0;
                        button {
                            float: none;
                            white-space: nowrap;
                            line-height: 30px;
                            height: 30px;
                            padding: 0 10px 0 15px !important;
                            cursor: pointer;

                            border: none !important;
                            border-radius: 0 !important;
                            width: 100% !important;
                            color: $black !important;
                            font-size: $font-size-normal !important;
                            font-family: $base-font-family !important;
                            text-align: left;

                            &:active,
                            &:focus {
                                filter: none !important;
                                box-shadow: none !important;
                                text-decoration: underline !important;
                            }
                            &:hover {
                                filter: none !important;
                                color: $white !important;
                                background: $color-primary !important;
                                text-decoration: none !important;
                            }
                        }
                    }
                }
            }
        }
    }
    #header-btn {
        float: right;
        padding-right: $toolbar-right-space;
        margin: $toolbar-margin-button 0 $toolbar-margin-button $toolbar-left-space;
        cursor: pointer;
        .btn {
            display: block;
            font-size: $toolbar-button-font-size !important;
            line-height: $toolbar-button-height !important;
            height: $toolbar-button-height;
            padding: 0 25px 0 12px !important;
            box-sizing: border-box;
            &:before {
                display: none;
            }
            &.icon-arrow-right {
                background: url('../img/icon_arrow_right.png') no-repeat right center !important;
                background-size: 20px !important;
                &:focus {
                    color: $btn-default-color !important;
                    background-color: $btn-default-bgcolor !important;
                    border-color: $btn-default-color !important;
                    filter: brightness(calc(var(--focus-brightness) * var(--active-brightness)))  !important;
                    text-decoration: none !important;
                }
                &:hover {
                    color: $btn-default-color !important;
                    background-color: $btn-default-bgcolor !important;
                    border-color: $btn-default-color !important;
                    filter: brightness(calc(var(--focus-brightness) * var(--active-brightness)))  !important;
                    text-decoration: none !important;
                }
            }
        }
    }
    #header-logo {
        float: left;
        padding-left: $toolbar-left-space;
        margin-right: 15px;
        span {
            display: none;
        }
        a {
            color: $black;
            display: block;
            font-size: 21px;
            line-height: $toolbar-height;
            height: $toolbar-height;
            transition: color 200ms;
            &:hover {
                color: $color-primary;
            }
            &:before {
                font-size: 21px;
                vertical-align: inherit;
                line-height: 46px;
                height: 46px;
                margin-right: 0;
                box-sizing: border-box;
            }
        }
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_iconography.scss
================================================
//######################################################################################################################
// #ICONOGRAPHY#

// default font file generated by gulp
@font-face {
    font-family: "django-admin-iconfont";
    src: url("../fonts/django-admin-iconfont.eot?v=3.2.0");
    src: url("../fonts/django-admin-iconfont.eot?v=3.2.0#iefix") format("eot"),
         url("../fonts/django-admin-iconfont.woff2?v=3.2.0") format("woff2"),
         url("../fonts/django-admin-iconfont.woff?v=3.2.0") format("woff"),
         url("../fonts/django-admin-iconfont.ttf?v=3.2.0") format("truetype"),
         url("../fonts/django-admin-iconfont.svg?v=3.2.0#django-admin-iconfont") format("svg");
    font-weight: normal;
    font-style: normal;
}

%icon {
    display: inline-block;
    font: normal normal normal 14px/1 django-admin-iconfont;
    font-size: inherit;
    text-rendering: auto;
    transform: translate(0, 0);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

@function icon-char($filename) {
    $char: "";

    @if $filename == archive {
        $char: "E001";
    }
    @if $filename == arrow-left {
        $char: "E002";
    }
    @if $filename == arrow-right {
        $char: "E003";
    }
    @if $filename == calendar {
        $char: "E004";
    }
    @if $filename == camera {
        $char: "E005";
    }
    @if $filename == certificate {
        $char: "E006";
    }
    @if $filename == check-circle {
        $char: "E007";
    }
    @if $filename == check {
        $char: "E008";
    }
    @if $filename == chevron-circle-down {
        $char: "E009";
    }
    @if $filename == chevron-circle-left {
        $char: "E00A";
    }
    @if $filename == chevron-circle-right {
        $char: "E00B";
    }
    @if $filename == chevron-circle-up {
        $char: "E00C";
    }
    @if $filename == chevron-left {
        $char: "E00D";
    }
    @if $filename == clipboard {
        $char: "E00E";
    }
    @if $filename == clock {
        $char: "E00F";
    }
    @if $filename == cloud-download {
        $char: "E010";
    }
    @if $filename == cloud-upload {
        $char: "E011";
    }
    @if $filename == cloud {
        $char: "E012";
    }
    @if $filename == cog {
        $char: "E013";
    }
    @if $filename == comment {
        $char: "E014";
    }
    @if $filename == credit-card {
        $char: "E015";
    }
    @if $filename == cube {
        $char: "E016";
    }
    @if $filename == desktop {
        $char: "E017";
    }
    @if $filename == envelope-square {
        $char: "E018";
    }
    @if $filename == envelope {
        $char: "E019";
    }
    @if $filename == exclamation-triangle {
        $char: "E01A";
    }
    @if $filename == eye {
        $char: "E01B";
    }
    @if $filename == file-text {
        $char: "E01C";
    }
    @if $filename == file {
        $char: "E01D";
    }
    @if $filename == files-o {
        $char: "E01E";
    }
    @if $filename == film {
        $char: "E01F";
    }
    @if $filename == flag {
        $char: "E020";
    }
    @if $filename == floppy-o {
        $char: "E021";
    }
    @if $filename == folder-open {
        $char: "E022";
    }
    @if $filename == folder {
        $char: "E023";
    }
    @if $filename == gamepad {
        $char: "E024";
    }
    @if $filename == gift {
        $char: "E025";
    }
    @if $filename == heart {
        $char: "E026";
    }
    @if $filename == home {
        $char: "E027";
    }
    @if $filename == info-circle {
        $char: "E028";
    }
    @if $filename == key {
        $char: "E029";
    }
    @if $filename == laptop {
        $char: "E02A";
    }
    @if $filename == life-ring {
        $char: "E02B";
    }
    @if $filename == lightbulb-o {
        $char: "E02C";
    }
    @if $filename == lock {
        $char: "E02D";
    }
    @if $filename == logo {
        $char: "E02E";
    }
    @if $filename == map-marker {
        $char: "E02F";
    }
    @if $filename == minus-circle {
        $char: "E030";
    }
    @if $filename == mobile {
        $char: "E031";
    }
    @if $filename == money {
        $char: "E032";
    }
    @if $filename == music {
        $char: "E033";
    }
    @if $filename == newspaper-o {
        $char: "E034";
    }
    @if $filename == pencil {
        $char: "E035";
    }
    @if $filename == picture-o {
        $char: "E036";
    }
    @if $filename == picture {
        $char: "E037";
    }
    @if $filename == plus-circle {
        $char: "E038";
    }
    @if $filename == plus {
        $char: "E039";
    }
    @if $filename == print {
        $char: "E03A";
    }
    @if $filename == refresh {
        $char: "E03B";
    }
    @if $filename == remove {
        $char: "E03C";
    }
    @if $filename == reply {
        $char: "E03D";
    }
    @if $filename == scissors {
        $char: "E03E";
    }
    @if $filename == search-plus {
        $char: "E03F";
    }
    @if $filename == search {
        $char: "E040";
    }
    @if $filename == shopping-cart {
        $char: "E041";
    }
    @if $filename == suitcase {
        $char: "E042";
    }
    @if $filename == tag {
        $char: "E043";
    }
    @if $filename == ticket {
        $char: "E044";
    }
    @if $filename == trash-o {
        $char: "E045";
    }
    @if $filename == trash {
        $char: "E046";
    }
    @if $filename == unlock-alt {
        $char: "E047";
    }
    @if $filename == upload {
        $char: "E048";
    }
    @if $filename == user {
        $char: "E049";
    }
    @if $filename == volume-up {
        $char: "E04A";
    }
    @if $filename == wrench {
        $char: "E04B";
    }

    @return $char;
}

@mixin icon($filename, $insert: before) {
    &:#{$insert} {
        content: #{"\"\\"}#{icon-char($filename) + "\""};
    }
}

================================================
FILE: djangocms_admin_style/sass/components/_icons.scss
================================================
//##############################################################################
// ICONS

// Overwrites background images icons with font icon
// adds every class which has to be overwritten because of there is no general icon class
.addlink,
.changelink,
.deletelink,
.inline-deletelink,
.pastelink,
.icon-arrow-right,
.icon-logo,
.add-row a,
.related-lookup,
.backtoroot,
.movetolink span,
.file-upload a,
a.insertlinkButton,
.field-get_attachment_address a,
a.selector-clearall,
a.selector-chooseall,
.selector-remove,
.selector-add,
.add-another,
.add-related,
.change-related,
.delete-related,
.view-related,
.inlinechangelink,
a[id*="calendarlink"],
a[id*="clocklink"],
.calendarnav-previous,
.calendarnav-next,
.messagelist li.success,
.messagelist li.error,
.messagelist li.info,
.messagelist li.warning,
.cms-admin-modal.delete-confirmation .colM > p,
.delete-confirmation .colM h1 + p,
.admin_shortcuts .shortcuts li a {
    background-image: none !important;
    &:hover {
      background-image: none;
    }
    &:before {
        @extend %icon;
        font-size: $font-size-large;
        vertical-align: middle;
        margin-right: 5px;
    }
}

.file-upload a,
.field-get_attachment_address a {
  @include icon(picture);
}

a.selector-clearall,
.selector-remove {
    @include icon(chevron-circle-left);
}
a.selector-chooseall,
.selector-add {
    @include icon(chevron-circle-right);
}
.addlink,
.add-row a,
.add-another,
.add-related {
    @include icon(plus);
}
.changelink,
.change-related,
.inlinechangelink {
    @include icon(pencil);
}
.deletelink,
.inline-deletelink,
.delete-related {
    @include icon(remove);
}
.view-related {
    @include icon(eye);
}
.icon-arrow-right,
.calendarnav-next {
    @include icon(arrow-right);
}
.icon-search,
.related-lookup {
    @include icon(search);
}
.icon-logo {
    @include icon(logo);
}
#id_upload_button {
   @include icon(upload);
}
#id_new_folder {
    @include icon(folder);
}
.backtoroot,
.calendarnav-previous {
   @include icon(chevron-left);
}
.movetolink span {
   @include icon(scissors);
}
.pastelink {
    @include icon(clipboard);
}
.insertlinkButton {
    @include icon(arrow-left);
    padding: 0 !important;
}
a[id*="calendarlink"] {
    @include icon(calendar);
    img, .date-icon {
        display: none;
    }
}
a[id*="clocklink"] {
    @include icon(clock);
    img, .clock-icon {
        display: none;
    }
}
.messagelist li.success {
    @include icon(check-circle);
}
.messagelist li.error {
    @include icon(minus-circle);
}
.messagelist li.warning {
    @include icon(exclamation-triangle);
}
.messagelist li.info {
    @include icon(info-circle);
}

.related-lookup {
    @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
    padding: 0;
    &:before {
        color: $white;
    }
}

.addlink,
.addlink a {
    color: $color-success;
    &:hover {
        color: $color-success-dark !important;
    }
}
.changelink,
.changelink a {
    color: $color-primary;
    &:hover {
        color: $color-primary-dark !important;
    }
}
.deletelink,
.deletelink a {
    color: $color-danger;
}

.addlink,
.changelink,
.deletelink {
    padding-left: 15px;
}

// Viewlink uses a django supplied icon, we need to ensure that we don't override it's styling
.viewlink {
    padding-left: 15px !important;
}

.related-lookup,
.add-another {
    margin: 0 5px;
    &:hover,
    &:focus,
    &:active {
        text-decoration: none !important;
    }
}
.add-another,
.add-related,
.change-related,
.delete-related,
.view-related {
    @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);
    display: inline-block;
    // make sure that add another button has correct width and height on advanced setting #293
    width: 36px;
    height: 36px;
    padding: 10px 9px!important;
    margin: 10px 0;
    // make sure that button has correct width and height on advanced setting #291
    box-sizing: border-box !important;
    &:before {
        color: $gray-darker;
        vertical-align: top;
        margin: 0;
    }
    img {
        display: none;
    }
}

.tree {
    // vertical align image icons in page tree #220
    .col-navigation {
        line-height: 26px !important;
        img {
            vertical-align: middle;
            width: 14px;
            height: 14px;
        }
    }
    .col-language a {
        vertical-align: top !important;
    }
    .changelink {
        background-image: url("../img/icon_changelink_white.png");
    }
    .addlink,
    .deletelink {
        display: inline !important;
        &:before {
            font-size: $font-size-normal;
            margin: 0;
        }
    }
}

#sitemap li .col-softroot span.icon {
    width: 15px;
    height: 15px;
    margin: 7px 5px 0 0;
    background: url("../img/icon_softroot.png") 0 0 no-repeat;
}

// retina
@media only screen and (-webkit-min-device-pixel-ratio:2),
only screen and (-o-min-device-pixel-ratio:2),
only screen and (min--moz-device-pixel-ratio:2),
only screen and (min-device-pixel-ratio:2) {
    .tree .changelink {
        background-image: url("../img/icon_changelink_white@2x.png");
        background-size: 11px;
    }
    #sitemap li .col-softroot span.icon {
        background-image: url("../img/icon_softroot@2x.png");
        background-size: 15px;
    }
}


================================================
FILE: djangocms_admin_style/sass/components/_login.scss
================================================
//##############################################################################
// LOGIN

body.login.djangocms-admin-style {
    background: none !important;
    background-color: $gray-lightest !important;
    #container {
        @include box();
        width: 35.5% !important;
        min-width: 320px !important;
        margin-top: 165px;
        padding: 20px 0;
        border: none;
        box-shadow: $base-box-shadow;
        background-color: $white !important;
        overflow: visible;
        #content-main {
            float: none;
        }
        #header {
            position: static;
            background: none;
            box-shadow: none;
            padding: 0;
            #branding h1 {
                display: block;
                float: none;
                color: $gray-darkest;
                font-size: $font-size-large;
                line-height: inherit;
                height: auto;
                margin: 50px 20px 0 !important;
            }
        }
        #header-logo{
            float: none;
            text-align: center;
            margin-top: -70px;
            a:before {
                font-size: 35px;
            }
        }
        #header-btn,
        #header-logo h1,
        #site-name {
            display: none;
        }
        #content {
            margin: 0 !important;
            padding: 17px 20px 30px !important;
            .errornote {
                width: calc(100% - 20px) !important;
            }
            #content-main {
                form {
                    margin: 0 !important;
                    padding: 0;
                    box-shadow: none;
                }
                .form-row {
                    padding-bottom: 10px;
                    label {
                        float: left !important;
                        font-size: $font-size-normal;
                        line-height: $line-height-normal;
                    }
                    input {
                        color: $gray-darkest !important;
                        font-size: $font-size-small;
                        width: 100% !important;
                        padding: 10px;
                    }
                    #id_username,
                    #id_password {
                        // resets password field background color on login screen #175, #151
                        background-color: $white;
                        // resets margin top on login screen which is used in general forms #255
                        margin-top: 0 !important;
                    }
                }
                .submit-row {
                    float: right;
                    width: 100%;
                    padding: 0 !important;
                    margin-top: 10px;
                    margin-right: 0;
                    background: none;
                    border-top: 0;
                    input,
                    input[type="submit"] {
                        @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);
                        float: right;
                        width: auto !important;
                        padding: 10px 20px !important;
                        background-image: none;
                    }
                    label {
                        display: none;
               
Download .txt
gitextract_fjw6171a/

├── .coveragerc
├── .csscomb.json
├── .dockerignore
├── .editorconfig
├── .eslintrc.js
├── .github/
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── codeql.yml
│       ├── lint.yml
│       ├── publish-to-live-pypi.yml
│       ├── publish-to-test-pypi.yml
│       ├── screenshots.yml
│       └── test.yml
├── .gitignore
├── .nvmrc
├── .pre-commit-config.yaml
├── .tx/
│   └── config
├── CHANGELOG.rst
├── Dockerfile
├── Dockerfile.django-2.2
├── Dockerfile.django-3.2
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── djangocms_admin_style/
│   ├── __init__.py
│   ├── locale/
│   │   ├── de/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── en/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── es/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── fr/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── it/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── lt/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   ├── ru/
│   │   │   └── LC_MESSAGES/
│   │   │       ├── django.mo
│   │   │       └── django.po
│   │   └── uk/
│   │       └── LC_MESSAGES/
│   │           ├── django.mo
│   │           └── django.po
│   ├── models.py
│   ├── sass/
│   │   ├── components/
│   │   │   ├── _base.scss
│   │   │   ├── _changelist.scss
│   │   │   ├── _cms-update.scss
│   │   │   ├── _cmsplaceholders.scss
│   │   │   ├── _content.scss
│   │   │   ├── _dashboard.scss
│   │   │   ├── _dialog.scss
│   │   │   ├── _django-nested-admin.scss
│   │   │   ├── _drag-and-drop.scss
│   │   │   ├── _filer.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _forms.scss
│   │   │   ├── _header.scss
│   │   │   ├── _iconography.scss
│   │   │   ├── _icons.scss
│   │   │   ├── _login.scss
│   │   │   ├── _messages.scss
│   │   │   ├── _mobile.scss
│   │   │   ├── _modal.scss
│   │   │   ├── _shortcuts.scss
│   │   │   ├── _sideframe.scss
│   │   │   ├── _sticky-nav.scss
│   │   │   └── _tables.scss
│   │   ├── djangocms-admin.scss
│   │   ├── libs/
│   │   │   ├── _html5-boilerplate.scss
│   │   │   ├── _iconfont.scss
│   │   │   ├── _normalize.scss
│   │   │   └── html5-boilerplate/
│   │   │       ├── _fonts.scss
│   │   │       ├── _helpers.scss
│   │   │       ├── _media.scss
│   │   │       ├── _reset.scss
│   │   │       └── _styles.scss
│   │   ├── mixins/
│   │   │   ├── _all.scss
│   │   │   ├── _custom.scss
│   │   │   └── _zindex.scss
│   │   └── settings/
│   │       ├── _all.scss
│   │       ├── _cms.scss
│   │       ├── _custom.scss
│   │       └── _reset-django-dark-mode.scss
│   ├── static/
│   │   └── djangocms_admin_style/
│   │       ├── css/
│   │       │   └── djangocms-admin.css
│   │       └── js/
│   │           ├── base-admin.js
│   │           ├── dist/
│   │           │   ├── bundle.adminstyle.min.js
│   │           │   └── bundle.adminstyle.min.js.LICENSE.txt
│   │           └── modules/
│   │               ├── dark-mode.js
│   │               ├── datetimefields.js
│   │               ├── drag-touch-support.js
│   │               ├── form-submit.js
│   │               ├── related-widget-wrapper.js
│   │               ├── toolbar-dropdown.js
│   │               ├── ui-fixes.js
│   │               └── update-notification.js
│   ├── templates/
│   │   └── admin/
│   │       ├── base_site.html
│   │       ├── delete_confirmation.html
│   │       ├── delete_selected_confirmation.html
│   │       └── inc/
│   │           ├── branding.html
│   │           ├── cms_upgrade_notification.html
│   │           ├── extrahead.html
│   │           ├── extrastyle.html
│   │           ├── nav-global.html
│   │           ├── title.html
│   │           └── userlinks.html
│   └── templatetags/
│       ├── __init__.py
│       └── admin_style_tags.py
├── gulpfile.js
├── package.json
├── pyproject.toml
├── requirements.in
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── __init__.py
│   ├── frontend/
│   │   ├── .eslintrc.js
│   │   ├── casperjs.conf.js
│   │   └── integration/
│   │       ├── addNewUser.js
│   │       ├── dashboard.js
│   │       ├── handlers/
│   │       │   ├── externalMissing.js
│   │       │   ├── loadFailures.js
│   │       │   ├── missingPages.js
│   │       │   ├── pageErrors.js
│   │       │   └── suiteFailures.js
│   │       ├── loginAdmin.js
│   │       ├── pagetree.js
│   │       └── setup.js
│   ├── requirements/
│   │   ├── base.txt
│   │   ├── django-2.2.txt
│   │   ├── django-3.2.txt
│   │   ├── django-4.2.txt
│   │   └── django-5.0.txt
│   ├── settings-docker.py
│   ├── settings.py
│   ├── templates/
│   │   ├── base.html
│   │   ├── fullwidth.html
│   │   ├── page.html
│   │   └── simple.html
│   ├── test_migrations.py
│   └── test_templatetags.py
├── tox.ini
└── webpack.config.js
Download .txt
SYMBOL INDEX (115 symbols across 15 files)

FILE: djangocms_admin_style/static/djangocms_admin_style/js/dist/bundle.adminstyle.min.js
  function b (line 2) | function b(e){var t="length"in e&&e.length,n=m.type(e);return"function"!...
  function oe (line 2) | function oe(e,t,r,i){var o,s,l,c,d,h,v,y,T,C;if((t?t.ownerDocument||t:w)...
  function ae (line 2) | function ae(){var e=[];return function t(n,i){return e.push(n+" ")>r.cac...
  function se (line 2) | function se(e){return e[b]=!0,e}
  function ue (line 2) | function ue(e){var t=p.createElement("div");try{return!!e(t)}catch(e){re...
  function le (line 2) | function le(e,t){for(var n=e.split("|"),i=e.length;i--;)r.attrHandle[n[i...
  function ce (line 2) | function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sou...
  function de (line 2) | function de(e){return function(t){return"input"===t.nodeName.toLowerCase...
  function fe (line 2) | function fe(e){return function(t){var n=t.nodeName.toLowerCase();return(...
  function pe (line 2) | function pe(e){return se((function(t){return t=+t,se((function(n,r){for(...
  function he (line 2) | function he(e){return e&&void 0!==e.getElementsByTagName&&e}
  function me (line 2) | function me(){}
  function ge (line 2) | function ge(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}
  function ve (line 2) | function ve(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=C++;return t.firs...
  function ye (line 2) | function ye(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;...
  function xe (line 2) | function xe(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(...
  function be (line 2) | function be(e,t,n,r,i,o){return r&&!r[b]&&(r=be(r)),i&&!i[b]&&(i=be(i,o)...
  function we (line 2) | function we(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.r...
  function Te (line 2) | function Te(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var...
  function N (line 2) | function N(e,t,n){if(m.isFunction(t))return m.grep(e,(function(e,r){retu...
  function _ (line 2) | function _(e,t){do{e=e[t]}while(e&&1!==e.nodeType);return e}
  function O (line 2) | function O(){S.addEventListener?(S.removeEventListener("DOMContentLoaded...
  function B (line 2) | function B(){(S.addEventListener||"load"===event.type||"complete"===S.re...
  function I (line 2) | function I(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
  function $ (line 2) | function $(e){var t;for(t in e)if(("data"!==t||!m.isEmptyObject(e[t]))&&...
  function z (line 2) | function z(e,t,n,r){if(m.acceptData(e)){var i,a,s=m.expando,u=e.nodeType...
  function X (line 2) | function X(e,t,n){if(m.acceptData(e)){var r,i,o=e.nodeType,a=o?m.cache:e...
  function ne (line 2) | function ne(){return!0}
  function re (line 2) | function re(){return!1}
  function ie (line 2) | function ie(){try{return S.activeElement}catch(e){}}
  function oe (line 2) | function oe(e){var t=ae.split("|"),n=e.createDocumentFragment();if(n.cre...
  function we (line 2) | function we(e,t){var n,r,i=0,o=typeof e.getElementsByTagName!==R?e.getEl...
  function Te (line 2) | function Te(e){Y.test(e.type)&&(e.defaultChecked=e.checked)}
  function Ce (line 2) | function Ce(e,t){return m.nodeName(e,"table")&&m.nodeName(11!==t.nodeTyp...
  function Ee (line 2) | function Ee(e){return e.type=(null!==m.find.attr(e,"type"))+"/"+e.type,e}
  function Ne (line 2) | function Ne(e){var t=ve.exec(e.type);return t?e.type=t[1]:e.removeAttrib...
  function ke (line 2) | function ke(e,t){for(var n,r=0;null!=(n=e[r]);r++)m._data(n,"globalEval"...
  function Se (line 2) | function Se(e,t){if(1===t.nodeType&&m.hasData(e)){var n,r,i,o=m._data(e)...
  function je (line 2) | function je(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCas...
  function Le (line 2) | function Le(e,t){var n,i=m(t.createElement(e)).appendTo(t.body),o=r.getD...
  function _e (line 2) | function _e(e){var t=S,n=Ae[e];return n||("none"!==(n=Le(e,t))&&n||((t=(...
  function Fe (line 2) | function Fe(e,t){return{get:function(){var n=e();if(null!=n)return n?voi...
  function u (line 2) | function u(){var e,t,n,u;(t=S.getElementsByTagName("body")[0])&&t.style&...
  function Je (line 2) | function Je(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+...
  function Qe (line 2) | function Qe(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)(r=e[a]).styl...
  function Ve (line 2) | function Ve(e,t,n){var r=Ie.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[...
  function Ye (line 2) | function Ye(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===...
  function Ge (line 2) | function Ge(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o...
  function Ke (line 2) | function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}
  function at (line 2) | function at(){return setTimeout((function(){Ze=void 0})),Ze=m.now()}
  function st (line 2) | function st(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)r["margin...
  function ut (line 2) | function ut(e,t,n){for(var r,i=(ot[t]||[]).concat(ot["*"]),o=0,a=i.lengt...
  function lt (line 2) | function lt(e,t,n){var r,i,o=0,a=it.length,s=m.Deferred().always((functi...
  function Mt (line 2) | function Mt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var ...
  function qt (line 2) | function qt(e,t,n,r){var i={},o=e===_t;function a(s){var u;return i[s]=!...
  function Ot (line 2) | function Ot(e,t){var n,r,i=m.ajaxSettings.flatOptions||{};for(r in t)voi...
  function T (line 2) | function T(e,t,n,r){var l,v,y,b,T,C=t;2!==x&&(x=2,a&&clearTimeout(a),u=v...
  function It (line 2) | function It(e,t,n,r){var i;if(m.isArray(t))m.each(t,(function(t,i){n||Ft...
  function Ut (line 2) | function Ut(){try{return new r.XMLHttpRequest}catch(e){}}
  function Gt (line 2) | function Gt(e){return m.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e....
  function e (line 2) | function e(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e]...
  function t (line 2) | function t(n){function r(t,i,o){var a;if("undefined"!=typeof document){i...
  function t (line 2) | function t(e){return[].slice.call(e)}
  function n (line 2) | function n(e,t){return!(!e.className||!e.className.match(new RegExp(t)))}
  function r (line 2) | function r(e,t){for(var r=e;r&&1===r.nodeType;){if(n(r,t))return r;r=r.p...
  function i (line 2) | function i(){return t(document.getElementsByTagName("input")).map((funct...
  function e (line 2) | function e(e){var t=e.originalEvent.changedTouches[0],n=document.createE...
  function t (line 2) | function t(){var e,t;(t=document.getElementsByClassName("related-widget-...
  function t (line 2) | function t(e,t){var n=e.className,r=n.indexOf(t);if(!e||!t)return!1;-1==...
  function u (line 2) | function u(e,t){var n=function(e,t){var n,r,i,o=/(\.0)+[^\.]*$/;for(e=(e...
  function t (line 2) | function t(e,t){if(!(e.originalEvent.touches.length>1)){e.preventDefault...
  function d (line 2) | function d(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={expo...

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/dark-mode.js
  function getTopWindow (line 7) | function getTopWindow() {
  function getColorSchemeFromSettings (line 23) | function getColorSchemeFromSettings(CMS) {
  function darkModeSettings (line 46) | function darkModeSettings() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/datetimefields.js
  function arrayFrom (line 8) | function arrayFrom(arrayLike) {
  function hasClass (line 18) | function hasClass(element, className) {
  function closest (line 31) | function closest(element, className) {
  function getDateTimeFields (line 51) | function getDateTimeFields() {
  function reorganizeMarkup (line 71) | function reorganizeMarkup() {
  function ensureLabelsExist (line 118) | function ensureLabelsExist() {
  function init (line 149) | function init() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/drag-touch-support.js
  function touchHandler (line 10) | function touchHandler(event) {
  function initSupport (line 31) | function initSupport(elements) {
  function init (line 51) | function init() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/form-submit.js
  function preventDoubleFormSubmissions (line 4) | function preventDoubleFormSubmissions() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/related-widget-wrapper.js
  function arrayFrom (line 8) | function arrayFrom(arrayLike) {
  function getRelatedWidgetWrappers (line 18) | function getRelatedWidgetWrappers() {
  function addsClassNames (line 33) | function addsClassNames() {
  function init (line 50) | function init() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/toolbar-dropdown.js
  function toggleClass (line 7) | function toggleClass(element, className) {
  function init (line 30) | function init() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/ui-fixes.js
  function init (line 9) | function init() {

FILE: djangocms_admin_style/static/djangocms_admin_style/js/modules/update-notification.js
  function getLatestVersionData (line 13) | function getLatestVersionData(data) {
  function compareVersion (line 26) | function compareVersion(a, b) {
  function greaterThanVersion (line 54) | function greaterThanVersion(a, b) {
  function injectMessage (line 76) | function injectMessage(versionObject, checkType) {
  function shouldShowMessage (line 120) | function shouldShowMessage(versionObj, currentVersion, checkType) {
  function getVersionObject (line 143) | function getVersionObject(versions, currentVersion, checkType) {
  function init (line 170) | function init() {

FILE: djangocms_admin_style/templatetags/admin_style_tags.py
  function current_site_name (line 17) | def current_site_name(context):
  function render_update_notification (line 30) | def render_update_notification(context):

FILE: gulpfile.js
  constant PROJECT_ROOT (line 34) | const PROJECT_ROOT = __dirname;
  constant PROJECT_PATH (line 35) | const PROJECT_PATH = {
  constant PROJECT_PATTERNS (line 43) | const PROJECT_PATTERNS = {
  constant INTEGRATION_TESTS (line 55) | const INTEGRATION_TESTS = [

FILE: tests/settings-docker.py
  function run (line 75) | def run():

FILE: tests/settings.py
  function run (line 20) | def run():

FILE: tests/test_migrations.py
  class MigrationTestCase (line 9) | class MigrationTestCase(TestCase):
    method test_for_missing_migrations (line 11) | def test_for_missing_migrations(self):

FILE: tests/test_templatetags.py
  class Object (line 6) | class Object:
  class TemplateTagsTestCase (line 10) | class TemplateTagsTestCase(TestCase):
    method setUp (line 11) | def setUp(self) -> None:
    method test_current_site_name (line 14) | def test_current_site_name(self):
    method test_render_update_notification (line 32) | def test_render_update_notification(self):
Condensed preview — 140 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (656K chars).
[
  {
    "path": ".coveragerc",
    "chars": 309,
    "preview": "[run]\nbranch = True\nsource = djangocms_admin_style\nomit =\n    migrations/*\n    tests/*\n\n[report]\nexclude_lines =\n    pra"
  },
  {
    "path": ".csscomb.json",
    "chars": 9196,
    "preview": "{\n    \"always-semicolon\": true,\n    \"block-indent\": \"    \",\n    \"color-case\": \"lower\",\n    \"color-shorthand\": true,\n    "
  },
  {
    "path": ".dockerignore",
    "chars": 31,
    "preview": "testdb.sqlite\nnode_modules\nenv\n"
  },
  {
    "path": ".editorconfig",
    "chars": 426,
    "preview": "# editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 4\nend_of_line = lf\ncharset = utf-8\ntrim_trailing"
  },
  {
    "path": ".eslintrc.js",
    "chars": 6143,
    "preview": "module.exports = {\n    \"env\": {\n        \"browser\": true,\n        \"node\": true,\n        \"jquery\": true,\n        \"jasmine\""
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 828,
    "preview": "## Description\n\n<!--\nIf this is a security issue stop right here and follow our documentation:\nhttp://docs.django-cms.or"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 840,
    "preview": "name: \"CodeQL\"\n\non:\n  push:\n    branches: [ \"master\" ]\n  pull_request:\n    branches: [ \"master\" ]\n  schedule:\n    - cron"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 703,
    "preview": "name: Lint\n\non: [push]\n\njobs:\n  flake8:\n    name: flake8\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n  "
  },
  {
    "path": ".github/workflows/publish-to-live-pypi.yml",
    "chars": 862,
    "preview": "name: Publish Python 🐍 distributions 📦 to pypi\n\non:\n  release:\n    types:\n      - published\n\njobs:\n  build-n-publish:\n  "
  },
  {
    "path": ".github/workflows/publish-to-test-pypi.yml",
    "chars": 913,
    "preview": "name: Publish Python 🐍 distributions 📦 to TestPyPI\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  build-n-publish:\n "
  },
  {
    "path": ".github/workflows/screenshots.yml",
    "chars": 565,
    "preview": "name: screenshots\n\non: pull_request\n\njobs:\n  screenshots:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: f"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 1092,
    "preview": "name: CodeCov\n\non: [push, pull_request]\n\njobs:\n  unit-tests:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast"
  },
  {
    "path": ".gitignore",
    "chars": 362,
    "preview": "*.py[cod]\n*$py.class\n*.egg-info\n*.log\n*.pot\n.DS_Store\n.coverage\n.eggs/\n.idea/\n.project/\n.pydevproject/\n.vscode/\n.setting"
  },
  {
    "path": ".nvmrc",
    "chars": 3,
    "preview": "20\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 1378,
    "preview": "ci:\n    autofix_commit_msg: |\n        ci: auto fixes from pre-commit hooks\n\n        for more information, see https://pr"
  },
  {
    "path": ".tx/config",
    "chars": 255,
    "preview": "[main]\nhost = https://www.transifex.com\n\n[djangocms-admin-style.djangocms_admin_style]\nfile_filter = djangocms_admin_sty"
  },
  {
    "path": "CHANGELOG.rst",
    "chars": 9636,
    "preview": "=========\nChangelog\n=========\n\n3.3.0 (2024-01-14)\n==================\n\n* Allow more than two columns (as in the original "
  },
  {
    "path": "Dockerfile",
    "chars": 677,
    "preview": "FROM python:3.8.12\n\n# Pillow requirements\nRUN apt-get update \\\n    && apt-get -y install libtiff5-dev libjpeg62-turbo-de"
  },
  {
    "path": "Dockerfile.django-2.2",
    "chars": 172,
    "preview": "FROM djangocms-admin-style-test:base\n\nRUN pip install -r /app/tests/requirements/django-2.2.txt\n\nENV SCREENSHOT_REFERENC"
  },
  {
    "path": "Dockerfile.django-3.2",
    "chars": 172,
    "preview": "FROM djangocms-admin-style-test:base\n\nRUN pip install -r /app/tests/requirements/django-3.2.txt\n\nENV SCREENSHOT_REFERENC"
  },
  {
    "path": "LICENSE",
    "chars": 1475,
    "preview": "Copyright (c) 2012, Divio AG\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmo"
  },
  {
    "path": "MANIFEST.in",
    "chars": 204,
    "preview": "include LICENSE\ninclude README.rst\nrecursive-include djangocms_admin_style *\nrecursive-include djangocms_admin_style/loc"
  },
  {
    "path": "Makefile",
    "chars": 1087,
    "preview": "PORT = 8000\nVERSION = 2.2\n\n\nbuild:\n\tdocker build -t djangocms-admin-style-test:base -f Dockerfile .\n\ncleanup:\n\trm -rf *t"
  },
  {
    "path": "README.rst",
    "chars": 8388,
    "preview": "======================\ndjango CMS Admin Style\n======================\n\n|pypi| |python| |django| |djangocms| |djangocms4| "
  },
  {
    "path": "djangocms_admin_style/__init__.py",
    "chars": 875,
    "preview": "\"\"\"\nSee PEP 440 (https://www.python.org/dev/peps/pep-0440/)\n\nRelease logic:\n 1. Increase version number (change __versio"
  },
  {
    "path": "djangocms_admin_style/locale/de/LC_MESSAGES/django.po",
    "chars": 4279,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/en/LC_MESSAGES/django.po",
    "chars": 4081,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/es/LC_MESSAGES/django.po",
    "chars": 4186,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/fr/LC_MESSAGES/django.po",
    "chars": 4327,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/it/LC_MESSAGES/django.po",
    "chars": 4183,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/lt/LC_MESSAGES/django.po",
    "chars": 4094,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/ru/LC_MESSAGES/django.po",
    "chars": 4210,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/locale/uk/LC_MESSAGES/django.po",
    "chars": 4149,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "djangocms_admin_style/models.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "djangocms_admin_style/sass/components/_base.scss",
    "chars": 8289,
    "preview": "//##############################################################################\n// BASE\n\nbody {\n    background-color: $"
  },
  {
    "path": "djangocms_admin_style/sass/components/_changelist.scss",
    "chars": 14744,
    "preview": "//##############################################################################\n// CHANGELIST\n\n// resets form white bac"
  },
  {
    "path": "djangocms_admin_style/sass/components/_cms-update.scss",
    "chars": 398,
    "preview": ".cms-update-message {\n    position: relative;\n    margin-bottom: 30px;\n    padding: 10px 20px 10px 10px;\n    border: 1px"
  },
  {
    "path": "djangocms_admin_style/sass/components/_cmsplaceholders.scss",
    "chars": 676,
    "preview": "//##############################################################################\n// CMS PLACEHOLDERS\n\n.plugin-holder {\n "
  },
  {
    "path": "djangocms_admin_style/sass/components/_content.scss",
    "chars": 20736,
    "preview": "//##############################################################################\n// CONTENT\n\nhtml {\n    // makes sure th"
  },
  {
    "path": "djangocms_admin_style/sass/components/_dashboard.scss",
    "chars": 4352,
    "preview": "//##############################################################################\n// DASHBOARD\n\nbody.dashboard {\n    back"
  },
  {
    "path": "djangocms_admin_style/sass/components/_dialog.scss",
    "chars": 748,
    "preview": "// resets form and background styles in dialog window #186\n// fixes missing border under copy permissions text & padding"
  },
  {
    "path": "djangocms_admin_style/sass/components/_django-nested-admin.scss",
    "chars": 786,
    "preview": "//##############################################################################\n// TREEBEARD\n\n// https://github.com/the"
  },
  {
    "path": "djangocms_admin_style/sass/components/_drag-and-drop.scss",
    "chars": 1250,
    "preview": "//##############################################################################\n// TREEBEARD\n\n#drag_line {\n    border-t"
  },
  {
    "path": "djangocms_admin_style/sass/components/_filer.scss",
    "chars": 10997,
    "preview": "//##############################################################################\n// FILER\n\n.filebrowser {\n    ul.message"
  },
  {
    "path": "djangocms_admin_style/sass/components/_footer.scss",
    "chars": 120,
    "preview": "//##############################################################################\n// FOOTER\n\n#footer {\n    padding: 0;\n}\n"
  },
  {
    "path": "djangocms_admin_style/sass/components/_forms.scss",
    "chars": 27332,
    "preview": "//##############################################################################\n// FORMS\n\nform {\n    margin-bottom: 20p"
  },
  {
    "path": "djangocms_admin_style/sass/components/_header.scss",
    "chars": 7844,
    "preview": "//##############################################################################\n// HEADER\n\n#header {\n    // replaced ov"
  },
  {
    "path": "djangocms_admin_style/sass/components/_iconography.scss",
    "chars": 5801,
    "preview": "//######################################################################################################################"
  },
  {
    "path": "djangocms_admin_style/sass/components/_icons.scss",
    "chars": 5344,
    "preview": "//##############################################################################\n// ICONS\n\n// Overwrites background imag"
  },
  {
    "path": "djangocms_admin_style/sass/components/_login.scss",
    "chars": 3477,
    "preview": "//##############################################################################\n// LOGIN\n\nbody.login.djangocms-admin-st"
  },
  {
    "path": "djangocms_admin_style/sass/components/_messages.scss",
    "chars": 6665,
    "preview": "//##############################################################################\n// MESSAGES\n\n// Statuses Mixins\n@mixin "
  },
  {
    "path": "djangocms_admin_style/sass/components/_mobile.scss",
    "chars": 9165,
    "preview": "//##############################################################################\n// MOBILE\n\n// base\nhtml,\nbody {\n    hei"
  },
  {
    "path": "djangocms_admin_style/sass/components/_modal.scss",
    "chars": 8635,
    "preview": "//##############################################################################\n// MODAL\n\n.cms-admin-modal,\n.cms_modal-"
  },
  {
    "path": "djangocms_admin_style/sass/components/_shortcuts.scss",
    "chars": 1741,
    "preview": "//##############################################################################\n// DJANGO ADMIN SHORTCUTS\n\n.admin_short"
  },
  {
    "path": "djangocms_admin_style/sass/components/_sideframe.scss",
    "chars": 968,
    "preview": "//##############################################################################\n// SIDEFRAME\n\n.cms-admin-sideframe {\n  "
  },
  {
    "path": "djangocms_admin_style/sass/components/_sticky-nav.scss",
    "chars": 1955,
    "preview": ".djangocms-admin-style .main {\n    .sticky {\n        margin-top: $toolbar-height + ($breadcrumb-padding * 2) + $line-hei"
  },
  {
    "path": "djangocms_admin_style/sass/components/_tables.scss",
    "chars": 11744,
    "preview": "//##############################################################################\n// TABLES\n\n// adds general table styles"
  },
  {
    "path": "djangocms_admin_style/sass/djangocms-admin.scss",
    "chars": 1235,
    "preview": "/*!\n * @copyright: https://github.com/divio/djangocms-admin-style\n */\n\n//###############################################"
  },
  {
    "path": "djangocms_admin_style/sass/libs/_html5-boilerplate.scss",
    "chars": 631,
    "preview": "// HTML5 Boilerplate\n//\n// Credit is left where credit is due.\n// Much inspiration was taken from these projects:\n// - y"
  },
  {
    "path": "djangocms_admin_style/sass/libs/_iconfont.scss",
    "chars": 1336,
    "preview": "//######################################################################################################################"
  },
  {
    "path": "djangocms_admin_style/sass/libs/_normalize.scss",
    "chars": 9395,
    "preview": "// normalize.css 2011-11-04T15:38 UTC - http://github.com/necolas/normalize.css\n\n@mixin normalize {\n    // ============="
  },
  {
    "path": "djangocms_admin_style/sass/libs/html5-boilerplate/_fonts.scss",
    "chars": 1605,
    "preview": "$base-font-family: unquote(\"sans-serif\") !default;\n$base-font-size: 13px !default;\n$base-line-height: 1.231 !default;\n\n/"
  },
  {
    "path": "djangocms_admin_style/sass/libs/html5-boilerplate/_helpers.scss",
    "chars": 2438,
    "preview": "//\n// Non-semantic helper classes\n// It's better to include these mixins in your own styles\n//\n\n@mixin hide-text () {\n  "
  },
  {
    "path": "djangocms_admin_style/sass/libs/html5-boilerplate/_media.scss",
    "chars": 1691,
    "preview": "@mixin html5-boilerplate-media {\n    @warn \"The 'html5-boilerplate-media' mixin has been deprecated.\";\n}\n\n//\n// Print st"
  },
  {
    "path": "djangocms_admin_style/sass/libs/html5-boilerplate/_reset.scss",
    "chars": 2067,
    "preview": "//  html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)\n//  v1.6.1 2010-09-17 | Authors: Eri"
  },
  {
    "path": "djangocms_admin_style/sass/libs/html5-boilerplate/_styles.scss",
    "chars": 4587,
    "preview": "$font-color: #444 !default;  //looks better than black: twitter.com/H_FJ/statuses/11800719859\n$link-color: #607890 !defa"
  },
  {
    "path": "djangocms_admin_style/sass/mixins/_all.scss",
    "chars": 48,
    "preview": "@import \"_custom.scss\";\n@import \"_zindex.scss\";\n"
  },
  {
    "path": "djangocms_admin_style/sass/mixins/_custom.scss",
    "chars": 3172,
    "preview": "// mixins\n\n@mixin box() {\n    margin-bottom: 5px;\n    padding: 0;\n    border: none;\n    h2,\n    h3,\n    h4,\n    h5,\n    "
  },
  {
    "path": "djangocms_admin_style/sass/mixins/_zindex.scss",
    "chars": 881,
    "preview": "// #############################################################################\n// ZINDEX\n\n// handle z-index mor easily"
  },
  {
    "path": "djangocms_admin_style/sass/settings/_all.scss",
    "chars": 67,
    "preview": "@import \"reset-django-dark-mode\";\n@import \"cms\";\n@import \"custom\";\n"
  },
  {
    "path": "djangocms_admin_style/sass/settings/_cms.scss",
    "chars": 12782,
    "preview": "@use \"sass:math\";\n\n// #############################################################################\n// #SETTINGS#\n\n$spee"
  },
  {
    "path": "djangocms_admin_style/sass/settings/_custom.scss",
    "chars": 2260,
    "preview": "@use \"sass:math\";\n\n// This file must be imported before loading html5-boilerplate\n$base-font-family: \"Helvetica Neue\", \""
  },
  {
    "path": "djangocms_admin_style/sass/settings/_reset-django-dark-mode.scss",
    "chars": 2331,
    "preview": ":root[data-color-scheme=\"light\"],\n:root[data-theme=\"light\"] {\n    --primary: #79aec8;\n    --secondary: #417690;\n    --ac"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/css/djangocms-admin.css",
    "chars": 176700,
    "preview": "/*!\n * @copyright: https://github.com/divio/djangocms-admin-style\n */:root[data-color-scheme=light],:root[data-theme=lig"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/base-admin.js",
    "chars": 1047,
    "preview": "var $ = require('jquery');\nvar initDateTimeFields = require('./modules/datetimefields');\nvar initDragAndDropSupportForTr"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/dist/bundle.adminstyle.min.js",
    "chars": 104302,
    "preview": "/*! For license information please see bundle.adminstyle.min.js.LICENSE.txt */\n(()=>{var e,t,n,r,i,o,a,s,u,l={732:functi"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/dist/bundle.adminstyle.min.js.LICENSE.txt",
    "chars": 115,
    "preview": "/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */\n\n/*! js-cookie v2.1.2 | MIT */\n"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/dark-mode.js",
    "chars": 1825,
    "preview": "/**\n * Get top most window (from iframe)\n *\n * @function getTopWindow\n * @returns {window}\n */\nfunction getTopWindow() {"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/datetimefields.js",
    "chars": 3837,
    "preview": "/**\n * Creates arrays out of array-like collections\n *\n * @function arrayFrom\n * @param {NodeList|HTMLElementsCollection"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/drag-touch-support.js",
    "chars": 1949,
    "preview": "if (window.jQuery || (window.django && window.django.jQuery)) {\n    (function ($) {\n        $.fn.touchSupport = function"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/form-submit.js",
    "chars": 402,
    "preview": "var $ = require('jquery');\n\n// eslint-disable-next-line\nfunction preventDoubleFormSubmissions() {\n    $(document).on('su"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/related-widget-wrapper.js",
    "chars": 1216,
    "preview": "/**\n * Creates arrays out of array-like collections\n *\n * @function arrayFrom\n * @param {NodeList|HTMLElementsCollection"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/toolbar-dropdown.js",
    "chars": 1682,
    "preview": "/**\n * @function toggleClass\n * @param {Element} element\n * @param {String} className\n * @returns {Boolean|void}\n */\nfun"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/ui-fixes.js",
    "chars": 631,
    "preview": "var $ = require('jquery');\n\n/**\n * init various UI fixes\n *\n * @function init\n * @public\n */\nfunction init() {\n    var t"
  },
  {
    "path": "djangocms_admin_style/static/djangocms_admin_style/js/modules/update-notification.js",
    "chars": 5216,
    "preview": "var $ = require('jquery');\nvar Cookies = require('js-cookie');\nvar RELEASES_URL = 'https://pypi.org/pypi/django-cms/json"
  },
  {
    "path": "djangocms_admin_style/templates/admin/base_site.html",
    "chars": 971,
    "preview": "{% extends \"admin/base.html\" %}\n{% load i18n static admin_style_tags %}\n\n{% block extrastyle %}\n{{ block.super }}\n{% inc"
  },
  {
    "path": "djangocms_admin_style/templates/admin/delete_confirmation.html",
    "chars": 2118,
    "preview": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n{% load admin_urls %}\n\n{% block bodyclass %}djangocms-admin-style d"
  },
  {
    "path": "djangocms_admin_style/templates/admin/delete_selected_confirmation.html",
    "chars": 2044,
    "preview": "{% extends \"admin/base_site.html\" %}\n{% load i18n l10n %}\n{% load admin_urls %}\n\n{% block bodyclass %}djangocms-admin-st"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/branding.html",
    "chars": 1728,
    "preview": "{% load admin_style_tags i18n %}\n{% load static from static %}\n<div id=\"header-logo\">\n    <a class=\"icon-logo\" href=\"/\">"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/cms_upgrade_notification.html",
    "chars": 867,
    "preview": "{% load i18n %}\n<meta name=\"djangocms_version\" content=\"{{ cms_version }}\">\n<meta name=\"djangocms_version_check_type\" co"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/extrahead.html",
    "chars": 16,
    "preview": "{# extrahead #}\n"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/extrastyle.html",
    "chars": 63,
    "preview": "{# override this template with your app to have extra styles #}"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/nav-global.html",
    "chars": 43,
    "preview": "{# nav-global or django-admin-shortcuts #}\n"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/title.html",
    "chars": 77,
    "preview": "{% load i18n %}\n{{ title }} | {{ site_title|default:_('Django site admin') }}"
  },
  {
    "path": "djangocms_admin_style/templates/admin/inc/userlinks.html",
    "chars": 15,
    "preview": "{# userlinks #}"
  },
  {
    "path": "djangocms_admin_style/templatetags/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "djangocms_admin_style/templatetags/admin_style_tags.py",
    "chars": 1826,
    "preview": "from django import template\nfrom django.conf import settings\nfrom django.contrib.sites.shortcuts import get_current_site"
  },
  {
    "path": "gulpfile.js",
    "chars": 5157,
    "preview": "/**\n * @author:    Divio AG\n * @copyright: http://www.divio.ch\n */\n/* eslint-disable no-console */\n/*jshint esversion: 6"
  },
  {
    "path": "package.json",
    "chars": 615,
    "preview": "{\n  \"name\": \"djangocms-admin-style\",\n  \"private\": true,\n  \"devDependencies\": {\n    \"autoprefixer\": \"^10.4.17\",\n    \"brow"
  },
  {
    "path": "pyproject.toml",
    "chars": 387,
    "preview": "[tool.ruff]\nline-length = 119\n\nextend-exclude = [\n  \".ruff_cache\",\n  \".env\",\n  \".venv\",\n  \".po\",\n  \".svg\",\n]\n\n[tool.ruff"
  },
  {
    "path": "requirements.in",
    "chars": 40,
    "preview": "bump2version\npip-tools\npre-commit\nwheel\n"
  },
  {
    "path": "requirements.txt",
    "chars": 963,
    "preview": "#\n# This file is autogenerated by pip-compile with python 3.9\n# To update, run:\n#\n#    pip-compile\n#\n--trusted-host pypi"
  },
  {
    "path": "setup.cfg",
    "chars": 1174,
    "preview": "[bumpversion]\ncurrent_version = 3.2.0\ncommit = True\ntag = False\n\n[bumpversion:file:setup.py]\nsearch = version='{current_"
  },
  {
    "path": "setup.py",
    "chars": 2315,
    "preview": "#!/usr/bin/env python\nfrom pathlib import Path\n\nfrom setuptools import find_packages, setup\n\nfrom djangocms_admin_style "
  },
  {
    "path": "tests/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "tests/frontend/.eslintrc.js",
    "chars": 659,
    "preview": "module.exports = {\n    \"env\": {\n        \"node\": true\n    },\n    \"globals\": {\n        \"$\": true,\n        \"module\": true,\n"
  },
  {
    "path": "tests/frontend/casperjs.conf.js",
    "chars": 2455,
    "preview": "'use strict';\nvar fs = require('fs');\nvar phantomcss = require('phantomcss');\nvar system = require('system');\n\n// ######"
  },
  {
    "path": "tests/frontend/integration/addNewUser.js",
    "chars": 4770,
    "preview": "'use strict';\n\n// #############################################################################\n// User login via the ad"
  },
  {
    "path": "tests/frontend/integration/dashboard.js",
    "chars": 925,
    "preview": "'use strict';\n\n// #############################################################################\n// User login via the ad"
  },
  {
    "path": "tests/frontend/integration/handlers/externalMissing.js",
    "chars": 341,
    "preview": "'use strict';\n\n// #############################################################################\n// Handles external reso"
  },
  {
    "path": "tests/frontend/integration/handlers/loadFailures.js",
    "chars": 301,
    "preview": "'use strict';\n\n// #############################################################################\n// Handles load failure "
  },
  {
    "path": "tests/frontend/integration/handlers/missingPages.js",
    "chars": 459,
    "preview": "'use strict';\n\n// #############################################################################\n// Handles 404 and 500 p"
  },
  {
    "path": "tests/frontend/integration/handlers/pageErrors.js",
    "chars": 319,
    "preview": "'use strict';\n\n// #############################################################################\n// Handles JavaScript pa"
  },
  {
    "path": "tests/frontend/integration/handlers/suiteFailures.js",
    "chars": 816,
    "preview": "'use strict';\n\n// #############################################################################\n// Handles test suite er"
  },
  {
    "path": "tests/frontend/integration/loginAdmin.js",
    "chars": 2042,
    "preview": "'use strict';\n\n// #############################################################################\n// User login via the ad"
  },
  {
    "path": "tests/frontend/integration/pagetree.js",
    "chars": 2820,
    "preview": "'use strict';\n\n// #############################################################################\n// User login via the ad"
  },
  {
    "path": "tests/frontend/integration/setup.js",
    "chars": 428,
    "preview": "// #############################################################################\n// Init all settings and event handlers"
  },
  {
    "path": "tests/requirements/base.txt",
    "chars": 105,
    "preview": "# requirements from setup.py\ndjangocms-text-ckeditor\n# other requirements\ndjango-app-helper\ntox\ncoverage\n"
  },
  {
    "path": "tests/requirements/django-2.2.txt",
    "chars": 50,
    "preview": "-r base.txt\nDjango>=2.2,<3.0\ndjango-cms>=3.7,<3.8\n"
  },
  {
    "path": "tests/requirements/django-3.2.txt",
    "chars": 46,
    "preview": "-r base.txt\nDjango>=3.2,<4\ndjango-cms>=3.8,<4\n"
  },
  {
    "path": "tests/requirements/django-4.2.txt",
    "chars": 49,
    "preview": "-r base.txt\nDjango>=4.2,<5\ndjango-cms>=3.11.1,<4\n"
  },
  {
    "path": "tests/requirements/django-5.0.txt",
    "chars": 41,
    "preview": "-r base.txt\nDjango>=5,<5.1\ndjango-cms>=4\n"
  },
  {
    "path": "tests/settings-docker.py",
    "chars": 2311,
    "preview": "#!/usr/bin/env python\nimport os\nimport sys\n\nHELPER_SETTINGS = {\n    \"INSTALLED_APPS\": [\n        \"djangocms_text_ckeditor"
  },
  {
    "path": "tests/settings.py",
    "chars": 472,
    "preview": "#!/usr/bin/env python\nHELPER_SETTINGS = {\n    \"INSTALLED_APPS\": [\n        \"djangocms_text_ckeditor\",\n    ],\n    \"CMS_LAN"
  },
  {
    "path": "tests/templates/base.html",
    "chars": 1040,
    "preview": "{% load cms_tags static menu_tags sekizai_tags %}\n<!DOCTYPE html>\n<html>\n<head>\n    <title>{% block title %}This is my n"
  },
  {
    "path": "tests/templates/fullwidth.html",
    "chars": 315,
    "preview": "{% extends \"base.html\" %}\n{% load cms_tags %}\n\n{% block title %}{% page_attribute 'title' %}{% endblock title %}\n\n{% blo"
  },
  {
    "path": "tests/templates/page.html",
    "chars": 359,
    "preview": "{% extends \"base.html\" %}\n{% load cms_tags %}\n\n{% block title %}{% page_attribute 'title' %}{% endblock title %}\n\n{% blo"
  },
  {
    "path": "tests/templates/simple.html",
    "chars": 261,
    "preview": "{% load cms_tags sekizai_tags %}\n{% render_block \"css\" %}\n<style>\n\t/* Add some padding so that the placeholder menu will"
  },
  {
    "path": "tests/test_migrations.py",
    "chars": 890,
    "preview": "# original from\n# http://tech.octopus.energy/news/2016/01/21/testing-for-missing-migrations-in-django.html\nimport io\n\nfr"
  },
  {
    "path": "tests/test_templatetags.py",
    "chars": 1362,
    "preview": "import cms\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\n\n\nclass Object:\n    pass\n\n\ncla"
  },
  {
    "path": "tox.ini",
    "chars": 794,
    "preview": "[tox]\nenvlist =\n    flake8\n    isort\n    docker\n    py{37,38}-dj{22}-cms{37,38}\n    py{37,38,39,310}-dj{31}-cms{38,39}\n\n"
  },
  {
    "path": "webpack.config.js",
    "chars": 2061,
    "preview": "const path = require('path');\nconst webpack = require('webpack');\nconst TerserPlugin = require(\"terser-webpack-plugin\");"
  }
]

// ... and 8 more files (download for full content)

About this extraction

This page contains the full source code of the divio/djangocms-admin-style GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 140 files (611.5 KB), approximately 169.6k tokens, and a symbol index with 115 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!