4.2.4 • Published 1 year ago

@riapacheco/yutes v4.2.4

Weekly downloads
28
License
Public Domain
Repository
-
Last release
1 year ago

Yutes Utilities

The @riapacheco/yutes package is a really lightweight SCSS pack of stylesheets intended to provide utilities similar to those found in common frameworks like Bootstrap (with some slight differences) but without the rigidness that limits fluid design.

As an example of how this is achieved (especially for those familiar with libraries like Bootstrap and Tailwind CSS), here's some samples on how they were created with SCSS features:

// Enabling the 'pt-1' [padding-top: 1] shorthand classes | (_utilities.scss)
@each $abbr, $name in ('t': 'top', 'r': 'right', 'b': 'bottom', 'l': 'left') {
  @for $i from 1 through $margin-max-rem-multiple {
    .p#{$abbr}-#{$i} {
      padding-#{$name}: 1rem * $i;
    }
  }
}

// Enabling breakpoint logic | (breakpoints.scss)
@mixin if-viewport($media) {
  @if $media == small {
    @media only screen and (max-width: $mobile) {
      @content;
    }
  } @else if $media == medium {
    @media only screen and (min-width: calc($mobile + 1px)) and (max-width: calc($desktop - 1px)){
      @content;
    }
  } 
}

Simplified buttons so that they don't rely on the color palette and instead can be changed with three variables. You can also add sm after btn for smaller buttons and lg after btn for larger. These are based on a scale() property which you can also override. To skip the documentation and see it in action, watch this demo video.


Contents ⤵️

Installation

Install from NPM with command

  npm install @riapacheco/yutes

In your main SCSS file

@import "@riapacheco/yutes/main.scss";

For Encapsulated Views

To use breakpoints in encapsulated stylesheet

@import "@riapacheco/yutes/breakpoints.scss";

To use colors and to override in encapsulated stylesheet

@import '@riapacheco/yutes/variables.scss';

Browser Resets

This package strips all browser default styles passively.

StyleApplied toDescription
SmoothingAll ElementsAntialiasing makes for smoother renderings
Border-BoxAll ElementsEnsures consistency with edges
Unset Focus/OutlinesAll ElementsRemoves browser focus styles (e.g. blue borders)
Unset scrollbarAll ElementsRemoves scrollbar from all views
Consistent resizingimg elementsLimits errors and broken styles from problematic cascading. To change image size, adjust width only.
Unset focusbuttonRemoves webkit focus
Unset activebuttonRemoves all active outlines and blue colors
Unset focusanchorsRemoves webkit focus
Unset activeanchorsRemoves all active outlines, underlines, and blue colors
Prioritized cursor pointerFile upload buttonsRe-adds the pointer behavior of cursors for any file upload buttons you may add graphics overtop of
Removed outlinesinputRemoves outlines from input fields

Usage

How to Override

All structure and baseline user controls were sized (or calculated calc()) with rem multiples (baseline body font-size) to ensure responsivity and easier customization.

To override any variables, in your main SCSS file re-assign the variable BEFORE importing the ~@riapacheco/yutes/main.scss file (and variables.scss file just to be safe!) like this:

$primary-color: #123456;
$secondary-color: #654321;
$base-rem-size: 17px;
$h2-size: 2rem;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

See config variables section for complete list of variables to override

Imported Fonts

Test drive a font family by applying its class to an element containing text. For HTML <link> tags, see comments found in the @riapacheco/yutes/_fonts.scss file!

  • Inter .inter-ff
  • Roboto Flex .roboto-flex-ff
  • Public Sans .public-sans-ff
  • Open Sans .open-sans-ff
  • Fira Code .fira-code-ff
  • Nanum Gothic .nanum-gothic-ff
  • Lato .lato-ff
  • Montserrat .montserrat-ff
  • Oswald .oswald-ff
  • Source Sans Pro .source-sans-pro-ff
  • Merriweather .merriweather-ff
  • Nunito Sans .nunito-sans-ff

Horizontal Centering

Specify a container width to create a centered container.

