diff --git a/core/src/css/link.ionic.scss b/core/src/css/link.ionic.scss new file mode 100644 index 0000000000..9fc1f2828a --- /dev/null +++ b/core/src/css/link.ionic.scss @@ -0,0 +1,120 @@ +@use "../foundations/ionic.vars" as tokens; + +// Link: Shared Styles (Standalone & Underline) +// ------------------------------------------------------------------------------- +@mixin link-shared { + display: inline-flex; + + align-items: center; + + gap: 4px; + + transition: color 0.2s ease-in-out; + + font-weight: 400; + + text-decoration-color: inherit; + + text-underline-offset: 2px; + + cursor: pointer; + + // Link: Visited + // ------------------------------------------------------------------------------- + + &:visited { + color: tokens.$ionic-color-info-500; + } +} + +// Link: Standalone +// ------------------------------------------------------------------------------- + +@mixin ionic-link { + @include link-shared; + + // Link: Standalone - Hover + // ------------------------------------------------------------------------------- + + @media (any-hover: hover) { + &:hover { + text-decoration: underline; + } + } + + color: tokens.$ionic-color-info-400; + + text-decoration: none; + + // Link: Standalone - Focus + // ------------------------------------------------------------------------------- + + &:focus, + &.ion-focused { + outline: 2px solid tokens.$ionic-color-primary-100; + outline-offset: 2px; + + text-decoration: underline; + } + + // Link: Standalone - Active + // ------------------------------------------------------------------------------- + + &:active, + &.ion-activated { + color: tokens.$ionic-color-info-500; + + text-decoration: underline; + } +} + +a.ionic-link, +:not(a).ionic-link a { + @include ionic-link; +} + +// Link: Underline +// ------------------------------------------------------------------------------- + +@mixin ionic-link-underline { + @include link-shared; + + // Link: Underline - Hover + // ------------------------------------------------------------------------------- + + @media (any-hover: hover) { + &:hover { + color: tokens.$ionic-color-info-400; + } + } + + color: currentColor; + + text-decoration: underline; + + // Link: Underline - Focus + // ------------------------------------------------------------------------------- + + &:focus, + &.ion-focused { + outline: 2px solid tokens.$ionic-color-primary-100; + outline-offset: 2px; + + color: currentColor; + + text-decoration: none; + } + + // Link: Underline - Active + // ------------------------------------------------------------------------------- + + &:active, + &.ion-activated { + color: tokens.$ionic-color-info-500; + } +} + +a.ionic-link-underline, +:not(a).ionic-link-underline a { + @include ionic-link-underline; +} diff --git a/core/src/css/test/link/basic/index.html b/core/src/css/test/link/basic/index.html new file mode 100644 index 0000000000..2b921855bd --- /dev/null +++ b/core/src/css/test/link/basic/index.html @@ -0,0 +1,77 @@ + + +
+ +Lorem ipsum dolor sit amet consectetur, default link adipisicing elit.
+Lorem ipsum dolor sit amet consectetur, underline link adipisicing elit.
+