Metadata-Version: 2.4
Name: djangocms-frontend
Version: 2.5.3
Summary: Adds abstract User Interface items as plugins to django CMS.
Author-email: Fabian Braun <fsbraun@gmx.de>
License-Expression: BSD-3-Clause
Project-URL: Release notes, https://github.com/django-cms/djangocms-frontend/blob/master/CHANGELOG.rst
Project-URL: Documentation, https://djangocms-frontend.readthedocs.io
Project-URL: Issues, https://github.com/django-cms/djangocms-frontend/issues
Project-URL: Source, https://github.com/django-cms/djangocms-frontend
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
Classifier: Framework :: Django :: 5.2
Classifier: Framework :: Django CMS
Classifier: Framework :: Django CMS :: 3.11
Classifier: Framework :: Django CMS :: 4.1
Classifier: Framework :: Django CMS :: 5.0
Classifier: Framework :: Django CMS :: 5.1
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: django-cms>=3.7
Requires-Dist: django-entangled>=0.6
Requires-Dist: django-filer>=1.7
Requires-Dist: djangocms-attributes-field>=4
Requires-Dist: djangocms-link>=5
Requires-Dist: easy-thumbnails
Provides-Extra: cms-3
Requires-Dist: django-cms<4; extra == "cms-3"
Requires-Dist: django-parler; extra == "cms-3"
Requires-Dist: djangocms-link>=5; extra == "cms-3"
Requires-Dist: djangocms-text; extra == "cms-3"
Provides-Extra: cms-4
Requires-Dist: django-cms>=4.1; extra == "cms-4"
Requires-Dist: django-parler; extra == "cms-4"
Requires-Dist: djangocms-alias>=2; extra == "cms-4"
Requires-Dist: djangocms-link>=5; extra == "cms-4"
Requires-Dist: djangocms-text; extra == "cms-4"
Requires-Dist: djangocms-versioning>=2; extra == "cms-4"
Provides-Extra: djangocms-icon
Requires-Dist: djangocms-icon>=1.4; extra == "djangocms-icon"
Provides-Extra: static-ace
Requires-Dist: djangocms-static-ace; extra == "static-ace"
Dynamic: license-file

#####################
 django CMS Frontend
#####################

|pypi| |docs| |coverage| |python| |django| |djangocms|

django CMS Frontend is a versatile plugin suite for django CMS that facilitates
the easy creation of reusable frontend components. It supports any CSS framework,
allowing developers to seamlessly integrate their preferred styling libraries.
For immediate use, it includes a comprehensive set of Bootstrap 5 components
and templates.


.. image:: preview.png

Why this exists
===============

The plugin tree is the editor's interface. Every component you define, every
nesting rule you allow, and every name you choose becomes a decision an editor
has to make – over and over. **Plugin architecture is editor experience.**

django CMS Frontend exists so that you can shape that experience deliberately:
declare components that model editorial intent rather than framework internals,
constrain what can go where, and keep the CSS framework an implementation
detail instead of a structure your editors have to navigate.

Further reading: `Plugin Architecture Is Editor Experience
<https://www.django-cms.org/resources/blog/2026/09/07/plugin-architecture-is-editor-experience/>`_.

Key features
============

* **Effortless Development of Custom Components**: Create reusable frontend
  components with ease, utilizing simple templates and declarative form
  classes. These components can function both as CMS plugins and within
  standard Django templates.

* **Framework-Agnostic Design**: Maintain flexibility in your project's design
  by decoupling plugins from specific versions of a CSS framework. This ensures
  that updating frameworks in the future doesn't necessitate rebuilding your
  site's plugin structure.

* **Built-in Bootstrap 5 Components**: Access a ready-to-use collection
  of Bootstrap 5 components, streamlining the process of building responsive
  and modern interfaces.

* **Extensibility**: Enhance your project by creating custom components with
  minimal code. The system is designed to be extended both within individual
  projects and through separate theme applications.

* **Consistent User Experience**: Utilize plugins as UI components throughout
  your project, promoting a cohesive and uniform user interface.


Building admin CSS
==================

Use the Node version in ``.nvmrc`` and install the build dependencies with
``npm install``. Run ``npm run build`` to compile the Sass in ``private/sass``
into the packaged admin CSS, with browser prefixes and minification.

For development, ``npm run build -- --debug`` produces expanded CSS with source
maps. ``npm run watch`` rebuilds that output when Sass files change.
``npm run lint`` runs the existing Sass style checks separately.

Description
===========

