diff --git a/public/icons/x.svg b/public/icons/x.svg new file mode 100644 index 0000000..434d120 --- /dev/null +++ b/public/icons/x.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/styles/components.css b/src/styles/components.css index 746299d..4fd85aa 100644 --- a/src/styles/components.css +++ b/src/styles/components.css @@ -1,5 +1,22 @@ /* Generics */ +:root { + --text-large: 18px; + --text-navigation: 16px; + --text-medium: 15px; + --text-small: 11px; + + --color-title: darkslategray; + --color-default: darkslategray; + --color-emphasis: darkslateblue; + --color-meta: slategray; + + --gap-tiny: 4px; + --gap-small: 8px; + --gap-medium: 16px; + --gap-large: 32px; +} + .grow { flex: 1; } @@ -8,40 +25,58 @@ overflow-y: auto; } +strong { + font-weight: bold; +} + +i { + color: var(--color-emphasis); + font-style: italic; +} + /* Typography */ .text-navigation { color: black; - font-size: 16px; + font-size: var(--text-navigation); font-weight: bold; } .text-title { - color: darkslategray; - font-size: 18px; + color: var(--color-title); + font-size: var(--text-large); font-weight: bold; } .text-meta { - color: slategray; + color: var(--color-meta); font-family: monospace; - font-size: 11px; + font-size: var(--text-small); text-transform: uppercase; } .text-details { - color: darkslategray; - font-size: 15px; + color: var(--color-default); + font-size: var(--text-medium); line-height: 1.3rem; } .text-error { color: brown; font-family: monospace; - font-size: 11px; + font-size: var(--text-small); text-transform: uppercase; } +.link { + color: blue; + text-decoration: underline; +} + +.link:hover { + color: lightblue; +} + /* Page */ .page { @@ -49,7 +84,7 @@ display: grid; grid-template-columns: 1fr; grid-template-rows: 64px calc(100vh - 72px); /* Is there a keyword solution for this? */ - grid-gap: 8px; + grid-gap: var(--gap-small); height: 100vh; margin: auto; max-width: 800px; @@ -112,12 +147,32 @@ background-color: slategray; } +/* Promote / Demote buttons */ + +.promote-button { + background-color: powderblue; +} + +.promote-button:hover { + background-color: darkseagreen; +} + +.demote-button { + background-color: thistle; +} + +.demote-button:hover { + background-color: rosybrown; +} + +/* Icon buttons */ + .icon-button { display: flex; align-items: center; justify-content: middle; flex-shrink: 0; - padding: 4px; + padding: var(--gap-tiny); border: 1px solid rgba(0, 0, 0, 0); border-radius: 8px; } @@ -133,7 +188,7 @@ background-color: lavender; border: 1px solid darkslategray; box-shadow: 0px 5px 5px -5px darkslategray; - padding: 16px; + padding: var(--gap-medium); } .content-row { @@ -149,44 +204,48 @@ } .content-list > * + * { - margin-top: 16px; + margin-top: var(--gap-medium); } .content-query { display: flex; flex-direction: column; margin: auto; - padding: 30px 16px; + padding: 30px var(--gap-medium); } .content-query > label { - margin: 10px 0px; + margin: var(--gap-medium) 0px; } /* Margins and paddings */ .padding-small { - padding: 8px 16px; + padding: var(--gap-small) var(--gap-medium); } .margin-small { - margin: 10px 0px; + margin: var(--gap-small) 0px; +} + +.margin-title { + margin: var(--gap-large) 0px var(--gap-small); } .margin-paragraph { - margin: 20px 0px 10px; + margin: var(--gap-medium) 0px var(--gap-small); } /* Expression set page */ .page-with-padding { - padding: 8px 16px 16px; + padding: var(--gap-small) var(--gap-medium) var(--gap-medium); } .page-with-bottom-navigation { display: grid; grid-template-columns: 1fr; grid-template-rows: calc(100% - 88px) 80px; - grid-gap: 8px; + grid-gap: var(--gap-small); height: 100%; } diff --git a/src/styles/wiktionary.css b/src/styles/wiktionary.css index 87ad761..45aa921 100644 --- a/src/styles/wiktionary.css +++ b/src/styles/wiktionary.css @@ -1,36 +1,24 @@ -.wiktionary-content:first-child { - margin-top: 0 !important; -} - -.wiktionary-content h3 { - font-size: 18px; - margin: 14px 0px; -} - -.wiktionary-content h4 { - font-size: 18px; - margin: 14px 0px; -} - -.wiktionary-content p { - margin: 10px 0px; -} - -.wiktionary-content strong { - font-weight: bold; -} - -.wiktionary-content i { - color: darkslateblue; - font-style: italic; +.wiktionary-content h2, +h3, +h4 { + color: var(--color-title); + font-size: var(--text-large); + margin: var(--gap-medium) 0; + line-height: 1.3rem; } .wiktionary-content ol { padding-left: 16px; list-style: decimal; + margin: var(--gap-small) 0; } .wiktionary-content ul { padding-left: 16px; list-style: disc; + margin: var(--gap-small) 0; +} + +.wiktionary-content li { + margin: var(--gap-small) 0; } diff --git a/src/views/ExpressionPracticeView/DemoteExpressionButton.tsx b/src/views/ExpressionPracticeView/DemoteExpressionButton.tsx index 3730d54..09d716c 100644 --- a/src/views/ExpressionPracticeView/DemoteExpressionButton.tsx +++ b/src/views/ExpressionPracticeView/DemoteExpressionButton.tsx @@ -42,9 +42,10 @@ export function DemoteExpressionButton({ ]); return ( ); diff --git a/src/views/ExpressionPracticeView/PromoteExpressionButton.tsx b/src/views/ExpressionPracticeView/PromoteExpressionButton.tsx index 8b7d6b2..abca71e 100644 --- a/src/views/ExpressionPracticeView/PromoteExpressionButton.tsx +++ b/src/views/ExpressionPracticeView/PromoteExpressionButton.tsx @@ -21,9 +21,10 @@ export function PromoteExpressionButton({ return ( );