Menu d1 npm i d1-web v2.7.5
GitHub Download

d1 front-end framework


Get started

d1 is a lightweight responsive front-end framework with interactive components and utilities. Neutral default style can be customized with CSS variables. Most components are usable without JavaScript.

Test page Demo page

Install with NPM

Install to your repository:

npm install d1-web

Then use in your CSS file (d1-icons.css is optional):

@import "../node_modules/d1-web/dist/d1.min.css";
@import "../node_modules/d1-web/dist/d1-icons.min.css";

And optionally bundle into your JavaScript file:

require("../node_modules/d1-web/dist/d1.min.js");

or build from source:

const d1 = require("../../d1-web/src/module.js").default;
d1.b([document], 'DOMContentLoaded', e => d1.init(/* options */));

Install manually

Add the distributed CSS and JavaScript to the head of your document.
Inclusion of d1.js and d1-icons.css is optional.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Title</title>
    <meta name="viewport" 
      content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="/css/d1.min.css">
    <script src="/js/d1.min.js"></script>
    <noscript>
      <link href="/js/d1-icons.min.css" rel="stylesheet">
    </noscript>
  </head>
  <body>
  </body>
</html>

CDN

Add CDN links to the head of your document.
Inclusion of d1.js and d1-icons.css is optional.

<link href="https://cdn.jsdelivr.net/npm/d1-web@2.7.5/dist/d1.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/d1-web@2.7.5/dist/d1.min.js"></script>
<noscript>
  <link href="https://cdn.jsdelivr.net/npm/d1-web@2.7.5/dist/d1-icons.min.css" rel="stylesheet">
</noscript>

		
<link href="https://unpkg.com/d1-web@2.7.5/dist/d1.min.css" rel="stylesheet">
<script src="https://unpkg.com/d1-web@2.7.5/dist/d1.min.js"></script>
<noscript>
  <link href="https://unpkg.com/d1-web@2.7.5/dist/d1-icons.min.css" rel="stylesheet">
</noscript>		
<link href="https://unpkg.com/d1-web" rel="stylesheet">
<script src="https://unpkg.com/d1-web/dist/d1.min.js"></script>
<noscript>
  <link href="https://unpkg.com/d1-web/dist/d1-icons.min.css" rel="stylesheet">
</noscript>
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://unpkg.com/d1-web">
    <script src="https://unpkg.com/d1-web/dist/d1.min.js"></script>
    <noscript>
      <link href="https://unpkg.com/d1-web/dist/d1-icons.min.css" rel="stylesheet">
    </noscript>
  </head>
  <body>
  </body>
</html>

Typography

Mostly, default styling is kept.

Inline

Bold Italic Strike
Insert Delete Sub Span Super
Abbr Quote Cite Mark Dfn
Code Var Kbd Samp
Link Link without href

Blocks

Paragraph
New line

Paragraph

Preformatted code
Blockqoute

Headings

h1..h6Default margins
.marSmaller margins
.fitNo margins

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Grid

Fractional grid

Grid row container div.row. Direct descendants of the container are columns. By default, they all have equal width.

Options




(disables column width modifiers, auto width)
Column width options (applied on central column here)



Left col
Central
column
Very wide content — required to overflow available column width
Right col

Paragraph after grid

Column position options (applied on central column here)


Left
Central
column
Right

Regular grid

Grid rows container .grid-N, where N is number of columns (1, 2, 3, 4, 6). Direct descendants of the container are cells. Cells do wrap, forming a regular grid.

Grid options



Columns on desktop screen



Columns on tablet screen (if not .flip)




Columns on phone screen (if not .flip)



#1
line
#2
#3
#4
#5
#6
#7
#8
#9
#10
#11

Lists

Basic lists

Options


  • Unordered
  • List
    1. Ordered
    2. Sub-list
Term
Definition
Another definition
Another term
Another definition

Tree

Expandable nested lists ul.tree.

Inside list items, use links pointing at nested lists, or links without [href]. When no such link is found, it is generated.

For accordion behaviour, use .accordion.
To remember state, use .mem.

  • Computer
    • Programming
      • JavaScript
      • PHP
    • Markup
      • HTML
      • CSS
  • Human
    • English
    • Spanish

Tables

Basic table

