_icons.scss.erb 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <% manifest = JSON.parse(File.read('assets/images/sprites/docs.json')) %>
  2. %svg-icon {
  3. display: inline-block;
  4. vertical-align: top;
  5. width: 1rem;
  6. height: 1rem;
  7. pointer-events: none;
  8. fill: currentColor;
  9. }
  10. %doc-icon {
  11. content: '';
  12. display: block;
  13. width: 1rem;
  14. height: 1rem;
  15. background-image: image-url('sprites/docs.png');
  16. background-size: <%= manifest['icons_per_row'] %>rem <%= manifest['icons_per_row'] %>rem;
  17. }
  18. @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) {
  19. %doc-icon { background-image: image-url('sprites/docs@2x.png'); }
  20. }
  21. html._theme-dark {
  22. %darkIconFix {
  23. filter: invert(100%) grayscale(100%);
  24. -webkit-filter: invert(100%) grayscale(100%);
  25. }
  26. }
  27. <%=
  28. items = []
  29. manifest['items'].each do |item|
  30. rules = []
  31. rules << "background-position: -#{item['col']}rem -#{item['row']}rem;"
  32. rules << "@extend %darkIconFix !optional;" if item['dark_icon_fix']
  33. items << "._icon-#{item['type']}:before { #{rules.join(' ')} }"
  34. end
  35. items.join('')
  36. %>