@stackific/md3 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +17 -0
  3. package/README.md +316 -0
  4. package/THIRD-PARTY-NOTICES +40 -0
  5. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  6. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  7. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  8. package/dist/fonts/material-symbols-subset.woff2 +0 -0
  9. package/dist/md3.css +1 -0
  10. package/dist/md3.js +621 -0
  11. package/dist/shapes/arch.svg +1 -0
  12. package/dist/shapes/arrow.svg +1 -0
  13. package/dist/shapes/boom.svg +1 -0
  14. package/dist/shapes/bun.svg +1 -0
  15. package/dist/shapes/burst.svg +1 -0
  16. package/dist/shapes/circle.svg +1 -0
  17. package/dist/shapes/clamshell.svg +1 -0
  18. package/dist/shapes/diamond.svg +1 -0
  19. package/dist/shapes/fan.svg +1 -0
  20. package/dist/shapes/flower.svg +1 -0
  21. package/dist/shapes/gem.svg +1 -0
  22. package/dist/shapes/ghost-ish.svg +1 -0
  23. package/dist/shapes/heart.svg +1 -0
  24. package/dist/shapes/leaf-clover4.svg +1 -0
  25. package/dist/shapes/leaf-clover8.svg +1 -0
  26. package/dist/shapes/loading-indicator.svg +1 -0
  27. package/dist/shapes/oval.svg +1 -0
  28. package/dist/shapes/pentagon.svg +1 -0
  29. package/dist/shapes/pill.svg +1 -0
  30. package/dist/shapes/pixel-circle.svg +1 -0
  31. package/dist/shapes/pixel-triangle.svg +1 -0
  32. package/dist/shapes/puffy-diamond.svg +1 -0
  33. package/dist/shapes/puffy.svg +1 -0
  34. package/dist/shapes/semicircle.svg +1 -0
  35. package/dist/shapes/sided-cookie12.svg +1 -0
  36. package/dist/shapes/sided-cookie4.svg +1 -0
  37. package/dist/shapes/sided-cookie6.svg +1 -0
  38. package/dist/shapes/sided-cookie7.svg +1 -0
  39. package/dist/shapes/sided-cookie9.svg +1 -0
  40. package/dist/shapes/slanted.svg +1 -0
  41. package/dist/shapes/soft-boom.svg +1 -0
  42. package/dist/shapes/soft-burst.svg +1 -0
  43. package/dist/shapes/square.svg +1 -0
  44. package/dist/shapes/sunny.svg +1 -0
  45. package/dist/shapes/triangle.svg +1 -0
  46. package/dist/shapes/very-sunny.svg +1 -0
  47. package/dist/shapes/wavy-circle.svg +1 -0
  48. package/dist/shapes/wavy.svg +1 -0
  49. package/package.json +63 -0
  50. package/src/main.js +5 -0
  51. package/src/runtime/elements/dialogs.js +72 -0
  52. package/src/runtime/elements/fields.js +181 -0
  53. package/src/runtime/elements/menus.js +42 -0
  54. package/src/runtime/elements/pages.js +7 -0
  55. package/src/runtime/elements/progress.js +35 -0
  56. package/src/runtime/elements/sliders.js +78 -0
  57. package/src/runtime/elements/snackbars.js +27 -0
  58. package/src/runtime/helpers/ripples.js +46 -0
  59. package/src/runtime/md3.js +141 -0
  60. package/src/runtime/palette.js +64 -0
  61. package/src/runtime/settings/theme.js +194 -0
  62. package/src/runtime/utils.js +165 -0
  63. package/src/styles/_config.scss +142 -0
  64. package/src/styles/_mixins.scss +80 -0
  65. package/src/styles/elements/_badges.scss +65 -0
  66. package/src/styles/elements/_bars.scss +83 -0
  67. package/src/styles/elements/_buttons.scss +119 -0
  68. package/src/styles/elements/_cards.scss +32 -0
  69. package/src/styles/elements/_chips.scss +46 -0
  70. package/src/styles/elements/_dialogs.scss +143 -0
  71. package/src/styles/elements/_dividers.scss +46 -0
  72. package/src/styles/elements/_expansions.scss +19 -0
  73. package/src/styles/elements/_fields.scss +458 -0
  74. package/src/styles/elements/_grids.scss +35 -0
  75. package/src/styles/elements/_icons.scss +70 -0
  76. package/src/styles/elements/_layouts.scss +24 -0
  77. package/src/styles/elements/_lists.scss +76 -0
  78. package/src/styles/elements/_main-layouts.scss +45 -0
  79. package/src/styles/elements/_media.scss +104 -0
  80. package/src/styles/elements/_menus.scss +289 -0
  81. package/src/styles/elements/_navigations.scss +450 -0
  82. package/src/styles/elements/_overlays.scss +34 -0
  83. package/src/styles/elements/_pages.scss +28 -0
  84. package/src/styles/elements/_progress.scss +141 -0
  85. package/src/styles/elements/_selections.scss +248 -0
  86. package/src/styles/elements/_shapes.scss +151 -0
  87. package/src/styles/elements/_sliders.scss +336 -0
  88. package/src/styles/elements/_snackbars.scss +44 -0
  89. package/src/styles/elements/_tables.scss +67 -0
  90. package/src/styles/elements/_tabs.scss +49 -0
  91. package/src/styles/elements/_tooltips.scss +125 -0
  92. package/src/styles/helpers/_alignments.scss +29 -0
  93. package/src/styles/helpers/_blurs.scss +26 -0
  94. package/src/styles/helpers/_colors.scss +39 -0
  95. package/src/styles/helpers/_directions.scss +30 -0
  96. package/src/styles/helpers/_elevates.scss +20 -0
  97. package/src/styles/helpers/_forms.scss +76 -0
  98. package/src/styles/helpers/_margins.scss +39 -0
  99. package/src/styles/helpers/_opacities.scss +18 -0
  100. package/src/styles/helpers/_paddings.scss +35 -0
  101. package/src/styles/helpers/_positions.scss +44 -0
  102. package/src/styles/helpers/_responsive.scss +24 -0
  103. package/src/styles/helpers/_ripples.scss +40 -0
  104. package/src/styles/helpers/_scrolls.scss +7 -0
  105. package/src/styles/helpers/_shadows.scss +22 -0
  106. package/src/styles/helpers/_sizes.scss +34 -0
  107. package/src/styles/helpers/_spaces.scss +22 -0
  108. package/src/styles/helpers/_typography.scss +132 -0
  109. package/src/styles/helpers/_waves.scss +52 -0
  110. package/src/styles/helpers/_zoom.scss +18 -0
  111. package/src/styles/md3.scss +61 -0
  112. package/src/styles/settings/_fonts.scss +42 -0
  113. package/src/styles/settings/_globals.scss +104 -0
  114. package/src/styles/settings/_reset.scss +82 -0
  115. package/src/styles/settings/_theme.scss +126 -0
  116. package/src/styles/settings/_themes.scss +1525 -0
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M308.58 160c25.85 48.16 6.32 91.77-43.51 105.06-13.3 49.84-56.91 69.36-105.07 43.52-48.17 25.85-91.78 6.32-105.07-43.51C5.1 251.77-14.43 208.16 11.42 160-14.43 111.83 5.1 68.22 54.93 54.93 68.22 5.1 111.83-14.43 160 11.42c48.16-25.85 91.77-6.32 105.06 43.51 49.84 13.29 69.36 56.9 43.52 105.07"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="4 4 40 40" width="40" height="40"><path fill="#d0bcff"><animate attributeName="d" calcMode="spline" dur="5s" keySplines="0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8" keyTimes="0; 0.14; 0.29; 0.43; 0.57; 0.71; 0.86; 1" repeatCount="indefinite" values="m37.4 24.7 0.5 0.7 0.8 0.9 0.8 1.0 0.6 1.0 -0.1 0.8 -0.0 0.1 -0.6 0.7 -1.1 0.5 -1.3 0.3 -1.0 0.2 -0.9 0.4 -0.7 1.1 0.1 1.0 0.1 1.1 0.0 1.2 -0.2 1.1 -0.4 0.5 -0.3 0.2 -0.8 0.2 -1.2 -0.4 -1.2 -0.4 -1.0 -0.5 -0.8 -0.1 -1.3 0.5 -0.5 0.8 -0.6 0.9 -0.6 1.0 -0.8 0.8 -0.8 0.2 -0.1 -0.0 -0.9 -0.3 -0.8 -1.0 -0.6 -1.0 -0.6 -0.9 -0.5 -0.7 -1.3 -0.3 -0.9 0.2 -0.9 0.4 -1.2 0.5 -1.2 0.3 -0.8 -0.3 -0.0 -0.1 -0.6 -0.6 -0.1 -1.2 0.1 -1.2 0.0 -1.1 0.0 -0.9 -0.7 -1.1 -0.9 -0.3 -1.1 -0.3 -1.2 -0.3 -1.1 -0.4 -0.5 -0.8 -0.0 0.0 -0.1 -0.9 0.6 -1.0 0.8 -0.9 0.8 -0.9 0.5 -0.7 -0.0 -1.4 -0.5 -0.7 -0.8 -0.9 -0.8 -0.9 -0.6 -1.0 0.1 -0.9 0.0 -0.0 0.5 -0.8 1.1 -0.4 1.2 -0.3 1.1 -0.3 0.9 -0.3 0.7 -1.1 0.0 -0.9 -0.0 -1.1 -0.1 -1.2 0.1 -1.2 0.6 -0.6 0.0 -0.1 0.8 -0.3 1.2 0.3 1.2 0.5 0.9 0.4 0.9 0.2 1.3 -0.3 0.5 -0.7 0.6 -0.9 0.6 -1.0 0.8 -1.0 0.9 -0.3 0.1 0.0 0.8 0.2 0.8 0.8 0.6 1.0 0.6 0.9 0.5 0.8 1.3 0.5 0.8 -0.1 1.0 -0.5 1.2 -0.4 1.2 -0.4 0.8 0.2 0.3 0.2 0.4 0.5 0.2 1.1 -0.0 1.2 -0.1 1.1 -0.1 1.0 0.7 1.1 0.9 0.4 1.0 0.2 1.3 0.3 1.1 0.5 0.6 0.7 0.0 0.1 0.1 0.8 -0.5 1.0 -0.9 1.0 -0.8 0.9 -0.5 0.7 z;m39.9 24.0 -0.3 0.8 -0.4 0.8 -0.3 0.8 -0.2 1.5 0.1 0.9 0.1 0.9 -0.1 0.9 -0.2 0.8 -0.3 0.8 -0.2 0.4 -0.3 0.4 -0.5 0.7 -0.7 0.5 -0.8 0.4 -0.8 0.4 -0.8 0.4 -1.2 1.0 -0.5 0.7 -0.5 0.8 -0.6 0.6 -0.6 0.6 -0.8 0.4 -0.4 0.2 -0.5 0.1 -0.9 0.2 -0.8 -0.0 -0.9 -0.2 -0.9 -0.3 -0.8 -0.1 -1.6 -0.1 -0.8 0.2 -0.9 0.3 -0.9 0.2 -0.8 -0.0 -0.9 -0.2 -0.5 -0.1 -0.4 -0.2 -0.8 -0.4 -0.6 -0.5 -0.6 -0.7 -0.5 -0.8 -0.5 -0.7 -1.2 -1.0 -0.7 -0.4 -0.9 -0.4 -0.8 -0.4 -0.6 -0.5 -0.6 -0.7 -0.3 -0.4 -0.2 -0.4 -0.3 -0.8 -0.2 -0.8 -0.1 -0.9 0.1 -0.9 0.1 -0.9 -0.2 -1.5 -0.3 -0.8 -0.4 -0.8 -0.3 -0.8 -0.2 -0.8 -0.1 -0.9 0.1 -0.7 -0.0 -0.2 0.2 -0.8 0.4 -0.8 0.5 -0.7 0.6 -0.6 0.7 -0.7 0.5 -0.6 0.6 -1.3 0.3 -0.9 0.2 -0.8 0.3 -0.8 0.5 -0.7 0.5 -0.6 0.2 -0.2 0.5 -0.4 0.8 -0.4 0.8 -0.3 0.8 -0.2 0.9 -0.0 0.8 -0.1 1.4 -0.5 0.7 -0.4 0.7 -0.5 0.7 -0.5 0.8 -0.3 0.8 -0.2 0.9 -0.1 0.0 -0.0 0.8 0.1 0.9 0.2 0.8 0.3 0.7 0.5 0.7 0.5 0.7 0.4 1.4 0.5 0.8 0.1 0.9 0.0 0.9 0.2 0.8 0.3 0.7 0.4 0.5 0.4 0.2 0.1 0.5 0.7 0.5 0.7 0.3 0.8 0.2 0.8 0.3 0.9 0.6 1.3 0.5 0.6 0.7 0.7 0.6 0.6 0.5 0.7 0.4 0.8 0.2 0.8 0.0 0.2 0.1 0.7 -0.1 0.9 z;m38.9 24.2 -0.2 0.8 -0.2 0.7 -0.3 0.8 -0.2 0.8 -0.3 0.7 -0.2 0.8 -0.3 0.8 -0.2 0.7 -0.3 0.8 -0.2 0.8 -0.3 0.7 -0.2 0.8 -0.4 1.0 -0.4 0.8 -0.4 0.8 -0.6 0.6 -0.7 0.5 0.0 0.1 -0.7 0.4 -0.8 0.3 -0.8 0.3 -0.9 0.1 -1.1 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -0.8 -0.0 -1.1 -0.0 -0.9 -0.1 -0.8 -0.3 -0.8 -0.3 -0.7 -0.5 -0.1 0.0 -0.6 -0.5 -0.6 -0.7 -0.4 -0.7 -0.4 -0.8 -0.4 -1.0 -0.2 -0.8 -0.3 -0.7 -0.2 -0.8 -0.3 -0.8 -0.2 -0.7 -0.3 -0.8 -0.2 -0.8 -0.3 -0.7 -0.2 -0.8 -0.3 -0.7 -0.2 -0.8 -0.3 -0.8 -0.2 -0.7 -0.3 -1.1 -0.2 -0.9 -0.0 -0.8 0.0 -0.9 0.2 -0.8 0.1 -0.1 0.3 -0.7 0.4 -0.8 0.6 -0.6 0.6 -0.6 0.9 -0.7 0.6 -0.5 0.7 -0.4 0.6 -0.5 0.7 -0.5 0.6 -0.4 0.7 -0.5 0.6 -0.5 0.7 -0.5 0.6 -0.4 0.7 -0.5 0.6 -0.5 0.7 -0.4 0.6 -0.5 0.9 -0.7 0.8 -0.4 0.8 -0.3 0.8 -0.2 0.8 -0.0 0.1 -0.0 0.9 0.0 0.8 0.2 0.8 0.3 0.8 0.4 0.9 0.7 0.6 0.5 0.7 0.4 0.6 0.5 0.7 0.5 0.6 0.4 0.7 0.5 0.6 0.5 0.7 0.5 0.6 0.4 0.7 0.5 0.6 0.5 0.7 0.4 0.6 0.5 0.9 0.7 0.6 0.6 0.6 0.7 0.4 0.7 0.3 0.7 0.0 0.1 0.2 0.8 0.1 0.9 -0.0 0.9 -0.2 0.8 -0.3 1.1 z;m39.6 24.0 -0.1 0.8 -0.3 0.8 -0.2 0.8 -0.3 0.7 -0.3 0.8 -0.4 0.7 -0.4 0.7 -0.5 0.6 -0.4 0.6 -0.6 0.6 -0.6 0.6 -0.4 0.4 -0.6 0.6 -0.4 0.5 -0.9 0.8 -0.5 0.5 -0.6 0.6 -0.4 0.4 -0.7 0.7 -0.5 0.5 -0.6 0.4 -0.7 0.5 -0.6 0.4 -0.7 0.4 -0.7 0.3 -0.8 0.3 -0.8 0.3 -0.8 0.2 -0.8 0.1 -0.8 0.1 -0.8 0.1 -0.9 0.0 -0.8 -0.0 -0.9 -0.1 -0.8 -0.2 -0.8 -0.2 -0.9 -0.2 -0.8 -0.3 -0.8 -0.4 -0.8 -0.4 -0.7 -0.5 -0.7 -0.5 -0.7 -0.5 -0.6 -0.6 -0.1 -0.1 -0.5 -0.6 -0.6 -0.7 -0.5 -0.7 -0.5 -0.8 -0.4 -0.7 -0.4 -0.8 -0.3 -0.8 -0.2 -0.8 -0.2 -0.9 -0.2 -0.8 -0.1 -0.9 0.0 -0.8 0.0 -0.9 0.1 -0.8 0.1 -0.8 0.1 -0.8 0.3 -0.8 0.2 -0.8 0.3 -0.7 0.4 -0.8 0.3 -0.7 0.5 -0.6 0.4 -0.7 0.4 -0.5 0.6 -0.6 0.6 -0.7 0.4 -0.4 0.6 -0.6 0.5 -0.4 0.8 -0.9 0.5 -0.5 0.6 -0.6 0.4 -0.4 0.7 -0.7 0.5 -0.5 0.6 -0.4 0.7 -0.5 0.6 -0.4 0.7 -0.4 0.7 -0.3 0.8 -0.3 0.8 -0.3 0.8 -0.2 0.8 -0.1 0.8 -0.1 0.8 -0.1 0.9 -0.0 0.8 0.0 0.9 0.1 0.8 0.2 0.8 0.2 0.9 0.2 0.8 0.4 0.8 0.3 0.8 0.4 0.7 0.5 0.7 0.5 0.7 0.5 0.6 0.7 0.1 -0.0 0.5 0.6 0.6 0.7 0.5 0.7 0.5 0.8 0.4 0.7 0.3 0.8 0.4 0.8 0.2 0.8 0.2 0.9 0.2 0.8 0.1 0.9 0.0 0.8 -0.0 0.8 -0.1 0.9 z;m40.0 24.0 -0.1 0.8 -0.5 0.8 -0.6 0.8 -0.6 0.6 -0.6 0.7 -0.5 0.6 -0.7 1.2 -0.1 0.7 -0.1 0.8 -0.0 0.9 -0.1 0.9 -0.1 0.9 -0.2 0.9 -0.5 0.7 -0.0 0.0 -0.7 0.5 -0.9 0.2 -0.9 0.1 -0.9 0.1 -0.8 0.0 -0.8 0.1 -0.8 0.1 -1.2 0.7 -0.6 0.5 -0.7 0.6 -0.6 0.6 -0.8 0.6 -0.8 0.5 -0.8 0.1 -0.0 0.0 -0.8 -0.1 -0.8 -0.5 -0.8 -0.6 -0.6 -0.6 -0.7 -0.6 -0.6 -0.5 -1.2 -0.7 -0.7 -0.1 -0.8 -0.1 -0.9 -0.0 -0.9 -0.1 -0.9 -0.1 -0.9 -0.2 -0.7 -0.5 -0.0 0.0 -0.5 -0.7 -0.2 -0.9 -0.1 -0.9 -0.1 -0.9 -0.0 -0.8 -0.1 -0.8 -0.1 -0.8 -0.7 -1.2 -0.5 -0.6 -0.6 -0.7 -0.6 -0.6 -0.6 -0.8 -0.5 -0.8 -0.1 -0.8 -0.0 -0.0 0.1 -0.8 0.5 -0.8 0.6 -0.8 0.6 -0.6 0.6 -0.7 0.5 -0.6 0.7 -1.2 0.1 -0.7 0.1 -0.8 0.0 -0.9 0.1 -0.9 0.1 -0.9 0.2 -0.9 0.5 -0.7 -0.0 -0.0 0.7 -0.5 0.9 -0.2 0.9 -0.1 0.9 -0.1 0.8 -0.0 0.8 -0.1 0.8 -0.1 1.2 -0.7 0.6 -0.5 0.7 -0.6 0.6 -0.6 0.8 -0.6 0.8 -0.5 0.8 -0.1 0.0 -0.0 0.8 0.1 0.8 0.5 0.8 0.6 0.6 0.6 0.7 0.6 0.6 0.5 1.2 0.7 0.7 0.1 0.8 0.1 0.9 0.0 0.9 0.1 0.9 0.1 0.9 0.2 0.7 0.5 0.0 -0.0 0.5 0.7 0.2 0.9 0.1 0.9 0.1 0.9 0.0 0.8 0.1 0.8 0.1 0.8 0.7 1.2 0.5 0.6 0.6 0.7 0.6 0.6 0.6 0.8 0.5 0.8 0.1 0.8 z;m36.9 24.6 0.1 0.7 0.2 0.8 0.2 0.7 0.4 0.9 0.4 0.9 0.2 0.9 0.1 1.0 0.1 0.9 -0.1 0.9 -0.3 0.9 -0.3 0.9 -0.4 0.8 -0.5 0.8 -0.6 0.6 -0.1 0.1 -0.6 0.6 -0.8 0.5 -0.8 0.4 -0.9 0.3 -0.9 0.3 -0.9 0.1 -0.9 -0.1 -1.0 -0.1 -0.9 -0.2 -0.9 -0.4 -0.9 -0.4 -0.7 -0.2 -0.8 -0.2 -0.7 -0.1 -1.2 0.0 -0.7 0.1 -0.8 0.2 -0.7 0.2 -0.9 0.4 -0.9 0.4 -0.9 0.2 -1.0 0.1 -0.9 0.1 -0.9 -0.1 -0.9 -0.3 -0.9 -0.3 -0.8 -0.4 -0.8 -0.5 -0.6 -0.6 -0.1 -0.1 -0.6 -0.6 -0.5 -0.8 -0.4 -0.8 -0.3 -0.9 -0.3 -0.9 -0.1 -0.9 0.1 -0.9 0.1 -1.0 0.2 -0.9 0.4 -0.9 0.4 -0.9 0.2 -0.7 0.2 -0.8 0.1 -0.7 -0.0 -1.2 -0.1 -0.7 -0.2 -0.8 -0.2 -0.7 -0.4 -0.9 -0.4 -0.9 -0.2 -0.9 -0.1 -1.0 -0.1 -0.9 0.1 -0.9 0.3 -0.9 0.3 -0.9 0.4 -0.8 0.5 -0.8 0.6 -0.6 0.1 -0.1 0.6 -0.6 0.8 -0.5 0.8 -0.4 0.9 -0.3 0.9 -0.3 0.9 -0.1 0.9 0.1 1.0 0.1 0.9 0.2 0.9 0.4 0.9 0.4 0.7 0.2 0.8 0.2 0.7 0.1 1.2 -0.0 0.7 -0.1 0.8 -0.2 0.7 -0.2 0.9 -0.4 0.9 -0.4 0.9 -0.2 1.0 -0.1 0.9 -0.1 0.9 0.1 0.9 0.3 0.9 0.3 0.8 0.4 0.8 0.5 0.6 0.6 0.1 0.1 0.6 0.6 0.5 0.8 0.4 0.8 0.3 0.9 0.3 0.9 0.1 0.9 -0.1 0.9 -0.1 1.0 -0.2 0.9 -0.4 0.9 -0.4 0.9 -0.2 0.7 -0.2 0.8 -0.1 0.7 z;m37.7 24.0 -0.3 0.7 -0.4 0.7 -0.3 0.6 -0.3 0.7 -0.4 0.6 -0.3 0.5 -0.4 0.6 -0.4 0.5 -0.4 0.5 -0.4 0.5 -0.4 0.5 -0.4 0.5 -0.3 0.4 -0.5 0.4 -0.8 0.8 -0.4 0.5 -0.4 0.3 -0.5 0.4 -0.5 0.4 -0.5 0.4 -0.5 0.4 -0.5 0.4 -0.6 0.4 -0.5 0.3 -0.6 0.4 -0.7 0.3 -0.6 0.3 -0.7 0.4 -0.7 0.3 -0.7 0.2 -0.7 0.3 -0.9 0.3 -0.8 0.2 -0.8 0.1 -0.9 0.1 -1.0 0.1 -0.9 -0.0 -0.9 -0.1 -0.9 -0.1 -0.9 -0.3 -0.9 -0.3 -0.8 -0.4 -0.8 -0.6 -0.7 -0.6 -0.0 0.0 -0.6 -0.7 -0.6 -0.8 -0.4 -0.8 -0.3 -0.9 -0.3 -0.9 -0.1 -0.9 -0.1 -0.9 0.0 -0.9 0.1 -1.0 0.1 -0.9 0.1 -0.8 0.2 -0.8 0.3 -0.9 0.3 -0.7 0.2 -0.7 0.3 -0.7 0.4 -0.7 0.3 -0.6 0.3 -0.7 0.4 -0.6 0.3 -0.5 0.4 -0.6 0.4 -0.5 0.4 -0.5 0.4 -0.5 0.4 -0.5 0.4 -0.5 0.3 -0.4 0.5 -0.4 0.8 -0.8 0.4 -0.5 0.4 -0.3 0.5 -0.4 0.5 -0.4 0.5 -0.4 0.5 -0.4 0.5 -0.4 0.6 -0.4 0.5 -0.3 0.6 -0.4 0.7 -0.3 0.6 -0.3 0.7 -0.4 0.7 -0.3 0.7 -0.2 0.7 -0.3 0.9 -0.3 0.8 -0.2 0.8 -0.1 0.9 -0.1 1.0 -0.1 0.9 0.0 0.9 0.1 0.9 0.1 0.9 0.3 0.9 0.3 0.8 0.4 0.8 0.6 0.7 0.6 -0.0 0.0 0.6 0.7 0.6 0.8 0.4 0.8 0.3 0.9 0.3 0.9 0.1 0.9 0.1 0.9 -0.0 0.9 -0.1 1.0 -0.1 0.9 -0.1 0.8 -0.2 0.8 -0.3 0.9 -0.3 0.7 z;m37.4 24.7 0.5 0.7 0.8 0.9 0.8 1.0 0.6 1.0 -0.1 0.8 -0.0 0.1 -0.6 0.7 -1.1 0.5 -1.3 0.3 -1.0 0.2 -0.9 0.4 -0.7 1.1 0.1 1.0 0.1 1.1 0.0 1.2 -0.2 1.1 -0.4 0.5 -0.3 0.2 -0.8 0.2 -1.2 -0.4 -1.2 -0.4 -1.0 -0.5 -0.8 -0.1 -1.3 0.5 -0.5 0.8 -0.6 0.9 -0.6 1.0 -0.8 0.8 -0.8 0.2 -0.1 -0.0 -0.9 -0.3 -0.8 -1.0 -0.6 -1.0 -0.6 -0.9 -0.5 -0.7 -1.3 -0.3 -0.9 0.2 -0.9 0.4 -1.2 0.5 -1.2 0.3 -0.8 -0.3 -0.0 -0.1 -0.6 -0.6 -0.1 -1.2 0.1 -1.2 0.0 -1.1 0.0 -0.9 -0.7 -1.1 -0.9 -0.3 -1.1 -0.3 -1.2 -0.3 -1.1 -0.4 -0.5 -0.8 -0.0 0.0 -0.1 -0.9 0.6 -1.0 0.8 -0.9 0.8 -0.9 0.5 -0.7 -0.0 -1.4 -0.5 -0.7 -0.8 -0.9 -0.8 -0.9 -0.6 -1.0 0.1 -0.9 0.0 -0.0 0.5 -0.8 1.1 -0.4 1.2 -0.3 1.1 -0.3 0.9 -0.3 0.7 -1.1 0.0 -0.9 -0.0 -1.1 -0.1 -1.2 0.1 -1.2 0.6 -0.6 0.0 -0.1 0.8 -0.3 1.2 0.3 1.2 0.5 0.9 0.4 0.9 0.2 1.3 -0.3 0.5 -0.7 0.6 -0.9 0.6 -1.0 0.8 -1.0 0.9 -0.3 0.1 0.0 0.8 0.2 0.8 0.8 0.6 1.0 0.6 0.9 0.5 0.8 1.3 0.5 0.8 -0.1 1.0 -0.5 1.2 -0.4 1.2 -0.4 0.8 0.2 0.3 0.2 0.4 0.5 0.2 1.1 -0.0 1.2 -0.1 1.1 -0.1 1.0 0.7 1.1 0.9 0.4 1.0 0.2 1.3 0.3 1.1 0.5 0.6 0.7 0.0 0.1 0.1 0.8 -0.5 1.0 -0.9 1.0 -0.8 0.9 -0.5 0.7 z"/><animateTransform attributeName="transform" attributeType="XML" calcMode="spline" dur="5s" keySplines="0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8; 0.5 0.2 0 0.8" keyTimes="0; 0.14; 0.29; 0.43; 0.57; 0.71; 0.86; 1" repeatCount="indefinite" type="rotate" values="0 24 24; 154 24 24; 309 24 24; 463 24 24; 617 24 24; 771 24 24; 926 24 24; 1080 24 24"/></path></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" fill="none" viewBox="0 0 300 300"><path fill="#d0bcff" d="M231.309 231.31c-69.604 69.6-162.432 89.63-207.338 44.72S-.913 138.29 68.69 68.69s162.432-89.63 207.338-44.72 24.884 137.74-44.72 207.34"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M109.63 24.37c15.61-12.08 23.41-18.12 31.75-21.12a55 55 0 0 1 37.24 0c8.34 3 16.14 9.04 31.75 21.12l34.14 26.43 34.12 24.76c16.19 11.75 24.29 17.63 29.7 25.01 7.82 10.69 11.94 23.82 11.66 37.25-.2 9.29-3.41 19-9.85 38.41l-13.4 40.43-12.36 41.42c-5.81 19.44-8.71 29.16-13.78 36.72-7.34 10.94-18.01 18.98-30.28 22.83-8.48 2.67-18.26 2.51-37.82 2.2l-42.5-.67-42.5.67c-19.56.31-29.34.47-37.82-2.2-12.27-3.85-22.94-11.89-30.28-22.83-5.07-7.56-7.97-17.28-13.78-36.72l-12.36-41.42-13.4-40.43C3.42 156.82.21 147.11.01 137.82c-.28-13.43 3.84-26.56 11.66-37.25 5.41-7.38 13.51-13.26 29.7-25.01L75.49 50.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" fill="none" viewBox="0 0 300 300"><path fill="#d0bcff" d="M79.86 37.77c50.36-50.36 132.01-50.36 182.37 0s50.36 132.01 0 182.37l-42.09 42.09c-50.36 50.36-132.01 50.36-182.37 0s-50.36-132.01 0-182.37z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M225.19 0H94.81v20.74H50.37v26.67H23.704v47.4H0v130.38h23.704v47.4H50.37v26.67h44.44V320h130.38v-20.74h44.44v-26.67h26.67v-47.4H320V94.81h-23.7v-47.4h-26.67V20.74h-44.44z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="248" height="320" fill="none" viewBox="0 0 248 320"><path fill="#d0bcff" d="M55.64 0H0v320h55.64v-27.826h42.92v-26.435h44.52V235.13h36.56v-25.044h36.57v-30.608H248v-38.956h-31.79v-30.61h-36.57V84.869h-36.56V54.261H98.56V27.826H55.64z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M249.4 249.754c12.08-12.088 16.17-29.146 12.26-44.597 15.46 3.929 32.54-.156 44.64-12.255 18.27-18.266 18.27-47.882 0-66.148-12.03-12.027-28.98-16.135-44.36-12.324 3.43-15.144-.75-31.664-12.54-43.455-12.12-12.115-29.23-16.195-44.7-12.239 4.1-15.565.05-32.833-12.16-45.036-18.26-18.267-47.88-18.267-66.14 0-12.13 12.13-16.21 29.265-12.23 44.758-15.17-3.472-31.74.7-43.55 12.517-11.79 11.792-15.97 28.314-12.54 43.459-15.39-3.818-32.35.289-44.38 12.32-18.27 18.266-18.27 47.882 0 66.148 12.1 12.103 29.19 16.187 44.65 12.251-3.91 15.452.18 32.512 12.27 44.601 11.76 11.767 28.24 15.954 43.36 12.56-3.65 15.288.49 32.057 12.42 43.986 18.26 18.267 47.88 18.267 66.14 0 12-11.999 16.12-28.897 12.35-44.257 15.43 3.871 32.44-.226 44.51-12.289"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="280" fill="none" viewBox="0 0 320 280"><path fill="#d0bcff" d="M319.98 138.106c-.26-21.532-16.25-38.773-35.74-38.485-1.07 0-2.13.09-3.18.217.82-.74 1.62-1.497 2.38-2.327 13.96-15.022 14.25-39.729.67-55.167-.8-.901-1.59-1.803-2.41-2.669-13.96-15.022-36.28-14.698-49.88.74-.75.847-1.43 1.731-2.1 2.633.11-1.154.18-2.327.2-3.517C230.19 17.998 214.61.307 195.14 0h-2.87C177.84 0 165.46 9.594 160 23.318 154.54 9.594 142.15 0 127.73 0h-2.87c-19.47.289-35.05 17.98-34.79 39.531 0 1.19.08 2.363.19 3.517a36 36 0 0 0-2.1-2.633c-13.58-15.438-35.92-15.762-49.88-.74-.81.884-1.63 1.768-2.41 2.669-13.58 15.438-13.29 40.127.67 55.167.77.83 1.56 1.587 2.38 2.327a30 30 0 0 0-3.18-.217C16.27 99.333.28 116.574 0 138.106v3.788c.26 21.533 16.26 38.773 35.74 38.485 1.08 0 2.14-.09 3.18-.217-.82.74-1.61 1.497-2.38 2.327-13.96 15.022-14.25 39.729-.67 55.167.8.901 1.6 1.803 2.41 2.669 13.96 15.022 36.28 14.698 49.88-.74.75-.847 1.44-1.731 2.1-2.633a41 41 0 0 0-.19 3.517c-.26 21.533 15.31 39.242 34.79 39.531h2.87c14.43 0 26.81-9.594 32.27-23.318C165.46 270.406 177.85 280 192.27 280h2.87c19.47-.289 35.05-17.98 34.79-39.531 0-1.19-.08-2.363-.19-3.517.66.902 1.35 1.786 2.1 2.633 13.58 15.438 35.92 15.762 49.88.74.81-.884 1.63-1.768 2.41-2.669 13.58-15.438 13.29-40.127-.67-55.167-.77-.83-1.56-1.587-2.38-2.327a30 30 0 0 0 3.18.217c19.47.288 35.48-16.934 35.74-38.485v-3.788z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="200" fill="none" viewBox="0 0 320 200"><path fill="#d0bcff" d="M320 166.92c0 18.27-14.81 33.08-33.079 33.08H33.079C14.81 200 0 185.19 0 166.92V160C0 71.63 71.634 0 160 0s160 71.63 160 160z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M136.7 9.85c.54-.53.81-.8 1.04-1.02 12.51-11.77 32.01-11.77 44.52 0 .23.22.5.49 1.04 1.02.33.31.49.47.64.62a32.48 32.48 0 0 0 30.09 8.06c.21-.05.43-.11.87-.22.73-.19 1.1-.28 1.41-.36 16.71-3.94 33.61 5.81 38.55 22.26.09.31.19.67.4 1.4.12.44.18.66.24.87a32.47 32.47 0 0 0 22.02 22.02c.21.06.43.12.87.24.73.21 1.09.31 1.4.4 16.45 4.94 26.2 21.84 22.26 38.55-.08.31-.17.68-.36 1.41-.11.44-.17.66-.22.87a32.48 32.48 0 0 0 8.06 30.09c.15.15.31.31.62.64.53.54.8.81 1.02 1.04 11.77 12.51 11.77 32.01 0 44.52-.22.23-.49.5-1.02 1.04-.31.33-.47.49-.62.64a32.48 32.48 0 0 0-8.06 30.09c.05.21.11.43.22.87.19.73.28 1.1.36 1.41 3.94 16.71-5.81 33.61-22.26 38.55-.31.09-.67.19-1.4.4-.44.12-.66.18-.87.24a32.47 32.47 0 0 0-22.02 22.02c-.06.21-.12.43-.24.87-.21.73-.31 1.09-.4 1.4-4.94 16.45-21.84 26.2-38.55 22.26-.31-.08-.68-.17-1.41-.36-.44-.11-.66-.17-.87-.22a32.48 32.48 0 0 0-30.09 8.06c-.15.15-.31.31-.64.62-.54.53-.81.8-1.04 1.02-12.51 11.77-32.01 11.77-44.52 0-.23-.22-.5-.49-1.04-1.02-.33-.31-.49-.47-.64-.62a32.48 32.48 0 0 0-30.09-8.06c-.21.05-.43.11-.87.22-.73.19-1.1.28-1.41.36-16.71 3.94-33.61-5.81-38.55-22.26-.09-.31-.19-.67-.4-1.4-.12-.44-.18-.66-.24-.87a32.47 32.47 0 0 0-22.02-22.02c-.21-.06-.43-.12-.87-.24-.73-.21-1.09-.31-1.4-.4-16.45-4.94-26.2-21.84-22.26-38.55.08-.31.17-.68.36-1.41.11-.44.17-.66.22-.87a32.48 32.48 0 0 0-8.06-30.09c-.15-.15-.31-.31-.62-.64-.53-.54-.8-.81-1.02-1.04-11.77-12.51-11.77-32.01 0-44.52.22-.23.49-.5 1.02-1.04.31-.33.47-.49.62-.64a32.48 32.48 0 0 0 8.06-30.09c-.05-.21-.11-.43-.22-.87-.19-.73-.28-1.1-.36-1.41-3.94-16.71 5.81-33.61 22.26-38.55.31-.09.67-.19 1.4-.4.44-.12.66-.18.87-.24A32.47 32.47 0 0 0 64.5 42.48c.06-.21.12-.43.24-.87.21-.73.31-1.09.4-1.4 4.94-16.45 21.84-26.2 38.55-22.26.31.08.68.17 1.41.36.44.11.66.17.87.22a32.48 32.48 0 0 0 30.09-8.06c.15-.15.31-.31.64-.62"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="280" height="280" fill="none" viewBox="0 0 280 280"><path fill="#d0bcff" d="M178.73 6.21c60.14-26.12 121.18 34.92 95.06 95.06l-4.32 9.94a72.32 72.32 0 0 0 0 57.58l4.32 9.94c26.12 60.14-34.92 121.18-95.06 95.06l-9.94-4.32a72.32 72.32 0 0 0-57.58 0l-9.94 4.32c-60.142 26.12-121.184-34.92-95.063-95.06l4.319-9.94a72.28 72.28 0 0 0 0-57.58l-4.32-9.94C-19.913 41.13 41.129-19.91 101.27 6.21l9.94 4.32a72.32 72.32 0 0 0 57.58 0z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="296" height="316" fill="none" viewBox="0 0 296 316"><path fill="#d0bcff" d="M92.186 22.57c31.09-30.09 80.538-30.09 111.628 0a80.24 80.24 0 0 0 33.924 19.52c41.681 11.8 66.404 54.5 55.814 96.38a79.7 79.7 0 0 0 0 39.06c10.59 41.88-14.133 84.58-55.814 96.38a80.24 80.24 0 0 0-33.924 19.52c-31.09 30.09-80.538 30.09-111.628 0a80.24 80.24 0 0 0-33.924-19.52c-41.681-11.8-66.404-54.5-55.814-96.38a79.7 79.7 0 0 0 0-39.06C-8.142 96.59 16.58 53.89 58.262 42.09a80.24 80.24 0 0 0 33.924-19.52"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="316" fill="none" viewBox="0 0 320 316"><path fill="#d0bcff" d="M112.67 19.78c3.573-3.14 5.359-4.71 7.001-5.98 23.754-18.4 56.904-18.4 80.658 0 1.642 1.27 3.428 2.84 7.001 5.98 1.196 1.06 1.794 1.58 2.394 2.09a66 66 0 0 0 29.196 14.09c.768.16 1.551.3 3.118.58 4.681.84 7.021 1.25 9.037 1.75 29.159 7.14 49.827 33.12 50.289 63.2.032 2.08-.081 4.46-.307 9.22-.075 1.6-.113 2.39-.132 3.18a66.24 66.24 0 0 0 7.211 31.66c.357.7.736 1.4 1.494 2.81 2.264 4.19 3.396 6.28 4.267 8.17 12.606 27.3 5.23 59.7-17.948 78.81-1.602 1.33-3.529 2.72-7.383 5.51-1.29.94-1.936 1.4-2.559 1.88a66.1 66.1 0 0 0-20.204 25.39c-.323.72-.634 1.45-1.256 2.92-1.857 4.39-2.786 6.58-3.715 8.44-13.439 26.9-43.306 41.32-72.67 35.08-2.03-.44-4.32-1.08-8.9-2.36-1.534-.42-2.3-.64-3.059-.83a65.84 65.84 0 0 0-32.406 0c-.759.19-1.525.41-3.059.83-4.58 1.28-6.87 1.92-8.9 2.36-29.364 6.24-59.23-8.18-72.67-35.08-.93-1.86-1.858-4.05-3.715-8.44-.622-1.47-.933-2.2-1.256-2.92a66.14 66.14 0 0 0-20.204-25.39c-.623-.48-1.269-.94-2.559-1.88-3.854-2.79-5.78-4.18-7.383-5.51C.873 216.23-6.503 183.83 6.103 156.53c.871-1.89 2.003-3.98 4.267-8.17.758-1.41 1.137-2.11 1.494-2.81a66.2 66.2 0 0 0 7.21-31.66c-.018-.79-.056-1.58-.131-3.18-.226-4.76-.34-7.14-.307-9.22.462-30.08 21.13-56.06 50.29-63.2 2.015-.5 4.355-.91 9.036-1.75 1.567-.28 2.35-.42 3.117-.58a66 66 0 0 0 29.197-14.09c.6-.51 1.198-1.03 2.394-2.09"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M125.26 13.38c1.73-1.43 2.59-2.14 3.38-2.74a51.525 51.525 0 0 1 62.72 0c.79.6 1.65 1.31 3.38 2.74.77.63 1.15.95 1.53 1.26a51.7 51.7 0 0 0 30.55 11.23c.48.01.98.02 1.97.03 2.23.03 3.35.04 4.33.09 23.24 1.19 42.86 17.83 48.05 40.74.22.97.43 2.08.85 4.29.18.99.27 1.48.37 1.96 2.27 11 7.97 20.96 16.25 28.44.37.33.74.66 1.5 1.31 1.69 1.47 2.53 2.21 3.25 2.89 17.05 15.99 21.5 41.49 10.9 62.41-.45.89-1 1.87-2.09 3.83-.49.88-.73 1.32-.96 1.75a53 53 0 0 0-5.64 32.34c.07.49.15.98.31 1.97.36 2.23.54 3.34.66 4.33 2.88 23.32-9.93 45.74-31.36 54.88-.91.39-1.96.79-4.04 1.59-.93.35-1.4.53-1.85.71-10.32 4.17-19.04 11.57-24.9 21.11-.25.42-.5.85-1.01 1.71-1.14 1.94-1.71 2.91-2.25 3.75-12.63 19.73-36.7 28.59-58.94 21.67-.94-.29-2-.66-4.1-1.41-.94-.33-1.41-.5-1.87-.65a51.47 51.47 0 0 0-32.5 0c-.46.15-.93.32-1.87.65-2.1.75-3.16 1.12-4.1 1.41-22.24 6.92-46.31-1.94-58.94-21.67-.54-.84-1.11-1.81-2.25-3.75-.51-.86-.76-1.29-1.01-1.71C69.72 281 61 273.6 50.68 269.43c-.45-.18-.92-.36-1.85-.71-2.08-.8-3.13-1.2-4.04-1.59-21.43-9.14-34.24-31.56-31.36-54.88.12-.99.3-2.1.66-4.33.16-.99.24-1.48.31-1.97a53 53 0 0 0-5.64-32.34c-.23-.43-.47-.87-.96-1.75-1.09-1.96-1.64-2.94-2.09-3.83-10.6-20.92-6.15-46.42 10.9-62.41.72-.68 1.56-1.42 3.25-2.89.76-.65 1.13-.98 1.5-1.31a52.66 52.66 0 0 0 16.25-28.44c.1-.48.19-.97.37-1.96.42-2.21.63-3.32.85-4.29 5.19-22.91 24.81-39.55 48.05-40.74.98-.05 2.1-.06 4.33-.09.99-.01 1.49-.02 1.97-.03a51.7 51.7 0 0 0 30.55-11.23c.38-.31.76-.63 1.53-1.26"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="300" fill="none" viewBox="0 0 320 300"><path fill="#d0bcff" d="M15.715 80.54c2.574-24.58 3.861-36.87 8.588-46.562C31.142 19.945 43.077 9.11 57.628 3.723 67.683 0 79.933 0 104.432 0h123.705c29.627 0 44.441 0 55.75 4.854 16.374 7.028 28.833 20.995 34.04 38.166 3.596 11.85 2.04 26.71-1.073 56.44l-12.569 120c-2.574 24.58-3.861 36.87-8.588 46.56-6.839 14.03-18.774 24.87-33.325 30.26-10.055 3.72-22.305 3.72-46.804 3.72H91.863c-29.627 0-44.441 0-55.75-4.85-16.374-7.03-28.833-21-34.04-38.17-3.597-11.85-2.04-26.71 1.073-56.44z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M174.94 84.95c22.54-113.265-52.39-113.265-29.86 0C122.55-28.315 53.327.352 117.49 96.38 53.327.352.352 53.33 96.38 117.49.352 53.33-28.315 122.55 84.95 145.07c-113.265-22.53-113.265 52.39 0 29.86-113.265 22.53-84.584 91.74 11.43 27.58-96.014 64.16-43.04 117.14 21.11 21.11-64.163 96.01 5.06 124.68 27.58 11.43-22.53 113.27 52.39 113.27 29.86 0 22.53 113.27 91.74 84.58 27.58-11.43 64.16 96.01 117.14 43.04 21.11-21.11 96.01 64.16 124.68-5.06 11.43-27.58 113.27 22.53 113.27-52.39 0-29.86 113.27-22.53 84.58-91.74-11.43-27.58C319.63 53.33 266.66.352 202.51 96.38c64.16-96.014-5.06-124.682-27.58-11.43z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M145.15 7.904c6.83-10.539 22.87-10.539 29.7 0l16.39 25.261c4.49 6.928 13.56 9.745 21.45 6.665l28.78-11.227c12.01-4.683 24.98 4.329 24.04 16.697l-2.27 29.65c-.63 8.13 4.97 15.5 13.25 17.45l30.19 7.09c12.59 2.96 17.55 17.54 9.18 27.02l-20.06 22.7c-5.5 6.23-5.5 15.35 0 21.58l20.06 22.7c8.37 9.48 3.41 24.06-9.18 27.02l-30.19 7.09c-8.28 1.95-13.88 9.32-13.25 17.45l2.27 29.65c.94 12.37-12.03 21.38-24.04 16.7l-28.78-11.23c-7.89-3.08-16.96-.26-21.45 6.67l-16.39 25.26c-6.83 10.53-22.87 10.53-29.7 0l-16.39-25.26c-4.49-6.93-13.56-9.75-21.45-6.67L78.53 291.4c-12.01 4.68-24.98-4.33-24.04-16.7l2.27-29.65c.63-8.13-4.97-15.5-13.25-17.45l-30.19-7.09c-12.59-2.96-17.55-17.54-9.18-27.02l20.06-22.7c5.5-6.23 5.5-15.35 0-21.58l-20.06-22.7c-8.37-9.48-3.41-24.06 9.18-27.02l30.19-7.09c8.28-1.95 13.88-9.32 13.25-17.45L54.49 45.3c-.94-12.368 12.03-21.38 24.04-16.697l28.78 11.227c7.89 3.08 16.96.263 21.45-6.665z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M320 172c0 44.72 0 67.08-7.02 84.81-10.17 25.68-30.49 46-56.17 56.17C239.08 320 216.72 320 172 320h-24c-44.72 0-67.08 0-84.81-7.02-25.68-10.17-46-30.49-56.17-56.17C0 239.08 0 216.72 0 172v-24c0-44.72 0-67.08 7.02-84.81A100 100 0 0 1 63.19 7.022C80.92 0 103.28 0 148 0h24c44.72 0 67.08 0 84.81 7.022a100 100 0 0 1 56.17 56.168C320 80.92 320 103.28 320 148z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="340" height="340" fill="none" viewBox="0 0 340 340"><path fill="#d0bcff" d="M261.856 41.24c10.575.72 15.862 1.08 20.135 2.94a26.86 26.86 0 0 1 13.825 13.83c1.869 4.27 2.228 9.56 2.946 20.13l1.64 24.13c.291 4.28.436 6.42.901 8.46a26.8 26.8 0 0 0 3.451 8.33c1.115 1.78 2.525 3.39 5.343 6.62l15.904 18.22c6.969 7.99 10.454 11.98 12.154 16.32a26.84 26.84 0 0 1 0 19.56c-1.7 4.34-5.185 8.33-12.154 16.32l-15.904 18.22c-2.818 3.23-4.228 4.84-5.343 6.62a26.8 26.8 0 0 0-3.451 8.33c-.465 2.04-.61 4.18-.901 8.46l-1.64 24.13c-.718 10.57-1.077 15.86-2.946 20.13a26.86 26.86 0 0 1-13.825 13.83c-4.273 1.86-9.56 2.22-20.135 2.94l-24.131 1.64c-4.277.29-6.415.44-8.458.9a26.8 26.8 0 0 0-8.33 3.45c-1.773 1.12-3.388 2.53-6.618 5.35L196.097 326c-7.986 6.97-11.978 10.45-16.322 12.15a26.72 26.72 0 0 1-19.55 0c-4.344-1.7-8.336-5.18-16.322-12.15l-18.222-15.9c-3.23-2.82-4.845-4.23-6.618-5.35a26.8 26.8 0 0 0-8.33-3.45c-2.043-.46-4.181-.61-8.458-.9l-24.131-1.64c-10.575-.72-15.862-1.08-20.135-2.94a26.86 26.86 0 0 1-13.825-13.83c-1.869-4.27-2.228-9.56-2.947-20.13l-1.64-24.13c-.29-4.28-.435-6.42-.9-8.46a26.8 26.8 0 0 0-3.45-8.33c-1.116-1.78-2.526-3.39-5.344-6.62L13.999 196.1c-6.969-7.99-10.454-11.98-12.154-16.32a26.84 26.84 0 0 1 0-19.56c1.7-4.34 5.185-8.33 12.154-16.32l15.904-18.22c2.818-3.23 4.228-4.84 5.343-6.62a26.8 26.8 0 0 0 3.45-8.33c.466-2.04.611-4.18.902-8.46l1.64-24.13c.718-10.57 1.077-15.86 2.946-20.13A26.86 26.86 0 0 1 58.01 44.18c4.273-1.86 9.56-2.22 20.135-2.94l24.131-1.64c4.277-.29 6.415-.44 8.458-.9a26.8 26.8 0 0 0 8.33-3.45c1.773-1.12 3.388-2.53 6.618-5.35L143.903 14c7.986-6.97 11.978-10.45 16.322-12.15a26.72 26.72 0 0 1 19.55 0c4.344 1.7 8.336 5.18 16.322 12.15l18.222 15.9c3.23 2.82 4.845 4.23 6.618 5.35a26.8 26.8 0 0 0 8.33 3.45c2.043.46 4.181.61 8.458.9z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="316" height="286" fill="none" viewBox="0 0 316 286"><path fill="#d0bcff" d="M104.461 51.2c15.136-26.38 22.704-39.57 31.881-45.14a41.73 41.73 0 0 1 43.316 0c9.177 5.57 16.745 18.76 31.881 45.14l81.77 142.52c14.991 26.13 22.486 39.19 22.684 49.86a41.63 41.63 0 0 1-21.629 37.28c-9.37 5.14-24.445 5.14-54.594 5.14H76.23c-30.15 0-45.224 0-54.594-5.14a41.62 41.62 0 0 1-21.63-37.28c.199-10.67 7.694-23.73 22.685-49.86z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="320" height="320" fill="none" viewBox="0 0 320 320"><path fill="#d0bcff" d="M136.72 13.19c10.54-17.59 36.02-17.59 46.56 0l11.84 19.77c6.15 10.25 18.28 15.28 29.87 12.37l22.36-5.6c19.89-4.98 37.9 13.03 32.92 32.92l-5.6 22.36c-2.91 11.59 2.12 23.72 12.37 29.87l19.77 11.84c17.59 10.54 17.59 36.02 0 46.56l-19.77 11.84c-10.25 6.15-15.28 18.28-12.37 29.87l5.6 22.36c4.98 19.89-13.03 37.9-32.92 32.92l-22.36-5.6c-11.59-2.91-23.72 2.12-29.87 12.37l-11.84 19.77c-10.54 17.59-36.02 17.59-46.56 0l-11.84-19.77c-6.15-10.25-18.28-15.28-29.87-12.37l-22.364 5.6c-19.883 4.98-37.899-13.03-32.917-32.92l5.604-22.36c2.905-11.59-2.119-23.72-12.373-29.87l-19.773-11.84c-17.583-10.54-17.583-36.02 0-46.56l19.773-11.84c10.254-6.15 15.278-18.28 12.373-29.87l-5.604-22.36c-4.982-19.89 13.034-37.9 32.916-32.92l22.365 5.6c11.59 2.91 23.72-2.12 29.87-12.37z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="480" height="480" fill="none"><path fill="#d0bcff" d="M295.84 18.168c4.163 3.594 7.898 7.636 11.723 11.582 8.982 9.199 15.965 13.623 29.054 14.21 3.442.04 6.879.016 10.32-.023 24.023-.106 46.223 8.762 63.445 25.426 15.466 15.648 25.276 37.002 25.662 59.176-.023 3.55-.086 7.096-.171 10.645-.133 10.66 1.763 19.84 9.074 27.985 2.227 2.22 4.504 4.374 6.803 6.518 7.48 7.24 13.335 14.117 18.25 23.313l1.723 3.156c9.935 19.724 11.982 44.682 5.664 65.89-5.617 16.737-14.542 29.311-27.137 41.517-8.844 8.627-13.592 15.6-14.21 28.21-.044 3.536-.014 7.067.022 10.602.1 24.28-8.555 46.572-25.425 64.007-15.648 15.466-37.002 25.276-59.176 25.662-3.55-.023-7.096-.086-10.645-.171-10.66-.133-19.84 1.763-27.985 9.074-2.22 2.227-4.374 4.504-6.519 6.803-7.238 7.48-14.116 13.335-23.312 18.25l-3.156 1.723c-19.724 9.935-44.682 11.982-65.89 5.664-16.738-5.617-29.31-14.543-41.517-27.137-8.982-9.199-15.965-13.623-29.054-14.21-3.442-.04-6.879-.016-10.32.022-24.023.107-46.223-8.761-63.445-25.425-15.466-15.648-25.276-37.002-25.662-59.176.023-3.55.086-7.096.171-10.645.133-10.66-1.763-19.84-9.074-27.985-2.227-2.22-4.504-4.374-6.803-6.519C20.77 299.075 14.915 292.197 10 283l-1.723-3.156c-9.935-19.724-11.982-44.682-5.664-65.89 5.617-16.737 14.542-29.311 27.137-41.517 8.844-8.627 13.592-15.6 14.21-28.21.044-3.536.014-7.067-.023-10.602-.098-24.28 8.556-46.572 25.426-64.007 15.648-15.466 37.002-25.276 59.176-25.662 3.55.023 7.096.086 10.645.171 10.66.133 19.84-1.763 27.985-9.074 2.22-2.227 4.374-4.504 6.518-6.803C180.928 20.77 187.804 14.915 197 10l3.156-1.723c30.418-15.321 69.005-11.063 95.684 9.891M196 50a154 154 0 0 0-2.875 3.5c-9.82 11.895-25.259 19.027-40.367 20.902a164 164 0 0 1-16.782.508c-16.253-.278-30.131 4.27-42.66 14.828-10.325 10.081-17.964 24.122-18.388 38.735-.002 2.78.027 5.56.072 8.34.309 19.165-3.59 37.379-17.352 51.62a813 813 0 0 1-5.515 5.294c-11.667 11.161-20.677 23.997-21.371 40.68-.409 18.723 3.98 33.495 17.015 47.402a71 71 0 0 0 5.723 5.066c11.895 9.82 19.027 25.259 20.902 40.367.465 5.61.617 11.153.508 16.782-.278 16.253 4.27 30.131 14.828 42.66 10.081 10.325 24.122 17.964 38.735 18.388 2.78.002 5.56-.027 8.34-.072 19.165-.309 37.379 3.59 51.62 17.352a810 810 0 0 1 5.294 5.515c11.161 11.667 23.997 20.677 40.68 21.371 18.723.409 33.495-3.98 47.402-17.015a71 71 0 0 0 5.066-5.723c9.82-11.895 25.259-19.027 40.367-20.902a164 164 0 0 1 16.782-.508c16.253.278 30.131-4.27 42.66-14.828 10.325-10.081 17.964-24.122 18.388-38.735a487 487 0 0 0-.072-8.34c-.309-19.165 3.59-37.379 17.352-51.62a810 810 0 0 1 5.515-5.294c11.667-11.161 20.677-23.997 21.371-40.68.409-18.723-3.98-33.495-17.015-47.402a71 71 0 0 0-5.723-5.066c-11.895-9.82-19.027-25.259-20.902-40.367a164 164 0 0 1-.508-16.782c.278-16.253-4.27-30.131-14.828-42.66-10.081-10.325-24.122-17.964-38.735-18.388a487 487 0 0 0-8.34.072c-19.165.309-37.379-3.59-51.62-17.352a813 813 0 0 1-5.294-5.515c-11.161-11.667-23.997-20.677-40.68-21.371C225.65 30.327 210.23 35.567 196 50"/><animateTransform attributeName="transform" calcMode="linear" dur="8s" from="360" repeatCount="indefinite" to="0" type="rotate"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1220" height="75" viewBox="610 1101 1220 75"><path fill="#d0bcff" d="M1870.425 1173.746c-29.448 0-58.665-7.477-84.493-21.622l-.09-.049c-43.555-23.82-95.546-23.809-139.091.039l-.113.062c-25.803 14.109-54.984 21.567-84.394 21.568-29.449 0-58.667-7.478-84.495-21.623-43.554-23.852-95.539-23.865-139.089-.052l-.092.051c-25.83 14.146-55.048 21.623-84.497 21.623-29.423 0-58.613-7.463-84.425-21.584l-.077-.042c-43.572-23.863-95.596-23.862-139.164-.001l-.085.046c-25.809 14.117-55.001 21.581-84.418 21.581h-.001c-29.45-.001-58.669-7.479-84.498-21.625-43.534-23.845-95.513-23.863-139.063-.058l-.108.06c-25.829 14.146-55.047 21.623-84.496 21.623-29.398 0-58.566-7.451-84.362-21.551l-.142-.075c-43.568-23.863-95.593-23.863-139.163 0l-.081.043c-25.811 14.12-55.001 21.583-84.421 21.583-29.45 0-58.668-7.478-84.497-21.624-7.521-4.118-10.278-13.554-6.159-21.074s13.554-10.277 21.074-6.158c43.57 23.862 95.593 23.864 139.163 0l.098-.053c25.807-14.114 54.991-21.573 84.406-21.573 29.398 0 58.567 7.451 84.364 21.55l.14.076c43.534 23.843 95.508 23.864 139.056.059l.113-.063c25.828-14.145 55.049-21.622 84.496-21.622h.002c29.449 0 58.668 7.478 84.497 21.625 43.57 23.863 95.595 23.862 139.165.001q.032-.019.065-.036c25.813-14.124 55.011-21.591 84.438-21.591 29.42 0 58.61 7.463 84.421 21.582l.082.045c43.539 23.847 95.521 23.862 139.074.049l.096-.053c25.829-14.146 55.047-21.623 84.496-21.623s58.667 7.477 84.496 21.623c43.58 23.867 95.604 23.866 139.172.005l.118-.064c25.803-14.108 54.98-21.564 84.389-21.564 29.448-.001 58.666 7.476 84.494 21.62l.114.063c43.549 23.807 95.528 23.791 139.063-.051 7.52-4.121 16.955-1.361 21.073 6.159 4.119 7.521 1.361 16.955-6.159 21.073-25.828 14.146-55.045 21.622-84.492 21.622"><animateTransform attributeName="transform" calcMode="linear" dur="1s" from="0 0" repeatCount="indefinite" to="312.5 0" type="translate"/></path></svg>
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@stackific/md3",
3
+ "version": "0.1.0",
4
+ "description": "Material Design 3 framework — SCSS + plain-JS. M3 tokens, palette utilities, dialogs, menus, sliders, snackbars; optional runtime theme generation when the consumer brings material-dynamic-colors.",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "author": "Stackific Inc.",
8
+ "homepage": "https://github.com/stackific/md3#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/stackific/md3.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/stackific/md3/issues"
15
+ },
16
+ "keywords": [
17
+ "material-design",
18
+ "material-design-3",
19
+ "material-you",
20
+ "m3",
21
+ "design-system",
22
+ "design-tokens",
23
+ "scss",
24
+ "css"
25
+ ],
26
+ "main": "dist/md3.js",
27
+ "style": "dist/md3.css",
28
+ "exports": {
29
+ ".": "./dist/md3.js",
30
+ "./style": "./dist/md3.css",
31
+ "./fonts/*": "./dist/fonts/*",
32
+ "./shapes/*": "./dist/shapes/*",
33
+ "./src/*": "./src/*",
34
+ "./package.json": "./package.json"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "src",
39
+ "NOTICE",
40
+ "THIRD-PARTY-NOTICES"
41
+ ],
42
+ "engines": {
43
+ "node": ">=20"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "scripts": {
49
+ "build": "node scripts/build-palette.mjs && vite build",
50
+ "demo": "node scripts/build-palette.mjs && vite build && pnpm -C demo install && pnpm -C demo run dev",
51
+ "demo:install": "pnpm -C demo install",
52
+ "theme": "node scripts/theme.mjs",
53
+ "palette": "node scripts/build-palette.mjs",
54
+ "ports:kill": "bash scripts/kill-ports.sh",
55
+ "prepublishOnly": "pnpm run build"
56
+ },
57
+ "devDependencies": {
58
+ "material-dynamic-colors": "^1.1.4",
59
+ "playwright": "^1.60.0",
60
+ "sass": "^1.83.0",
61
+ "vite": "^6.0.0"
62
+ }
63
+ }
package/src/main.js ADDED
@@ -0,0 +1,5 @@
1
+ // Library entry. Pulls the SCSS bundle (Vite emits md3.css) and boots the
2
+ // vanilla-JS runtime, exposing window.ui for inline data-ui handlers.
3
+
4
+ import "./styles/md3.scss";
5
+ import "./runtime/md3.js";
@@ -0,0 +1,72 @@
1
+ import {
2
+ addClass, next, prev, hasTag, insertBefore, wait, create,
3
+ hasClass, removeClass, on, off, queryAllDataUi, blurActiveElement, query, onWeak,
4
+ } from "../utils.js";
5
+
6
+ const _dialogs = [];
7
+
8
+ function onKeydownDialog(e) {
9
+ if (e.key === "Escape") {
10
+ const dialog = e.currentTarget;
11
+ void updateDialog(dialog, dialog);
12
+ }
13
+ }
14
+
15
+ function focusOnDialogOrElement(dialog) {
16
+ const element = query("[autofocus]", dialog) ?? dialog;
17
+ element.focus();
18
+ }
19
+
20
+ function closeDialog(dialog, overlay) {
21
+ removeClass(queryAllDataUi(dialog.id), "active");
22
+ removeClass(dialog, "active");
23
+ removeClass(overlay, "active");
24
+
25
+ dialog.close();
26
+ _dialogs.pop();
27
+
28
+ const previousDialog = _dialogs[_dialogs.length - 1];
29
+ if (previousDialog) previousDialog.focus();
30
+ }
31
+
32
+ async function openDialog(dialog, overlay, isModal, from) {
33
+ if (!hasTag(from, "button") && !hasClass(from, "button") && !hasClass(from, "chip")) addClass(from, "active");
34
+ addClass(overlay, "active");
35
+ addClass(dialog, "active");
36
+
37
+ if (isModal) dialog.showModal();
38
+ else dialog.show();
39
+
40
+ await wait(90);
41
+
42
+ if (!isModal) on(dialog, "keydown", onKeydownDialog, false);
43
+ _dialogs.push(dialog);
44
+ focusOnDialogOrElement(dialog);
45
+ }
46
+
47
+ function onClickOverlay(e) {
48
+ const overlay = e.currentTarget;
49
+ const dialog = next(overlay);
50
+ if (hasTag(dialog, "dialog")) closeDialog(dialog, overlay);
51
+ }
52
+
53
+ export async function updateDialog(from, dialog) {
54
+ blurActiveElement();
55
+
56
+ let overlay = prev(dialog);
57
+ const isActive = hasClass(dialog, "active") || dialog.open;
58
+ const isModal = hasClass(dialog, "modal");
59
+
60
+ if (!isModal) off(dialog, "keydown", onKeydownDialog, false);
61
+
62
+ if (!hasClass(overlay, "overlay")) {
63
+ overlay = create({ class: "overlay" });
64
+ insertBefore(overlay, dialog);
65
+ await wait(90);
66
+ }
67
+
68
+ if (!isModal) onWeak(overlay, "click", onClickOverlay, false);
69
+
70
+ if (isActive) closeDialog(dialog, overlay);
71
+ else void openDialog(dialog, overlay, isModal, from);
72
+ }
@@ -0,0 +1,181 @@
1
+ import {
2
+ query, next, prev, hasType, parent, queryAll, onWeak,
3
+ isChrome, isMac, isIOS, rootSizeInPixels,
4
+ } from "../utils.js";
5
+
6
+ function updatePlaceholder(element) {
7
+ if (!element.placeholder) element.placeholder = " ";
8
+ }
9
+
10
+ function onClickLabel(e) {
11
+ const label = e.currentTarget;
12
+ const field = parent(label);
13
+ const input = query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea", field);
14
+ if (input) input.focus();
15
+ }
16
+
17
+ function onFocusInput(e) {
18
+ updateInput(e.currentTarget);
19
+ }
20
+
21
+ function onBlurInput(e) {
22
+ updateInput(e.currentTarget);
23
+ }
24
+
25
+ function onChangeFile(e) {
26
+ updateFile(e.currentTarget);
27
+ }
28
+
29
+ function onChangeColor(e) {
30
+ updateColor(e.currentTarget);
31
+ }
32
+
33
+ function onKeydownFile(e) {
34
+ updateFile(e.currentTarget, e);
35
+ }
36
+
37
+ function onKeydownColor(e) {
38
+ updateColor(e.currentTarget, e);
39
+ }
40
+
41
+ function onPasswordIconClick(e) {
42
+ const icon = e.currentTarget;
43
+ const input = query("input", parent(icon));
44
+ if (input && icon.textContent?.includes("visibility")) {
45
+ if (input.type === "password") {
46
+ input.type = "text";
47
+ icon.textContent = "visibility_off";
48
+ } else {
49
+ input.type = "password";
50
+ icon.textContent = "visibility";
51
+ }
52
+ }
53
+ }
54
+
55
+ function onInputTextarea(e) {
56
+ updateTextarea(e.currentTarget);
57
+ }
58
+
59
+ function onClickLabelDelegation(e) {
60
+ const from = e.target.closest(".field > label");
61
+ if (!from) return;
62
+
63
+ Object.defineProperty(e, "currentTarget", { value: from, configurable: true });
64
+ onClickLabel(e);
65
+ }
66
+
67
+ function updateAllLabels() {
68
+ const body = document.body;
69
+ if (!body) return;
70
+
71
+ onWeak(body, "click", onClickLabelDelegation);
72
+ }
73
+
74
+ function updateAllInputs() {
75
+ const inputs = queryAll(".field > input:not([type=file], [type=color], [type=range])");
76
+ for (let i = 0; i < inputs.length; i++) {
77
+ onWeak(inputs[i], "focus", onFocusInput);
78
+ onWeak(inputs[i], "blur", onBlurInput);
79
+ updateInput(inputs[i]);
80
+ }
81
+ }
82
+
83
+ function updateAllSelects() {
84
+ const selects = queryAll(".field > select");
85
+ for (let i = 0; i < selects.length; i++) {
86
+ onWeak(selects[i], "focus", onFocusInput);
87
+ onWeak(selects[i], "blur", onBlurInput);
88
+ }
89
+ }
90
+
91
+ function updateAllFiles() {
92
+ const files = queryAll(".field > input[type=file]");
93
+ for (let i = 0; i < files.length; i++) {
94
+ onWeak(files[i], "change", onChangeFile);
95
+ updateFile(files[i]);
96
+ }
97
+ }
98
+
99
+ function updateAllColors() {
100
+ const colors = queryAll(".field > input[type=color]");
101
+ for (let i = 0; i < colors.length; i++) {
102
+ onWeak(colors[i], "change", onChangeColor);
103
+ updateColor(colors[i]);
104
+ }
105
+ }
106
+
107
+ function updateAllTextareas() {
108
+ const textareas = queryAll(".field > textarea");
109
+ for (let i = 0; i < textareas.length; i++) {
110
+ onWeak(textareas[i], "focus", onFocusInput);
111
+ onWeak(textareas[i], "blur", onBlurInput);
112
+ updatePlaceholder(textareas[i]);
113
+
114
+ if (isChrome && !isMac && !isIOS) continue;
115
+
116
+ onWeak(textareas[i], "input", onInputTextarea);
117
+ updateTextarea(textareas[i]);
118
+ }
119
+ }
120
+
121
+ function updateAllPasswordIcons() {
122
+ const icons = queryAll(".field:has(> input[type=password]) > i, a");
123
+ for (let i = 0; i < icons.length; i++) onWeak(icons[i], "click", onPasswordIconClick);
124
+ }
125
+
126
+ function updateInput(input) {
127
+ if (hasType(input, "number") && !input.value) input.value = "";
128
+ updatePlaceholder(input);
129
+ }
130
+
131
+ function updateFile(input, e) {
132
+ if (e?.key === "Enter") {
133
+ const previousInput = prev(input);
134
+ if (!hasType(previousInput, "file")) return;
135
+ previousInput.click();
136
+ return;
137
+ }
138
+
139
+ const nextInput = next(input);
140
+ if (!hasType(nextInput, "text")) return;
141
+ nextInput.value = input.files ? Array.from(input.files).map((x) => x.name).join(", ") : "";
142
+ nextInput.readOnly = true;
143
+ onWeak(nextInput, "keydown", onKeydownFile, false);
144
+ updateInput(nextInput);
145
+ }
146
+
147
+ function updateColor(input, e) {
148
+ if (e?.key === "Enter") {
149
+ const previousInput = prev(input);
150
+ if (!hasType(previousInput, "color")) return;
151
+ previousInput.click();
152
+ return;
153
+ }
154
+
155
+ const nextInput = next(input);
156
+ if (!hasType(nextInput, "text")) return;
157
+ nextInput.readOnly = true;
158
+ nextInput.value = input.value;
159
+ onWeak(nextInput, "keydown", onKeydownColor, false);
160
+ updateInput(nextInput);
161
+ }
162
+
163
+ function updateTextarea(textarea) {
164
+ updatePlaceholder(textarea);
165
+
166
+ if (textarea.hasAttribute("rows")) return;
167
+
168
+ const rootSize = rootSizeInPixels();
169
+ textarea.style.blockSize = "auto";
170
+ textarea.style.blockSize = `${textarea.scrollHeight - rootSize}px`;
171
+ }
172
+
173
+ export function updateAllFields() {
174
+ updateAllLabels();
175
+ updateAllInputs();
176
+ updateAllSelects();
177
+ updateAllFiles();
178
+ updateAllColors();
179
+ updateAllTextareas();
180
+ updateAllPasswordIcons();
181
+ }
@@ -0,0 +1,42 @@
1
+ import {
2
+ query, queryAll, addClass, on, off, hasTag, hasClass, removeClass, blurActiveElement,
3
+ } from "../utils.js";
4
+
5
+ let _timeoutMenu;
6
+
7
+ function onClickDocument(e) {
8
+ off(document.body, "click", onClickDocument);
9
+ const body = e.target;
10
+ const menus = queryAll("menu.active");
11
+ for (let i = 0; i < menus.length; i++) updateMenu(body, menus[i], e);
12
+ }
13
+
14
+ function focusOnMenuOrInput(menu) {
15
+ setTimeout(() => {
16
+ const input = query(".field > input", menu);
17
+ if (input) input.focus();
18
+ else menu.focus();
19
+ }, 90);
20
+ }
21
+
22
+ export function updateMenu(from, menu, e) {
23
+ if (_timeoutMenu) clearTimeout(_timeoutMenu);
24
+
25
+ _timeoutMenu = setTimeout(() => {
26
+ on(document.body, "click", onClickDocument);
27
+ if (!hasTag(document.activeElement, "input")) blurActiveElement();
28
+
29
+ const isActive = hasClass(menu, "active");
30
+ const isEvent = e?.target === from;
31
+ const isChild = !!from.closest("menu");
32
+
33
+ if ((!isActive && isChild) || (isActive && isEvent)) {
34
+ removeClass(menu, "active");
35
+ return;
36
+ }
37
+
38
+ removeClass(queryAll("menu.active"), "active");
39
+ addClass(menu, "active");
40
+ focusOnMenuOrInput(menu);
41
+ }, 90);
42
+ }
@@ -0,0 +1,7 @@
1
+ import { addClass, parent, removeClass, queryAll } from "../utils.js";
2
+
3
+ export function updatePage(page) {
4
+ const container = parent(page);
5
+ if (container) removeClass(queryAll(":scope > .page", container), "active");
6
+ addClass(page, "active");
7
+ }
@@ -0,0 +1,35 @@
1
+ import { queryAll, hasTag, off, on, isMac, isIOS, isChrome, hasClass } from "../utils.js";
2
+
3
+ function onInputDocument(e) {
4
+ const progress = e.target;
5
+
6
+ if (hasTag(progress, "progress")) {
7
+ updateProgress(progress);
8
+ } else {
9
+ updateAllProgress();
10
+ }
11
+ }
12
+
13
+ function updateProgress(progress) {
14
+ requestAnimationFrame(() => {
15
+ if (!progress.hasAttribute("value") && !progress.hasAttribute("max")) {
16
+ const value = hasClass(progress, "circle") ? "50" : "100";
17
+ progress.style.setProperty("--_value", value);
18
+ progress.setAttribute("value", value);
19
+ progress.setAttribute("max", "100");
20
+ progress.classList.add("indeterminate");
21
+ } else {
22
+ progress.style.setProperty("--_value", String(progress.value));
23
+ }
24
+ });
25
+ }
26
+
27
+ export function updateAllProgress() {
28
+ if (isChrome && !isMac && !isIOS) return;
29
+
30
+ const body = document.body;
31
+ const progresses = queryAll("progress");
32
+ if (!progresses.length) off(body, "input", onInputDocument, false);
33
+ else on(body, "input", onInputDocument, false);
34
+ for (let i = 0; i < progresses.length; i++) updateProgress(progresses[i]);
35
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ query, queryAll, hasClass, on, off, parent, hasTag, onWeak, rootSizeInPixels,
3
+ } from "../utils.js";
4
+
5
+ function onInputDocument(e) {
6
+ const input = e.target;
7
+ if (!hasTag(input, "input") && !hasTag(input, "select")) return;
8
+
9
+ if (input.type === "range") {
10
+ input.focus();
11
+ updateRange(input);
12
+ } else {
13
+ updateAllRanges();
14
+ }
15
+ }
16
+
17
+ function onChangeInput(e) {
18
+ const isCoarse = window.matchMedia("(pointer: coarse)").matches;
19
+ if (!isCoarse) return;
20
+
21
+ const input = e.target;
22
+ input.blur();
23
+ }
24
+
25
+ function updateAllRanges() {
26
+ const body = document.body;
27
+ const ranges = queryAll(".slider > input[type=range]");
28
+ if (!ranges.length) off(body, "input", onInputDocument, false);
29
+ else on(body, "input", onInputDocument, false);
30
+ for (let i = 0; i < ranges.length; i++) updateRange(ranges[i]);
31
+ }
32
+
33
+ function updateRange(input) {
34
+ onWeak(input, "change", onChangeInput);
35
+
36
+ const label = parent(input);
37
+ const bar = query("span", label);
38
+ const inputs = queryAll("input", label);
39
+ if (!inputs.length || !bar) return;
40
+
41
+ const rootSize = rootSizeInPixels();
42
+ const thumb = hasClass(label, "max") ? 0 : (0.25 * rootSize * 100) / inputs[0].offsetWidth;
43
+ const percents = [];
44
+ const values = [];
45
+ for (let i = 0, n = inputs.length; i < n; i++) {
46
+ const min = parseFloat(inputs[i].min) || 0;
47
+ const max = parseFloat(inputs[i].max) || 100;
48
+ const value = parseFloat(inputs[i].value) || 0;
49
+ const percent = ((value - min) * 100) / (max - min);
50
+ const fix = thumb / 2 - (thumb * percent) / 100;
51
+ percents.push(percent + fix);
52
+ values.push(value);
53
+ }
54
+
55
+ let percent = percents[0];
56
+ let start = 0;
57
+ let end = 100 - start - percent;
58
+ let value1 = values[0];
59
+ let value2 = values[1] || 0;
60
+ if (inputs.length > 1) {
61
+ percent = Math.abs(percents[1] - percents[0]);
62
+ start = percents[1] > percents[0] ? percents[0] : percents[1];
63
+ end = 100 - start - percent;
64
+
65
+ if (value2 > value1) {
66
+ value1 = values[1] || 0;
67
+ value2 = values[0];
68
+ }
69
+ }
70
+
71
+ requestAnimationFrame(() => {
72
+ label.style.cssText = `--_start: ${start}%; --_end: ${end}%; --_value1: '${value1}'; --_value2: '${value2}';`;
73
+ });
74
+ }
75
+
76
+ export function updateAllSliders() {
77
+ updateAllRanges();
78
+ }