illustrations.html 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. ---
  2. title: SVG Illustrations
  3. page-header: SVG Illustrations
  4. page-menu: addons.illustrations
  5. layout: default
  6. permalink: illustrations.html
  7. ---
  8. {% assign first-illustration = '' %}
  9. {% for illustration in free-illustrations.autodark %}
  10. {% assign first-illustration = illustration[1] %}
  11. {% endfor %}
  12. {% assign skinColor = site.skinColors | first %}
  13. {% assign color = site.colors | first %}
  14. <div class="mb-7" style="--tblr-illustrations-primary: var(--tblr-color-primary); --tblr-illustrations-skin: {{ skinColor.hex }};" id="current-illustration-style">
  15. <div class="row row-cards">
  16. <div class="col-12">
  17. <div class="row row-cards row-deck g-4">
  18. <div class="col-md-7">
  19. <div class="card">
  20. <div class="card-body d-flex align-items-center">
  21. <div id="current-illustration">{{ first-illustration | replace: '<svg ', '<svg class="w-100 h-auto" ' }}</div>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="col-md-5">
  26. <div class="row">
  27. <div class="col-12">
  28. <div class="card">
  29. <div class="card-body">
  30. <div>
  31. <div class="form-label">Primary color</div>
  32. <div class="row g-2">
  33. <div class="col-auto">
  34. <label class="form-colorinput">
  35. <input name="color" type="radio" value="var(--tblr-color-primary)" class="form-colorinput-input js-select-color" checked />
  36. <span class="form-colorinput-color bg-primary"></span>
  37. </label>
  38. </div>
  39. <div class="col-auto">
  40. <label class="form-colorinput">
  41. <input name="color" type="radio" value="var(--tblr-bg-surface-inverted)" class="form-colorinput-input js-select-color" />
  42. <span class="form-colorinput-color bg-inverted"></span>
  43. </label>
  44. </div>
  45. {% for color in site.colors %}
  46. <div class="col-auto">
  47. <label class="form-colorinput">
  48. <input name="color" type="radio" value="{{ color[1].hex }}" class="form-colorinput-input js-select-color" />
  49. <span class="form-colorinput-color bg-{{ color[1].class }}"></span>
  50. </label>
  51. </div>
  52. {% endfor %}
  53. </div>
  54. <div class="form-label mt-4">Skin color</div>
  55. <div class="row g-2">
  56. {% for color in site.skinColors %}
  57. <div class="col-auto">
  58. <label class="form-colorinput">
  59. <input name="skin-color" type="radio" value="{{ color[1].hex }}" class="form-colorinput-input js-select-skin-color" {% if forloop.first %} checked{% endif %} />
  60. <span class="form-colorinput-color" style="background-color: {{ color[1].hex }}"></span>
  61. </label>
  62. </div>
  63. {% endfor %}
  64. </div>
  65. <div class="form-label mt-4">Select SVG illustration</div>
  66. <div class="row">
  67. {% for illustration in free-illustrations.autodark %}
  68. <div class="col-3">
  69. <label class="form-imagecheck mb-2">
  70. <input name="form-imagecheck" type="radio" value="{{ illustration[0] }}" class="form-imagecheck-input js-select-illustration" {% if forloop.last %} checked{% endif %}>
  71. <span class="form-imagecheck-figure">
  72. {{ illustration[1] | replace: '<svg ', '<svg class="w-100 h-auto" ' }}
  73. </span>
  74. </label>
  75. </div>
  76. {% endfor %}
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. <h2 class="page-title my-5">
  89. {{ illustrations | size | minus: 4 }} more SVG Illustrations
  90. </h2>
  91. <div class="row row-cards">
  92. <div class="col-lg-4">
  93. <div class="card card-md sticky-top">
  94. <div class="card-stamp card-stamp-lg">
  95. <div class="card-stamp-icon bg-primary">
  96. {% include "ui/icon.html" icon="brand-figma" %}
  97. </div>
  98. </div>
  99. <div class="card-body">
  100. <div class="row align-items-center">
  101. <div class="col-10">
  102. <h3 class="h1">Tabler Illustrations</h3>
  103. <div class="markdown text-secondary">
  104. Access a wide range of SVG illustrations for various projects. Effortlessly customize any illustration to align perfectly with your chosen color scheme!
  105. </div>
  106. <div class="mt-3">
  107. <a href="{{ site.illustrations.buy_link }}" class="btn btn-primary" target="_blank" rel="noopener">
  108. {% include "ui/icon.html" icon="download" %}
  109. Get lifetime access
  110. </a>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. <div class="col-lg-8">
  118. <div class="row row-cards">
  119. {% for illustration in illustrations %}
  120. <div class="col-6 col-md-3">
  121. <div class="card">
  122. <div class="card-body">
  123. <a href="{{ site.illustrations.buy_link }}" target="_blank">
  124. <img src="{{ page | relative }}/static/illustrations/light/{{ illustration }}.png" alt="{{ illustration }}" class="img-light" />
  125. <img src="{{ page | relative }}/static/illustrations/dark/{{ illustration }}.png" alt="{{ illustration }}" class="img-dark" />
  126. </a>
  127. </div>
  128. </div>
  129. </div>
  130. {% endfor %}
  131. </div>
  132. </div>
  133. </div>
  134. {% capture_global scripts %}
  135. <script>
  136. let skinColor = "{{ skin_color[1].hex }}",
  137. primaryColor = "{{ color[1].hex }}";
  138. const illustrations = {
  139. {% for illustration in free-illustrations.autodark %}
  140. "{{ illustration[0] }}": {
  141. svg: '{{ illustration[1] | replace: '<svg ', '<svg class="w-100 h-auto" ' | replace_regex: "\n", "\n" }}',
  142. },
  143. {% endfor %}
  144. }
  145. const selectIllustrations = document.querySelectorAll(".js-select-illustration"),
  146. currentIllustration = document.getElementById("current-illustration"),
  147. currentIllustrationCode = document.getElementById("current-illustration-code");
  148. document.querySelectorAll(".js-select-illustration").forEach((elem) => {
  149. elem.addEventListener("change", (e) => {
  150. const selectedId = e.target.value,
  151. selectedIllustration = illustrations[selectedId]
  152. currentIllustration.innerHTML = selectedIllustration.svg
  153. })
  154. })
  155. document.querySelectorAll(".js-select-color").forEach((elem) => {
  156. elem.addEventListener("change", (e) => {
  157. primaryColor = e.target.value
  158. document.getElementById("current-illustration-style").style.setProperty("--tblr-illustrations-primary", primaryColor)
  159. })
  160. })
  161. document.querySelectorAll(".js-select-skin-color").forEach((elem) => {
  162. elem.addEventListener("change", (e) => {
  163. skinColor = e.target.value
  164. document.getElementById("current-illustration-style").style.setProperty("--tblr-illustrations-skin", skinColor)
  165. })
  166. })
  167. </script>
  168. {% endcapture_global %}