tableBy default, table is styled with border
form > tableNo borders if table is a direct descendant of form
.bordShow borders
.letRow dividers
.hoverHighlight row on hover
.shiftFull width
.fitNo cell padding
.roll > tableScroll overflowing width
.l1 .r2 .c3Align specific columns to the left/right/center
Table caption
#ComponentCodeRemember stateFix positionClose on Esc
1 Dropdown .nav - + +
2 Tree .tree .mem - -
3 Toggle .target.mem - -
4 Popup .pop - + +
5 Tabs .tabs .mem - -
6 Modal .dlg - - +
7 Drawer .drawer- - +
8 Gallery .gal - - +
9 Topbar .stick.toggle- - -

Responsive table fliptable

Turn rows into cards on small screen table.flip.

Web languages
LanguageTypeYear
HTMLMarkup1993
JavaScriptProgramming1995
CSSStyle1996

Interactive table tablex

Sort table rows table.sort.

Initial sort column number can be set in [data-s] attribute, or (with higher priority) in URL query string parameter with the name defined in [data-qs] attribute (one-based indexing, negative values for descending order).

Filter field query selector in table[data-filter] or add filter field automatically table.filter.

Initial filter value can be set in [data-f] attribute, or (with higher priority) in URL query string parameter with the name defined in [data-qf] attribute.

Automatic dynamic totals (sum for numbers, max for dates, count for strings) table.totals.

Custom dynamic totals in tfoot span: [data-total="count|sum|avg|min|max"], decimal digits [data-dec] (default 2), mode [data-mode="s|n|b|i|d"] (default "n"), where "s" is string, "n" is numeric, "b" is byte size, "i" is time interval, "d" is datetime.

To enable page navigation set [data-limit] to number of rows per page and optionally set [data-pages] to maximum number of page links to show (default is 10). Page navigation is placed before table by default. To place it after table add [data-pages-after] attribute.

Initially shown page can be set in [data-p] attribute, or (with higher priority) in URL query string parameter with the name defined in [data-qp] attribute.

StringNumberBytesIntervalDate
HTML4900 B1min 125s1993-07-09 08:05:01
JavaScript10.11 MB5m12/4/1995
CSS3350 KB1y17.12.1996
Count: Sum:
Avg:
Sum: Sum: Avg:
Min:
Max:

Forms

Buttons

Button and input of type submit have button styling by default.
Add .btn class to the element (usually a link) to make it look like a button (which is not recommended from accessibility point of view). For color options see Colors section.

Link
Span B Link-pad-bord Link-pad Link

Inline form

Stacked form



Link

Form as grid

Fieldset

Form as table

For aligned form, table may be used, which is arguably not semantic, but very convenient. In this case, table must be a direct descendant of form. Table will become stacked on small screen.

Input types
Upload
Box
Switches
Box



Radio

Initial values

Initial values for all inputs in a form can be set in URL query string parameter with the name defined in form's [data-q] attribute.

Initial input value can be set in URL query string parameter with the name defined in input's [data-q] attribute. This takes precenence over form's initial values.

Checkbox group form





Color input form

Set input value form

Test, Reset

Calendar calendar

Replacement of standard HTML date inputs.

Text
Date
Datetime

Edit edit

Auto-adjust textarea height to content .adjust.

Turn textarea into WYSIWYG editor .edit.
Optionally define initial mode in [data-mode] attribute ("w" for WYSIWYG, "t" for source editing). If absent, mode is defined automatically based on whether HTML tags are contained in text.
Optionally define custom set of tools in [data-tools]. Example: data-tools="/bi_.".

Editor tools
CodeCommandDescription
/srcView source
*insertimageImage
@createlinkLink
xunlinkUnlink
bboldBold
iitalicItalic
_removeformatRemove format
.insertUnorderedListUnordered list
#insertOrderedListOrdered list
1formatblockHeading 1
2formatblockHeading 2
3formatblockHeading 3
pformatblockParagraph
|toolsExpand toolbar
cinserthtmlCode
,inserthtmlAbbreviation
sstrikeThroughStrike through
^subscriptSubscript
vsuperscriptSuperscript
dformatblockDiv
qformatblockBlock quote
fformatblockPreformatted
~inserthorizontalruleHorizontal ruler
TinserthtmlTable
(justifyLeftJustify left
=justifyCenterJustify center
)justifyRightJustify right
jjustifyFullJustify full
+indentIncrease indent
-outdentDecrease indent