Designed to be framework-agnostic, django CMS Frontend allows developers to
select and change CSS frameworks by adjusting project settings, eliminating
the need to reconstruct the CMS plugin tree when upgrading or switching
frameworks. It leverages `django-entangled
<https://github.com/jrief/django-entangled>`_ to store design parameters in
a common JSON field, preventing database bloat and facilitating seamless
updates to frontend features.

By providing a suite of Bootstrap 5-based components for layout structuring,
including grids, components, and forms, django CMS Frontend simplifies the
process of building responsive and structured page designs. Developers can
also create custom components with minimal code, ensuring a consistent and
efficient development experience.

It is up to you which (if any at all) pre-built components you want to include
in your project. Each set of components is a separate package you can include
in your project's ``INSTALLED_APPS``.


Contributing
============

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>`_.

The project makes use of git pre-commit hooks to maintain code quality.
Please follow the installation steps to get `pre-commit <https://pre-commit.com/#installation>`_
setup in your development environment.

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-frontend/graphs/contributors>`_
section.

One of the easiest contributions you can make is helping to translate this addon on
`Transifex <https://www.transifex.com/divio/djangocms-frontend/dashboard/>`_.

Requirements
============

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

-  django-cms, version 3.11 or later
-  django-filer, version 1.7 or later
-  djangocms-attributes-field, version 1.0 or later
-  djangocms-text
-  djangocms-link
-  django-entangled 0.6 or later

Make sure `django Filer
<http://django-filer.readthedocs.io/en/latest/installation.html>`_ and
`django CMS Text <https://github.com/divio/djangocms-text>`_ /
`django CMS Text CKEditor
<https://github.com/divio/djangocms-text-ckeditor>`_ are installed and
configured appropriately.

**As of djangocms-frontend 2.0, djangocms-link is needed to use the Link/Button plugin.**

Installation
============

For a manual install:

-  run ``pip install djangocms-frontend``

-  add the following entries to your ``INSTALLED_APPS`` (or only those you need):

   .. code::

      'easy_thumbnails',
      'djangocms_link',  # Needed for link support

      # Base package template components and custom components
      'djangocms_frontend',

      # Add built-in Bootstrap 5 components as needed
      'djangocms_frontend.contrib.accordion',  # optional
      'djangocms_frontend.contrib.alert',  # optional
      'djangocms_frontend.contrib.badge',  # optional
      'djangocms_frontend.contrib.card',  # optional
      'djangocms_frontend.contrib.carousel',  # optional
      'djangocms_frontend.contrib.collapse',  # optional
      'djangocms_frontend.contrib.content',  # optional
      'djangocms_frontend.contrib.grid',  # optional
      'djangocms_frontend.contrib.icon',  # optional
      'djangocms_frontend.contrib.image',  # optional
      'djangocms_frontend.contrib.jumbotron',  # optional
      'djangocms_frontend.contrib.link',  # optional
      'djangocms_frontend.contrib.listgroup',  # optional
      'djangocms_frontend.contrib.media',  # optional
      'djangocms_frontend.contrib.tabs',  # optional
      'djangocms_frontend.contrib.utilities',  # optional

-  run ``python manage.py migrate``

**djangocms-frontend** has a weak dependencies on **djangocms-icon** you can
install separately or by adding an option:

.. code::

    pip install djangocms-frontend[djangocms-icon]  # Installs djangocms-icon for icon support in links


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

See readthedocs for the `documentation <https://djangocms-frontend.readthedocs.io>`_.

License
=======

See `LICENSE <https://github.com/django-cms/djangocms-frontend/blob/master/LICENSE>`_.

.. |pypi| image:: https://badge.fury.io/py/djangocms-frontend.svg
   :target: http://badge.fury.io/py/djangocms-frontend

.. |docs| image:: https://readthedocs.org/projects/djangocms-frontend/badge/?version=latest
    :target: https://djangocms-frontend.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. |coverage| image:: https://codecov.io/gh/django-cms/djangocms-frontend/graph/badge.svg?token=N0LGGPTuYS
   :target: https://codecov.io/gh/django-cms/djangocms-frontend

.. |python| image:: https://img.shields.io/pypi/pyversions/djangocms-frontend
    :alt: PyPI - Python Version
    :target: https://pypi.org/project/djangocms-frontend/

.. |django| image:: https://img.shields.io/pypi/frameworkversions/django/djangocms-frontend
    :alt: PyPI - Django Versions from Framework Classifiers
    :target: https://www.djangoproject.com/

.. |djangocms| image:: https://img.shields.io/pypi/frameworkversions/django-cms/djangocms-frontend
    :alt: PyPI - django CMS Versions from Framework Classifiers
    :target: https://www.django-cms.org/
