@trintel/zooy 1.0.1-beta.0
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.
- package/LICENSE +190 -0
- package/README.md +471 -0
- package/dist/chunks/16-30f5E9no.js +1 -0
- package/dist/chunks/16-41wFkj7S.js +1 -0
- package/dist/chunks/16-4Ffg4DOO.js +1 -0
- package/dist/chunks/16-8pr5mbIO.js +28 -0
- package/dist/chunks/16-B56B50XT.js +1 -0
- package/dist/chunks/16-BFJN6B6d.js +39 -0
- package/dist/chunks/16-BTonF5Je.js +29 -0
- package/dist/chunks/16-BiShwKPX.js +28 -0
- package/dist/chunks/16-BwDdccyH.js +33 -0
- package/dist/chunks/16-C7Xs-wKv.js +1 -0
- package/dist/chunks/16-CDRTWf-C.js +21 -0
- package/dist/chunks/16-CSWwhDUY.js +21 -0
- package/dist/chunks/16-ChlL35BX.js +62 -0
- package/dist/chunks/16-CpNRIuiB.js +1 -0
- package/dist/chunks/16-CqC9427V.js +21 -0
- package/dist/chunks/16-Cubm18Em.js +1 -0
- package/dist/chunks/16-D3Ol0pdg.js +21 -0
- package/dist/chunks/16-DH311Of_.js +1 -0
- package/dist/chunks/16-Dlq3qxDh.js +1 -0
- package/dist/chunks/16-Drl9-5Gn.js +21 -0
- package/dist/chunks/16-Dt4v0bcc.js +1 -0
- package/dist/chunks/16-DylBiJnm.js +1 -0
- package/dist/chunks/20-CZPIOG-A.js +84 -0
- package/dist/chunks/20-gmyNFvDv.js +1 -0
- package/dist/chunks/button-DdJepOoE.js +271 -0
- package/dist/chunks/button-skeleton-COf2kCDL.js +48 -0
- package/dist/chunks/button-skeleton-rf3WDPTZ.js +21 -0
- package/dist/chunks/button-zHEPxpXa.js +66 -0
- package/dist/chunks/carbon-element-CbfPUYRT.js +1 -0
- package/dist/chunks/carbon-element-DzDuXiyl.js +25 -0
- package/dist/chunks/checkbox-B5mHvx0J.js +200 -0
- package/dist/chunks/checkbox-BRPCg-DN.js +40 -0
- package/dist/chunks/class-map-BfNAkUL_.js +5 -0
- package/dist/chunks/class-map-DEHG4tmw.js +32 -0
- package/dist/chunks/collection-helpers-BwUB2CEz.js +8 -0
- package/dist/chunks/collection-helpers-CYLIiyii.js +1 -0
- package/dist/chunks/content-switcher-item-DeGjVRQY.js +350 -0
- package/dist/chunks/content-switcher-item-DucclV1b.js +27 -0
- package/dist/chunks/defs-DMmigODC.js +1077 -0
- package/dist/chunks/defs-DPD20sPK.js +1 -0
- package/dist/chunks/directive-Dp4ZTz-F.js +5 -0
- package/dist/chunks/directive-kLG6oqUu.js +27 -0
- package/dist/chunks/dropdown-item-BgLQ1VLo.js +69 -0
- package/dist/chunks/dropdown-item-DPdwOION.js +620 -0
- package/dist/chunks/focus-B9JYe97T.js +20 -0
- package/dist/chunks/focus-rQSNiwy7.js +1 -0
- package/dist/chunks/form-D6Tce4-W.js +1 -0
- package/dist/chunks/form-DpI-v6DA.js +20 -0
- package/dist/chunks/host-listener-CN245INl.js +37 -0
- package/dist/chunks/host-listener-DD3oGxvg.js +16 -0
- package/dist/chunks/host-listener-gxrTpxgv.js +1 -0
- package/dist/chunks/host-listener-rUcT_LUW.js +1 -0
- package/dist/chunks/icon-loader-Dk_AU26w.js +7 -0
- package/dist/chunks/icon-loader-o_JYDmJX.js +1 -0
- package/dist/chunks/icon-loader-utils-BBjK16O-.js +5 -0
- package/dist/chunks/icon-loader-utils-BEOGXn0q.js +117 -0
- package/dist/chunks/if-defined-BdZRLDJ6.js +5 -0
- package/dist/chunks/if-defined-C0yJsxi2.js +10 -0
- package/dist/chunks/if-non-empty-CEHK-hqx.js +1 -0
- package/dist/chunks/if-non-empty-DTGflHtA.js +5 -0
- package/dist/chunks/index-16wphaSo.js +4 -0
- package/dist/chunks/index-27oFQaOS.js +37 -0
- package/dist/chunks/index-45EApaFs.js +205 -0
- package/dist/chunks/index-5jmZyISW.js +1 -0
- package/dist/chunks/index-B1vQ44Hl.js +363 -0
- package/dist/chunks/index-B3CDjjXh.js +214 -0
- package/dist/chunks/index-B3mXrMt1.js +24 -0
- package/dist/chunks/index-B7mGUQhz.js +79 -0
- package/dist/chunks/index-BBNaYDog.js +22 -0
- package/dist/chunks/index-BBt9OmO5.js +12 -0
- package/dist/chunks/index-BIaF1Dfx.js +107 -0
- package/dist/chunks/index-BJAuRs3y.js +75 -0
- package/dist/chunks/index-BJKftWYn.js +89 -0
- package/dist/chunks/index-BLjNrhkN.js +4 -0
- package/dist/chunks/index-BOTu9u-3.js +86 -0
- package/dist/chunks/index-BPVpH8ll.js +160 -0
- package/dist/chunks/index-BRuvyoCz.js +15 -0
- package/dist/chunks/index-BSgHSOVT.js +65 -0
- package/dist/chunks/index-BSh7UYcP.js +9 -0
- package/dist/chunks/index-BUxB7aWd.js +96 -0
- package/dist/chunks/index-BXIxcS00.js +22 -0
- package/dist/chunks/index-BXczHDk-.js +187 -0
- package/dist/chunks/index-BaVyBv2V.js +25 -0
- package/dist/chunks/index-BgbqX0uv.js +234 -0
- package/dist/chunks/index-BjQlt8g2.js +451 -0
- package/dist/chunks/index-BoNLj7PW.js +44 -0
- package/dist/chunks/index-BwIoRMDI.js +24 -0
- package/dist/chunks/index-Bwix1iwB.js +38 -0
- package/dist/chunks/index-BxVW3p3I.js +258 -0
- package/dist/chunks/index-ByKyGGzb.js +3 -0
- package/dist/chunks/index-ByTSSU1x.js +1 -0
- package/dist/chunks/index-C8LyfVmf.js +428 -0
- package/dist/chunks/index-CBbsFlsv.js +290 -0
- package/dist/chunks/index-CByffhPq.js +762 -0
- package/dist/chunks/index-CIbRjtWm.js +32 -0
- package/dist/chunks/index-CIzeMGQv.js +81 -0
- package/dist/chunks/index-CLGxSjLW.js +62 -0
- package/dist/chunks/index-CMF5Cawn.js +70 -0
- package/dist/chunks/index-CO-A2KY9.js +562 -0
- package/dist/chunks/index-CONgwvp0.js +12 -0
- package/dist/chunks/index-CT43RMOu.js +20 -0
- package/dist/chunks/index-CUgiXqyk.js +4 -0
- package/dist/chunks/index-C_K070Kn.js +284 -0
- package/dist/chunks/index-C_ttE2g9.js +16 -0
- package/dist/chunks/index-CcgnA1uu.js +29 -0
- package/dist/chunks/index-Cd7aoWrX.js +336 -0
- package/dist/chunks/index-Ce-pMzBC.js +19 -0
- package/dist/chunks/index-CgYZ66P_.js +187 -0
- package/dist/chunks/index-ChcHMeAS.js +35 -0
- package/dist/chunks/index-Cixdzvwd.js +682 -0
- package/dist/chunks/index-Clq0Fl19.js +15 -0
- package/dist/chunks/index-CtxTJnIm.js +58 -0
- package/dist/chunks/index-Cv1hWa_y.js +242 -0
- package/dist/chunks/index-CzTjJ8lP.js +432 -0
- package/dist/chunks/index-D0xRAPD5.js +75 -0
- package/dist/chunks/index-D25buhRm.js +79 -0
- package/dist/chunks/index-D4DqJG5_.js +16 -0
- package/dist/chunks/index-D5GGFPcS.js +251 -0
- package/dist/chunks/index-D5kiHJpX.js +413 -0
- package/dist/chunks/index-DEjRiv5B.js +1 -0
- package/dist/chunks/index-DFA4_spk.js +160 -0
- package/dist/chunks/index-DFZsXFsx.js +19 -0
- package/dist/chunks/index-DGauWNwV.js +156 -0
- package/dist/chunks/index-DIR0jr3f.js +127 -0
- package/dist/chunks/index-DNeagy5a.js +65 -0
- package/dist/chunks/index-DO0fmDR9.js +2 -0
- package/dist/chunks/index-DSitHBEh.js +36 -0
- package/dist/chunks/index-DW7ST0tB.js +1 -0
- package/dist/chunks/index-DWfFgEXE.js +110 -0
- package/dist/chunks/index-DX6WAtmo.js +874 -0
- package/dist/chunks/index-DaPfSuLu.js +393 -0
- package/dist/chunks/index-DbKlVm7y.js +74 -0
- package/dist/chunks/index-DdNZTQw1.js +48 -0
- package/dist/chunks/index-Dgi-m1K-.js +1 -0
- package/dist/chunks/index-Dh4uigJs.js +454 -0
- package/dist/chunks/index-DnYNK1mz.js +8 -0
- package/dist/chunks/index-DnierBep.js +510 -0
- package/dist/chunks/index-DnpSGM23.js +213 -0
- package/dist/chunks/index-DntY4deR.js +41 -0
- package/dist/chunks/index-Dp4A8k6C.js +103 -0
- package/dist/chunks/index-Dphpk5r2.js +1 -0
- package/dist/chunks/index-DrBrgF-v.js +49 -0
- package/dist/chunks/index-Dr_cqQ-_.js +77 -0
- package/dist/chunks/index-Dt-nBtrQ.js +26 -0
- package/dist/chunks/index-DurPWBYc.js +24 -0
- package/dist/chunks/index-DwTj7cFr.js +57 -0
- package/dist/chunks/index-DyZVAYLv.js +52 -0
- package/dist/chunks/index-Hh597Yu6.js +121 -0
- package/dist/chunks/index-LxkAuMAA.js +1 -0
- package/dist/chunks/index-OaQhvPR1.js +46 -0
- package/dist/chunks/index-UPr2EvBX.js +149 -0
- package/dist/chunks/index-WNXgzThF.js +2340 -0
- package/dist/chunks/index-WvrCPen2.js +367 -0
- package/dist/chunks/index-cTXIVcWI.js +45 -0
- package/dist/chunks/index-caLn8cu1.js +1603 -0
- package/dist/chunks/index-hLI0Bnyb.js +77 -0
- package/dist/chunks/index-jBse-XgU.js +35 -0
- package/dist/chunks/index-oTjafsfN.js +25 -0
- package/dist/chunks/index-qNmuI3RB.js +149 -0
- package/dist/chunks/index-qiqzy9MI.js +23 -0
- package/dist/chunks/index-rwBsdvh6.js +87 -0
- package/dist/chunks/index-siqJUhKa.js +1 -0
- package/dist/chunks/index-w-G9CFId.js +1 -0
- package/dist/chunks/index-x6SeA7x7.js +405 -0
- package/dist/chunks/loading-icon-DJQIjg97.js +23 -0
- package/dist/chunks/loading-icon-DhJR6LyV.js +16 -0
- package/dist/chunks/main-DUusfqrI.js +18 -0
- package/dist/chunks/main-Dp7wHHgP.js +2882 -0
- package/dist/chunks/on-BPhwbVf3.js +10 -0
- package/dist/chunks/on-XRofyGQh.js +1 -0
- package/dist/chunks/property-DCYiZTFF.js +5 -0
- package/dist/chunks/property-pT1z5CCa.js +36 -0
- package/dist/chunks/query-CbRg6ZGy.js +23 -0
- package/dist/chunks/query-Dh8joWcT.js +9 -0
- package/dist/chunks/radio-group-manager-DBAEmhDM.js +1 -0
- package/dist/chunks/radio-group-manager-Du5wSOS1.js +102 -0
- package/dist/chunks/register-BK21_Wkj.js +11035 -0
- package/dist/chunks/register-BMNs2hNG.js +2157 -0
- package/dist/chunks/register-Cc9zkA5F.js +1 -0
- package/dist/chunks/register-JwwMwdRf.js +1273 -0
- package/dist/chunks/search-C3raqgOD.js +30 -0
- package/dist/chunks/search-CIhxkVjj.js +239 -0
- package/dist/chunks/select-item-4aISXm0r.js +76 -0
- package/dist/chunks/select-item-DjoxYopL.js +356 -0
- package/dist/chunks/settings-BPOpwVkr.js +594 -0
- package/dist/chunks/settings-CK2vhfPu.js +78 -0
- package/dist/chunks/shared-enums-BJDDuJr7.js +1 -0
- package/dist/chunks/shared-enums-DALKjQ7e.js +7 -0
- package/dist/chunks/state-Bpmgn27B.js +12 -0
- package/dist/chunks/state-FnSmMH94.js +5 -0
- package/dist/chunks/text-input-BygzMjjc.js +371 -0
- package/dist/chunks/text-input-cjcnMXO-.js +68 -0
- package/dist/chunks/tooltip-content-BjdZJ_Ui.js +134 -0
- package/dist/chunks/tooltip-content-DHyDYyOH.js +3 -0
- package/dist/chunks/tslib.es6-B07k2eac.js +1 -0
- package/dist/chunks/tslib.es6-C5gLNDSD.js +160 -0
- package/dist/chunks/unsafe-html-C_MKAcuC.js +5 -0
- package/dist/chunks/unsafe-html-D49sIpJ5.js +27 -0
- package/dist/chunks/validity-BMLNCMmP.js +1 -0
- package/dist/chunks/validity-CTz7ivUd.js +59 -0
- package/dist/zooy.cjs.js +1 -0
- package/dist/zooy.es.js +4 -0
- package/package.json +57 -0
- package/src/sass/carbon-icons.scss +46 -0
- package/src/sass/main.scss +7 -0
- package/src/sass/panels.scss +642 -0
- package/src/sass/reset.scss +43 -0
- package/src/sass/split.scss +131 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Support. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
Copyright 2025 Jan Badenhorst
|
|
179
|
+
|
|
180
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
181
|
+
you may not use this file except in compliance with the License.
|
|
182
|
+
You may obtain a copy of the License at
|
|
183
|
+
|
|
184
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
185
|
+
|
|
186
|
+
Unless required by applicable law or agreed to in writing, software
|
|
187
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
188
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
189
|
+
See the License for the specific language governing permissions and
|
|
190
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
# Zooy
|
|
2
|
+
|
|
3
|
+
A lightweight, event-driven JavaScript UI framework for building complex, interactive web applications. Zooy provides a component-based architecture with lifecycle management, declarative event handling, and powerful layout primitives.
|
|
4
|
+
|
|
5
|
+
## Why "zooy"?
|
|
6
|
+
|
|
7
|
+
Originally developed for **ThingZoo** (now marketed as **Connect**), an IoT platform designed to manage a "menagerie" of connected devices from around the world.
|
|
8
|
+
|
|
9
|
+
The UI framework evolved from:
|
|
10
|
+
- **zoo-ui** → The UI library for managing things
|
|
11
|
+
- **zoo-youeye** → Phonetic play on pronunciation
|
|
12
|
+
- **zooy** → Final form
|
|
13
|
+
|
|
14
|
+
The name reflects the framework's core purpose: orchestrating diverse UI components (panels, views, splits) and managing different component libraries (MDC, Carbon, custom) — just as a zoo manages diverse creatures.
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Zooy is a UI framework that emphasizes:
|
|
19
|
+
- **Component lifecycle management** - Automatic cleanup of event listeners and resources
|
|
20
|
+
- **Event-driven architecture** - Components communicate through a standardized event system
|
|
21
|
+
- **Declarative UI patterns** - HTML-driven component initialization and interaction
|
|
22
|
+
- **Progressive enhancement** - Works with server-rendered HTML
|
|
23
|
+
- **Pluggable component libraries** - Support for multiple UI libraries (MDC, Carbon Design System, custom components)
|
|
24
|
+
- **Lazy loading** - Dynamic imports reduce initial bundle size
|
|
25
|
+
|
|
26
|
+
## Architecture
|
|
27
|
+
|
|
28
|
+
### Core Hierarchy
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
EVT (Event Target)
|
|
32
|
+
└─ Component
|
|
33
|
+
├─ Panel
|
|
34
|
+
│ └─ FormPanel
|
|
35
|
+
├─ Dragger
|
|
36
|
+
└─ Split
|
|
37
|
+
|
|
38
|
+
EVT
|
|
39
|
+
├─ View
|
|
40
|
+
└─ Conductor
|
|
41
|
+
|
|
42
|
+
ComponentLibraryRegistry (Static)
|
|
43
|
+
├─ MDC Library (Material Design Components)
|
|
44
|
+
└─ Carbon Library (IBM Carbon Design System)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Key Concepts
|
|
48
|
+
|
|
49
|
+
#### **EVT** - Event System Foundation
|
|
50
|
+
Base class that extends `EventTarget` with enhanced listener management:
|
|
51
|
+
- Automatic listener cleanup on disposal
|
|
52
|
+
- Observer pattern for managing component relationships
|
|
53
|
+
- Interval tracking with automatic cleanup
|
|
54
|
+
- Debug mode for development
|
|
55
|
+
|
|
56
|
+
#### **Component** - UI Building Block
|
|
57
|
+
Base class for all visual components:
|
|
58
|
+
- DOM lifecycle management (create, render, enter/exit document)
|
|
59
|
+
- Parent-child component hierarchy
|
|
60
|
+
- Target-based rendering (components can render into any container)
|
|
61
|
+
- Model binding for data association
|
|
62
|
+
- Placeholder DOM for async loading states
|
|
63
|
+
- Out-of-tree element management (for portals/hoisted elements)
|
|
64
|
+
|
|
65
|
+
#### **Panel** - Content Container
|
|
66
|
+
Specialized component for dynamic content:
|
|
67
|
+
- URI-based content fetching and rendering
|
|
68
|
+
- Query parameter management
|
|
69
|
+
- Server-side HTML template rendering
|
|
70
|
+
- Script and module evaluation
|
|
71
|
+
- Form interception and AJAX submission
|
|
72
|
+
- Component library auto-initialization (pluggable)
|
|
73
|
+
- Async content population with intervals
|
|
74
|
+
- Partial DOM replacement for live updates
|
|
75
|
+
|
|
76
|
+
#### **ComponentLibraryRegistry** - Pluggable UI Libraries
|
|
77
|
+
Central registry system for component libraries:
|
|
78
|
+
- Register multiple UI libraries (MDC, Carbon, custom)
|
|
79
|
+
- Lazy-load libraries via dynamic imports
|
|
80
|
+
- Automatic component initialization when panels render
|
|
81
|
+
- Import caching for performance
|
|
82
|
+
- Library-specific lifecycle hooks (render, dispose)
|
|
83
|
+
- No library lock-in - use what fits your needs
|
|
84
|
+
|
|
85
|
+
#### **FormPanel** - Form Management
|
|
86
|
+
Enhanced panel for form handling:
|
|
87
|
+
- HTML5 constraint validation
|
|
88
|
+
- Field-level error display
|
|
89
|
+
- Submit interception for AJAX posting
|
|
90
|
+
- Server response processing
|
|
91
|
+
- Form refresh and replacement
|
|
92
|
+
- Success/error callback handling
|
|
93
|
+
|
|
94
|
+
#### **View** - Panel Orchestrator
|
|
95
|
+
Manages multiple panels as a cohesive screen:
|
|
96
|
+
- Panel lifecycle management
|
|
97
|
+
- Event routing between panels
|
|
98
|
+
- Split component integration for layouts
|
|
99
|
+
- User context injection
|
|
100
|
+
- Browser history recording
|
|
101
|
+
- View switching coordination
|
|
102
|
+
- Data broadcasting to all panels
|
|
103
|
+
- Metadata storage for view state
|
|
104
|
+
|
|
105
|
+
#### **Conductor** - Application Controller
|
|
106
|
+
Top-level orchestrator for the entire application:
|
|
107
|
+
- View lifecycle management (one active view at a time)
|
|
108
|
+
- Browser history integration (back/forward navigation)
|
|
109
|
+
- View constructor registration
|
|
110
|
+
- Navigation routing
|
|
111
|
+
- User session management
|
|
112
|
+
- View transition coordination
|
|
113
|
+
|
|
114
|
+
#### **Split** - Resizable Layouts
|
|
115
|
+
Sophisticated layout component for dividing space:
|
|
116
|
+
- Horizontal (EW) and vertical (NS) orientations
|
|
117
|
+
- Nested splitting (recursive division)
|
|
118
|
+
- Draggable dividers with Dragger components
|
|
119
|
+
- Programmatic nest control (open, close, lock, unlock)
|
|
120
|
+
- Animated transitions
|
|
121
|
+
- State management for each nest
|
|
122
|
+
- Event dispatching for layout changes
|
|
123
|
+
|
|
124
|
+
#### **Dragger** - Drag Functionality
|
|
125
|
+
Component for creating draggable elements:
|
|
126
|
+
- Constrained movement (X, Y, or both)
|
|
127
|
+
- Touch and mouse event support
|
|
128
|
+
- Drag start/move/end events with delta tracking
|
|
129
|
+
- Lock/unlock state management
|
|
130
|
+
- Customizable drag handles
|
|
131
|
+
|
|
132
|
+
## Key Capabilities
|
|
133
|
+
|
|
134
|
+
### 1. Component Lifecycle
|
|
135
|
+
Components follow a predictable lifecycle:
|
|
136
|
+
```javascript
|
|
137
|
+
const panel = new Panel('/api/content');
|
|
138
|
+
panel.target = document.getElementById('container');
|
|
139
|
+
panel.render(); // Creates DOM → Enters document → Fires READY event
|
|
140
|
+
// ... use component ...
|
|
141
|
+
panel.dispose(); // Exits document → Cleans up listeners → Removes DOM
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 2. Event-Driven Communication
|
|
145
|
+
Components communicate through standardized events:
|
|
146
|
+
```javascript
|
|
147
|
+
// Panel dispatches event
|
|
148
|
+
panel.dispatchPanelEvent('custom_action', { data: 'value' });
|
|
149
|
+
|
|
150
|
+
// View listens and handles
|
|
151
|
+
view.mapPanEv('custom_action', (eventData, panel) => {
|
|
152
|
+
console.log('Panel action:', eventData.data);
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 3. Declarative HTML Patterns
|
|
157
|
+
Zooy enhances HTML with data attributes for interactions:
|
|
158
|
+
```html
|
|
159
|
+
<!-- Button with custom event -->
|
|
160
|
+
<button class="zoo__button" data-zv="save" data-pk="123">Save</button>
|
|
161
|
+
|
|
162
|
+
<!-- Form with interception -->
|
|
163
|
+
<form class="intercept_submit" data-zv="search" data-href="/api/search">
|
|
164
|
+
<input name="q" />
|
|
165
|
+
</form>
|
|
166
|
+
|
|
167
|
+
<!-- Async content loading -->
|
|
168
|
+
<div class="zoo_async_html" data-href="/api/widget"></div>
|
|
169
|
+
|
|
170
|
+
<!-- Toggle class interaction -->
|
|
171
|
+
<button class="zoo__toggle_class_driver"
|
|
172
|
+
data-toggle_class_target_id="menu"
|
|
173
|
+
data-toggle_class="open">
|
|
174
|
+
Toggle Menu
|
|
175
|
+
</button>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 4. URI-Based Content
|
|
179
|
+
Panels can load content from URIs with query parameter management:
|
|
180
|
+
```javascript
|
|
181
|
+
const panel = new Panel('/api/data?page=1');
|
|
182
|
+
panel.addToQParams('filter', 'active');
|
|
183
|
+
panel.renderWithTemplate(); // Fetches: /api/data?page=1&filter=active
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 5. Form Handling
|
|
187
|
+
FormPanel provides validation and AJAX submission:
|
|
188
|
+
```javascript
|
|
189
|
+
const form = new FormPanel('/api/form');
|
|
190
|
+
form.onSubmitSuccess((panel, response) => {
|
|
191
|
+
console.log('Form submitted successfully:', response);
|
|
192
|
+
});
|
|
193
|
+
form.render();
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### 6. Resizable Layouts
|
|
197
|
+
Split component creates complex, resizable layouts:
|
|
198
|
+
```javascript
|
|
199
|
+
const split = new Split();
|
|
200
|
+
split.render(document.getElementById('app'));
|
|
201
|
+
|
|
202
|
+
// Create horizontal split: [A | B | C]
|
|
203
|
+
split.addSplit(undefined, 'EW', 200, 200);
|
|
204
|
+
|
|
205
|
+
// Nest A can now be split vertically
|
|
206
|
+
split.addSplit(split.getNest('A'), 'NS', 100, 100);
|
|
207
|
+
// Results in: [A1 | B | C]
|
|
208
|
+
// [A2 | | ]
|
|
209
|
+
// [A3 | | ]
|
|
210
|
+
|
|
211
|
+
// Programmatic control
|
|
212
|
+
split.open('A');
|
|
213
|
+
split.close('C');
|
|
214
|
+
split.toggle('B');
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 7. Navigation & History
|
|
218
|
+
Conductor manages application navigation with history:
|
|
219
|
+
```javascript
|
|
220
|
+
const conductor = new Conductor();
|
|
221
|
+
|
|
222
|
+
// Register view constructors
|
|
223
|
+
conductor.registerViewConstructor('dashboard', (pk, data) => {
|
|
224
|
+
return new DashboardView(pk, data);
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Switch views (records history)
|
|
228
|
+
conductor.switchView(new DashboardView());
|
|
229
|
+
|
|
230
|
+
// Browser back/forward automatically handled
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 8. Component Library Registration
|
|
234
|
+
Register UI libraries at application startup:
|
|
235
|
+
```javascript
|
|
236
|
+
import zooy from 'zooy';
|
|
237
|
+
|
|
238
|
+
const entryFunc = async (user) => {
|
|
239
|
+
// Register component libraries (lazy-loaded)
|
|
240
|
+
await zooy.registerMdcLibrary(); // Material Design Components
|
|
241
|
+
await zooy.registerCarbonLibrary(); // IBM Carbon Design System
|
|
242
|
+
|
|
243
|
+
// Now render your application
|
|
244
|
+
const view = new MyView();
|
|
245
|
+
view.render();
|
|
246
|
+
};
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 9. Material Design Components
|
|
250
|
+
MDC components automatically initialize when panels render:
|
|
251
|
+
```html
|
|
252
|
+
<button class="mdc-button">
|
|
253
|
+
<span class="mdc-button__label">Click Me</span>
|
|
254
|
+
</button>
|
|
255
|
+
|
|
256
|
+
<ul class="mdc-list mdc-tree">
|
|
257
|
+
<li class="mdc-list-item">Tree Item 1</li>
|
|
258
|
+
<li class="mdc-list-item">Tree Item 2</li>
|
|
259
|
+
</ul>
|
|
260
|
+
<!-- Panel.parseContent() automatically initializes all MDC components -->
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 10. Carbon Design System
|
|
264
|
+
Carbon Web Components load dynamically as needed:
|
|
265
|
+
```html
|
|
266
|
+
<!-- Use data-carbon-component to specify which component to load -->
|
|
267
|
+
<div data-carbon-component="button">
|
|
268
|
+
<cds-button>Click Me</cds-button>
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
<div data-carbon-component="accordion">
|
|
272
|
+
<cds-accordion>
|
|
273
|
+
<cds-accordion-item title="Section 1">
|
|
274
|
+
Content here
|
|
275
|
+
</cds-accordion-item>
|
|
276
|
+
</cds-accordion>
|
|
277
|
+
</div>
|
|
278
|
+
<!-- Components are imported dynamically and cached for performance -->
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Why Pluggable Component Libraries?
|
|
282
|
+
|
|
283
|
+
The ComponentLibraryRegistry architecture provides several key benefits:
|
|
284
|
+
|
|
285
|
+
### 🎯 **No Library Lock-in**
|
|
286
|
+
Use MDC, Carbon, or build custom components — zooy doesn't care. Mix and match as needed.
|
|
287
|
+
|
|
288
|
+
### 📦 **Smaller Initial Bundles**
|
|
289
|
+
Component libraries load on-demand via dynamic imports:
|
|
290
|
+
- Core framework: ~101KB (~27KB gzipped)
|
|
291
|
+
- MDC library: +463KB (~62KB gzipped, only if registered)
|
|
292
|
+
- Carbon library: +34KB (~7KB gzipped, only if registered)
|
|
293
|
+
- Individual Carbon components: Loaded as panels use them
|
|
294
|
+
|
|
295
|
+
### 🔄 **Gradual Migration**
|
|
296
|
+
Migrate from one component library to another incrementally:
|
|
297
|
+
1. Register both libraries
|
|
298
|
+
2. Existing panels continue using MDC
|
|
299
|
+
3. New panels use Carbon
|
|
300
|
+
4. Replace components one-by-one
|
|
301
|
+
5. Eventually remove MDC registration
|
|
302
|
+
|
|
303
|
+
### 🧩 **Framework Evolution**
|
|
304
|
+
As component libraries evolve (MDC → Material Web Components), zooy's architecture remains stable. Just swap the registration module.
|
|
305
|
+
|
|
306
|
+
### 🚀 **Performance**
|
|
307
|
+
- Import caching prevents duplicate downloads
|
|
308
|
+
- Only load components actually used in your app
|
|
309
|
+
- Lazy loading reduces time-to-interactive
|
|
310
|
+
|
|
311
|
+
## Integration Notes
|
|
312
|
+
|
|
313
|
+
### Carbon Design System Theming
|
|
314
|
+
|
|
315
|
+
If your application imports `@carbon/styles` for theming (e.g., to customize Carbon component styles), you'll need to handle font path configuration:
|
|
316
|
+
|
|
317
|
+
**The Issue**: Carbon's default configuration uses Webpack-style paths (`~@ibm/plex`) that don't work with vanilla Sass compilation.
|
|
318
|
+
|
|
319
|
+
**Solution**: Override the font path when importing Carbon styles in your application's SCSS:
|
|
320
|
+
|
|
321
|
+
```scss
|
|
322
|
+
// In your application's theme file
|
|
323
|
+
@use '@carbon/styles' as * with (
|
|
324
|
+
$font-path: '../path/to/node_modules/@ibm/plex'
|
|
325
|
+
);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Required Dependencies**: Your application's `package.json` should include:
|
|
329
|
+
|
|
330
|
+
```json
|
|
331
|
+
{
|
|
332
|
+
"dependencies": {
|
|
333
|
+
"@carbon/styles": "^1.x.x",
|
|
334
|
+
"@ibm/plex": "^6.x.x"
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Path Calculation**: The `$font-path` should be relative from your CSS output location to the font files:
|
|
340
|
+
- CSS output: `/static/css/theme.css`
|
|
341
|
+
- Font files: `/static/js/node_modules/@ibm/plex/...`
|
|
342
|
+
- Correct path: `../js/node_modules/@ibm/plex`
|
|
343
|
+
|
|
344
|
+
**Note**: Zooy itself only imports Carbon Web Components (JavaScript), not the Carbon styles (CSS). CSS theming is the responsibility of the implementing application, allowing full control over design tokens, typography, and component styling.
|
|
345
|
+
|
|
346
|
+
### Carbon Icons
|
|
347
|
+
|
|
348
|
+
**⚠️ Deprecated: Client-side placeholder loading has been removed.**
|
|
349
|
+
|
|
350
|
+
Zooy previously supported client-side icon placeholder loading (`[data-carbon-icon]`), but this has been removed in favor of server-side rendering for better performance and simplicity.
|
|
351
|
+
|
|
352
|
+
**For Django applications**: Use [django-zooy](https://github.com/trinity-telecomms/django-zooy) which provides server-side icon rendering:
|
|
353
|
+
|
|
354
|
+
```django
|
|
355
|
+
{% load carbon %}
|
|
356
|
+
{% carbon_icon "add" 16 slot="icon" %}
|
|
357
|
+
<!-- Renders: <svg xmlns="..."><path d="..."/></svg> -->
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
**Benefits of server-side rendering**:
|
|
361
|
+
- ✅ No JavaScript required
|
|
362
|
+
- ✅ No network requests
|
|
363
|
+
- ✅ No placeholders or flicker
|
|
364
|
+
- ✅ Works without JS (progressive enhancement)
|
|
365
|
+
- ✅ Instant rendering
|
|
366
|
+
|
|
367
|
+
**For non-Django applications**: The programmatic icon API (`icons-api.js`) is still available for runtime icon generation if needed:
|
|
368
|
+
|
|
369
|
+
```javascript
|
|
370
|
+
import zooy from 'zooy';
|
|
371
|
+
|
|
372
|
+
// Create icon programmatically
|
|
373
|
+
const iconSvg = await zooy.icons.createIcon('add', 16, { slot: 'icon' });
|
|
374
|
+
document.body.appendChild(iconSvg);
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
However, server-side rendering (in templates/build step) is strongly recommended over runtime generation.
|
|
378
|
+
|
|
379
|
+
## Development
|
|
380
|
+
|
|
381
|
+
### Prerequisites
|
|
382
|
+
- Node.js and npm
|
|
383
|
+
- Modern browser with ES6+ support
|
|
384
|
+
|
|
385
|
+
### Setup
|
|
386
|
+
```bash
|
|
387
|
+
npm install
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### Linting
|
|
391
|
+
```bash
|
|
392
|
+
npm run lint # Check for issues
|
|
393
|
+
npm run lint:fix # Auto-fix issues
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Pre-commit Hooks
|
|
397
|
+
Husky is configured to run linting before each commit, ensuring code quality.
|
|
398
|
+
|
|
399
|
+
## Code Quality
|
|
400
|
+
|
|
401
|
+
- **ESLint** - Modern flat config with strict rules
|
|
402
|
+
- **JSDoc** - Complete documentation for all core components
|
|
403
|
+
- **Type annotations** - Comprehensive JSDoc types for IDE support
|
|
404
|
+
- **Pre-commit hooks** - Automatic linting before commits
|
|
405
|
+
|
|
406
|
+
## Project Structure
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
zooy/
|
|
410
|
+
├── src/
|
|
411
|
+
│ ├── ui/ # Core UI components
|
|
412
|
+
│ │ ├── evt.js # Event system base class
|
|
413
|
+
│ │ ├── component.js # Component base class
|
|
414
|
+
│ │ ├── panel.js # Content panel (library-agnostic)
|
|
415
|
+
│ │ ├── form.js # Form panel with validation
|
|
416
|
+
│ │ ├── view.js # Panel orchestrator
|
|
417
|
+
│ │ ├── conductor.js # Application controller
|
|
418
|
+
│ │ ├── split.js # Resizable layouts
|
|
419
|
+
│ │ ├── dragger.js # Drag functionality
|
|
420
|
+
│ │ ├── component-library-registry.js # Component library registry
|
|
421
|
+
│ │ ├── handlers/ # Event handler collections
|
|
422
|
+
│ │ ├── mdc/ # Material Design Components
|
|
423
|
+
│ │ │ ├── register.js # MDC registration (lazy-loaded)
|
|
424
|
+
│ │ │ └── tree-utils.js # MDC tree utilities
|
|
425
|
+
│ │ ├── carbon/ # IBM Carbon Design System
|
|
426
|
+
│ │ │ ├── register.js # Carbon registration (lazy-loaded)
|
|
427
|
+
│ │ │ ├── renderers.js # Dynamic component loading
|
|
428
|
+
│ │ │ └── icons-api.js # Programmatic icon API
|
|
429
|
+
│ │ └── zoo/ # Custom Zooy components
|
|
430
|
+
│ ├── dom/ # DOM utilities
|
|
431
|
+
│ ├── events/ # Event types and utilities
|
|
432
|
+
│ ├── uri/ # URI parsing and manipulation
|
|
433
|
+
│ └── user/ # User management
|
|
434
|
+
├── dist/ # Build output (not committed)
|
|
435
|
+
│ ├── zooy.es.js # ES module entry point
|
|
436
|
+
│ ├── zooy.cjs.js # CommonJS entry point
|
|
437
|
+
│ └── chunks/ # Code-split chunks
|
|
438
|
+
│ ├── main-[hash].js # Main framework bundle (~101KB, 27KB gzipped)
|
|
439
|
+
│ ├── register-[hash].js # MDC registration chunk (~463KB, 62KB gzipped)
|
|
440
|
+
│ └── register-[hash].js # Carbon registration chunk (~34KB, 7KB gzipped)
|
|
441
|
+
├── docs/ # Documentation
|
|
442
|
+
│ ├── architecture/ # Architecture docs
|
|
443
|
+
│ ├── migration/ # Migration guides
|
|
444
|
+
│ └── guides/ # Usage guides
|
|
445
|
+
├── vite.config.js # Build configuration
|
|
446
|
+
├── eslint.config.js # ESLint configuration
|
|
447
|
+
└── package.json # Project dependencies
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
## Contributing
|
|
451
|
+
|
|
452
|
+
### Code Style
|
|
453
|
+
- Use single quotes for strings
|
|
454
|
+
- 2-space indentation
|
|
455
|
+
- Semicolons required
|
|
456
|
+
- Strict equality (===) required
|
|
457
|
+
- JSDoc for all public APIs
|
|
458
|
+
|
|
459
|
+
### Workflow
|
|
460
|
+
1. Make changes
|
|
461
|
+
2. Run `npm run lint:fix` to auto-fix issues
|
|
462
|
+
3. Commit (pre-commit hook runs linting automatically)
|
|
463
|
+
4. Submit pull request
|
|
464
|
+
|
|
465
|
+
## Contributors
|
|
466
|
+
- Jan Badenhorst
|
|
467
|
+
- Andries Niemandt
|
|
468
|
+
|
|
469
|
+
## License
|
|
470
|
+
|
|
471
|
+
[License information to be added]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M20 24L10 16 20 8z"}}],name:"caret--left",size:16},e={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M12 8L22 16 12 24z"}}],name:"caret--right",size:16};exports._16=t;exports._16$1=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M14 21.414L9 16.413 10.413 15 14 18.586 21.585 11 23 12.415 14 21.414z"}},{elem:"path",attrs:{d:"M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm0,26A12,12,0,1,1,28,16,12,12,0,0,1,16,28Z"}}],name:"checkmark--outline",size:16},e={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z"}}],name:"incomplete",size:16},l={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M7.7 4.7a14.7 14.7 0 00-3 3.1L6.3 9A13.26 13.26 0 018.9 6.3zM4.6 12.3l-1.9-.6A12.51 12.51 0 002 16H4A11.48 11.48 0 014.6 12.3zM2.7 20.4a14.4 14.4 0 002 3.9l1.6-1.2a12.89 12.89 0 01-1.7-3.3zM7.8 27.3a14.4 14.4 0 003.9 2l.6-1.9A12.89 12.89 0 019 25.7zM11.7 2.7l.6 1.9A11.48 11.48 0 0116 4V2A12.51 12.51 0 0011.7 2.7zM24.2 27.3a15.18 15.18 0 003.1-3.1L25.7 23A11.53 11.53 0 0123 25.7zM27.4 19.7l1.9.6A15.47 15.47 0 0030 16H28A11.48 11.48 0 0127.4 19.7zM29.2 11.6a14.4 14.4 0 00-2-3.9L25.6 8.9a12.89 12.89 0 011.7 3.3zM24.1 4.6a14.4 14.4 0 00-3.9-2l-.6 1.9a12.89 12.89 0 013.3 1.7zM20.3 29.3l-.6-1.9A11.48 11.48 0 0116 28v2A21.42 21.42 0 0020.3 29.3z"}}],name:"circle-dash",size:16};exports._16=e;exports._16$1=l;exports._16$2=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t={elem:"svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",fill:"currentColor",width:16,height:16},content:[{elem:"path",attrs:{d:"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z"}},{elem:"path",attrs:{d:"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z","data-icon-path":"inner-path",opacity:"0"}}],name:"warning--filled",size:16};exports._16=t;
|