@ui-doc/html-renderer 0.1.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.
Files changed (81) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +251 -0
  3. package/dist/HtmlCurlyBraceLexer.d.ts +25 -0
  4. package/dist/HtmlRenderer.d.ts +21 -0
  5. package/dist/InlineReader.d.ts +18 -0
  6. package/dist/NodeParser.d.ts +12 -0
  7. package/dist/TemplateLoader.d.ts +9 -0
  8. package/dist/assets/app.d.ts +1 -0
  9. package/dist/assets/src/base.d.ts +1 -0
  10. package/dist/assets/src/example.d.ts +1 -0
  11. package/dist/assets/src/sidebar.d.ts +1 -0
  12. package/dist/assets/ui-doc.cjs +81 -0
  13. package/dist/assets/ui-doc.cjs.map +1 -0
  14. package/dist/assets/ui-doc.css +359 -0
  15. package/dist/assets/ui-doc.css.map +1 -0
  16. package/dist/assets/ui-doc.js.map +1 -0
  17. package/dist/assets/ui-doc.min.css +1 -0
  18. package/dist/assets/ui-doc.min.js +1 -0
  19. package/dist/assets/ui-doc.mjs +79 -0
  20. package/dist/assets/ui-doc.mjs.map +1 -0
  21. package/dist/errors/HtmlRendererError.d.ts +3 -0
  22. package/dist/errors/HtmlRendererSyntaxError.d.ts +13 -0
  23. package/dist/errors/ParserError.d.ts +3 -0
  24. package/dist/errors/TagNodeError.d.ts +3 -0
  25. package/dist/errors/index.d.ts +4 -0
  26. package/dist/index.cjs +981 -0
  27. package/dist/index.cjs.map +1 -0
  28. package/dist/index.d.ts +9 -0
  29. package/dist/index.mjs +958 -0
  30. package/dist/index.mjs.map +1 -0
  31. package/dist/nodes/CommentNode.d.ts +6 -0
  32. package/dist/nodes/Node.d.ts +14 -0
  33. package/dist/nodes/TagNode.d.ts +4 -0
  34. package/dist/nodes/TemplateNode.d.ts +6 -0
  35. package/dist/nodes/index.d.ts +10 -0
  36. package/dist/nodes/tags/debug.d.ts +11 -0
  37. package/dist/nodes/tags/for.d.ts +13 -0
  38. package/dist/nodes/tags/if.d.ts +18 -0
  39. package/dist/nodes/tags/index.d.ts +3 -0
  40. package/dist/nodes/tags/page.d.ts +13 -0
  41. package/dist/nodes/tags/partial.d.ts +13 -0
  42. package/dist/nodes/tags/var.d.ts +13 -0
  43. package/dist/types/base.d.ts +1 -0
  44. package/dist/types/index.d.ts +6 -0
  45. package/dist/types/lexer.d.ts +23 -0
  46. package/dist/types/parser.d.ts +25 -0
  47. package/dist/types/reader.d.ts +35 -0
  48. package/dist/types/renderer.d.ts +14 -0
  49. package/dist/types/token.d.ts +40 -0
  50. package/dist/utils/index.d.ts +2 -0
  51. package/package.json +71 -0
  52. package/scripts/app.ts +8 -0
  53. package/scripts/src/base.ts +7 -0
  54. package/scripts/src/example.ts +31 -0
  55. package/scripts/src/sidebar.ts +46 -0
  56. package/styles/01_resets/initial.css +18 -0
  57. package/styles/01_resets/root.css +36 -0
  58. package/styles/01_resets/typography.css +67 -0
  59. package/styles/02_objects/background.css +7 -0
  60. package/styles/02_objects/control.css +25 -0
  61. package/styles/02_objects/margin.css +44 -0
  62. package/styles/02_objects/padding.css +44 -0
  63. package/styles/02_objects/text.css +3 -0
  64. package/styles/02_objects/width.css +16 -0
  65. package/styles/03_components/example-markup.css +31 -0
  66. package/styles/03_components/nav/list.css +42 -0
  67. package/styles/03_components/nav/main.css +39 -0
  68. package/styles/03_components/text-flow.css +5 -0
  69. package/styles/04_layouts/page.css +68 -0
  70. package/styles/index.css +17 -0
  71. package/templates/layouts/default.html +24 -0
  72. package/templates/layouts/example.html +29 -0
  73. package/templates/pages/default.html +14 -0
  74. package/templates/pages/index.html +3 -0
  75. package/templates/partials/code.html +5 -0
  76. package/templates/partials/content.html +7 -0
  77. package/templates/partials/example.html +5 -0
  78. package/templates/partials/nav-main.html +9 -0
  79. package/templates/partials/nav-sidebar.html +18 -0
  80. package/templates/partials/section-inner.html +5 -0
  81. package/templates/partials/section.html +1 -0
