Skip to content

[604] Updated footer with links and description - #211

Merged
VitalyyP merged 9 commits into
mainfrom
604-update-footer-with-links-and-email
Aug 14, 2025
Merged

[604] Updated footer with links and description#211
VitalyyP merged 9 commits into
mainfrom
604-update-footer-with-links-and-email

Conversation

@Anton-88

Copy link
Copy Markdown
Contributor

Updated footer with links and description

@Anton-88
Anton-88 requested a review from killev as a code owner August 11, 2025 18:34
@coderabbitai

coderabbitai Bot commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Replaces the previous simple footer with a new

containing .sf-footer__content, a top block with two tagline paragraphs, a links section (LinkedIn, mailto, privacy policy), and a bottom copyright line using {{ data.currentYear or '2025' }} with the ampersand escaped. Adds a new .sf-footer SCSS block with nested elements (.sf-footer__content, __top, __tagline, __links, __links-group, __links-item, __links-item--policy, __bottom) controlling layout, spacing, typography, responsive behavior, and hover states. Adjusts .sf-copy font-size/margins and adds .sf-footer .sf-copy { margin: 0; }. Adds $font-size-footer and $font-size-footer-mobile.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15 minutes

Possibly related PRs

Suggested reviewers

  • yuramax
  • IhorMasechko
  • killev
  • VitalyyP

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 604-update-footer-with-links-and-email

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions

github-actions Bot commented Aug 11, 2025

Copy link
Copy Markdown

🔍 Vulnerabilities of apostrophe-cms:test

📦 Image Reference apostrophe-cms:test
digestsha256:37208f4e5187f1131450c3445013a9ab57bad8351b841b2dda74de77a4bbece6
vulnerabilitiescritical: 1 high: 4 medium: 0 low: 0
platformlinux/amd64
size291 MB
packages984
📦 Base Image node:23-alpine
also known as
  • 23-alpine3.22
  • 23.11-alpine
  • 23.11-alpine3.22
  • 23.11.1-alpine
  • 23.11.1-alpine3.22
digestsha256:b9d38d589853406ff0d4364f21969840c3e0397087643aef8eede40edbb6c7cd
vulnerabilitiescritical: 0 high: 0 medium: 1 low: 1
critical: 1 high: 0 medium: 0 low: 0 form-data 4.0.2 (npm)

pkg:npm/form-data@4.0.2

critical 9.4: CVE--2025--7783 Use of Insufficiently Random Values

Affected range>=4.0.0
<4.0.4
Fixed version4.0.4
CVSS Score9.4
CVSS VectorCVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
EPSS Score0.076%
EPSS Percentile23rd percentile
Description

Summary

form-data uses Math.random() to select a boundary value for multipart form-encoded data. This can lead to a security issue if an attacker:

  1. can observe other values produced by Math.random in the target application, and
  2. can control one field of a request made using form-data

