aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/Pagination/Pagination.module.scss
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-03-09 00:38:02 +0100
committerGitHub <noreply@github.com>2022-03-09 00:38:02 +0100
commit5b6639a3cf9b6c63045cb82e6ef1a43b0742c367 (patch)
tree4e7cebf9f6b094d405e96febe743fea514cfca9f /src/components/Pagination/Pagination.module.scss
parentb0d9d8cb1c8c4a4d2b9234bbfdc7195fb563b21a (diff)
feat: provide pagination for users with js disabled (#13)
* chore: add a Pagination component * chore: add blog pages * chore: fallback to page number based navigation if JS disabled * chore: update translation
Diffstat (limited to 'src/components/Pagination/Pagination.module.scss')
-rw-r--r--src/components/Pagination/Pagination.module.scss92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/components/Pagination/Pagination.module.scss b/src/components/Pagination/Pagination.module.scss
new file mode 100644
index 0000000..4d74d1b
--- /dev/null
+++ b/src/components/Pagination/Pagination.module.scss
@@ -0,0 +1,92 @@
+@use "@styles/abstracts/functions" as fun;
+@use "@styles/abstracts/mixins" as mix;
+@use "@styles/abstracts/placeholders";
+
+.list {
+ @extend %flex-list;
+ justify-content: center;
+
+ row-gap: var(--spacing-sm);
+}
+
+.link {
+ display: block;
+ padding: var(--spacing-xs) var(--spacing-sm);
+ background: var(--color-bg);
+ border: fun.convert-px(2) solid var(--color-primary);
+ box-shadow: fun.convert-px(2) fun.convert-px(2) 0 0
+ var(--color-primary-darker);
+ font-weight: 600;
+ text-decoration: none;
+
+ @include mix.pointer("fine") {
+ padding: var(--spacing-2xs) var(--spacing-xs);
+ }
+
+ &--current {
+ padding: calc(var(--spacing-xs) / 1.5) var(--spacing-sm);
+ border-color: var(--color-primary-darker);
+ box-shadow: none;
+ color: var(--color-primary-darker);
+ transform: translateY(#{fun.convert-px(10)});
+
+ @include mix.pointer("fine") {
+ padding: calc(var(--spacing-2xs) / 1.5) var(--spacing-xs);
+ transform: translateY(#{fun.convert-px(7)});
+ }
+ }
+
+ &:not(.link--current) {
+ &:hover,
+ &:focus {
+ border-color: var(--color-primary-light);
+ box-shadow: fun.convert-px(2) fun.convert-px(2) 0 0
+ var(--color-primary-darker),
+ 0 fun.convert-px(2) fun.convert-px(2) fun.convert-px(1)
+ var(--color-shadow-dark),
+ 0 fun.convert-px(7) fun.convert-px(7) fun.convert-px(2)
+ var(--color-shadow-light);
+ color: var(--color-primary-light);
+ transform: translateY(#{fun.convert-px(-5)});
+ }
+
+ &:active {
+ padding: calc(var(--spacing-xs) / 1.5) var(--spacing-sm);
+ border-color: var(--color-primary-dark);
+ box-shadow: none;
+ color: var(--color-primary-dark);
+ transform: translateY(#{fun.convert-px(10)});
+
+ @include mix.pointer("fine") {
+ padding: calc(var(--spacing-2xs) / 1.5) var(--spacing-xs);
+ transform: translateY(#{fun.convert-px(7)});
+ }
+ }
+ }
+}
+
+.item {
+ position: relative;
+
+ &:first-child {
+ .link {
+ border-top-left-radius: fun.convert-px(4);
+ border-bottom-left-radius: fun.convert-px(4);
+ }
+ }
+
+ &:last-child {
+ .link {
+ border-top-right-radius: fun.convert-px(4);
+ border-bottom-right-radius: fun.convert-px(4);
+ }
+ }
+
+ &:not(:first-child) {
+ margin-left: fun.convert-px(-1);
+ }
+
+ &:not(:last-child) {
+ margin-right: fun.convert-px(-1);
+ }
+}