Lookup lookup

Autocomplete lookups with data from XHTTP request.

Chained selects.

Chained datalist.

File picker with dropzone pickfile

Add .pick class to file input for drag and drop behaviour and image preview.
Optionally set [data-picked] to URL of initial image.
Add .drop class to file input for fullscreen dropzone (use one per page).
Add .fit class for compact layout.

Validation

Custom form validation.

Custom input validation messages valid

To customize input validation messages, provide validation hint in [data-hint] attribute of input element. Placeholders inside percent characters are replaced with value of corresponding attribute of input element.

Enter 2 up to 4 latin letters
Looks good
Box
Radio

Custom hint elements for input validation

Another option is to add sibling element with class .hint.text-e after input. It will be visible only if input value is not valid. Contrary, sibling element with class .hint.text-y will be visible only if input value is valid.

To improve usability, add class .js-unhint to form. This disables default brower-specific tooltips and also disables reporting empty required inputs as invalid until submitting.

Validation hint inside small
Validation hint inside div
Looks good
Select language
Enter number between 1 and 10, step 0.1
Type something
Box
Check to continue
Radio
Select to continue
Form not valid

Form inputs storage store

To store user input in local storage, add .store class to the form.
Buttons will be shown above the form: to restore input values, to reset inputs to initial values, and to clear stored values.

To restore input values on page reload, add .restore class to the form. To avoid restoring of specific inputs, add .unstore class to theese inputs.

Boxes

Radios

Components toggle

Pure CSS togglers are based on :target behaviour. This approach is semantic, but has some drawbacks:

  • only one togglable block can be active (open) at the moment
  • nested togglable blocks are not possible
  • styling of active link is not possible
  • on/off behaviour of the link is not possible
  • page scrolls, which is in most cases undesirable

To overcome these drawbacks, JavaScript is used. To store elements state in local storage, add .mem class like in following examples for target, tabs, tree.

Target

Use link pointing at element with .target class.

If target element should be visible with JavaScript disabled, use .toggle class instead. If target element should be visible with JavaScript disabled, but initially invisible with JavaScript enabled, use .toggle.off classes.

Toggle
Togglable

Mass toggle toggle

To toggle many elements at once, use link with data-nodes attribute and query selector as its value. To initially hide elements add off class on them. To remember state, add mem class to the element and give it unique id or name.

Mass toggle

Toggle: One Two

Inside div with .pop class, use link pointing at sibling div element.
Add .shift class to the target element to pop up leftwards.
Add .fit class to the target element to allow its small width.
Popups can be nested.

WWWWWWWW WWWWWWWWWW WWWWWW WWWWWW WWWWW WWW WWWW
Text popup text
Pop

To create a navigation bar add .nav class to the ul element.

With pure CSS, nested lists are shown on hover. With JavaScript, nested lists are toggled on click. Following code shows how to collapse navigation to a single hamburger icon on small screen, and expand it to dropdown navbar on large screen.

Options







Tabs

Use list with .nav.tabs classes as tabs headers.
Each list item should contain a link pointing at tab panel.
Next sibling div should contain div tab panels.

2
2
3
3
3
1

Modal

Use link pointing at element with .dlg class.
Add .let class for larger width.
Optionally use closing link pointing at #cancel inside target element.

Modal fullscreen

Use link pointing at element with .dlg.full classes.
Optionally use closing link pointing at #cancel inside target element.

Open fullscreen modal

Dialog dialog

Replacement for standard JavaScript dialogs.

  • Alert .alert[title][data-caption][data-head][data-pic][data-ok]
  • Confirm .dialog[title][data-caption][data-head][data-pic][data-ok][data-cancel][data-reverse]
  • Prompt .dialog[data-prompt][title][data-caption][data-head][data-pic][data-src][data-go][data-ok][data-cancel][data-reverse]

Gallery

Hidden gallery: non-CSS fallback #1 #2 #3

Pure CSS gallery

Inside div with class .gal, add sequence of links, each one pointing at the next and having [style] attribute with --img CSS proprty pointing at image. Lastly, add closing link pointing at #cancel.

