_icons.scss 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. @use '../abstracts/variables' as v;
  2. @use 'sass:map';
  3. @use 'sass:color';
  4. // Base icon styles (shared)
  5. %icon-base {
  6. svg {
  7. width: 48px;
  8. height: 48px;
  9. fill: currentColor;
  10. color: v.$white;
  11. }
  12. }
  13. // Icon without transition
  14. .icon {
  15. @extend %icon-base;
  16. }
  17. // Icon with transition
  18. .icon-transition {
  19. @extend %icon-base;
  20. svg {
  21. transition: v.$transition-base;
  22. &:hover {
  23. transform: scale(1.1);
  24. color: v.$primary;
  25. }
  26. }
  27. }
  28. // Predefined sizes
  29. .sm svg { width: 24px; height: 24px; }
  30. .md svg { width: 48px; height: 48px; }
  31. .lg svg { width: 64px; height: 64px; }
  32. .xl svg { width: 77px; height: 77px; }
  33. .xxl svg { width: 100px; height: 100px; }
  34. // Predefined colors
  35. // Primary colors
  36. .primary svg { color: v.$primary; }
  37. .primary-light svg { color: v.$primary-light; }
  38. .primary-dark svg { color: v.$primary-dark; }
  39. // Secondary colors
  40. .secondary svg { color: map.get(map.get(v.$colors, 'secondary'), 'base'); }
  41. .secondary-light svg{ color: v.$white; }
  42. .secondary-dark svg { color: map.get(map.get(v.$colors, 'secondary'), 'dark'); }
  43. // Neutral colors
  44. .neutral-light svg { color: map.get(map.get(v.$colors, 'neutral'), 'light'); }
  45. .neutral-base svg { color: v.$gray; }
  46. .neutral-dark svg { color: v.$dark-gray; }
  47. .neutral-darker svg { color: v.$black; }
  48. // Basic colors
  49. .white svg { color: v.$white; }
  50. .gray svg { color: v.$gray; }
  51. .black svg { color: v.$black; }