django-cotton-ui 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. django_cotton_ui-0.1.0/LICENSE +21 -0
  2. django_cotton_ui-0.1.0/PKG-INFO +87 -0
  3. django_cotton_ui-0.1.0/README.md +53 -0
  4. django_cotton_ui-0.1.0/django_cotton_ui/__init__.py +3 -0
  5. django_cotton_ui-0.1.0/django_cotton_ui/apps.py +6 -0
  6. django_cotton_ui-0.1.0/django_cotton_ui/static/cotton-ui/cotton-ui.css +81 -0
  7. django_cotton_ui-0.1.0/django_cotton_ui/static/cotton-ui/cotton-ui.esm.js +3457 -0
  8. django_cotton_ui-0.1.0/django_cotton_ui/static/cotton-ui/cotton-ui.js +3459 -0
  9. django_cotton_ui-0.1.0/django_cotton_ui/static/cotton-ui/cotton-ui.min.js +2 -0
  10. django_cotton_ui-0.1.0/django_cotton_ui/static/cotton-ui/manifest.json +2 -0
  11. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/accordion/index.html +18 -0
  12. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/accordion/item.html +45 -0
  13. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/alert.html +58 -0
  14. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/avatar/group.html +3 -0
  15. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/avatar/index.html +55 -0
  16. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/badge.html +92 -0
  17. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/breadcrumbs/index.html +32 -0
  18. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/breadcrumbs/item.html +13 -0
  19. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/button.html +66 -0
  20. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/calendar.html +121 -0
  21. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/card.html +56 -0
  22. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/checkbox/group/impl.html +33 -0
  23. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/checkbox/group/index.html +25 -0
  24. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/checkbox/index.html +120 -0
  25. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/collapse.html +19 -0
  26. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/combobox/impl.html +160 -0
  27. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/combobox/index.html +25 -0
  28. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/composer.html +53 -0
  29. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/datepicker/impl.html +92 -0
  30. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/datepicker/index.html +25 -0
  31. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/description.html +3 -0
  32. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dialog/description.html +3 -0
  33. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dialog/index.html +62 -0
  34. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dialog/title.html +3 -0
  35. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/drawer.html +82 -0
  36. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dropdown/group.html +13 -0
  37. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dropdown/index.html +71 -0
  38. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dropdown/item.html +87 -0
  39. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/dropdown/separator.html +6 -0
  40. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/error.html +36 -0
  41. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/field.html +57 -0
  42. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/input/impl.html +52 -0
  43. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/input/index.html +37 -0
  44. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/label.html +16 -0
  45. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/menu/content.html +28 -0
  46. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/menu/group.html +13 -0
  47. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/menu/index.html +168 -0
  48. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/menu/item.html +55 -0
  49. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/menu/trigger.html +62 -0
  50. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/nav/index.html +21 -0
  51. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/nav/item.html +20 -0
  52. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/navbar/index.html +75 -0
  53. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/navbar/item.html +13 -0
  54. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/navlist/group.html +45 -0
  55. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/navlist/index.html +44 -0
  56. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/navlist/item.html +20 -0
  57. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/pagination/ellipsis.html +5 -0
  58. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/pagination/index.html +34 -0
  59. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/pagination/item.html +14 -0
  60. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/pagination/next.html +15 -0
  61. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/pagination/prev.html +15 -0
  62. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/popover.html +95 -0
  63. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/progress.html +44 -0
  64. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/radio/group/impl.html +35 -0
  65. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/radio/group/index.html +25 -0
  66. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/radio/index.html +122 -0
  67. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/scrollspy.html +56 -0
  68. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/impl.html +37 -0
  69. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/index.html +25 -0
  70. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/content.html +26 -0
  71. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/group.html +13 -0
  72. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/index.html +124 -0
  73. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/option.html +56 -0
  74. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/search.html +29 -0
  75. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/listbox/trigger.html +61 -0
  76. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/native.html +37 -0
  77. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/select/option.html +14 -0
  78. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/spinner.html +24 -0
  79. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/switch/impl.html +84 -0
  80. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/switch/index.html +27 -0
  81. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/table.html +14 -0
  82. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/tabs/index.html +74 -0
  83. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/tabs/tab.html +14 -0
  84. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/textarea/impl.html +47 -0
  85. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/textarea/index.html +25 -0
  86. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/toast/container.html +121 -0
  87. django_cotton_ui-0.1.0/django_cotton_ui/templates/cotton/ui/tooltip.html +216 -0
  88. django_cotton_ui-0.1.0/django_cotton_ui/templatetags/__init__.py +0 -0
  89. django_cotton_ui-0.1.0/django_cotton_ui/templatetags/cotton_ui.py +39 -0
  90. django_cotton_ui-0.1.0/pyproject.toml +38 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Will Abbott
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,87 @@
1
+ Metadata-Version: 2.4
2
+ Name: django-cotton-ui
3
+ Version: 0.1.0
4
+ Summary: UI component library for Django Cotton
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Keywords: django,components,ui,tailwind,alpine
8
+ Author: Will Abbott
9
+ Author-email: willabb83@gmail.com
10
+ Requires-Python: >=3.8,<4
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Framework :: Django
13
+ Classifier: Framework :: Django :: 4.2
14
+ Classifier: Framework :: Django :: 5.0
15
+ Classifier: Framework :: Django :: 5.1
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Requires-Dist: django (>=4.2,<6.0)
29
+ Requires-Dist: django-cotton (>=2.5.0)
30
+ Project-URL: Homepage, https://github.com/wrabit/django-cotton-ui
31
+ Project-URL: Repository, https://github.com/wrabit/django-cotton-ui
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Django Cotton UI
35
+
36
+ An optional kit of accessible, themeable UI components for [Django Cotton](https://github.com/wrabit/django-cotton), built with Tailwind CSS v4 and Alpine.js.
37
+
38
+ ### 📖 Documentation: **[django-cotton.com/ui](https://django-cotton.com/ui)**
39
+
40
+ The docs cover installation, theming and every component with live examples.
41
+
42
+ ## Install
43
+
44
+ ```bash
45
+ pip install django-cotton-ui
46
+ ```
47
+
48
+ Add it to `INSTALLED_APPS` after `django_cotton`:
49
+
50
+ ```python
51
+ INSTALLED_APPS = [
52
+ # ...
53
+ "django_cotton",
54
+ "django_cotton_ui",
55
+ ]
56
+ ```
57
+
58
+ Then wire up Tailwind v4 (scan the component templates, import the theme) and the
59
+ Alpine bundle. See the [installation guide](https://django-cotton.com/ui/installation)
60
+ for the full setup.
61
+
62
+ ## Usage
63
+
64
+ Components use the `c-ui.` prefix:
65
+
66
+ ```django
67
+ <c-ui.button variant="primary">Save</c-ui.button>
68
+ <c-ui.input name="email" label="Email" placeholder="you@example.com" />
69
+
70
+ <c-ui.card>
71
+ <h3 class="font-semibold">Title</h3>
72
+ <p>Content goes here.</p>
73
+ </c-ui.card>
74
+ ```
75
+
76
+ Browse the full set with live examples in the [component docs](https://django-cotton.com/ui).
77
+
78
+ ## Requirements
79
+
80
+ - Python ≥ 3.8 · Django ≥ 4.2 · django-cotton ≥ 2.5
81
+ - Tailwind CSS **v4** with a build step (the same setup any Tailwind project uses; the Play CDN and v3 won't work, as the kit's styles are compiled from your `@source`-scanned templates)
82
+ - Alpine.js v3
83
+
84
+ ## License
85
+
86
+ MIT
87
+
@@ -0,0 +1,53 @@
1
+ # Django Cotton UI
2
+
3
+ An optional kit of accessible, themeable UI components for [Django Cotton](https://github.com/wrabit/django-cotton), built with Tailwind CSS v4 and Alpine.js.
4
+
5
+ ### 📖 Documentation: **[django-cotton.com/ui](https://django-cotton.com/ui)**
6
+
7
+ The docs cover installation, theming and every component with live examples.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ pip install django-cotton-ui
13
+ ```
14
+
15
+ Add it to `INSTALLED_APPS` after `django_cotton`:
16
+
17
+ ```python
18
+ INSTALLED_APPS = [
19
+ # ...
20
+ "django_cotton",
21
+ "django_cotton_ui",
22
+ ]
23
+ ```
24
+
25
+ Then wire up Tailwind v4 (scan the component templates, import the theme) and the
26
+ Alpine bundle. See the [installation guide](https://django-cotton.com/ui/installation)
27
+ for the full setup.
28
+
29
+ ## Usage
30
+
31
+ Components use the `c-ui.` prefix:
32
+
33
+ ```django
34
+ <c-ui.button variant="primary">Save</c-ui.button>
35
+ <c-ui.input name="email" label="Email" placeholder="you@example.com" />
36
+
37
+ <c-ui.card>
38
+ <h3 class="font-semibold">Title</h3>
39
+ <p>Content goes here.</p>
40
+ </c-ui.card>
41
+ ```
42
+
43
+ Browse the full set with live examples in the [component docs](https://django-cotton.com/ui).
44
+
45
+ ## Requirements
46
+
47
+ - Python ≥ 3.8 · Django ≥ 4.2 · django-cotton ≥ 2.5
48
+ - Tailwind CSS **v4** with a build step (the same setup any Tailwind project uses; the Play CDN and v3 won't work, as the kit's styles are compiled from your `@source`-scanned templates)
49
+ - Alpine.js v3
50
+
51
+ ## License
52
+
53
+ MIT
@@ -0,0 +1,3 @@
1
+ """Django Cotton UI - A UI component library for Django Cotton."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,6 @@
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class CottonUiConfig(AppConfig):
5
+ name = "django_cotton_ui"
6
+ verbose_name = "Cotton UI"
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Cotton UI styles — the kit's single stylesheet.
3
+ *
4
+ * Import once into your Tailwind v4 entry, AFTER `@import "tailwindcss"`:
5
+ *
6
+ * @import "tailwindcss";
7
+ * @import "<path>/static/cotton-ui/cotton-ui.css";
8
+ * @source "<path>/templates";
9
+ *
10
+ * One import compiles everything the components need into your CSS: the accent
11
+ * palette (neutral zinc by default), the component tokens (radius, surfaces,
12
+ * shadows, focus ring) and the Alpine `x-cloak` rule.
13
+ *
14
+ * Note: `@import` this into your Tailwind entry (it contains `@theme`); do NOT
15
+ * `<link>` it at runtime. To brand the kit, override --color-accent in your own
16
+ * @theme AFTER this import:
17
+ *
18
+ * @theme { --color-accent: var(--color-teal-500); --color-accent-content: var(--color-teal-600); }
19
+ * @layer theme { .dark { --color-accent: var(--color-teal-400); --color-accent-content: var(--color-teal-300); } }
20
+ */
21
+
22
+ @theme {
23
+ --color-accent: var(--color-zinc-900);
24
+ --color-accent-content: var(--color-zinc-700);
25
+ --color-accent-foreground: var(--color-white);
26
+
27
+ /* Radius is split by role, not by size, and kept in its own namespace so it never
28
+ collides with Tailwind's --radius-md/-lg scale or your own rounded-* usage.
29
+ Declared in @theme so the `rounded-control` / `rounded-box` utilities are generated. */
30
+ --radius-control: 0.375rem; /* form controls: inputs, buttons → rounded-control */
31
+ --radius-box: 0.5rem; /* structural: cards, dialogs, menus → rounded-box */
32
+ }
33
+
34
+ /* The remaining component tokens live in the `theme` layer so a consumer's @theme /
35
+ @layer theme overrides always win (light and dark stay in the same layer, no cascade upset). */
36
+ @layer theme {
37
+ :root {
38
+ --color-bg: var(--color-zinc-50); /* page base */
39
+ --color-surface: #ffffff; /* raised: cards, dialogs, menus */
40
+ --color-input-bg: transparent; /* form fields: border-defined in light; see .dark for the lift */
41
+ --color-box-border: var(--color-zinc-200); /* border for box-role surfaces (cards, dialogs, menus); set transparent for a shadow-only look. NOT inputs (see --radius-control). */
42
+
43
+ --shadow-input: 0 1px 2px 0 rgb(0 0 0 / 0.05);
44
+ --shadow-box: 0 1px 2px 0 rgb(0 0 0 / 0.05);
45
+
46
+ --focus-ring-width: 2px;
47
+ --focus-ring-offset: 0px;
48
+ --focus-ring-color: color-mix(in oklab, var(--color-accent) 50%, white);
49
+ --focus-ring-offset-color: #ffffff;
50
+ }
51
+
52
+ .dark {
53
+ --color-accent: var(--color-zinc-100);
54
+ --color-accent-content: var(--color-zinc-300);
55
+ --color-accent-foreground: var(--color-zinc-900);
56
+ --color-bg: var(--color-zinc-900);
57
+ --color-surface: var(--color-zinc-800);
58
+ --color-box-border: var(--color-zinc-700);
59
+ /* Inputs lift off any surface (page or card) via a translucent lighten. */
60
+ --color-input-bg: color-mix(in oklab, white 4%, transparent);
61
+ --focus-ring-offset-color: #18181b; /* zinc-900 */
62
+ }
63
+ }
64
+
65
+ /* Unified focus indicator. Add `focus-ring` to any interactive element for a flush,
66
+ translucent accent ring on keyboard focus. Uses `outline` so it follows border-radius,
67
+ never clashes with the element's box-shadow, and is not clipped by overflow. Themeable
68
+ via --focus-ring-width / --focus-ring-color / --focus-ring-offset (see the theme builder). */
69
+ @utility focus-ring {
70
+ /* Solid 2px accent ring just outside the resting border, on keyboard focus.
71
+ The always-present transparent outline avoids a colour flash and suppresses the
72
+ UA default; only the colour changes on focus-visible. */
73
+ outline: var(--focus-ring-width) solid transparent;
74
+ outline-offset: var(--focus-ring-offset);
75
+ &:focus-visible { outline-color: var(--focus-ring-color); }
76
+ }
77
+
78
+ /* Alpine.js x-cloak */
79
+ [x-cloak] {
80
+ display: none !important;
81
+ }