@natachah/vanilla-frontend 0.4.1 → 1.0.1
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/.gitlab-ci.yml +22 -13
- package/LICENSE.md +1 -1
- package/docs/.vitepress/config.mts +101 -0
- package/docs/base/layout.md +77 -0
- package/docs/base/media.md +146 -0
- package/docs/base/reset.md +33 -0
- package/docs/base/typography.md +296 -0
- package/docs/classes/badge.md +146 -0
- package/docs/classes/breadcrumb.md +54 -0
- package/docs/classes/card.md +171 -0
- package/docs/classes/dropdown.md +180 -0
- package/docs/classes/grid.md +230 -0
- package/docs/classes/list.md +90 -0
- package/docs/components/button.md +254 -0
- package/docs/components/dialog.md +223 -0
- package/docs/components/disclosure.md +169 -0
- package/docs/components/form.md +514 -0
- package/docs/components/loading.md +53 -0
- package/docs/components/popover.md +270 -0
- package/docs/components/progress.md +33 -0
- package/docs/components/table.md +175 -0
- package/docs/index.md +27 -0
- package/docs/javascript/autofill.md +155 -0
- package/docs/javascript/check.md +53 -0
- package/docs/javascript/comfort.md +125 -0
- package/docs/javascript/consent.md +89 -0
- package/docs/javascript/cookie.md +33 -0
- package/docs/javascript/drawer.md +99 -0
- package/docs/javascript/form.md +130 -0
- package/docs/javascript/scroll.md +104 -0
- package/docs/javascript/slider.md +130 -0
- package/docs/javascript/sortable.md +127 -0
- package/docs/javascript/tabpanel.md +72 -0
- package/docs/javascript/toggle.md +182 -0
- package/docs/javascript/trap.md +33 -0
- package/docs/javascript/tree.md +220 -0
- package/docs/prologue/conventions.md +92 -0
- package/docs/prologue/release.md +44 -0
- package/docs/prologue/upgrade.md +21 -0
- package/docs/{pages/demo/layout.html → public/demo/demo.html} +1 -2
- package/docs/start/customization.md +184 -0
- package/docs/start/install.md +80 -0
- package/docs/start/mixin.md +203 -0
- package/docs/vuejs/ComponentPreview.vue +99 -0
- package/js/_slider.js +17 -1
- package/js/{vanilla-frontend.js → vanilla-frontend-doc.js} +30 -33
- package/natachah-vanilla-frontend-1.0.1.tgz +0 -0
- package/package.json +11 -14
- package/public/404.html +22 -0
- package/public/assets/app.zYBRMlen.js +1 -0
- package/public/assets/base_layout.md.DPVON1Hq.js +13 -0
- package/public/assets/base_layout.md.DPVON1Hq.lean.js +1 -0
- package/public/assets/base_media.md.DHSlU0g6.js +24 -0
- package/public/assets/base_media.md.DHSlU0g6.lean.js +1 -0
- package/public/assets/base_reset.md.DD9AA1li.js +3 -0
- package/public/assets/base_reset.md.DD9AA1li.lean.js +1 -0
- package/public/assets/base_typography.md.C9BVN1Re.js +87 -0
- package/public/assets/base_typography.md.C9BVN1Re.lean.js +1 -0
- package/public/assets/chunks/ComponentPreview.Cw4G3qNN.js +27 -0
- package/public/assets/chunks/framework.26dFs73Q.js +4 -0
- package/public/assets/chunks/theme.D1Tljxds.js +1 -0
- package/public/assets/classes_badge.md.EznZXXqT.js +24 -0
- package/public/assets/classes_badge.md.EznZXXqT.lean.js +1 -0
- package/public/assets/classes_breadcrumb.md.DrzF9h9m.js +15 -0
- package/public/assets/classes_breadcrumb.md.DrzF9h9m.lean.js +1 -0
- package/public/assets/classes_card.md.BzNZEHe9.js +41 -0
- package/public/assets/classes_card.md.BzNZEHe9.lean.js +1 -0
- package/public/assets/classes_dropdown.md.CKZ2tv7T.js +70 -0
- package/public/assets/classes_dropdown.md.CKZ2tv7T.lean.js +1 -0
- package/public/assets/classes_grid.md.CKCvlWAg.js +45 -0
- package/public/assets/classes_grid.md.CKCvlWAg.lean.js +1 -0
- package/public/assets/classes_list.md.CjyB8PFK.js +36 -0
- package/public/assets/classes_list.md.CjyB8PFK.lean.js +1 -0
- package/public/assets/components_button.md.CX41PJBd.js +45 -0
- package/public/assets/components_button.md.CX41PJBd.lean.js +1 -0
- package/public/assets/components_dialog.md.JMjidrIE.js +76 -0
- package/public/assets/components_dialog.md.JMjidrIE.lean.js +1 -0
- package/public/assets/components_disclosure.md.BwvLkFL_.js +53 -0
- package/public/assets/components_disclosure.md.BwvLkFL_.lean.js +1 -0
- package/public/assets/components_form.md.C6B5z_6G.js +122 -0
- package/public/assets/components_form.md.C6B5z_6G.lean.js +1 -0
- package/public/assets/components_loading.md.51ktm2_l.js +4 -0
- package/public/assets/components_loading.md.51ktm2_l.lean.js +1 -0
- package/public/assets/components_popover.md.DpbAjVUj.js +102 -0
- package/public/assets/components_popover.md.DpbAjVUj.lean.js +1 -0
- package/public/assets/components_progress.md.H7v6t9h-.js +6 -0
- package/public/assets/components_progress.md.H7v6t9h-.lean.js +1 -0
- package/public/assets/components_table.md.BPrpvUDy.js +75 -0
- package/public/assets/components_table.md.BPrpvUDy.lean.js +1 -0
- package/public/assets/index.md.DNiLOsZD.js +1 -0
- package/public/assets/index.md.DNiLOsZD.lean.js +1 -0
- package/public/assets/inter-italic-cyrillic-ext._dlW9xFb.woff2 +0 -0
- package/public/assets/inter-italic-cyrillic.D7dRslh9.woff2 +0 -0
- package/public/assets/inter-italic-greek-ext.Ct-Tf2bq.woff2 +0 -0
- package/public/assets/inter-italic-greek.DNcpQ8QC.woff2 +0 -0
- package/public/assets/inter-italic-latin-ext.DytegdRQ.woff2 +0 -0
- package/public/assets/inter-italic-latin.COaG5lWR.woff2 +0 -0
- package/public/assets/inter-italic-vietnamese.BI5UxJD-.woff2 +0 -0
- package/public/assets/inter-roman-cyrillic-ext.BeNbU08G.woff2 +0 -0
- package/public/assets/inter-roman-cyrillic.CD0kT8R4.woff2 +0 -0
- package/public/assets/inter-roman-greek-ext.CFAEQ5Ow.woff2 +0 -0
- package/public/assets/inter-roman-greek.Dsf7YjP7.woff2 +0 -0
- package/public/assets/inter-roman-latin-ext.Dl_ayf4-.woff2 +0 -0
- package/public/assets/inter-roman-latin.Cy4MYw_J.woff2 +0 -0
- package/public/assets/inter-roman-vietnamese.CpqCnS2H.woff2 +0 -0
- package/public/assets/javascript_autofill.md.HyVx8c7W.js +49 -0
- package/public/assets/javascript_autofill.md.HyVx8c7W.lean.js +1 -0
- package/public/assets/javascript_check.md.BCbZtUBE.js +13 -0
- package/public/assets/javascript_check.md.BCbZtUBE.lean.js +1 -0
- package/public/assets/javascript_comfort.md.CQm191VA.js +20 -0
- package/public/assets/javascript_comfort.md.CQm191VA.lean.js +1 -0
- package/public/assets/javascript_consent.md.CbDzabMd.js +29 -0
- package/public/assets/javascript_consent.md.CbDzabMd.lean.js +1 -0
- package/public/assets/javascript_cookie.md.CFVe2JRe.js +2 -0
- package/public/assets/javascript_cookie.md.CFVe2JRe.lean.js +1 -0
- package/public/assets/javascript_drawer.md.D_pT0mrZ.js +32 -0
- package/public/assets/javascript_drawer.md.D_pT0mrZ.lean.js +1 -0
- package/public/assets/javascript_form.md.sGYh1L4I.js +40 -0
- package/public/assets/javascript_form.md.sGYh1L4I.lean.js +2 -0
- package/public/assets/javascript_scroll.md.DeOZ4grw.js +30 -0
- package/public/assets/javascript_scroll.md.DeOZ4grw.lean.js +1 -0
- package/public/assets/javascript_slider.md.CIa7pHr9.js +27 -0
- package/public/assets/javascript_slider.md.CIa7pHr9.lean.js +1 -0
- package/public/assets/javascript_sortable.md.CThHVTgW.js +35 -0
- package/public/assets/javascript_sortable.md.CThHVTgW.lean.js +1 -0
- package/public/assets/javascript_tabpanel.md.CxAFdAGU.js +19 -0
- package/public/assets/javascript_tabpanel.md.CxAFdAGU.lean.js +1 -0
- package/public/assets/javascript_toggle.md.C66hpUWF.js +46 -0
- package/public/assets/javascript_toggle.md.C66hpUWF.lean.js +1 -0
- package/public/assets/javascript_trap.md.Dt2Rt__e.js +2 -0
- package/public/assets/javascript_trap.md.Dt2Rt__e.lean.js +1 -0
- package/public/assets/javascript_tree.md.COR-Pj1y.js +72 -0
- package/public/assets/javascript_tree.md.COR-Pj1y.lean.js +1 -0
- package/public/assets/prologue_conventions.md.wCplqeKt.js +34 -0
- package/public/assets/prologue_conventions.md.wCplqeKt.lean.js +1 -0
- package/public/assets/prologue_release.md.CBJGKY_Y.js +1 -0
- package/public/assets/prologue_release.md.CBJGKY_Y.lean.js +1 -0
- package/public/assets/prologue_upgrade.md.E_0GNNE2.js +1 -0
- package/public/assets/prologue_upgrade.md.E_0GNNE2.lean.js +1 -0
- package/public/assets/start_customization.md.C4fmzVYD.js +141 -0
- package/public/assets/start_customization.md.C4fmzVYD.lean.js +1 -0
- package/public/assets/start_install.md.vqLh01mm.js +46 -0
- package/public/assets/start_install.md.vqLh01mm.lean.js +1 -0
- package/public/assets/start_mixin.md.B5VMlbiN.js +85 -0
- package/public/assets/start_mixin.md.B5VMlbiN.lean.js +1 -0
- package/public/assets/style.Dl6gCPEE.css +1 -0
- package/public/base/layout.html +37 -0
- package/public/base/media.html +179 -0
- package/public/base/reset.html +27 -0
- package/public/base/typography.html +320 -0
- package/public/bundles/vanilla-frontend-doc.css +1 -0
- package/public/bundles/vanilla-frontend-doc.js +1 -0
- package/public/bundles/vanilla-frontend.css +1 -0
- package/public/classes/badge.html +205 -0
- package/public/classes/breadcrumb.html +66 -0
- package/public/classes/card.html +222 -0
- package/public/classes/dropdown.html +147 -0
- package/public/classes/grid.html +278 -0
- package/public/classes/list.html +113 -0
- package/public/components/button.html +304 -0
- package/public/components/dialog.html +205 -0
- package/public/components/disclosure.html +130 -0
- package/public/components/form.html +589 -0
- package/public/components/loading.html +107 -0
- package/public/components/popover.html +257 -0
- package/public/components/progress.html +57 -0
- package/public/components/table.html +152 -0
- package/public/demo/demo.html +84 -0
- package/public/hashmap.json +1 -0
- package/public/index.html +25 -0
- package/public/javascript/autofill.html +152 -0
- package/public/javascript/check.html +64 -0
- package/public/javascript/comfort.html +123 -0
- package/public/javascript/consent.html +80 -0
- package/public/javascript/cookie.html +26 -0
- package/public/javascript/drawer.html +83 -0
- package/public/javascript/form.html +117 -0
- package/public/javascript/scroll.html +81 -0
- package/public/javascript/slider.html +78 -0
- package/public/javascript/sortable.html +112 -0
- package/public/javascript/tabpanel.html +70 -0
- package/public/javascript/toggle.html +201 -0
- package/public/javascript/trap.html +26 -0
- package/public/javascript/tree.html +175 -0
- package/public/prologue/conventions.html +58 -0
- package/public/prologue/release.html +25 -0
- package/public/prologue/upgrade.html +25 -0
- package/public/start/customization.html +165 -0
- package/public/start/install.html +70 -0
- package/public/start/mixin.html +109 -0
- package/public/vp-icons.css +0 -0
- package/sandbox/index.html +27 -0
- package/sandbox/js/sandbox-header.js +57 -0
- package/sandbox/js/sandbox-test.js +112 -0
- package/sandbox/pages/base/layout.html +80 -0
- package/sandbox/pages/base/media.html +52 -0
- package/sandbox/pages/base/typography.html +132 -0
- package/sandbox/pages/components/button.html +70 -0
- package/sandbox/pages/components/dialog.html +72 -0
- package/sandbox/pages/components/disclosure.html +77 -0
- package/sandbox/pages/components/form.html +164 -0
- package/sandbox/pages/components/loading.html +32 -0
- package/sandbox/pages/components/popover.html +119 -0
- package/sandbox/pages/components/progress.html +28 -0
- package/sandbox/pages/components/table.html +80 -0
- package/sandbox/pages/customs/badge.html +59 -0
- package/sandbox/pages/customs/breadcrumb.html +34 -0
- package/sandbox/pages/customs/card.html +71 -0
- package/sandbox/pages/customs/dropdown.html +70 -0
- package/sandbox/pages/customs/grid.html +109 -0
- package/sandbox/pages/customs/list.html +43 -0
- package/sandbox/pages/javascript/autofill.html +39 -0
- package/sandbox/pages/javascript/checkall.html +37 -0
- package/sandbox/pages/javascript/comfort.html +41 -0
- package/sandbox/pages/javascript/consent.html +45 -0
- package/sandbox/pages/javascript/form.html +51 -0
- package/sandbox/pages/javascript/scroll.html +44 -0
- package/sandbox/pages/javascript/slider.html +44 -0
- package/sandbox/pages/javascript/sortable.html +56 -0
- package/sandbox/pages/javascript/tabpanel.html +39 -0
- package/sandbox/pages/javascript/toggle.html +72 -0
- package/sandbox/pages/javascript/tree.html +96 -0
- package/sandbox/sandbox.js +26 -0
- package/sandbox/scss/sandbox-header.scss +93 -0
- package/scss/base/_layout.scss +1 -0
- package/scss/base/_reset.scss +5 -0
- package/scss/components/_badge.scss +2 -1
- package/scss/components/_dropdown.scss +2 -2
- package/scss/components/_group.scss +8 -4
- package/scss/components/_popover.scss +74 -0
- package/scss/components/index.scss +1 -0
- package/scss/vanilla-frontend-doc.scss +46 -1
- package/scss/vanilla-frontend-sandbox.scss +34 -0
- package/vite.config.js +30 -0
- package/docs/index.html +0 -36
- package/docs/main-demo.js +0 -2
- package/docs/main.js +0 -34
- package/docs/pages/base/layout.html +0 -131
- package/docs/pages/base/media.html +0 -142
- package/docs/pages/base/reset.html +0 -53
- package/docs/pages/base/typography.html +0 -334
- package/docs/pages/components/button.html +0 -202
- package/docs/pages/components/dialog.html +0 -336
- package/docs/pages/components/disclosure.html +0 -174
- package/docs/pages/components/form.html +0 -427
- package/docs/pages/components/loading.html +0 -58
- package/docs/pages/components/progress.html +0 -47
- package/docs/pages/components/table.html +0 -168
- package/docs/pages/customs/badge.html +0 -150
- package/docs/pages/customs/breadcrumb.html +0 -67
- package/docs/pages/customs/card.html +0 -185
- package/docs/pages/customs/drawer.html +0 -149
- package/docs/pages/customs/dropdown.html +0 -270
- package/docs/pages/customs/grid.html +0 -185
- package/docs/pages/customs/list.html +0 -112
- package/docs/pages/customs/slider.html +0 -273
- package/docs/pages/javascript/autofill.html +0 -170
- package/docs/pages/javascript/checkall.html +0 -59
- package/docs/pages/javascript/comfort.html +0 -146
- package/docs/pages/javascript/consent.html +0 -112
- package/docs/pages/javascript/cookie.html +0 -81
- package/docs/pages/javascript/form.html +0 -199
- package/docs/pages/javascript/scroll.html +0 -209
- package/docs/pages/javascript/sortable.html +0 -167
- package/docs/pages/javascript/tabpanel.html +0 -89
- package/docs/pages/javascript/toggle.html +0 -193
- package/docs/pages/javascript/trap.html +0 -89
- package/docs/pages/javascript/tree.html +0 -256
- package/docs/pages/quick-start/conventions.html +0 -112
- package/docs/pages/quick-start/customization.html +0 -187
- package/docs/pages/quick-start/installation.html +0 -97
- package/docs/pages/quick-start/mixins.html +0 -214
- package/docs/src/js/demo.js +0 -110
- package/docs/src/js/doc-code.js +0 -102
- package/docs/src/js/doc-demo.js +0 -14
- package/docs/src/js/doc-layout.js +0 -117
- package/docs/src/scss/demo.scss +0 -77
- package/docs/src/scss/layout.scss +0 -83
- package/docs/src/scss/style.scss +0 -278
- package/docs/vite.config.mjs +0 -23
- package/esbuild.mjs +0 -25
- package/natachah-vanilla-frontend-0.4.1.tgz +0 -0
- package/vitest.config.js +0 -8
package/scss/base/_reset.scss
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/// ------------------------------------------------------------------
|
|
5
5
|
/// Create the dropdown component
|
|
6
6
|
///
|
|
7
|
-
/// @example <div class="dropdown"><button aria-controls="myDropdown" aria-expanded="false" aria-pressed="false">Button</button><ul id="myDropdown" hidden>...</ul></div>
|
|
7
|
+
/// @example <div class="dropdown-js"><button aria-controls="myDropdown" aria-expanded="false" aria-pressed="false">Button</button><ul id="myDropdown" hidden>...</ul></div>
|
|
8
8
|
///
|
|
9
9
|
/// @require {mixin} as-item
|
|
10
10
|
/// @require {mixin} as-list
|
|
@@ -24,7 +24,7 @@ $customDropdown: (
|
|
|
24
24
|
// Change default properties
|
|
25
25
|
$customDropdownProperties: map.merge(default.$item-properties, $customDropdown);
|
|
26
26
|
|
|
27
|
-
.dropdown {
|
|
27
|
+
.dropdown-js {
|
|
28
28
|
|
|
29
29
|
position: relative;
|
|
30
30
|
display: inline-block;
|
|
@@ -26,13 +26,15 @@
|
|
|
26
26
|
|
|
27
27
|
// Remove extra border
|
|
28
28
|
& + *,
|
|
29
|
-
& + :is(.dropdown) > [aria-controls]
|
|
29
|
+
& + :is(.dropdown-js) > [aria-controls],
|
|
30
|
+
& + :is(.dropdown) > [popovertarget] {
|
|
30
31
|
border-left: none !important;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
// Remove extra radius
|
|
34
35
|
&:not(:first-child, :last-child),
|
|
35
|
-
&:not(:first-child, :last-child):is(.dropdown) > [aria-controls]
|
|
36
|
+
&:not(:first-child, :last-child):is(.dropdown-js) > [aria-controls],
|
|
37
|
+
&:not(:first-child, :last-child):is(.dropdown) > [popovertarget] {
|
|
36
38
|
border-radius: 0;
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -40,14 +42,16 @@
|
|
|
40
42
|
|
|
41
43
|
// Remove radius right on first child
|
|
42
44
|
&:first-child,
|
|
43
|
-
&:first-child:is(.dropdown) > [aria-controls]
|
|
45
|
+
&:first-child:is(.dropdown-js) > [aria-controls],
|
|
46
|
+
&:first-child:is(.dropdown) > [popovertarget] {
|
|
44
47
|
border-start-end-radius: 0;
|
|
45
48
|
border-end-end-radius: 0;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
// Remove radius left on last child
|
|
49
52
|
&:last-child,
|
|
50
|
-
&:last-child:is(.dropdown) > [aria-controls]
|
|
53
|
+
&:last-child:is(.dropdown-js) > [aria-controls],
|
|
54
|
+
&:last-child:is(.dropdown) > [popovertarget] {
|
|
51
55
|
border-start-start-radius: 0;
|
|
52
56
|
border-end-start-radius: 0;
|
|
53
57
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// ------------------------------------------------------------------
|
|
3
|
+
/// Popover
|
|
4
|
+
/// ------------------------------------------------------------------
|
|
5
|
+
/// Create the popover component
|
|
6
|
+
///
|
|
7
|
+
/// @example <div>
|
|
8
|
+
///
|
|
9
|
+
/// @require {mixin} as-item
|
|
10
|
+
/// @require {mixin} as-list
|
|
11
|
+
/// @group components
|
|
12
|
+
/// @author Natacha Herth
|
|
13
|
+
///
|
|
14
|
+
////
|
|
15
|
+
|
|
16
|
+
@use "sass:map";
|
|
17
|
+
@use "../abstracts/default";
|
|
18
|
+
@use "../abstracts/mixins" as *;
|
|
19
|
+
|
|
20
|
+
$colors: (
|
|
21
|
+
) !default;
|
|
22
|
+
|
|
23
|
+
$customPopover: (
|
|
24
|
+
background: var(--color-body)
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
$customPopoverProperties: map.merge(default.$item-properties, $customPopover);
|
|
28
|
+
|
|
29
|
+
[popovertarget] {
|
|
30
|
+
anchor-name: --popover-anchor;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[popover] {
|
|
34
|
+
position: absolute;
|
|
35
|
+
position-anchor: --popover-anchor;
|
|
36
|
+
position-area: var(--popover-area);
|
|
37
|
+
inset: var(--popover-inset, anchor(bottom) auto auto anchor(start));
|
|
38
|
+
|
|
39
|
+
// Define as an item
|
|
40
|
+
@include as-item('popover', (), $customPopoverProperties);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.popover,
|
|
44
|
+
.dropdown {
|
|
45
|
+
anchor-scope: --popover-anchor;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.popover [popover] {
|
|
49
|
+
// Define the color variations
|
|
50
|
+
@include with-color-variations('popover', (), $colors);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.dropdown {
|
|
54
|
+
|
|
55
|
+
// Animate the SVG
|
|
56
|
+
@media screen and (prefers-reduced-motion: no-preference) {
|
|
57
|
+
[popovertarget] > svg {
|
|
58
|
+
transition: var(--dropdown-transition, all .25s ease-in-out);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// On open
|
|
63
|
+
&:has(:popover-open) {
|
|
64
|
+
[popovertarget] > svg {
|
|
65
|
+
transform: var(--dropdown-svg-transform, rotate(-180deg));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Make as list
|
|
70
|
+
[popover] {
|
|
71
|
+
@include as-list('dropdown', ('focus', 'hover', 'active', 'disabled'), $customPopoverProperties);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
/// @author Natacha Herth
|
|
8
8
|
///
|
|
9
9
|
|
|
10
|
+
@use './abstracts/mixins' as *;
|
|
10
11
|
|
|
11
12
|
// Themes
|
|
12
13
|
@use "./themes/root";
|
|
@@ -27,8 +28,52 @@
|
|
|
27
28
|
@use "./components/dropdown";
|
|
28
29
|
@use "./components/form";
|
|
29
30
|
@use "./components/grid";
|
|
31
|
+
@use "./components/group";
|
|
30
32
|
@use "./components/list";
|
|
31
33
|
@use "./components/loading";
|
|
34
|
+
@use "./components/popover" with ($colors: ('primary'));
|
|
32
35
|
@use "./components/progress";
|
|
33
36
|
@use "./components/table";
|
|
34
|
-
@use "./components/slider";
|
|
37
|
+
@use "./components/slider";
|
|
38
|
+
|
|
39
|
+
// Create a container
|
|
40
|
+
.as-container {
|
|
41
|
+
container-type: inline-size;
|
|
42
|
+
min-height: 300px;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Demo for responsive table
|
|
47
|
+
@container (max-width:500px) {
|
|
48
|
+
#responsiveTable {
|
|
49
|
+
@include as-responsive-table()
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Demo Drawer
|
|
54
|
+
#drawer {
|
|
55
|
+
--drawer-position: 0 0 0 auto
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Demo Grid
|
|
59
|
+
.grid,
|
|
60
|
+
.flex-grid {
|
|
61
|
+
&:not(.demo-inline) > * {
|
|
62
|
+
background-color: #eee;
|
|
63
|
+
text-align: center;
|
|
64
|
+
padding-block: 1rem;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&.demo-inline {
|
|
68
|
+
--grid-columns: 3
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#flexGridDemoOffset {
|
|
74
|
+
@include flex-grid-offset-column()
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#flexGridDemoWider {
|
|
78
|
+
@include flex-grid-wider-column()
|
|
79
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// ------------------------------------------------------------------
|
|
3
|
+
/// Main
|
|
4
|
+
/// ------------------------------------------------------------------
|
|
5
|
+
/// This is the main scss generated
|
|
6
|
+
///
|
|
7
|
+
/// @author Natacha Herth
|
|
8
|
+
///
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
// Themes
|
|
12
|
+
@use "./themes/root";
|
|
13
|
+
|
|
14
|
+
// Base
|
|
15
|
+
@use "./base";
|
|
16
|
+
|
|
17
|
+
// Components
|
|
18
|
+
@use "./components/badge" with ($colors: ('primary'), $outline: true);
|
|
19
|
+
@use "./components/breadcrumb";
|
|
20
|
+
@use "./components/button" with ($colors: ('primary'), $outline: true);
|
|
21
|
+
@use "./components/card" with ($colors: ('primary'), $outline: true);
|
|
22
|
+
@use "./components/dialog";
|
|
23
|
+
@use "./components/disclosure";
|
|
24
|
+
@use "./components/drawer";
|
|
25
|
+
@use "./components/dropdown";
|
|
26
|
+
@use "./components/form";
|
|
27
|
+
@use "./components/grid";
|
|
28
|
+
@use "./components/group";
|
|
29
|
+
@use "./components/list";
|
|
30
|
+
@use "./components/loading";
|
|
31
|
+
@use "./components/popover" with ($colors: ('primary'));
|
|
32
|
+
@use "./components/progress";
|
|
33
|
+
@use "./components/table";
|
|
34
|
+
@use "./components/slider";
|
package/vite.config.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { defineConfig } from 'vite'
|
|
2
|
+
import autoprefixer from 'autoprefixer'
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
css: {
|
|
6
|
+
postcss: {
|
|
7
|
+
plugins: [autoprefixer],
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
build: {
|
|
11
|
+
outDir: 'docs/public/bundles',
|
|
12
|
+
emptyOutDir: true,
|
|
13
|
+
minify: 'esbuild',
|
|
14
|
+
rollupOptions: {
|
|
15
|
+
input: {
|
|
16
|
+
'js': 'js/vanilla-frontend-doc.js',
|
|
17
|
+
'vanilla-frontend': 'scss/vanilla-frontend.scss',
|
|
18
|
+
'vanilla-frontend-doc': 'scss/vanilla-frontend-doc.scss',
|
|
19
|
+
},
|
|
20
|
+
output: {
|
|
21
|
+
entryFileNames: 'vanilla-frontend-doc.js',
|
|
22
|
+
assetFileNames: '[name][extname]',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
test: {
|
|
27
|
+
environment: 'happy-dom',
|
|
28
|
+
globals: true,
|
|
29
|
+
}
|
|
30
|
+
})
|
package/docs/index.html
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Documentations: Components ></title>
|
|
8
|
-
</head>
|
|
9
|
-
|
|
10
|
-
<body data-preload>
|
|
11
|
-
|
|
12
|
-
<doc-layout>
|
|
13
|
-
|
|
14
|
-
<h1>A simple <span style="color: var(--color-primary)">Vanilla Frontend</span> framework</h1>
|
|
15
|
-
|
|
16
|
-
<p>Here let me explain a little more about my framework and how to use it :-)</p>
|
|
17
|
-
|
|
18
|
-
<h2>Why a new framework</h2>
|
|
19
|
-
|
|
20
|
-
<p>A lot or framework are too heavy or too minimal, and more important a lot of them don't prioritize semantic HTML.</p>
|
|
21
|
-
|
|
22
|
-
<p>I wanted to be able to quickly start a new project with a clean design and a minimal override for customization.</p>
|
|
23
|
-
|
|
24
|
-
<blockquote>
|
|
25
|
-
<p>And must important to keep it accessible and Vanilla !</p>
|
|
26
|
-
</blockquote>
|
|
27
|
-
|
|
28
|
-
<p>As a visual imparaired person, I know how much it can be difficult to find a good website with good semantic and/or with the ability to change some basic styling as the font size.</p>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
</doc-layout>
|
|
32
|
-
|
|
33
|
-
<script type="module" src="/main.js"></script>
|
|
34
|
-
</body>
|
|
35
|
-
|
|
36
|
-
</html>
|
package/docs/main-demo.js
DELETED
package/docs/main.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// Import main css
|
|
2
|
-
import './../scss/vanilla-frontend-doc.scss'
|
|
3
|
-
|
|
4
|
-
// HERE go the code
|
|
5
|
-
import './src/js/doc-layout.js'
|
|
6
|
-
import './src/js/doc-demo.js'
|
|
7
|
-
import './src/js/doc-code.js'
|
|
8
|
-
import './src/js/demo.js'
|
|
9
|
-
|
|
10
|
-
import './src/scss/layout.scss'
|
|
11
|
-
import './src/scss/style.scss'
|
|
12
|
-
import './src/scss/demo.scss'
|
|
13
|
-
|
|
14
|
-
// Prevent first animation
|
|
15
|
-
setTimeout(() => { document.body.removeAttribute('data-preload') }, 10)
|
|
16
|
-
|
|
17
|
-
// Set the current navigation
|
|
18
|
-
const current = window.location.pathname
|
|
19
|
-
|
|
20
|
-
if (current.startsWith('/pages/')) document.querySelectorAll(`#sidebar a[href*="${current}"]`).forEach(elem => {
|
|
21
|
-
elem.setAttribute('aria-current', 'page')
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
// My awsome sidebar !!!
|
|
25
|
-
import Drawer from './../js/_drawer.js'
|
|
26
|
-
const sidebar = document.getElementById('sidebar')
|
|
27
|
-
if (sidebar) new Drawer(sidebar, {
|
|
28
|
-
cookie: 'demo-confort'
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
// Code group
|
|
32
|
-
import Tabpanel from './../js/_tabpanel.js'
|
|
33
|
-
const tabpanels = document.querySelectorAll('.code-group')
|
|
34
|
-
if (tabpanels) tabpanels.forEach(tabpanel => new Tabpanel(tabpanel))
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Documentations: Layout > Container</title>
|
|
8
|
-
</head>
|
|
9
|
-
|
|
10
|
-
<body data-preload>
|
|
11
|
-
<doc-layout>
|
|
12
|
-
|
|
13
|
-
<h1>Layout</h1>
|
|
14
|
-
|
|
15
|
-
<p>The framework uses a CSS grid to create the default page layout on the body. It features default CSS variables that you can customize, such as the maximum content width, which is set at <b>1280px</b>. Since it uses a grid, it includes gaps and columns.</p>
|
|
16
|
-
|
|
17
|
-
<p>Also, the grid template as two content zone available as <code>full</code> and <code>content</code> that you can use as you wish.</p>
|
|
18
|
-
|
|
19
|
-
<p>But as every website can be different, these value can be changed !</p>
|
|
20
|
-
|
|
21
|
-
<p><a href="/pages/demo/layout.html">Check the demo page !</a></p>
|
|
22
|
-
|
|
23
|
-
<table>
|
|
24
|
-
<caption>
|
|
25
|
-
<h2>Device Breakpoint Viewport</h2>
|
|
26
|
-
</caption>
|
|
27
|
-
<thead>
|
|
28
|
-
<tr>
|
|
29
|
-
<th>Device</th>
|
|
30
|
-
<th>Breakpoint</th>
|
|
31
|
-
<th>Columns</th>
|
|
32
|
-
<th>Vieport</th>
|
|
33
|
-
</tr>
|
|
34
|
-
</thead>
|
|
35
|
-
<tbody>
|
|
36
|
-
<tr>
|
|
37
|
-
<td>Mobile</td>
|
|
38
|
-
<td>
|
|
39
|
-
< 720
|
|
40
|
-
</td>
|
|
41
|
-
<td>1</td>
|
|
42
|
-
<td>100%</td>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<td>Tablet</td>
|
|
46
|
-
<td>< 1024px</td>
|
|
47
|
-
<td>6</td>
|
|
48
|
-
<td>100%</td>
|
|
49
|
-
</tr>
|
|
50
|
-
<tr>
|
|
51
|
-
<td>Laptop</td>
|
|
52
|
-
<td>< 1440px</td>
|
|
53
|
-
<td>12</td>
|
|
54
|
-
<td>1280px</td>
|
|
55
|
-
</tr>
|
|
56
|
-
<tr>
|
|
57
|
-
<td>Desktop</td>
|
|
58
|
-
<td>> 1440px</td>
|
|
59
|
-
<td>12</td>
|
|
60
|
-
<td>1280px</td>
|
|
61
|
-
</tr>
|
|
62
|
-
</tbody>
|
|
63
|
-
</table>
|
|
64
|
-
|
|
65
|
-
<div class="code-group">
|
|
66
|
-
<div role="tablist">
|
|
67
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
68
|
-
<button role="tab" aria-controls="scss">SCSS</button>
|
|
69
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
70
|
-
</div>
|
|
71
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
72
|
-
<!--
|
|
73
|
-
<body data-preload>
|
|
74
|
-
<header></header>
|
|
75
|
-
<main></main>
|
|
76
|
-
<footer></footer>
|
|
77
|
-
</body>
|
|
78
|
-
-->
|
|
79
|
-
</doc-code>
|
|
80
|
-
<doc-code id="scss" data-type="scss" role="tabpanel">
|
|
81
|
-
@use '@natachah/vanilla-frontend/scss/base/layout';
|
|
82
|
-
</doc-code>
|
|
83
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
84
|
-
--layout-width
|
|
85
|
-
--layout-gap-block
|
|
86
|
-
--layout-gap-inline
|
|
87
|
-
--layout-columns
|
|
88
|
-
--subgrid-gap-block
|
|
89
|
-
--subgrid-gap-inline
|
|
90
|
-
</doc-code>
|
|
91
|
-
</div>
|
|
92
|
-
|
|
93
|
-
<blockquote class="info">
|
|
94
|
-
<p>The <code>--subgrid-gap-*</code> are used for the direct child as header, main and footer. It set by default the gap block at 0 and take the layout inline gap.</p>
|
|
95
|
-
</blockquote>
|
|
96
|
-
|
|
97
|
-
<h2>Container</h2>
|
|
98
|
-
|
|
99
|
-
<p>The default layout include a <code>.container</code> and a <code>.container-full</code>.</p>
|
|
100
|
-
|
|
101
|
-
<p>The classic container is centered into the page layout and the full container take the full length of the page.<br>It's perfect if you need to set a background color to a section.</p>
|
|
102
|
-
|
|
103
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
104
|
-
<section class="container"></section>
|
|
105
|
-
<section class="container-full"></section>
|
|
106
|
-
</doc-code>
|
|
107
|
-
|
|
108
|
-
<h2>Subgrid</h2>
|
|
109
|
-
|
|
110
|
-
<p>You can re-use the layout grid into a container with the class <code>.subgrid</code>. Then you can use the <code>grid-column</code> CSS property to manage the space.</p>
|
|
111
|
-
|
|
112
|
-
<div class="code-group">
|
|
113
|
-
<div role="tablist">
|
|
114
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
115
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
116
|
-
</div>
|
|
117
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
118
|
-
<section class="container subgrid"></section>
|
|
119
|
-
<section class="container-full subgrid"></section>
|
|
120
|
-
</doc-code>
|
|
121
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
122
|
-
--subgrid-gap-block
|
|
123
|
-
--subgrid-gap-inline
|
|
124
|
-
</doc-code>
|
|
125
|
-
</div>
|
|
126
|
-
|
|
127
|
-
</doc-layout>
|
|
128
|
-
<script type="module" src="/main.js"></script>
|
|
129
|
-
</body>
|
|
130
|
-
|
|
131
|
-
</html>
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Documentations: Base ></title>
|
|
8
|
-
</head>
|
|
9
|
-
|
|
10
|
-
<body data-preload>
|
|
11
|
-
<doc-layout>
|
|
12
|
-
|
|
13
|
-
<h1>Media</h1>
|
|
14
|
-
<p>A website can have multiple media as images, videos and/or audios.</p>
|
|
15
|
-
<h2>Image</h2>
|
|
16
|
-
<p>The image is using the native <code><img></code> tag with the attributes <code>srcset</code>, <code>alt</code> and <code>title</code>.</p>
|
|
17
|
-
<doc-demo>
|
|
18
|
-
<img src="https://picsum.photos/400/330" srcset="https://picsum.photos/800/660 2x" alt="A random image from lorem picsum" title="This is my picture">
|
|
19
|
-
</doc-demo>
|
|
20
|
-
|
|
21
|
-
<div class="code-group">
|
|
22
|
-
<div role="tablist">
|
|
23
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
24
|
-
<button role="tab" aria-controls="scss">SCSS</button>
|
|
25
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
26
|
-
</div>
|
|
27
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
28
|
-
<img src="https://picsum.photos/400/330" srcset="https://picsum.photos/800/660 2x" alt="A random image from lorem picsum" title="This is my picture">
|
|
29
|
-
</doc-code>
|
|
30
|
-
<doc-code id="scss" data-type="scss" role="tabpanel">
|
|
31
|
-
@use '@natachah/vanilla-frontend/scss/base/media';
|
|
32
|
-
</doc-code>
|
|
33
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
34
|
-
--image-width
|
|
35
|
-
--image-height
|
|
36
|
-
--image-fit
|
|
37
|
-
--image-position
|
|
38
|
-
--image-ratio
|
|
39
|
-
</doc-code>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<h3>Picture</h3>
|
|
43
|
-
<p>For responsive and best practice, it's better to use the <code><picture></code> tag with inside the <code><source></code> and <code><img></code> tags.</p>
|
|
44
|
-
<doc-demo>
|
|
45
|
-
<picture>
|
|
46
|
-
<source media="(max-width:576px)" srcset="https://fakeimg.pl/200x200/?text=mobile, https://fakeimg.pl/400x400/?text=mobile+retina 2x">
|
|
47
|
-
<source media="(max-width:768px)" srcset="https://fakeimg.pl/200x200/?text=tablet, https://fakeimg.pl/400x400/?text=tablet+retina 2x">
|
|
48
|
-
<source media="(max-width:992px)" srcset="https://fakeimg.pl/200x200/?text=laptop, https://fakeimg.pl/400x400/?text=laptop+retina 2x">
|
|
49
|
-
<img src="https://fakeimg.pl/200x200/?text=desktop" srcset="https://fakeimg.pl/400x400/?text=desktop+retina 2x" alt="A random image from lorem picsum" title="This is my picture">
|
|
50
|
-
</picture>
|
|
51
|
-
</doc-demo>
|
|
52
|
-
<doc-code>
|
|
53
|
-
<picture>
|
|
54
|
-
<source media="(max-width:576px)" srcset="https://fakeimg.pl/200x200/?text=mobile, https://fakeimg.pl/400x400/?text=mobile+retina 2x">
|
|
55
|
-
<source media="(max-width:768px)" srcset="https://fakeimg.pl/200x200/?text=tablet, https://fakeimg.pl/400x400/?text=tablet+retina 2x">
|
|
56
|
-
<source media="(max-width:992px)" srcset="https://fakeimg.pl/200x200/?text=laptop, https://fakeimg.pl/400x400/?text=laptop+retina 2x">
|
|
57
|
-
<img src="https://fakeimg.pl/200x200/?text=desktop" srcset="https://fakeimg.pl/400x400/?text=desktop+retina 2x" alt="A random image from lorem picsum" title="This is my picture">
|
|
58
|
-
</picture>
|
|
59
|
-
</doc-code>
|
|
60
|
-
|
|
61
|
-
<h3>Figure</h3>
|
|
62
|
-
<p>You also can use <code><figure></code> and <code><figcaption></code> tags, to display an <code><img></code> with a nice caption.</p>
|
|
63
|
-
<doc-demo>
|
|
64
|
-
<figure>
|
|
65
|
-
<img src="https://picsum.photos/id/320/400/330" srcset="https://picsum.photos/id/320/800/660 2x" alt="My random image from lorem picsum">
|
|
66
|
-
<figcaption>My image from lorem picsum</figcaption>
|
|
67
|
-
</figure>
|
|
68
|
-
</doc-demo>
|
|
69
|
-
<div class="code-group">
|
|
70
|
-
<div role="tablist">
|
|
71
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
72
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
73
|
-
</div>
|
|
74
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
75
|
-
<figure>
|
|
76
|
-
<img src="https://picsum.photos/id/320/400/330" srcset="https://picsum.photos/id/320/800/660 2x" alt="My random image from lorem picsum">
|
|
77
|
-
<figcaption>My image from lorem picsum</figcaption>
|
|
78
|
-
</figure>
|
|
79
|
-
</doc-code>
|
|
80
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
81
|
-
--caption-color
|
|
82
|
-
--caption-font-size
|
|
83
|
-
--caption-margin-block
|
|
84
|
-
--caption-margin-inline
|
|
85
|
-
</doc-code>
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<h2>Video</h2>
|
|
89
|
-
<p>Use the default <code><video></code> and <code><source></code> tags.</p>
|
|
90
|
-
<p>By default the video take 100% width and have a ratio of 16:9.</p>
|
|
91
|
-
<doc-demo>
|
|
92
|
-
<video width="320" height="240" controls>
|
|
93
|
-
<source src="..." type="video/mp4">
|
|
94
|
-
</video>
|
|
95
|
-
</doc-demo>
|
|
96
|
-
<div class="code-group">
|
|
97
|
-
<div role="tablist">
|
|
98
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
99
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
100
|
-
</div>
|
|
101
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
102
|
-
<video width="320" height="240" controls>
|
|
103
|
-
<source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
|
|
104
|
-
</video>
|
|
105
|
-
</doc-code>
|
|
106
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
107
|
-
--video-width
|
|
108
|
-
--video-height
|
|
109
|
-
--video-fit
|
|
110
|
-
--video-position
|
|
111
|
-
--video-ratio
|
|
112
|
-
</doc-code>
|
|
113
|
-
</div>
|
|
114
|
-
|
|
115
|
-
<h2>Audio</h2>
|
|
116
|
-
<p>Use the default <code><audio></code> and <code><source></code> tags.</p>
|
|
117
|
-
<p>By default the audio take 100% width.</p>
|
|
118
|
-
<doc-demo>
|
|
119
|
-
<audio controls>
|
|
120
|
-
<source src="http://codeskulptor-demos.commondatastorage.googleapis.com/GalaxyInvaders/theme_01.mp3" type="audio/mpeg">
|
|
121
|
-
</audio>
|
|
122
|
-
</doc-demo>
|
|
123
|
-
<div class="code-group">
|
|
124
|
-
<div role="tablist">
|
|
125
|
-
<button role="tab" aria-controls="html">HTML</button>
|
|
126
|
-
<button role="tab" aria-controls="css">CSS</button>
|
|
127
|
-
</div>
|
|
128
|
-
<doc-code id="html" data-type="html" role="tabpanel">
|
|
129
|
-
<audio controls>
|
|
130
|
-
<source src="http://localhost:5173/public/audio.mp3" type="audio/mpeg">
|
|
131
|
-
</audio>
|
|
132
|
-
</doc-code>
|
|
133
|
-
<doc-code id="css" data-type="css" role="tabpanel">
|
|
134
|
-
--audio-width
|
|
135
|
-
</doc-code>
|
|
136
|
-
</div>
|
|
137
|
-
|
|
138
|
-
</doc-layout>
|
|
139
|
-
<script type="module" src="/main.js"></script>
|
|
140
|
-
</body>
|
|
141
|
-
|
|
142
|
-
</html>
|