@@ -0,0 +1,67 @@
1
+ html {
2
+ font-size: var(--font-size-base);
3
+ -webkit-font-smoothing: antialiased;
4
+ -moz-osx-font-smoothing: grayscale;
5
+ text-size-adjust: 100%;
6
+ word-break: break-word;
7
+ }
8
+
9
+ body,
10
+ .font {
11
+ font-family: var(--font-family);
12
+ font-size: var(--font-size);
13
+ font-weight: var(--font-weight);
14
+ line-height: var(--font-line-height);
15
+ color: rgb(var(--font-color));
16
+ }
17
+
18
+ button,
19
+ input,
20
+ optgroup,
21
+ select,
22
+ textarea {
23
+ font-family: inherit;
24
+ }
25
+
26
+ h1,
27
+ h2,
28
+ h3,
29
+ h4,
30
+ h5,
31
+ h6 {
32
+ font-family: var(--headline-family, inherit);
33
+ font-size: calc(var(--font-size-normal) * var(--headline-scale, 1));
34
+ font-weight: var(--headline-weight, inherit);
35
+ line-height: var(--headline-line-height, inherit);
36
+ color: rgb(var(--headline-color, inherit));
37
+ }
38
+
39
+ h1 {
40
+ --headline-scale: 2.5;
41
+ }
42
+
43
+ h2 {
44
+ --headline-scale: 2;
45
+ }
46
+
47
+ h3 {
48
+ --headline-scale: 1.75;
49
+ }
50
+
51
+ h4 {
52
+ --headline-scale: 1.5;
53
+ }
54
+
55
+ a {
56
+ color: rgb(var(--link-color, inherit));
57
+ text-decoration: var(--link-decoration, none);
58
+ }
59
+
60
+ b,
61
+ strong {
62
+ --font-weight: var(--font-weight-bold);
63
+ }
64
+
65
+ small {
66
+ --font-size: var(--font-size-sm);
67
+ }
@@ -0,0 +1,7 @@
1
+ .bg {
2
+ --selection-bg-color: var(--font-color);
3
+ --selection-color: var(--bg-color);
4
+
5
+ color: rgb(var(--font-color));
6
+ background: rgb(var(--bg-color));
7
+ }
@@ -0,0 +1,25 @@
1
+ .control {
2
+ --px: 0;
3
+ --py: 0;
4
+
5
+ @extend .pxy;
6
+ @extend .font;
7
+
8
+ cursor: pointer;
9
+
10
+ display: inline-block;
11
+
12
+ text-align: center;
13
+ text-decoration: none;
14
+
15
+ appearance: none;
16
+ background: rgb(var(--control-bg-color, transparent));
17
+ border: none;
18
+ border-radius: unset;
19
+ outline: none;
20
+
21
+ &[aria-disabled="true"],
22
+ &:disabled {
23
+ cursor: not-allowed;
24
+ }
25
+ }
@@ -0,0 +1,44 @@
1
+ .margin,
2
+ .mxy {
3
+ margin: var(--mt, var(--size-normal)) var(--mr, var(--size-normal)) var(--mb, var(--size-normal))
4
+ var(--ml, var(--size-normal));
5
+ }
6
+
7
+ .mt {
8
+ margin-top: var(--mt, var(--size-normal));
9
+ }
10
+
11
+ .mr {
12
+ margin-right: var(--mr, var(--size-normal));
13
+ }
14
+
15
+ .mb {
16
+ margin-bottom: var(--mb, var(--size-normal));
17
+ }
18
+
19
+ .ml {
20
+ margin-left: var(--ml, var(--size-normal));
21
+ }
22
+
23
+ .mxy {
24
+ --mt: var(--my, var(--size-normal));
25
+ --mb: var(--my, var(--size-normal));
26
+ --ml: var(--mx, var(--size-normal));
27
+ --mr: var(--mx, var(--size-normal));
28
+ }
29
+
30
+ .my {
31
+ --mt: var(--my, var(--size-normal));
32
+ --mb: var(--my, var(--size-normal));
33
+
34
+ @extend .mt;
35
+ @extend .mb;
36
+ }
37
+
38
+ .mx {
39
+ --ml: var(--mx, var(--size-normal));
40
+ --mr: var(--mx, var(--size-normal));
41
+
42
+ @extend .ml;
43
+ @extend .mr;
44
+ }
@@ -0,0 +1,44 @@
1
+ .padding,
2
+ .pxy {
3
+ padding: var(--pt, var(--size-normal)) var(--pr, var(--size-normal)) var(--pb, var(--size-normal))
4
+ var(--pl, var(--size-normal));
5
+ }
6
+
7
+ .pt {
8
+ padding-top: var(--pt, var(--size-normal));
9
+ }
10
+
11
+ .pr {
12
+ padding-right: var(--pr, var(--size-normal));
13
+ }
14
+
15
+ .pb {
16
+ padding-bottom: var(--pb, var(--size-normal));
17
+ }
18
+
19
+ .pl {
20
+ padding-left: var(--pl, var(--size-normal));
21
+ }
22
+
23
+ .pxy {
24
+ --pt: var(--py, var(--size-normal));
25
+ --pb: var(--py, var(--size-normal));
26
+ --pl: var(--px, var(--size-normal));
27
+ --pr: var(--px, var(--size-normal));
28
+ }
29
+
30
+ .py {
31
+ --pt: var(--py, var(--size-normal));
32
+ --pb: var(--py, var(--size-normal));
33
+
34
+ @extend .pt;
35
+ @extend .pb;
36
+ }
37
+
38
+ .px {
39
+ --pl: var(--px, var(--size-normal));
40
+ --pr: var(--px, var(--size-normal));
41
+
42
+ @extend .pl;
43
+ @extend .pr;
44
+ }
@@ -0,0 +1,3 @@
1
+ .tc {
2
+ color: rgb(var(--font-color));
3
+ }
@@ -0,0 +1,16 @@
1
+ [class*="width-"] {
2
+ --width-calc: max(
3
+ var(--width-min-space-x, 32px),
4
+ calc((100% - var(--width-content, 1280px)) / 2)
5
+ );
6
+
7
+ padding-inline: var(--width-calc);
8
+ }
9
+
10
+ .width-content {
11
+ --width-content: 1280px;
12
+ }
13
+
14
+ .width-full {
15
+ --width: 100%;
16
+ }
@@ -0,0 +1,31 @@
1
+ .example,
2
+ .markup {
3
+ border: 1px solid rgb(var(--code-border-color, var(--border-color)));
4
+ }
5
+
6
+ .example,
7
+ .markup > .code > .hljs {
8
+ padding: 1em;
9
+ }
10
+
11
+ .example {
12
+ display: flex;
13
+
14
+ > iframe {
15
+ width: 100%;
16
+ border: none;
17
+ }
18
+ }
19
+
20
+ .markup {
21
+ font-size: var(--font-size-xs);
22
+
23
+ > .code {
24
+ margin: 0;
25
+ }
26
+ }
27
+
28
+ .example + .markup {
29
+ margin-top: 0;
30
+ border-top: none;
31
+ }
@@ -0,0 +1,42 @@
1
+ .nav-list {
2
+ --nav-list-item-px: var(--size-sm);
3
+ --nav-list-item-py: var(--size-xs);
4
+ --nav-list-item-border-color: var(--border-color);
5
+
6
+ text-align: left;
7
+
8
+ ul {
9
+ margin: 0;
10
+ padding: 0;
11
+ list-style: none;
12
+ }
13
+
14
+ > ul > li + li {
15
+ margin-top: var(--nav-list-root-item-space, var(--size-sm));
16
+ }
17
+
18
+ .control {
19
+ &.active {
20
+ --font-color: var(--accent-color);
21
+ }
22
+ }
23
+ }
24
+
25
+ .nav-list > ul > li > .control {
26
+ --py: var(--nav-list-item-py);
27
+ --pr: var(--nav-list-item-px);
28
+ --font-weight: var(--font-weight-bold);
29
+ --font-size: var(--font-size-md);
30
+ }
31
+
32
+ .nav-list > ul > li > ul > li > .control {
33
+ --py: var(--nav-list-item-py);
34
+ --px: var(--nav-list-item-px);
35
+
36
+ text-align: left;
37
+ border-left: 1px solid rgba(var(--nav-list-item-border-color) / var(--border-opacity, 0.1));
38
+
39
+ &:hover {
40
+ --border-opacity: 1;
41
+ }
42
+ }
@@ -0,0 +1,39 @@
1
+ .nav-main {
2
+ @extend .bg;
3
+ }
4
+
5
+ .nav-main > .bar {
6
+ height: var(--nav-main-height);
7
+
8
+ > .control.title {
9
+ --px: var(--nav-main-menu-item-px);
10
+ --py: var(--nav-main-menu-item-py);
11
+ --font-weight: var(--font-weight-bold);
12
+ }
13
+ }
14
+
15
+ .nav-main > .menu {
16
+ position: absolute;
17
+ top: 0;
18
+ right: calc(var(--width-calc) - var(--nav-main-menu-item-px));
19
+
20
+ display: flex;
21
+ flex-direction: row;
22
+
23
+ height: var(--nav-main-height);
24
+
25
+ > .control {
26
+ --px: var(--nav-main-menu-item-px);
27
+ --py: var(--nav-main-menu-item-py);
28
+ --font-size: var(--nav-main-menu-item-font-size);
29
+ --font-weight: var(--font-weight-bold);
30
+
31
+ &[aria-current] {
32
+ --font-color: var(--accent-color);
33
+ }
34
+
35
+ &:hover {
36
+ text-decoration: underline;
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,5 @@
1
+ .text-flow {
2
+ > * + * {
3
+ margin-top: var(--text-flow-space, 1em);
4
+ }
5
+ }
@@ -0,0 +1,68 @@
1
+ html {
2
+ scroll-behavior: smooth;
3
+ scrollbar-gutter: stable;
4
+ scroll-padding-top: var(--nav-main-height);
5
+ height: 100%;
6
+ }
7
+
8
+ html > body {
9
+ min-height: 100%;
10
+ }
11
+
12
+ body > header {
13
+ padding-top: var(--nav-main-height);
14
+
15
+ > .nav-main {
16
+ position: fixed;
17
+ z-index: 1000;
18
+ top: 0;
19
+ width: 100%;
20
+ }
21
+ }
22
+
23
+ body > main {
24
+ --main-sidebar-width: 25ch;
25
+ --main-content-sidebar-space: var(--size-xl);
26
+
27
+ position: relative;
28
+ }
29
+
30
+ body > main > .sidebar {
31
+ position: absolute;
32
+ top: 0;
33
+ left: var(--width-calc);
34
+
35
+ width: var(--main-sidebar-width);
36
+ height: 100%;
37
+
38
+ > .scroll {
39
+ position: sticky;
40
+ top: var(--nav-main-height);
41
+
42
+ overflow-y: auto;
43
+
44
+ height: 100%;
45
+ max-height: calc(100vh - var(--nav-main-height));
46
+ }
47
+ }
48
+
49
+ body > main > .content {
50
+ margin-left: calc(var(--main-sidebar-width) + var(--main-content-sidebar-space));
51
+
52
+ > .headline + .description {
53
+ margin-top: var(--size-md);
54
+ }
55
+
56
+ > section + section,
57
+ > section:first-of-type {
58
+ margin-top: var(--main-content-section-space, var(--size-lg));
59
+ }
60
+ }
61
+
62
+ footer {
63
+ --mt: var(--size-xl);
64
+
65
+ > .text {
66
+ text-align: right;
67
+ }
68
+ }
@@ -0,0 +1,17 @@
1
+ @import url("./01_resets/root.css");
2
+ @import url("./01_resets/initial.css");
3
+ @import url("./01_resets/typography.css");
4
+
5
+ @import url("./02_objects/background.css");
6
+ @import url("./02_objects/text.css");
7
+ @import url("./02_objects/padding.css");
8
+ @import url("./02_objects/margin.css");
9
+ @import url("./02_objects/width.css");
10
+ @import url("./02_objects/control.css");
11
+
12
+ @import url("./03_components/example-markup.css");
13
+ @import url("./03_components/text-flow.css");
14
+ @import url("./03_components/nav/main.css");
15
+ @import url("./03_components/nav/list.css");
16
+
17
+ @import url("./04_layouts/page.css");
@@ -0,0 +1,24 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>{{var:title}}</title>
6
+ <link rel="shortcut icon" href="./favicon.ico" />
7
+
8
+ {{var:styles}}
9
+ </head>
10
+ <body class="{{var:page.id}}">
11
+ <header>{{partial:nav-main}}</header>
12
+ <main class="width-content">
13
+ {{page:page.id page}}
14
+ </main>
15
+ <footer class="width-content py mt">
16
+ <div class="text">{{var:footerText}}</div>
17
+ </footer>
18
+
19
+ {{var:scripts}}
20
+ <script type="application/javascript">
21
+ hljs.highlightAll()
22
+ </script>
23
+ </body>
24
+ </html>
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>{{var:title}}</title>
6
+
7
+ {{var:styles}}
8
+ <style>
9
+ body {
10
+ margin: 0 !important;
11
+ padding: 0 !important;
12
+ overflow: hidden !important;
13
+ }
14
+ body > *:last-child {
15
+ margin-bottom: 0 !important;
16
+ }
17
+ body > *:first-child {
18
+ margin-top: 0 !important;
19
+ }
20
+ </style>
21
+ </head>
22
+ <body>
23
+ {{if:modifier}}<div class="{{var:modifier}}">{{/if}}
24
+ {{var:content}}
25
+ {{if:modifier}}</div>{{/if}}
26
+
27
+ {{var:scripts}}
28
+ </body>
29
+ </html>
@@ -0,0 +1,14 @@
1
+ <div class="content">
2
+ <h1 class="headline">{{var:title}}</h1>
3
+
4
+ {{if:description}}<div class="description">{{var:description}}</div>{{/if}}
5
+
6
+ {{for:sections}}
7
+ {{partial:section}}
8
+ {{/for}}
9
+ </div>
10
+ <aside class="sidebar">
11
+ <div class="scroll">{{partial:nav-sidebar}}</div>
12
+ </aside>
13
+
14
+
@@ -0,0 +1,3 @@
1
+ <h1 class="headline">{{var:title}}</h1>
2
+
3
+ {{if:description}}<div class="description">{{var:description}}</div>{{/if}}
@@ -0,0 +1,5 @@
1
+ {{if:type}}
2
+ <div class="markup">
3
+ <pre class="code"><code class="language-{{var:type}}">{{var:content escape}}</code></pre>
4
+ </div>
5
+ {{/if}}
@@ -0,0 +1,7 @@
1
+ <h{{var:titleLevel}} id="{{var:id}}">{{var:title}}</h{{var:titleLevel}}>
2
+
3
+ {{if:description}}{{var:description}}{{/if}}
4
+
5
+ {{partial:example example}}
6
+
7
+ {{partial:code code}}
@@ -0,0 +1,5 @@
1
+ {{if:type=="html"}}
2
+ <div data-example class="example">
3
+ <iframe src="{{var:src}}"></iframe>
4
+ </div>
5
+ {{/if}}
@@ -0,0 +1,9 @@
1
+ <nav class="nav-main width-content" aria-label="Main navigation" role="menu">
2
+ <div class="bar">
3
+ <a href="{{var:homeLink}}" class="control logo">{{var:logo}}</a>
4
+ <a href="{{var:homeLink}}" class="control title">{{var:name}}</a>
5
+ </div>
6
+ <div class="menu" role="menubar" id="nav-main-menu">
7
+ {{for:menu}}<a href="{{var:href}}" class="control" role="menuitem" tabindex="0"{{if:active}} aria-current="page"{{/if}}>{{var:text}}</a>{{/for}}
8
+ </div>
9
+ </nav>
@@ -0,0 +1,18 @@
1
+ <nav class="nav-list" data-sidebar="" aria-label="Page navigation">
2
+ <ul>
3
+ {{for:sections}}
4
+ <li>
5
+ <a class="control" tabindex="0" href="#{{var:id}}">{{var:title}}</a>
6
+ {{if:sections}}
7
+ <ul>
8
+ {{for:sections}}
9
+ <li>
10
+ <a class="control" tabindex="0" href="#{{var:id}}">{{var:title}}</a>
11
+ </li>
12
+ {{/for}}
13
+ </ul>
14
+ {{/if}}
15
+ </li>
16
+ {{/for}}
17
+ </ul>
18
+ </nav>
@@ -0,0 +1,5 @@
1
+ {{partial:content}}
2
+
3
+ {{for:sections}}
4
+ {{partial:section-inner}}
5
+ {{/for}}
@@ -0,0 +1 @@
1
+ <section class="text-flow">{{partial:section-inner}}</section>