SYNTAX
<div class="mx-auto-{size}px">
  This is a container
</div>
VALUES

Specify a size between 1 and 3000. The value is translated to pixels.

EXAMPLE
<div class="mx-auto-700px">
  This is a good size for iPads
</div>

Padding & Margin

SYNTAX
<div class="p{direction}-{size}"></div>
VALUES

See config variables section to override the size range

PrefixDirectionTranslationCompiles toSize Range
pttoppadding-top:1 - 30
prrightpadding-right:1 - 30
pbbottompadding-bottom:1 - 30
plleftpadding-left:1 - 30
mttopmargin-top:1 - 30
mrrightmargin-right:1 - 30
mbbottommargin-bottom:1 - 30
mlleftmargin-left:1 - 30
EXAMPLE
<div class="pt-3 pb-1">
  Section
</div>
  • The above translates to padding-top: 3rem; and padding-bottom: 1rem;

Breakpoints

DEPENDENCY

Must import the following to any encapsulated stylesheets first

@import "~@riapacheco/yutes/breakpoints.scss";
SYNTAX
.your-class {
  width: 220px;
  
  @include if-viewport({size}) {
    // add appropriate styles
  }
}
VALUES

See config variables section to override the breakpoint widths

{size}Description
smallApplies your assigned styles if viewport between 0px and 375px
mediumApplies your assigned styles if viewport between 376px and 1200px
EXAMPLE
.buttons-block {
  display: flex;
  flex-direction: row;
  button {
    display: inline-block;
  }
  
  @include if-viewport(small) { // applies smartphone-friendly styling
    flex-direction: column;
    align-items: center;
    justify-content: center;
    
    button { // accesses child (parent's scope)
      display: block;
    }
  }
  
  @include if-viewport(medium) { // applies tablet - small screen styling
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
}

Colors

DEPENDENCY

Must import the following to any encapsulated stylesheets first

@import '~@riapacheco/yutes/variables.scss'
SYNTAX

Mostly applied to optional controls (buttons and form fields) but can be applied to elements with classes like this:

<div class="primary-color">
  This text has `$primary-color` applied to it
</div>
VALUES

See config variables section to override the color variables

ClassApplied Value
.primary-colorcolor: $primary-color
.primary-color.lightcolor: $primary-light-color
.primary-color.mediumcolor: $primary-medium-color
.primary-color.darkcolor: $primary-dark-color
.primary-bgbackground-color: $primary-color
.primary-bg.lightbackground-color: $primary-light-color
.primary-bg.mediumbackground-color: $primary-medium-color
.primary-bg.darkbackground-color: $primary-dark-color
.secondary-colorcolor: $secondary-color
.secondary-color.lightcolor: $secondary-light-color
.secondary-color.mediumcolor: $secondary-medium-color
.secondary-color.darkcolor: $secondary-dark-color
.secondary-bgbackground-color: $secondary-color
.secondary-bg.lightbackground-color: $secondary-light-color
.secondary-bg.mediumbackground-color: $secondary-medium-color
.secondary-bg.darkbackground-color: $secondary-dark-color
.accent-colorcolor: $accent-color
.accent-color.lightcolor: $accent-light-color
.accent-color.mediumcolor: $accent-medium-color
.accent-color.darkcolor: $accent-dark-color
.accent-bgbackground-color: $accent-color
.accent-bg.lightbackground-color: $accent-light-color
.accent-bg.mediumbackground-color: $accent-medium-color
.accent-bg.darkbackground-color: $accent-dark-color
EXAMPLE
<div class="primary light">
  This is light color text
</div>

Headings

SYNTAX

The following properties have been set from h1 to h6:

font-size`, `line-height`, `letter-spacing`, `font-weight`, and `text-transform
VALUES

See config variables section to override heading values

Forms

SYNTAX / EXAMPLE

Lightweight classes for stacking labels overtop input and select elements (with light grey field input colors). Only requires that the label and input or select element are enclosed in an element with the .form-group class like this:

<div class="form-group"> <!--just this-->
  <label>
    First Name
  </label>
  <input type="text" name="firstName">
</div>
VALUES

See config variables section to override form element styles

Buttons

SYNTAX

This style will always require the initializer btn class followed by chained {color} classes or chained {add-on} classes

<a class="btn {size} {color} {add-on} "
VALUES

For full details on configuring variables, go to config variables section.

BUTTON UPDATES
Primary, Secondary, and Accent Base Colors

For easier / quick implementation, and for those NOT wanting multiple shades of a button color, you can now update your primary, secondary, and accent buttons with simple variables instead of relying on the actual $primary-color variables in your palette. However, this will not impact the other class shades (e.g <color_type> light) as they are still part of the overall color scheme.

// Variables found in the variables.scss file
// Configured in your main SCSS file BEFORE importing the package
$button-primary-color: $primary-dark-color;
$button-secondary-color: $secondary-medium-color;
$button-accent-color: $accent-medium-color;

For more details, see config variables section.

Sizing

Since there's value in having alternative small and large buttons, there are now variables to adjust these sizes utilizing the transform: scale(x) property.

// Variables found in the variables.scss file
// Configured in your main SCSS file BEFORE importing the package
$button-sm-size: scale(0.8);
$button-lg-size: scale(1.15);

For more details, see config variables section.

Notes:

  • Any classes listed within < > and given a ? are optional
  • If the property listed is a variable (starts with a $) this indicates both the value AND how the variable you can override in your main stylesheet.
Class(es)Syntax PositionCompiles to || General description
primary{color}$button-primary-color: $primary-dark-color
primary default{color}background-color: $primary-color
primary light{color}background-color: $primary-light-color
primary medium{color}background-color: $primary-medium-color
primary dark{color}background-color: $primary-dark-color
primary <shade?> primary-alt-text{color}background-color: $primary color: $button-primary-font-color-alt
secondary{color}$button-secondary-color: $secondary-medium-color
secondary default{color}background-color: $secondary-color
secondary light{color}background-color: $secondary-light-color
secondary medium{color}background-color: $secondary-medium-color
secondary dark{color}background-color: $secondary-dark-color
secondary <shade?> secondary-alt-text{color}background-color: $secondary color: $button-secondary-font-color-alt
accent{color}$button-accent-color: $accent-medium-color
accent default{color}background-color: $accent-color
accent light{color}background-color: $accent-light-color
accent medium{color}background-color: $accent-medium-color
accent dark{color}background-color: $accent-dark-color
accent <shade?> accent-alt-text{color}background-color: $accent color: $button-accent-font-color-alt
sm{size}$button-sm-size: scale(0.8)
lg{size}$button-lg-size: scale(1.15)
rounded{add-on}Pill style button (20px border radius)
raised{add-on}Applies a box-shadow (and adjustments to box-shadow on hover and when active)
hover-to-lighten{add-on}Applies a brightness filter on hover that increases brightness by 15%
hover-to-darken{add-on}Applies a brightness filter on hover that decreases brightness by 25%
EXAMPLE
<a class="btn primary raised hover-to-darken">
  Save Changes
</a>

Config Variables

How it works

To override any variables, in your main SCSS file re-assign the variable BEFORE importing the ~@riapacheco/yutes/main.scss file (and variables.scss file just to be safe!) like this:

$primary-color: #123456;
$secondary-color: #654321;
$base-rem-size: 17px;
$h2-size: 2rem;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Override Base Sizes

Copy some or all of the following into your main file (in this order) and change the values as you please Note: your $base-rem-size value determines the overall sizing of all elements impacted by this package.

$base-rem-size: 15.5px;
$base-font-family: "Inter", sans-serif;
$base-letter-spacing: -0.02rem;
$button-primary-color: pink;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Padding / Margin REM Ranges

Copy some or all of the following into your main file (in this order) and change the values as you please

$padding-max-rem-multiple: 30;
$margin-max-rem-multiple: 30;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Colors

Copy some or all of the following into your main file (in this order) and change the values as you please

/* --------------------------------- PRIMARY -------------------------------- */
$primary-light-color: #FFD753;
$primary-color: #FFC400;
$primary-medium-color: #FFAB00;
$primary-dark-color: #FF991F;

/* -------------------------------- SECONDARY ------------------------------- */
$secondary-light-color: #79E2F2;
$secondary-color: #00C7E6;
$secondary-medium-color: #00B8D9;
$secondary-dark-color: #00A3BF;

/* --------------------------------- ACCENT --------------------------------- */
$accent-light-color: #FFBDAD;
$accent-color: #FF8F73;
$accent-medium-color: #FF7452;
$accent-dark-color: #FF5630;


@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Headings

Copy some or all of the following into your main file (in this order) and change the values as you please

/* -------------------------------- HEADING 1 ------------------------------- */
$h1-size: 2rem;
$h1-height: 2rem;
$h1-spacing: -0.1rem;
$h1-weight: 700;
$h1-transform: none;

/* -------------------------------- HEADING 2 ------------------------------- */
$h2-size: 1.8rem;
$h2-height: 1.8rem;
$h2-spacing: -0.05rem;
$h2-weight: 700;
$h2-transform: none;

/* -------------------------------- HEADING 3 ------------------------------- */
$h3-size: 1.6rem;
$h3-height: 1.6rem;
$h3-spacing: -0.05rem;
$h3-weight: 700;
$h3-transform: none;

/* -------------------------------- HEADING 4 ------------------------------- */
$h4-size: 1.4rem;
$h4-height: 1.4rem;
$h4-spacing: -0.03rem;
$h4-weight: 700;
$h4-transform: none;

/* -------------------------------- HEADING 5 ------------------------------- */
$h5-size: 1.2rem;
$h5-height: 1.2rem;
$h5-spacing: -0.03rem;
$h5-weight: 700;
$h5-transform: none;

/* -------------------------------- HEADING 6 ------------------------------- */
$h6-size: 0.88rem;
$h6-height: 0.88rem;
$h6-spacing: 0.06rem;
$h6-weight: 500;
$h6-transform: uppercase;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Breakpoints

Copy some or all of the following into your main file (in this order) and change the values as you please

$mobile: 375px;
$desktop: 1200px;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Buttons

Copy some or all of the following into your main file (in this order) and change the values as you please

/* --------------------------- BASELINE BTN STYLES -------------------------- */
$button-font-size: 1rem;
$button-border-radius: 0.2rem;
$button-padding-top-bottom: 0.8rem;
$button-padding-left-right: 1.2rem;

/* ------------------------------ BUTTON SIZING ----------------------------- */ // NEW!
$button-sm-size: scale(0.8) !default;
$button-lg-size: scale(1.15) !default;

/* ---------------------------- COLOR ATTRIBUTES ---------------------------- */ // NEW!
$button-primary-color: $primary-dark-color;
$button-secondary-color: $secondary-medium-color;
$button-accent-color: $accent-medium-color;

/* ------------------------ ADDITIONAL BTN ATTRIBUTES ----------------------- */
$pill-button-border-radius: 20px;
$hover-filter-bright: brightness(1.15);
$hover-filter-dark: brightness(0.85);
$button-raised-box-shadow: 4px 6px 12px rgba(0, 0, 0, 0.4);
$button-raised-box-shadow-hover: 4px 6px 12px rgba(0, 0, 0, 0.2);
$button-raised-box-shadow-active: 4px 6px 12px rgba(0, 0, 0, 0.1);

/* ----------------------- FONT COLORS & ALTERNATIVES ----------------------- */
$button-primary-font-color: white;
$button-primary-font-color-alt: black;
$button-secondary-font-color: white;
$button-secondary-font-color-alt: black;
$button-accent-font-color: white;
$button-accent-font-color-alt: black;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Forms

Copy some or all of the following into your main file (in this order) and change the values as you please

/* ----------- STYLES APPLIED TO TEXT INPUTS AND SELECT DROPDOWNS ----------- */
$form-control-border-radius: 0.2rem;
$form-control-font-size: $base-rem-size;
$form-control-min-height: $form-control-font-size * 2.3;
$form-control-spaces-between: 1.5rem;

/* ---------------------------- TEXT INPUTS ONLY ---------------------------- */
$form-input-font-family: inherit;
$form-input-bg-color: #f0f0f0;
$form-input-padding-left: $form-control-min-height / 3.5;

/* ------------------------- SELECT DROP DOWNS ONLY ------------------------- */
$form-select-font-family: inherit;
$form-select-bg-color: #f8f8f8;

/* --------------------------------- LABELS --------------------------------- */
$form-label-font-size: 1rem;
$form-label-font-family: inherit;
$form-label-font-weight: 600;
$form-label-padding-left: 0.5rem;
$form-label-padding-bottom: 0.5rem;
$form-label-letter-spacing: auto;

@import '~@riapacheco/yutes/main.scss';
@import '~@riapacheco/yutes/variables.scss';

Latest Updates

New Inter Optimized Stylesheet

Things like margin-block-start and margin-inline-start are impacted by typography dimensions (e.g. sometimes a lowercase I might be taller than a capital G) and line-height. I created a new stylesheet for my favorite font (Inter) called inter-mixins.scss.


Warning: I do NOT use the <p> element in my work and instead add text to <div> elements I adjust later. Applying body text to <p> elements will not likely render the properties derived from @mixin inter-body-text unless applied directly to the <p> element.


What it does

Provides @mixins for the following classes:

  • CSS import for Inter font from Google's API
  • html: given a 10px base font-size to better control all elements that use rem for sizing
  • body: given a 1.6rem base font-size to ensure actual body font-sizing is readable / ideal
  • h1 to h6

Mobile Adjustments

The body, and headers h1 to h4 have associated mobile versions. These are new @mixins which have the same name but include -mobile as suffix. Easiest way to use these (apart from programmatically detecting resizing in your app's framework) is to import the breakpoints.scss stylesheet to apply them in the same place that you apply the original @mixins.

Here's an example of how one might set up their styles.scss (main SCSS file):

@import '~@riapacheco/yutes/main.scss';           // resets, smoothing, and utility shorthand classes access
@import '~@riapacheco/yutes/breakpoints.scss';    // access breakpoint logic
@import '~@riapacheco/yutes/inter-mixins.scss';   // new sizing/adjustments for "Inter" font

html {
  @include inter-html-text;
}

body {
  @include inter-body-text;
  @include if-viewport(small) { @include inter-body-text-mobile; }
}

h1 {
  @include inter-h1;
  @include if-viewport(small) { @include inter-h1-mobile; }
}

// and so on and so forth -- EXCLUDING h5 and h6 for mobile versions
4.2.3

1 year ago

4.2.2

1 year ago

4.2.4

1 year ago

4.2.1

1 year ago

4.2.0

1 year ago

4.1.8

2 years ago

4.1.7

2 years ago

3.2.2

2 years ago

3.0.4

2 years ago

3.2.1

2 years ago

3.0.3

2 years ago

3.2.0

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.0

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.7

2 years ago

4.0.6

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

4.0.8

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

4.1.4

2 years ago

4.1.3

2 years ago

4.1.6

2 years ago

4.1.5

2 years ago

4.1.0

2 years ago

4.1.2

2 years ago

4.1.1

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.3

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

2.1.2

2 years ago

2.1.3

2 years ago

2.1.0

2 years ago

1.0.0

3 years ago

0.9.15

3 years ago

0.9.4

3 years ago

0.9.3

3 years ago

0.9.0

3 years ago

0.9.2

3 years ago

0.9.1

3 years ago

0.2.31

3 years ago

0.2.25

3 years ago

0.2.3

3 years ago

0.2.23

3 years ago

0.2.22

3 years ago

0.2.21

3 years ago

0.1.20

3 years ago

0.2.11

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.2.2

3 years ago

0.1.19

3 years ago

0.1.17

3 years ago

0.1.18

3 years ago

0.1.16

3 years ago

0.1.15

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago