@yek/sass
Version:
the Sass/SCSS library with useful mixins, functions and more features
578 lines (408 loc) • 9.15 kB
Markdown
# Y/SASS
> the full list of useful libraries and resources to make sass style fastest then past\
> latest version : v3.2.0 (03 Apr 2022)
---
[](https://www.jsdelivr.com/package/npm/@yek/sass)
## Installation (v 3.2.0)
<h3>CDN<a href="https://www.jsdelivr.com/package/npm/@yek/sass">(jsdelivr)</a></h3>
```https
https://cdn.jsdelivr.net/npm/@yek/sass@3.2.0/dist/index.scss
```
or
```https
https://cdn.jsdelivr.net/gh/yek-org/yek-sass@3.2.0/dist/index.scss
```
### CDN (unpkg)
```https
unpkg.com/@yek/sass@3.2.0/dist/index.scss
```
<p>copy and paste which one of above cdn links on your project</p>
### npm
<p>execute below one of the below lines with copy and pasting their on your terminal</p>
```shell
npm install --save-dev @yek/sass
```
or
shorthand
```shell
npm i -D @yek/sass
```
## Import and make Reference
if using npm installation, should make reference to the `node_modules` folder
with any sub-folder
so, adding below line on the top head of your main sass/scss file
```scss
// main.scss
@import '../node_module/@yke/sass/dist/index.scss';
```
or how many level need to back to parent folder
```scss
@import '../../../../../../node_module/@yek/sass/dist/index.scss';
```
## How to use
<details>
<summary id="color-schema"><h3>Color Schema and Variable</h3></summary>
<p>
in this library we use variable color schema. so, that meant in yek-scss functions and mixins available to making this task easy.
</p>
<h4>Create Color Schema (Sass Variable system)</h4>
<blockquote>this feature under written and not tested</blockquote>
<p>in this case we syncing sass variable with css variable (custom property) and this feature just available to using native color function who can use with css variables<br />
to working scss variable, should assigning before `clear-root` and `set-root` mixins
</p>
<details>
<summary>Variable Table</summary>
<table>
<thead>
<tr><th>SASS Syntax</th><th>CSS Syntax</th></tr>
</thead>
<tbody>
<tr>
<td>
```scss
$color-primary
```
</td>
<td>
```css
--color-primary
```
</td>
</tr>
<tr>
<td>
```scss
$color-secondary
```
</td>
<td>
```css
--color-secondary
```
</td>
</tr>
<tr>
<td>
```scss
$color-white
```
</td>
<td>
```css
--color-white
```
</td>
</tr>
<tr>
<td>
```scss
$color-black
```
</td>
<td>
```css
--color-black
```
</td>
</tr>
<tr>
<td>
```scss
$color-gray
```
</td>
<td>
```css
--color-gray
```
</td>
</tr>
<tr>
<td>
```scss
$color-light-gray
```
</td>
<td>
```css
--color-light-gray
```
</td>
</tr>
<tr>
<td>
```scss
$font-family
```
</td>
<td>
```css
--font-family
```
</td>
</tr>
<tr>
<td colspan="2">if you have any variable should be in pre-built variable as schema, you can forking on github and making PR's or Issues on <a href="https://github.com/yek-org/yek-sass">@yek/sass</a> repo
</tr>
</tbody>
</table>
</details>
<p> Now, We using <code>clear-root</code> mixin to reset and normalize the default css styles and then using <code>set-root</code> mixin to setup and assign custom css variable as root level on <code>:root</code> selector</p>
<details>
<summary>Code Syntax</summary>
<strong>Sass Syntax</strong>
```scss
// custom or schema scss variable in here...
@include clear-root();
// if we have custom css variable, we setting it with set-root mixin in here
@include set-root(
(
custom-variable: 'custom-name',
// and so on
)
);
```
<strong>Css Syntax</strong>
```css
:root {
--color-primary: #1a2556;
--color-secondary: #a5b3d4;
--color-gray: #dde6f3;
--color-light-gray: #f3f6fb;
--color-white: white;
--color-black: #3e3743;
--font-family: Roboto, Montserrat, sans-serif;
}
```
</details>
<p> And, for using on the your stylesheet, your code should be like some thing on the below
</p>
<details>
<summary>Code Syntax</summary>
<strong>Sass Syntax</strong>
```scss
.selector {
// sass native variable
background-color: $color-primary;
// css native variable
background-color: var(--color-primary);
// variable function
background-color: val(color-primary);
// color function
background-color: color(primary);
}
```
<strong>Css Syntax</strong>
```css
.selector {
/* sass native variable */
background-color: #1a2556;
/* css native variable */
background-color: var(--color-primary);
/* variable function */
background-color: var(--color-primary);
/* color function */
background-color: var(--color-primary);
}
```
</details>
<code>val</code> function as native css <code>var</code> function and <code>color</code> function is function to giving any variable using <code>--color-</code> prefixes.
so, to assigning new css variable and setting value on it or re-assign or changing current value of the any variable, we can use <code>set-var</code> mixin to making it easy.
<details>
<summary>Code Syntax</summary>
<strong>Sass Syntax</strong>
```scss
@include set-root(
(
custom-variable: 'custom-value',
)
);
.selector::after {
@include set-var(custom-variable, 'new-value');
content: val(custom-variable);
}
```
<strong>Css Syntax</strong>
```css
:root {
/* another css root variable */
--custom-variable: 'custom-variable';
}
.selector::after {
--custom-variable: 'new-value';
content: var(--custom-variable); /* replaced by 'new-value' */
}
```
</details>
</details>
<details>
<summary><h3>Mixins</h3></summary>
<details>
<summary><h4>Flexbox</h4></summary>
<table>
<thead></thead>
<tbody>
<tr>
<td>
`$dir`
</td>
<td>
`row [ column | row-reverse | column-reverse | col | col-rev | row-rev | r | c | rr | cr ]`
</td>
<td>
alice of `flex-direction`
</td>
</tr>
<tr>
<td>
`$wrap`
</td>
<td>
`wrap [ nowrap | no | n | w ]`
</td>
<td>
alice of `flex-wrap`
</td>
</tr>
</tbody>
</table>
<strong>Sass Syntax</strong>
```scss
// default parameters $dir = row and $wrap = wrap
@include flex;
// set `flex-direction` column
@include flex(column);
// or
@include flex($dir: column);
// set `flex-direction` row
@include flex;
// or
@include flex();
// or
@include flex(row);
// or
@include flex($dir: row);
// setting `flex-wrap` nowrap
@include flex($wrap: nowrap);
// `flex-wrap` wrap
@include flex($wrap: wrap);
```
<strong>Css Syntax</strong>
```css
display: flex;
flex-direction: row;
flex-wrap: wrap;
/* for flex column, just flex direction changed */
flex-direction: column;
/* for wrapping fle */
```
</details>
<details>
<summary><h4>Align System</h4></summary>
<table>
<thead></thead>
<tbody>
<tr>
<td>
`$ver`
</td>
<td>
`flex-start [ flex-end | end | start | space-between | space-around | space-evenly | between | evenly | around or css native ]`
</td>
<td>
vertically align, alice of `justify-content`
</td>
</tr>
<tr>
<td>
`$hor`
</td>
<td>
`flex-start [ flex-end | end | start | space-between | space-around | space-evenly | between | evenly | around or css native ]`
</td>
<td>
horizontally align, alice of `align-items`
</td>
</tr>
<tr>
<td>
`$content`
</td>
<td>
`flex-start [ flex-end | end | start | space-between | space-around | space-evenly | between | evenly | around or css native ]`
</td>
<td>
alice of `align-content`
</td>
</tr>
</tbody>
</table>
<strong>Sass Syntax</strong>
```scss
// default parameters $dir = row and $wrap = wrap
@include flex;
// set `flex-direction` column
@include flex(column);
// or
@include flex($dir: column);
// set `flex-direction` row
@include flex;
// or
@include flex();
// or
@include flex(row);
// or
@include flex($dir: row);
// setting `flex-wrap` nowrap
@include flex($wrap: nowrap);
// `flex-wrap` wrap
@include flex($wrap: wrap);
```
<strong>Css Syntax</strong>
```css
display: flex;
flex-direction: row;
flex-wrap: wrap;
/* for flex column, just flex direction changed */
flex-direction: column;
/* for wrapping flex */
flex-wrap: wrap; /* or nowrap */
```
also, we can use `aligns` to shorthand of `align` mixin. that make all three parameter as once
```scss
// default is center
@include aligns;
// default is center
@include aligns();
// or you can use manual argument
@include aligns(center);
```
```css
justify-content: center;
align-items: center;
align-content: center;
```
</details>
<details>
<summary><h4>Size, Width and Height</h4></summary>
</details>
</details>
<details>
<summary>Function</summary>
#### `split`
> give a string and splitter to split text into list of characters
| NAME | TYPE | REQUIRE |
| --------- | -------- | ------- |
| `$string` | `string` | ✅ |
| `$sep` | `string` | ❌ |
**SNIPPET**
```scss
@debug split('Hello');
@debug split('H,e,l,l,o', ',');
@debug split('H::e::l::l::o', '::');
//=> ('H', 'e', 'l', 'l', 'o'); <=//
```
</details>
## License
Created with :heart: and :brain: by <a href="https://github.com/yek-org">YEK Inc</a> and Under [MIT](@mit) License <br />
this project is [Open Source](@open-source), so, if you want to contribute this project just fork and make [PR's]() or [Issues]()