Pure CSS gallery is based on CSS variables. Images are lazy loaded. Next image is preloaded. Enter key press navigates to the next image (depends on browser).

Warning: for IE support, use background-image instead of --img in style attribute; no lazy-loading in this case.

Place links with class .pic inside div with class .gallery to generate gallery similar to pure CSS gallery.

Drawer

Use link pointing at element with .drawer class.
Optionally add .shift class to the drawer element for right side drawer.
Optionally use closing link pointing at #cancel inside target element.

Open drawer
Close Demo drawer

Topbar scroll



<div class="stick toggle">
  Topbar
</div>

Details

Warning: limited browser support.

Summary
Details

Utilities

Fetch fetch

Responsive class tools

Class depending on available width [data-class-mobile], [data-class-desktop].
Toggles on resize.

Mobile off on
Desktop off on

To make link change its URL when JavaScript is enabled, use [data-href] attribute.

Toggle class tools

Toggle class or other attribute a[href^="#"][data-parent][data-nodes][data-set][data-unset][data-attr][id].mem, :is(a, select, [type="checkbox"], [type="radio"])[data-parent][data-nodes][data-set][data-unset][data-attr][name/id].mem.

To remember state, add mem class to the control element and give it unique id or name.

To forget stored state, press Escape key three times in a row. This will clear the local storage.



Parent background


Red text links in this block
Invert page
Change type of the following input
(invert)

"AND" filter

yellow green shadow inverted
A
B
C
D
E
F
G
H

"OR" filter

red yellow green plain shadow inverted
A
B
C
D
E
F
G
H
I

Multi-parameter filter filter

Color (multiple select)

As links: any red yellow green

As checkboxes:


Style (single select)

As links: any plain shadow inverted

As radio:

As select:


Reset filter
Items
A
B
C
D
E
F
G
H
I

Items items

Items are nodes with class .item. Container is items' common parent. Containers with items can be nested. Hashed links inside items invoke actions on containing item. If link needs to be outside of the item, point at item with query selector in link's [data-item] attribute.

  • #copy copy item
  • #add copy item and clear inputs
  • #hide hide item
  • #del delete item unless it is last in the container
  • #delete delete item, even the last one
  • #delall delete all items inside container defined by [data-item]
  • #clear delete all nodes inside container defined by [data-item]
+ Span item
Div item
pop
POP
+ Name Value
+ Table row item
= + ×

Icons icons

Add icon before element's content .icon-xxx.
Replace element's content with icon .empty.icon-xxx > *. Provide [title] for accessibility.
Toggle icon on active link .act-icon-xxx.

Available icons

Display options




Customizing icons

In your document, provide SVG symbol with [id] containing prefixed icon name. It will override the icon with the same name, if such exists in iconset.

To explicitly set width, height and class of inserted icon (original or custom), provide values like this: class="icon-sun_128_64_bg-w_text-w".

Code highlight code

Add .language-xxx class to code element. Available language codes: html, css, js.

<!-- HTML -->
<a href="#top">Top</a>
/* CSS */
a .test {
	color: inherit;
	background: #c00;
	font: "PT Sans", sans-serif;
}
// JavaScript
let double = function(x){
	console.log('double', x);
	return 2 * x;
}

Code sample code

Add .code class to div element.

HTML code sample

Swipe swipe

Add .swipe class to the element. Allowed swipe directions are defined by the presence of data-swipe-up, data-swipe-down, data-swipe-left, data-swipe-right attributes. Non-empty values of these attributes are used as URLs.

To drag element while swiping, add also .drag class.

Swipe left and right, see URL hash
Drag in any direction,
see URL hash

Theme theme

Customize

Style

Colors

Inline

Buttons


Link Link Link a.btn a.btn a.btn.fit B

Blocks

Error Error

Warning Warning

Info Info

Yes Yes

No No

Bg

Border

Bg+Border

Status+Border

Button-like

Links and Icons

Span with generated icon: , , title, caption
Span with on-page icon: , , title, caption
Span with absent icon: , , title, caption
Simple links: Default OK
Hover links: Default OK
Buttons: Default OK
Table: Default OK

Invert

Inverted text link colors

Boxes

Media object

Some description

Link

Figure

Figure caption

Shaded box

No items yet

Click the button to create new item

Add new item

