@epa-wg/custom-element-dist 0.0.33 → 0.0.34

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 (175) hide show
  1. package/.claude/settings.local.json +18 -0
  2. package/.github/workflows/deploy.yml +59 -0
  3. package/.idea/copilot.data.migration.agent.xml +6 -0
  4. package/.idea/copilot.data.migration.ask.xml +6 -0
  5. package/.idea/copilot.data.migration.edit.xml +6 -0
  6. package/.idea/custom-element-dist.iml +2 -0
  7. package/.storybook/main.ts +20 -17
  8. package/.storybook/preview.ts +23 -23
  9. package/README.md +6 -4
  10. package/coverage/block-navigation.js +1 -1
  11. package/coverage/coverage-final.json +4 -3
  12. package/coverage/index.html +34 -19
  13. package/coverage/sorter.js +21 -7
  14. package/coverage/src/custom-element/coverage.svg +1 -1
  15. package/coverage/src/custom-element/custom-element.js/coverage.svg +1 -1
  16. package/coverage/src/custom-element/custom-element.js.html +435 -378
  17. package/coverage/src/custom-element/http-request.js/coverage.svg +1 -1
  18. package/coverage/src/custom-element/http-request.js.html +38 -17
  19. package/coverage/src/custom-element/index.html +26 -26
  20. package/coverage/src/custom-element/local-storage.js.html +1 -1
  21. package/coverage/src/custom-element/location-element.js.html +1 -1
  22. package/coverage/src/custom-element/module-url.js.html +1 -1
  23. package/coverage/src/index.html +1 -1
  24. package/coverage/src/material/theme/colors.js/coverage.svg +10 -0
  25. package/coverage/src/material/theme/colors.js.html +217 -0
  26. package/coverage/src/material/theme/coverage.svg +10 -0
  27. package/coverage/src/material/theme/index.html +116 -0
  28. package/coverage/src/mocks/handlers.ts.html +1 -1
  29. package/coverage/src/mocks/index.html +1 -1
  30. package/coverage/src/stories/frame.canvas.ts.html +1 -1
  31. package/coverage/src/stories/http-request.stories.ts.html +1 -1
  32. package/coverage/src/stories/index.html +1 -1
  33. package/coverage/src/stories/testStoryBook.ts.html +12 -12
  34. package/coverage/src/sum.ts.html +1 -1
  35. package/dist/{custom-element-WnOqmEOe.js → custom-element-BoYMoUtP.js} +193 -183
  36. package/dist/custom-element-BqtjrCRF.cjs +97 -0
  37. package/dist/custom-element-bundle.cjs +1 -1
  38. package/dist/custom-element-bundle.js +3 -3
  39. package/dist/demo/a.html +10 -3
  40. package/dist/demo/a.svg +26 -26
  41. package/dist/demo/html-template.html +4 -3
  42. package/dist/demo/s.xml +3856 -67
  43. package/dist/demo/s.xslt +13 -72
  44. package/dist/demo/s1.xml +3706 -0
  45. package/dist/http-request-DSaowcG1.cjs +1 -0
  46. package/dist/{http-request-BOvP4KTl.js → http-request-DTCzZ1gc.js} +15 -9
  47. package/package.json +2 -2
  48. package/public/demo/a.html +10 -3
  49. package/public/demo/a.svg +26 -26
  50. package/public/demo/html-template.html +4 -3
  51. package/public/demo/s.xml +3856 -67
  52. package/public/demo/s.xslt +13 -72
  53. package/public/demo/s1.xml +3706 -0
  54. package/src/custom-element/custom-element.js +28 -9
  55. package/src/custom-element/demo/a.html +10 -3
  56. package/src/custom-element/demo/a.svg +26 -26
  57. package/src/custom-element/demo/html-template.html +4 -3
  58. package/src/custom-element/demo/s.xml +3856 -67
  59. package/src/custom-element/demo/s.xslt +13 -72
  60. package/src/custom-element/demo/s1.xml +3706 -0
  61. package/src/custom-element/http-request.js +7 -0
  62. package/src/custom-element/ide/web-types-dce.json +1 -1
  63. package/src/custom-element/ide/web-types-xsl.json +1 -1
  64. package/src/material/angular.css +987 -987
  65. package/src/material/components/action.html +262 -0
  66. package/src/material/components/autocomplete.html +167 -239
  67. package/src/material/components/badge.html +238 -239
  68. package/src/material/components/dropdown.html +0 -1
  69. package/src/material/components/icon-link.html +160 -161
  70. package/src/material/components/icon.html +251 -252
  71. package/src/material/components/input.html +569 -570
  72. package/src/material/components/menu.html +235 -236
  73. package/src/material/components.html +157 -158
  74. package/src/material/demo.css +36 -36
  75. package/src/material/index.html +109 -110
  76. package/src/material/material.css +356 -356
  77. package/src/material/theme/Base-Principles.md +339 -0
  78. package/src/material/theme/README.md +298 -18
  79. package/src/material/theme/UI Domain Model in web applications.svg +1 -0
  80. package/src/material/theme/User Semantic Theme tokens.svg +1 -0
  81. package/src/material/theme/action-pending-poc.html +62 -0
  82. package/src/material/theme/actions-color.html +141 -0
  83. package/src/material/theme/colors-light.html +631 -0
  84. package/src/material/theme/colors-native.html +51 -0
  85. package/src/material/theme/colors-poc.html +66 -0
  86. package/src/material/theme/colors.html +297 -0
  87. package/src/material/theme/colors.js +44 -0
  88. package/src/material/theme/consumer-theme.css +745 -0
  89. package/src/material/theme/semantic.css +132 -132
  90. package/src/material/theme/style-bug.html +123 -0
  91. package/src/material/theme/theme-data.css +43 -0
  92. package/src/material/theme/theme-data.xhtml +2926 -0
  93. package/src/material/theme/todo.md +274 -0
  94. package/src/material/theme/tokens/action-colors.png +0 -0
  95. package/src/material/theme/tokens/cem-article-illustration-4x1-letterbox-2000x500.png +0 -0
  96. package/src/material/theme/tokens/cem-breakpoints.md +519 -0
  97. package/src/material/theme/tokens/cem-colors.md +715 -0
  98. package/src/material/theme/tokens/cem-consumerflow-typography-matrix.svg +198 -0
  99. package/src/material/theme/tokens/cem-coupling.md +372 -0
  100. package/src/material/theme/tokens/cem-data-vs-reading-numerals.svg +164 -0
  101. package/src/material/theme/tokens/cem-dimension.md +625 -0
  102. package/src/material/theme/tokens/cem-layering.md +562 -0
  103. package/src/material/theme/tokens/cem-m3-parity.md +343 -0
  104. package/src/material/theme/tokens/cem-responsive.md +238 -0
  105. package/src/material/theme/tokens/cem-shape.md +691 -0
  106. package/src/material/theme/tokens/cem-stroke-density-illustration-4to1-v3.svg +102 -0
  107. package/src/material/theme/tokens/cem-stroke.md +480 -0
  108. package/src/material/theme/tokens/cem-timing.md +198 -0
  109. package/src/material/theme/tokens/cem-typography-model-stack.svg +64 -0
  110. package/src/material/theme/tokens/cem-voice-fonts-typography.md +718 -0
  111. package/src/material/theme/tokens/cem-voice-ladder.svg +91 -0
  112. package/src/material/theme/tokens/chips.png +0 -0
  113. package/src/material/theme/tokens/columns-page.png +0 -0
  114. package/src/material/theme/tokens/initials.png +0 -0
  115. package/src/material/theme/tokens/nav-buttons.png +0 -0
  116. package/src/material/theme/tokens/script.png +0 -0
  117. package/src/material/theme/tokens/sufler.png +0 -0
  118. package/src/material/theme/tokens/typography-icons.png +0 -0
  119. package/src/mocks/versions.mock.ts +1 -1
  120. package/src/stories/__screenshots__/dom-merge.test.stories.ts/dom-merge-dom-merge-OrderPreservingOn2ndTransform-1.png +0 -0
  121. package/src/stories/__screenshots__/xslt-conditionals.test.stories.ts/xslt-conditionals-xslt-conditionals-MultipleIfOrderingWorkaround-1.png +0 -0
  122. package/src/stories/dom-merge.test.stories.ts +25 -1
  123. package/src/stories/xslt-conditionals.test.stories.ts +492 -0
  124. package/src/stories/xslt-if.test.stories.ts +89 -0
  125. package/storybook-static/assets/{Color-F6OSRLHC-Cbp293x2.js → Color-F6OSRLHC-CzTOSlqB.js} +1 -1
  126. package/storybook-static/assets/{Configure-BrFr4SLE.js → Configure-7GqRsAoJ.js} +1 -1
  127. package/storybook-static/assets/{DocsRenderer-CFRXHY34-DhHzJiIO.js → DocsRenderer-CFRXHY34-Duc5rSIm.js} +2 -2
  128. package/storybook-static/assets/{attributes.test.stories-Gg9LQTEK.js → attributes.test.stories-DYuxF8h1.js} +1 -1
  129. package/storybook-static/assets/{css.test.stories-B_3ltOrx.js → css.test.stories-LOmvINyb.js} +1 -1
  130. package/storybook-static/assets/{custom-element-CPnvJnn8.js → custom-element-Bwx7otrT.js} +6 -6
  131. package/storybook-static/assets/{dom-merge.test.stories-nQxcgLoM.js → dom-merge.test.stories-CEKhWjaS.js} +47 -6
  132. package/storybook-static/assets/entry-preview-BNCt9WBs.js +26 -0
  133. package/storybook-static/assets/{entry-preview-docs-Dwczwtsc.js → entry-preview-docs-CbF8-81D.js} +2 -2
  134. package/storybook-static/assets/{external-template.test.stories-DZ-rjnfd.js → external-template.test.stories-jHu0wsJ-.js} +1 -1
  135. package/storybook-static/assets/{form.test.stories-DQhPYtMj.js → form.test.stories-CUyUnmwP.js} +1 -1
  136. package/storybook-static/assets/{frame.canvas-ClTqYyMN.js → frame.canvas-E5n9h6j1.js} +1 -1
  137. package/storybook-static/assets/{handlers-CLkps6Nz.js → handlers-F7GUfMqr.js} +1 -1
  138. package/storybook-static/assets/http-request-BWeEEBkP.js +1 -0
  139. package/storybook-static/assets/{http-request.stories-jo0f73nw.js → http-request.stories-wyX5-QOv.js} +1 -1
  140. package/storybook-static/assets/{iframe-CZwRpnn9.js → iframe-BS_DPWl0.js} +11 -11
  141. package/storybook-static/assets/{index-Dr4PwNfd.js → index-CGuyH0k-.js} +87 -87
  142. package/storybook-static/assets/{index-CJQtnF9V.js → index-DB7LLObI.js} +1 -1
  143. package/storybook-static/assets/index-DO1nmyvI.js +11 -0
  144. package/storybook-static/assets/{index-B68YUdzy.js → index-V1EGs-wm.js} +3 -3
  145. package/storybook-static/assets/{local-storage.test.stories-uA5EKRPf.js → local-storage.test.stories-BxOhsf1k.js} +1 -1
  146. package/storybook-static/assets/{location-element.test.stories-Cu-6Elcg.js → location-element.test.stories-DqhvvUoa.js} +1 -1
  147. package/storybook-static/assets/{module-url.test.stories-CD_wusXQ.js → module-url.test.stories-C1gG9G7Y.js} +1 -1
  148. package/storybook-static/assets/{preview-BFlNN3Wj.js → preview-Bn8igYMp.js} +1 -1
  149. package/storybook-static/assets/{preview-CuCH40jj.js → preview-Cwy1XFu2.js} +2 -2
  150. package/storybook-static/assets/{preview-Cm4PPhHS.js → preview-D6sehqkw.js} +1 -1
  151. package/storybook-static/assets/{set-url.test.stories-CY7B9BVZ.js → set-url.test.stories-BKQNdknJ.js} +1 -1
  152. package/storybook-static/assets/{slice-events.test.stories-BVnPXm6e.js → slice-events.test.stories-ChqULCeA.js} +1 -1
  153. package/storybook-static/assets/{slots.test.stories-Dxsa9KdA.js → slots.test.stories-BlyLoCRe.js} +1 -1
  154. package/storybook-static/assets/{version-select.test.stories-Buga1PAa.js → version-select.test.stories-CPGSh1tR.js} +1 -1
  155. package/storybook-static/assets/xslt-conditionals.test.stories-YC6QPqWZ.js +633 -0
  156. package/storybook-static/assets/xslt-if.test.stories-BRSWy2-x.js +71 -0
  157. package/storybook-static/demo/a.html +10 -3
  158. package/storybook-static/demo/a.svg +26 -26
  159. package/storybook-static/demo/html-template.html +4 -3
  160. package/storybook-static/demo/s.xml +3856 -67
  161. package/storybook-static/demo/s.xslt +13 -72
  162. package/storybook-static/demo/s1.xml +3706 -0
  163. package/storybook-static/iframe.html +2 -2
  164. package/storybook-static/index.json +1 -1
  165. package/storybook-static/project.json +1 -1
  166. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js +69 -66
  167. package/storybook-static/sb-addons/essentials-docs-3/manager-bundle.js +62 -59
  168. package/dist/custom-element-6slVaFEs.cjs +0 -97
  169. package/dist/http-request-DPrY7mGh.cjs +0 -1
  170. package/storybook-static/assets/attributes.test.stories-CzWkKw0e.js +0 -1
  171. package/storybook-static/assets/entry-preview-DHVXbf3x.js +0 -26
  172. package/storybook-static/assets/external-template.test.stories-BivZqBTp.js +0 -1
  173. package/storybook-static/assets/http-request-DNq59pnj.js +0 -1
  174. package/storybook-static/assets/index-BwkS7JH_.js +0 -8
  175. package/storybook-static/assets/module-url.test.stories-CTjUAk3J.js +0 -1
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Native colors in Consumer Semantic Theme</title>
6
+ <style>
7
+
8
+ figure>table {
9
+ tbody>tr {
10
+ background-image: repeating-linear-gradient(45deg, transparent, transparent 0.25em, grey 0.25em, green 0.5em);
11
+ td{ background-image: linear-gradient(to right, lightgreen, lightyellow); }
12
+ td:first-of-type{ background-image: none; padding: 0 1em ; }
13
+ }
14
+ }
15
+ </style>
16
+ </head>
17
+ <body>
18
+
19
+ <figure class="table-container">
20
+ <figcaption><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/system-color"> Native browser colors </a>
21
+ </figcaption>
22
+ <table class="dashed-diagonal-background" style="background-color: lightgreen; ">
23
+ <thead>
24
+ <tr>
25
+ <th>Sample</th><th>background </th><th>text color </th><th>Description</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr><td style="background-color: AccentColor; color:AccentColorText " >AccentColor </td><td><code>AccentColor </code></td><td><code> AccentColorText </code></td> <td>Background of accented user interface controls. </td> </tr>
30
+ <tr><td style="background-color: AccentColorText; color:AccentColor " >AccentColorText </td><td><code>AccentColorText </code></td><td><code> AccentColor </code></td><td>Text of accented user interface controls. </td></tr>
31
+ <tr><td style="background-color: ActiveText; color:Canvas " >ActiveText </td><td><code>ActiveText </code></td><td><code> Canvas </code></td><td>Text of active links. </td></tr>
32
+ <tr><td style="background-color: Highlight; color:HighlightText " >Highlight </td><td><code>Highlight </code></td><td><code> HighlightText </code></td><td>Background of selected items. </td></tr>
33
+ <tr><td style="background-color: LinkText; color:Canvas " >LinkText </td><td><code>LinkText </code></td><td><code> Canvas </code></td><td>Text of non-active, non-visited links. </td></tr>
34
+ <tr><td style="background-color: SelectedItem; color:SelectedItemText " >SelectedItem </td><td><code>SelectedItem </code></td><td><code> SelectedItemText </code></td><td>Background of selected items, for example, a selected checkbox. </td></tr>
35
+ <tr><td style="background-color: VisitedText; color:Canvas " >VisitedText </td><td><code>VisitedText </code></td><td><code> Canvas </code></td><td>Text of visited links. </td></tr>
36
+ <tr><td style="background-color: Mark; color:MarkText " >Mark </td><td><code>Mark </code></td><td><code> MarkText </code></td><td>Background of text that has been specially marked (such as by the HTML <code>mark</code> element). </td></tr>
37
+ <tr><td style="background-color: CanvasText; color:Canvas " >CanvasText </td><td><code>CanvasText </code></td><td><code> Canvas </code></td><td>Text color in application content or documents. </td></tr>
38
+ <tr><td style="background-color: ButtonText; color:Canvas " >ButtonText </td><td><code>ButtonText </code></td><td><code> Canvas </code></td><td>Text color of controls. </td></tr>
39
+ <tr><td style="background-color: FieldText; color:Canvas " >FieldText </td><td><code>FieldText </code></td><td><code> Canvas </code></td><td>Text in input fields. </td></tr>
40
+ <tr><td style="background-color: MarkText; color:Mark " >MarkText </td><td><code>MarkText </code></td><td><code> Mark </code></td><td>Text that has been specially marked (such as by the HTML <code>mark</code> element). </td></tr>
41
+ <tr><td style="background-color: ButtonBorder; color:Canvas " >ButtonBorder </td><td><code>ButtonBorder </code></td><td><code> Canvas </code></td><td>Base border color of controls. </td></tr>
42
+ <tr><td style="background-color: GrayText; color:ButtonFace " >GrayText </td><td><code>GrayText </code></td><td><code> ButtonFace </code></td><td>Text color for disabled items (for example, a disabled control). </td></tr>
43
+ <tr><td style="background-color: ButtonFace; color:CanvasText " >ButtonFace </td><td><code>ButtonFace </code></td><td><code> CanvasText </code></td><td>Background color of controls. </td></tr>
44
+ <tr><td style="background-color: Canvas; color:CanvasText " >Canvas </td><td><code>Canvas </code></td><td><code> CanvasText </code></td><td>Background of application content or documents. </td></tr>
45
+ <tr><td style="background-color: Field; color:CanvasText " >Field </td><td><code>Field </code></td><td><code> CanvasText </code></td><td>Background of input fields. </td></tr>
46
+ <tr><td style="background-color: HighlightText; color:Highlight " >HighlightText </td><td><code>HighlightText </code></td><td><code> Highlight </code></td><td>Text color of selected items. </td></tr>
47
+ <tr><td style="background-color: SelectedItemText; color:SelectedItem " >SelectedItemText</td><td><code>SelectedItemText</code></td><td><code> SelectedItem </code></td><td>Text of selected items. </td></tr>
48
+ </tbody></table>
49
+ </figure>
50
+ </body>
51
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en"
3
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
5
+ xmlns:exslt="http://exslt.org/common"
6
+ >
7
+ <head>
8
+ <meta charset="UTF-8">
9
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
10
+ <title>color tokens in css - custom-element - Material Design</title>
11
+ <meta name="viewport" content="width=device-width, initial-scale=1">
12
+
13
+ </head>
14
+ <body>
15
+ <style>
16
+ :root{
17
+ --bg: light-dark(blue, pink);
18
+ .dark{ color-scheme: dark; }
19
+ .light{ color-scheme: light; }
20
+ button{ background-color: var(--bg)}
21
+ .native{
22
+ --bg: Highlight; /* should be single value from system palette, light mode switch implied */
23
+ }
24
+ .contrast{
25
+ --bg: light-dark(green, violet); /* should be single value from system palette */
26
+ }
27
+ :root {
28
+ --palette-comfort: #FFFFFF; /* white */
29
+ --palette-calm: #1A1A1A; /* near-black */
30
+ --palette-trust: #0078D4; /* vibrant blue */
31
+ --palette-danger: #D13438; /* vivid red */
32
+ --palette-creativity: #8764B8; /* muted purple */
33
+ --palette-enthusiasm: #FF8C00; /* rich orange */
34
+ --palette-conservative: #8E7C6F; /* earthy taupe */
35
+ }
36
+ }
37
+ </style>
38
+
39
+ <button>def</button>
40
+ <button style="color-scheme: only light"> color-scheme: only light </button>
41
+ <button style="color-scheme: only dark" > color-scheme: only dark </button>
42
+ <button class="light"> class="light" </button>
43
+ <button class="dark" > class="dark" </button>
44
+
45
+ <fieldset class="native">
46
+ <legend>native</legend>
47
+
48
+ <button>def</button>
49
+ <button style="color-scheme: only light"> color-scheme: only light </button>
50
+ <button style="color-scheme: only dark" > color-scheme: only dark </button>
51
+ <button class="light"> class="light" </button>
52
+ <button class="dark" > class="dark" </button>
53
+
54
+ </fieldset>
55
+ <fieldset class="contrast">
56
+ <legend>contrast</legend>
57
+
58
+ <button>def</button>
59
+ <button style="color-scheme: only light"> color-scheme: only light </button>
60
+ <button style="color-scheme: only dark" > color-scheme: only dark </button>
61
+ <button class="light"> class="light" </button>
62
+ <button class="dark" > class="dark" </button>
63
+
64
+ </fieldset>
65
+ </body>
66
+ </html>
@@ -0,0 +1,297 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en"
3
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
5
+ xmlns:exslt="http://exslt.org/common"
6
+ >
7
+ <!-- https://simulationlabs.com/github/EPA-WG/custom-element-dist/tree/develop/src/material/theme/colors.html -->
8
+ <head>
9
+ <meta charset="UTF-8">
10
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
11
+ <title>Colors - custom-element - Material Design</title>
12
+ <meta name="viewport" content="width=device-width, initial-scale=1">
13
+
14
+ <link href="../../custom-element/demo/wc-square.svg" rel="icon"/>
15
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
16
+ <link crossorigin="anonymous" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
17
+ integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" rel="stylesheet"/>
18
+
19
+ <script type="importmap">
20
+ {
21
+ "imports": {
22
+ "@epa-wg/": "../../"
23
+ }
24
+ }
25
+ </script>
26
+ <script src="../../custom-element/module-url.js" type="module"></script>
27
+ <script src="../../custom-element/custom-element.js" type="module"></script>
28
+ <style>
29
+ @import "../angular.css";
30
+ @import "../material.css";
31
+ @import "../theme/semantic.css";
32
+ @import "../theme/consumer-theme.css";
33
+ @import "../demo.css";
34
+ main {
35
+ &>p{ min-width: 90%; }
36
+ &>aside, &>h1{ padding-left: 1rem; }
37
+ html-demo-element
38
+ { overflow: visible;
39
+ [slot="legend"]{ border-radius: 1rem 1rem 0 0; }
40
+ [slot="description"]{ padding: 0 1rem 1rem 1rem; dd{ padding: 0 !important;margin: 0; }}
41
+ [slot="description"] dd{ padding: 0; }
42
+ }
43
+ var{ color: darkgreen; font-weight: bold; }
44
+ }
45
+ cem-icon{ margin: 1rem; }
46
+ h1{ font-size: large; }
47
+
48
+ </style>
49
+ <script type="module" src="./colors.js"></script>
50
+ </head>
51
+ <!--
52
+ ToDO
53
+ * docs w/ how to use
54
+ -->
55
+ <body>
56
+ <custom-element hidden src="../components/icon.html#cem-icon" tag="cem-icon"></custom-element>
57
+ <custom-element hidden src="../components/icon-link.html#cem-icon-link" tag="cem-icon-link"></custom-element>
58
+
59
+ <header class="cem-theme-teal">
60
+ <custom-element src="../index.html#nav-head"></custom-element>
61
+ </header>
62
+ <main>
63
+ <aside>
64
+ <p> Discussion:
65
+ <a href="https://github.com/EPA-WG/custom-element-dist/discussions/14">Consumer Semantic Theme tokens</a>.
66
+ </p>
67
+ </aside>
68
+ <h1>Action tokens </h1>
69
+ <custom-element>
70
+ <template>
71
+ <style>
72
+ header{
73
+ position: sticky; top: 0;
74
+ display: flex; gap: 1rem; flex-direction: column;
75
+ color: lightblue;
76
+ background: rgba(0, 0, 0, 0.75);
77
+ &>*{ display: flex; gap: 2rem; align-items: center; label{ display: flex;} }
78
+ }
79
+ th i, td i,.small{font-size:x-small;}
80
+ td{ padding: 0.5rem; &:first-of-type{ padding-left: 0 }}
81
+ summary{ padding: 0.5rem 0;
82
+ &:hover{
83
+ background-color: cyan;
84
+ cursor: pointer;
85
+ }
86
+ }
87
+ section[data-theme]{ padding: 1rem; }
88
+ </style>
89
+
90
+ <cem-css-rules slice="rules"></cem-css-rules>
91
+
92
+ <section>
93
+ <header>
94
+ <div>show
95
+ <label><input slice="filter-emotional" value="emotional-palette" title="trigger visibility of emotional palette" type="checkbox" checked /> emotional palette </label>
96
+ <label><input slice="filter-state" value="state-pallette" title="trigger visibility of state variations palette" type="checkbox" checked /> state variations </label>
97
+ </div>
98
+ <div> state tokens with
99
+ <label><input slice="filter-colors" value="color" title="uses background/text color" type="checkbox" checked /> color </label>
100
+ <label><input slice="filter-outline" value="outline" title="uses outline" type="checkbox" /> outline </label>
101
+ <label><input slice="filter-font" value="font" title="uses font" type="checkbox" /> font </label>
102
+ <label><input slice="filter-marker" value="marker" title="uses marker like *" type="checkbox" /> marker </label>
103
+ <label><input slice="filter-bend" value="bend" title="uses marker like *" type="checkbox" /> bend </label>
104
+ </div>
105
+ </header>
106
+ <variable name="cem-theme">
107
+ <option value="native"> System driven colors</option>
108
+ <option value="light"> light</option>
109
+ <option value="dark"> dark</option>
110
+ <option value="contrast-light"> hight-contrast light</option>
111
+ <option value="contrast-dark"> high-contrast dark</option>
112
+ </variable>
113
+ <variable name="cem-emotional-tokens">
114
+ <option value="comfort" warms="cool" sample="white" system="Canvas" > light scene color, the scene is full of object. Purity, innocence, cleanliness, peace, coldness or emptiness </option>
115
+ <option value="calm" warms="cool" sample="black" system="CanvasText" > dark scene color, few objects around. Mystery, elegance, power, evil, mourning, formality, security </option>
116
+ <option value="trust" warms="cool" sample="blue" system="Highlight w/ HighlightText" > primary action background, text color for `focus-invert` </option>
117
+ <option value="danger" warms="warm" sample="red" system="N/A , red" > Passion, excitement, love, anger, energy, danger </option>
118
+ <option value="creativity" warms="cool" sample="cyan,purple" system="ButtonFace w/ ButtonText" > Luxury, creativity, royalty, mystery, but also grief or melancholy </option>
119
+ <option value="enthusiasm" warms="warm" sample="orange,yellow,pink" system="Mark w/ MarkText" > Warmth, enthusiasm, happiness, optimism, energy </option>
120
+ <option value="conservative" warms="neutral" sample="brown,tan,beige,grey" system="GrayText" > Natural, earthy, conservative, but also bland or boring </option>
121
+ </variable>
122
+ <variable name="cem-action-intent">
123
+ <option value="explicit" base-color="white" > user explicitly/intentionally clicks or activates </option>
124
+ <option value="primary" base-color="black" > default, confirmatory, implicit. Triggered by ENTER </option>
125
+ <option value="contextual" base-color="blue" > integrated within a specific context, Toolbar/menu </option>
126
+ <option value="alternate" base-color="red" > triggering not usual alternative flow </option>
127
+ <option value="destructive" base-color="red" > risky, potentially harmful, requires caution </option>
128
+ </variable>
129
+
130
+ <variable name="cem-action-state">
131
+ <option value="disabled" tokens="color font marker" complimentary-token="color-text" > Disabled </option>
132
+ <option value="readonly" tokens="color outline font marker" complimentary-token="color-text" > Readonly, underline is grayed out in Material Design </option>
133
+ <option value="editable" tokens="color outline font marker" complimentary-token="color-text" > Editable, underlined in Material Design </option>
134
+ <option value="required" tokens=" outline font marker" complimentary-token="color-text" > Required, often marked by star suffix </option>
135
+ <option value="default" tokens="color outline font marker" complimentary-token="color-text" > button is outlined, input fields underlined in Material Design </option>
136
+ <option value="indeterminate" tokens="color outline font marker" complimentary-token="color-text" > No Value available, "select all" checkbox when not all of its sub-controls are checked. </option>
137
+ <option value="target" tokens=" outline font marker" complimentary-token="color-text" > Marked to outline the element is pointed by URL. </option>
138
+ <option value="focus" tokens=" outline font marker" complimentary-token="color-text" > Outlined to reflect the input is focused. Buttons do not show the focus outline </option>
139
+ <option value="hover" tokens="color outline font marker" complimentary-token="color-text" > Outline to reflect the focus is make by keyboard navigation, visible even in actions/buttons </option>
140
+ <option value="selected" tokens="color font marker" complimentary-token="color-text" > Selected item(menu, radio), checked radio, etc. </option>
141
+ <option value="active" tokens="color outline font marker" complimentary-token="color-text" > Pressed action element state, darkest background with alternate text color to emphasize the action follows immediately. </option>
142
+ <option value="pending" tokens="color outline font marker" complimentary-token="color-text" > Element state after active when element should not be used as the result of previous action is still in progress. </option>
143
+ </variable>
144
+ <variable name="slices" select="/datadom/slice"></variable>
145
+
146
+ <for-each select="exsl:node-set($cem-theme)/*">
147
+ <section data-theme="cem-theme-{@value}">
148
+ <h1><a href="#cem-theme-{@value}" id="#cem-theme-{@value}">Theme <var>cem-theme-{@value}</var></a></h1>
149
+ <xhtml:table >
150
+ <xsl:if test="not($slices/filter-emotional = 'emotional-palette' )">
151
+ <attribute name="hidden"></attribute>
152
+ </xsl:if>
153
+
154
+ <xhtml:thead>
155
+ <xhtml:tr>
156
+ <xhtml:td class="small"> emotional token </xhtml:td>
157
+ <for-each select="exsl:node-set($cem-emotional-tokens)/*">
158
+ <xhtml:th style="min-width:6rem" title="{.}" >{@value}</xhtml:th>
159
+ </for-each>
160
+ </xhtml:tr>
161
+ </xhtml:thead>
162
+ <xhtml:tbody>
163
+ <xhtml:tr>
164
+ <xhtml:td class="small">default background &amp text</xhtml:td>
165
+ <for-each select="exsl:node-set($cem-emotional-tokens)/*">
166
+ <variable name="state" select="@value"></variable>
167
+ <variable name="state-description" select="."></variable>
168
+
169
+ <xhtml:td
170
+ title="{.}
171
+ warms: {@warms}
172
+ sample: {@sample}
173
+ system color: {@system}
174
+ "
175
+ class="small"
176
+ style="
177
+ background-color:var(--cem-palette-{@value});
178
+ color:var(--cem-palette-{@value}-text);
179
+ "
180
+ > ⬤
181
+ --cem-palette-{@value} <br/>
182
+ --cem-palette-{@value}-text
183
+ </xhtml:td>
184
+ </for-each>
185
+ </xhtml:tr>
186
+ <xhtml:tr>
187
+ <xhtml:td class="small">extreme deviation</xhtml:td>
188
+ <for-each select="exsl:node-set($cem-emotional-tokens)/*">
189
+ <variable name="state" select="@value"></variable>
190
+ <variable name="state-description" select="."></variable>
191
+
192
+ <xhtml:td
193
+ title="{.}
194
+ warms: {@warms}
195
+ sample: {@sample}
196
+ system color: {@system}
197
+ "
198
+ class="small"
199
+ style="
200
+ background-color:var(--cem-palette-{@value}-x);
201
+ color:var(--cem-palette-{@value}-text-x);
202
+ "
203
+ > ⬤
204
+ --cem-palette-{@value}-x <br/>
205
+ --cem-palette-{@value}-text-x
206
+ </xhtml:td>
207
+ </for-each>
208
+ </xhtml:tr>
209
+
210
+ </xhtml:tbody>
211
+ </xhtml:table>
212
+ <xhtml:table>
213
+ <xsl:if test="not($slices/filter-state = 'state-pallette' )">
214
+ <attribute name="hidden"></attribute>
215
+ </xsl:if>
216
+ <xhtml:thead>
217
+ <xhtml:tr>
218
+ <xhtml:th> <i>tokens</i> <br/> state</xhtml:th>
219
+ <for-each select="exsl:node-set($cem-action-intent)/*">
220
+ <xhtml:th style="min-width:6rem" title="{.}">{@value}</xhtml:th>
221
+ </for-each>
222
+ </xhtml:tr>
223
+ </xhtml:thead>
224
+ <xhtml:tbody>
225
+ <for-each select="exsl:node-set($cem-action-state)/*">
226
+ <if test="
227
+ ($slices/filter-colors != '' and contains(@tokens, $slices/filter-colors ) ) or
228
+ ($slices/filter-outline != '' and contains(@tokens, $slices/filter-outline) ) or
229
+ ($slices/filter-font != '' and contains(@tokens, $slices/filter-font ) ) or
230
+ ($slices/filter-marker != '' and contains(@tokens, $slices/filter-marker ) )
231
+ ">
232
+ <xhtml:tr>
233
+ <variable name="state" select="@value"></variable>
234
+ <variable name="state-description" select="."></variable>
235
+
236
+ <xhtml:td
237
+ title="{.}
238
+ tokens: {@tokens}
239
+ ">{@value} <br/> <i>{@tokens}<small>
240
+ </xhtml:td>
241
+ <for-each select="exsl:node-set($cem-action-intent)/*">
242
+ <variable name="intent" select="@value"></variable>
243
+ <xhtml:td style="
244
+ background-color: var(--cem-action-{ $intent }-{ $state }-background);
245
+ color: var(--cem-action-{ $intent }-{ $state }-text);
246
+ font-size:x-small;
247
+ padding:0.5em"
248
+ title="{@value} : {.}
249
+ {$state} : {$state-description}
250
+ "
251
+ >
252
+ --cem-action-{ $intent }-{ $state }-background <br/>
253
+ ⬤ --cem-action-{ $intent }-{ $state }-color
254
+ </xhtml:td>
255
+ </for-each>
256
+ </xhtml:tr>
257
+ </if>
258
+ </for-each>
259
+ </xhtml:tbody>
260
+ </xhtml:table>
261
+ </section>
262
+
263
+ </for-each>
264
+
265
+ </section>
266
+ <hr/>
267
+ <h1>ToDo</h1>
268
+ <section>
269
+ <pre>
270
+ * color matrix per theme to include base shape - action, input, etc.
271
+ * bend
272
+ * dimensions
273
+ </pre>
274
+ </section>
275
+ <h1>All variables</h1>
276
+ <for-each select="//*[starts-with(./*/@dce-object-name, '--')]">
277
+ <details>
278
+ <summary>{@dce-object-name}</summary>
279
+ <for-each select="*">
280
+ <button style="background-color: {.}" title="{@dce-object-name} : {.}"></button>
281
+ </for-each>
282
+ </details>
283
+ </for-each>
284
+ <hr/>
285
+ </template>
286
+ </custom-element>
287
+
288
+
289
+ </main>
290
+ <footer>
291
+ <hr/>
292
+ <a href="../../LICENSE"> Code and documentation licensed under an Apache License 2.0 </a>
293
+ </footer>
294
+ <script src="https://unpkg.com/html-demo-element@1.0.8/html-demo-element.js" type="module"></script>
295
+
296
+ </body>
297
+ </html>
@@ -0,0 +1,44 @@
1
+ import ModuleUrl from "../../custom-element/module-url.js";
2
+
3
+ function cssRule2Obj( parent, /* CSSRule | CSSStyleSheet | CSSStyleRUle | CSSKeyframesRule | CSSNestedDeclarations */ s, j )
4
+ {
5
+ const childrenRules = (s instanceof CSSNestedDeclarations) ? parent: {};
6
+ if( s.cssRules)
7
+ [...s.cssRules].forEach( (r, i) => cssRule2Obj( childrenRules, r, i ) );
8
+
9
+ if( s.style )
10
+ { [...s.style].forEach( s1=>{ childrenRules[s1] = s.style.getPropertyValue(s1) }) }
11
+
12
+ if( s.styleSheet )
13
+ cssRule2Obj( childrenRules, s.styleSheet, 0 );
14
+
15
+ let key = s.selectorText ||s.keyText || s.href|| s.ownerNode?.id|| s.ownerNode?.tagName;
16
+ switch( s.type ){
17
+ case 0: key = undefined; break; //CSSNestedDeclarations
18
+ case CSSRule.KEYFRAMES_RULE: key = `@keyframes ${s.name}`; break;
19
+ case CSSRule.FONT_FACE_RULE: key = `@font-face`; break;
20
+ case CSSRule.IMPORT_RULE: key = s.cssText; break;
21
+ case CSSRule.MEDIA_RULE: key = `@media ${s.conditionText}`; break;
22
+ }
23
+
24
+ if(key)
25
+ { if( parent[key] )
26
+ key = key+'-'+j;
27
+ parent[key] = childrenRules;
28
+ }
29
+ return parent;
30
+ }
31
+
32
+ export class CssRulesElement extends HTMLElement
33
+ {
34
+ connectedCallback()
35
+ {
36
+ const allRules = {};
37
+ [ ...document.styleSheets ].forEach( ((s,i) => { try{
38
+ cssRule2Obj( allRules, s,i) }catch(_){}}));
39
+
40
+ this.value = allRules;
41
+ this.dispatchEvent( new Event('change') );
42
+ }
43
+ }
44
+ window.customElements.define( 'cem-css-rules', CssRulesElement );