@newlogic-digital/ui 3.3.0 → 3.5.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/README.md +10 -14
- package/package.json +23 -23
- package/src/data/main.json +2 -8
- package/src/emails/{templates/Content.twig → templates.test/Content.latte} +10 -2
- package/src/emails/{templates/Header.twig → templates.test/Header.latte} +1 -1
- package/src/emails/{templates/Layout.twig → templates.test/Layout.latte} +2 -2
- package/src/icons.svg +34 -28
- package/src/scripts/Components/CookieConsent.js +22 -28
- package/src/scripts/Layout/Header.js +25 -11
- package/src/scripts/Layout/Main.js +25 -55
- package/src/scripts/Libraries/+.js +4 -5
- package/src/scripts/Libraries/Dialog.js +37 -72
- package/src/scripts/Libraries/Drawer.js +22 -21
- package/src/scripts/Libraries/Form.js +8 -13
- package/src/scripts/Libraries/Naja.js +33 -0
- package/src/scripts/Libraries/ReCaptcha.js +14 -4
- package/src/scripts/Libraries/Ripple.js +6 -22
- package/src/scripts/Libraries/Script.js +1 -2
- package/src/scripts/Libraries/Slider.js +160 -0
- package/src/scripts/Libraries/Stimulus.js +0 -1
- package/src/scripts/Libraries/Swup.js +54 -38
- package/src/scripts/Libraries/Tippy.js +17 -20
- package/src/scripts/Ui/+.js +3 -3
- package/src/scripts/Ui/Check.js +8 -0
- package/src/scripts/Ui/Control.js +186 -0
- package/src/scripts/Ui/ControlSelect.js +24 -0
- package/src/scripts/Ui/Text.js +8 -10
- package/src/scripts/Utils/Functions/+.js +3 -3
- package/src/scripts/Utils/Functions/importScript.js +1 -1
- package/src/scripts/Utils/Functions/importStyle.js +1 -1
- package/src/scripts/Utils/Functions/inputStep.js +9 -0
- package/src/scripts/Utils/Functions/inputValidity.js +57 -0
- package/src/scripts/Utils/Functions/loadStimulus.js +12 -9
- package/src/scripts/Utils/Functions/replaceScript.js +4 -0
- package/src/scripts/Utils/Functions/replaceTag.js +1 -5
- package/src/scripts/Utils/cdn.js +2 -3
- package/src/scripts/Utils/global.js +1 -1
- package/src/styles/Components/+.css +1 -1
- package/src/styles/Components/CookieConsent.css +22 -25
- package/src/styles/Components/Dialog/Default.css +10 -62
- package/src/styles/Components/Dropdown/Default.css +6 -3
- package/src/styles/Components/Field.css +1 -0
- package/src/styles/Layout/Header.css +13 -17
- package/src/styles/Layout/Main.css +8 -91
- package/src/styles/Layout/Nav.css +31 -27
- package/src/styles/Libraries/+.css +1 -2
- package/src/styles/Libraries/Datepicker.css +38 -229
- package/src/styles/Libraries/Dialog.css +1 -19
- package/src/styles/Libraries/Drawer.css +17 -29
- package/src/styles/Libraries/Hint.css +86 -101
- package/src/styles/Libraries/Pickr.css +13 -0
- package/src/styles/Libraries/Ripple.css +1 -29
- package/src/styles/Libraries/Tippy.css +25 -39
- package/src/styles/Ui/+.css +6 -5
- package/src/styles/Ui/Badge.css +7 -82
- package/src/styles/Ui/Btn.css +13 -226
- package/src/styles/Ui/Check.css +1 -0
- package/src/styles/Ui/Control.css +47 -0
- package/src/styles/Ui/ControlSelect.css +66 -0
- package/src/styles/Ui/Dot.css +22 -0
- package/src/styles/Ui/Group.css +1 -0
- package/src/styles/Ui/Heading.css +3 -22
- package/src/styles/Ui/Image.css +1 -17
- package/src/styles/Ui/Info.css +1 -0
- package/src/styles/Ui/Label.css +1 -14
- package/src/styles/Ui/Link.css +2 -41
- package/src/styles/Ui/Notice.css +1 -47
- package/src/styles/Ui/Progress.css +1 -56
- package/src/styles/Ui/Switch.css +1 -70
- package/src/styles/Ui/Text.css +4 -245
- package/src/styles/Ui/Title.css +5 -13
- package/src/styles/Utils/+.css +3 -4
- package/src/styles/Utils/breakpoints.css +1 -0
- package/src/styles/Utils/config.css +5 -0
- package/src/styles/Utils/default.css +8 -122
- package/src/styles/Utils/icons.css +3 -7
- package/src/styles/Utils/keyframes.css +1 -182
- package/src/styles/Utils/{tailwind/base.css → tailwind.css} +31 -21
- package/src/styles/Utils/theme/+.css +1 -1
- package/src/styles/Utils/theme/main.css +14 -23
- package/src/styles/main.css +19 -15
- package/src/styles/tinymce.css +34 -0
- package/src/templates/Components/CookieConsent.latte +28 -0
- package/src/templates/Components/Dialogs/Basic.latte +22 -0
- package/src/templates/Layout/{Header.twig → Header.latte} +15 -17
- package/src/templates/Layout/Main.latte +62 -0
- package/src/templates/Sections/Gdpr.latte +127 -0
- package/src/templates/Sections/Site.latte +141 -0
- package/src/templates/Sections/Ui/Docs/@intro.html +13 -62
- package/src/templates/Sections/Ui/Docs/@nav.html +41 -92
- package/src/templates/Sections/Ui/Docs/@styles.html +2 -6
- package/src/templates/Sections/Ui/Docs/Default.latte +1059 -0
- package/src/templates/Sections/Ui/Icons.html +11 -9
- package/src/templates/Sections/Ui/Intro.html +66 -37
- package/src/templates/Sections/Ui.latte +8 -0
- package/src/templates/Ui/+.latte +5 -0
- package/src/templates/Ui/Check.latte +7 -0
- package/src/templates/Ui/Control.latte +9 -0
- package/src/templates/Ui/ControlDate.latte +14 -0
- package/src/templates/Ui/ControlSelect.latte +9 -0
- package/src/templates/Ui/ControlTime.latte +14 -0
- package/src/templates/Utils/sections.latte +3 -0
- package/src/views/dialog/basic.json.latte +5 -0
- package/src/views/dropdown/{tippy.json.twig → tippy.json.latte} +7 -4
- package/src/views/email/email.latte +6 -0
- package/src/views/email/email.test.latte +6 -0
- package/src/views/gdpr.json +1 -1
- package/src/views/index.json +1 -1
- package/src/views/site.json +11 -0
- package/src/views/ui-icons.json +1 -1
- package/src/views/ui.json +1 -1
- package/vite.config.js +16 -6
- package/.eslintrc +0 -13
- package/.stylelintrc +0 -18
- package/public/sw.js +0 -30
- package/src/emails/email.prod.html +0 -6
- package/src/emails/email.twig.html +0 -6
- package/src/scripts/Libraries/Anchor.js +0 -35
- package/src/scripts/Libraries/NativeSlider.js +0 -138
- package/src/scripts/Libraries/Tabs.js +0 -16
- package/src/scripts/Ui/Checkbox.js +0 -10
- package/src/scripts/Ui/Input.js +0 -259
- package/src/scripts/Ui/Select.js +0 -53
- package/src/scripts/Utils/Functions/checkValidity.js +0 -44
- package/src/scripts/Utils/Functions/dataValue.js +0 -52
- package/src/scripts/Utils/Functions/inView.js +0 -24
- package/src/styles/Components/Form/+.css +0 -1
- package/src/styles/Components/Form/CookieConsent.css +0 -31
- package/src/styles/Libraries/NativeSlider.css +0 -60
- package/src/styles/Libraries/Tabs.css +0 -19
- package/src/styles/Ui/Checkbox.css +0 -151
- package/src/styles/Ui/Icon.css +0 -33
- package/src/styles/Ui/Input.css +0 -467
- package/src/styles/Ui/Radio.css +0 -4
- package/src/styles/Ui/Select.css +0 -137
- package/src/styles/Utils/normalize.css +0 -223
- package/src/styles/Utils/tailwind/+.css +0 -2
- package/src/styles/Utils/tailwind/gutters.css +0 -346
- package/src/styles/Utils/vars.css +0 -126
- package/src/styles/Utils/vendor.css +0 -1
- package/src/templates/Components/CookieConsent.twig +0 -30
- package/src/templates/Components/Dialogs/Basic.twig +0 -24
- package/src/templates/Layout/Main.twig +0 -49
- package/src/templates/Sections/Gdpr.twig +0 -64
- package/src/templates/Sections/Ui/Docs/Default.twig +0 -1600
- package/src/templates/Sections/Ui.twig +0 -8
- package/src/templates/Utils/sections.twig +0 -3
- package/src/views/dialog/basic.json.twig +0 -3
- package/tailwind.config.cjs +0 -69
- /package/src/emails/{templates.prod → templates}/.gitkeep +0 -0
- /package/src/templates/Layout/{Footer.twig → Footer.latte} +0 -0
|
@@ -0,0 +1,1059 @@
|
|
|
1
|
+
<section class="s-ui" data-controller="s-ui">
|
|
2
|
+
<div class="wrp_s_body row">
|
|
3
|
+
{include '@nav.html'}
|
|
4
|
+
<div class="col col-right t:col-9 m:col-12 py-12">
|
|
5
|
+
<div class="container max-4xl:!max-w-full">
|
|
6
|
+
{include '@intro.html'}
|
|
7
|
+
<div class="row gap-8 flex-wrap" style="padding-top: 4rem">
|
|
8
|
+
<div class="col-12">
|
|
9
|
+
<h1 class="ui-title lg uppercase text-primary mb-4">Components</h1>
|
|
10
|
+
<div class="ui-text">
|
|
11
|
+
<p>Examples of basic components that can be used in Newlogic UI, see <a href="https://winduum.dev" target="_blank">winduum.dev</a> for complete docs.</p>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="col-12" id="heading">
|
|
15
|
+
<h1 class="ui-heading mb-4">Heading</h1>
|
|
16
|
+
<div class="ui-text mb-6">
|
|
17
|
+
<p>See <a href="https://winduum.dev/docs/ui/heading.html" target="_blank">ui/heading</a> for more info.</p>
|
|
18
|
+
</div>
|
|
19
|
+
{capture $code}
|
|
20
|
+
<h2 class="ui-heading lg">Big heading</h2>
|
|
21
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
22
|
+
|
|
23
|
+
{capture $code}
|
|
24
|
+
<h2 class="ui-heading">Normal heading</h2>
|
|
25
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
26
|
+
|
|
27
|
+
{capture $code}
|
|
28
|
+
<h2 class="ui-heading sm">Small heading</h2>
|
|
29
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
30
|
+
<hr/>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="col-12" id="title">
|
|
33
|
+
<h1 class="ui-heading mb-4">Title</h1>
|
|
34
|
+
<div class="ui-text mb-6">
|
|
35
|
+
<p>See <a href="https://winduum.dev/docs/ui/title.html" target="_blank">ui/title</a> for more info.</p>
|
|
36
|
+
</div>
|
|
37
|
+
{capture $code}
|
|
38
|
+
<strong class="ui-title sm">Title</strong>
|
|
39
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
40
|
+
|
|
41
|
+
{capture $code}
|
|
42
|
+
<strong class="ui-title lg">Title</strong>
|
|
43
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
44
|
+
|
|
45
|
+
{capture $code}
|
|
46
|
+
<strong class="ui-title uppercase text-primary">Title</strong>
|
|
47
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
48
|
+
<hr/>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="col-12 items-start" id="button">
|
|
51
|
+
<h1 class="ui-heading mb-4">Button</h1>
|
|
52
|
+
<div class="ui-text mb-4">
|
|
53
|
+
<p>See <a href="https://winduum.dev/docs/ui/button.html" target="_blank">ui/button</a> for more info.</p>
|
|
54
|
+
</div>
|
|
55
|
+
{capture $code}
|
|
56
|
+
<button class="ui-btn">
|
|
57
|
+
Flat button
|
|
58
|
+
</button>
|
|
59
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
60
|
+
{capture $code}
|
|
61
|
+
<button class="ui-btn bordered">
|
|
62
|
+
Outline button
|
|
63
|
+
</button>
|
|
64
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
65
|
+
{capture $code}
|
|
66
|
+
<button class="ui-btn bordered accent-main">
|
|
67
|
+
Outline button - base color
|
|
68
|
+
</button>
|
|
69
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
70
|
+
{capture $code}
|
|
71
|
+
<button class="ui-btn max-md:square">
|
|
72
|
+
<svg>
|
|
73
|
+
<use href="#icon-at-symbol"></use>
|
|
74
|
+
</svg>
|
|
75
|
+
<span class="max-md:hidden">Button with icon</span>
|
|
76
|
+
</button>
|
|
77
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
78
|
+
{capture $code}
|
|
79
|
+
<button class="ui-btn accent-main">
|
|
80
|
+
Next
|
|
81
|
+
<svg>
|
|
82
|
+
<use href="#icon-chevron-right"></use>
|
|
83
|
+
</svg>
|
|
84
|
+
</button>
|
|
85
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
86
|
+
{capture $code}
|
|
87
|
+
<button class="ui-btn accent-main">
|
|
88
|
+
<svg>
|
|
89
|
+
<use href="#icon-chevron-left"></use>
|
|
90
|
+
</svg>
|
|
91
|
+
Previous
|
|
92
|
+
</button>
|
|
93
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
94
|
+
{capture $code}
|
|
95
|
+
<button class="ui-btn accent-main">
|
|
96
|
+
Continue
|
|
97
|
+
<svg>
|
|
98
|
+
<use href="#icon-angle-down"></use>
|
|
99
|
+
</svg>
|
|
100
|
+
</button>
|
|
101
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
102
|
+
{capture $code}
|
|
103
|
+
<button class="ui-btn square accent-main">
|
|
104
|
+
<svg class="icon">
|
|
105
|
+
<use href="#icon-at-symbol"></use>
|
|
106
|
+
</svg>
|
|
107
|
+
</button>
|
|
108
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
109
|
+
{capture $code}
|
|
110
|
+
<button class="ui-btn circle accent-main">
|
|
111
|
+
<svg class="icon">
|
|
112
|
+
<use href="#icon-at-symbol"></use>
|
|
113
|
+
</svg>
|
|
114
|
+
</button>
|
|
115
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
116
|
+
{capture $code}
|
|
117
|
+
<button class="ui-btn lg circle accent-main">
|
|
118
|
+
<svg class="icon">
|
|
119
|
+
<use href="#icon-at-symbol"></use>
|
|
120
|
+
</svg>
|
|
121
|
+
</button>
|
|
122
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
123
|
+
{capture $code}
|
|
124
|
+
<button class="ui-btn lg">
|
|
125
|
+
Large flat button
|
|
126
|
+
</button>
|
|
127
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
128
|
+
{capture $code}
|
|
129
|
+
<button class="ui-btn loading">
|
|
130
|
+
Loading state
|
|
131
|
+
</button>
|
|
132
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
133
|
+
{capture $code}
|
|
134
|
+
<div class="ui-group">
|
|
135
|
+
<button class="ui-btn">
|
|
136
|
+
Flat button
|
|
137
|
+
</button>
|
|
138
|
+
<button class="ui-btn active">
|
|
139
|
+
Flat button
|
|
140
|
+
</button>
|
|
141
|
+
<button class="ui-btn">
|
|
142
|
+
Flat button
|
|
143
|
+
</button>
|
|
144
|
+
<button class="ui-btn">
|
|
145
|
+
Flat button
|
|
146
|
+
</button>
|
|
147
|
+
</div>
|
|
148
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
149
|
+
{capture $code}
|
|
150
|
+
<div class="ui-group">
|
|
151
|
+
<button class="ui-btn">
|
|
152
|
+
Flat button
|
|
153
|
+
</button>
|
|
154
|
+
<button class="ui-btn square bg-opacity-80">
|
|
155
|
+
<svg class="icon">
|
|
156
|
+
<use href="#icon-angle-down"></use>
|
|
157
|
+
</svg>
|
|
158
|
+
</button>
|
|
159
|
+
</div>
|
|
160
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
161
|
+
<hr/>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="col-12 items-start" id="link">
|
|
164
|
+
<h1 class="ui-heading mb-4">Link</h1>
|
|
165
|
+
<div class="ui-text mb-6">
|
|
166
|
+
<p>See <a href="https://winduum.dev/docs/ui/link.html" target="_blank">ui/link</a> for more info.</p>
|
|
167
|
+
</div>
|
|
168
|
+
{capture $code}
|
|
169
|
+
<a href="#" class="ui-link accent-primary" title="">
|
|
170
|
+
Show more
|
|
171
|
+
</a>
|
|
172
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
173
|
+
{capture $code}
|
|
174
|
+
<a href="#" class="ui-link underlined text-primary" title="">
|
|
175
|
+
With underline
|
|
176
|
+
</a>
|
|
177
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
178
|
+
{capture $code}
|
|
179
|
+
<a href="#" class="ui-link underlined-visible text-primary" title="">
|
|
180
|
+
With underline
|
|
181
|
+
</a>
|
|
182
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
183
|
+
<hr/>
|
|
184
|
+
</div>
|
|
185
|
+
<div class="col-12" id="control">
|
|
186
|
+
<h1 class="ui-heading mb-4">Control</h1>
|
|
187
|
+
<div class="ui-text mb-6">
|
|
188
|
+
<p>See <a href="https://winduum.dev/docs/ui/control.html" target="_blank">ui/control</a> for more info.</p>
|
|
189
|
+
</div>
|
|
190
|
+
{capture $code}
|
|
191
|
+
<div class="ui-control">
|
|
192
|
+
<select>
|
|
193
|
+
<option selected value="">- select option -</option>
|
|
194
|
+
<option value="1">Option 1</option>
|
|
195
|
+
<option value="2">Option 2</option>
|
|
196
|
+
<option value="3">Option 3</option>
|
|
197
|
+
</select>
|
|
198
|
+
<label>How are you?</label>
|
|
199
|
+
</div>
|
|
200
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
201
|
+
{capture $code}
|
|
202
|
+
<div class="ui-control">
|
|
203
|
+
<select>
|
|
204
|
+
<option selected value="">- select option -</option>
|
|
205
|
+
<option value="1">Option 1</option>
|
|
206
|
+
<option value="2">Option 2</option>
|
|
207
|
+
<option value="3">Option 3</option>
|
|
208
|
+
</select>
|
|
209
|
+
<label>With icon</label>
|
|
210
|
+
<svg class="icon-l">
|
|
211
|
+
<use href="#icon-at-symbol"></use>
|
|
212
|
+
</svg>
|
|
213
|
+
</div>
|
|
214
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
215
|
+
{capture $code}
|
|
216
|
+
<div class="ui-control">
|
|
217
|
+
<select data-placeholder>
|
|
218
|
+
<option selected value="">- select option -</option>
|
|
219
|
+
<option value="1">Option 1</option>
|
|
220
|
+
<option value="2">Option 2</option>
|
|
221
|
+
<option value="3">Option 3</option>
|
|
222
|
+
</select>
|
|
223
|
+
</div>
|
|
224
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
225
|
+
{capture $code}
|
|
226
|
+
<div class="ui-control" tabindex="-1" data-controller="ui-control-select">
|
|
227
|
+
<select>
|
|
228
|
+
<option selected="" value="">- select an option -</option>
|
|
229
|
+
<option value="1">Option 1</option>
|
|
230
|
+
<option value="2" disabled>Option 2</option>
|
|
231
|
+
<option value="3">Option 3</option>
|
|
232
|
+
</select>
|
|
233
|
+
<label>Javascript select</label>
|
|
234
|
+
<div aria-hidden="true">
|
|
235
|
+
<div data-option="" tabindex="0">- select option -</div>
|
|
236
|
+
<div data-option="1" tabindex="0">Option 1</div>
|
|
237
|
+
<div data-option="2" data-disabled>Option 2</div>
|
|
238
|
+
<div data-option="3" tabindex="0">Option 3</div>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
242
|
+
{capture $code}
|
|
243
|
+
<div class="ui-control">
|
|
244
|
+
<select data-placeholder disabled>
|
|
245
|
+
<option selected value="">Disabled state</option>
|
|
246
|
+
<option value="1">Option 1</option>
|
|
247
|
+
<option value="2">Option 2</option>
|
|
248
|
+
<option value="3">Option 3</option>
|
|
249
|
+
</select>
|
|
250
|
+
</div>
|
|
251
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
252
|
+
{capture $code}
|
|
253
|
+
<div class="ui-control">
|
|
254
|
+
<input type="email" required placeholder="Please fill..">
|
|
255
|
+
<label>E-mail</label>
|
|
256
|
+
</div>
|
|
257
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
258
|
+
{capture $code}
|
|
259
|
+
<div class="ui-control">
|
|
260
|
+
<input type="tel" placeholder="Tel" />
|
|
261
|
+
</div>
|
|
262
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
263
|
+
{capture $code}
|
|
264
|
+
<div class="ui-control">
|
|
265
|
+
<input type="text" required placeholder="Please fill">
|
|
266
|
+
<label>Amount</label>
|
|
267
|
+
<span class="icon-r" aria-label="Kč"></span>
|
|
268
|
+
</div>
|
|
269
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
270
|
+
{capture $code}
|
|
271
|
+
<div class="ui-control">
|
|
272
|
+
<input type="tel" disabled>
|
|
273
|
+
<label>Disabled state</label>
|
|
274
|
+
</div>
|
|
275
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
276
|
+
{capture $code}
|
|
277
|
+
<div class="ui-control">
|
|
278
|
+
<textarea></textarea>
|
|
279
|
+
<label>Message</label>
|
|
280
|
+
</div>
|
|
281
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
282
|
+
{capture $code}
|
|
283
|
+
<div class="ui-control">
|
|
284
|
+
<input type="color" placeholder="Select color">
|
|
285
|
+
</div>
|
|
286
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
287
|
+
{capture $code}
|
|
288
|
+
<div class="ui-control">
|
|
289
|
+
<input type="file" multiple="multiple" title="Upload files" placeholder="Select or drag file(s)">
|
|
290
|
+
</div>
|
|
291
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
292
|
+
{capture $code}
|
|
293
|
+
<div class="ui-control">
|
|
294
|
+
<input type="number" min="1" max="99" step="1">
|
|
295
|
+
<label>Select number</label>
|
|
296
|
+
</div>
|
|
297
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
298
|
+
{capture $code}
|
|
299
|
+
<div class="ui-control">
|
|
300
|
+
<input type="datetime-local">
|
|
301
|
+
<label>Select date and time</label>
|
|
302
|
+
<div class="icon-r">
|
|
303
|
+
<svg data-action="click->ui-control#showDatepicker">
|
|
304
|
+
<use href="#icon-calendar"></use>
|
|
305
|
+
</svg>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
309
|
+
{capture $code}
|
|
310
|
+
<div class="ui-control">
|
|
311
|
+
<input type="date">
|
|
312
|
+
<label>Select date</label>
|
|
313
|
+
</div>
|
|
314
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
315
|
+
{capture $code}
|
|
316
|
+
<div class="ui-control w-28">
|
|
317
|
+
<input type="number" placeholder="" value="1" min="1" max="99" step="1">
|
|
318
|
+
<div class="icon-r">
|
|
319
|
+
<div aria-label="Kč"></div>
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
323
|
+
{capture $code}
|
|
324
|
+
<div class="ui-control">
|
|
325
|
+
<input type="time" placeholder="Select time">
|
|
326
|
+
<div class="icon-r">
|
|
327
|
+
<svg data-action="click->ui-control#showPicker">
|
|
328
|
+
<use href="#icon-clock"></use>
|
|
329
|
+
</svg>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
333
|
+
</div>
|
|
334
|
+
<div class="col-12 items-start" id="check">
|
|
335
|
+
<h1 class="ui-heading mb-4">Check</h1>
|
|
336
|
+
<div class="ui-text mb-6">
|
|
337
|
+
<p>See <a href="https://winduum.dev/docs/ui/check.html" target="_blank">ui/check</a> for more info.</p>
|
|
338
|
+
</div>
|
|
339
|
+
{capture $code}
|
|
340
|
+
<div class="p-5 bg-gray-200 dark:bg-dark rounded-lg">
|
|
341
|
+
<label class="ui-check">
|
|
342
|
+
<input type="checkbox">
|
|
343
|
+
<span>I agree to the <a href="#">processing of personal data</a></span>
|
|
344
|
+
</label>
|
|
345
|
+
</div>
|
|
346
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
347
|
+
{capture $code}
|
|
348
|
+
<div class="p-5 text-light bg-dark rounded-lg">
|
|
349
|
+
<label class="ui-check accent-light" data-theme="dark">
|
|
350
|
+
<input type="checkbox">
|
|
351
|
+
<span>I agree to the <a href="#">processing of personal data</a></span>
|
|
352
|
+
</label>
|
|
353
|
+
</div>
|
|
354
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
355
|
+
{capture $code}
|
|
356
|
+
<div class="p-5 text-light bg-dark rounded-lg">
|
|
357
|
+
<label class="ui-check accent-info">
|
|
358
|
+
<input type="checkbox">
|
|
359
|
+
<span>I agree to the <a href="#">processing of personal data</a></span>
|
|
360
|
+
</label>
|
|
361
|
+
</div>
|
|
362
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
363
|
+
{capture $code}
|
|
364
|
+
<label class="ui-check flex-row-reverse">
|
|
365
|
+
<input type="checkbox" class="checked:border-primary" style="--ui-checkbox-checked-bg: transparent; --ui-checkbox-checked-fg: var(--color-primary);" />
|
|
366
|
+
<span>I agree to the <a href="#">processing of personal data</a></span>
|
|
367
|
+
</label>
|
|
368
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
369
|
+
{capture $code}
|
|
370
|
+
<label class="ui-check">
|
|
371
|
+
<input type="radio" name="radio">
|
|
372
|
+
<span>Click on this radio button</span>
|
|
373
|
+
</label>
|
|
374
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
375
|
+
{capture $code}
|
|
376
|
+
<label class="ui-check">
|
|
377
|
+
<input type="checkbox" class="mr-3" />
|
|
378
|
+
Without inner span
|
|
379
|
+
</label>
|
|
380
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
381
|
+
{capture $code}
|
|
382
|
+
<label class="ui-check">
|
|
383
|
+
<input type="checkbox">
|
|
384
|
+
</label>
|
|
385
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
386
|
+
{capture $code}
|
|
387
|
+
<label class="ui-check">
|
|
388
|
+
<input type="radio" name="radio">
|
|
389
|
+
</label>
|
|
390
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
391
|
+
</div>
|
|
392
|
+
<div class="col col-12" id="notice">
|
|
393
|
+
<h1 class="ui-heading mb-4">Notice</h1>
|
|
394
|
+
<div class="ui-text mb-6">
|
|
395
|
+
<p>See <a href="https://winduum.dev/docs/ui/notice.html" target="_blank">ui/notice</a> for more info.</p>
|
|
396
|
+
</div>
|
|
397
|
+
{capture $code}
|
|
398
|
+
<div class="ui-notice accent-warning">
|
|
399
|
+
Warning notice
|
|
400
|
+
</div>
|
|
401
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
402
|
+
{capture $code}
|
|
403
|
+
<div class="ui-notice accent-success">
|
|
404
|
+
Success notice
|
|
405
|
+
</div>
|
|
406
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
407
|
+
{capture $code}
|
|
408
|
+
<div class="ui-notice accent-info">
|
|
409
|
+
Info notice
|
|
410
|
+
</div>
|
|
411
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
412
|
+
{capture $code}
|
|
413
|
+
<div class="ui-notice accent-error">
|
|
414
|
+
Error notice
|
|
415
|
+
</div>
|
|
416
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
417
|
+
{capture $code}
|
|
418
|
+
<div class="ui-notice accent-error">
|
|
419
|
+
Error notice
|
|
420
|
+
<hr/>
|
|
421
|
+
<button class="ui-btn">
|
|
422
|
+
<span>Button</span>
|
|
423
|
+
</button>
|
|
424
|
+
</div>
|
|
425
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
426
|
+
{capture $code}
|
|
427
|
+
<div class="ui-notice accent-success">
|
|
428
|
+
<div class="ui-text">
|
|
429
|
+
<h4>Nicely done!</h4>
|
|
430
|
+
<p>Lorem ipsum dolor sit amet, <a href="#">consectetur adipiscing elit</a>. Nullam in elit iaculis, tristique nisi ut, mollis tellus. Nunc venenatis elit vel placerat commodo. Vestibulum odio neque, hendrerit nec venenatis at, tincidunt ut magna. Etiam hendrerit ultrices pharetra.</p>
|
|
431
|
+
</div>
|
|
432
|
+
<hr/>
|
|
433
|
+
<button class="ui-btn">
|
|
434
|
+
<span>Button</span>
|
|
435
|
+
</button>
|
|
436
|
+
</div>
|
|
437
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
438
|
+
{capture $code}
|
|
439
|
+
<div class="ui-notice accent-info">
|
|
440
|
+
Info notice
|
|
441
|
+
<hr/>
|
|
442
|
+
<button class="ui-btn">
|
|
443
|
+
<span>Button</span>
|
|
444
|
+
</button>
|
|
445
|
+
</div>
|
|
446
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
447
|
+
{capture $code}
|
|
448
|
+
<div class="ui-notice accent-warning">
|
|
449
|
+
Warning notice
|
|
450
|
+
<hr/>
|
|
451
|
+
<button class="ui-btn">
|
|
452
|
+
<span>Button</span>
|
|
453
|
+
</button>
|
|
454
|
+
</div>
|
|
455
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
456
|
+
{capture $code}
|
|
457
|
+
<div class="ui-notice bg-error accent-light">
|
|
458
|
+
<div class="ui-text">
|
|
459
|
+
<h4>Badly done!</h4>
|
|
460
|
+
<p>Lorem ipsum dolor sit amet, <a href="#">consectetur adipiscing elit</a>. Nullam in elit iaculis, tristique nisi ut, mollis tellus. Nunc venenatis elit vel placerat commodo. Vestibulum odio neque, hendrerit nec venenatis at, tincidunt ut magna. Etiam hendrerit ultrices pharetra.</p>
|
|
461
|
+
</div>
|
|
462
|
+
<hr/>
|
|
463
|
+
<button class="ui-btn accent-light muted">
|
|
464
|
+
<span>Button</span>
|
|
465
|
+
</button>
|
|
466
|
+
</div>
|
|
467
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
468
|
+
</div>
|
|
469
|
+
<div class="col-12" id="badge">
|
|
470
|
+
<h1 class="ui-heading mb-4">Badge</h1>
|
|
471
|
+
<div class="ui-text mb-6">
|
|
472
|
+
<p>See <a href="https://winduum.dev/docs/ui/badge.html" target="_blank">ui/badge</a> for more info.</p>
|
|
473
|
+
</div>
|
|
474
|
+
{capture $code}
|
|
475
|
+
<div class="ui-badge sm">
|
|
476
|
+
Default
|
|
477
|
+
</div>
|
|
478
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
479
|
+
{capture $code}
|
|
480
|
+
<div class="ui-badge accent-dark">
|
|
481
|
+
Dark
|
|
482
|
+
</div>
|
|
483
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
484
|
+
{capture $code}
|
|
485
|
+
<div class="ui-badge accent-light">
|
|
486
|
+
Light
|
|
487
|
+
</div>
|
|
488
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
489
|
+
{capture $code}
|
|
490
|
+
<div class="ui-badge accent-primary rounded-full">
|
|
491
|
+
<span>Primary</span>
|
|
492
|
+
</div>
|
|
493
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
494
|
+
{capture $code}
|
|
495
|
+
<a href="#" class="ui-badge accent-main">
|
|
496
|
+
Secondary
|
|
497
|
+
</a>
|
|
498
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
499
|
+
{capture $code}
|
|
500
|
+
<button class="ui-badge circle accent-main">
|
|
501
|
+
9
|
|
502
|
+
</button>
|
|
503
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
504
|
+
{capture $code}
|
|
505
|
+
<button class="ui-badge md square accent-main">
|
|
506
|
+
99
|
|
507
|
+
</button>
|
|
508
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
509
|
+
{capture $code}
|
|
510
|
+
<button class="ui-badge circle accent-main">
|
|
511
|
+
<svg>
|
|
512
|
+
<use href="#icon-x"></use>
|
|
513
|
+
</svg>
|
|
514
|
+
</button>
|
|
515
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
516
|
+
{capture $code}
|
|
517
|
+
<div class="ui-group">
|
|
518
|
+
<div class="ui-badge accent-dark">
|
|
519
|
+
<span>npm</span>
|
|
520
|
+
</div>
|
|
521
|
+
<div class="ui-badge accent-info">
|
|
522
|
+
<span>7.1.2</span>
|
|
523
|
+
</div>
|
|
524
|
+
</div>
|
|
525
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
526
|
+
<hr/>
|
|
527
|
+
</div>
|
|
528
|
+
<div class="col-12" id="progress">
|
|
529
|
+
<h1 class="ui-heading mb-4">Progress</h1>
|
|
530
|
+
<div class="ui-text mb-6">
|
|
531
|
+
<p>See <a href="https://winduum.dev/docs/ui/progress.html" target="_blank">ui/progress</a> for more info.</p>
|
|
532
|
+
</div>
|
|
533
|
+
<div>
|
|
534
|
+
{capture $code}
|
|
535
|
+
<progress class="ui-progress accent-main" value="15" max="100">15%</progress>
|
|
536
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
537
|
+
{capture $code}
|
|
538
|
+
<progress class="ui-progress accent-primary" value="50" max="100">15%</progress>
|
|
539
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
540
|
+
|
|
541
|
+
{capture $code}
|
|
542
|
+
<progress class="ui-progress sm accent-error" value="75" max="100">15%</progress>
|
|
543
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
544
|
+
{capture $code}
|
|
545
|
+
<progress class="ui-progress accent-error" max="100">15%</progress>
|
|
546
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
547
|
+
</div>
|
|
548
|
+
<hr/>
|
|
549
|
+
</div>
|
|
550
|
+
<div class="col col-12" id="text">
|
|
551
|
+
<h1 class="ui-heading mb-4">Text</h1>
|
|
552
|
+
<div class="ui-text mb-6">
|
|
553
|
+
<p>See <a href="https://winduum.dev/docs/ui/text.html" target="_blank">ui/text</a> for more info.</p>
|
|
554
|
+
</div>
|
|
555
|
+
{capture $code}
|
|
556
|
+
<div class="ui-text">
|
|
557
|
+
<h1>h1 heading</h1>
|
|
558
|
+
<h2>h2 heading</h2>
|
|
559
|
+
<h3>h3 heading</h3>
|
|
560
|
+
<h4>h4 heading</h4>
|
|
561
|
+
<h5>h5 heading</h5>
|
|
562
|
+
<h6>h6 heading</h6>
|
|
563
|
+
<p>Lorem ipsum dolor</p>
|
|
564
|
+
<hr>
|
|
565
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget efficitur
|
|
566
|
+
metus. In bibendum nisi et dui <a href="#">sagittis efficitur</a>. Proin porttitor diam at quam
|
|
567
|
+
finibus, quis porttitor turpis ullamcorper. Quisque iaculis imperdiet nunc in
|
|
568
|
+
hendrerit. Nulla facilisi. Sed at sodales ex. Vivamus ornare auctor ligula et
|
|
569
|
+
lobortis. Nunc metus augue, tristique vitae sagittis ac, interdum eu nisl.
|
|
570
|
+
Curabitur aliquet, lectus ut interdum commodo, ipsum elit gravida libero, in
|
|
571
|
+
laoreet lectus nisl a erat. Sed consequat justo pulvinar turpis pharetra mattis.
|
|
572
|
+
Phasellus non pretium libero.</p>
|
|
573
|
+
<p></p>
|
|
574
|
+
<ul style="max-width: 400px">
|
|
575
|
+
<li>Lorem ipsum dolor sit amet, consectetur. Donec eget efficitur metus In
|
|
576
|
+
bibendum nisi et dui
|
|
577
|
+
</li>
|
|
578
|
+
<li>Donec eget efficitur metus</li>
|
|
579
|
+
</ul>
|
|
580
|
+
<p></p>
|
|
581
|
+
<ul style="max-width: 400px; list-style: square">
|
|
582
|
+
<li>Lorem ipsum dolor sit amet, consectetur. Donec eget efficitur metus In
|
|
583
|
+
bibendum nisi et dui
|
|
584
|
+
</li>
|
|
585
|
+
<li>Donec eget efficitur metus</li>
|
|
586
|
+
</ul>
|
|
587
|
+
<p></p>
|
|
588
|
+
<ul style="max-width: 400px; list-style: circle">
|
|
589
|
+
<li>Lorem ipsum dolor sit amet, consectetur. Donec eget efficitur metus In
|
|
590
|
+
bibendum nisi et dui
|
|
591
|
+
</li>
|
|
592
|
+
<li>Donec eget efficitur metus</li>
|
|
593
|
+
</ul>
|
|
594
|
+
<p></p>
|
|
595
|
+
<ol style="max-width: 400px;">
|
|
596
|
+
<li>Lorem ipsum dolor sit amet, consectetur. Donec eget efficitur metus In
|
|
597
|
+
bibendum nisi et dui
|
|
598
|
+
</li>
|
|
599
|
+
<li>Donec eget efficitur metus</li>
|
|
600
|
+
</ol>
|
|
601
|
+
<ol type="1">
|
|
602
|
+
<li>Coffee</li>
|
|
603
|
+
<li>Tea</li>
|
|
604
|
+
<li>Milk</li>
|
|
605
|
+
</ol>
|
|
606
|
+
<ol type="A">
|
|
607
|
+
<li>Coffee</li>
|
|
608
|
+
<li>Tea</li>
|
|
609
|
+
<li>Milk</li>
|
|
610
|
+
</ol>
|
|
611
|
+
<ol type="a">
|
|
612
|
+
<li>Coffee</li>
|
|
613
|
+
<li>Tea</li>
|
|
614
|
+
<li>Milk</li>
|
|
615
|
+
</ol>
|
|
616
|
+
<ol type="I">
|
|
617
|
+
<li>Coffee</li>
|
|
618
|
+
<li>Tea</li>
|
|
619
|
+
<li>Milk</li>
|
|
620
|
+
</ol>
|
|
621
|
+
<ol type="i">
|
|
622
|
+
<li>Coffee</li>
|
|
623
|
+
<li>Tea</li>
|
|
624
|
+
<li>Milk</li>
|
|
625
|
+
</ol>
|
|
626
|
+
<p></p>
|
|
627
|
+
<blockquote>Ut venenatis, nisl scelerisque sollicitudin fermentum, quam libero hendrerit ipsum, ut blandit est tellus sit amet turpis.</blockquote>
|
|
628
|
+
<p></p>
|
|
629
|
+
<figure>
|
|
630
|
+
<img src="https://bulma.io/images/placeholders/256x256.png">
|
|
631
|
+
<figcaption>
|
|
632
|
+
Figure 1: Some beautiful placeholders
|
|
633
|
+
</figcaption>
|
|
634
|
+
</figure>
|
|
635
|
+
<h2>Heading</h2>
|
|
636
|
+
<table>
|
|
637
|
+
<thead>
|
|
638
|
+
<tr>
|
|
639
|
+
<th scope="col">#</th>
|
|
640
|
+
<th scope="col">First</th>
|
|
641
|
+
<th scope="col">Last</th>
|
|
642
|
+
<th scope="col">Handle</th>
|
|
643
|
+
</tr>
|
|
644
|
+
</thead>
|
|
645
|
+
<tbody>
|
|
646
|
+
<tr>
|
|
647
|
+
<th scope="row">1</th>
|
|
648
|
+
<td>Mark</td>
|
|
649
|
+
<td>Otto</td>
|
|
650
|
+
<td>@mdo</td>
|
|
651
|
+
</tr>
|
|
652
|
+
<tr>
|
|
653
|
+
<th scope="row">2</th>
|
|
654
|
+
<td>Jacob</td>
|
|
655
|
+
<td>Thornton</td>
|
|
656
|
+
<td>@fat</td>
|
|
657
|
+
</tr>
|
|
658
|
+
<tr>
|
|
659
|
+
<th scope="row">3</th>
|
|
660
|
+
<td>Larry</td>
|
|
661
|
+
<td>the Bird</td>
|
|
662
|
+
<td>@twitter</td>
|
|
663
|
+
</tr>
|
|
664
|
+
</tbody>
|
|
665
|
+
</table>
|
|
666
|
+
<p></p>
|
|
667
|
+
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
|
668
|
+
</div>
|
|
669
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
670
|
+
</div>
|
|
671
|
+
<div class="col-12 col-images" id="image">
|
|
672
|
+
<h1 class="ui-heading mb-4">Image</h1>
|
|
673
|
+
<div class="ui-text mb-6">
|
|
674
|
+
<p>Images should be wrapped inside <code>.ui-image</code> class and as <code>div</code> or <code>picture</code></p>
|
|
675
|
+
<p>You can add lazyload for the images with <code>loading="lazy"</code> attribute.</p>
|
|
676
|
+
<p>To maintain ratio of the images you have to add ratio class from TailwindCSS, for example <code>aspect-[4/3]</code> or add <code>width</code> and <code>height</code> attributes to image.</p>
|
|
677
|
+
</div>
|
|
678
|
+
<style>
|
|
679
|
+
.col-images .ui-image {
|
|
680
|
+
max-width: 10rem;
|
|
681
|
+
}
|
|
682
|
+
</style>
|
|
683
|
+
<div>
|
|
684
|
+
{capture $code}
|
|
685
|
+
<div class="ui-image aspect-[3/2]">
|
|
686
|
+
<img src="https://via.placeholder.com/300x200" alt="" loading="lazy" />
|
|
687
|
+
</div>
|
|
688
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
689
|
+
</div>
|
|
690
|
+
<div>
|
|
691
|
+
{capture $code}
|
|
692
|
+
<picture class="ui-image aspect-[3/2]">
|
|
693
|
+
<source srcset="https://via.placeholder.com/300x200" />
|
|
694
|
+
<img src="https://via.placeholder.com/300x200" alt="" loading="lazy" />
|
|
695
|
+
</picture>
|
|
696
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
697
|
+
</div>
|
|
698
|
+
<div class="ui-text mb-5">
|
|
699
|
+
<p>Lazyload can be added also on <code>iframe</code></p>
|
|
700
|
+
</div>
|
|
701
|
+
<div>
|
|
702
|
+
{capture $code}
|
|
703
|
+
<div class="ui-image aspect-square">
|
|
704
|
+
<iframe loading="lazy" src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d10243.539317839937!2d14.3677486!3d50.0697185!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x66f5877a189baf0d!2sTvorba+webov%C3%BDch+str%C3%A1nek+-+New+Logic+Studio!5e0!3m2!1sen!2scz!4v1547215701439" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
|
|
705
|
+
</div>
|
|
706
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
707
|
+
</div>
|
|
708
|
+
<hr/>
|
|
709
|
+
</div>
|
|
710
|
+
</div>
|
|
711
|
+
<div class="row gap-8 flex-wrap" style="padding-top: 3rem;">
|
|
712
|
+
<div class="col-12" style="padding-top: 0">
|
|
713
|
+
<h1 class="ui-title lg uppercase text-primary">Libraries</h1>
|
|
714
|
+
</div>
|
|
715
|
+
<div class="col-12" id="form">
|
|
716
|
+
<h1 class="ui-heading mb-4">Form</h1>
|
|
717
|
+
<div class="ui-text mb-6">
|
|
718
|
+
<p>Provides javascript form validation upon send via <code>data-controller="lib-form"</code> attribute.</p>
|
|
719
|
+
</div>
|
|
720
|
+
{capture $code}
|
|
721
|
+
<form class="c-form" data-controller="lib-form">
|
|
722
|
+
<div class="c_form_body grid gap-3">
|
|
723
|
+
<div class="c-field">
|
|
724
|
+
<div class="ui-control">
|
|
725
|
+
<select required>
|
|
726
|
+
<option selected disabled value="">- select option -</option>
|
|
727
|
+
<option>Czechia</option>
|
|
728
|
+
<option>Slovakia</option>
|
|
729
|
+
</select>
|
|
730
|
+
<label>Select country</label>
|
|
731
|
+
</div>
|
|
732
|
+
</div>
|
|
733
|
+
<div class="c-field">
|
|
734
|
+
<div class="ui-control">
|
|
735
|
+
<textarea required></textarea>
|
|
736
|
+
<label>Message</label>
|
|
737
|
+
</div>
|
|
738
|
+
</div>
|
|
739
|
+
</div>
|
|
740
|
+
<div class="c_form_info grid gap-3 py-4">
|
|
741
|
+
<div class="text-sm">Protected with reCAPTCHA <small>(<a href="https://www.google.com/intl/en/policies/privacy/" title="Privacy policy" target="_blank" rel="noopener">Privacy policy</a> - <a href="https://www.google.com/intl/en/policies/terms/" title="Terms of use" target="_blank" rel="noopener">Terms of use</a>)</small></div>
|
|
742
|
+
<div class="c-field">
|
|
743
|
+
<label class="ui-check">
|
|
744
|
+
<input type="checkbox" required>
|
|
745
|
+
<span>I agree with <a href="#">terms of use</a> and <a href="#">privacy policy</a></span>
|
|
746
|
+
</label>
|
|
747
|
+
</div>
|
|
748
|
+
</div>
|
|
749
|
+
<div class="c_form_foot">
|
|
750
|
+
<button class="ui-btn" aria-label="Send">Send</button>
|
|
751
|
+
</div>
|
|
752
|
+
</form>
|
|
753
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
754
|
+
<hr/>
|
|
755
|
+
</div>
|
|
756
|
+
<div class="col-12 items-start" id="dialog">
|
|
757
|
+
<h1 class="ui-heading mb-4">Dialog</h1>
|
|
758
|
+
<div class="ui-text mb-6">
|
|
759
|
+
<h5>Usage on click</h5>
|
|
760
|
+
<p>You can add <code>data-action="click->lib-dialog#show"</code> on any element with attribute <code>data-lib-dialog-url-param</code> which is url to <code>*.json</code> file or url request which contains html. For closing the dialog window, you can add <code>data-action="click->lib-dialog#hide"</code> to any element inside the dialog.</p>
|
|
761
|
+
<h5>Usage on page load</h5>
|
|
762
|
+
<p>To open dialog upon page load, add <code>data-lib-dialog-open-option</code> attribute on <code>data-controller="lib-dialog"</code> (by default located on body), </p>
|
|
763
|
+
<p>Url is passed as <code>data-lib-dialog-url-option</code>, you can also add selector to <code>data-lib-dialog-open-option</code>, HTML content of that selector opens as a dialog.</p>
|
|
764
|
+
<h5>Variants (c-dialog)</h5>
|
|
765
|
+
<ul>
|
|
766
|
+
<li><code>size classes</code> - <code>sm</code>, <code>lg</code></li>
|
|
767
|
+
<li><code>type classes</code> - <code>scrollable</code> - scroll inside dialog</li>
|
|
768
|
+
</ul>
|
|
769
|
+
<h5>Attributes (click->lib-dialog#show)</h5>
|
|
770
|
+
<ul>
|
|
771
|
+
<li><code>data-lib-dialog-url-param</code> - url of <code>*.json</code> file</li>
|
|
772
|
+
<li><code>data-lib-dialog-remove-param</code> - <code>true/false</code> whenever to remove dialog element from dom after closing</li>
|
|
773
|
+
<li><code>data-lib-dialog-append-param</code> - <code>true/false</code> whenever to append new dialog element after the previous dialog, otherwise the previous is replaced</li>
|
|
774
|
+
</ul>
|
|
775
|
+
<p>See <a href="https://winduum.dev/docs/lib/dialog.html">libraries/dialog</a> for more info.</p>
|
|
776
|
+
</div>
|
|
777
|
+
{capture $code}
|
|
778
|
+
<button class="ui-btn" data-action="click->lib-dialog#show" data-lib-dialog-url-param="/dialog/basic.json">
|
|
779
|
+
Open dialog window
|
|
780
|
+
</button>
|
|
781
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
782
|
+
<hr/>
|
|
783
|
+
</div>
|
|
784
|
+
<div class="col-12 items-start" id="ripple">
|
|
785
|
+
<h1 class="ui-heading mb-4">Ripple</h1>
|
|
786
|
+
<div class="ui-text mb-6">
|
|
787
|
+
<p>The ripple effect is automatically applied to buttons and other components</p>
|
|
788
|
+
<p>The effect is possible apply anywhere using the attribute <code>data-action="click->lib#ripple"</code></p>
|
|
789
|
+
<p>Background color can be changed with CSS property <code>--lib-ripple-bg</code></p>
|
|
790
|
+
<h5>Methods</h5>
|
|
791
|
+
<ul>
|
|
792
|
+
<li>initialization to any selector: <code>LibRipple(element)</code></li>
|
|
793
|
+
</ul>
|
|
794
|
+
</div>
|
|
795
|
+
{capture $code}
|
|
796
|
+
<div class="ui-btn" data-action="click->lib-ripple#show">Ripple me</div>
|
|
797
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
798
|
+
<hr/>
|
|
799
|
+
</div>
|
|
800
|
+
<div class="col-12" id="drawer">
|
|
801
|
+
<h1 class="ui-heading mb-4">Drawer</h1>
|
|
802
|
+
<div class="ui-text">
|
|
803
|
+
<h5>Files:</h5>
|
|
804
|
+
<ul class="mt-0">
|
|
805
|
+
<li><code>src/scripts/Libraries/Drawer.js</code></li>
|
|
806
|
+
<li><code>src/styles/Libraries/Drawer.css</code></li>
|
|
807
|
+
</ul>
|
|
808
|
+
</div>
|
|
809
|
+
<hr/>
|
|
810
|
+
</div>
|
|
811
|
+
<div class="col-12" id="datepicker">
|
|
812
|
+
<h1 class="ui-heading mb-4">Datepicker</h1>
|
|
813
|
+
<div class="ui-text">
|
|
814
|
+
<p><a href="https://github.com/t1m0n/air-datepicker" target="_blank">Air Datepicker</a> is used as library in <code>ui-control</code> for <code>type="date"</code> and <code>type="datetime-local"</code>.</p>
|
|
815
|
+
<h5>Files:</h5>
|
|
816
|
+
<ul class="mt-0">
|
|
817
|
+
<li><code>src/styles/Libraries/Datepicker.css</code></li>
|
|
818
|
+
</ul>
|
|
819
|
+
</div>
|
|
820
|
+
<hr/>
|
|
821
|
+
</div>
|
|
822
|
+
<div class="col-12" id="slider">
|
|
823
|
+
<h1 class="ui-heading mb-4">Slider</h1>
|
|
824
|
+
<div class="ui-text mb-6">
|
|
825
|
+
<p>Lightweight scroll based slider, which uses CSS <code>scroll-snap</code></p>
|
|
826
|
+
<h5>Files:</h5>
|
|
827
|
+
<ul class="mt-0">
|
|
828
|
+
<li><code>src/scripts/Libraries/Slider.js</code></li>
|
|
829
|
+
</ul>
|
|
830
|
+
</div>
|
|
831
|
+
<div>
|
|
832
|
+
{capture $code}
|
|
833
|
+
<div data-controller="lib-slider">
|
|
834
|
+
<div class="flex slider gap-3" data-lib-slider-target="slider">
|
|
835
|
+
{foreach range(1, 6) as $i}
|
|
836
|
+
<div class="col col-4">
|
|
837
|
+
<div class="ui-image rounded overflow-hidden aspect-[8/5]">
|
|
838
|
+
<img src="{placeholder(1200, 750)}" alt="" loading="lazy" />
|
|
839
|
+
</div>
|
|
840
|
+
</div>
|
|
841
|
+
{/foreach}
|
|
842
|
+
</div>
|
|
843
|
+
<div class="row-x justify-between items-center mt-4">
|
|
844
|
+
<div class="col col-left">
|
|
845
|
+
<button class="ui-btn square" aria-label="Previous" data-action="click->lib-slider#prev">
|
|
846
|
+
<svg class="icon">
|
|
847
|
+
<use href="#icon-chevron-left"></use>
|
|
848
|
+
</svg>
|
|
849
|
+
</button>
|
|
850
|
+
</div>
|
|
851
|
+
<div class="col col-counter m:hidden">
|
|
852
|
+
<div class="row py-3 gx-6 items-center justify-center">
|
|
853
|
+
<div class="col">
|
|
854
|
+
<div class="flex gap-1.5 items-center" data-lib-slider-target="dots"></div>
|
|
855
|
+
</div>
|
|
856
|
+
<div class="col">
|
|
857
|
+
<div><span data-lib-slider-target="counterMin">1</span>/<span data-lib-slider-target="counterMax"></span></div>
|
|
858
|
+
</div>
|
|
859
|
+
</div>
|
|
860
|
+
<progress class="ui-progress sm" value="50" max="100" data-lib-slider-target="progress"></progress>
|
|
861
|
+
</div>
|
|
862
|
+
<div class="col col-right">
|
|
863
|
+
<button class="ui-btn square" aria-label="Next" data-action="click->lib-slider#next">
|
|
864
|
+
<svg class="icon">
|
|
865
|
+
<use href="#icon-chevron-right"></use>
|
|
866
|
+
</svg>
|
|
867
|
+
</button>
|
|
868
|
+
</div>
|
|
869
|
+
</div>
|
|
870
|
+
</div>
|
|
871
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
872
|
+
</div>
|
|
873
|
+
<hr/>
|
|
874
|
+
</div>
|
|
875
|
+
<div class="col-12" id="swup">
|
|
876
|
+
<h1 class="ui-heading mb-4">Swup</h1>
|
|
877
|
+
<div class="ui-text">
|
|
878
|
+
<p>Full-page animations between pages are done using <a href="https://github.com/gmrchk/swup" target="_blank" rel="noopener">Swup</a></p>
|
|
879
|
+
<p>Everything is automatic and if the JS is correctly defined via Stimulus, all JS is reinitialized after site navigation</p>
|
|
880
|
+
<p>If you do not want to use Swup on a specific link, you can use the attribute <code>data-no-swup</code></p>
|
|
881
|
+
<h5>Files:</h5>
|
|
882
|
+
<ul class="mt-0">
|
|
883
|
+
<li><code>src/scripts/Libraries/Swup.js</code></li>
|
|
884
|
+
</ul>
|
|
885
|
+
</div>
|
|
886
|
+
<hr/>
|
|
887
|
+
</div>
|
|
888
|
+
<div class="col col-12" id="tippy">
|
|
889
|
+
<h1 class="ui-heading mb-4">Tippy</h1>
|
|
890
|
+
<div class="ui-text mb-6">
|
|
891
|
+
<p>For dropdowns and tooltips the <a href="https://atomiks.github.io/tippyjs/" target="_blank">Tippy.js</a> library is used</p>
|
|
892
|
+
<p>Tippy properties can be freely modified using attributes <a href="https://atomiks.github.io/tippyjs/v6/customization/" target="_blank">data-tippy-*</a></p>
|
|
893
|
+
<p>The basic properties are defined by <code>data-lib-tippy="type, template"</code></p>
|
|
894
|
+
<ul>
|
|
895
|
+
<li><code>type</code> can be <code>dropdown</code> or <code>tooltip</code> with variants <code>-arrow</code> and <code>-full</code> (full width view on your phone)</li>
|
|
896
|
+
<li><code>template</code> can be <code>id</code> section with html or url for <code>fetch</code> (the response must contain json with the key <code>content</code>)</li>
|
|
897
|
+
</ul>
|
|
898
|
+
<h5>Methods</h5>
|
|
899
|
+
<ul>
|
|
900
|
+
<li>initialization: <code>new LibTippy(element, attributes)</code></li>
|
|
901
|
+
</ul>
|
|
902
|
+
<h5>Files:</h5>
|
|
903
|
+
<ul class="mt-0">
|
|
904
|
+
<li><code>src/scripts/Libraries/Tippy.js</code></li>
|
|
905
|
+
</ul>
|
|
906
|
+
<p>Loading tippy template from external file:</p>
|
|
907
|
+
</div>
|
|
908
|
+
{capture $code}
|
|
909
|
+
<button class="ui-btn square" type="button" data-controller="lib-tippy" data-lib-tippy="dropdown-full, /dropdown/tippy.json" data-lib-tippy-slot='{ "edit": "Upravit položku", "delete": "Smazat položku" }'>
|
|
910
|
+
<svg class="icon"><use href="#icon-at-symbol"></use></svg>
|
|
911
|
+
</button>
|
|
912
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
913
|
+
<div class="ui-text mb-5">
|
|
914
|
+
<p>Loading a tippy template from an inline template</p>
|
|
915
|
+
</div>
|
|
916
|
+
{capture $code}
|
|
917
|
+
<button class="ui-btn" type="button" data-controller="lib-tippy" data-lib-tippy="tooltip-arrow, tippy-template" data-lib-tippy-slot='{ "edit": "Upravit položku", "delete": "Smazat položku" }'>
|
|
918
|
+
Tooltip arrow
|
|
919
|
+
</button>
|
|
920
|
+
<template id="tippy-template">
|
|
921
|
+
<div class="c-dropdown">
|
|
922
|
+
<ul class="wrp_c_list flex-col row-y gy-4">
|
|
923
|
+
<li class="col">
|
|
924
|
+
<button class="ui-link">
|
|
925
|
+
<span>{ edit }</span>
|
|
926
|
+
</button>
|
|
927
|
+
</li>
|
|
928
|
+
<li class="col">
|
|
929
|
+
<button class="ui-link">
|
|
930
|
+
<span>{ delete }</span>
|
|
931
|
+
</button>
|
|
932
|
+
</li>
|
|
933
|
+
</ul>
|
|
934
|
+
</div>
|
|
935
|
+
</template>
|
|
936
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
937
|
+
<div class="ui-text mb-5">
|
|
938
|
+
<p>Classic tooltip</p>
|
|
939
|
+
</div>
|
|
940
|
+
{capture $code}
|
|
941
|
+
<button class="ui-btn" type="button" data-controller="lib-tippy" aria-label="Hello world">
|
|
942
|
+
Basic tooltip
|
|
943
|
+
</button>
|
|
944
|
+
{/capture}{$code|code('html', true)|noescape}
|
|
945
|
+
<hr>
|
|
946
|
+
</div>
|
|
947
|
+
<div class="col-12" id="hint">
|
|
948
|
+
<h1 class="ui-heading mb-4">Hint</h1>
|
|
949
|
+
<div class="ui-text">
|
|
950
|
+
<p>Easy CSS only tooltip via <code>aria-label</code> attribute.</p>
|
|
951
|
+
<h5>Files:</h5>
|
|
952
|
+
<ul class="mt-0">
|
|
953
|
+
<li><code>src/styles/Libraries/Hint.css</code></li>
|
|
954
|
+
</ul>
|
|
955
|
+
</div>
|
|
956
|
+
<div>
|
|
957
|
+
{capture $code}
|
|
958
|
+
<div class="ui-title lib-hint-top" aria-label="Tooltip text">
|
|
959
|
+
Tooltip
|
|
960
|
+
</div>
|
|
961
|
+
{/capture}
|
|
962
|
+
{$code|code('html', true)|noescape}
|
|
963
|
+
</div>
|
|
964
|
+
<hr>
|
|
965
|
+
</div>
|
|
966
|
+
<div class="col-12" id="cookieconsent">
|
|
967
|
+
<h1 class="ui-heading mb-4">CookieConsent</h1>
|
|
968
|
+
<div class="ui-text">
|
|
969
|
+
<h5>Files:</h5>
|
|
970
|
+
<ul class="mt-0">
|
|
971
|
+
<li><code>src/scripts/Libraries/CookieConsent.js</code></li>
|
|
972
|
+
<li><code>src/styles/Components/CookieConsent.css</code></li>
|
|
973
|
+
<li><code>src/styles/Components/Form/CookieConsent.css</code></li>
|
|
974
|
+
</ul>
|
|
975
|
+
</div>
|
|
976
|
+
<hr/>
|
|
977
|
+
</div>
|
|
978
|
+
<div class="col-12" id="recaptcha">
|
|
979
|
+
<h1 class="ui-heading mb-4">ReCaptcha</h1>
|
|
980
|
+
<div class="ui-text mb-6">
|
|
981
|
+
<p>Uses Google's <a href="https://cloud.google.com/recaptcha-enterprise/docs/instrument-web-pages" target="_blank">recaptcha-enterprise</a></p>
|
|
982
|
+
<p>ReCaptcha can be added to various types of forms, which can be optionally distinguished with attribute <code>data-lib-recaptcha-action-value</code></p>
|
|
983
|
+
<p>Api key has to be added with <code>data-lib-recaptcha-api-value</code> attribute</p>
|
|
984
|
+
<p>It can be evaluated upon submitting the form, with attribute <code>data-action="submit->lib-recaptcha#submit"</code> with optional param <code>data-lib-recaptcha-naja-param="true"</code> which sends form via naja.</p>
|
|
985
|
+
<h5>Files:</h5>
|
|
986
|
+
<ul class="mt-0">
|
|
987
|
+
<li><code>src/scripts/Libraries/ReCaptcha.js</code></li>
|
|
988
|
+
</ul>
|
|
989
|
+
</div>
|
|
990
|
+
{capture $code}
|
|
991
|
+
<form data-controller="lib-recaptcha" data-lib-recaptcha-api-value="RECAPTCHA_KEY" data-lib-recaptcha-action-value="contact" data-action="submit->lib-recaptcha#submit">
|
|
992
|
+
<input name="gtoken" type="hidden">
|
|
993
|
+
<button>Send</button>
|
|
994
|
+
</form>
|
|
995
|
+
{/capture}{$code|code('html', false)|noescape}
|
|
996
|
+
<hr>
|
|
997
|
+
</div>
|
|
998
|
+
<div class="col-12" id="stimulus">
|
|
999
|
+
<h1 class="ui-heading mb-4">Stimulus</h1>
|
|
1000
|
+
<div class="ui-text">
|
|
1001
|
+
<p><a href="https://stimulusjs.org/" target="_blank" rel="noopener">Stimulus</a> is used for controller definitions, events and other JS interactions.</p>
|
|
1002
|
+
<p>This library ensures the life of individual components and initializes them automatically when the content is redrawn.</p>
|
|
1003
|
+
<p>Stimulus uses three main attributes <code>data-controller</code> (component definition), <code>data-action</code> (event definition - click, change etc.), <code>data-target</code> (target element in DOM)</p>
|
|
1004
|
+
<p>Usage example with all attributes:</p>
|
|
1005
|
+
</div>
|
|
1006
|
+
<pre><code class="language-html">
|
|
1007
|
+
<div data-controller="lib-example" data-lib-example-active-class="active" data-lib-example-text-value="0">
|
|
1008
|
+
<button data-action="click->lib-example#show" data-action-color="red"></button>
|
|
1009
|
+
<div data-lib-example-target="itemTarget"></div>
|
|
1010
|
+
</div>
|
|
1011
|
+
</code></pre>
|
|
1012
|
+
<pre><code class="language-js">
|
|
1013
|
+
import { LibStimulus, Controller, getController } from "../Libraries/Stimulus.js";
|
|
1014
|
+
|
|
1015
|
+
LibStimulus.register("lib-example", class extends Controller {
|
|
1016
|
+
// alternative target definitions (you can also use this.queryTarget or this.queryTargetAll instead)
|
|
1017
|
+
static targets = ['item']
|
|
1018
|
+
static classes = [ 'active' ]
|
|
1019
|
+
static values = {
|
|
1020
|
+
text: Number
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
connect() {
|
|
1024
|
+
// starts when the controller is loaded into DOM
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
disconnect() {
|
|
1028
|
+
// starts when the controller is deleted from DOM, use mainly if event listeners that are outside the controller are created in connect
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
show({ currentTarget }) {
|
|
1032
|
+
// specific action to which the event can be applied
|
|
1033
|
+
|
|
1034
|
+
// refer to a specific target element and add a class and color settings
|
|
1035
|
+
this.itemTarget.classList.add(this.activeClass);
|
|
1036
|
+
this.itemTarget.style.color = currentTarget.dataset.actionColor;
|
|
1037
|
+
|
|
1038
|
+
// extract custom text defined by the controller, this always refers to the controller
|
|
1039
|
+
if (!this.hasTextValue) {
|
|
1040
|
+
this.textValue = 1;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
this.itemTarget.textContent = this.textValue;
|
|
1044
|
+
this.textValue = 2;
|
|
1045
|
+
|
|
1046
|
+
// This method can be used to communicate with another controller
|
|
1047
|
+
getController(document.querySelector(".other_controller"), "other_controller").doSomething()
|
|
1048
|
+
}
|
|
1049
|
+
})
|
|
1050
|
+
</code></pre>
|
|
1051
|
+
<div class="ui-text">
|
|
1052
|
+
<p>To fully understand the functionality, we recommend studying <a href="https://stimulusjs.org/reference/controllers" target="_blank" rel="noopener">documentation</a></p>
|
|
1053
|
+
</div>
|
|
1054
|
+
</div>
|
|
1055
|
+
</div>
|
|
1056
|
+
</div>
|
|
1057
|
+
</div>
|
|
1058
|
+
</div>
|
|
1059
|
+
</section>
|