django-trellis 0.1.0__py3-none-any.whl
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.
- django_trellis-0.1.0.dist-info/METADATA +16 -0
- django_trellis-0.1.0.dist-info/RECORD +199 -0
- django_trellis-0.1.0.dist-info/WHEEL +4 -0
- django_trellis-0.1.0.dist-info/licenses/LICENSE +21 -0
- trellis_ui/__init__.py +30 -0
- trellis_ui/apps.py +6 -0
- trellis_ui/context_processors.py +6 -0
- trellis_ui/events.py +15 -0
- trellis_ui/filters/__init__.py +3 -0
- trellis_ui/filters/rules.py +148 -0
- trellis_ui/forms/__init__.py +22 -0
- trellis_ui/forms/base.py +23 -0
- trellis_ui/forms/boundfield.py +33 -0
- trellis_ui/forms/formsets.py +20 -0
- trellis_ui/forms/presets/__init__.py +3 -0
- trellis_ui/forms/presets/dates.py +164 -0
- trellis_ui/forms/renderers.py +21 -0
- trellis_ui/forms/widgets.py +698 -0
- trellis_ui/generated_styles.py +5 -0
- trellis_ui/static/trellis_ui/css/styles.css +4382 -0
- trellis_ui/static/trellis_ui/js/index.js +10 -0
- trellis_ui/stream.py +356 -0
- trellis_ui/targets.py +10 -0
- trellis_ui/templates/cotton/icons/add.html +17 -0
- trellis_ui/templates/cotton/icons/calendar.html +18 -0
- trellis_ui/templates/cotton/icons/checkmark.html +18 -0
- trellis_ui/templates/cotton/icons/chevron__down.html +17 -0
- trellis_ui/templates/cotton/icons/chevron__right.html +17 -0
- trellis_ui/templates/cotton/icons/close.html +19 -0
- trellis_ui/templates/cotton/icons/cloud__upload.html +8 -0
- trellis_ui/templates/cotton/icons/document__blank.html +10 -0
- trellis_ui/templates/cotton/icons/grip.html +21 -0
- trellis_ui/templates/cotton/icons/image.html +9 -0
- trellis_ui/templates/cotton/icons/menu.html +18 -0
- trellis_ui/templates/cotton/icons/moon.html +10 -0
- trellis_ui/templates/cotton/icons/overflow_menu__vertical.html +20 -0
- trellis_ui/templates/cotton/icons/search.html +18 -0
- trellis_ui/templates/cotton/icons/side_panel.html +15 -0
- trellis_ui/templates/cotton/icons/side_panel__close.html +17 -0
- trellis_ui/templates/cotton/icons/side_panel__open.html +17 -0
- trellis_ui/templates/cotton/icons/spinner.html +13 -0
- trellis_ui/templates/cotton/icons/subtract.html +17 -0
- trellis_ui/templates/cotton/icons/sun.html +10 -0
- trellis_ui/templates/cotton/icons/theme.html +13 -0
- trellis_ui/templates/cotton/icons/trash_can.html +18 -0
- trellis_ui/templates/cotton/layouts/app.html +57 -0
- trellis_ui/templates/cotton/layouts/base.html +88 -0
- trellis_ui/templates/cotton/layouts/guest.html +50 -0
- trellis_ui/templates/cotton/ui/accordion/content.html +14 -0
- trellis_ui/templates/cotton/ui/accordion/index.html +30 -0
- trellis_ui/templates/cotton/ui/accordion/item.html +40 -0
- trellis_ui/templates/cotton/ui/accordion/trigger.html +49 -0
- trellis_ui/templates/cotton/ui/action/index.html +16 -0
- trellis_ui/templates/cotton/ui/app/aside.html +7 -0
- trellis_ui/templates/cotton/ui/app/footer.html +7 -0
- trellis_ui/templates/cotton/ui/app/header.html +10 -0
- trellis_ui/templates/cotton/ui/app/index.html +19 -0
- trellis_ui/templates/cotton/ui/app/main.html +13 -0
- trellis_ui/templates/cotton/ui/badge/close.html +24 -0
- trellis_ui/templates/cotton/ui/badge/index.html +87 -0
- trellis_ui/templates/cotton/ui/box/index.html +34 -0
- trellis_ui/templates/cotton/ui/brand/index.html +66 -0
- trellis_ui/templates/cotton/ui/button/group.html +7 -0
- trellis_ui/templates/cotton/ui/button/index.html +92 -0
- trellis_ui/templates/cotton/ui/card/action.html +7 -0
- trellis_ui/templates/cotton/ui/card/content.html +7 -0
- trellis_ui/templates/cotton/ui/card/description.html +12 -0
- trellis_ui/templates/cotton/ui/card/footer.html +11 -0
- trellis_ui/templates/cotton/ui/card/header.html +7 -0
- trellis_ui/templates/cotton/ui/card/index.html +42 -0
- trellis_ui/templates/cotton/ui/card/title.html +13 -0
- trellis_ui/templates/cotton/ui/checkbox/control.html +104 -0
- trellis_ui/templates/cotton/ui/checkbox/group.html +28 -0
- trellis_ui/templates/cotton/ui/checkbox/index.html +62 -0
- trellis_ui/templates/cotton/ui/checkbox/indicator.html +18 -0
- trellis_ui/templates/cotton/ui/combobox/empty.html +13 -0
- trellis_ui/templates/cotton/ui/combobox/group.html +7 -0
- trellis_ui/templates/cotton/ui/combobox/impl.html +141 -0
- trellis_ui/templates/cotton/ui/combobox/index.html +32 -0
- trellis_ui/templates/cotton/ui/combobox/label.html +13 -0
- trellis_ui/templates/cotton/ui/combobox/option.html +70 -0
- trellis_ui/templates/cotton/ui/combobox/separator.html +11 -0
- trellis_ui/templates/cotton/ui/date_picker/impl.html +287 -0
- trellis_ui/templates/cotton/ui/date_picker/index.html +33 -0
- trellis_ui/templates/cotton/ui/date_picker/preset.html +20 -0
- trellis_ui/templates/cotton/ui/date_picker/presets.html +10 -0
- trellis_ui/templates/cotton/ui/date_picker/trigger.html +13 -0
- trellis_ui/templates/cotton/ui/dropdown/index.html +25 -0
- trellis_ui/templates/cotton/ui/field/description.html +10 -0
- trellis_ui/templates/cotton/ui/field/error.html +17 -0
- trellis_ui/templates/cotton/ui/field/group.html +10 -0
- trellis_ui/templates/cotton/ui/field/index.html +47 -0
- trellis_ui/templates/cotton/ui/field/label.html +15 -0
- trellis_ui/templates/cotton/ui/fieldset/index.html +37 -0
- trellis_ui/templates/cotton/ui/fieldset/legend.html +14 -0
- trellis_ui/templates/cotton/ui/file_upload/control.html +151 -0
- trellis_ui/templates/cotton/ui/file_upload/dropzone.html +39 -0
- trellis_ui/templates/cotton/ui/file_upload/index.html +36 -0
- trellis_ui/templates/cotton/ui/file_upload/item.html +45 -0
- trellis_ui/templates/cotton/ui/file_upload/list.html +7 -0
- trellis_ui/templates/cotton/ui/file_upload/remove.html +16 -0
- trellis_ui/templates/cotton/ui/frame/body.html +17 -0
- trellis_ui/templates/cotton/ui/frame/footer.html +13 -0
- trellis_ui/templates/cotton/ui/frame/header.html +13 -0
- trellis_ui/templates/cotton/ui/frame/index.html +26 -0
- trellis_ui/templates/cotton/ui/heading/index.html +7 -0
- trellis_ui/templates/cotton/ui/image/index.html +20 -0
- trellis_ui/templates/cotton/ui/input/control.html +1 -0
- trellis_ui/templates/cotton/ui/input/group.html +28 -0
- trellis_ui/templates/cotton/ui/input/impl.html +122 -0
- trellis_ui/templates/cotton/ui/input/index.html +27 -0
- trellis_ui/templates/cotton/ui/input/prefix.html +5 -0
- trellis_ui/templates/cotton/ui/input/suffix.html +5 -0
- trellis_ui/templates/cotton/ui/menu/group.html +7 -0
- trellis_ui/templates/cotton/ui/menu/index.html +17 -0
- trellis_ui/templates/cotton/ui/menu/item.html +87 -0
- trellis_ui/templates/cotton/ui/menu/label.html +14 -0
- trellis_ui/templates/cotton/ui/menu/separator.html +24 -0
- trellis_ui/templates/cotton/ui/modal/body.html +7 -0
- trellis_ui/templates/cotton/ui/modal/close.html +21 -0
- trellis_ui/templates/cotton/ui/modal/description.html +12 -0
- trellis_ui/templates/cotton/ui/modal/footer.html +7 -0
- trellis_ui/templates/cotton/ui/modal/index.html +78 -0
- trellis_ui/templates/cotton/ui/modal/outlet.html +11 -0
- trellis_ui/templates/cotton/ui/modal/title.html +12 -0
- trellis_ui/templates/cotton/ui/modal/trigger.html +13 -0
- trellis_ui/templates/cotton/ui/overlay/above.html +7 -0
- trellis_ui/templates/cotton/ui/overlay/index.html +15 -0
- trellis_ui/templates/cotton/ui/radio/group.html +32 -0
- trellis_ui/templates/cotton/ui/radio/index.html +93 -0
- trellis_ui/templates/cotton/ui/radio/indicator.html +11 -0
- trellis_ui/templates/cotton/ui/scroll_area/index.html +78 -0
- trellis_ui/templates/cotton/ui/select/button.html +12 -0
- trellis_ui/templates/cotton/ui/select/group.html +7 -0
- trellis_ui/templates/cotton/ui/select/impl.html +254 -0
- trellis_ui/templates/cotton/ui/select/index.html +33 -0
- trellis_ui/templates/cotton/ui/select/input.html +13 -0
- trellis_ui/templates/cotton/ui/select/label.html +12 -0
- trellis_ui/templates/cotton/ui/select/option/create.html +14 -0
- trellis_ui/templates/cotton/ui/select/option/empty.html +11 -0
- trellis_ui/templates/cotton/ui/select/option/selected.html +3 -0
- trellis_ui/templates/cotton/ui/select/option.html +76 -0
- trellis_ui/templates/cotton/ui/select/search.html +30 -0
- trellis_ui/templates/cotton/ui/select/separator.html +11 -0
- trellis_ui/templates/cotton/ui/select/trigger.html +11 -0
- trellis_ui/templates/cotton/ui/separator/index.html +42 -0
- trellis_ui/templates/cotton/ui/sidebar/content.html +10 -0
- trellis_ui/templates/cotton/ui/sidebar/footer.html +7 -0
- trellis_ui/templates/cotton/ui/sidebar/group.html +73 -0
- trellis_ui/templates/cotton/ui/sidebar/header.html +7 -0
- trellis_ui/templates/cotton/ui/sidebar/index.html +75 -0
- trellis_ui/templates/cotton/ui/sidebar/item.html +108 -0
- trellis_ui/templates/cotton/ui/sidebar/nav.html +11 -0
- trellis_ui/templates/cotton/ui/sidebar/toggle.html +31 -0
- trellis_ui/templates/cotton/ui/slider/index.html +174 -0
- trellis_ui/templates/cotton/ui/slider/tick.html +25 -0
- trellis_ui/templates/cotton/ui/spacer/index.html +6 -0
- trellis_ui/templates/cotton/ui/stream/index.html +3 -0
- trellis_ui/templates/cotton/ui/switch/control.html +3 -0
- trellis_ui/templates/cotton/ui/switch/impl.html +117 -0
- trellis_ui/templates/cotton/ui/switch/index.html +54 -0
- trellis_ui/templates/cotton/ui/table/body.html +7 -0
- trellis_ui/templates/cotton/ui/table/caption.html +10 -0
- trellis_ui/templates/cotton/ui/table/cell.html +11 -0
- trellis_ui/templates/cotton/ui/table/column/filter.html +10 -0
- trellis_ui/templates/cotton/ui/table/column.html +54 -0
- trellis_ui/templates/cotton/ui/table/empty.html +11 -0
- trellis_ui/templates/cotton/ui/table/footer.html +7 -0
- trellis_ui/templates/cotton/ui/table/header.html +7 -0
- trellis_ui/templates/cotton/ui/table/index.html +34 -0
- trellis_ui/templates/cotton/ui/table/row/header.html +12 -0
- trellis_ui/templates/cotton/ui/table/row.html +13 -0
- trellis_ui/templates/cotton/ui/tabs/index.html +27 -0
- trellis_ui/templates/cotton/ui/tabs/list.html +28 -0
- trellis_ui/templates/cotton/ui/tabs/panel.html +28 -0
- trellis_ui/templates/cotton/ui/tabs/panels.html +12 -0
- trellis_ui/templates/cotton/ui/tabs/tab.html +98 -0
- trellis_ui/templates/cotton/ui/text/index.html +7 -0
- trellis_ui/templates/cotton/ui/textarea/control.html +1 -0
- trellis_ui/templates/cotton/ui/textarea/impl.html +51 -0
- trellis_ui/templates/cotton/ui/textarea/index.html +27 -0
- trellis_ui/templates/cotton/ui/theme/text.html +5 -0
- trellis_ui/templates/cotton/ui/toast/index.html +65 -0
- trellis_ui/templates/cotton/ui/toast/outlet.html +28 -0
- trellis_ui/templates/trellis_ui/forms/field.html +22 -0
- trellis_ui/templates/trellis_ui/forms/form.html +15 -0
- trellis_ui/templates/trellis_ui/forms/formset.html +7 -0
- trellis_ui/templates/trellis_ui/forms/widgets/checkbox.html +8 -0
- trellis_ui/templates/trellis_ui/forms/widgets/checkbox_select.html +37 -0
- trellis_ui/templates/trellis_ui/forms/widgets/combobox_select.html +41 -0
- trellis_ui/templates/trellis_ui/forms/widgets/date_picker.html +59 -0
- trellis_ui/templates/trellis_ui/forms/widgets/file_upload.html +13 -0
- trellis_ui/templates/trellis_ui/forms/widgets/input.html +10 -0
- trellis_ui/templates/trellis_ui/forms/widgets/radio_select.html +38 -0
- trellis_ui/templates/trellis_ui/forms/widgets/select.html +95 -0
- trellis_ui/templates/trellis_ui/forms/widgets/textarea.html +10 -0
- trellis_ui/templatetags/__init__.py +1 -0
- trellis_ui/templatetags/ui_classes.py +93 -0
- trellis_ui/templatetags/ui_props.py +108 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: django-trellis
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Token-driven Django Cotton UI component kit.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Classifier: Framework :: Django
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Requires-Python: >=3.13
|
|
11
|
+
Requires-Dist: django-cotton>=2.7.2
|
|
12
|
+
Requires-Dist: django-eventstream>=5.3.4
|
|
13
|
+
Requires-Dist: django>=6.0
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# Trellis UI
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
trellis_ui/__init__.py,sha256=dx6iLGNwcRM5yVMNzNaWu4BWZvOZLa7fpLO4PrGqblU,549
|
|
2
|
+
trellis_ui/apps.py,sha256=kgOSvIYmXcnbl4B9HSREX1ml-pjEn-Q5-FXB38fAYvI,126
|
|
3
|
+
trellis_ui/context_processors.py,sha256=c1f420z8gnFMpV4KMUfxPkdRQG6DaGUQt_umbo2ZbXc,63
|
|
4
|
+
trellis_ui/events.py,sha256=ACLzxrMXulS8y7znzO58jB6qoH4QMLIJAvGRLMihS-M,307
|
|
5
|
+
trellis_ui/generated_styles.py,sha256=JqKWLyYM2m5BYhiZ7B8okPHACU13osiOlfkwBKGptUQ,134407
|
|
6
|
+
trellis_ui/stream.py,sha256=i5Rx0UrPDy_pmpc9vI7EtNFZ-EL51mu47Xb5xUpkLA8,9503
|
|
7
|
+
trellis_ui/targets.py,sha256=XjzlSdDEJ_u63aUN1fQD2TwbzxOf0yIrPYkrcd-pW88,241
|
|
8
|
+
trellis_ui/filters/__init__.py,sha256=cVptZ6_vQxO-d6Oty6Ptlk6ATXSrjGMRGXo-qOX8hE0,58
|
|
9
|
+
trellis_ui/filters/rules.py,sha256=t2i4NynpIp3gBPxGZ_BmIBX2smbiFLybMU83Tdac6UE,4703
|
|
10
|
+
trellis_ui/forms/__init__.py,sha256=HUEegQCM3UU2jzih4BBDLtlL0JNeL1wEw0_wlWcJ6-Q,520
|
|
11
|
+
trellis_ui/forms/base.py,sha256=DJNX27La3XEx0OeIea7E0E07z8Xi0R_6NPd58HEt7eU,638
|
|
12
|
+
trellis_ui/forms/boundfield.py,sha256=KIpJW1OVfoy2a57BmZScUV7TJJZgOGCYHMVqOsK5iE8,1137
|
|
13
|
+
trellis_ui/forms/formsets.py,sha256=_BQ33Cu2l3ulu1g1EsyfIB3p7YqHaE7MMJBZflK94Fs,870
|
|
14
|
+
trellis_ui/forms/renderers.py,sha256=ym9Bu1RInvfMKjDa2NS2gNAs4GeW8KRfd4Ks3cR3-O4,766
|
|
15
|
+
trellis_ui/forms/widgets.py,sha256=gnqBmXA3tI-WKIKQLAa42L3npE00vZrADANGH2MZRSg,20516
|
|
16
|
+
trellis_ui/forms/presets/__init__.py,sha256=99PBtWVLPceXkBOUvXojcxEMj1KAopMusMcuL05ELTs,64
|
|
17
|
+
trellis_ui/forms/presets/dates.py,sha256=dw8fpY05zRbrvqmqKuBJiJYhJEUP-Uf5lDgpri9fRSM,4901
|
|
18
|
+
trellis_ui/static/trellis_ui/css/styles.css,sha256=AI44CL-NpiSJ9rKDzCewZmWZH7fbgbu1VMH66GDaDfI,123054
|
|
19
|
+
trellis_ui/static/trellis_ui/js/index.js,sha256=Q7HJC6z53Bh4CFBttDzR5wzYzxs6pDmXVN8BbKHzxZA,384862
|
|
20
|
+
trellis_ui/templates/cotton/icons/add.html,sha256=MjLfKMfSTac45N_lDfqymnaPUnPgUPbbz0eBpH8xreQ,518
|
|
21
|
+
trellis_ui/templates/cotton/icons/calendar.html,sha256=toed7B6YNCfMFPzEYLnigJ3w0HoPcx-AQvDbCWHV22c,656
|
|
22
|
+
trellis_ui/templates/cotton/icons/checkmark.html,sha256=zUoPofSP10aWgRcuNa_8riub-Elgq555B14u2fcxySo,479
|
|
23
|
+
trellis_ui/templates/cotton/icons/chevron__down.html,sha256=HqB5Mk-u0vF2CkNiVwGi0ARVuHOYwFT-ThSfaTDV_C0,524
|
|
24
|
+
trellis_ui/templates/cotton/icons/chevron__right.html,sha256=xHcqnakZcD9SyVvupwJAfSwpU8N32O-QT7SS1fhCoR4,528
|
|
25
|
+
trellis_ui/templates/cotton/icons/close.html,sha256=-Ur3Ss-JsieaDZSusJqCp60uyXNYmCeTEfzKa9nmA0E,557
|
|
26
|
+
trellis_ui/templates/cotton/icons/cloud__upload.html,sha256=eAeRS6HpSKqwJDG3lllxqsGOVnZ5vly4guzFPfF-XJU,607
|
|
27
|
+
trellis_ui/templates/cotton/icons/document__blank.html,sha256=Q5Orw92rV3Qe7zIXg5VfWsnEFWmtsro0J28UB21bQ5o,581
|
|
28
|
+
trellis_ui/templates/cotton/icons/grip.html,sha256=V9md-l6BnFK3r2Ra6Uou8BB6ngkv4g4p6seWp7tAjvM,595
|
|
29
|
+
trellis_ui/templates/cotton/icons/image.html,sha256=sFiILDNPqONsxbQlBCVR5uOzW2JOK0RgZFOd0CKBFbg,632
|
|
30
|
+
trellis_ui/templates/cotton/icons/menu.html,sha256=kmUfUXEs78V3FESvTqesG9yxO4UdFuJc5WvDMQta1kE,517
|
|
31
|
+
trellis_ui/templates/cotton/icons/moon.html,sha256=r_tfWZ9k5EmACaM0npKqM_9H6y8EPs7Xyldxm0ZkajM,744
|
|
32
|
+
trellis_ui/templates/cotton/icons/overflow_menu__vertical.html,sha256=1yv2teit96anRcGC3eBqAF4Rfl6ZH_kjAMIqlApNFaM,606
|
|
33
|
+
trellis_ui/templates/cotton/icons/search.html,sha256=UZtPgeiDTBs1r4BY-ULwrTxtUyGO3y22T__zrgsyNW0,657
|
|
34
|
+
trellis_ui/templates/cotton/icons/side_panel.html,sha256=heYdlVHVKQus0q8JGdtGnTNWmC2GirVkTxhLF1rZ7IY,603
|
|
35
|
+
trellis_ui/templates/cotton/icons/side_panel__close.html,sha256=tWgQ8P_tgX-qcnlL88hf6JpysE0_m1m1KGJLUGFrRWg,654
|
|
36
|
+
trellis_ui/templates/cotton/icons/side_panel__open.html,sha256=vJWPV8o5An4Sz9WaRNMOUbf0rtfjPJSvVdZ5aTV8uAA,657
|
|
37
|
+
trellis_ui/templates/cotton/icons/spinner.html,sha256=iU-ybl8jQTAkE1Ve44JJwfHnVOKir38GC8aH9vXXPqc,532
|
|
38
|
+
trellis_ui/templates/cotton/icons/subtract.html,sha256=KMPhuUU0bhukUVsu75X2diPTjZaxeXIxlDezFi2VU7E,509
|
|
39
|
+
trellis_ui/templates/cotton/icons/sun.html,sha256=6p9Krz-Mx8xCegjcF0FrdN7kDvd4ZfWN4g_ulwAMYHM,1107
|
|
40
|
+
trellis_ui/templates/cotton/icons/theme.html,sha256=9k8tUFWmNZhoW-75uc3vtvJBkbsq_RidLNkwjYsHfok,483
|
|
41
|
+
trellis_ui/templates/cotton/icons/trash_can.html,sha256=hj1qhzFtXAna86dFnAZFYHFR0qiKjPUgJDYH-VzXp8U,589
|
|
42
|
+
trellis_ui/templates/cotton/layouts/app.html,sha256=mxhZDDQHaJFP49VMy-nngjdITgI4EmJGFh8UqV157VY,1764
|
|
43
|
+
trellis_ui/templates/cotton/layouts/base.html,sha256=BZdvSRX9qhD-hGzEc8wzITG2w1viDDakZUNwX5Ot62w,3165
|
|
44
|
+
trellis_ui/templates/cotton/layouts/guest.html,sha256=zire7UKJdLxY_VEJ-cRKsBgiojBI-A9FDBcMwjJrgMY,1547
|
|
45
|
+
trellis_ui/templates/cotton/ui/accordion/content.html,sha256=KEA_yQOJkitcmplZ-N1wVsaVvPqgzUHyuGILG-zUkew,684
|
|
46
|
+
trellis_ui/templates/cotton/ui/accordion/index.html,sha256=CzYqn4BfRpV7GDqG3MExPpDSHAoQ0LW-P1v5rE9Sbhw,935
|
|
47
|
+
trellis_ui/templates/cotton/ui/accordion/item.html,sha256=CCd9CH9aV9A9jWlJ2e9Q_LKegCvPeZz1wN8t7jqVjw4,1445
|
|
48
|
+
trellis_ui/templates/cotton/ui/accordion/trigger.html,sha256=EU9-ADWnBIZlXvZom79SAzO-Jnsczx_REYRawveZyw4,1963
|
|
49
|
+
trellis_ui/templates/cotton/ui/action/index.html,sha256=5RVVhjY5xtbGuVaqQyr_RnqaQpUkZQhjqtU1IakPTYw,584
|
|
50
|
+
trellis_ui/templates/cotton/ui/app/aside.html,sha256=WN3E_luysE5Z-w_Lq58YRl_6V4pm7frHt3IzcDX8tA4,190
|
|
51
|
+
trellis_ui/templates/cotton/ui/app/footer.html,sha256=-IgbqoVUWxf6R69q8KxUxgHGORLBrv0e1iZ_pQvOThM,196
|
|
52
|
+
trellis_ui/templates/cotton/ui/app/header.html,sha256=iRDDGacBlzxgnXtTBnl8_kG1r2gOyeUaVAmrL1EqsxE,303
|
|
53
|
+
trellis_ui/templates/cotton/ui/app/index.html,sha256=2A4-Bvjk0RwZL1TH2p_ormcxRMXd4xWMaCOCcWphRAI,581
|
|
54
|
+
trellis_ui/templates/cotton/ui/app/main.html,sha256=wmn3I-DEMjai6Fd2JyTGmdI2KlFBBNCCQ-vh8YKY-XM,429
|
|
55
|
+
trellis_ui/templates/cotton/ui/badge/close.html,sha256=VGdh6kQEtlo-UDUWHumEzkP1y3bhtZ-hQR5c3Lalrl4,829
|
|
56
|
+
trellis_ui/templates/cotton/ui/badge/index.html,sha256=YhVXR0yT2vrcyC413kuZbP37BoW9pHk1qg-hqpPWA88,3223
|
|
57
|
+
trellis_ui/templates/cotton/ui/box/index.html,sha256=_DWDMXKtNKLA5rgvixZgM6kgYimBdA8n5AmyN5pvIzs,950
|
|
58
|
+
trellis_ui/templates/cotton/ui/brand/index.html,sha256=Nj4vVp44N0WOgSiGV2Jr6iP-nlHSQ_y9tTVaRZbMHpg,2169
|
|
59
|
+
trellis_ui/templates/cotton/ui/button/group.html,sha256=y8cuFf6fgJrmM9aixYbgpVicQLUbbVtsvwzGl7tGnNc,192
|
|
60
|
+
trellis_ui/templates/cotton/ui/button/index.html,sha256=xUqzj_o2410oby2CjXTlDPWB5D59zEkrRRvzIhdp7LA,3853
|
|
61
|
+
trellis_ui/templates/cotton/ui/card/action.html,sha256=uMBr4ogfMgzghlJmGemrLjS5FyFFzMFVkkeE7symKeY,192
|
|
62
|
+
trellis_ui/templates/cotton/ui/card/content.html,sha256=Jvz7ag0xLM1_fh0bL4_eY1zogoT1Tb2KGilvsxThorA,196
|
|
63
|
+
trellis_ui/templates/cotton/ui/card/description.html,sha256=vTKmdMYiqao7KG1PpXyodV9kOVBmR6blwI00qxR05Kc,310
|
|
64
|
+
trellis_ui/templates/cotton/ui/card/footer.html,sha256=xJeMZhKkHaiwMmGCJH_JsEK1zI2HxzpM3RNcXxH290o,315
|
|
65
|
+
trellis_ui/templates/cotton/ui/card/header.html,sha256=luXXeoUKW_PN20SRBKNqH0s8LW8DBMItFy7rrzrBqdY,192
|
|
66
|
+
trellis_ui/templates/cotton/ui/card/index.html,sha256=IHg5OqI4vP6XmM9XWXO3isf8c0TtIwQ70e_4tutVHGY,1025
|
|
67
|
+
trellis_ui/templates/cotton/ui/card/title.html,sha256=HKx4F3s1Xio4ymYfUEJLusN7agVeG05p_ybbDgcB4oc,356
|
|
68
|
+
trellis_ui/templates/cotton/ui/checkbox/control.html,sha256=WVdFloatFA7Hf6sWCsZc_RcxXKLrrjplfdSDM4QpuIk,4756
|
|
69
|
+
trellis_ui/templates/cotton/ui/checkbox/group.html,sha256=5a_vaIFFSR7SKfIdL3swAxyJfPukbxAAci_9F7SAfU8,929
|
|
70
|
+
trellis_ui/templates/cotton/ui/checkbox/index.html,sha256=sabHej7QSxMDlf1BTCSCZsz4lv5ikvFXow3La-mCVRU,2380
|
|
71
|
+
trellis_ui/templates/cotton/ui/checkbox/indicator.html,sha256=VZtE4Mov_eUEAuPaFRadHEt-0FQSjeXB_ri_Ldoa-0s,715
|
|
72
|
+
trellis_ui/templates/cotton/ui/combobox/empty.html,sha256=Z64BftXrUpsd9cRN72Lf1ZcSEH2VAvSC8SkizqyBpdI,316
|
|
73
|
+
trellis_ui/templates/cotton/ui/combobox/group.html,sha256=FYNK_ZO850YZdcBi0QeqiGY1hMy-YSWDLBPBJnnYLPU,209
|
|
74
|
+
trellis_ui/templates/cotton/ui/combobox/impl.html,sha256=pBPzyqGVWKqbZ73uhswVmAtBpcHU5b5m2xudR-qYoCY,5419
|
|
75
|
+
trellis_ui/templates/cotton/ui/combobox/index.html,sha256=ZouTyX4pl-NtcCRCldd-Rxrz0WtCm690xIvJXyiWN3w,1063
|
|
76
|
+
trellis_ui/templates/cotton/ui/combobox/label.html,sha256=1-11OXYeCmAOhmamg_eckxHvJcqdOR6mMCt06Cgh5IY,325
|
|
77
|
+
trellis_ui/templates/cotton/ui/combobox/option.html,sha256=UQHZs-qxVJANDlOHp8EfsuwKT8nX0lEjDxIYVbU0Xps,2651
|
|
78
|
+
trellis_ui/templates/cotton/ui/combobox/separator.html,sha256=u5iPeToD5uJ9i6sF0RQvzu-cj4LmOMBrC-er87mJ7fk,323
|
|
79
|
+
trellis_ui/templates/cotton/ui/date_picker/impl.html,sha256=dYx59M5XibRYq3xK3006GYQhfsTeTG53_uO9wGfW1L0,13913
|
|
80
|
+
trellis_ui/templates/cotton/ui/date_picker/index.html,sha256=rqr5ZgDuUBIhr2gpmOjd4SA0C_60EAIz8z-o3f-ECGs,1134
|
|
81
|
+
trellis_ui/templates/cotton/ui/date_picker/preset.html,sha256=csgqOO9RH_fwjyRTy-11xCfRXPNQy5Vkp4_yBjlrmV0,677
|
|
82
|
+
trellis_ui/templates/cotton/ui/date_picker/presets.html,sha256=zAQvRA-sIyXnQUC92xFqhD67XXbc2fuQ2Pod8Lw1meA,290
|
|
83
|
+
trellis_ui/templates/cotton/ui/date_picker/trigger.html,sha256=FQ8Sg7TJnPU-XVlZxE-hpf2a1l4CnKfaIrQScMcfrYg,364
|
|
84
|
+
trellis_ui/templates/cotton/ui/dropdown/index.html,sha256=4GZ0xLAPr5cUZDHbYwDn5of8GjoHKTrNzRpG-Bqe-o8,636
|
|
85
|
+
trellis_ui/templates/cotton/ui/field/description.html,sha256=Uruh-I2wPAPMIbpkCBJkI1Hh2IUT23d42yrlMuK-9zA,344
|
|
86
|
+
trellis_ui/templates/cotton/ui/field/error.html,sha256=cDCW8Bfslq2ASWAOL0ZgicWoX5OMZ_sfifbd6tclENs,550
|
|
87
|
+
trellis_ui/templates/cotton/ui/field/group.html,sha256=HzBQKFhptor1mJaLrDo79KRqXg-kouQ0OAiiW4TVZSw,261
|
|
88
|
+
trellis_ui/templates/cotton/ui/field/index.html,sha256=tsiaxrWwon_H7rTEEaFptZVxYuJA5Q6_aqM3vo8goR4,1571
|
|
89
|
+
trellis_ui/templates/cotton/ui/field/label.html,sha256=rccGiPwnB8kp3L-4LbbFGINITbLevKRAW8wZS3IVUNc,563
|
|
90
|
+
trellis_ui/templates/cotton/ui/fieldset/index.html,sha256=P9vtiu6banG-SqzUGCOYlE7h95Va90BX1CEsmai0kk8,1187
|
|
91
|
+
trellis_ui/templates/cotton/ui/fieldset/legend.html,sha256=W1LYcCrggGP5J6BK6mWhEVnayp5-79_Quzkvt5tJw3k,501
|
|
92
|
+
trellis_ui/templates/cotton/ui/file_upload/control.html,sha256=zq3SgoMTVfGjFCo7BK0Jjz5vj0LjTig-HfzujekecSo,6910
|
|
93
|
+
trellis_ui/templates/cotton/ui/file_upload/dropzone.html,sha256=VWb_Gb-RTzUwrEfWQPx8xTFU0Qn0bU1FrPri6NH8NlY,1556
|
|
94
|
+
trellis_ui/templates/cotton/ui/file_upload/index.html,sha256=9WgZp6nxFqzUe26uC_LBKjPG8L2m8hR2n-RmjdJagPI,1294
|
|
95
|
+
trellis_ui/templates/cotton/ui/file_upload/item.html,sha256=jzCen4Fq64fEBVGyW2nzee1t7PB6s7-fEWu9UDObhfA,1941
|
|
96
|
+
trellis_ui/templates/cotton/ui/file_upload/list.html,sha256=hHYyu_j63Y8aurFwaxSDRc416y5N8CKiktZBes_BkCI,196
|
|
97
|
+
trellis_ui/templates/cotton/ui/file_upload/remove.html,sha256=WT52uHvvQj5rRnb1fx_dWKfBXxhgpwvSPlAfQAhp8JQ,514
|
|
98
|
+
trellis_ui/templates/cotton/ui/frame/body.html,sha256=dUyhFGQZRjAyMyPq78qG7hCUOFtug9U8hWOkOFEpbhQ,490
|
|
99
|
+
trellis_ui/templates/cotton/ui/frame/footer.html,sha256=w0i4jYwTYbUWncnazqprM7YmwsxUFq6M4KP4dlT8ImI,436
|
|
100
|
+
trellis_ui/templates/cotton/ui/frame/header.html,sha256=sJKhKZY-x3O9D2kPuU1HQTefvAjWJrCOfNbVrC9TqRA,436
|
|
101
|
+
trellis_ui/templates/cotton/ui/frame/index.html,sha256=xy72ps17f-kqkAyxDgk2WwQlfILEgA3NVWc4aqpswOU,693
|
|
102
|
+
trellis_ui/templates/cotton/ui/heading/index.html,sha256=SBtgFvxXbgn_f6Uv-WV2Z_aJFsQwtvZxeX1s42FPMeU,348
|
|
103
|
+
trellis_ui/templates/cotton/ui/image/index.html,sha256=SVG931sHBaZNJ_ktVJ974s_nSnsymzs5ho36roXX7Jc,572
|
|
104
|
+
trellis_ui/templates/cotton/ui/input/control.html,sha256=YNuinwMn3hNXcUI6F9NyLkdrJjZNGXFYl-KvSFqMO8s,35
|
|
105
|
+
trellis_ui/templates/cotton/ui/input/group.html,sha256=1s6faKl2hHhNCKTSuzX_vIkFDZWEegRgxCz8Sdp99A4,793
|
|
106
|
+
trellis_ui/templates/cotton/ui/input/impl.html,sha256=gInHhHkCou_FUPgkJFTGRzFj6lGpM2ai8sprzgmi-48,5598
|
|
107
|
+
trellis_ui/templates/cotton/ui/input/index.html,sha256=mrXPE3jWQK6zi14KLUsOkkpU1yyQebgihtgSjF_o5kU,854
|
|
108
|
+
trellis_ui/templates/cotton/ui/input/prefix.html,sha256=8bZJglBAillyQJJSRkbxw2rAPyahflExYQuQ-UbUoIc,211
|
|
109
|
+
trellis_ui/templates/cotton/ui/input/suffix.html,sha256=2VucmJhJHIQiXSZgFX8f7i51Svl2U1k_bU8Xxhenv84,211
|
|
110
|
+
trellis_ui/templates/cotton/ui/menu/group.html,sha256=2W-9Y7K5pnyv8Wnqxpsq6xYcPtwCqkdYYl1wdyvk-AI,201
|
|
111
|
+
trellis_ui/templates/cotton/ui/menu/index.html,sha256=7kjeW5nm76CMyoz5gTj6vA1dpJVDsscKPxGB5g8bVy4,419
|
|
112
|
+
trellis_ui/templates/cotton/ui/menu/item.html,sha256=NNRMVS0nb6i3jckQfDDMyWnXfUzenH-mRlsDS--vE0E,3078
|
|
113
|
+
trellis_ui/templates/cotton/ui/menu/label.html,sha256=ed_lpoT0U078ShhOXpMOn-aOV6fx1u2awnYIZXnoKZ8,348
|
|
114
|
+
trellis_ui/templates/cotton/ui/menu/separator.html,sha256=qjFPPqgai9ndhtUJAHnCpiw1cmZgi8QhEcVs9a88UKY,989
|
|
115
|
+
trellis_ui/templates/cotton/ui/modal/body.html,sha256=21afAy8xUxSQcVVuNmCqDcANhy7DGqmhuK6nGC23Mu4,186
|
|
116
|
+
trellis_ui/templates/cotton/ui/modal/close.html,sha256=L0iTZoUlquzdVkD2h6-bq0PPMFvgvJdEscF3fh-c6ow,658
|
|
117
|
+
trellis_ui/templates/cotton/ui/modal/description.html,sha256=lQ9sQJd7RMQlJgET73dzWAE05hZcbT9Aw2xClb7BZ70,312
|
|
118
|
+
trellis_ui/templates/cotton/ui/modal/footer.html,sha256=4JORPyJw8mYiW5kbdu28_BGtu_rt7PrnMlST7pM0DIc,194
|
|
119
|
+
trellis_ui/templates/cotton/ui/modal/index.html,sha256=EUYE9L7tgzZ0ZWv3ZObpxCs1zJUiPMFdxHO7Hx4ipI0,3008
|
|
120
|
+
trellis_ui/templates/cotton/ui/modal/outlet.html,sha256=NzNHS25Cgs9tR6J-uCAkndWuxF8fvebZ9vgGFBxI678,270
|
|
121
|
+
trellis_ui/templates/cotton/ui/modal/title.html,sha256=Yxca_buMD6iSRTeGgNmUULGAXf9L2OPhrbB1YOvF0-g,326
|
|
122
|
+
trellis_ui/templates/cotton/ui/modal/trigger.html,sha256=FZPWGQYMovoZYAFq9XVyyr4ThpoEboWCQoytQiYzvIc,381
|
|
123
|
+
trellis_ui/templates/cotton/ui/overlay/above.html,sha256=dydymnlGvoTwmTYMiT6tJdeeGddSfa1NcjbwBBVTAAE,194
|
|
124
|
+
trellis_ui/templates/cotton/ui/overlay/index.html,sha256=v0j3Rxwmz4lckJEvzOYptfj8gtGOwxNA5u_0NNgp8U0,459
|
|
125
|
+
trellis_ui/templates/cotton/ui/radio/group.html,sha256=qlWVaglm8lBHjQ54yQstXxJsdosHeoE5SQPTMhggO5I,1090
|
|
126
|
+
trellis_ui/templates/cotton/ui/radio/index.html,sha256=mLGhNz5iVgR3kZLcOnCEuSLJiUULH_OWXCZQQAk-rhk,3850
|
|
127
|
+
trellis_ui/templates/cotton/ui/radio/indicator.html,sha256=TPWOwon4DMz7V9tNJQMc21gGrrRLzq7bTf8N5JuOc9w,393
|
|
128
|
+
trellis_ui/templates/cotton/ui/scroll_area/index.html,sha256=w1--ixQESt9hLsA1BX8ngutaqDzW_14vUDbAjWtXrhk,3405
|
|
129
|
+
trellis_ui/templates/cotton/ui/select/button.html,sha256=_ukGpiEZJuXitS3IxCxyd68d0l3fMumXkv89bblFH1E,301
|
|
130
|
+
trellis_ui/templates/cotton/ui/select/group.html,sha256=aaszE2Cmn8hsgbc6vzimMPsOfvLUtH8y7MtIAE36Ttk,192
|
|
131
|
+
trellis_ui/templates/cotton/ui/select/impl.html,sha256=Phxjgov9SYSJHMzH1YT2JrFiX1SZrDU4W5Q-Eu7BFMw,11004
|
|
132
|
+
trellis_ui/templates/cotton/ui/select/index.html,sha256=XP6J4w2_b269TXsMc_Upn9ZnAX1JE6_gLRUgdrXE-8Y,1039
|
|
133
|
+
trellis_ui/templates/cotton/ui/select/input.html,sha256=vAJ2E-a06NXSUtOMFan3qJq-T7JOZb4slJWnsf_j9cc,376
|
|
134
|
+
trellis_ui/templates/cotton/ui/select/label.html,sha256=yiGCH4TcP2jCLTpzupKtbVYfZShUdTEnro1NcW0DVN4,294
|
|
135
|
+
trellis_ui/templates/cotton/ui/select/option.html,sha256=-GydIGwM_NRnzsqMI_8coaGFC5AYWPTOmaVIK0wFBWk,2810
|
|
136
|
+
trellis_ui/templates/cotton/ui/select/search.html,sha256=OEbdNcynGGbYXKyK5-02313qxI_pu5T0uiSvNqxJR_Q,1209
|
|
137
|
+
trellis_ui/templates/cotton/ui/select/separator.html,sha256=atuw70Ei9l5JSlbZGMjD6-grtmSm37-l9g4WUM3QKjo,327
|
|
138
|
+
trellis_ui/templates/cotton/ui/select/trigger.html,sha256=VMosEQHXUcyH5hje9XSiJBUnOBix46iYVyDBGtMCcfI,273
|
|
139
|
+
trellis_ui/templates/cotton/ui/select/option/create.html,sha256=vXf5KpyzQjWUcOHbAXmSXKpUBICEALVYNrV7D_YnKFA,474
|
|
140
|
+
trellis_ui/templates/cotton/ui/select/option/empty.html,sha256=2VCMYfbRXkTmqhQ46CxL2CXk5JViH0hjfVrzPfCZixs,266
|
|
141
|
+
trellis_ui/templates/cotton/ui/select/option/selected.html,sha256=KBx7IeQx48QNjavlnBs6kJWdpB-U8BQDRhBY4mj5lTg,90
|
|
142
|
+
trellis_ui/templates/cotton/ui/separator/index.html,sha256=KyWffVY0YdIMJ_JLi138mWRGO9Id-HKMWSrLEjshEys,1937
|
|
143
|
+
trellis_ui/templates/cotton/ui/sidebar/content.html,sha256=u7xdjOpHnlaNU1ceIAh0X-DkpGTzHrsLlshynp21T5k,394
|
|
144
|
+
trellis_ui/templates/cotton/ui/sidebar/footer.html,sha256=Lc_bdpKZEjd6dheHRw93Y1RbkiUwAYvmc6jpYmniBmA,198
|
|
145
|
+
trellis_ui/templates/cotton/ui/sidebar/group.html,sha256=p9Tpw03xFjJTdBREhp16oS9f0FbIXHWz1PDCbRPEoJQ,3471
|
|
146
|
+
trellis_ui/templates/cotton/ui/sidebar/header.html,sha256=hiiwstffOEIBgcC-5v9HyAunW1BiPM9z-stHmN0vP9g,198
|
|
147
|
+
trellis_ui/templates/cotton/ui/sidebar/index.html,sha256=z7E4IlQVJn-Q9sQNjIX-v1h1wdws1HDOV8dfwRkt_kA,2793
|
|
148
|
+
trellis_ui/templates/cotton/ui/sidebar/item.html,sha256=M7c0SMAdib26Zzor5IAdgfXrcsVL2FB0Qk_O5XeEZoo,4428
|
|
149
|
+
trellis_ui/templates/cotton/ui/sidebar/nav.html,sha256=ZgYdnp9Y4qkMBEhyHCUtt2iKkvUWJmVRW2YoiulHeNw,336
|
|
150
|
+
trellis_ui/templates/cotton/ui/sidebar/toggle.html,sha256=5tH-lo-aCkA8YvmBg30geOWnJsebtwnmB01dsRFKIic,1128
|
|
151
|
+
trellis_ui/templates/cotton/ui/slider/index.html,sha256=-CKNNqCEvQNVPQowiLnnAYr-taATDrsYiOhwFTg4_Zs,8548
|
|
152
|
+
trellis_ui/templates/cotton/ui/slider/tick.html,sha256=fo26ZonwRV022AlCGcLJBHxw3Y01S-SAzzFGORc8_iw,875
|
|
153
|
+
trellis_ui/templates/cotton/ui/spacer/index.html,sha256=twXH-uEE2U2fElx_1Zr6bW_y6UfTvFJjONPv7-qbDUs,174
|
|
154
|
+
trellis_ui/templates/cotton/ui/stream/index.html,sha256=WiXlzbrISPlvKi2Nqa19sAlZHbwXZcagIqmgC1D7TsM,102
|
|
155
|
+
trellis_ui/templates/cotton/ui/switch/control.html,sha256=tLfOlIrVGnJs2ogZX8MeGTcWjD1mxeOZWPziJ5mAfqA,69
|
|
156
|
+
trellis_ui/templates/cotton/ui/switch/impl.html,sha256=tBc1q9jNZX2dev3EO2iivXN0PjRu_6Tyf8Wky8Ktank,5593
|
|
157
|
+
trellis_ui/templates/cotton/ui/switch/index.html,sha256=2hkpkxAEhdqCKR4S6bjnpLHhzGPmcb62BlM-h7uKgV4,1934
|
|
158
|
+
trellis_ui/templates/cotton/ui/table/body.html,sha256=bAHMOIMeOJ_lJHYo_NbAZJtMQ91WhdyIVNqm_Hn6EJQ,190
|
|
159
|
+
trellis_ui/templates/cotton/ui/table/caption.html,sha256=Ror3O1e4exSZ0rPykp7-sC8yhreZqyTWqqCC3IXwLfs,280
|
|
160
|
+
trellis_ui/templates/cotton/ui/table/cell.html,sha256=ncIkY34UWWv_6-hcXTZkobPvzMbRgXZUsMeC2NsCjzg,308
|
|
161
|
+
trellis_ui/templates/cotton/ui/table/column.html,sha256=NKvCPZtlkHVlfoY32xKHw4xIenJRZCm7881kGbXtJ1k,2060
|
|
162
|
+
trellis_ui/templates/cotton/ui/table/empty.html,sha256=WFWspPSacQPx3kT1Cqn_Gi8FFgwd5gzkWzsggxVAL8k,448
|
|
163
|
+
trellis_ui/templates/cotton/ui/table/footer.html,sha256=IMRIEzCWBbsQyLsJ8HRfMQVHVLnzNQ1OktaEQj86QQs,198
|
|
164
|
+
trellis_ui/templates/cotton/ui/table/header.html,sha256=Mt_gK4NbZwI7Wym1a3RXAx9yDvxO1bF30h4dWeRQK7M,198
|
|
165
|
+
trellis_ui/templates/cotton/ui/table/index.html,sha256=fpT6SzQ-UKU_IwdoU7HE1VVvUU2Dt3b1yi1vURX3u9c,1415
|
|
166
|
+
trellis_ui/templates/cotton/ui/table/row.html,sha256=nb_GYLoUsifSCNv2IRjT-rqqGMrIrh6WMN_yRISZG_0,598
|
|
167
|
+
trellis_ui/templates/cotton/ui/table/column/filter.html,sha256=Dt_JmVFadmwxY4if5idpdQo3fcsiQwItfj0gtkjAux4,264
|
|
168
|
+
trellis_ui/templates/cotton/ui/table/row/header.html,sha256=vDlfRAUe8C0EMTrG5dgNgp2BNIAtanXgvrnwBjGtYy8,367
|
|
169
|
+
trellis_ui/templates/cotton/ui/tabs/index.html,sha256=FP17JVuuJgBD9JftuF6yZHxArq4kbDTD98Rpwiq0XWY,715
|
|
170
|
+
trellis_ui/templates/cotton/ui/tabs/list.html,sha256=ITybKL7wMlZ7uoPE2WWWSfHpmELUAVQ-zYvPTW_iEjQ,1020
|
|
171
|
+
trellis_ui/templates/cotton/ui/tabs/panel.html,sha256=IQHD3OttGJWpk3l9WtPMKJ8BkSqW21G04g5UJUq0f0U,1054
|
|
172
|
+
trellis_ui/templates/cotton/ui/tabs/panels.html,sha256=I1-OcSjkpuHaEaQELLHFjdQEszXm9MUoTPE9JU8s4Mg,316
|
|
173
|
+
trellis_ui/templates/cotton/ui/tabs/tab.html,sha256=JXjR4mlgSqBcqU8ImFSaEz1qziN0u4euLAMCjKicc3w,3660
|
|
174
|
+
trellis_ui/templates/cotton/ui/text/index.html,sha256=SKJoyhA6QKuOYhSfnD9f4YEB0Oxka8rew2yYSi1dzOg,308
|
|
175
|
+
trellis_ui/templates/cotton/ui/textarea/control.html,sha256=To0lBrqXUqakt20LhGut3hirHaYqXGRFAKYtxV-lDig,38
|
|
176
|
+
trellis_ui/templates/cotton/ui/textarea/impl.html,sha256=yqrMpTSG2-0i-ZPD8Qx2ZkFINPAmU1KOrMPRd5zVl9s,2071
|
|
177
|
+
trellis_ui/templates/cotton/ui/textarea/index.html,sha256=jjKDawdJ0ucH7Uk2jxxiMxxCllwiYifei-5G_Y4tcVU,866
|
|
178
|
+
trellis_ui/templates/cotton/ui/theme/text.html,sha256=sXpG0lKpX5HAzhJpCoQLrAZjElCkHNQFbtyexSYvrQw,256
|
|
179
|
+
trellis_ui/templates/cotton/ui/toast/index.html,sha256=zV-Rlv1HOzI7djYj8s8rn2gbCij2L9MA_A2YPGAvFw4,2908
|
|
180
|
+
trellis_ui/templates/cotton/ui/toast/outlet.html,sha256=dmlWtc3vovLt086Qr7zQSMA-eldZOY2W6akMvGNkshM,878
|
|
181
|
+
trellis_ui/templates/trellis_ui/forms/field.html,sha256=u0mwXJpRuM1q1CBfrocv368jO6cdWtZa4l11FtNlgl8,926
|
|
182
|
+
trellis_ui/templates/trellis_ui/forms/form.html,sha256=5JInA8V5rF_gAjluSfrM0bCOqA-S6XjyckYChRUSS_4,475
|
|
183
|
+
trellis_ui/templates/trellis_ui/forms/formset.html,sha256=ygosMw7kBMX_ZXskzP6b4wFmkkqn7gSGntKy9RlqkoE,188
|
|
184
|
+
trellis_ui/templates/trellis_ui/forms/widgets/checkbox.html,sha256=bDx81vIM3i3Dxzm378cLH8nX9-JLhOd1bOHK-DW8X-Q,372
|
|
185
|
+
trellis_ui/templates/trellis_ui/forms/widgets/checkbox_select.html,sha256=Ii67smeeg3KWUZOtyVbezl6-vtAzY51OeQQV7i3f9C0,1828
|
|
186
|
+
trellis_ui/templates/trellis_ui/forms/widgets/combobox_select.html,sha256=YAokceF0kIgCnmP5wsHVn0he3MLEuYgcV_ZIS2Fg9Ss,1729
|
|
187
|
+
trellis_ui/templates/trellis_ui/forms/widgets/date_picker.html,sha256=8pxbUkScpvNhMk7uAnj0uk73wSmXWmhZYGkiMaVKrJw,2960
|
|
188
|
+
trellis_ui/templates/trellis_ui/forms/widgets/file_upload.html,sha256=jB27H1Y7n2Nb0IY5wSBRlGApUA_7YR-pQia9UoGZyHM,668
|
|
189
|
+
trellis_ui/templates/trellis_ui/forms/widgets/input.html,sha256=LZrG_wfMxBNtloGB8LMWV3X5Tg5ei1kjPJR1C89iwGI,398
|
|
190
|
+
trellis_ui/templates/trellis_ui/forms/widgets/radio_select.html,sha256=BfmSTX7CRRsYq-_RxpA0sTAqNLrcoNjfvgOnNTL1F_8,1669
|
|
191
|
+
trellis_ui/templates/trellis_ui/forms/widgets/select.html,sha256=Xbc5hJx7Nr60yIAtTLBgqHe-WW4n5dScqZBUFIa_op4,4230
|
|
192
|
+
trellis_ui/templates/trellis_ui/forms/widgets/textarea.html,sha256=Z3p2EXxjsBHFSp9WCdmXK316EuffjnomRNmaXKFiWXg,428
|
|
193
|
+
trellis_ui/templatetags/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
194
|
+
trellis_ui/templatetags/ui_classes.py,sha256=mNXCkkBtgG0HMgrH1UPAF2vnYwT-F9w5lxGKkwWWn18,2570
|
|
195
|
+
trellis_ui/templatetags/ui_props.py,sha256=HDzQm7mRxrRQe5U3FuXCYq-BfC0cpezyRynVSD6DvUY,2759
|
|
196
|
+
django_trellis-0.1.0.dist-info/METADATA,sha256=1RFSVkdQXurznOead1FKfIuivPrQYuTwa5WWpttGPHE,466
|
|
197
|
+
django_trellis-0.1.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
198
|
+
django_trellis-0.1.0.dist-info/licenses/LICENSE,sha256=biNm3VDUBFSTpPGgjNdOdUGvv7xvA6jJDsjwife-jMM,1074
|
|
199
|
+
django_trellis-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tristan Robinette
|
|
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.
|
trellis_ui/__init__.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from .forms import (
|
|
2
|
+
BaseForm,
|
|
3
|
+
BaseFormMixin,
|
|
4
|
+
BaseFormSet,
|
|
5
|
+
BaseModelForm,
|
|
6
|
+
BaseModelFormSet,
|
|
7
|
+
ComboboxSelect,
|
|
8
|
+
DatePickerInput,
|
|
9
|
+
DateRangePickerInput,
|
|
10
|
+
WidgetContext,
|
|
11
|
+
widget_adapter,
|
|
12
|
+
)
|
|
13
|
+
from .stream import UI, ctx
|
|
14
|
+
from .targets import UITargets
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"UI",
|
|
18
|
+
"BaseForm",
|
|
19
|
+
"BaseFormMixin",
|
|
20
|
+
"BaseFormSet",
|
|
21
|
+
"BaseModelForm",
|
|
22
|
+
"BaseModelFormSet",
|
|
23
|
+
"ComboboxSelect",
|
|
24
|
+
"DatePickerInput",
|
|
25
|
+
"DateRangePickerInput",
|
|
26
|
+
"UITargets",
|
|
27
|
+
"WidgetContext",
|
|
28
|
+
"ctx",
|
|
29
|
+
"widget_adapter",
|
|
30
|
+
]
|
trellis_ui/apps.py
ADDED
trellis_ui/events.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
from enum import StrEnum
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class UIEvents(StrEnum):
|
|
6
|
+
MODAL_CLOSE = "ui:modal-close"
|
|
7
|
+
RESIZE = "ui:resize"
|
|
8
|
+
RESIZE_END = "ui:resize-end"
|
|
9
|
+
RESIZE_START = "ui:resize-start"
|
|
10
|
+
SIDEBAR_CLOSE = "ui:sidebar-close"
|
|
11
|
+
SIDEBAR_OPEN = "ui:sidebar-open"
|
|
12
|
+
TOAST = "ui:toast"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__ = ["UIEvents"]
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from collections.abc import Mapping, Sequence
|
|
2
|
+
from dataclasses import dataclass, field
|
|
3
|
+
from types import MappingProxyType
|
|
4
|
+
from typing import Any, Self
|
|
5
|
+
|
|
6
|
+
type JSONValue = str | int | float | bool | None | list[JSONValue] | dict[str, JSONValue]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass(frozen=True)
|
|
10
|
+
class RuleSpec[TValue]:
|
|
11
|
+
kind: str
|
|
12
|
+
field_path: str | None = None
|
|
13
|
+
operation_value: TValue | None = None
|
|
14
|
+
model: str | None = None
|
|
15
|
+
negate: bool = False
|
|
16
|
+
metadata: Mapping[str, Any] = field(default_factory=dict)
|
|
17
|
+
|
|
18
|
+
def __post_init__(self) -> None:
|
|
19
|
+
object.__setattr__(self, "kind", _validate_non_empty_string("kind", self.kind))
|
|
20
|
+
object.__setattr__(
|
|
21
|
+
self,
|
|
22
|
+
"field_path",
|
|
23
|
+
_validate_optional_non_empty_string("field_path", self.field_path),
|
|
24
|
+
)
|
|
25
|
+
object.__setattr__(self, "model", _validate_optional_string("model", self.model))
|
|
26
|
+
|
|
27
|
+
if not isinstance(self.negate, bool):
|
|
28
|
+
raise TypeError("negate must be a boolean.")
|
|
29
|
+
|
|
30
|
+
object.__setattr__(self, "metadata", _immutable_metadata(self.metadata))
|
|
31
|
+
|
|
32
|
+
def to_dict(self) -> dict[str, JSONValue]:
|
|
33
|
+
return {
|
|
34
|
+
"kind": self.kind,
|
|
35
|
+
"field_path": self.field_path,
|
|
36
|
+
"operation_value": _json_value(self.operation_value, name="operation_value"),
|
|
37
|
+
"model": self.model,
|
|
38
|
+
"negate": self.negate,
|
|
39
|
+
"metadata": _json_object(self.metadata, name="metadata"),
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_dict(cls, data: Mapping[str, Any]) -> Self:
|
|
44
|
+
if not isinstance(data, Mapping):
|
|
45
|
+
raise TypeError("RuleSpec.from_dict() expects a mapping.")
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
kind = data["kind"]
|
|
49
|
+
except KeyError as error:
|
|
50
|
+
raise ValueError("RuleSpec data must include kind.") from error
|
|
51
|
+
|
|
52
|
+
field_path = data.get("field_path")
|
|
53
|
+
operation_value = data.get("operation_value")
|
|
54
|
+
model = data.get("model")
|
|
55
|
+
negate = data.get("negate", False)
|
|
56
|
+
metadata = data.get("metadata", {})
|
|
57
|
+
|
|
58
|
+
_json_value(operation_value, name="operation_value")
|
|
59
|
+
_json_object(metadata, name="metadata")
|
|
60
|
+
|
|
61
|
+
return cls(
|
|
62
|
+
kind=kind,
|
|
63
|
+
field_path=field_path,
|
|
64
|
+
operation_value=operation_value,
|
|
65
|
+
model=model,
|
|
66
|
+
negate=negate,
|
|
67
|
+
metadata=metadata,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def spec[TValue](
|
|
72
|
+
kind: str,
|
|
73
|
+
*,
|
|
74
|
+
field_path: str | None = None,
|
|
75
|
+
operation_value: TValue | None = None,
|
|
76
|
+
model: str | None = None,
|
|
77
|
+
negate: bool = False,
|
|
78
|
+
metadata: Mapping[str, Any] | None = None,
|
|
79
|
+
**metadata_values: Any,
|
|
80
|
+
) -> RuleSpec[TValue]:
|
|
81
|
+
merged_metadata: dict[str, Any] = {}
|
|
82
|
+
if metadata is not None:
|
|
83
|
+
merged_metadata.update(_json_object(metadata, name="metadata"))
|
|
84
|
+
merged_metadata.update(metadata_values)
|
|
85
|
+
|
|
86
|
+
return RuleSpec(
|
|
87
|
+
kind=kind,
|
|
88
|
+
field_path=field_path,
|
|
89
|
+
operation_value=operation_value,
|
|
90
|
+
model=model,
|
|
91
|
+
negate=negate,
|
|
92
|
+
metadata=merged_metadata,
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _validate_non_empty_string(name: str, value: Any) -> str:
|
|
97
|
+
if not isinstance(value, str):
|
|
98
|
+
raise TypeError(f"{name} must be a string.")
|
|
99
|
+
if value == "":
|
|
100
|
+
raise ValueError(f"{name} must not be empty.")
|
|
101
|
+
return value
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _validate_optional_non_empty_string(name: str, value: Any) -> str | None:
|
|
105
|
+
if value is None:
|
|
106
|
+
return None
|
|
107
|
+
return _validate_non_empty_string(name, value)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def _validate_optional_string(name: str, value: Any) -> str | None:
|
|
111
|
+
if value is None:
|
|
112
|
+
return None
|
|
113
|
+
if not isinstance(value, str):
|
|
114
|
+
raise TypeError(f"{name} must be a string.")
|
|
115
|
+
return value
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _immutable_metadata(metadata: Mapping[str, Any]) -> Mapping[str, Any]:
|
|
119
|
+
return MappingProxyType(_json_object(metadata, name="metadata"))
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _json_object(value: Any, *, name: str) -> dict[str, JSONValue]:
|
|
123
|
+
if not isinstance(value, Mapping):
|
|
124
|
+
raise TypeError(f"{name} must be a mapping.")
|
|
125
|
+
|
|
126
|
+
output: dict[str, JSONValue] = {}
|
|
127
|
+
for key, item in value.items():
|
|
128
|
+
if not isinstance(key, str):
|
|
129
|
+
raise TypeError(f"{name} keys must be strings.")
|
|
130
|
+
output[key] = _json_value(item, name=f"{name}.{key}")
|
|
131
|
+
return output
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _json_value(value: Any, *, name: str) -> JSONValue:
|
|
135
|
+
if value is None or isinstance(value, str | int | float | bool):
|
|
136
|
+
return value
|
|
137
|
+
|
|
138
|
+
if isinstance(value, Mapping):
|
|
139
|
+
return _json_object(value, name=name)
|
|
140
|
+
|
|
141
|
+
if _is_json_sequence(value):
|
|
142
|
+
return [_json_value(item, name=name) for item in value]
|
|
143
|
+
|
|
144
|
+
raise TypeError(f"{name} must be JSON-compatible.")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _is_json_sequence(value: Any) -> bool:
|
|
148
|
+
return isinstance(value, Sequence) and not isinstance(value, str | bytes | bytearray)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from trellis_ui.forms.base import BaseForm, BaseFormMixin, BaseModelForm
|
|
2
|
+
from trellis_ui.forms.formsets import BaseFormSet, BaseModelFormSet
|
|
3
|
+
from trellis_ui.forms.widgets import (
|
|
4
|
+
ComboboxSelect,
|
|
5
|
+
DatePickerInput,
|
|
6
|
+
DateRangePickerInput,
|
|
7
|
+
WidgetContext,
|
|
8
|
+
widget_adapter,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"BaseForm",
|
|
13
|
+
"BaseFormMixin",
|
|
14
|
+
"BaseFormSet",
|
|
15
|
+
"BaseModelForm",
|
|
16
|
+
"BaseModelFormSet",
|
|
17
|
+
"ComboboxSelect",
|
|
18
|
+
"DatePickerInput",
|
|
19
|
+
"DateRangePickerInput",
|
|
20
|
+
"WidgetContext",
|
|
21
|
+
"widget_adapter",
|
|
22
|
+
]
|
trellis_ui/forms/base.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
|
|
3
|
+
from trellis_ui.forms.renderers import TrellisUIRenderer
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class BaseFormMixin:
|
|
7
|
+
default_renderer = TrellisUIRenderer
|
|
8
|
+
template_name_div = TrellisUIRenderer.form_template_name
|
|
9
|
+
template_name_p = TrellisUIRenderer.form_template_name
|
|
10
|
+
template_name_table = TrellisUIRenderer.form_template_name
|
|
11
|
+
template_name_ul = TrellisUIRenderer.form_template_name
|
|
12
|
+
|
|
13
|
+
def __init__(self, *args, **kwargs):
|
|
14
|
+
kwargs.setdefault("label_suffix", "")
|
|
15
|
+
super().__init__(*args, **kwargs)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseForm(BaseFormMixin, forms.Form):
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class BaseModelForm(BaseFormMixin, forms.ModelForm):
|
|
23
|
+
pass
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from django.forms.boundfield import BoundField
|
|
2
|
+
|
|
3
|
+
from trellis_ui.forms.widgets import render_bound_widget
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class UIBoundField(BoundField):
|
|
7
|
+
def as_widget(self, widget=None, attrs=None, only_initial=False):
|
|
8
|
+
widget = widget or self.field.widget
|
|
9
|
+
if self.field.localize:
|
|
10
|
+
widget.is_localized = True
|
|
11
|
+
attrs = attrs or {}
|
|
12
|
+
attrs = self.build_widget_attrs(attrs, widget)
|
|
13
|
+
if self.auto_id and "id" not in widget.attrs:
|
|
14
|
+
attrs.setdefault(
|
|
15
|
+
"id",
|
|
16
|
+
self.html_initial_id if only_initial else self.auto_id,
|
|
17
|
+
)
|
|
18
|
+
if only_initial and self.html_initial_name in self.form.data:
|
|
19
|
+
value = self.form._widget_data_value(
|
|
20
|
+
self.field.hidden_widget(),
|
|
21
|
+
self.html_initial_name,
|
|
22
|
+
)
|
|
23
|
+
else:
|
|
24
|
+
value = self.value()
|
|
25
|
+
|
|
26
|
+
return render_bound_widget(
|
|
27
|
+
bound_field=self,
|
|
28
|
+
widget=widget,
|
|
29
|
+
name=self.html_initial_name if only_initial else self.html_name,
|
|
30
|
+
value=value,
|
|
31
|
+
attrs=attrs,
|
|
32
|
+
renderer=self.form.renderer,
|
|
33
|
+
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from django.forms.formsets import BaseFormSet as DjangoBaseFormSet
|
|
2
|
+
from django.forms.models import BaseModelFormSet as DjangoBaseModelFormSet
|
|
3
|
+
|
|
4
|
+
from trellis_ui.forms.renderers import TrellisUIRenderer
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class BaseFormSet(DjangoBaseFormSet):
|
|
8
|
+
renderer = TrellisUIRenderer()
|
|
9
|
+
template_name_div = TrellisUIRenderer.formset_template_name
|
|
10
|
+
template_name_p = TrellisUIRenderer.formset_template_name
|
|
11
|
+
template_name_table = TrellisUIRenderer.formset_template_name
|
|
12
|
+
template_name_ul = TrellisUIRenderer.formset_template_name
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BaseModelFormSet(DjangoBaseModelFormSet):
|
|
16
|
+
renderer = TrellisUIRenderer()
|
|
17
|
+
template_name_div = TrellisUIRenderer.formset_template_name
|
|
18
|
+
template_name_p = TrellisUIRenderer.formset_template_name
|
|
19
|
+
template_name_table = TrellisUIRenderer.formset_template_name
|
|
20
|
+
template_name_ul = TrellisUIRenderer.formset_template_name
|