Overlay

Overlay 1
.invertInvert
.hoverHover effect
.letSemi-transparent
Overlay 2
.invertInvert
.row.center.cCentrify
Green

Overlay

Text link

Full height

Full

Tags (badges)

Tag Danger Warning Success Info Note
Tag Danger Warning Success Info Note

Bars (progress)

Progress
70%

Tooltips

Default
.cCentered
.shiftLeftwise
.bg-eDanger popup tooltip
Text tooltip text js-tooltip text
popup-tooltip
This is a popup tooltip
text

Custom scrollbar

Warning: limited browser support.

Standard scrollbar

...

...

...

...

...

...

...

Custom scrollbar

...

...

...

...

...

...

...

First item
Second item
Third item
Fourth item
Fifth item

Customization with CSS vars

  • --text - base text color; default: #000
  • --bg - base background color; default: #fff
  • --bg-pane - panel background color; default: rgba(0,0,0,.05)
  • --border - border style; default: thin solid rgba(0,0,0,.16)
  • --bg-hilite - highlighted element background; default: rgba(0,0,0,.05)
  • --text-hilite - highlighted element text color; default: inherit
  • --link - base link text color; default: #03b
  • --hover - hovered link text color; default: #07f
  • --visited - visited link text color; default: #80b
  • --rad - border radius in ems; default: .2
  • --gap - base gap for margins and paddings in ems; default: 1
  • --gap-rate - rate of vertical and horizontal gap; default: .5
  • --shade - shadow of overlay components; default: 0 .2em .8em rgba(0,0,0,.3)
Customize

Events

Use the following code to add event listener:

d1.listen(type, handler);
type
event type
handler
function which receives event object as its single argument
Event types
TypeDescriptionPluginEvent object properties
startStarting framework initializationcore
optionsOptions are setcore
pluginsAll plugins installedcore
pluginPlugin installedcorename, plugin
toggleElement visibility changedtogglen, on
activeToggler link activated or deactivatedtoggle, toolsn, on
switchElement's attribute switchedtoolsn, on, attr, val
requestBefore asynchronous requestfetchrequest
responseAsynchronous request completedfetchrequest
itemItem added or deleteditemsn, p, a
filterItems filter appliedfiltern, f
swipeSwipe executedswipen, dir

Reference

By category

ItemDescriptionUsed withModifications
.rowGriddiv ul .col-0 .col-2 .col-3.flip .let .margin .fit .center .roll .shift .stick .center .wrap .read .narrow
.grid-*Regular griddiv.let .flip .grid-1/2/3/4/6 .col-1/2/3/4-mobile .col-1/2/3-phone
tableTable.roll.hover .fit .let .shift .flip
ul, ol, dlList.fit .row
.treeTreeul.accordion .fit
button, a.btnButtonform submit button a span.bg-x .fit [data-target]
.flipResponsive.row .nav table
.hideVisibility by mediadiv.hide-mobile .hide-desktop .hide-print .hide-screen .hide-js .hide-nojs
.targetTogglediv.target-mobile .target-desktop .toggle .off .mem .act .inact
.popPopup.pop>.shift, .pop>.btn
.navNavigationul.flip .hover .let .bg .center .roll .nav.tabs.mem.act .inact .shift
.tabsTabsul.nav.tabs.mem
.dlgModal.close.dlg.c.let .dlg.full.center
.galGallerya .close[data-info]
.drawerDrawerdiv a.close.shift
.stickTopbar.toggle .let
.pickFile pickerinput[type="file"].drop [data-submit]
.swipeSwipebody, *.drag
.letSpecific modifications to components .row
.table
.nav
.dlg
.stick
.over
.shiftSomething about right side positioning .row > *
.nav > li
.grid
table
.pop
[data-tip]
.drawer
*
.itemRelative position*.over.let .close .filter
.iconSmall imageimg svg a button.is-on .is-off .icon-x
.barProgress bardiv.text-x
.fixFixed block.r .l
.text-*Text color* .invert .hint.text-e .text-w .text-i .text-y .text-n
.bgBackground color* .invert.back .bg-e .bg-w .bg-i .bg-y .bg-n .yel
.r .c .lAlign*, [data-tip]
.centerCentrify* .row .nav .full
.rollHorizontal scroll* .row .nav ul table.scroller
.smallSmall font*
.fitRemove formatting*.mar .pad .bord .rad .shade
.marVertical margin*
.padPadding*
.bordBorder*
.radBorder radius*
.shadeAdd shadow*
.nobrNo wrapping*
.scrollerCustom scrollbarhtml, body, *
.jsJavaScript is onbody .hide-js, .hide-nojs
.toggle, .toggle-mobile, .toggle-desktop
.off
.mem
.subinput
.input-tools
form.js-unhint
form.js-live-val
.gallery > a.pic
.filter
.icon-x
.empty.icon-x > *
.tip
.not-x, .or, .or-x
body.js-theme
body.trans
body.fade