Because the values of Math.random() are pseudo-random and predictable (see: https://blog.securityevaluators.com/hacking-the-javascript-lottery-80cc437e3b7f), an attacker who can observe a few sequential values can determine the state of the PRNG and predict future values, includes those used to generate form-data's boundary value. The allows the attacker to craft a value that contains a boundary value, allowing them to inject additional parameters into the request.

This is largely the same vulnerability as was recently found in undici by parrot409 -- I'm not affiliated with that researcher but want to give credit where credit is due! My PoC is largely based on their work.

Details

The culprit is this line here: https://github.com/form-data/form-data/blob/426ba9ac440f95d1998dac9a5cd8d738043b048f/lib/form_data.js#L347

An attacker who is able to predict the output of Math.random() can predict this boundary value, and craft a payload that contains the boundary value, followed by another, fully attacker-controlled field. This is roughly equivalent to any sort of improper escaping vulnerability, with the caveat that the attacker must find a way to observe other Math.random() values generated by the application to solve for the state of the PRNG. However, Math.random() is used in all sorts of places that might be visible to an attacker (including by form-data itself, if the attacker can arrange for the vulnerable application to make a request to an attacker-controlled server using form-data, such as a user-controlled webhook -- the attacker could observe the boundary values from those requests to observe the Math.random() outputs). A common example would be a x-request-id header added by the server. These sorts of headers are often used for distributed tracing, to correlate errors across the frontend and backend. Math.random() is a fine place to get these sorts of IDs (in fact, opentelemetry uses Math.random for this purpose)

PoC

PoC here: https://github.com/benweissmann/CVE-2025-7783-poc

Instructions are in that repo. It's based on the PoC from https://hackerone.com/reports/2913312 but simplified somewhat; the vulnerable application has a more direct side-channel from which to observe Math.random() values (a separate endpoint that happens to include a randomly-generated request ID).

Impact

For an application to be vulnerable, it must:

  • Use form-data to send data including user-controlled data to some other system. The attacker must be able to do something malicious by adding extra parameters (that were not intended to be user-controlled) to this request. Depending on the target system's handling of repeated parameters, the attacker might be able to overwrite values in addition to appending values (some multipart form handlers deal with repeats by overwriting values instead of representing them as an array)
  • Reveal values of Math.random(). It's easiest if the attacker can observe multiple sequential values, but more complex math could recover the PRNG state to some degree of confidence with non-sequential values.

If an application is vulnerable, this allows an attacker to make arbitrary requests to internal systems.

critical: 0 high: 1 medium: 0 low: 0 async 0.9.2 (npm)

pkg:npm/async@0.9.2

high 7.8: CVE--2021--43138 OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities

Affected range<2.6.4
Fixed version2.6.4, 3.2.2
CVSS Score7.8
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
EPSS Score0.907%
EPSS Percentile75th percentile
Description

A vulnerability exists in Async through 3.2.1 (fixed in 3.2.2), which could let a malicious user obtain privileges via the mapValues() method.

critical: 0 high: 1 medium: 0 low: 0 linkifyjs 4.2.0 (npm)

pkg:npm/linkifyjs@4.2.0

high 8.8: CVE--2025--8101 Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

Affected range<4.3.2
Fixed version4.3.2
CVSS Score8.8
CVSS VectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N
EPSS Score0.060%
EPSS Percentile19th percentile
Description

Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') vulnerability in Linkify (linkifyjs) allows XSS Targeting HTML Attributes and Manipulating User-Controlled Variables.This issue affects Linkify: from 4.3.1 before 4.3.2.

critical: 0 high: 1 medium: 0 low: 0 connect-multiparty 2.2.0 (npm)

pkg:npm/connect-multiparty@2.2.0

high 7.8: CVE--2022--29623 Unrestricted Upload of File with Dangerous Type

Affected range<=2.2.0
Fixed versionNot Fixed
CVSS Score7.8
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
EPSS Score0.320%
EPSS Percentile54th percentile
Description

An arbitrary file upload vulnerability in the file upload module of Express Connect-Multiparty 2.2.0 allows attackers to execute arbitrary code via a crafted PDF file. NOTE: the Supplier has not verified this vulnerability report.

critical: 0 high: 1 medium: 0 low: 0 async 1.5.2 (npm)

pkg:npm/async@1.5.2

high 7.8: CVE--2021--43138 OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities

Affected range<2.6.4
Fixed version2.6.4, 3.2.2
CVSS Score7.8
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
EPSS Score0.907%
EPSS Percentile75th percentile
Description

A vulnerability exists in Async through 3.2.1 (fixed in 3.2.2), which could let a malicious user obtain privileges via the mapValues() method.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (3)
website/views/fragments/fragments.html (2)

40-45: Capitalize “LinkedIn” and add an accessible label

Brand name should be capitalized; aria-label clarifies destination and that it opens a new tab.

-        <a href="https://www.linkedin.com/company/speed-and-function/" 
-           class="sf-footer__links-item" 
-           target="_blank" 
-           rel="noopener noreferrer">
-          linkedin
+        <a href="https://www.linkedin.com/company/speed-and-function/" 
+           class="sf-footer__links-item" 
+           target="_blank" 
+           rel="noopener noreferrer"
+           aria-label="Speed and Function on LinkedIn (opens in a new tab)">
+          LinkedIn
         </a>

46-49: Improve accessibility for the email link

Consider an aria-label that explains the action to screen readers.

-        <a href="mailto:connect@speedandfunction.com" 
-           class="sf-footer__links-item">
+        <a href="mailto:connect@speedandfunction.com" 
+           class="sf-footer__links-item"
+           aria-label="Email us at connect@speedandfunction.com">
           connect@speedandfunction.com
         </a>
website/modules/asset/ui/src/scss/_footer.scss (1)

33-35: Avoid conflicting font declarations between container and items

.sf-footer__links sets font-size/weight, but .sf-footer__links-item overrides them. Define typography in one place to reduce specificity battles and future drift.

 .sf-footer__links {
   display: flex;
   flex-direction: column;
   align-items: flex-start;
   gap: 16px;
-  font-size: $font-size-body-small-mobile;
-  font-weight: $font-weight-300;
+  // Typography is defined on link items to avoid conflicts
   line-height: 120%;
 }
@@
 .sf-footer__links-item {
-  font-size: $font-size-body-small;
-  font-weight: $font-weight-normal;
+  font-size: $font-size-body-small;
+  font-weight: $font-weight-normal;
   color: $gray-500;
   text-decoration: none;
   transition: color 0.2s ease;

Alternatively, remove font-size/weight from the item and keep them on the container (but be consistent).

Also applies to: 58-60

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 336cb19 and 098841c.

📒 Files selected for processing (2)
  • website/modules/asset/ui/src/scss/_footer.scss (1 hunks)
  • website/views/fragments/fragments.html (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: yuramax
PR: speedandfunction/website#121
File: website/modules/asset/ui/src/scss/_vacancies.scss:99-102
Timestamp: 2025-05-26T15:57:01.766Z
Learning: In website/modules/asset/ui/src/scss/_vacancies.scss, the margin shorthand (e.g., `margin: 0 0 8px`) in `.sf-vacancies_footer h2` is intentionally used to reset all margins and set specific bottom margins, rather than using `margin-bottom` alone. This approach ensures clean baseline styling that doesn't inherit unwanted margins, while still allowing the sibling selector `.vacancy-card + .sf-vacancies_footer h2` to add top margins when a vacancy card precedes the footer.
📚 Learning: 2025-05-26T15:57:01.766Z
Learnt from: yuramax
PR: speedandfunction/website#121
File: website/modules/asset/ui/src/scss/_vacancies.scss:99-102
Timestamp: 2025-05-26T15:57:01.766Z
Learning: In website/modules/asset/ui/src/scss/_vacancies.scss, the margin shorthand (e.g., `margin: 0 0 8px`) in `.sf-vacancies_footer h2` is intentionally used to reset all margins and set specific bottom margins, rather than using `margin-bottom` alone. This approach ensures clean baseline styling that doesn't inherit unwanted margins, while still allowing the sibling selector `.vacancy-card + .sf-vacancies_footer h2` to add top margins when a vacancy card precedes the footer.

Applied to files:

  • website/modules/asset/ui/src/scss/_footer.scss
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: lint
  • GitHub Check: e2e-tests
  • GitHub Check: unit-tests
  • GitHub Check: security-scan
🔇 Additional comments (3)
website/views/fragments/fragments.html (1)

51-53: Confirm Privacy Policy Route and Use Dynamic Linking

File: website/views/fragments/fragments.html
Lines: 51–53

  <a href="/privacy-policy" class="sf-footer__links-item">
    privacy policy
  </a>
  • Verify that a page is published at “/privacy-policy” and that it correctly incorporates any locale or base-URL prefixes your site uses.
  • If this page is managed by your CMS, replace the hardcoded href with your template’s link helper or a configuration value (for example, a privacyPolicyPage._url field or linkFor('privacyPolicy') helper) so slug, locale and base-URL changes propagate automatically.
website/modules/asset/ui/src/scss/_footer.scss (2)

1-4: Footer “sticky to bottom” depends on page layout

margin-top: auto works only if a flex column layout with min-height: 100vh is applied to the page wrapper. Verify the site shell supports this; otherwise the footer may not stick to the bottom on short pages.


57-69: Ensure accessible focus indication meets contrast requirements

Hover/focus only changes color/underline. That’s fine if default focus outline remains. Verify $gray-500 -> $gray-400 provides sufficient contrast at small font sizes, and confirm outline is not disabled elsewhere.

Comment thread website/modules/asset/ui/src/scss/_footer.scss Outdated
Comment thread website/modules/asset/ui/src/scss/_footer.scss
Comment thread website/views/fragments/fragments.html Outdated
Comment thread website/views/fragments/fragments.html Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 12, 2025
@Anton-88
Anton-88 requested a review from VitalyyP August 12, 2025 13:29
@Anton-88 Anton-88 self-assigned this Aug 12, 2025
@Anton-88 Anton-88 changed the title Updated footer with links and description [604] Updated footer with links and description Aug 13, 2025
@Anton-88
Anton-88 removed the request for review from VitalyyP August 13, 2025 08:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
website/modules/asset/ui/src/scss/_variables.scss (1)

63-66: DRY the mobile var since it equals desktop (single source of truth).

Both variables are set to 11px. Reference the desktop var for the mobile var to simplify future updates.

-// Footer text sizes
-$font-size-footer: 11px;
-$font-size-footer-mobile: 11px;
+// Footer text sizes
+$font-size-footer: 11px;
+$font-size-footer-mobile: $font-size-footer;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 20a66c1 and 496dc3f.

📒 Files selected for processing (2)
  • website/modules/asset/ui/src/scss/_footer.scss (1 hunks)
  • website/modules/asset/ui/src/scss/_variables.scss (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • website/modules/asset/ui/src/scss/_footer.scss
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-05-26T15:57:01.766Z
Learnt from: yuramax
PR: speedandfunction/website#121
File: website/modules/asset/ui/src/scss/_vacancies.scss:99-102
Timestamp: 2025-05-26T15:57:01.766Z
Learning: In website/modules/asset/ui/src/scss/_vacancies.scss, the margin shorthand (e.g., `margin: 0 0 8px`) in `.sf-vacancies_footer h2` is intentionally used to reset all margins and set specific bottom margins, rather than using `margin-bottom` alone. This approach ensures clean baseline styling that doesn't inherit unwanted margins, while still allowing the sibling selector `.vacancy-card + .sf-vacancies_footer h2` to add top margins when a vacancy card precedes the footer.

Applied to files:

  • website/modules/asset/ui/src/scss/_variables.scss
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: e2e-tests
  • GitHub Check: unit-tests
  • GitHub Check: lint
  • GitHub Check: security-scan

Comment thread website/modules/asset/ui/src/scss/_variables.scss
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 13, 2025
Anton-88 and others added 3 commits August 13, 2025 21:19
…ub.com/speedandfunction/website into 604-update-footer-with-links-and-email

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
website/modules/asset/ui/src/scss/_footer.scss (2)

71-76: BEM modifier for policy spacing looks good (replaces :last-child dependency)

This decouples styling from DOM order and is the right move.


83-85: Scoped margin reset for .sf-copy is correct

Thanks for avoiding a global reset and limiting it to the footer context.

🧹 Nitpick comments (4)
website/modules/asset/ui/src/scss/_footer.scss (4)

20-26: Promote desktop font-size at breakpoint for tagline

Tagline font-size stays on the mobile token at larger breakpoints. If $font-size-footer is intended for desktop, switch it at breakpoint-medium.

Apply:

 .sf-footer__tagline {
   font-size: $font-size-footer-mobile;
   font-weight: $font-weight-300;
   color: $gray-300;
   margin: 0;
   line-height: 120%;
+  @include breakpoint-medium {
+    font-size: $font-size-footer;
+  }
 }

28-43: Use desktop footer font-size at medium breakpoint for links

Same as tagline: font-size remains on the mobile token on desktop. Consider bumping inside the existing breakpoint block.

Apply:

   @include breakpoint-medium {
     flex-direction: row;
     justify-content: space-between;
     gap: 32px;
     text-align: left;
+    font-size: $font-size-footer;
   }

57-69: De-duplicate font-size: let items inherit from the container

Since .sf-footer__links already defines the font-size, you can drop the font-size on .sf-footer__links-item and let it inherit. This reduces repetition and keeps desktop scaling centralized (especially if adopting the previous suggestion).

Apply:

 .sf-footer__links-item {
-  font-size: $font-size-footer-mobile;
   font-weight: $font-weight-normal;
   color: $gray-500;
   text-decoration: none;
   transition: color 0.2s ease;

28-43: Accessibility nit: ensure focus states are clearly visible

You add underline on :focus, which is good. Consider using :focus-visible specifically to avoid unnecessary styling on mouse focus and ensure keyboard focus is prominent. Also confirm default outlines aren’t suppressed elsewhere globally.

Possible enhancement (if desired):

 .sf-footer__links-item {
   ...
-  &:hover,
-  &:focus {
+  &:hover,
+  &:focus-visible {
     color: $gray-400;
     text-decoration: underline;
   }
 }

Also applies to: 57-69

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these settings in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 496dc3f and 178a0c6.

📒 Files selected for processing (1)
  • website/modules/asset/ui/src/scss/_footer.scss (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-05-26T15:57:01.766Z
Learnt from: yuramax
PR: speedandfunction/website#121
File: website/modules/asset/ui/src/scss/_vacancies.scss:99-102
Timestamp: 2025-05-26T15:57:01.766Z
Learning: In website/modules/asset/ui/src/scss/_vacancies.scss, the margin shorthand (e.g., `margin: 0 0 8px`) in `.sf-vacancies_footer h2` is intentionally used to reset all margins and set specific bottom margins, rather than using `margin-bottom` alone. This approach ensures clean baseline styling that doesn't inherit unwanted margins, while still allowing the sibling selector `.vacancy-card + .sf-vacancies_footer h2` to add top margins when a vacancy card precedes the footer.

Applied to files:

  • website/modules/asset/ui/src/scss/_footer.scss
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: lint
  • GitHub Check: e2e-tests
  • GitHub Check: unit-tests
  • GitHub Check: security-scan
🔇 Additional comments (2)
website/modules/asset/ui/src/scss/_footer.scss (2)

1-13: Footer container structure and spacing read well

The base footer block, max-width container, and responsive paddings are coherent and predictable. Margin-top: auto is appropriate for sticky-to-bottom layouts in flex containers.


88-94: .sf-copy is local to the footer — global-regression concern not applicable

Search shows .sf-copy only appears in:

  • website/modules/asset/ui/src/scss/_footer.scss (nested .sf-footer .sf-copy and a global .sf-copy block). No other matches found.

You can ignore the original warning about global impact because the class is defined only in the footer file. If you still want to future-proof and scope the font-size to the footer, apply the suggested change (optional):

 .sf-footer {
   .sf-copy {
     margin: 0;
+    font-size: $font-size-footer-mobile;
+    @include breakpoint-medium {
+      font-size: $font-size-footer;
+    }
   }
 }
@@
 .sf-copy {
   text-align: center;
   font-weight: $font-weight-medium;
-  font-size: $font-size-body-medium-mobile;
+  font-size: $font-size-body-small;
   line-height: 140%;
   color: $gray-300;
 }

Likely an incorrect or invalid review comment.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 14, 2025
@Anton-88
Anton-88 requested a review from VitalyyP August 14, 2025 08:28

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (5)
website/modules/asset/ui/src/scss/_footer.scss (5)

18-24: Remove redundant display declaration in .sf-footer__top

display: block is declared both outside and inside the breakpoint; the inner one is redundant.

   .sf-footer__top {
     text-align: center;
     margin-bottom: 32px;
     display: block;
     @include breakpoint-medium {
-      display: block;
       width: fit-content;
       margin-left: auto;
       margin-right: auto;
     }
   }

35-44: Simplify .sf-footer__tagline selectors

The &:first-child rule is redundant, and the extra display: block in &:not(:first-child) is unnecessary given the base rule. Keep the inline-block tweak only at medium+.

-    &:first-child {
-      display: block;
-    }
-
     &:not(:first-child) {
-      display: block;
       @include breakpoint-medium {
         display: inline-block;
       }
     }

55-60: Avoid combining gap with justify-content: space-between

At desktop, gap plus space-between compounds spacing unpredictably (gap reserves space; the remaining space is still distributed). If the intent is to push groups to edges and control inner spacing within groups, remove gap here and keep the 32px gap on .sf-footer__links-group.

     @include breakpoint-medium {
       flex-direction: row;
       justify-content: space-between;
-      gap: 32px;
       text-align: left;
     }

27-33: Legibility check: 11px footer text may be too small on mobile

$font-size-footer-mobile appears to be 11px. This is quite small and may hurt readability. If not mandated by design, consider bumping to at least 12–14px on mobile.


47-53: Consider removing duplicated font-size on container

Both .sf-footer__links and .sf-footer__links-item set font-size: $font-size-footer-mobile. Pick one place (prefer items) to avoid redundant styling unless the container’s font-size is intentionally used for non-link children.

   .sf-footer__links {
     display: flex;
     flex-direction: column;
     align-items: flex-start;
-    font-size: $font-size-footer-mobile;
     font-weight: $font-weight-300;
     line-height: 120%;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these settings in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 178a0c6 and a3f8457.

📒 Files selected for processing (2)
  • website/modules/asset/ui/src/scss/_footer.scss (1 hunks)
  • website/views/fragments/fragments.html (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • website/views/fragments/fragments.html
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-05-26T15:57:01.766Z
Learnt from: yuramax
PR: speedandfunction/website#121
File: website/modules/asset/ui/src/scss/_vacancies.scss:99-102
Timestamp: 2025-05-26T15:57:01.766Z
Learning: In website/modules/asset/ui/src/scss/_vacancies.scss, the margin shorthand (e.g., `margin: 0 0 8px`) in `.sf-vacancies_footer h2` is intentionally used to reset all margins and set specific bottom margins, rather than using `margin-bottom` alone. This approach ensures clean baseline styling that doesn't inherit unwanted margins, while still allowing the sibling selector `.vacancy-card + .sf-vacancies_footer h2` to add top margins when a vacancy card precedes the footer.

Applied to files:

  • website/modules/asset/ui/src/scss/_footer.scss
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: e2e-tests
  • GitHub Check: lint
  • GitHub Check: unit-tests
  • GitHub Check: security-scan
🔇 Additional comments (2)
website/modules/asset/ui/src/scss/_footer.scss (2)

89-94: Good BEM modifier for policy link

Using .sf-footer__links-item--policy decouples spacing from DOM order and is more maintainable than :last-child. LGTM.


101-103: Scoped .sf-copy margin reset is correct

Limiting margin: 0 to .sf-footer context prevents global regressions. Nice fix.

Comment thread website/modules/asset/ui/src/scss/_footer.scss

@VitalyyP VitalyyP left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@killev killev left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@killev killev left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Good

@sonarqubecloud

Copy link
Copy Markdown

@VitalyyP
VitalyyP merged commit 63f849e into main Aug 14, 2025
12 checks passed
@VitalyyP
VitalyyP deleted the 604-update-footer-with-links-and-email branch August 14, 2025 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants