oo-loop 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/loop.css +1 -1
  2. package/package.json +5 -6
  3. package/scss/_fn.scss +13 -0
  4. package/scss/_init.scss +6 -4
  5. package/scss/_loop.scss +1 -1
  6. package/scss/_pre.scss +3 -1
  7. package/scss/base/_type.scss +6 -4
  8. package/scss/components/_button.scss +16 -13
  9. package/scss/components/_column.scss +39 -34
  10. package/scss/components/_template.scss +48 -42
  11. package/scss/components/form/_checkbox.scss +8 -5
  12. package/scss/components/form/_input.scss +4 -2
  13. package/scss/components/form/_radio.scss +9 -6
  14. package/scss/components/form/_select.scss +43 -40
  15. package/scss/components/form/_toggle.scss +7 -4
  16. package/scss/functions/_color.scss +30 -16
  17. package/scss/functions/_convert.scss +24 -9
  18. package/scss/functions/_empty.scss +8 -3
  19. package/scss/functions/_extract.scss +9 -5
  20. package/scss/functions/_list.scss +9 -6
  21. package/scss/functions/_map.scss +15 -44
  22. package/scss/functions/_number.scss +16 -11
  23. package/scss/functions/_replace.scss +7 -4
  24. package/scss/functions/_split.scss +12 -8
  25. package/scss/functions/_strip.scss +3 -1
  26. package/scss/functions/_type.scss +7 -5
  27. package/scss/helpers/_container.scss +4 -2
  28. package/scss/helpers/_miscellaneous.scss +4 -2
  29. package/scss/helpers/_visibility.scss +7 -5
  30. package/scss/mixins/_breakpoint.scss +15 -10
  31. package/scss/mixins/_component.scss +19 -18
  32. package/scss/mixins/_loop.scss +13 -13
  33. package/scss/mixins/_props.scss +17 -14
  34. package/scss/mixins/_utilities.scss +21 -18
  35. package/scss/oo/_all.scss +11 -0
  36. package/scss/oo/_oo.scss +42 -0
  37. package/scss/{functions → oo}/_ooAdd.scss +9 -6
  38. package/scss/oo/_ooAlias.scss +146 -0
  39. package/scss/oo/_ooMerge.scss +41 -0
  40. package/scss/{functions → oo}/_ooParse.scss +20 -16
  41. package/scss/{functions → oo}/_ooPipe.scss +5 -3
  42. package/scss/{functions → oo}/_ooRef.scss +31 -25
  43. package/scss/{functions → oo}/_ooSet.scss +18 -13
  44. package/scss/utilities/_color.scss +3 -1
  45. package/scss/utilities/_float.scss +5 -2
  46. package/scss/utilities/_spacing.scss +3 -1
  47. package/scss/utilities/_typography.scss +3 -1
  48. package/scss/utilities/_wrapper.scss +3 -1
  49. package/CHANGELOG.md +0 -229
  50. package/scss/functions/_all.scss +0 -21
  51. package/scss/functions/_oo.scss +0 -38
  52. package/scss/functions/_ooAlias.scss +0 -96
  53. /package/scss/{functions → oo}/_ooUse.scss +0 -0
package/dist/loop.css CHANGED
@@ -1 +1 @@
1
- *,*::after,*::before{box-sizing:border-box}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Helvetica Neue","Helvetica","Arial",sans-serif;font-size:1em;line-height:1.375;color:#444;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin-top:.67em;margin-bottom:.45em;line-height:1.125}h1{font-size:2rem}h2{font-size:1.625rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1rem}h6{font-size:.875rem}p{margin-top:.5em;margin-bottom:1.125em}a{color:#28a6c7;text-decoration:none}[href]:hover{color:#1e7b94}[href]:focus{color:#1e7b94}ul,ol{margin-top:.5em;margin-bottom:1.125em;padding-left:1.1em}ul>ul,ul ol,ol>ul,ol ol{margin-top:.3em;margin-bottom:.5em}hr,.hr{display:block;border:none;margin:1rem auto;border-bottom:1px solid #cdcdcd}[oo-row]{position:relative;display:flex;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;clear:both}[oo-col]{flex-shrink:0;flex-grow:1;flex-basis:0;min-width:0;max-width:100%}[oo-col~="span1"]{flex-basis:8.333333%;max-width:8.333333%}[oo-col~="span2"]{flex-basis:16.666667%;max-width:16.666667%}[oo-col~="span3"]{flex-basis:25%;max-width:25%}[oo-col~="span4"]{flex-basis:33.333333%;max-width:33.333333%}[oo-col~="span5"]{flex-basis:41.666667%;max-width:41.666667%}[oo-col~="span6"]{flex-basis:50%;max-width:50%}[oo-col~="span7"]{flex-basis:58.333333%;max-width:58.333333%}[oo-col~="span8"]{flex-basis:66.666667%;max-width:66.666667%}[oo-col~="span9"]{flex-basis:75%;max-width:75%}[oo-col~="span10"]{flex-basis:83.333333%;max-width:83.333333%}[oo-col~="span11"]{flex-basis:91.666667%;max-width:91.666667%}[oo-col~="span12"]{flex-basis:100%;max-width:100%}[oo-col~="fit"]{min-width:auto;flex-grow:0;flex-basis:auto}[oo-row~="align-left"]{justify-content:flex-start}[oo-row~="align-center"]{justify-content:center}[oo-row~="align-right"]{justify-content:flex-end}[oo-row~="align-evenly"]{justify-content:space-evenly}[oo-row~="align-between"]{justify-content:space-between}[oo-row~="valign-top"]{align-items:flex-start}[oo-row~="valign-middle"]{align-items:center}[oo-row~="valign-bottom"]{align-items:flex-end}[oo-col~="self-align-left"]{margin-left:initial;margin-right:initial}[oo-col~="self-align-center"]{margin-left:auto;margin-right:auto}[oo-col~="self-align-right"]{margin-left:auto;margin-right:initial}[oo-col~="self-valign-top"]{align-self:flex-start}[oo-col~="self-valign-middle"]{align-self:center}[oo-col~="self-valign-bottom"]{align-self:flex-end}@media (min-width: 37.5em){[oo-col~="auto@sm"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@sm"]{flex-basis:8.333333%;max-width:8.333333%}[oo-col~="span2@sm"]{flex-basis:16.666667%;max-width:16.666667%}[oo-col~="span3@sm"]{flex-basis:25%;max-width:25%}[oo-col~="span4@sm"]{flex-basis:33.333333%;max-width:33.333333%}[oo-col~="span5@sm"]{flex-basis:41.666667%;max-width:41.666667%}[oo-col~="span6@sm"]{flex-basis:50%;max-width:50%}[oo-col~="span7@sm"]{flex-basis:58.333333%;max-width:58.333333%}[oo-col~="span8@sm"]{flex-basis:66.666667%;max-width:66.666667%}[oo-col~="span9@sm"]{flex-basis:75%;max-width:75%}[oo-col~="span10@sm"]{flex-basis:83.333333%;max-width:83.333333%}[oo-col~="span11@sm"]{flex-basis:91.666667%;max-width:91.666667%}[oo-col~="span12@sm"]{flex-basis:100%;max-width:100%}[oo-col~="fit@sm"]{min-width:auto;flex-grow:0;flex-basis:auto}}@media (min-width: 60em){[oo-col~="auto@md"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@md"]{flex-basis:8.333333%;max-width:8.333333%}[oo-col~="span2@md"]{flex-basis:16.666667%;max-width:16.666667%}[oo-col~="span3@md"]{flex-basis:25%;max-width:25%}[oo-col~="span4@md"]{flex-basis:33.333333%;max-width:33.333333%}[oo-col~="span5@md"]{flex-basis:41.666667%;max-width:41.666667%}[oo-col~="span6@md"]{flex-basis:50%;max-width:50%}[oo-col~="span7@md"]{flex-basis:58.333333%;max-width:58.333333%}[oo-col~="span8@md"]{flex-basis:66.666667%;max-width:66.666667%}[oo-col~="span9@md"]{flex-basis:75%;max-width:75%}[oo-col~="span10@md"]{flex-basis:83.333333%;max-width:83.333333%}[oo-col~="span11@md"]{flex-basis:91.666667%;max-width:91.666667%}[oo-col~="span12@md"]{flex-basis:100%;max-width:100%}[oo-col~="fit@md"]{min-width:auto;flex-grow:0;flex-basis:auto}}@media (min-width: 80em){[oo-col~="auto@lg"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@lg"]{flex-basis:8.333333%;max-width:8.333333%}[oo-col~="span2@lg"]{flex-basis:16.666667%;max-width:16.666667%}[oo-col~="span3@lg"]{flex-basis:25%;max-width:25%}[oo-col~="span4@lg"]{flex-basis:33.333333%;max-width:33.333333%}[oo-col~="span5@lg"]{flex-basis:41.666667%;max-width:41.666667%}[oo-col~="span6@lg"]{flex-basis:50%;max-width:50%}[oo-col~="span7@lg"]{flex-basis:58.333333%;max-width:58.333333%}[oo-col~="span8@lg"]{flex-basis:66.666667%;max-width:66.666667%}[oo-col~="span9@lg"]{flex-basis:75%;max-width:75%}[oo-col~="span10@lg"]{flex-basis:83.333333%;max-width:83.333333%}[oo-col~="span11@lg"]{flex-basis:91.666667%;max-width:91.666667%}[oo-col~="span12@lg"]{flex-basis:100%;max-width:100%}[oo-col~="fit@lg"]{min-width:auto;flex-grow:0;flex-basis:auto}}[oo-row~="stretch"]{align-items:stretch}[oo-row~="stretch"]>[oo-col]{display:flex}[oo-row~="stretch"]>[oo-col]>*{width:100%}[oo-row]>[oo-col]{background-clip:padding-box;border-left-style:solid;border-left-color:transparent}[oo-row]{left:-1rem;margin-bottom:-1rem;margin-right:-1rem}[oo-row]>[oo-col]{margin-bottom:1rem;border-left-width:1rem}@media (min-width: 37.5em){[oo-row]{left:-1.5rem;margin-bottom:-1.5rem;margin-right:-1.5rem}[oo-row]>[oo-col]{margin-bottom:1.5rem;border-left-width:1.5rem}}[oo-row~="gutter-less"]{left:-0;margin-bottom:-0;margin-right:-0}[oo-row~="gutter-less"]>[oo-col]{margin-bottom:0;border-left-width:0}[oo-col~="clear"]{margin:0 !important;flex-basis:100%;max-width:100%;border:0 !important}[oo-button]{display:inline-block;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;touch-action:manipulation;-webkit-appearance:none;-moz-appearance:none;padding:0.438em 1.2em;font-size:.875rem;font-weight:bold;line-height:1.45;color:#333;background-color:#fff;border:1px solid #cecece;border-radius:.2em}[oo-button]:disabled{cursor:not-allowed}[oo-button]:hover{color:#333;background-color:#e6e6e6}[oo-button]:focus{color:#333;background-color:#e6e6e6}[oo-button]:active{background-color:#e0e0e0;box-shadow:inset 1px 1px 1px 0 #bfbfbf;outline:none}[oo-button]:disabled{opacity:.75}[oo-button~="primary"]{color:#fff;background-color:#28a6c7;border-color:#28a6c7}[oo-button~="primary"]:hover:not(:disabled),[oo-button~="primary"]:focus:not(:disabled){color:#fff;background-color:#1f839d;border-color:#1f839d}[oo-button~="primary"]:focus:not(:disabled){outline:none;box-shadow:0 0 3px 4px #33b4d6}[oo-button~="primary"]:active:not(:disabled){color:#fff;background-color:#1e7b94;box-shadow:inset 1px 1px 1px 0 #134d5d;outline:none;border-color:#1e7b94}[oo-button~="secondary"]{color:#fff;background-color:#959595;border-color:#959595}[oo-button~="secondary"]:hover:not(:disabled),[oo-button~="secondary"]:focus:not(:disabled){color:#fff;background-color:#7c7c7c;border-color:#7c7c7c}[oo-button~="secondary"]:focus:not(:disabled){outline:none;box-shadow:0 0 3px 4px #a2a2a2}[oo-button~="secondary"]:active:not(:disabled){color:#fff;background-color:#767676;box-shadow:inset 1px 1px 1px 0 #555;outline:none;border-color:#767676}[oo-button~="full"]{width:100%}label{margin-bottom:.1875rem;display:inline-block;font-weight:500;line-height:1.5}[oo-input]{-webkit-appearance:none;-moz-appearance:none;padding:0.5em 0.625em;display:block;width:100%;min-height:2.5em;color:#4d4d4d;font-size:1rem;line-height:1.15;background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em}[oo-input]:focus{outline:none;box-shadow:0 0 8px 0 rgba(170,170,170,0.25)}[oo-select]{position:relative;display:block}[oo-select]::before{position:absolute;top:0;right:0;bottom:0;content:'';border-top:1px solid #d6d6d6;border-right:1px solid #d6d6d6;border-bottom:1px solid #d6d6d6;border-top-right-radius:.2em;border-bottom-right-radius:.2em;pointer-events:none}[oo-select]::after{position:absolute;top:50%;content:'';border-bottom-style:solid;border-right-style:solid;pointer-events:none;transform:rotateZ(45deg) translateY(-50%) translateX(-50%)}[oo-select]::before{width:40px}[oo-select]::after{right:15px;width:10px;height:10px}[oo-select]::after{border-bottom-width:2px;border-right-width:2px}[oo-select]::before{background-color:#fff}[oo-select]::after{border-bottom-color:#4d4d4d;border-right-color:#4d4d4d}[oo-select]>select{margin:0;-webkit-appearance:none;-moz-appearance:none;padding:0.5em 0.625em;display:block;width:100%;min-height:2.5em;color:#4d4d4d;font-size:1rem;line-height:1.15;background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em}[oo-select]>select::-ms-expand{display:none}[oo-select]>select:focus{outline:none;box-shadow:0 0 8px 0 rgba(170,170,170,0.25)}[oo-select][class*="color-"]>select{color:inherit !important}[oo-select][class*="bg-"]>select{background-color:inherit !important}[oo-select][class*="border-"]>select,[oo-select][class*="border-"]::before{border-color:inherit !important}[oo-checkbox]{position:absolute;opacity:0;pointer-events:none}[oo-checkbox]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-checkbox]+label::after{display:flex;order:-1;content:'';background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em;transition:background-color 250ms ease-out}[oo-checkbox]:checked+label::before{position:absolute;top:0;left:0;content:'';border-right:solid #fff;border-bottom:solid #fff;transform:translate(80%) translateY(20%) rotateZ(40deg)}[oo-checkbox]:checked+label::after{background-color:#4d4d4d;border:1px solid #4d4d4d}[oo-checkbox]+label::after{margin-right:.45rem;min-width:1.125rem;min-height:1.125rem}[oo-checkbox]+label+[oo-checkbox]+label{margin-top:.375rem}[oo-checkbox]:checked+label::before{min-width:.45rem;min-height:.675rem;border-right-width:.135rem;border-bottom-width:.135rem}[oo-checkbox][oo-checkbox~="inline"]+label:not(:last-child){margin-right:.9rem}[oo-checkbox~="inline"]+label{display:inline-flex}[oo-radio]{position:absolute;opacity:0;pointer-events:none}[oo-radio]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-radio]+label::after{display:flex;order:-1;content:'';border-radius:50%;background-color:#fff;border:1px solid #d6d6d6}[oo-radio]:checked+label::before{position:absolute;top:0;left:0;content:'';border-radius:50%;background-color:#fff}[oo-radio]:checked+label::after{background-color:#4d4d4d;border-color:#4d4d4d;transition:background-color 250ms ease-out}[oo-radio]+label::after{margin-right:.5625rem;min-width:1.125rem;min-height:1.125rem}[oo-radio]+label+[oo-radio]+label{margin-top:.375rem}[oo-radio]:checked+label::before{top:calc(50% - .5625rem);min-width:1.125rem;min-height:1.125rem;transform:scale(0.4)}[oo-radio][oo-radio~="inline"]+label:not(:last-child){margin-right:.9rem}[oo-radio~="inline"]+label{display:inline-flex}[oo-toggle]{position:absolute;opacity:0;pointer-events:none}[oo-toggle]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-toggle]+label::before{position:absolute;left:0;content:'';border-radius:50%;background-color:#fff;box-shadow:1px 1px 2px 0 rgba(77,77,77,0.3);transition:transform 300ms ease-out}[oo-toggle]+label::after{display:flex;order:-1;content:'';border:1px solid #d6d6d6;border-radius:50em;background-color:#d6d6d6;transition:background-color 300ms ease-in-out,border-color 300ms ease-in-out}[oo-toggle]+label:empty::after{margin-right:0 !important}[oo-toggle]:checked+label::after{border-color:#4d4d4d;background-color:#4d4d4d}[oo-toggle]+label::before{top:calc(50% - (1.05rem / 2));min-width:1.05rem;height:1.05rem;transform:translate3d(.3rem, 0, 0)}[oo-toggle]+label::after{margin-right:.6rem;min-width:2.7rem;min-height:1.5rem}[oo-toggle]+label+[oo-toggle]+label{margin-top:.5rem}[oo-toggle]:checked+label::before{transform:translate3d(calc(80% + (1.5rem * .35)), 0, 0)}.container,.container-fluid{margin-left:auto;margin-right:auto;display:block;padding-right:1rem;padding-left:1rem}@media (min-width: 37.5em){.container,.container-fluid{padding-right:1.5rem;padding-left:1.5rem}}.container{max-width:1280px}.hidden{display:none !important}@media print{.hidden\@print{display:none !important}}@media screen{.hidden\@screen{display:none !important}}@media (min-width: 37.5em){.hidden\@sm{display:none !important}}@media (min-width: 60em){.hidden\@md{display:none !important}}@media (min-width: 80em){.hidden\@lg{display:none !important}}@media (max-width: 37.499em){.hidden\!\@sm{display:none !important}}@media (max-width: 59.999em){.hidden\!\@md{display:none !important}}@media (max-width: 79.999em){.hidden\!\@lg{display:none !important}}ul.list-center,ol.list-center{text-align:center;padding-left:0;list-style-position:inside}.list-unstyle{padding-left:0;list-style:none}.list-unstyle ul{padding-left:2.2em}.list-unstyle .list-unstyle{padding-left:1em}.list-inline{padding-left:0;list-style:none}.list-inline>li{margin-bottom:0;display:inline-block}.list-inline>li:not(:last-child){margin-right:1em}.responsive{max-width:100%;height:auto}.color-primary{color:#28a6c7 !important}.color-secondary{color:#959595 !important}.bg-primary{background-color:#28a6c7 !important}.bg-secondary{background-color:#f8f8f8 !important}.font-large{font-size:1.25rem !important}.font-small{font-size:.875rem !important}.font-italic{font-style:italic !important}.font-bold{font-weight:700 !important}.font-light{font-weight:300 !important}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-uppercase{text-transform:uppercase !important}.clear{clear:both}.clearfix::before,.clearfix::after{display:block;content:'';clear:both}.float-left{float:left !important}.float-right{float:right !important}.ml-0{margin-left:0 !important}.ml-5{margin-left:.3125rem !important}.ml-10{margin-left:.625rem !important}.ml-15{margin-left:.9375rem !important}.mr-0{margin-right:0 !important}.mr-5{margin-right:.3125rem !important}.mr-10{margin-right:.625rem !important}.mr-15{margin-right:.9375rem !important}.mt-0{margin-top:0 !important}.mt-5{margin-top:.3125rem !important}.mt-10{margin-top:.625rem !important}.mt-15{margin-top:.9375rem !important}.mt-30{margin-top:1.875rem !important}.mb-0{margin-bottom:0 !important}.mb-5{margin-bottom:.3125rem !important}.mb-10{margin-bottom:.625rem !important}.mb-15{margin-bottom:.9375rem !important}.mb-30{margin-bottom:1.875rem !important}.wrapper-small{padding:1rem !important}.wrapper-medium{padding:1.5rem !important}
1
+ *,*::after,*::before{box-sizing:border-box}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Helvetica Neue","Helvetica","Arial",sans-serif;font-size:1em;line-height:1.375;color:#444;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin-top:.67em;margin-bottom:.45em;line-height:1.125}h1{font-size:2rem}h2{font-size:1.625rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1rem}h6{font-size:.875rem}p{margin-top:.5em;margin-bottom:1.125em}a{color:#28a6c7;text-decoration:none}[href]:hover{color:rgb(29.7573221757,123.4928870293,148.0426778243)}[href]:focus{color:rgb(29.7573221757,123.4928870293,148.0426778243)}ul,ol{margin-top:.5em;margin-bottom:1.125em;padding-left:1.1em}ul>ul,ul ol,ol>ul,ol ol{margin-top:.3em;margin-bottom:.5em}hr,.hr{display:block;border:none;margin:1rem auto;border-bottom:1px solid #cdcdcd}[oo-row]{position:relative;display:flex;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;clear:both}[oo-col]{flex-shrink:0;flex-grow:1;flex-basis:0;min-width:0;max-width:100%}[oo-col~=span1]{flex-basis:8.3333333333%;max-width:8.3333333333%}[oo-col~=span2]{flex-basis:16.6666666667%;max-width:16.6666666667%}[oo-col~=span3]{flex-basis:25%;max-width:25%}[oo-col~=span4]{flex-basis:33.3333333333%;max-width:33.3333333333%}[oo-col~=span5]{flex-basis:41.6666666667%;max-width:41.6666666667%}[oo-col~=span6]{flex-basis:50%;max-width:50%}[oo-col~=span7]{flex-basis:58.3333333333%;max-width:58.3333333333%}[oo-col~=span8]{flex-basis:66.6666666667%;max-width:66.6666666667%}[oo-col~=span9]{flex-basis:75%;max-width:75%}[oo-col~=span10]{flex-basis:83.3333333333%;max-width:83.3333333333%}[oo-col~=span11]{flex-basis:91.6666666667%;max-width:91.6666666667%}[oo-col~=span12]{flex-basis:100%;max-width:100%}[oo-col~=fit]{min-width:auto;flex-grow:0;flex-basis:auto}[oo-row~=align-left]{justify-content:flex-start}[oo-row~=align-center]{justify-content:center}[oo-row~=align-right]{justify-content:flex-end}[oo-row~=align-evenly]{justify-content:space-evenly}[oo-row~=align-between]{justify-content:space-between}[oo-row~=valign-top]{align-items:flex-start}[oo-row~=valign-middle]{align-items:center}[oo-row~=valign-bottom]{align-items:flex-end}[oo-col~=self-align-left]{margin-left:initial;margin-right:initial}[oo-col~=self-align-center]{margin-left:auto;margin-right:auto}[oo-col~=self-align-right]{margin-left:auto;margin-right:initial}[oo-col~=self-valign-top]{align-self:flex-start}[oo-col~=self-valign-middle]{align-self:center}[oo-col~=self-valign-bottom]{align-self:flex-end}@media(min-width: 37.5em){[oo-col~="auto@sm"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@sm"]{flex-basis:8.3333333333%;max-width:8.3333333333%}[oo-col~="span2@sm"]{flex-basis:16.6666666667%;max-width:16.6666666667%}[oo-col~="span3@sm"]{flex-basis:25%;max-width:25%}[oo-col~="span4@sm"]{flex-basis:33.3333333333%;max-width:33.3333333333%}[oo-col~="span5@sm"]{flex-basis:41.6666666667%;max-width:41.6666666667%}[oo-col~="span6@sm"]{flex-basis:50%;max-width:50%}[oo-col~="span7@sm"]{flex-basis:58.3333333333%;max-width:58.3333333333%}[oo-col~="span8@sm"]{flex-basis:66.6666666667%;max-width:66.6666666667%}[oo-col~="span9@sm"]{flex-basis:75%;max-width:75%}[oo-col~="span10@sm"]{flex-basis:83.3333333333%;max-width:83.3333333333%}[oo-col~="span11@sm"]{flex-basis:91.6666666667%;max-width:91.6666666667%}[oo-col~="span12@sm"]{flex-basis:100%;max-width:100%}[oo-col~="fit@sm"]{min-width:auto;flex-grow:0;flex-basis:auto}}@media(min-width: 60em){[oo-col~="auto@md"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@md"]{flex-basis:8.3333333333%;max-width:8.3333333333%}[oo-col~="span2@md"]{flex-basis:16.6666666667%;max-width:16.6666666667%}[oo-col~="span3@md"]{flex-basis:25%;max-width:25%}[oo-col~="span4@md"]{flex-basis:33.3333333333%;max-width:33.3333333333%}[oo-col~="span5@md"]{flex-basis:41.6666666667%;max-width:41.6666666667%}[oo-col~="span6@md"]{flex-basis:50%;max-width:50%}[oo-col~="span7@md"]{flex-basis:58.3333333333%;max-width:58.3333333333%}[oo-col~="span8@md"]{flex-basis:66.6666666667%;max-width:66.6666666667%}[oo-col~="span9@md"]{flex-basis:75%;max-width:75%}[oo-col~="span10@md"]{flex-basis:83.3333333333%;max-width:83.3333333333%}[oo-col~="span11@md"]{flex-basis:91.6666666667%;max-width:91.6666666667%}[oo-col~="span12@md"]{flex-basis:100%;max-width:100%}[oo-col~="fit@md"]{min-width:auto;flex-grow:0;flex-basis:auto}}@media(min-width: 80em){[oo-col~="auto@lg"]{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}[oo-col~="span1@lg"]{flex-basis:8.3333333333%;max-width:8.3333333333%}[oo-col~="span2@lg"]{flex-basis:16.6666666667%;max-width:16.6666666667%}[oo-col~="span3@lg"]{flex-basis:25%;max-width:25%}[oo-col~="span4@lg"]{flex-basis:33.3333333333%;max-width:33.3333333333%}[oo-col~="span5@lg"]{flex-basis:41.6666666667%;max-width:41.6666666667%}[oo-col~="span6@lg"]{flex-basis:50%;max-width:50%}[oo-col~="span7@lg"]{flex-basis:58.3333333333%;max-width:58.3333333333%}[oo-col~="span8@lg"]{flex-basis:66.6666666667%;max-width:66.6666666667%}[oo-col~="span9@lg"]{flex-basis:75%;max-width:75%}[oo-col~="span10@lg"]{flex-basis:83.3333333333%;max-width:83.3333333333%}[oo-col~="span11@lg"]{flex-basis:91.6666666667%;max-width:91.6666666667%}[oo-col~="span12@lg"]{flex-basis:100%;max-width:100%}[oo-col~="fit@lg"]{min-width:auto;flex-grow:0;flex-basis:auto}}[oo-row~=stretch]{align-items:stretch}[oo-row~=stretch]>[oo-col]{display:flex}[oo-row~=stretch]>[oo-col]>*{width:100%}[oo-row]>[oo-col]{background-clip:padding-box;border-left-style:solid;border-left-color:rgba(0,0,0,0)}[oo-row]{left:-1rem;margin-bottom:-1rem;margin-right:-1rem}[oo-row]>[oo-col]{margin-bottom:1rem;border-left-width:1rem}@media(min-width: 37.5em){[oo-row]{left:-1.5rem;margin-bottom:-1.5rem;margin-right:-1.5rem}[oo-row]>[oo-col]{margin-bottom:1.5rem;border-left-width:1.5rem}}[oo-row~=gutter-less]{left:0;margin-bottom:0;margin-right:0}[oo-row~=gutter-less]>[oo-col]{margin-bottom:0;border-left-width:0}[oo-col~=clear]{margin:0 !important;flex-basis:100%;max-width:100%;border:0 !important}[oo-button]{display:inline-block;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;touch-action:manipulation;-webkit-appearance:none;-moz-appearance:none;padding:.438em 1.2em;font-size:.875rem;font-weight:bold;line-height:1.45;color:#333;background-color:#fff;border:1px solid #cecece;border-radius:.2em}[oo-button]:disabled{cursor:not-allowed}[oo-button]:hover{color:#333;background-color:hsl(0,0%,90%)}[oo-button]:focus{color:#333;background-color:hsl(0,0%,90%)}[oo-button]:active{background-color:hsl(0,0%,88%);box-shadow:inset 1px 1px 1px 0 hsl(0,0%,75%);outline:none}[oo-button]:disabled{opacity:.75}[oo-button~=primary]{color:#fff;background-color:#28a6c7;border-color:#28a6c7}[oo-button~=primary]:hover:not(:disabled),[oo-button~=primary]:focus:not(:disabled){color:#fff;background-color:rgb(31.4644351464,130.5774058577,156.5355648536);border-color:rgb(31.4644351464,130.5774058577,156.5355648536)}[oo-button~=primary]:focus:not(:disabled){outline:none;box-shadow:0 0 3px 4px rgb(50.5878661088,180.0146443515,213.9121338912)}[oo-button~=primary]:active:not(:disabled){color:#fff;background-color:rgb(29.7573221757,123.4928870293,148.0426778243);box-shadow:inset 1px 1px 1px 0 rgb(18.6610878661,77.4435146444,92.8389121339);outline:none;border-color:rgb(29.7573221757,123.4928870293,148.0426778243)}[oo-button~=secondary]{color:#fff;background-color:#959595;border-color:#959595}[oo-button~=secondary]:hover:not(:disabled),[oo-button~=secondary]:focus:not(:disabled){color:#fff;background-color:rgb(123.5,123.5,123.5);border-color:rgb(123.5,123.5,123.5)}[oo-button~=secondary]:focus:not(:disabled){outline:none;box-shadow:0 0 3px 4px hsl(0,0%,63.431372549%)}[oo-button~=secondary]:active:not(:disabled){color:#fff;background-color:rgb(118.4,118.4,118.4);box-shadow:inset 1px 1px 1px 0 rgb(85.25,85.25,85.25);outline:none;border-color:rgb(118.4,118.4,118.4)}[oo-button~=full]{width:100%}label{margin-bottom:.1875rem;display:inline-block;font-weight:500;line-height:1.5}[oo-input]{-webkit-appearance:none;-moz-appearance:none;padding:.5em .625em;display:block;width:100%;min-height:2.5em;color:#4d4d4d;font-size:1rem;line-height:1.15;background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em}[oo-input]:focus{outline:none;box-shadow:0 0 8px 0 rgba(170,170,170,.25)}[oo-select]{position:relative;display:block}[oo-select]::before{position:absolute;top:0;right:0;bottom:0;content:"";border-top:1px solid #d6d6d6;border-right:1px solid #d6d6d6;border-bottom:1px solid #d6d6d6;border-top-right-radius:.2em;border-bottom-right-radius:.2em;pointer-events:none}[oo-select]::after{position:absolute;top:50%;content:"";border-bottom-style:solid;border-right-style:solid;pointer-events:none;transform:rotateZ(45deg) translateY(-50%) translateX(-50%)}[oo-select]::before{width:40px}[oo-select]::after{right:15px;width:10px;height:10px}[oo-select]::after{border-bottom-width:2px;border-right-width:2px}[oo-select]::before{background-color:#fff}[oo-select]::after{border-bottom-color:#4d4d4d;border-right-color:#4d4d4d}[oo-select]>select{margin:0;-webkit-appearance:none;-moz-appearance:none;padding:.5em .625em;display:block;width:100%;min-height:2.5em;color:#4d4d4d;font-size:1rem;line-height:1.15;background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em}[oo-select]>select::-ms-expand{display:none}[oo-select]>select:focus{outline:none;box-shadow:0 0 8px 0 rgba(170,170,170,.25)}[oo-select][class*=color-]>select{color:inherit !important}[oo-select][class*=bg-]>select{background-color:inherit !important}[oo-select][class*=border-]>select,[oo-select][class*=border-]::before{border-color:inherit !important}[oo-checkbox]{position:absolute;opacity:0;pointer-events:none}[oo-checkbox]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-checkbox]+label::after{display:flex;order:-1;content:"";background-color:#fff;border:1px solid #d6d6d6;border-radius:.2em;transition:background-color 250ms ease-out}[oo-checkbox]:checked+label::before{position:absolute;top:0;left:0;content:"";border-right:solid #fff;border-bottom:solid #fff;transform:translate(80%) translateY(20%) rotateZ(40deg)}[oo-checkbox]:checked+label::after{background-color:#4d4d4d;border:1px solid #4d4d4d}[oo-checkbox]+label::after{margin-right:.45rem;min-width:1.125rem;min-height:1.125rem}[oo-checkbox]+label+[oo-checkbox]+label{margin-top:.375rem}[oo-checkbox]:checked+label::before{min-width:.45rem;min-height:.675rem;border-right-width:.135rem;border-bottom-width:.135rem}[oo-checkbox][oo-checkbox~=inline]+label:not(:last-child){margin-right:.9rem}[oo-checkbox~=inline]+label{display:inline-flex}[oo-radio]{position:absolute;opacity:0;pointer-events:none}[oo-radio]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-radio]+label::after{display:flex;order:-1;content:"";border-radius:50%;background-color:#fff;border:1px solid #d6d6d6}[oo-radio]:checked+label::before{position:absolute;top:0;left:0;content:"";border-radius:50%;background-color:#fff}[oo-radio]:checked+label::after{background-color:#4d4d4d;border-color:#4d4d4d;transition:background-color 250ms ease-out}[oo-radio]+label::after{margin-right:.5625rem;min-width:1.125rem;min-height:1.125rem}[oo-radio]+label+[oo-radio]+label{margin-top:.375rem}[oo-radio]:checked+label::before{top:calc(50% - 0.5625rem);min-width:1.125rem;min-height:1.125rem;transform:scale(0.4)}[oo-radio][oo-radio~=inline]+label:not(:last-child){margin-right:.9rem}[oo-radio~=inline]+label{display:inline-flex}[oo-toggle]{position:absolute;opacity:0;pointer-events:none}[oo-toggle]+label{position:relative;display:flex;align-items:center;width:fit-content;font-weight:inherit;line-height:1.1}[oo-toggle]+label::before{position:absolute;left:0;content:"";border-radius:50%;background-color:#fff;box-shadow:1px 1px 2px 0 rgba(77,77,77,.3);transition:transform 300ms ease-out}[oo-toggle]+label::after{display:flex;order:-1;content:"";border:1px solid #d6d6d6;border-radius:50em;background-color:#d6d6d6;transition:background-color 300ms ease-in-out,border-color 300ms ease-in-out}[oo-toggle]+label:empty::after{margin-right:0 !important}[oo-toggle]:checked+label::after{border-color:#4d4d4d;background-color:#4d4d4d}[oo-toggle]+label::before{top:calc(50% - .525rem);min-width:1.05rem;height:1.05rem;transform:translate3d(0.3rem, 0, 0)}[oo-toggle]+label::after{margin-right:.6rem;min-width:2.7rem;min-height:1.5rem}[oo-toggle]+label+[oo-toggle]+label{margin-top:.5rem}[oo-toggle]:checked+label::before{transform:translate3d(calc(80% + 1.5rem * 0.35), 0, 0)}.container,.container-fluid{margin-left:auto;margin-right:auto;display:block;padding-right:1rem;padding-left:1rem}@media(min-width: 37.5em){.container,.container-fluid{padding-right:1.5rem;padding-left:1.5rem}}.container{max-width:1280px}.hidden{display:none !important}@media print{.hidden\@print{display:none !important}}@media screen{.hidden\@screen{display:none !important}}@media(min-width: 37.5em){.hidden\@sm{display:none !important}}@media(min-width: 60em){.hidden\@md{display:none !important}}@media(min-width: 80em){.hidden\@lg{display:none !important}}@media(max-width: 37.499em){.hidden\!\@sm{display:none !important}}@media(max-width: 59.999em){.hidden\!\@md{display:none !important}}@media(max-width: 79.999em){.hidden\!\@lg{display:none !important}}ul.list-center,ol.list-center{text-align:center;padding-left:0;list-style-position:inside}.list-unstyle{padding-left:0;list-style:none}.list-unstyle ul{padding-left:2.2em}.list-unstyle .list-unstyle{padding-left:1em}.list-inline{padding-left:0;list-style:none}.list-inline>li{margin-bottom:0;display:inline-block}.list-inline>li:not(:last-child){margin-right:1em}.responsive{max-width:100%;height:auto}.color-primary{color:#28a6c7 !important}.color-secondary{color:#959595 !important}.bg-primary{background-color:#28a6c7 !important}.bg-secondary{background-color:#f8f8f8 !important}.font-large{font-size:1.25rem !important}.font-small{font-size:0.875rem !important}.font-italic{font-style:italic !important}.font-bold{font-weight:700 !important}.font-light{font-weight:300 !important}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-uppercase{text-transform:uppercase !important}.clear{clear:both}.clearfix::before,.clearfix::after{display:block;content:"";clear:both}.float-left{float:left !important}.float-right{float:right !important}.ml-0{margin-left:0 !important}.ml-5{margin-left:0.3125rem !important}.ml-10{margin-left:0.625rem !important}.ml-15{margin-left:0.9375rem !important}.mr-0{margin-right:0 !important}.mr-5{margin-right:0.3125rem !important}.mr-10{margin-right:0.625rem !important}.mr-15{margin-right:0.9375rem !important}.mt-0{margin-top:0 !important}.mt-5{margin-top:0.3125rem !important}.mt-10{margin-top:0.625rem !important}.mt-15{margin-top:0.9375rem !important}.mt-30{margin-top:1.875rem !important}.mb-0{margin-bottom:0 !important}.mb-5{margin-bottom:0.3125rem !important}.mb-10{margin-bottom:0.625rem !important}.mb-15{margin-bottom:0.9375rem !important}.mb-30{margin-bottom:1.875rem !important}.wrapper-small{padding:1rem !important}.wrapper-medium{padding:1.5rem !important}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oo-loop",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Loop CSS framework, flexible and expressive CSS",
5
5
  "keywords": [
6
6
  "scss",
@@ -36,13 +36,12 @@
36
36
  "url": "https://github.com/oo-loop/loop.git"
37
37
  },
38
38
  "scripts": {
39
- "dev": "node-sass -r --output-style expanded --precision 6 src/index.scss dist/loop.css",
40
- "build": "node-sass --output-style compressed --precision 6 src/index.scss dist/loop.css",
41
- "watch": "npm run dev && npm run dev -- -w",
42
- "example": "node-sass --output-style expanded --precision 6 example/src -o example/build"
39
+ "dev": "sass --watch --style=expanded --no-source-map src/index.scss:dist/loop.css scss",
40
+ "build": "sass --style=compressed --no-source-map src/index.scss dist/loop.css",
41
+ "example": "sass --watch --style=expanded --no-source-map example/src:example/build"
43
42
  },
44
43
  "devDependencies": {
45
- "node-sass": "^7.0.0"
44
+ "sass": "^1.79.3"
46
45
  },
47
46
  "engines": {
48
47
  "node": ">= 6.0.0",
package/scss/_fn.scss ADDED
@@ -0,0 +1,13 @@
1
+ @import
2
+ 'functions/type',
3
+ 'functions/empty',
4
+ 'functions/split',
5
+ 'functions/extract',
6
+ 'functions/replace',
7
+ 'functions/strip',
8
+ 'functions/number',
9
+ 'functions/color',
10
+ 'functions/list',
11
+ 'functions/map',
12
+ 'functions/convert'
13
+ ;
package/scss/_init.scss CHANGED
@@ -1,3 +1,5 @@
1
+ @use 'fn';
2
+
1
3
  /// Init single element
2
4
  /// @param string $name Name of settings
3
5
  /// @param map $settings data
@@ -6,7 +8,7 @@
6
8
  @mixin initElement($name, $settings, $use-name-as-param: true) {
7
9
  // $ooLoop: ooAdd('include', $name) !global; // for styleguide
8
10
  @if $settings != null {
9
- $map: mapMergeDeep($ooLoop, if($use-name-as-param, (#{$name}: $settings), $settings));
11
+ $map: ooMergeDeep($ooLoop, if($use-name-as-param, (#{$name}: $settings), $settings));
10
12
  $ooLoop: if(hasRef($map), ooParse($map), $map) !global;
11
13
  }
12
14
  }
@@ -16,11 +18,11 @@
16
18
 
17
19
  @mixin ooInit($custom:null) {
18
20
  $map: $ooLoop;
19
- @if isMap($custom) and isNotEmpty($custom) {
20
- $map: mapMergeDeep($map, $custom);
21
+ @if fn.isMap($custom) and fn.isNotEmpty($custom) {
22
+ $map: ooMergeDeep($map, $custom);
21
23
  }
22
24
  $map: if(hasRef($map), ooParse($map), $map);
23
- $map: setMapValue($map, 'init', true);
25
+ $map: fn.setMapValue($map, 'init', true);
24
26
  $ooLoop: $map !global;
25
27
  }
26
28
 
package/scss/_loop.scss CHANGED
@@ -4,7 +4,7 @@
4
4
  @import
5
5
  "pre",
6
6
  "config",
7
- "functions/all",
7
+ "oo/all",
8
8
  "mixins/all",
9
9
  "base/all"
10
10
  ;
package/scss/_pre.scss CHANGED
@@ -1,3 +1,5 @@
1
+ @use 'sass:math';
2
+
1
3
  // Set available functions before configuration
2
4
 
3
5
  /// rem
@@ -7,5 +9,5 @@
7
9
  /// @return number rem value
8
10
 
9
11
  @function rem($pixel, $base: 16) {
10
- @return ((1rem * $pixel) / $base);
12
+ @return math.div((1rem * $pixel), $base);
11
13
  }
@@ -1,9 +1,11 @@
1
+ @use '../fn';
2
+
1
3
  // Typography
2
4
 
3
5
  @mixin Headings($param: null) {
4
6
  @include initElement('headings', $param);
5
7
 
6
- @if isNotEmpty(oo('headings.props')) {
8
+ @if fn.isNotEmpty(oo('headings.props')) {
7
9
  h1,
8
10
  h2,
9
11
  h3,
@@ -14,10 +16,10 @@
14
16
  }
15
17
  }
16
18
 
17
- @if isNotEmpty(oo('headings.sizes')) {
19
+ @if fn.isNotEmpty(oo('headings.sizes')) {
18
20
  @each $heading, $font-size in oo('headings.sizes') {
19
21
  #{$heading} {
20
- @if isMap($font-size) {
22
+ @if fn.isMap($font-size) {
21
23
  @each $key, $value in $font-size {
22
24
  @include breakpoint($key) {
23
25
  font-size: $value;
@@ -27,7 +29,7 @@
27
29
  font-size: $font-size;
28
30
  }
29
31
  }
30
- @if isNotEmpty(oo('headings.classes')) and inList($heading, oo('headings.classes')) {
32
+ @if fn.isNotEmpty(oo('headings.classes')) and fn.inList($heading, oo('headings.classes')) {
31
33
  .#{$heading} {
32
34
  @extend #{$heading};
33
35
  }
@@ -1,8 +1,11 @@
1
+ @use 'sass:color';
2
+ @use '../fn';
3
+
1
4
  // Button
2
5
 
3
6
  @mixin paintButton($color-value) {
4
- @if isColor($color-value) {
5
- $color: if(isBright($color-value), darken($color-value, 80%), #fff);
7
+ @if fn.isColor($color-value) {
8
+ $color: if(fn.isBright($color-value), color.adjust($color-value, $lightness: -80%), #fff);
6
9
 
7
10
  color: $color;
8
11
  background-color: $color-value;
@@ -12,12 +15,12 @@
12
15
 
13
16
  @if oo('button.outline') {
14
17
  &[#{ooPrefix()}-button~="outline"] {
15
- color: if(isBright($color-value, 210), darken($color-value, 30%), $color-value);
18
+ color: if(fn.isBright($color-value, 210), color.adjust($color-value, $lightness: -30%), $color-value);
16
19
  background: transparent;
17
20
  box-shadow: none;
18
21
 
19
- @if oo('button.props.border') and isBright($color-value, 210) {
20
- border-color: darken($color-value, 30%);
22
+ @if oo('button.props.border') and fn.isBright($color-value, 210) {
23
+ border-color: color.adjust($color-value, $lightness: -30%);
21
24
  }
22
25
  }
23
26
  }
@@ -25,9 +28,9 @@
25
28
  &:hover:not(:disabled),
26
29
  &:focus:not(:disabled) {
27
30
  color: $color;
28
- background-color: darken($color-value, 10%);
31
+ background-color: color.adjust($color-value, $lightness: -10%);
29
32
  @if oo('button.props.border') {
30
- border-color: darken($color-value, 10%);
33
+ border-color: color.adjust($color-value, $lightness: -10%);
31
34
  }
32
35
  @if oo('button.outline') {
33
36
  &[#{ooPrefix()}-button~="outline"] {
@@ -40,15 +43,15 @@
40
43
  }
41
44
  &:focus:not(:disabled) {
42
45
  outline: none;
43
- box-shadow: 0 0 3px 4px lighten($color-value, 5%);
46
+ box-shadow: 0 0 3px 4px color.adjust($color-value, $lightness: 5%);
44
47
  }
45
48
  &:active:not(:disabled) {
46
49
  color: $color;
47
- background-color: darken($color-value, 12%);
48
- box-shadow: inset 1px 1px 1px 0 darken($color-value, 25%);
50
+ background-color: color.adjust($color-value, $lightness: -12%);
51
+ box-shadow: inset 1px 1px 1px 0 color.adjust($color-value, $lightness: -25%);
49
52
  outline: none;
50
53
  @if oo('button.props.border') {
51
- border-color: darken($color-value, 12%);
54
+ border-color: color.adjust($color-value, $lightness: -12%);
52
55
  }
53
56
  }
54
57
  }
@@ -77,7 +80,7 @@
77
80
  @include generateStatesProperties(oo('button.states'));
78
81
  }
79
82
 
80
- @if isNotEmpty(oo('button.colors') and isMap(oo('button.colors'))) {
83
+ @if fn.isNotEmpty(oo('button.colors') and fn.isMap(oo('button.colors'))) {
81
84
  @each $name, $value in oo('button.colors') {
82
85
  [#{ooPrefix()}-button~="#{$name}"] {
83
86
  @include paintButton($value);
@@ -85,7 +88,7 @@
85
88
  }
86
89
  }
87
90
 
88
- @if isNotEmpty(oo('button.variants')) {
91
+ @if fn.isNotEmpty(oo('button.variants')) {
89
92
  @include generateComponentVariants('button', oo('button.variants'));
90
93
  }
91
94
  }
@@ -1,9 +1,14 @@
1
+ @use 'sass:list';
2
+ @use 'sass:meta';
3
+ @use 'sass:math';
4
+ @use '../fn';
5
+
1
6
  // Column
2
7
 
3
8
  @mixin columnGutterProps($size) {
4
- left: -#{$size};
5
- margin-bottom: -#{$size};
6
- margin-right: -#{$size};
9
+ left: -1 * $size;
10
+ margin-bottom: -1 * $size;
11
+ margin-right: -1 * $size;
7
12
  > [#{ooPrefix()}-col] {
8
13
  margin-bottom: $size;
9
14
  border-left-width: $size;
@@ -16,16 +21,16 @@
16
21
  }
17
22
  }
18
23
  @mixin columnGutterScreens($screens, $vertical:false) {
19
- $screens: if(isString($screens), toList($screens), $screens);
24
+ $screens: if(fn.isString($screens), fn.toList($screens), $screens);
20
25
  $config-name: if($vertical, 'column.gutter.vsizes', 'column.gutter.sizes');
21
26
  $prefix: if($vertical, 'vgutter', 'gutter');
22
27
 
23
28
  @each $class, $gutter-name in $screens {
24
29
  @include breakpoint($class) {
25
30
  $suffix: \@#{$class};
26
- @if $gutter-name == '*' or isList($screens) {
31
+ @if $gutter-name == '*' or fn.isList($screens) {
27
32
  @each $gutter-name, $gutter-size in oo('#{$config-name}') {
28
- @if isString($gutter-size) or isNumber($gutter-size) {
33
+ @if fn.isString($gutter-size) or fn.isNumber($gutter-size) {
29
34
  [#{ooPrefix()}-row~="#{$prefix}-#{$gutter-name}#{$suffix}"] {
30
35
  @if $vertical {
31
36
  @include columnVGutterProps($gutter-size);
@@ -35,11 +40,11 @@
35
40
  }
36
41
  }
37
42
  }
38
- } @else if isNotEmpty($gutter-name) {
39
- $gutter-names: toList($gutter-name);
43
+ } @else if fn.isNotEmpty($gutter-name) {
44
+ $gutter-names: fn.toList($gutter-name);
40
45
  @each $name in $gutter-names {
41
46
  $gutter-size: oo('#{$config-name}.#{$name}');
42
- @if isString($gutter-size) or isNumber($gutter-size) {
47
+ @if fn.isString($gutter-size) or fn.isNumber($gutter-size) {
43
48
  [#{ooPrefix()}-row~="#{$prefix}-#{$name}#{$suffix}"] {
44
49
  @if $vertical {
45
50
  @include columnVGutterProps($gutter-size);
@@ -58,8 +63,8 @@
58
63
  @return if($index > 0, $index, -1);
59
64
  }
60
65
  @mixin columnResponsiveAttribute($attribute-name, $prop-name, $prop-function) {
61
- @if function-exists('get-function') {
62
- $prop-function: get-function($prop-function);
66
+ @if meta.function-exists('get-function') {
67
+ $prop-function: meta.get-function($prop-function);
63
68
  }
64
69
  @each $class, $values in oo('column.#{$attribute-name}.screens') {
65
70
  @include breakpoint($class) {
@@ -67,14 +72,14 @@
67
72
  @if $values == '*' {
68
73
  @for $i from 0 to oo('column.system') {
69
74
  [#{ooPrefix()}-col~="#{$attribute-name}#{$i}#{$suffix}"] {
70
- #{$prop-name}: call($prop-function, $i);
75
+ #{$prop-name}: meta.call($prop-function, $i);
71
76
  }
72
77
  }
73
- } @else if isNotEmpty($values) {
74
- $values: toList($values);
78
+ } @else if fn.isNotEmpty($values) {
79
+ $values: fn.toList($values);
75
80
  @each $value in $values {
76
81
  [#{ooPrefix()}-col~="#{$attribute-name}#{$value}#{$suffix}"] {
77
- #{$prop-name}: call($prop-function, $value);
82
+ #{$prop-name}: meta.call($prop-function, $value);
78
83
  }
79
84
  }
80
85
  }
@@ -103,7 +108,7 @@
103
108
  }
104
109
 
105
110
  // reponsives classes starting from root
106
- @each $class in join('rt', oo('column.screens')) {
111
+ @each $class in list.join('rt', oo('column.screens')) {
107
112
  @include breakpoint($class) {
108
113
  $suffix: '';
109
114
  @if $class != 'rt' {
@@ -121,13 +126,13 @@
121
126
  // columns
122
127
  @for $i from 1 through oo('column.system') {
123
128
  [#{ooPrefix()}-col~="span#{$i}#{$suffix}"] {
124
- flex-basis: percentage($i / oo('column.system'));
125
- max-width: percentage($i / oo('column.system'));
129
+ flex-basis: math.percentage(math.div($i, oo('column.system')));
130
+ max-width: math.percentage(math.div($i, oo('column.system')));
126
131
  }
127
132
  }
128
133
 
129
134
  @if oo('column.fit.use')
130
- and (inList($class, toList(oo('column.fit.screens'))) or isEmpty($suffix)) {
135
+ and (fn.inList($class, fn.toList(oo('column.fit.screens'))) or fn.isEmpty($suffix)) {
131
136
  [#{ooPrefix()}-col~="fit#{$suffix}"] {
132
137
  min-width: auto;
133
138
  flex-grow: 0;
@@ -136,7 +141,7 @@
136
141
  }
137
142
 
138
143
  @if oo('column.alignment.use')
139
- and (inList($class, toList(oo('column.alignment.screens'))) or isEmpty($suffix)) {
144
+ and (fn.inList($class, fn.toList(oo('column.alignment.screens'))) or fn.isEmpty($suffix)) {
140
145
  // horizontal alignment
141
146
  [#{ooPrefix()}-row~="align-left#{$suffix}"] { justify-content: flex-start; }
142
147
  [#{ooPrefix()}-row~="align-center#{$suffix}"] { justify-content: center; }
@@ -151,7 +156,7 @@
151
156
  }
152
157
 
153
158
  @if oo('column.selfAlignment.use')
154
- and (inList($class, toList(oo('column.selfAlignment.screens'))) or isEmpty($suffix)) {
159
+ and (fn.inList($class, fn.toList(oo('column.selfAlignment.screens'))) or fn.isEmpty($suffix)) {
155
160
  // horizontal alignment
156
161
  [#{ooPrefix()}-col~="self-align-left#{$suffix}"] { margin-left: initial; margin-right: initial; }
157
162
  [#{ooPrefix()}-col~="self-align-center#{$suffix}"] { margin-left: auto; margin-right: auto; }
@@ -183,7 +188,7 @@
183
188
  }
184
189
 
185
190
  // Order
186
- @if oo('column.order.use') and isNotEmpty(oo('column.order.screens')) {
191
+ @if oo('column.order.use') and fn.isNotEmpty(oo('column.order.screens')) {
187
192
  @include columnResponsiveAttribute('order', 'order', 'columnSetOrder');
188
193
  }
189
194
 
@@ -199,7 +204,7 @@
199
204
  }
200
205
 
201
206
  // gutter
202
- @if isNotEmpty(oo('column.gutter')) {
207
+ @if fn.isNotEmpty(oo('column.gutter')) {
203
208
  [#{ooPrefix()}-row] > [#{ooPrefix()}-col] {
204
209
  background-clip: padding-box;
205
210
  border-left-style: solid;
@@ -207,12 +212,12 @@
207
212
  }
208
213
  }
209
214
 
210
- @if isString(oo('column.gutter')) or isNumber(oo('column.gutter')) {
215
+ @if fn.isString(oo('column.gutter')) or fn.isNumber(oo('column.gutter')) {
211
216
  [#{ooPrefix()}-row] {
212
217
  $gutter-size: oo('column.gutter');
213
218
  @include columnGutterProps($gutter-size);
214
219
  }
215
- } @else if isMap(oo('column.gutter')) and areKeysBreakpoints(oo('column.gutter')) {
220
+ } @else if fn.isMap(oo('column.gutter')) and areKeysBreakpoints(oo('column.gutter')) {
216
221
  [#{ooPrefix()}-row] {
217
222
  $gutter-size: oo('column.gutter');
218
223
  @each $key, $value in $gutter-size {
@@ -221,17 +226,17 @@
221
226
  }
222
227
  }
223
228
  }
224
- } @else if isNotEmpty(oo('column.gutter.sizes')) {
229
+ } @else if fn.isNotEmpty(oo('column.gutter.sizes')) {
225
230
  @each $gutter-name, $gutter-size in oo('column.gutter.sizes') {
226
- $selector: if(isEmpty($gutter-name) or $gutter-name == 'default', 'row', 'row~="gutter-#{$gutter-name}"');
231
+ $selector: if(fn.isEmpty($gutter-name) or $gutter-name == 'default', 'row', 'row~="gutter-#{$gutter-name}"');
227
232
  [#{ooPrefix()}-#{$selector}] {
228
- @if (isMap($gutter-size)) {
233
+ @if (fn.isMap($gutter-size)) {
229
234
  @each $key, $value in $gutter-size {
230
235
  @include breakpoint($key) {
231
236
  @include columnGutterProps($value);
232
237
  }
233
238
  }
234
- } @else if isString($gutter-size) or isNumber($gutter-size) {
239
+ } @else if fn.isString($gutter-size) or fn.isNumber($gutter-size) {
235
240
  @include columnGutterProps($gutter-size);
236
241
  }
237
242
  }
@@ -240,16 +245,16 @@
240
245
  }
241
246
 
242
247
  // vgutter
243
- @if isNotEmpty(oo('column.gutter.vsizes')) {
248
+ @if fn.isNotEmpty(oo('column.gutter.vsizes')) {
244
249
  @each $gutter-name, $vgutter-size in oo('column.gutter.vsizes') {
245
- $suffix: if(isEmpty($gutter-name) or $gutter-name == 'default', '', '-#{$gutter-name}');
246
- @if (isMap($vgutter-size)) {
250
+ $suffix: if(fn.isEmpty($gutter-name) or $gutter-name == 'default', '', '-#{$gutter-name}');
251
+ @if (fn.isMap($vgutter-size)) {
247
252
  @each $key, $value in $vgutter-size {
248
253
  [#{ooPrefix()}-row~="vgutter#{$suffix}"] {
249
254
  @include columnVGutterProps($value);
250
255
  }
251
256
  }
252
- } @else if isString($vgutter-size) or isNumber($vgutter-size) {
257
+ } @else if fn.isString($vgutter-size) or fn.isNumber($vgutter-size) {
253
258
  [#{ooPrefix()}-row~="vgutter#{$suffix}"] {
254
259
  @include columnVGutterProps($vgutter-size);
255
260
  }
@@ -266,7 +271,7 @@
266
271
  border: 0 !important;
267
272
  }
268
273
 
269
- @if isNotEmpty(oo('column.variants')) {
274
+ @if fn.isNotEmpty(oo('column.variants')) {
270
275
  @include generateComponentVariants('col', oo('column.variants'));
271
276
  }
272
277
  }