Classes

  1. .act — active link
  2. .back — default background
  3. .bg — light background
  4. .bg-e — nominal "red" background
  5. .bg-i — nominal "blue" background
  6. .bg-n — nominal "gray" background
  7. .bg-w — nominal "yellow" background
  8. .bg-y — nominal "green" background
  9. .bord — add border
  10. .btn — button-like
  11. .c — centrify content inside block
  12. .center — centrify block itself
  13. .close — link to close togglable block
  14. .col-0 — grid cell with non-expanding width
  15. .col-2 — grid cell with 2x expanding width
  16. .col-3 — grid cell with 3x expanding width
  17. .dlg — card-like block
  18. .drag — drag while swiping
  19. .drop — file input with fullscreen dropzone
  20. .drawer — drawer
  21. .fit — remove formatting: margin, border, padding, shadow
  22. .fix — fixed in corner
  23. .flip — responsive component, stacked view on small screen
  24. .full — fullscreen block
  25. .gal — fullscreen gallery
  26. .grid-1/2/3/4/6-mobile/phone — regular grid
  27. .hide — hidden
  28. .hide-js — hidden only if JavaScript controls page
  29. .hide-desktop — hidden only on large screen
  30. .hide-mobile — hidden only on small screen
  31. .hide-nojs — hidden only if JavaScript does not control page
  32. .hide-print — hidden on print
  33. .hide-screen — hidden on screen
  34. .hover — highlight link or table row on hover
  35. .hint — form input hint
  36. .icon — small image
  37. .inact — inactive element
  38. .invert — invert colors
  39. .is-off — hidden inside active link
  40. .is-on — hidden inside not-active link
  41. .item — relative position
  42. .l — align content to the left
  43. .let — specific modifications to components
  44. .mar — add vertical margins
  45. .narrow — narrow block width
  46. .nav — horizontal dropdown navigation
  47. .nobr — prevent automatic text wrapping
  48. .off — hidden with JavaScript
  49. .over — overlay
  50. .pad — add padding
  51. .pick — file input with image preview and dropzone
  52. .pop — popup component wrapper
  53. .r — align content to the right
  54. .rad — rounded corners
  55. .read — block width for comfortable reading
  56. .roll — horizontal scrolling of contents
  57. .row — row of grid
  58. .shade — add shadow
  59. .shift — shift item of .row, .nav, .pop, .drawer to the right
  60. .small — small font size
  61. .stick — stick block to the top
  62. .swipe — swipe detection
  63. .tabs — tabs component
  64. .text-e — nominal "red" text color
  65. .text-i — nominal "blue" text color
  66. .text-n — nominal "gray" text color
  67. .text-w — nominal "yellow" text color
  68. .text-y — nominal "green" text color
  69. .toggle — visibility is controlled by JavaScript, shown by default
  70. .wrap — reasonable page width limit
  71. .yel — temporary highlight targeted block

Plugins

NameCategoryUsageBasicClassicFull
toggletogglecomponents+++
dialogtoggledialog+++
gallerytogglegallery+++
iconsdecoricons-++
fetchurlfetch-++
calendarformcalendar-++
lookupformlookup-++
editformedit-++
formformcheckboxes,
color input,
set value
-++
validformvalidate-++
tablextableinteractive table--+
toolsdecortoggle class,
responsive class
--+
swipeurlswipe--+
codedecorhighlight,
sample
--+
filteritemsfilters--+
itemsitemsitems--+
fliptabletableresponsive table--+
pickfileformfile picker--+
storeformstore inputs--+
scrolltoggletopbar--+
themedecortheme--+