From bbdbf7a87a0874f8bb844bffe47c91eb204cc98e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 19 Apr 2015 16:17:06 +0200 Subject: [PATCH 001/355] initial commit --- packages/avalanchesass-object-grid/.gitignore | 3 + packages/avalanchesass-object-grid/LICENSE | 340 ++++++++++++++++++ packages/avalanchesass-object-grid/README.md | 0 packages/avalanchesass-object-grid/bower.json | 29 ++ .../avalanchesass-object-grid/css/grid.css | 268 ++++++++++++++ .../css/grid.css.map | 1 + .../css/grid.min.css | 1 + .../avalanchesass-object-grid/gulpfile.js | 39 ++ .../avalanchesass-object-grid/package.json | 25 ++ .../avalanchesass-object-grid/scss/grid.scss | 194 ++++++++++ 10 files changed, 900 insertions(+) create mode 100644 packages/avalanchesass-object-grid/.gitignore create mode 100644 packages/avalanchesass-object-grid/LICENSE create mode 100644 packages/avalanchesass-object-grid/README.md create mode 100644 packages/avalanchesass-object-grid/bower.json create mode 100644 packages/avalanchesass-object-grid/css/grid.css create mode 100644 packages/avalanchesass-object-grid/css/grid.css.map create mode 100644 packages/avalanchesass-object-grid/css/grid.min.css create mode 100644 packages/avalanchesass-object-grid/gulpfile.js create mode 100644 packages/avalanchesass-object-grid/package.json create mode 100644 packages/avalanchesass-object-grid/scss/grid.scss diff --git a/packages/avalanchesass-object-grid/.gitignore b/packages/avalanchesass-object-grid/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/avalanchesass-object-grid/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/avalanchesass-object-grid/LICENSE b/packages/avalanchesass-object-grid/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/avalanchesass-object-grid/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json new file mode 100644 index 0000000..930f155 --- /dev/null +++ b/packages/avalanchesass-object-grid/bower.json @@ -0,0 +1,29 @@ +{ + "name": "Avalanche Grid", + "version": "2.0", + "homepage": "https://github.com/avalanchesass/avalanche_object_grid", + "authors": [ + "Markus Oberlehner" + ], + "description": "A grid system for the avalanche framework", + "main": "css/grid.css", + "keywords": [ + "SASS", + "CSS", + "Grid" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_utility_clearfix": "~2.0" + }, + "devDependencies": { + "avalanche": "~2.0" + } +} diff --git a/packages/avalanchesass-object-grid/css/grid.css b/packages/avalanchesass-object-grid/css/grid.css new file mode 100644 index 0000000..89386df --- /dev/null +++ b/packages/avalanchesass-object-grid/css/grid.css @@ -0,0 +1,268 @@ +/** + * @name Grid + * @level 5.1. + */ +/** + * Includes + */ +/** + * @name Function + * @level 2.2. + */ +/** + * @name strip-units + * @level 2.2.1. + * @description + * avalanche-strip-units($number) + */ +/** + * @name px2em + * @level 2.2.2. + * @description + * Convert a px value to em + * based on $font-base-size + * avalanche-px2em($px, $base: $font-base-size) + */ +/** + * @name em2px + * @level 2.2.3. + * @description + * Convert a em value to px + * based on $font-base-size + * avalanche-em2px($em, $base: $font-base-size) + */ +/** + * @name em2rem + * @level 2.2.4. + * @description + * Convert a em value to rem + * avalanche-em2rem($em) + */ +/** + * @name breakpointmax + * @level 2.2.5. + * @description + * Get the max-width value of a breakpoint + * avalanche-breakpointmax($breakpoint, $base: $font-base-size) + */ +/** + * @name Variable + * @level 2.1. + */ +/** + * @name Color Scheme + * @level 2.1.1. + * @description Fancy generator: http://coolors.co/ + */ +/** + * @name Basic colors + * @level 2.1.1.1. + */ +/** + * @colors + * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7 + * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff + */ +/** + * @name Colors for alerts + * @level 2.1.1.2. + * @description e.g. success, error, info,... + */ +/** + * @colors + * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48 + */ +/** + * @name Grey + * @level 2.1.1.3. + */ +/** + * @colors + * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc + */ +/** + * @name Typography + * @level 2.1.2. + * @description + * Set the font weight variables according to the font + * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 + * In this case set the font weights to 200, 400 and 700 + * If you set a font weight in your css you must use this variables! + * e.g. font-weight: $font-a-weight-normal; + */ +/** + * @name Basic configuration + * @level 2.1.2.1. + * + * 1. must be in px, do not use in your styles + */ +/* [1] */ +/* [1] */ +/** + * @variables + * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222 + */ +/** + * @name Font sizes + * @level 2.1.2.2. + */ +/** + * @name System fonts + * @level 2.1.2.3. + */ +/** + * @name Font A + * @level 2.1.2.3.1. + */ +/** + * @font ['Helvetica Neue', sans-serif] + * ABCDEFGHIJKLMNOPQRSTUVWXYZ + * abcdefghijklmnopqrstuvwxyz + * 0123456789 + * !&/()$=@;:,. + */ +/** + * @name Font B + * @level 2.1.2.3.2. + */ +/** + * @font [Futura, 'Trebuchet MS', sans-serif] + * ABCDEFGHIJKLMNOPQRSTUVWXYZ + * abcdefghijklmnopqrstuvwxyz + * 0123456789 + * !&/()$=@;:,. + */ +/** + * @name Anchors + * @level 2.1.2.4. + * @markup + * Anchor + */ +/** + * @name Text selection + * @level 2.1.2.5. + * @description + * Select some text to see it in action + */ +/** + * @name Breakpoints + * @level 2.1.3. + * @description + * More infos about media queries: + * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/) + */ +/** + * @name min Breakpoints + * @level 2.1.3.1. + */ +/** + * @variables + * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em + */ +/** + * @name max Breakpoints + * @level 2.1.3.2. + * @description + * Use with care, min-width breakpoints should be preferred! + */ +/** + * @variables + * $breakpoint-max-s|29.9375em $breakpoint-max-m|44.9375em $breakpoint-max-l|59.9375em $breakpoint-max-xl|74.9375em + */ +/** + * @name Spacing + * @level 2.1.4. + */ +/** + * @variables + * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em + */ +/** + * @name Layout + * @level 2.1.5. + */ +/** + * @variables + * $layout-max-width|62em $layout-box-sizing-reset|true + */ +/** + * @name Clearfix + * @level 4.1. + * @description + * Contain floats + */ +.u-clearfix { + *zoom: 1; } + .u-clearfix:before, .u-clearfix:after { + display: table; + content: ' '; } + .u-clearfix:after { + clear: both; } + +/** + * Variables + */ +/** + * @name Base + * @level 5.1.1. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ +.o-grid { + *zoom: 1; + margin-left: -1em; } + .o-grid:before, .o-grid:after { + display: table; + content: ' '; } + .o-grid:after { + clear: both; } + +[class*='o-grid__item'] { + float: left; + padding-left: 1em; + width: 100%; } + +.o-grid__item--1 { + width: 8.3333333%; } + +.o-grid__item--2 { + width: 16.6666667%; } + +.o-grid__item--3 { + width: 25%; } + +.o-grid__item--4 { + width: 33.3333333%; } + +.o-grid__item--5 { + width: 41.6666667%; } + +.o-grid__item--6 { + width: 50%; } + +.o-grid__item--7 { + width: 58.3333333%; } + +.o-grid__item--8 { + width: 66.6666667%; } + +.o-grid__item--9 { + width: 75%; } + +.o-grid__item--10 { + width: 83.3333333%; } + +.o-grid__item--11 { + width: 91.6666667%; } + +.o-grid__item--12 { + width: 100%; } + + +/*# sourceMappingURL=grid.css.map */ \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/css/grid.css.map b/packages/avalanchesass-object-grid/css/grid.css.map new file mode 100644 index 0000000..e2668d0 --- /dev/null +++ b/packages/avalanchesass-object-grid/css/grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["grid.css","../bower_components/avalanche/scss/utility/_clearfix.scss","grid.scss","../bower_components/avalanche/scss/system/_variable.scss"],"names":[],"mappings":"AAAA;;;IAGG;AACH;;IAEG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;;;;;IAOG;AACH;;;;;;;IAOG;AACH;;;;;;IAMG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AC9KH;GAXE,SAAO,EAAA;EACT;IAEa,gBAAA;IACA,cAAA,EAAA;EAEb;IACI,aAAO,EAAA;;AD2LX;;IAEG;AACH;;;;;;;;;;;IAWG;AEtKH;GD1CE,SAAO;EEoNM,mBDxKb,EAAA;ED3Cc;IAEZ,gBAAS;IACA,cAAA,EAAA;EAEN;IACH,aAAO,EAAA;;ACwCX;EACS,aAAA;ECoKM,mBDnKb;EACA,aAAO,EAAA;;AAOT;EACY,mBAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,YAAQ,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACY,oBAAA,EAAA;;AADZ;EACY,YAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACY,oBAAA,EAAA;;AADZ;EACY,YAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,aAAQ,EAAA","file":"grid.css","sourcesContent":["/**\n * @name Grid\n * @level 5.1.\n */\n/**\n * Includes\n */\n/**\n * @name Function\n * @level 2.2.\n */\n/**\n * @name strip-units\n * @level 2.2.1.\n * @description\n * avalanche-strip-units($number)\n */\n/**\n * @name px2em\n * @level 2.2.2.\n * @description\n * Convert a px value to em \n * based on $font-base-size \n * avalanche-px2em($px, $base: $font-base-size)\n */\n/**\n * @name em2px\n * @level 2.2.3.\n * @description\n * Convert a em value to px \n * based on $font-base-size \n * avalanche-em2px($em, $base: $font-base-size)\n */\n/**\n * @name em2rem\n * @level 2.2.4.\n * @description\n * Convert a em value to rem \n * avalanche-em2rem($em)\n */\n/**\n * @name breakpointmax\n * @level 2.2.5.\n * @description\n * Get the max-width value of a breakpoint \n * avalanche-breakpointmax($breakpoint, $base: $font-base-size)\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|29.9375em $breakpoint-max-m|44.9375em $breakpoint-max-l|59.9375em $breakpoint-max-xl|74.9375em\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n.u-clearfix {\n *zoom: 1; }\n .u-clearfix:before, .u-clearfix:after {\n display: table;\n content: ' '; }\n .u-clearfix:after {\n clear: both; }\n\n/**\n * Variables\n */\n/**\n * @name Base\n * @level 5.1.1.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n.o-grid {\n *zoom: 1;\n margin-left: -1em; }\n .o-grid:before, .o-grid:after {\n display: table;\n content: ' '; }\n .o-grid:after {\n clear: both; }\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: 1em;\n width: 100%; }\n\n.o-grid__item--1 {\n width: 8.3333333%; }\n\n.o-grid__item--2 {\n width: 16.6666667%; }\n\n.o-grid__item--3 {\n width: 25%; }\n\n.o-grid__item--4 {\n width: 33.3333333%; }\n\n.o-grid__item--5 {\n width: 41.6666667%; }\n\n.o-grid__item--6 {\n width: 50%; }\n\n.o-grid__item--7 {\n width: 58.3333333%; }\n\n.o-grid__item--8 {\n width: 66.6666667%; }\n\n.o-grid__item--9 {\n width: 75%; }\n\n.o-grid__item--10 {\n width: 83.3333333%; }\n\n.o-grid__item--11 {\n width: 91.6666667%; }\n\n.o-grid__item--12 {\n width: 100%; }\n\n","/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n@mixin u-clearfix() {\n *zoom: 1;\n &:before,\n &:after {\n display: table;\n content: ' ';\n }\n &:after {\n clear: both;\n }\n}\n\n.u-clearfix {\n @include u-clearfix();\n}\n","/**\n * @name Grid\n * @level 5.1.\n */\n/**\n * Includes\n */\n// System\n@import 'system/function';\n@import 'system/variable';\n\n// Utility\n@import 'utility/clearfix';\n\n\n\n/**\n * Variables\n */\n$o-grid-item-count: 12 !default;\n\n// Sizes\n$o-grid-size-s: false !default;\n$o-grid-size-m: false !default;\n$o-grid-size-l: false !default;\n$o-grid-size-xl: false !default;\n\n// Spacing between items\n$o-grid-spacing-s: $spacing-s !default;\n$o-grid-spacing-m: $spacing-m !default;\n$o-grid-spacing-l: $spacing-m !default;\n$o-grid-spacing-xl: $spacing-m !default;\n\n\n\n/**\n * @name Base\n * @level 5.1.1.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n$o-grid-base-size: (100% / $o-grid-item-count);\n\n.o-grid {\n @include u-clearfix();\n margin-left: -$o-grid-spacing-s;\n}\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: $o-grid-spacing-s;\n width: 100%;\n @if $layout-box-sizing-reset == false {\n box-sizing: border-box;\n }\n}\n\n@for $i from 1 through $o-grid-item-count {\n .o-grid__item--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n}\n\n\n\n@if $o-grid-size-s {\n /**\n * @name Small\n * @level 5.1.2.\n * @description\n * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-s) {\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--s--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-m {\n /**\n * @name Medium\n * @level 5.1.3.\n * @description\n * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-m) {\n .o-grid {\n margin-left: -$o-grid-spacing-m;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-m;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--m--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-l {\n /**\n * @name Large\n * @level 5.1.4.\n * @description\n * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-l) {\n .o-grid {\n margin-left: -$o-grid-spacing-l;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-l;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--l--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-xl {\n /**\n * @name X-Large\n * @level 5.1.5.\n * @description\n * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-xl) {\n .o-grid {\n margin-left: -$o-grid-spacing-xl;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-xl;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--xl--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n","/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n$cs-a: #16193B;\n$cs-a-contrast: #fff;\n\n$cs-b: #35478C;\n$cs-b-contrast: #fff;\n\n$cs-c: #4E7AC7;\n$cs-c-contrast: #fff;\n\n$cs-d: #7FB2F0;\n$cs-d-contrast: #fff;\n\n$cs-e: #ADD5F7;\n$cs-e-contrast: #fff;\n/**\n * @colors\n * $cs-a|#{$cs-a} $cs-b|#{$cs-b} $cs-c|#{$cs-c} $cs-d|#{$cs-d} $cs-e|#{$cs-e}\n * $cs-a-contrast|#{$cs-a-contrast} $cs-b-contrast|#{$cs-b-contrast} $cs-c-contrast|#{$cs-c-contrast} $cs-d-contrast|#{$cs-d-contrast} $cs-e-contrast|#{$cs-e-contrast}\n */\n\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n$cs-positive: #468847;\n$cs-neutral: #3A87AD;\n$cs-cautious: #c09853;\n$cs-negative: #b94a48;\n/**\n * @colors\n * $cs-positive|#{$cs-positive} $cs-neutral|#{$cs-neutral} $cs-cautious|#{$cs-cautious} $cs-negative|#{$cs-negative}\n */\n\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n$cs-grey-a: #efefef;\n$cs-grey-b: darken($cs-grey-a, 10%);\n$cs-grey-c: darken($cs-grey-b, 10%);\n/**\n * @colors\n * $cs-grey-a|#{$cs-grey-a} $cs-grey-b|#{$cs-grey-b} $cs-grey-c|#{$cs-grey-c}\n */\n\n\n\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n$font-base-size: 16px; /* [1] */\n$font-base-line-height: 24px; /* [1] */\n$font-base-color: #222;\n/**\n * @variables\n * $font-base-size|#{$font-base-size} $font-base-line-height|#{$font-base-line-height} $font-base-color|#{$font-base-color}\n */\n\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n$font-size-xs: 0.75em;\n$font-size-s: 0.85em;\n$font-size-m: 1em;\n$font-size-l: 1.25em;\n$font-size-xl: 1.5em;\n$font-size-xxl: 1.875em;\n$font-size-xxxl: 2.25em;\n\n$font-size-h1: $font-size-xxxl;\n$font-size-h2: $font-size-xxl;\n$font-size-h3: $font-size-xl;\n$font-size-h4: $font-size-l;\n$font-size-h5: $font-size-m;\n$font-size-h6: $font-size-m;\n\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n$font-a-family: 'Helvetica Neue', sans-serif;\n\n$font-a-weight-thin: 100;\n$font-a-weight-extra-light: 200;\n$font-a-weight-light: 300;\n$font-a-weight-normal: 400;\n$font-a-weight-medium: 500;\n$font-a-weight-semi-bold: 600;\n$font-a-weight-bold: 700;\n$font-a-weight-extra-bold: 800;\n$font-a-weight-ultra-bold: 900;\n/**\n * @font [#{$font-a-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n$font-b-family: Futura, 'Trebuchet MS', sans-serif;\n\n$font-b-weight-thin: 100;\n$font-b-weight-extra-light: 200;\n$font-b-weight-light: 300;\n$font-b-weight-normal: 400;\n$font-b-weight-medium: 500;\n$font-b-weight-semi-bold: 600;\n$font-b-weight-bold: 700;\n$font-b-weight-extra-bold: 800;\n$font-b-weight-ultra-bold: 900;\n/**\n * @font [#{$font-b-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n$a-color: $cs-a;\n$a-color-visited: $a-color;\n$a-color-hover: $a-color;\n$a-text-decoration: underline;\n$a-text-decoration-hover: none;\n\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n$selection-background: $cs-a;\n$selection-color: $cs-a-contrast;\n\n\n\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n$breakpoint-s: 30em;\n$breakpoint-m: 45em;\n$breakpoint-l: 60em;\n$breakpoint-xl: 75em;\n/**\n * @variables\n * $breakpoint-s|#{$breakpoint-s} $breakpoint-m|#{$breakpoint-m} $breakpoint-l|#{$breakpoint-l} $breakpoint-xl|#{$breakpoint-xl}\n */\n\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n$breakpoint-max-s: avalanche-breakpointmax($breakpoint-s);\n$breakpoint-max-m: avalanche-breakpointmax($breakpoint-m);\n$breakpoint-max-l: avalanche-breakpointmax($breakpoint-l);\n$breakpoint-max-xl: avalanche-breakpointmax($breakpoint-xl);\n/**\n * @variables\n * $breakpoint-max-s|#{$breakpoint-max-s} $breakpoint-max-m|#{$breakpoint-max-m} $breakpoint-max-l|#{$breakpoint-max-l} $breakpoint-max-xl|#{$breakpoint-max-xl}\n */\n\n\n\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n$spacing-xs: 0.5em;\n$spacing-s: 1em;\n$spacing-m: avalanche-strip-units($font-base-line-height / $font-base-size) * 1em;\n$spacing-l: 2em;\n$spacing-xl: 3em;\n$spacing-xxl: 4em;\n$spacing-xxxl: 5em;\n/**\n * @variables\n * $spacing-xs|#{$spacing-xs} $spacing-s|#{$spacing-s} $spacing-m|#{$spacing-m} $spacing-l|#{$spacing-l} $spacing-xl|#{$spacing-xl} $spacing-xxl|#{$spacing-xxl} $spacing-xxxl|#{$spacing-xxxl}\n */\n\n\n\n/**\n * @name Layout\n * @level 2.1.5.\n */\n$layout-max-width: 62em;\n$layout-box-sizing-reset: true;\n/**\n * @variables\n * $layout-max-width|#{$layout-max-width} $layout-box-sizing-reset|#{$layout-box-sizing-reset}\n */\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/css/grid.min.css b/packages/avalanchesass-object-grid/css/grid.min.css new file mode 100644 index 0000000..3196873 --- /dev/null +++ b/packages/avalanchesass-object-grid/css/grid.min.css @@ -0,0 +1 @@ +.u-clearfix{*zoom:1}.u-clearfix:before,.u-clearfix:after{display:table;content:' '}.u-clearfix:after{clear:both}.o-grid{*zoom:1;margin-left:-1em}.o-grid:before,.o-grid:after{display:table;content:' '}.o-grid:after{clear:both}[class*='o-grid__item']{float:left;padding-left:1em;width:100%}.o-grid__item--1{width:8.3333333%}.o-grid__item--2{width:16.6666667%}.o-grid__item--3{width:25%}.o-grid__item--4{width:33.3333333%}.o-grid__item--5{width:41.6666667%}.o-grid__item--6{width:50%}.o-grid__item--7{width:58.3333333%}.o-grid__item--8{width:66.6666667%}.o-grid__item--9{width:75%}.o-grid__item--10{width:83.3333333%}.o-grid__item--11{width:91.6666667%}.o-grid__item--12{width:100%} \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/gulpfile.js b/packages/avalanchesass-object-grid/gulpfile.js new file mode 100644 index 0000000..6408217 --- /dev/null +++ b/packages/avalanchesass-object-grid/gulpfile.js @@ -0,0 +1,39 @@ +// Load plugins +var gulp = require('gulp'); +var autoprefixer = require('gulp-autoprefixer'); +var csso = require('gulp-csso'); +var livereload = require('gulp-livereload'); +var rename = require('gulp-rename'); +var sass = require('gulp-sass'); +var sourcemaps = require('gulp-sourcemaps'); + +// Styles +gulp.task('styles', function () { + return gulp.src('scss/**/*.scss') + .pipe(sourcemaps.init()) + .pipe(sass({ 'precision': 7, 'includePaths': ['bower_components/avalanche/scss'] })) + .pipe(autoprefixer()) + .pipe(sourcemaps.write('./')) + .pipe(gulp.dest('css')); +}); + +// Minify +gulp.task('minify', ['styles'], function () { + return gulp.src('css/grid.css') + .pipe(csso()) + .pipe(rename(function (path) { + path.basename += '.min'; + })) + .pipe(gulp.dest('css')) + .pipe(livereload()); +}); + +// Watch +gulp.task('watch', function () { + gulp.watch('scss/**/*', ['styles', 'minify']); +}); + +// Default +gulp.task('default', function () { + gulp.start('watch'); +}); diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json new file mode 100644 index 0000000..98627f2 --- /dev/null +++ b/packages/avalanchesass-object-grid/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanche_object_grid", + "version": "2.0.0", + "author": "Markus Oberlehner", + "license": "GPL v2", + "devDependencies": { + "gulp": "^3.8.10", + "gulp-autoprefixer": "^2.1.0", + "gulp-csso": "^1.0.0", + "gulp-livereload": "^3.8.0", + "gulp-rename": "^1.2.2", + "gulp-sass": "^1.3.3", + "gulp-sourcemaps": "^1.5.2" + }, + "description": "SASS / CSS Framework", + "main": "gulpfile.js", + "repository": { + "type": "git", + "url": "https://github.com/maoberlehner/avalanche" + }, + "bugs": { + "url": "https://github.com/maoberlehner/avalanche/issues" + }, + "homepage": "https://github.com/maoberlehner/avalanche" +} diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss new file mode 100644 index 0000000..53ed79c --- /dev/null +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -0,0 +1,194 @@ +/** + * @name Grid + * @level 5.1. + */ +/** + * Includes + */ +// System +@import 'system/function'; +@import 'system/variable'; + +// Utility +@import 'avalanche_utility_clearfix/scss/clearfix'; + + + +/** + * Variables + */ +$o-grid-item-count: 12 !default; + +// Sizes +$o-grid-size-s: false !default; +$o-grid-size-m: false !default; +$o-grid-size-l: false !default; +$o-grid-size-xl: false !default; + +// Spacing between items +$o-grid-spacing-s: $spacing-s !default; +$o-grid-spacing-m: $spacing-m !default; +$o-grid-spacing-l: $spacing-m !default; +$o-grid-spacing-xl: $spacing-m !default; + + + +/** + * @name Base + * @level 5.1.1. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ +$o-grid-base-size: (100% / $o-grid-item-count); + +.o-grid { + @include u-clearfix(); + margin-left: -$o-grid-spacing-s; +} + +[class*='o-grid__item'] { + float: left; + padding-left: $o-grid-spacing-s; + width: 100%; + @if $layout-box-sizing-reset == false { + box-sizing: border-box; + } +} + +@for $i from 1 through $o-grid-item-count { + .o-grid__item--#{$i} { + width: ($o-grid-base-size * $i); + } +} + + + +@if $o-grid-size-s { + /** + * @name Small + * @level 5.1.2. + * @description + * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-s) { + @for $i from 1 through $o-grid-item-count { + .o-grid__item--s--#{$i} { + width: ($o-grid-base-size * $i); + } + } + } +} + + + +@if $o-grid-size-m { + /** + * @name Medium + * @level 5.1.3. + * @description + * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-m) { + .o-grid { + margin-left: -$o-grid-spacing-m; + } + + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-m; + } + + @for $i from 1 through $o-grid-item-count { + .o-grid__item--m--#{$i} { + width: ($o-grid-base-size * $i); + } + } + } +} + + + +@if $o-grid-size-l { + /** + * @name Large + * @level 5.1.4. + * @description + * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-l) { + .o-grid { + margin-left: -$o-grid-spacing-l; + } + + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-l; + } + + @for $i from 1 through $o-grid-item-count { + .o-grid__item--l--#{$i} { + width: ($o-grid-base-size * $i); + } + } + } +} + + + +@if $o-grid-size-xl { + /** + * @name X-Large + * @level 5.1.5. + * @description + * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-xl) { + .o-grid { + margin-left: -$o-grid-spacing-xl; + } + + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-xl; + } + + @for $i from 1 through $o-grid-item-count { + .o-grid__item--xl--#{$i} { + width: ($o-grid-base-size * $i); + } + } + } +} From 29ef5912504bf7ed14c2c688642f4c320b1af778 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 19 Apr 2015 16:39:20 +0200 Subject: [PATCH 002/355] updated bower dependencies --- packages/avalanchesass-object-grid/bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 930f155..e30a2b0 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -21,9 +21,9 @@ "tests" ], "dependencies": { - "avalanche_utility_clearfix": "~2.0" + "avalanche_utility_clearfix": "dev" }, "devDependencies": { - "avalanche": "~2.0" + "avalanche": "bowerpackaging" } } From a43ad0b04d3b650ea35c6c52c248a32f1714432e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 19 Apr 2015 17:01:14 +0200 Subject: [PATCH 003/355] implemented a if condition to check if the object is already imported to prevent multiple imports --- .../avalanchesass-object-grid/scss/grid.scss | 288 +++++++++--------- 1 file changed, 146 insertions(+), 142 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index 53ed79c..0c8c9f0 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -1,9 +1,5 @@ /** - * @name Grid - * @level 5.1. - */ -/** - * Includes + * Dependencies */ // System @import 'system/function'; @@ -14,181 +10,189 @@ -/** - * Variables - */ -$o-grid-item-count: 12 !default; +@if variable-exists(o-grid-imported) == false { + /** + * @name Grid + * @level 5.1. + */ + /** + * Variables + */ + $o-grid-item-count: 12 !default; -// Sizes -$o-grid-size-s: false !default; -$o-grid-size-m: false !default; -$o-grid-size-l: false !default; -$o-grid-size-xl: false !default; + // Sizes + $o-grid-size-s: false !default; + $o-grid-size-m: false !default; + $o-grid-size-l: false !default; + $o-grid-size-xl: false !default; -// Spacing between items -$o-grid-spacing-s: $spacing-s !default; -$o-grid-spacing-m: $spacing-m !default; -$o-grid-spacing-l: $spacing-m !default; -$o-grid-spacing-xl: $spacing-m !default; + // Spacing between items + $o-grid-spacing-s: $spacing-s !default; + $o-grid-spacing-m: $spacing-m !default; + $o-grid-spacing-l: $spacing-m !default; + $o-grid-spacing-xl: $spacing-m !default; -/** - * @name Base - * @level 5.1.1. - * @description - * Mobile first styles for all screen sizes - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
- */ -$o-grid-base-size: (100% / $o-grid-item-count); + /** + * @name Base + * @level 5.1.1. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + $o-grid-base-size: (100% / $o-grid-item-count); -.o-grid { - @include u-clearfix(); - margin-left: -$o-grid-spacing-s; -} + .o-grid { + @include u-clearfix(); + margin-left: -$o-grid-spacing-s; + } -[class*='o-grid__item'] { - float: left; - padding-left: $o-grid-spacing-s; - width: 100%; - @if $layout-box-sizing-reset == false { - box-sizing: border-box; + [class*='o-grid__item'] { + float: left; + padding-left: $o-grid-spacing-s; + width: 100%; + @if $layout-box-sizing-reset == false { + box-sizing: border-box; + } } -} -@for $i from 1 through $o-grid-item-count { - .o-grid__item--#{$i} { - width: ($o-grid-base-size * $i); + @for $i from 1 through $o-grid-item-count { + .o-grid__item--#{$i} { + width: ($o-grid-base-size * $i); + } } -} -@if $o-grid-size-s { - /** - * @name Small - * @level 5.1.2. - * @description - * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-s) { - @for $i from 1 through $o-grid-item-count { - .o-grid__item--s--#{$i} { - width: ($o-grid-base-size * $i); + @if $o-grid-size-s { + /** + * @name Small + * @level 5.1.2. + * @description + * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-s) { + @for $i from 1 through $o-grid-item-count { + .o-grid__item--s--#{$i} { + width: ($o-grid-base-size * $i); + } } } } -} -@if $o-grid-size-m { - /** - * @name Medium - * @level 5.1.3. - * @description - * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-m) { - .o-grid { - margin-left: -$o-grid-spacing-m; - } + @if $o-grid-size-m { + /** + * @name Medium + * @level 5.1.3. + * @description + * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-m) { + .o-grid { + margin-left: -$o-grid-spacing-m; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-m; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-m; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--m--#{$i} { - width: ($o-grid-base-size * $i); + @for $i from 1 through $o-grid-item-count { + .o-grid__item--m--#{$i} { + width: ($o-grid-base-size * $i); + } } } } -} -@if $o-grid-size-l { - /** - * @name Large - * @level 5.1.4. - * @description - * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-l) { - .o-grid { - margin-left: -$o-grid-spacing-l; - } + @if $o-grid-size-l { + /** + * @name Large + * @level 5.1.4. + * @description + * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-l) { + .o-grid { + margin-left: -$o-grid-spacing-l; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-l; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-l; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--l--#{$i} { - width: ($o-grid-base-size * $i); + @for $i from 1 through $o-grid-item-count { + .o-grid__item--l--#{$i} { + width: ($o-grid-base-size * $i); + } } } } -} -@if $o-grid-size-xl { - /** - * @name X-Large - * @level 5.1.5. - * @description - * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-xl) { - .o-grid { - margin-left: -$o-grid-spacing-xl; - } + @if $o-grid-size-xl { + /** + * @name X-Large + * @level 5.1.5. + * @description + * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-xl) { + .o-grid { + margin-left: -$o-grid-spacing-xl; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-xl; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-xl; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--xl--#{$i} { - width: ($o-grid-base-size * $i); + @for $i from 1 through $o-grid-item-count { + .o-grid__item--xl--#{$i} { + width: ($o-grid-base-size * $i); + } } } } + + $o-grid-imported: true; } From 2a366db1eb48b9d4105dd7931e2f57b703690a69 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 20 Apr 2015 16:54:32 +0200 Subject: [PATCH 004/355] added strip unit function dependency, changed name of the strip unit function to singular --- packages/avalanchesass-object-grid/bower.json | 1 + packages/avalanchesass-object-grid/scss/grid.scss | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index e30a2b0..e4f9ac7 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -21,6 +21,7 @@ "tests" ], "dependencies": { + "avalanche_function_strip_unit": "dev", "avalanche_utility_clearfix": "dev" }, "devDependencies": { diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index 0c8c9f0..cab1c25 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -75,7 +75,7 @@ * @name Small * @level 5.1.2. * @description - * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up + * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up * * @markup *
@@ -99,7 +99,7 @@ * @name Medium * @level 5.1.3. * @description - * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up + * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up * * @markup *
@@ -133,7 +133,7 @@ * @name Large * @level 5.1.4. * @description - * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up + * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up * * @markup *
@@ -167,7 +167,7 @@ * @name X-Large * @level 5.1.5. * @description - * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up + * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up * * @markup *
From 2d95ad809ee95ebaeccf09920653b6f0c10c258d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 20 Apr 2015 17:24:52 +0200 Subject: [PATCH 005/355] import function dependency --- packages/avalanchesass-object-grid/scss/grid.scss | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index cab1c25..54dab9e 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -2,9 +2,11 @@ * Dependencies */ // System -@import 'system/function'; @import 'system/variable'; +// Function +@import 'avalanche_function_strip_unit/scss/strip_unit'; + // Utility @import 'avalanche_utility_clearfix/scss/clearfix'; From 9a45b7d8ce8d2d575690c3ece6b1385d839e816d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 20 Apr 2015 20:08:08 +0200 Subject: [PATCH 006/355] formatting changes, README informations --- packages/avalanchesass-object-grid/README.md | 10 ++++++++++ packages/avalanchesass-object-grid/bower.json | 4 ++-- packages/avalanchesass-object-grid/gulpfile.js | 2 +- .../avalanchesass-object-grid/package.json | 12 ++++++------ .../avalanchesass-object-grid/scss/grid.scss | 18 +++++++++--------- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index e69de29..2ac713a 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -0,0 +1,10 @@ +# avalanche: Object grid +CSS grid system +https://github.com/avalanchesass/avalanche_object_grid + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index e4f9ac7..95b5b62 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -1,11 +1,11 @@ { - "name": "Avalanche Grid", + "name": "avalanche: Object grid", "version": "2.0", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "authors": [ "Markus Oberlehner" ], - "description": "A grid system for the avalanche framework", + "description": "CSS grid system", "main": "css/grid.css", "keywords": [ "SASS", diff --git a/packages/avalanchesass-object-grid/gulpfile.js b/packages/avalanchesass-object-grid/gulpfile.js index 6408217..b80e596 100644 --- a/packages/avalanchesass-object-grid/gulpfile.js +++ b/packages/avalanchesass-object-grid/gulpfile.js @@ -11,7 +11,7 @@ var sourcemaps = require('gulp-sourcemaps'); gulp.task('styles', function () { return gulp.src('scss/**/*.scss') .pipe(sourcemaps.init()) - .pipe(sass({ 'precision': 7, 'includePaths': ['bower_components/avalanche/scss'] })) + .pipe(sass({ precision: 7, includePaths: ['bower_components/avalanche/scss'], errLogToConsole: true })) .pipe(autoprefixer()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('css')); diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 98627f2..5c0f115 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -1,9 +1,9 @@ { - "name": "avalanche_object_grid", + "name": "avalanche: Object grid", "version": "2.0.0", "author": "Markus Oberlehner", "license": "GPL v2", - "devDependencies": { + "dependencies": { "gulp": "^3.8.10", "gulp-autoprefixer": "^2.1.0", "gulp-csso": "^1.0.0", @@ -12,14 +12,14 @@ "gulp-sass": "^1.3.3", "gulp-sourcemaps": "^1.5.2" }, - "description": "SASS / CSS Framework", + "description": "CSS grid system", "main": "gulpfile.js", "repository": { "type": "git", - "url": "https://github.com/maoberlehner/avalanche" + "url": "https://github.com/avalanchesass/avalanche_object_grid" }, "bugs": { - "url": "https://github.com/maoberlehner/avalanche/issues" + "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" }, - "homepage": "https://github.com/maoberlehner/avalanche" + "homepage": "https://github.com/avalanchesass/avalanche_object_grid" } diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index 54dab9e..2b36169 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -1,12 +1,12 @@ /** * Dependencies */ -// System -@import 'system/variable'; - // Function @import 'avalanche_function_strip_unit/scss/strip_unit'; +// System +@import 'system/variable'; + // Utility @import 'avalanche_utility_clearfix/scss/clearfix'; @@ -15,7 +15,7 @@ @if variable-exists(o-grid-imported) == false { /** * @name Grid - * @level 5.1. + * @level X.X. */ /** * Variables @@ -38,7 +38,7 @@ /** * @name Base - * @level 5.1.1. + * @level X.X.X. * @description * Mobile first styles for all screen sizes * @@ -75,7 +75,7 @@ @if $o-grid-size-s { /** * @name Small - * @level 5.1.2. + * @level X.X.X. * @description * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up * @@ -99,7 +99,7 @@ @if $o-grid-size-m { /** * @name Medium - * @level 5.1.3. + * @level X.X.X. * @description * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up * @@ -133,7 +133,7 @@ @if $o-grid-size-l { /** * @name Large - * @level 5.1.4. + * @level X.X.X. * @description * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up * @@ -167,7 +167,7 @@ @if $o-grid-size-xl { /** * @name X-Large - * @level 5.1.5. + * @level X.X.X. * @description * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up * From cca57d5c40eeead696583be4c1a4f0c493a972be Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 20 Apr 2015 20:30:50 +0200 Subject: [PATCH 007/355] added bower_components to the sass path and built the css --- .../avalanchesass-object-grid/css/grid.css | 203 ++++++++++++++---- .../css/grid.css.map | 2 +- .../avalanchesass-object-grid/gulpfile.js | 2 +- 3 files changed, 158 insertions(+), 49 deletions(-) diff --git a/packages/avalanchesass-object-grid/css/grid.css b/packages/avalanchesass-object-grid/css/grid.css index 89386df..a065c9d 100644 --- a/packages/avalanchesass-object-grid/css/grid.css +++ b/packages/avalanchesass-object-grid/css/grid.css @@ -1,49 +1,154 @@ /** - * @name Grid - * @level 5.1. + * Dependencies */ /** - * Includes + * @name strip-unit + * @level X.X.X. + * @description + * avalanche-strip-unit($number) + */ +/** + * @name Variable + * @level 2.1. */ /** - * @name Function - * @level 2.2. + * @name Color Scheme + * @level 2.1.1. + * @description Fancy generator: http://coolors.co/ */ /** - * @name strip-units - * @level 2.2.1. - * @description - * avalanche-strip-units($number) + * @name Basic colors + * @level 2.1.1.1. + */ +/** + * @colors + * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7 + * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff + */ +/** + * @name Colors for alerts + * @level 2.1.1.2. + * @description e.g. success, error, info,... */ /** - * @name px2em - * @level 2.2.2. + * @colors + * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48 + */ +/** + * @name Grey + * @level 2.1.1.3. + */ +/** + * @colors + * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc + */ +/** + * @name Typography + * @level 2.1.2. * @description - * Convert a px value to em - * based on $font-base-size - * avalanche-px2em($px, $base: $font-base-size) + * Set the font weight variables according to the font + * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 + * In this case set the font weights to 200, 400 and 700 + * If you set a font weight in your css you must use this variables! + * e.g. font-weight: $font-a-weight-normal; */ /** - * @name em2px - * @level 2.2.3. + * @name Basic configuration + * @level 2.1.2.1. + * + * 1. must be in px, do not use in your styles + */ +/* [1] */ +/* [1] */ +/** + * @variables + * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222 + */ +/** + * @name Font sizes + * @level 2.1.2.2. + */ +/** + * @name System fonts + * @level 2.1.2.3. + */ +/** + * @name Font A + * @level 2.1.2.3.1. + */ +/** + * @font ['Helvetica Neue', sans-serif] + * ABCDEFGHIJKLMNOPQRSTUVWXYZ + * abcdefghijklmnopqrstuvwxyz + * 0123456789 + * !&/()$=@;:,. + */ +/** + * @name Font B + * @level 2.1.2.3.2. + */ +/** + * @font [Futura, 'Trebuchet MS', sans-serif] + * ABCDEFGHIJKLMNOPQRSTUVWXYZ + * abcdefghijklmnopqrstuvwxyz + * 0123456789 + * !&/()$=@;:,. + */ +/** + * @name Anchors + * @level 2.1.2.4. + * @markup + * Anchor + */ +/** + * @name Text selection + * @level 2.1.2.5. * @description - * Convert a em value to px - * based on $font-base-size - * avalanche-em2px($em, $base: $font-base-size) + * Select some text to see it in action */ /** - * @name em2rem - * @level 2.2.4. + * @name Breakpoints + * @level 2.1.3. * @description - * Convert a em value to rem - * avalanche-em2rem($em) + * More infos about media queries: + * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/) + */ +/** + * @name min Breakpoints + * @level 2.1.3.1. + */ +/** + * @variables + * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em */ /** - * @name breakpointmax - * @level 2.2.5. + * @name max Breakpoints + * @level 2.1.3.2. * @description - * Get the max-width value of a breakpoint - * avalanche-breakpointmax($breakpoint, $base: $font-base-size) + * Use with care, min-width breakpoints should be preferred! + */ +/** + * @variables + * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em) + */ +/** + * @name Spacing + * @level 2.1.4. + */ +/** + * @variables + * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em + */ +/** + * @name Layout + * @level 2.1.5. + */ +/** + * @variables + * $layout-max-width|62em $layout-box-sizing-reset|true + */ +/** + * Dependencies */ /** * @name Variable @@ -167,7 +272,7 @@ */ /** * @variables - * $breakpoint-max-s|29.9375em $breakpoint-max-m|44.9375em $breakpoint-max-l|59.9375em $breakpoint-max-xl|74.9375em + * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em) */ /** * @name Spacing @@ -186,11 +291,11 @@ * $layout-max-width|62em $layout-box-sizing-reset|true */ /** - * @name Clearfix - * @level 4.1. - * @description - * Contain floats - */ + * @name Clearfix + * @level 4.1. + * @description + * Contain floats + */ .u-clearfix { *zoom: 1; } .u-clearfix:before, .u-clearfix:after { @@ -200,20 +305,24 @@ clear: both; } /** - * Variables - */ -/** - * @name Base - * @level 5.1.1. - * @description - * Mobile first styles for all screen sizes - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
- */ + * @name Grid + * @level X.X. + */ +/** + * Variables + */ +/** + * @name Base + * @level X.X.X. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ .o-grid { *zoom: 1; margin-left: -1em; } diff --git a/packages/avalanchesass-object-grid/css/grid.css.map b/packages/avalanchesass-object-grid/css/grid.css.map index e2668d0..83c9151 100644 --- a/packages/avalanchesass-object-grid/css/grid.css.map +++ b/packages/avalanchesass-object-grid/css/grid.css.map @@ -1 +1 @@ -{"version":3,"sources":["grid.css","../bower_components/avalanche/scss/utility/_clearfix.scss","grid.scss","../bower_components/avalanche/scss/system/_variable.scss"],"names":[],"mappings":"AAAA;;;IAGG;AACH;;IAEG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;;;;;IAOG;AACH;;;;;;;IAOG;AACH;;;;;;IAMG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AC9KH;GAXE,SAAO,EAAA;EACT;IAEa,gBAAA;IACA,cAAA,EAAA;EAEb;IACI,aAAO,EAAA;;AD2LX;;IAEG;AACH;;;;;;;;;;;IAWG;AEtKH;GD1CE,SAAO;EEoNM,mBDxKb,EAAA;ED3Cc;IAEZ,gBAAS;IACA,cAAA,EAAA;EAEN;IACH,aAAO,EAAA;;ACwCX;EACS,aAAA;ECoKM,mBDnKb;EACA,aAAO,EAAA;;AAOT;EACY,mBAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,YAAQ,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACY,oBAAA,EAAA;;AADZ;EACY,YAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACY,oBAAA,EAAA;;AADZ;EACY,YAAA,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,oBAAQ,EAAA;;AADZ;EACI,aAAQ,EAAA","file":"grid.css","sourcesContent":["/**\n * @name Grid\n * @level 5.1.\n */\n/**\n * Includes\n */\n/**\n * @name Function\n * @level 2.2.\n */\n/**\n * @name strip-units\n * @level 2.2.1.\n * @description\n * avalanche-strip-units($number)\n */\n/**\n * @name px2em\n * @level 2.2.2.\n * @description\n * Convert a px value to em \n * based on $font-base-size \n * avalanche-px2em($px, $base: $font-base-size)\n */\n/**\n * @name em2px\n * @level 2.2.3.\n * @description\n * Convert a em value to px \n * based on $font-base-size \n * avalanche-em2px($em, $base: $font-base-size)\n */\n/**\n * @name em2rem\n * @level 2.2.4.\n * @description\n * Convert a em value to rem \n * avalanche-em2rem($em)\n */\n/**\n * @name breakpointmax\n * @level 2.2.5.\n * @description\n * Get the max-width value of a breakpoint \n * avalanche-breakpointmax($breakpoint, $base: $font-base-size)\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|29.9375em $breakpoint-max-m|44.9375em $breakpoint-max-l|59.9375em $breakpoint-max-xl|74.9375em\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n.u-clearfix {\n *zoom: 1; }\n .u-clearfix:before, .u-clearfix:after {\n display: table;\n content: ' '; }\n .u-clearfix:after {\n clear: both; }\n\n/**\n * Variables\n */\n/**\n * @name Base\n * @level 5.1.1.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n.o-grid {\n *zoom: 1;\n margin-left: -1em; }\n .o-grid:before, .o-grid:after {\n display: table;\n content: ' '; }\n .o-grid:after {\n clear: both; }\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: 1em;\n width: 100%; }\n\n.o-grid__item--1 {\n width: 8.3333333%; }\n\n.o-grid__item--2 {\n width: 16.6666667%; }\n\n.o-grid__item--3 {\n width: 25%; }\n\n.o-grid__item--4 {\n width: 33.3333333%; }\n\n.o-grid__item--5 {\n width: 41.6666667%; }\n\n.o-grid__item--6 {\n width: 50%; }\n\n.o-grid__item--7 {\n width: 58.3333333%; }\n\n.o-grid__item--8 {\n width: 66.6666667%; }\n\n.o-grid__item--9 {\n width: 75%; }\n\n.o-grid__item--10 {\n width: 83.3333333%; }\n\n.o-grid__item--11 {\n width: 91.6666667%; }\n\n.o-grid__item--12 {\n width: 100%; }\n\n","/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n@mixin u-clearfix() {\n *zoom: 1;\n &:before,\n &:after {\n display: table;\n content: ' ';\n }\n &:after {\n clear: both;\n }\n}\n\n.u-clearfix {\n @include u-clearfix();\n}\n","/**\n * @name Grid\n * @level 5.1.\n */\n/**\n * Includes\n */\n// System\n@import 'system/function';\n@import 'system/variable';\n\n// Utility\n@import 'utility/clearfix';\n\n\n\n/**\n * Variables\n */\n$o-grid-item-count: 12 !default;\n\n// Sizes\n$o-grid-size-s: false !default;\n$o-grid-size-m: false !default;\n$o-grid-size-l: false !default;\n$o-grid-size-xl: false !default;\n\n// Spacing between items\n$o-grid-spacing-s: $spacing-s !default;\n$o-grid-spacing-m: $spacing-m !default;\n$o-grid-spacing-l: $spacing-m !default;\n$o-grid-spacing-xl: $spacing-m !default;\n\n\n\n/**\n * @name Base\n * @level 5.1.1.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n$o-grid-base-size: (100% / $o-grid-item-count);\n\n.o-grid {\n @include u-clearfix();\n margin-left: -$o-grid-spacing-s;\n}\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: $o-grid-spacing-s;\n width: 100%;\n @if $layout-box-sizing-reset == false {\n box-sizing: border-box;\n }\n}\n\n@for $i from 1 through $o-grid-item-count {\n .o-grid__item--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n}\n\n\n\n@if $o-grid-size-s {\n /**\n * @name Small\n * @level 5.1.2.\n * @description\n * Screen sizes #{$breakpoint-s} (#{avalanche-strip-units($breakpoint-s) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-s) {\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--s--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-m {\n /**\n * @name Medium\n * @level 5.1.3.\n * @description\n * Screen sizes #{$breakpoint-m} (#{avalanche-strip-units($breakpoint-m) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-m) {\n .o-grid {\n margin-left: -$o-grid-spacing-m;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-m;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--m--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-l {\n /**\n * @name Large\n * @level 5.1.4.\n * @description\n * Screen sizes #{$breakpoint-l} (#{avalanche-strip-units($breakpoint-l) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-l) {\n .o-grid {\n margin-left: -$o-grid-spacing-l;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-l;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--l--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n\n\n\n@if $o-grid-size-xl {\n /**\n * @name X-Large\n * @level 5.1.5.\n * @description\n * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-units($breakpoint-xl) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-xl) {\n .o-grid {\n margin-left: -$o-grid-spacing-xl;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-xl;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--xl--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n}\n","/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n$cs-a: #16193B;\n$cs-a-contrast: #fff;\n\n$cs-b: #35478C;\n$cs-b-contrast: #fff;\n\n$cs-c: #4E7AC7;\n$cs-c-contrast: #fff;\n\n$cs-d: #7FB2F0;\n$cs-d-contrast: #fff;\n\n$cs-e: #ADD5F7;\n$cs-e-contrast: #fff;\n/**\n * @colors\n * $cs-a|#{$cs-a} $cs-b|#{$cs-b} $cs-c|#{$cs-c} $cs-d|#{$cs-d} $cs-e|#{$cs-e}\n * $cs-a-contrast|#{$cs-a-contrast} $cs-b-contrast|#{$cs-b-contrast} $cs-c-contrast|#{$cs-c-contrast} $cs-d-contrast|#{$cs-d-contrast} $cs-e-contrast|#{$cs-e-contrast}\n */\n\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n$cs-positive: #468847;\n$cs-neutral: #3A87AD;\n$cs-cautious: #c09853;\n$cs-negative: #b94a48;\n/**\n * @colors\n * $cs-positive|#{$cs-positive} $cs-neutral|#{$cs-neutral} $cs-cautious|#{$cs-cautious} $cs-negative|#{$cs-negative}\n */\n\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n$cs-grey-a: #efefef;\n$cs-grey-b: darken($cs-grey-a, 10%);\n$cs-grey-c: darken($cs-grey-b, 10%);\n/**\n * @colors\n * $cs-grey-a|#{$cs-grey-a} $cs-grey-b|#{$cs-grey-b} $cs-grey-c|#{$cs-grey-c}\n */\n\n\n\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n$font-base-size: 16px; /* [1] */\n$font-base-line-height: 24px; /* [1] */\n$font-base-color: #222;\n/**\n * @variables\n * $font-base-size|#{$font-base-size} $font-base-line-height|#{$font-base-line-height} $font-base-color|#{$font-base-color}\n */\n\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n$font-size-xs: 0.75em;\n$font-size-s: 0.85em;\n$font-size-m: 1em;\n$font-size-l: 1.25em;\n$font-size-xl: 1.5em;\n$font-size-xxl: 1.875em;\n$font-size-xxxl: 2.25em;\n\n$font-size-h1: $font-size-xxxl;\n$font-size-h2: $font-size-xxl;\n$font-size-h3: $font-size-xl;\n$font-size-h4: $font-size-l;\n$font-size-h5: $font-size-m;\n$font-size-h6: $font-size-m;\n\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n$font-a-family: 'Helvetica Neue', sans-serif;\n\n$font-a-weight-thin: 100;\n$font-a-weight-extra-light: 200;\n$font-a-weight-light: 300;\n$font-a-weight-normal: 400;\n$font-a-weight-medium: 500;\n$font-a-weight-semi-bold: 600;\n$font-a-weight-bold: 700;\n$font-a-weight-extra-bold: 800;\n$font-a-weight-ultra-bold: 900;\n/**\n * @font [#{$font-a-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n$font-b-family: Futura, 'Trebuchet MS', sans-serif;\n\n$font-b-weight-thin: 100;\n$font-b-weight-extra-light: 200;\n$font-b-weight-light: 300;\n$font-b-weight-normal: 400;\n$font-b-weight-medium: 500;\n$font-b-weight-semi-bold: 600;\n$font-b-weight-bold: 700;\n$font-b-weight-extra-bold: 800;\n$font-b-weight-ultra-bold: 900;\n/**\n * @font [#{$font-b-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n$a-color: $cs-a;\n$a-color-visited: $a-color;\n$a-color-hover: $a-color;\n$a-text-decoration: underline;\n$a-text-decoration-hover: none;\n\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n$selection-background: $cs-a;\n$selection-color: $cs-a-contrast;\n\n\n\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n$breakpoint-s: 30em;\n$breakpoint-m: 45em;\n$breakpoint-l: 60em;\n$breakpoint-xl: 75em;\n/**\n * @variables\n * $breakpoint-s|#{$breakpoint-s} $breakpoint-m|#{$breakpoint-m} $breakpoint-l|#{$breakpoint-l} $breakpoint-xl|#{$breakpoint-xl}\n */\n\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n$breakpoint-max-s: avalanche-breakpointmax($breakpoint-s);\n$breakpoint-max-m: avalanche-breakpointmax($breakpoint-m);\n$breakpoint-max-l: avalanche-breakpointmax($breakpoint-l);\n$breakpoint-max-xl: avalanche-breakpointmax($breakpoint-xl);\n/**\n * @variables\n * $breakpoint-max-s|#{$breakpoint-max-s} $breakpoint-max-m|#{$breakpoint-max-m} $breakpoint-max-l|#{$breakpoint-max-l} $breakpoint-max-xl|#{$breakpoint-max-xl}\n */\n\n\n\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n$spacing-xs: 0.5em;\n$spacing-s: 1em;\n$spacing-m: avalanche-strip-units($font-base-line-height / $font-base-size) * 1em;\n$spacing-l: 2em;\n$spacing-xl: 3em;\n$spacing-xxl: 4em;\n$spacing-xxxl: 5em;\n/**\n * @variables\n * $spacing-xs|#{$spacing-xs} $spacing-s|#{$spacing-s} $spacing-m|#{$spacing-m} $spacing-l|#{$spacing-l} $spacing-xl|#{$spacing-xl} $spacing-xxl|#{$spacing-xxl} $spacing-xxxl|#{$spacing-xxxl}\n */\n\n\n\n/**\n * @name Layout\n * @level 2.1.5.\n */\n$layout-max-width: 62em;\n$layout-box-sizing-reset: true;\n/**\n * @variables\n * $layout-max-width|#{$layout-max-width} $layout-box-sizing-reset|#{$layout-box-sizing-reset}\n */\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["grid.css","../bower_components/avalanche_utility_clearfix/scss/clearfix.scss","grid.scss","../bower_components/avalanche/scss/system/_variable.scss"],"names":[],"mappings":"AAAA;;IAEG;AACH;;;;;MAKK;AACL;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;IAEG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;MAKK;AC7QL;GAXI,SAAO,EAAA;EACX;IAEe,gBAAA;IACA,cAAA,EAAA;EAEf;IACM,aAAO,EAAA;;AD0Rb;;;MAGK;AACL;;MAEK;AACL;;;;;;;;;;;MAWK;AEhRL;GDnCI,SAAO;EE0MI,mBDrKX,EAAA;EDpCY;IAEV,gBAAS;IACA,cAAA,EAAA;EAER;IACD,aAAO,EAAA;;ACiCb;EACW,aAAA;ECiKI,mBDhKX;EACA,aAAO,EAAA;;AAOX;EACc,mBAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,YAAQ,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACc,oBAAA,EAAA;;AADd;EACc,YAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACc,oBAAA,EAAA;;AADd;EACc,YAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,aAAQ,EAAA","file":"grid.css","sourcesContent":["/**\n * Dependencies\n */\n/**\n * @name strip-unit\n * @level X.X.X.\n * @description\n * avalanche-strip-unit($number)\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em)\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * Dependencies\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em)\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n.u-clearfix {\n *zoom: 1; }\n .u-clearfix:before, .u-clearfix:after {\n display: table;\n content: ' '; }\n .u-clearfix:after {\n clear: both; }\n\n/**\n * @name Grid\n * @level X.X.\n */\n/**\n * Variables\n */\n/**\n * @name Base\n * @level X.X.X.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n.o-grid {\n *zoom: 1;\n margin-left: -1em; }\n .o-grid:before, .o-grid:after {\n display: table;\n content: ' '; }\n .o-grid:after {\n clear: both; }\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: 1em;\n width: 100%; }\n\n.o-grid__item--1 {\n width: 8.3333333%; }\n\n.o-grid__item--2 {\n width: 16.6666667%; }\n\n.o-grid__item--3 {\n width: 25%; }\n\n.o-grid__item--4 {\n width: 33.3333333%; }\n\n.o-grid__item--5 {\n width: 41.6666667%; }\n\n.o-grid__item--6 {\n width: 50%; }\n\n.o-grid__item--7 {\n width: 58.3333333%; }\n\n.o-grid__item--8 {\n width: 66.6666667%; }\n\n.o-grid__item--9 {\n width: 75%; }\n\n.o-grid__item--10 {\n width: 83.3333333%; }\n\n.o-grid__item--11 {\n width: 91.6666667%; }\n\n.o-grid__item--12 {\n width: 100%; }\n\n","/**\n * Dependencies\n */\n// System\n@import 'system/variable';\n\n\n\n@if variable-exists(u-clearfix-imported) == false {\n /**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n\n @mixin u-clearfix() {\n *zoom: 1;\n &:before,\n &:after {\n display: table;\n content: ' ';\n }\n &:after {\n clear: both;\n }\n }\n\n .u-clearfix {\n @include u-clearfix();\n }\n\n $u-clearfix-imported: true;\n}\n","/**\n * Dependencies\n */\n// Function\n@import 'avalanche_function_strip_unit/scss/strip_unit';\n\n// System\n@import 'system/variable';\n\n// Utility\n@import 'avalanche_utility_clearfix/scss/clearfix';\n\n\n\n@if variable-exists(o-grid-imported) == false {\n /**\n * @name Grid\n * @level X.X.\n */\n /**\n * Variables\n */\n $o-grid-item-count: 12 !default;\n\n // Sizes\n $o-grid-size-s: false !default;\n $o-grid-size-m: false !default;\n $o-grid-size-l: false !default;\n $o-grid-size-xl: false !default;\n\n // Spacing between items\n $o-grid-spacing-s: $spacing-s !default;\n $o-grid-spacing-m: $spacing-m !default;\n $o-grid-spacing-l: $spacing-m !default;\n $o-grid-spacing-xl: $spacing-m !default;\n\n\n\n /**\n * @name Base\n * @level X.X.X.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n $o-grid-base-size: (100% / $o-grid-item-count);\n\n .o-grid {\n @include u-clearfix();\n margin-left: -$o-grid-spacing-s;\n }\n\n [class*='o-grid__item'] {\n float: left;\n padding-left: $o-grid-spacing-s;\n width: 100%;\n @if $layout-box-sizing-reset == false {\n box-sizing: border-box;\n }\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n\n\n\n @if $o-grid-size-s {\n /**\n * @name Small\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-s) {\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--s--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-m {\n /**\n * @name Medium\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-m) {\n .o-grid {\n margin-left: -$o-grid-spacing-m;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-m;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--m--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-l {\n /**\n * @name Large\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-l) {\n .o-grid {\n margin-left: -$o-grid-spacing-l;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-l;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--l--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-xl {\n /**\n * @name X-Large\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-xl) {\n .o-grid {\n margin-left: -$o-grid-spacing-xl;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-xl;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--xl--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n $o-grid-imported: true;\n}\n","/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n$cs-a: #16193B;\n$cs-a-contrast: #fff;\n\n$cs-b: #35478C;\n$cs-b-contrast: #fff;\n\n$cs-c: #4E7AC7;\n$cs-c-contrast: #fff;\n\n$cs-d: #7FB2F0;\n$cs-d-contrast: #fff;\n\n$cs-e: #ADD5F7;\n$cs-e-contrast: #fff;\n/**\n * @colors\n * $cs-a|#{$cs-a} $cs-b|#{$cs-b} $cs-c|#{$cs-c} $cs-d|#{$cs-d} $cs-e|#{$cs-e}\n * $cs-a-contrast|#{$cs-a-contrast} $cs-b-contrast|#{$cs-b-contrast} $cs-c-contrast|#{$cs-c-contrast} $cs-d-contrast|#{$cs-d-contrast} $cs-e-contrast|#{$cs-e-contrast}\n */\n\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n$cs-positive: #468847;\n$cs-neutral: #3A87AD;\n$cs-cautious: #c09853;\n$cs-negative: #b94a48;\n/**\n * @colors\n * $cs-positive|#{$cs-positive} $cs-neutral|#{$cs-neutral} $cs-cautious|#{$cs-cautious} $cs-negative|#{$cs-negative}\n */\n\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n$cs-grey-a: #efefef;\n$cs-grey-b: darken($cs-grey-a, 10%);\n$cs-grey-c: darken($cs-grey-b, 10%);\n/**\n * @colors\n * $cs-grey-a|#{$cs-grey-a} $cs-grey-b|#{$cs-grey-b} $cs-grey-c|#{$cs-grey-c}\n */\n\n\n\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n$font-base-size: 16px; /* [1] */\n$font-base-line-height: 24px; /* [1] */\n$font-base-color: #222;\n/**\n * @variables\n * $font-base-size|#{$font-base-size} $font-base-line-height|#{$font-base-line-height} $font-base-color|#{$font-base-color}\n */\n\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n$font-size-xs: 0.75em;\n$font-size-s: 0.85em;\n$font-size-m: 1em;\n$font-size-l: 1.25em;\n$font-size-xl: 1.5em;\n$font-size-xxl: 1.875em;\n$font-size-xxxl: 2.25em;\n\n$font-size-h1: $font-size-xxxl;\n$font-size-h2: $font-size-xxl;\n$font-size-h3: $font-size-xl;\n$font-size-h4: $font-size-l;\n$font-size-h5: $font-size-m;\n$font-size-h6: $font-size-m;\n\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n$font-a-family: 'Helvetica Neue', sans-serif;\n\n$font-a-weight-thin: 100;\n$font-a-weight-extra-light: 200;\n$font-a-weight-light: 300;\n$font-a-weight-normal: 400;\n$font-a-weight-medium: 500;\n$font-a-weight-semi-bold: 600;\n$font-a-weight-bold: 700;\n$font-a-weight-extra-bold: 800;\n$font-a-weight-ultra-bold: 900;\n/**\n * @font [#{$font-a-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n$font-b-family: Futura, 'Trebuchet MS', sans-serif;\n\n$font-b-weight-thin: 100;\n$font-b-weight-extra-light: 200;\n$font-b-weight-light: 300;\n$font-b-weight-normal: 400;\n$font-b-weight-medium: 500;\n$font-b-weight-semi-bold: 600;\n$font-b-weight-bold: 700;\n$font-b-weight-extra-bold: 800;\n$font-b-weight-ultra-bold: 900;\n/**\n * @font [#{$font-b-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n$a-color: $cs-a;\n$a-color-visited: $a-color;\n$a-color-hover: $a-color;\n$a-text-decoration: underline;\n$a-text-decoration-hover: none;\n\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n$selection-background: $cs-a;\n$selection-color: $cs-a-contrast;\n\n\n\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n$breakpoint-s: 30em;\n$breakpoint-m: 45em;\n$breakpoint-l: 60em;\n$breakpoint-xl: 75em;\n/**\n * @variables\n * $breakpoint-s|#{$breakpoint-s} $breakpoint-m|#{$breakpoint-m} $breakpoint-l|#{$breakpoint-l} $breakpoint-xl|#{$breakpoint-xl}\n */\n\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n$breakpoint-max-s: avalanche-breakpointmax($breakpoint-s);\n$breakpoint-max-m: avalanche-breakpointmax($breakpoint-m);\n$breakpoint-max-l: avalanche-breakpointmax($breakpoint-l);\n$breakpoint-max-xl: avalanche-breakpointmax($breakpoint-xl);\n/**\n * @variables\n * $breakpoint-max-s|#{$breakpoint-max-s} $breakpoint-max-m|#{$breakpoint-max-m} $breakpoint-max-l|#{$breakpoint-max-l} $breakpoint-max-xl|#{$breakpoint-max-xl}\n */\n\n\n\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n$spacing-xs: 0.5em;\n$spacing-s: 1em;\n$spacing-m: avalanche-strip-unit($font-base-line-height / $font-base-size) * 1em;\n$spacing-l: 2em;\n$spacing-xl: 3em;\n$spacing-xxl: 4em;\n$spacing-xxxl: 5em;\n/**\n * @variables\n * $spacing-xs|#{$spacing-xs} $spacing-s|#{$spacing-s} $spacing-m|#{$spacing-m} $spacing-l|#{$spacing-l} $spacing-xl|#{$spacing-xl} $spacing-xxl|#{$spacing-xxl} $spacing-xxxl|#{$spacing-xxxl}\n */\n\n\n\n/**\n * @name Layout\n * @level 2.1.5.\n */\n$layout-max-width: 62em;\n$layout-box-sizing-reset: true;\n/**\n * @variables\n * $layout-max-width|#{$layout-max-width} $layout-box-sizing-reset|#{$layout-box-sizing-reset}\n */\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/gulpfile.js b/packages/avalanchesass-object-grid/gulpfile.js index b80e596..47a2e7e 100644 --- a/packages/avalanchesass-object-grid/gulpfile.js +++ b/packages/avalanchesass-object-grid/gulpfile.js @@ -11,7 +11,7 @@ var sourcemaps = require('gulp-sourcemaps'); gulp.task('styles', function () { return gulp.src('scss/**/*.scss') .pipe(sourcemaps.init()) - .pipe(sass({ precision: 7, includePaths: ['bower_components/avalanche/scss'], errLogToConsole: true })) + .pipe(sass({ precision: 7, includePaths: ['bower_components', 'bower_components/avalanche/scss'], errLogToConsole: true })) .pipe(autoprefixer()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('css')); From 7250f728078a97726c7f6c214bb9252d78658b21 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 21 Apr 2015 18:38:17 +0200 Subject: [PATCH 008/355] removed functionality to build the object as standalone package --- packages/avalanchesass-object-grid/bower.json | 6 +- .../avalanchesass-object-grid/css/grid.css | 377 ------------------ .../css/grid.css.map | 1 - .../css/grid.min.css | 1 - .../avalanchesass-object-grid/gulpfile.js | 39 -- .../avalanchesass-object-grid/package.json | 25 -- .../avalanchesass-object-grid/scss/grid.scss | 286 +++++++------ 7 files changed, 135 insertions(+), 600 deletions(-) delete mode 100644 packages/avalanchesass-object-grid/css/grid.css delete mode 100644 packages/avalanchesass-object-grid/css/grid.css.map delete mode 100644 packages/avalanchesass-object-grid/css/grid.min.css delete mode 100644 packages/avalanchesass-object-grid/gulpfile.js delete mode 100644 packages/avalanchesass-object-grid/package.json diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 95b5b62..0cd672c 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -1,12 +1,11 @@ { "name": "avalanche: Object grid", - "version": "2.0", + "version": "2.0.0", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "authors": [ "Markus Oberlehner" ], "description": "CSS grid system", - "main": "css/grid.css", "keywords": [ "SASS", "CSS", @@ -23,8 +22,5 @@ "dependencies": { "avalanche_function_strip_unit": "dev", "avalanche_utility_clearfix": "dev" - }, - "devDependencies": { - "avalanche": "bowerpackaging" } } diff --git a/packages/avalanchesass-object-grid/css/grid.css b/packages/avalanchesass-object-grid/css/grid.css deleted file mode 100644 index a065c9d..0000000 --- a/packages/avalanchesass-object-grid/css/grid.css +++ /dev/null @@ -1,377 +0,0 @@ -/** - * Dependencies - */ -/** - * @name strip-unit - * @level X.X.X. - * @description - * avalanche-strip-unit($number) - */ -/** - * @name Variable - * @level 2.1. - */ -/** - * @name Color Scheme - * @level 2.1.1. - * @description Fancy generator: http://coolors.co/ - */ -/** - * @name Basic colors - * @level 2.1.1.1. - */ -/** - * @colors - * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7 - * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff - */ -/** - * @name Colors for alerts - * @level 2.1.1.2. - * @description e.g. success, error, info,... - */ -/** - * @colors - * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48 - */ -/** - * @name Grey - * @level 2.1.1.3. - */ -/** - * @colors - * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc - */ -/** - * @name Typography - * @level 2.1.2. - * @description - * Set the font weight variables according to the font - * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 - * In this case set the font weights to 200, 400 and 700 - * If you set a font weight in your css you must use this variables! - * e.g. font-weight: $font-a-weight-normal; - */ -/** - * @name Basic configuration - * @level 2.1.2.1. - * - * 1. must be in px, do not use in your styles - */ -/* [1] */ -/* [1] */ -/** - * @variables - * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222 - */ -/** - * @name Font sizes - * @level 2.1.2.2. - */ -/** - * @name System fonts - * @level 2.1.2.3. - */ -/** - * @name Font A - * @level 2.1.2.3.1. - */ -/** - * @font ['Helvetica Neue', sans-serif] - * ABCDEFGHIJKLMNOPQRSTUVWXYZ - * abcdefghijklmnopqrstuvwxyz - * 0123456789 - * !&/()$=@;:,. - */ -/** - * @name Font B - * @level 2.1.2.3.2. - */ -/** - * @font [Futura, 'Trebuchet MS', sans-serif] - * ABCDEFGHIJKLMNOPQRSTUVWXYZ - * abcdefghijklmnopqrstuvwxyz - * 0123456789 - * !&/()$=@;:,. - */ -/** - * @name Anchors - * @level 2.1.2.4. - * @markup - * Anchor - */ -/** - * @name Text selection - * @level 2.1.2.5. - * @description - * Select some text to see it in action - */ -/** - * @name Breakpoints - * @level 2.1.3. - * @description - * More infos about media queries: - * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/) - */ -/** - * @name min Breakpoints - * @level 2.1.3.1. - */ -/** - * @variables - * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em - */ -/** - * @name max Breakpoints - * @level 2.1.3.2. - * @description - * Use with care, min-width breakpoints should be preferred! - */ -/** - * @variables - * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em) - */ -/** - * @name Spacing - * @level 2.1.4. - */ -/** - * @variables - * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em - */ -/** - * @name Layout - * @level 2.1.5. - */ -/** - * @variables - * $layout-max-width|62em $layout-box-sizing-reset|true - */ -/** - * Dependencies - */ -/** - * @name Variable - * @level 2.1. - */ -/** - * @name Color Scheme - * @level 2.1.1. - * @description Fancy generator: http://coolors.co/ - */ -/** - * @name Basic colors - * @level 2.1.1.1. - */ -/** - * @colors - * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7 - * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff - */ -/** - * @name Colors for alerts - * @level 2.1.1.2. - * @description e.g. success, error, info,... - */ -/** - * @colors - * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48 - */ -/** - * @name Grey - * @level 2.1.1.3. - */ -/** - * @colors - * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc - */ -/** - * @name Typography - * @level 2.1.2. - * @description - * Set the font weight variables according to the font - * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 - * In this case set the font weights to 200, 400 and 700 - * If you set a font weight in your css you must use this variables! - * e.g. font-weight: $font-a-weight-normal; - */ -/** - * @name Basic configuration - * @level 2.1.2.1. - * - * 1. must be in px, do not use in your styles - */ -/* [1] */ -/* [1] */ -/** - * @variables - * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222 - */ -/** - * @name Font sizes - * @level 2.1.2.2. - */ -/** - * @name System fonts - * @level 2.1.2.3. - */ -/** - * @name Font A - * @level 2.1.2.3.1. - */ -/** - * @font ['Helvetica Neue', sans-serif] - * ABCDEFGHIJKLMNOPQRSTUVWXYZ - * abcdefghijklmnopqrstuvwxyz - * 0123456789 - * !&/()$=@;:,. - */ -/** - * @name Font B - * @level 2.1.2.3.2. - */ -/** - * @font [Futura, 'Trebuchet MS', sans-serif] - * ABCDEFGHIJKLMNOPQRSTUVWXYZ - * abcdefghijklmnopqrstuvwxyz - * 0123456789 - * !&/()$=@;:,. - */ -/** - * @name Anchors - * @level 2.1.2.4. - * @markup - * Anchor - */ -/** - * @name Text selection - * @level 2.1.2.5. - * @description - * Select some text to see it in action - */ -/** - * @name Breakpoints - * @level 2.1.3. - * @description - * More infos about media queries: - * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/) - */ -/** - * @name min Breakpoints - * @level 2.1.3.1. - */ -/** - * @variables - * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em - */ -/** - * @name max Breakpoints - * @level 2.1.3.2. - * @description - * Use with care, min-width breakpoints should be preferred! - */ -/** - * @variables - * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em) - */ -/** - * @name Spacing - * @level 2.1.4. - */ -/** - * @variables - * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em - */ -/** - * @name Layout - * @level 2.1.5. - */ -/** - * @variables - * $layout-max-width|62em $layout-box-sizing-reset|true - */ -/** - * @name Clearfix - * @level 4.1. - * @description - * Contain floats - */ -.u-clearfix { - *zoom: 1; } - .u-clearfix:before, .u-clearfix:after { - display: table; - content: ' '; } - .u-clearfix:after { - clear: both; } - -/** - * @name Grid - * @level X.X. - */ -/** - * Variables - */ -/** - * @name Base - * @level X.X.X. - * @description - * Mobile first styles for all screen sizes - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
- */ -.o-grid { - *zoom: 1; - margin-left: -1em; } - .o-grid:before, .o-grid:after { - display: table; - content: ' '; } - .o-grid:after { - clear: both; } - -[class*='o-grid__item'] { - float: left; - padding-left: 1em; - width: 100%; } - -.o-grid__item--1 { - width: 8.3333333%; } - -.o-grid__item--2 { - width: 16.6666667%; } - -.o-grid__item--3 { - width: 25%; } - -.o-grid__item--4 { - width: 33.3333333%; } - -.o-grid__item--5 { - width: 41.6666667%; } - -.o-grid__item--6 { - width: 50%; } - -.o-grid__item--7 { - width: 58.3333333%; } - -.o-grid__item--8 { - width: 66.6666667%; } - -.o-grid__item--9 { - width: 75%; } - -.o-grid__item--10 { - width: 83.3333333%; } - -.o-grid__item--11 { - width: 91.6666667%; } - -.o-grid__item--12 { - width: 100%; } - - -/*# sourceMappingURL=grid.css.map */ \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/css/grid.css.map b/packages/avalanchesass-object-grid/css/grid.css.map deleted file mode 100644 index 83c9151..0000000 --- a/packages/avalanchesass-object-grid/css/grid.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["grid.css","../bower_components/avalanche_utility_clearfix/scss/clearfix.scss","grid.scss","../bower_components/avalanche/scss/system/_variable.scss"],"names":[],"mappings":"AAAA;;IAEG;AACH;;;;;MAKK;AACL;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;IAEG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;;IAIG;AACH;;;;IAIG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;;;;IASG;AACH;;;;;IAKG;AACH,UAAS;AACT,UAAS;AACT;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;;;;IAMG;AACH;;;;;IAKG;AACH;;;;;IAKG;AACH;;;;;;IAMG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;IAKG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;IAGG;AACH;;;;;MAKK;AC7QL;GAXI,SAAO,EAAA;EACX;IAEe,gBAAA;IACA,cAAA,EAAA;EAEf;IACM,aAAO,EAAA;;AD0Rb;;;MAGK;AACL;;MAEK;AACL;;;;;;;;;;;MAWK;AEhRL;GDnCI,SAAO;EE0MI,mBDrKX,EAAA;EDpCY;IAEV,gBAAS;IACA,cAAA,EAAA;EAER;IACD,aAAO,EAAA;;ACiCb;EACW,aAAA;ECiKI,mBDhKX;EACA,aAAO,EAAA;;AAOX;EACc,mBAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,YAAQ,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACc,oBAAA,EAAA;;AADd;EACc,YAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACc,oBAAA,EAAA;;AADd;EACc,YAAA,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,oBAAQ,EAAA;;AADd;EACM,aAAQ,EAAA","file":"grid.css","sourcesContent":["/**\n * Dependencies\n */\n/**\n * @name strip-unit\n * @level X.X.X.\n * @description\n * avalanche-strip-unit($number)\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em)\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * Dependencies\n */\n/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n/**\n * @colors\n * $cs-a|#16193B $cs-b|#35478C $cs-c|#4E7AC7 $cs-d|#7FB2F0 $cs-e|#ADD5F7\n * $cs-a-contrast|#fff $cs-b-contrast|#fff $cs-c-contrast|#fff $cs-d-contrast|#fff $cs-e-contrast|#fff\n */\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n/**\n * @colors\n * $cs-positive|#468847 $cs-neutral|#3A87AD $cs-cautious|#c09853 $cs-negative|#b94a48\n */\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n/**\n * @colors\n * $cs-grey-a|#efefef $cs-grey-b|#d5d5d5 $cs-grey-c|#bcbcbc\n */\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n/* [1] */\n/* [1] */\n/**\n * @variables\n * $font-base-size|16px $font-base-line-height|24px $font-base-color|#222\n */\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n/**\n * @font ['Helvetica Neue', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n/**\n * @font [Futura, 'Trebuchet MS', sans-serif]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n/**\n * @variables\n * $breakpoint-s|30em $breakpoint-m|45em $breakpoint-l|60em $breakpoint-xl|75em\n */\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n/**\n * @variables\n * $breakpoint-max-s|avalanche-breakpointmax(30em) $breakpoint-max-m|avalanche-breakpointmax(45em) $breakpoint-max-l|avalanche-breakpointmax(60em) $breakpoint-max-xl|avalanche-breakpointmax(75em)\n */\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n/**\n * @variables\n * $spacing-xs|0.5em $spacing-s|1em $spacing-m|1.5em $spacing-l|2em $spacing-xl|3em $spacing-xxl|4em $spacing-xxxl|5em\n */\n/**\n * @name Layout\n * @level 2.1.5.\n */\n/**\n * @variables\n * $layout-max-width|62em $layout-box-sizing-reset|true\n */\n/**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n.u-clearfix {\n *zoom: 1; }\n .u-clearfix:before, .u-clearfix:after {\n display: table;\n content: ' '; }\n .u-clearfix:after {\n clear: both; }\n\n/**\n * @name Grid\n * @level X.X.\n */\n/**\n * Variables\n */\n/**\n * @name Base\n * @level X.X.X.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n.o-grid {\n *zoom: 1;\n margin-left: -1em; }\n .o-grid:before, .o-grid:after {\n display: table;\n content: ' '; }\n .o-grid:after {\n clear: both; }\n\n[class*='o-grid__item'] {\n float: left;\n padding-left: 1em;\n width: 100%; }\n\n.o-grid__item--1 {\n width: 8.3333333%; }\n\n.o-grid__item--2 {\n width: 16.6666667%; }\n\n.o-grid__item--3 {\n width: 25%; }\n\n.o-grid__item--4 {\n width: 33.3333333%; }\n\n.o-grid__item--5 {\n width: 41.6666667%; }\n\n.o-grid__item--6 {\n width: 50%; }\n\n.o-grid__item--7 {\n width: 58.3333333%; }\n\n.o-grid__item--8 {\n width: 66.6666667%; }\n\n.o-grid__item--9 {\n width: 75%; }\n\n.o-grid__item--10 {\n width: 83.3333333%; }\n\n.o-grid__item--11 {\n width: 91.6666667%; }\n\n.o-grid__item--12 {\n width: 100%; }\n\n","/**\n * Dependencies\n */\n// System\n@import 'system/variable';\n\n\n\n@if variable-exists(u-clearfix-imported) == false {\n /**\n * @name Clearfix\n * @level 4.1.\n * @description\n * Contain floats\n */\n\n @mixin u-clearfix() {\n *zoom: 1;\n &:before,\n &:after {\n display: table;\n content: ' ';\n }\n &:after {\n clear: both;\n }\n }\n\n .u-clearfix {\n @include u-clearfix();\n }\n\n $u-clearfix-imported: true;\n}\n","/**\n * Dependencies\n */\n// Function\n@import 'avalanche_function_strip_unit/scss/strip_unit';\n\n// System\n@import 'system/variable';\n\n// Utility\n@import 'avalanche_utility_clearfix/scss/clearfix';\n\n\n\n@if variable-exists(o-grid-imported) == false {\n /**\n * @name Grid\n * @level X.X.\n */\n /**\n * Variables\n */\n $o-grid-item-count: 12 !default;\n\n // Sizes\n $o-grid-size-s: false !default;\n $o-grid-size-m: false !default;\n $o-grid-size-l: false !default;\n $o-grid-size-xl: false !default;\n\n // Spacing between items\n $o-grid-spacing-s: $spacing-s !default;\n $o-grid-spacing-m: $spacing-m !default;\n $o-grid-spacing-l: $spacing-m !default;\n $o-grid-spacing-xl: $spacing-m !default;\n\n\n\n /**\n * @name Base\n * @level X.X.X.\n * @description\n * Mobile first styles for all screen sizes\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n $o-grid-base-size: (100% / $o-grid-item-count);\n\n .o-grid {\n @include u-clearfix();\n margin-left: -$o-grid-spacing-s;\n }\n\n [class*='o-grid__item'] {\n float: left;\n padding-left: $o-grid-spacing-s;\n width: 100%;\n @if $layout-box-sizing-reset == false {\n box-sizing: border-box;\n }\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n\n\n\n @if $o-grid-size-s {\n /**\n * @name Small\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-s) {\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--s--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-m {\n /**\n * @name Medium\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-m) {\n .o-grid {\n margin-left: -$o-grid-spacing-m;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-m;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--m--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-l {\n /**\n * @name Large\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-l) {\n .o-grid {\n margin-left: -$o-grid-spacing-l;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-l;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--l--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n\n\n @if $o-grid-size-xl {\n /**\n * @name X-Large\n * @level X.X.X.\n * @description\n * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up\n *\n * @markup\n *
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
Grid Item
\n *
\n */\n @media (min-width: $breakpoint-xl) {\n .o-grid {\n margin-left: -$o-grid-spacing-xl;\n }\n\n [class*='o-grid__item'] {\n padding-left: $o-grid-spacing-xl;\n }\n\n @for $i from 1 through $o-grid-item-count {\n .o-grid__item--xl--#{$i} {\n width: ($o-grid-base-size * $i);\n }\n }\n }\n }\n\n $o-grid-imported: true;\n}\n","/**\n * @name Variable\n * @level 2.1.\n */\n/**\n * @name Color Scheme\n * @level 2.1.1.\n * @description Fancy generator: http://coolors.co/\n */\n/**\n * @name Basic colors\n * @level 2.1.1.1.\n */\n$cs-a: #16193B;\n$cs-a-contrast: #fff;\n\n$cs-b: #35478C;\n$cs-b-contrast: #fff;\n\n$cs-c: #4E7AC7;\n$cs-c-contrast: #fff;\n\n$cs-d: #7FB2F0;\n$cs-d-contrast: #fff;\n\n$cs-e: #ADD5F7;\n$cs-e-contrast: #fff;\n/**\n * @colors\n * $cs-a|#{$cs-a} $cs-b|#{$cs-b} $cs-c|#{$cs-c} $cs-d|#{$cs-d} $cs-e|#{$cs-e}\n * $cs-a-contrast|#{$cs-a-contrast} $cs-b-contrast|#{$cs-b-contrast} $cs-c-contrast|#{$cs-c-contrast} $cs-d-contrast|#{$cs-d-contrast} $cs-e-contrast|#{$cs-e-contrast}\n */\n\n/**\n * @name Colors for alerts\n * @level 2.1.1.2.\n * @description e.g. success, error, info,...\n */\n$cs-positive: #468847;\n$cs-neutral: #3A87AD;\n$cs-cautious: #c09853;\n$cs-negative: #b94a48;\n/**\n * @colors\n * $cs-positive|#{$cs-positive} $cs-neutral|#{$cs-neutral} $cs-cautious|#{$cs-cautious} $cs-negative|#{$cs-negative}\n */\n\n/**\n * @name Grey\n * @level 2.1.1.3.\n */\n$cs-grey-a: #efefef;\n$cs-grey-b: darken($cs-grey-a, 10%);\n$cs-grey-c: darken($cs-grey-b, 10%);\n/**\n * @colors\n * $cs-grey-a|#{$cs-grey-a} $cs-grey-b|#{$cs-grey-b} $cs-grey-c|#{$cs-grey-c}\n */\n\n\n\n/**\n * @name Typography\n * @level 2.1.2.\n * @description\n * Set the font weight variables according to the font \n * e.g. http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 \n * In this case set the font weights to 200, 400 and 700 \n * If you set a font weight in your css you must use this variables! \n * e.g. font-weight: $font-a-weight-normal;\n */\n/**\n * @name Basic configuration\n * @level 2.1.2.1.\n *\n * 1. must be in px, do not use in your styles\n */\n$font-base-size: 16px; /* [1] */\n$font-base-line-height: 24px; /* [1] */\n$font-base-color: #222;\n/**\n * @variables\n * $font-base-size|#{$font-base-size} $font-base-line-height|#{$font-base-line-height} $font-base-color|#{$font-base-color}\n */\n\n/**\n * @name Font sizes\n * @level 2.1.2.2.\n */\n$font-size-xs: 0.75em;\n$font-size-s: 0.85em;\n$font-size-m: 1em;\n$font-size-l: 1.25em;\n$font-size-xl: 1.5em;\n$font-size-xxl: 1.875em;\n$font-size-xxxl: 2.25em;\n\n$font-size-h1: $font-size-xxxl;\n$font-size-h2: $font-size-xxl;\n$font-size-h3: $font-size-xl;\n$font-size-h4: $font-size-l;\n$font-size-h5: $font-size-m;\n$font-size-h6: $font-size-m;\n\n/**\n * @name System fonts\n * @level 2.1.2.3.\n */\n/**\n * @name Font A\n * @level 2.1.2.3.1.\n */\n$font-a-family: 'Helvetica Neue', sans-serif;\n\n$font-a-weight-thin: 100;\n$font-a-weight-extra-light: 200;\n$font-a-weight-light: 300;\n$font-a-weight-normal: 400;\n$font-a-weight-medium: 500;\n$font-a-weight-semi-bold: 600;\n$font-a-weight-bold: 700;\n$font-a-weight-extra-bold: 800;\n$font-a-weight-ultra-bold: 900;\n/**\n * @font [#{$font-a-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Font B\n * @level 2.1.2.3.2.\n */\n$font-b-family: Futura, 'Trebuchet MS', sans-serif;\n\n$font-b-weight-thin: 100;\n$font-b-weight-extra-light: 200;\n$font-b-weight-light: 300;\n$font-b-weight-normal: 400;\n$font-b-weight-medium: 500;\n$font-b-weight-semi-bold: 600;\n$font-b-weight-bold: 700;\n$font-b-weight-extra-bold: 800;\n$font-b-weight-ultra-bold: 900;\n/**\n * @font [#{$font-b-family}]\n * ABCDEFGHIJKLMNOPQRSTUVWXYZ \n * abcdefghijklmnopqrstuvwxyz \n * 0123456789 \n * !&/()$=@;:,.\n */\n\n/**\n * @name Anchors\n * @level 2.1.2.4.\n * @markup\n * Anchor\n */\n$a-color: $cs-a;\n$a-color-visited: $a-color;\n$a-color-hover: $a-color;\n$a-text-decoration: underline;\n$a-text-decoration-hover: none;\n\n/**\n * @name Text selection\n * @level 2.1.2.5.\n * @description\n * Select some text to see it in action\n */\n$selection-background: $cs-a;\n$selection-color: $cs-a-contrast;\n\n\n\n/**\n * @name Breakpoints\n * @level 2.1.3.\n * @description\n * More infos about media queries: \n * [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)\n */\n/**\n * @name min Breakpoints\n * @level 2.1.3.1.\n */\n$breakpoint-s: 30em;\n$breakpoint-m: 45em;\n$breakpoint-l: 60em;\n$breakpoint-xl: 75em;\n/**\n * @variables\n * $breakpoint-s|#{$breakpoint-s} $breakpoint-m|#{$breakpoint-m} $breakpoint-l|#{$breakpoint-l} $breakpoint-xl|#{$breakpoint-xl}\n */\n\n/**\n * @name max Breakpoints\n * @level 2.1.3.2.\n * @description\n * Use with care, min-width breakpoints should be preferred!\n */\n$breakpoint-max-s: avalanche-breakpointmax($breakpoint-s);\n$breakpoint-max-m: avalanche-breakpointmax($breakpoint-m);\n$breakpoint-max-l: avalanche-breakpointmax($breakpoint-l);\n$breakpoint-max-xl: avalanche-breakpointmax($breakpoint-xl);\n/**\n * @variables\n * $breakpoint-max-s|#{$breakpoint-max-s} $breakpoint-max-m|#{$breakpoint-max-m} $breakpoint-max-l|#{$breakpoint-max-l} $breakpoint-max-xl|#{$breakpoint-max-xl}\n */\n\n\n\n/**\n * @name Spacing\n * @level 2.1.4.\n */\n$spacing-xs: 0.5em;\n$spacing-s: 1em;\n$spacing-m: avalanche-strip-unit($font-base-line-height / $font-base-size) * 1em;\n$spacing-l: 2em;\n$spacing-xl: 3em;\n$spacing-xxl: 4em;\n$spacing-xxxl: 5em;\n/**\n * @variables\n * $spacing-xs|#{$spacing-xs} $spacing-s|#{$spacing-s} $spacing-m|#{$spacing-m} $spacing-l|#{$spacing-l} $spacing-xl|#{$spacing-xl} $spacing-xxl|#{$spacing-xxl} $spacing-xxxl|#{$spacing-xxxl}\n */\n\n\n\n/**\n * @name Layout\n * @level 2.1.5.\n */\n$layout-max-width: 62em;\n$layout-box-sizing-reset: true;\n/**\n * @variables\n * $layout-max-width|#{$layout-max-width} $layout-box-sizing-reset|#{$layout-box-sizing-reset}\n */\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/css/grid.min.css b/packages/avalanchesass-object-grid/css/grid.min.css deleted file mode 100644 index 3196873..0000000 --- a/packages/avalanchesass-object-grid/css/grid.min.css +++ /dev/null @@ -1 +0,0 @@ -.u-clearfix{*zoom:1}.u-clearfix:before,.u-clearfix:after{display:table;content:' '}.u-clearfix:after{clear:both}.o-grid{*zoom:1;margin-left:-1em}.o-grid:before,.o-grid:after{display:table;content:' '}.o-grid:after{clear:both}[class*='o-grid__item']{float:left;padding-left:1em;width:100%}.o-grid__item--1{width:8.3333333%}.o-grid__item--2{width:16.6666667%}.o-grid__item--3{width:25%}.o-grid__item--4{width:33.3333333%}.o-grid__item--5{width:41.6666667%}.o-grid__item--6{width:50%}.o-grid__item--7{width:58.3333333%}.o-grid__item--8{width:66.6666667%}.o-grid__item--9{width:75%}.o-grid__item--10{width:83.3333333%}.o-grid__item--11{width:91.6666667%}.o-grid__item--12{width:100%} \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/gulpfile.js b/packages/avalanchesass-object-grid/gulpfile.js deleted file mode 100644 index 47a2e7e..0000000 --- a/packages/avalanchesass-object-grid/gulpfile.js +++ /dev/null @@ -1,39 +0,0 @@ -// Load plugins -var gulp = require('gulp'); -var autoprefixer = require('gulp-autoprefixer'); -var csso = require('gulp-csso'); -var livereload = require('gulp-livereload'); -var rename = require('gulp-rename'); -var sass = require('gulp-sass'); -var sourcemaps = require('gulp-sourcemaps'); - -// Styles -gulp.task('styles', function () { - return gulp.src('scss/**/*.scss') - .pipe(sourcemaps.init()) - .pipe(sass({ precision: 7, includePaths: ['bower_components', 'bower_components/avalanche/scss'], errLogToConsole: true })) - .pipe(autoprefixer()) - .pipe(sourcemaps.write('./')) - .pipe(gulp.dest('css')); -}); - -// Minify -gulp.task('minify', ['styles'], function () { - return gulp.src('css/grid.css') - .pipe(csso()) - .pipe(rename(function (path) { - path.basename += '.min'; - })) - .pipe(gulp.dest('css')) - .pipe(livereload()); -}); - -// Watch -gulp.task('watch', function () { - gulp.watch('scss/**/*', ['styles', 'minify']); -}); - -// Default -gulp.task('default', function () { - gulp.start('watch'); -}); diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json deleted file mode 100644 index 5c0f115..0000000 --- a/packages/avalanchesass-object-grid/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "avalanche: Object grid", - "version": "2.0.0", - "author": "Markus Oberlehner", - "license": "GPL v2", - "dependencies": { - "gulp": "^3.8.10", - "gulp-autoprefixer": "^2.1.0", - "gulp-csso": "^1.0.0", - "gulp-livereload": "^3.8.0", - "gulp-rename": "^1.2.2", - "gulp-sass": "^1.3.3", - "gulp-sourcemaps": "^1.5.2" - }, - "description": "CSS grid system", - "main": "gulpfile.js", - "repository": { - "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_grid" - }, - "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" - }, - "homepage": "https://github.com/avalanchesass/avalanche_object_grid" -} diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index 2b36169..fb11f84 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -1,200 +1,182 @@ /** - * Dependencies + * @name Grid + * @level X.X. */ -// Function -@import 'avalanche_function_strip_unit/scss/strip_unit'; +/** + * Variables + */ +$o-grid-item-count: 12 !default; -// System -@import 'system/variable'; +// Sizes +$o-grid-size-s: false !default; +$o-grid-size-m: false !default; +$o-grid-size-l: false !default; +$o-grid-size-xl: false !default; -// Utility -@import 'avalanche_utility_clearfix/scss/clearfix'; +// Spacing between items +$o-grid-spacing-s: $spacing-s !default; +$o-grid-spacing-m: $spacing-m !default; +$o-grid-spacing-l: $spacing-m !default; +$o-grid-spacing-xl: $spacing-m !default; -@if variable-exists(o-grid-imported) == false { - /** - * @name Grid - * @level X.X. - */ - /** - * Variables - */ - $o-grid-item-count: 12 !default; +/** + * @name Base + * @level X.X.X. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ +$o-grid-base-size: (100% / $o-grid-item-count); - // Sizes - $o-grid-size-s: false !default; - $o-grid-size-m: false !default; - $o-grid-size-l: false !default; - $o-grid-size-xl: false !default; +.o-grid { + @include u-clearfix(); + margin-left: -$o-grid-spacing-s; +} - // Spacing between items - $o-grid-spacing-s: $spacing-s !default; - $o-grid-spacing-m: $spacing-m !default; - $o-grid-spacing-l: $spacing-m !default; - $o-grid-spacing-xl: $spacing-m !default; +[class*='o-grid__item'] { + float: left; + padding-left: $o-grid-spacing-s; + width: 100%; + @if $layout-box-sizing-reset == false { + box-sizing: border-box; + } +} + +@for $i from 1 through $o-grid-item-count { + .o-grid__item--#{$i} { + width: ($o-grid-base-size * $i); + } +} +@if $o-grid-size-s { /** - * @name Base + * @name Small * @level X.X.X. * @description - * Mobile first styles for all screen sizes + * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up * * @markup *
- *
Grid Item
- *
Grid Item
+ *
Grid Item
+ *
Grid Item
*
*/ - $o-grid-base-size: (100% / $o-grid-item-count); - - .o-grid { - @include u-clearfix(); - margin-left: -$o-grid-spacing-s; - } - - [class*='o-grid__item'] { - float: left; - padding-left: $o-grid-spacing-s; - width: 100%; - @if $layout-box-sizing-reset == false { - box-sizing: border-box; - } - } - - @for $i from 1 through $o-grid-item-count { - .o-grid__item--#{$i} { - width: ($o-grid-base-size * $i); - } - } - - - - @if $o-grid-size-s { - /** - * @name Small - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-s) { - @for $i from 1 through $o-grid-item-count { - .o-grid__item--s--#{$i} { - width: ($o-grid-base-size * $i); - } + @media (min-width: $breakpoint-s) { + @for $i from 1 through $o-grid-item-count { + .o-grid__item--s--#{$i} { + width: ($o-grid-base-size * $i); } } } +} - @if $o-grid-size-m { - /** - * @name Medium - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-m) { - .o-grid { - margin-left: -$o-grid-spacing-m; - } +@if $o-grid-size-m { + /** + * @name Medium + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-m) { + .o-grid { + margin-left: -$o-grid-spacing-m; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-m; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-m; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--m--#{$i} { - width: ($o-grid-base-size * $i); - } + @for $i from 1 through $o-grid-item-count { + .o-grid__item--m--#{$i} { + width: ($o-grid-base-size * $i); } } } +} - @if $o-grid-size-l { - /** - * @name Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-l) { - .o-grid { - margin-left: -$o-grid-spacing-l; - } +@if $o-grid-size-l { + /** + * @name Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-l) { + .o-grid { + margin-left: -$o-grid-spacing-l; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-l; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-l; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--l--#{$i} { - width: ($o-grid-base-size * $i); - } + @for $i from 1 through $o-grid-item-count { + .o-grid__item--l--#{$i} { + width: ($o-grid-base-size * $i); } } } +} - @if $o-grid-size-xl { - /** - * @name X-Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up - * - * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
- */ - @media (min-width: $breakpoint-xl) { - .o-grid { - margin-left: -$o-grid-spacing-xl; - } +@if $o-grid-size-xl { + /** + * @name X-Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-xl) { + .o-grid { + margin-left: -$o-grid-spacing-xl; + } - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-xl; - } + [class*='o-grid__item'] { + padding-left: $o-grid-spacing-xl; + } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--xl--#{$i} { - width: ($o-grid-base-size * $i); - } + @for $i from 1 through $o-grid-item-count { + .o-grid__item--xl--#{$i} { + width: ($o-grid-base-size * $i); } } } - - $o-grid-imported: true; } From c7dfb86ad3320dfe1436c61419a20287535e9ff6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 22 Apr 2015 19:52:24 +0200 Subject: [PATCH 009/355] removed function namespace, avalanchesass/avalanche#74 --- packages/avalanchesass-object-grid/scss/grid.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/grid.scss index fb11f84..17d5a66 100644 --- a/packages/avalanchesass-object-grid/scss/grid.scss +++ b/packages/avalanchesass-object-grid/scss/grid.scss @@ -62,7 +62,7 @@ $o-grid-base-size: (100% / $o-grid-item-count); * @name Small * @level X.X.X. * @description - * Screen sizes #{$breakpoint-s} (#{avalanche-strip-unit($breakpoint-s) * $font-base-size}) and up + * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up * * @markup *
@@ -86,7 +86,7 @@ $o-grid-base-size: (100% / $o-grid-item-count); * @name Medium * @level X.X.X. * @description - * Screen sizes #{$breakpoint-m} (#{avalanche-strip-unit($breakpoint-m) * $font-base-size}) and up + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * * @markup *
@@ -120,7 +120,7 @@ $o-grid-base-size: (100% / $o-grid-item-count); * @name Large * @level X.X.X. * @description - * Screen sizes #{$breakpoint-l} (#{avalanche-strip-unit($breakpoint-l) * $font-base-size}) and up + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * * @markup *
@@ -154,7 +154,7 @@ $o-grid-base-size: (100% / $o-grid-item-count); * @name X-Large * @level X.X.X. * @description - * Screen sizes #{$breakpoint-xl} (#{avalanche-strip-unit($breakpoint-xl) * $font-base-size}) and up + * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up * * @markup *
From 254ebc4dc7c397f05e80fce1a42be3b5c7b238e2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 24 Apr 2015 18:41:09 +0200 Subject: [PATCH 010/355] added _ prefix to the filename, avalanchesass/avalanche#75 --- packages/avalanchesass-object-grid/scss/{grid.scss => _grid.scss} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/avalanchesass-object-grid/scss/{grid.scss => _grid.scss} (100%) diff --git a/packages/avalanchesass-object-grid/scss/grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss similarity index 100% rename from packages/avalanchesass-object-grid/scss/grid.scss rename to packages/avalanchesass-object-grid/scss/_grid.scss From 856f583c991faa1486217018b2a471ff0532bd00 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 1 May 2015 14:52:26 +0200 Subject: [PATCH 011/355] initial commit --- packages/generic-box-sizing-reset/.gitignore | 3 + packages/generic-box-sizing-reset/LICENSE | 340 ++++++++++++++++++ packages/generic-box-sizing-reset/README.md | 10 + packages/generic-box-sizing-reset/bower.json | 24 ++ .../scss/_layout.scss | 38 ++ 5 files changed, 415 insertions(+) create mode 100644 packages/generic-box-sizing-reset/.gitignore create mode 100644 packages/generic-box-sizing-reset/LICENSE create mode 100644 packages/generic-box-sizing-reset/README.md create mode 100644 packages/generic-box-sizing-reset/bower.json create mode 100644 packages/generic-box-sizing-reset/scss/_layout.scss diff --git a/packages/generic-box-sizing-reset/.gitignore b/packages/generic-box-sizing-reset/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/generic-box-sizing-reset/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/generic-box-sizing-reset/LICENSE b/packages/generic-box-sizing-reset/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/generic-box-sizing-reset/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md new file mode 100644 index 0000000..6682103 --- /dev/null +++ b/packages/generic-box-sizing-reset/README.md @@ -0,0 +1,10 @@ +# avalanche: Base layout +Basic layout +https://github.com/avalanchesass/avalanche_base_layout + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json new file mode 100644 index 0000000..b7bda74 --- /dev/null +++ b/packages/generic-box-sizing-reset/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Base layout", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_base_layout", + "authors": [ + "Markus Oberlehner" + ], + "description": "Basic layout", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "dev" + } +} diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss new file mode 100644 index 0000000..a294d94 --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -0,0 +1,38 @@ +/** + * @name Layout + * @level X.X. + */ +/** + * @name Container + * @level X.X.X. + * @description + * Basic container to limit the max-width + * of the layout and add some padding + */ +.container { + margin: 0 auto; + padding: 0 1em; + max-width: $layout-max-width; +} + + + +/** + * @name Box sizing reset + * @level X.X.X. + * @description + * Better box model + * [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) + */ +@if $layout-box-sizing-reset { + html { + box-sizing: border-box; + } + * { + &, + &:before, + &:after { + box-sizing: inherit; + } + } +} From add7e6e4e5565a7f096faf91ba7e1fa72aceaffd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 1 May 2015 17:56:14 +0200 Subject: [PATCH 012/355] initial commit --- packages/utility-font-family/.gitignore | 3 + packages/utility-font-family/LICENSE | 340 ++++++++++++++++++ packages/utility-font-family/README.md | 10 + packages/utility-font-family/bower.json | 24 ++ .../scss/_font_family.scss | 37 ++ 5 files changed, 414 insertions(+) create mode 100644 packages/utility-font-family/.gitignore create mode 100644 packages/utility-font-family/LICENSE create mode 100644 packages/utility-font-family/README.md create mode 100644 packages/utility-font-family/bower.json create mode 100644 packages/utility-font-family/scss/_font_family.scss diff --git a/packages/utility-font-family/.gitignore b/packages/utility-font-family/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/utility-font-family/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/utility-font-family/LICENSE b/packages/utility-font-family/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-font-family/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-font-family/README.md b/packages/utility-font-family/README.md new file mode 100644 index 0000000..b2382a5 --- /dev/null +++ b/packages/utility-font-family/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility font family +Font family utility classes +https://github.com/avalanchesass/avalanche_utility_font_family + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json new file mode 100644 index 0000000..e58c687 --- /dev/null +++ b/packages/utility-font-family/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Utility font family", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", + "authors": [ + "Markus Oberlehner" + ], + "description": "Font family utility classes", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "dev" + } +} diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss new file mode 100644 index 0000000..25c09e7 --- /dev/null +++ b/packages/utility-font-family/scss/_font_family.scss @@ -0,0 +1,37 @@ +/** + * @name Font family + * @level X.X. + */ +@function font-family-find-normal-weight($font-family) { + @if variable-exists($font-a-family) and $font-family == $font-a-family { + @return $font-a-weight-normal; + } @else if variable-exists($font-b-family) and $font-family == $font-b-family { + @return $font-b-weight-normal; + } @else if variable-exists($font-c-family) and $font-family == $font-c-family { + @return $font-c-weight-normal; + } @else if variable-exists($font-d-family) and $font-family == $font-d-family { + @return $font-d-weight-normal; + } @else if variable-exists($font-e-family) and $font-family == $font-e-family { + @return $font-e-weight-normal; + } + @return 400; +} + +@if variable-exists($font-a-family) { + @mixin u-font-family($font-family: $font-a-family, $font-weight: 0) { + font-family: $font-family; + @if $font-weight == 0 { + font-weight: font-family-find-normal-weight($font-family); + } + } + + .u-font-family-a { + @include u-font-family(); + } + + @if variable-exists($font-b-family) { + .u-font-family-b { + @include u-font-family($font-b-family); + } + } +} From 2a556a326f5924d1e601106effd2d8f79ce6b8c7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 1 May 2015 18:04:47 +0200 Subject: [PATCH 013/355] fixed various 'variable-exists' statements --- .../utility-font-family/scss/_font_family.scss | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index 25c09e7..746f7d6 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -3,21 +3,21 @@ * @level X.X. */ @function font-family-find-normal-weight($font-family) { - @if variable-exists($font-a-family) and $font-family == $font-a-family { + @if variable-exists(font-a-family) and $font-family == $font-a-family { @return $font-a-weight-normal; - } @else if variable-exists($font-b-family) and $font-family == $font-b-family { + } @else if variable-exists(font-b-family) and $font-family == $font-b-family { @return $font-b-weight-normal; - } @else if variable-exists($font-c-family) and $font-family == $font-c-family { + } @else if variable-exists(font-c-family) and $font-family == $font-c-family { @return $font-c-weight-normal; - } @else if variable-exists($font-d-family) and $font-family == $font-d-family { + } @else if variable-exists(font-d-family) and $font-family == $font-d-family { @return $font-d-weight-normal; - } @else if variable-exists($font-e-family) and $font-family == $font-e-family { + } @else if variable-exists(font-e-family) and $font-family == $font-e-family { @return $font-e-weight-normal; } @return 400; } -@if variable-exists($font-a-family) { +@if variable-exists(font-a-family) { @mixin u-font-family($font-family: $font-a-family, $font-weight: 0) { font-family: $font-family; @if $font-weight == 0 { @@ -29,7 +29,7 @@ @include u-font-family(); } - @if variable-exists($font-b-family) { + @if variable-exists(font-b-family) { .u-font-family-b { @include u-font-family($font-b-family); } From a5d108f8632bbdf1b4373e486a491a8b386d3e8b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 1 May 2015 18:10:57 +0200 Subject: [PATCH 014/355] fixed weight setting if a weight is specified, changed formatting of @if @else statements --- .../utility-font-family/scss/_font_family.scss | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index 746f7d6..a9a421c 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -5,13 +5,17 @@ @function font-family-find-normal-weight($font-family) { @if variable-exists(font-a-family) and $font-family == $font-a-family { @return $font-a-weight-normal; - } @else if variable-exists(font-b-family) and $font-family == $font-b-family { + } + @else if variable-exists(font-b-family) and $font-family == $font-b-family { @return $font-b-weight-normal; - } @else if variable-exists(font-c-family) and $font-family == $font-c-family { + } + @else if variable-exists(font-c-family) and $font-family == $font-c-family { @return $font-c-weight-normal; - } @else if variable-exists(font-d-family) and $font-family == $font-d-family { + } + @else if variable-exists(font-d-family) and $font-family == $font-d-family { @return $font-d-weight-normal; - } @else if variable-exists(font-e-family) and $font-family == $font-e-family { + } + @else if variable-exists(font-e-family) and $font-family == $font-e-family { @return $font-e-weight-normal; } @return 400; @@ -20,7 +24,10 @@ @if variable-exists(font-a-family) { @mixin u-font-family($font-family: $font-a-family, $font-weight: 0) { font-family: $font-family; - @if $font-weight == 0 { + @if $font-weight > 0 { + font-weight: $font-weight; + } + @else { font-weight: font-family-find-normal-weight($font-family); } } From e4b35fa2c869e98bd6db43ef2288bf725fc90edf Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 3 May 2015 08:12:57 +0200 Subject: [PATCH 015/355] initial commit --- packages/utility-spacing/.gitignore | 3 + packages/utility-spacing/LICENSE | 340 ++++++++++++++++++++ packages/utility-spacing/README.md | 10 + packages/utility-spacing/bower.json | 24 ++ packages/utility-spacing/scss/_spacing.scss | 13 + 5 files changed, 390 insertions(+) create mode 100644 packages/utility-spacing/.gitignore create mode 100644 packages/utility-spacing/LICENSE create mode 100644 packages/utility-spacing/README.md create mode 100644 packages/utility-spacing/bower.json create mode 100644 packages/utility-spacing/scss/_spacing.scss diff --git a/packages/utility-spacing/.gitignore b/packages/utility-spacing/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/utility-spacing/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/utility-spacing/LICENSE b/packages/utility-spacing/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-spacing/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-spacing/README.md b/packages/utility-spacing/README.md new file mode 100644 index 0000000..e34b013 --- /dev/null +++ b/packages/utility-spacing/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility spacing +Spacing utility classes +https://github.com/avalanchesass/avalanche_utility_spacing + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json new file mode 100644 index 0000000..fb71a28 --- /dev/null +++ b/packages/utility-spacing/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Utility spacing", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", + "authors": [ + "Markus Oberlehner" + ], + "description": "Spacing utility classes", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "dev" + } +} diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss new file mode 100644 index 0000000..7d32882 --- /dev/null +++ b/packages/utility-spacing/scss/_spacing.scss @@ -0,0 +1,13 @@ +/** + * @name Spacing + * @level X.X. + */ +@mixin u-spacing-wrap($spacing: $spacing-m) { + > * + * { + margin-top: $spacing; + } +} + +.u-spacing-wrap { + @include u-spacing-wrap(); +} From 50f4e6ad723c3bb36a5e71c21ca3bcdf94d9f20e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 16:17:04 +0200 Subject: [PATCH 016/355] moved container class to a separate repository, fixes #1 --- .../generic-box-sizing-reset/scss/_layout.scss | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss index a294d94..99b3eb3 100644 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -2,21 +2,6 @@ * @name Layout * @level X.X. */ -/** - * @name Container - * @level X.X.X. - * @description - * Basic container to limit the max-width - * of the layout and add some padding - */ -.container { - margin: 0 auto; - padding: 0 1em; - max-width: $layout-max-width; -} - - - /** * @name Box sizing reset * @level X.X.X. From af73ea2c1187f3e8f59b18abf3b389dabbed9537 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 18:40:03 +0200 Subject: [PATCH 017/355] initial commit --- packages/utility-offset/.gitignore | 3 + packages/utility-offset/LICENSE | 340 ++++++++++++++++++++++ packages/utility-offset/README.md | 10 + packages/utility-offset/bower.json | 27 ++ packages/utility-offset/scss/_offset.scss | 136 +++++++++ 5 files changed, 516 insertions(+) create mode 100644 packages/utility-offset/.gitignore create mode 100644 packages/utility-offset/LICENSE create mode 100644 packages/utility-offset/README.md create mode 100644 packages/utility-offset/bower.json create mode 100644 packages/utility-offset/scss/_offset.scss diff --git a/packages/utility-offset/.gitignore b/packages/utility-offset/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/utility-offset/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/utility-offset/LICENSE b/packages/utility-offset/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-offset/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-offset/README.md b/packages/utility-offset/README.md new file mode 100644 index 0000000..2ac713a --- /dev/null +++ b/packages/utility-offset/README.md @@ -0,0 +1,10 @@ +# avalanche: Object grid +CSS grid system +https://github.com/avalanchesass/avalanche_object_grid + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json new file mode 100644 index 0000000..b5e04d8 --- /dev/null +++ b/packages/utility-offset/bower.json @@ -0,0 +1,27 @@ +{ + "name": "avalanche: Utility offset", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", + "authors": [ + "Markus Oberlehner" + ], + "description": "Offset classes", + "keywords": [ + "SASS", + "CSS", + "Grid" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_function_strip_unit": "dev", + "avalanche_system_variable": "dev", + "avalanche_object_grid": "dev" + } +} diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss new file mode 100644 index 0000000..def147a --- /dev/null +++ b/packages/utility-offset/scss/_offset.scss @@ -0,0 +1,136 @@ +/** + * @name Offset + * @level X.X. + */ +/** + * Variables + */ +$u-offset-item-count: 12 !default; + +// Sizes +$u-offset-size-s: true !default; +$u-offset-size-m: true !default; +$u-offset-size-l: true !default; +$u-offset-size-xl: true !default; + +// Spacing between items +/*$o-grid-spacing-s: $spacing-s !default; +$o-grid-spacing-m: $spacing-m !default; +$o-grid-spacing-l: $spacing-m !default; +$o-grid-spacing-xl: $spacing-m !default;*/ + + + +/** + * @name Base + * @level X.X.X. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item with offset
+ *
+ */ +$u-offset-base-size: (100% / $o-offset-item-count); + +@for $i from 1 through $u-offset-item-count { + .u-offset--#{$i} { + margin-left: ($u-offset-base-size * $i); + } +} + + + +@if $u-offset-size-s { + /** + * @name Small + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item with offset
+ *
+ */ + @media (min-width: $breakpoint-s) { + @for $i from 1 through $u-offset-item-count { + .u-offset--s--#{$i} { + margin-left: ($u-offset-base-size * $i); + } + } + } +} + + + +@if $u-offset-size-m { + /** + * @name Medium + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item with offset
+ *
Grid Item with offset
+ *
+ */ + @media (min-width: $breakpoint-m) { + @for $i from 1 through $u-offset-item-count { + .u-offset--m--#{$i} { + margin-left: ($u-offset-base-size * $i); + } + } + } +} + + + +@if $u-offset-size-l { + /** + * @name Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item with offset
+ *
Grid Item with offset
+ *
+ */ + @media (min-width: $breakpoint-l) { + @for $i from 1 through $u-offset-item-count { + .u-offset--l--#{$i} { + margin-left: ($u-offset-base-size * $i); + } + } + } +} + + + +@if $u-offset-size-xl { + /** + * @name X-Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item with offset
+ *
Grid Item with offset
+ *
+ */ + @media (min-width: $breakpoint-xl) { + @for $i from 1 through $u-offset-item-count { + .u-offset--xl--#{$i} { + margin-left: ($u-offset-base-size * $i); + } + } + } +} From f2abde8c7861337636e6d7c044eac025a7c58fb1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 18:47:47 +0200 Subject: [PATCH 018/355] fixed a variable name --- packages/utility-offset/scss/_offset.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index def147a..d4b8c47 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -32,7 +32,7 @@ $o-grid-spacing-xl: $spacing-m !default;*/ *
Grid Item with offset
*
*/ -$u-offset-base-size: (100% / $o-offset-item-count); +$u-offset-base-size: (100% / $u-offset-item-count); @for $i from 1 through $u-offset-item-count { .u-offset--#{$i} { From 87586d2ebe642febd03e3fdb964f4cf0f774584b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 18:49:15 +0200 Subject: [PATCH 019/355] cleanup, removed outcommented code --- packages/utility-offset/scss/_offset.scss | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index d4b8c47..3ed5ab8 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -13,12 +13,6 @@ $u-offset-size-m: true !default; $u-offset-size-l: true !default; $u-offset-size-xl: true !default; -// Spacing between items -/*$o-grid-spacing-s: $spacing-s !default; -$o-grid-spacing-m: $spacing-m !default; -$o-grid-spacing-l: $spacing-m !default; -$o-grid-spacing-xl: $spacing-m !default;*/ - /** From 5b4ebe4f510edf2b97a6221fd898d1e3b28a22ce Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 18:50:35 +0200 Subject: [PATCH 020/355] fixed README text --- packages/utility-offset/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/utility-offset/README.md b/packages/utility-offset/README.md index 2ac713a..eff6711 100644 --- a/packages/utility-offset/README.md +++ b/packages/utility-offset/README.md @@ -1,6 +1,6 @@ -# avalanche: Object grid -CSS grid system -https://github.com/avalanchesass/avalanche_object_grid +# avalanche: Utility offset +Offset classes +https://github.com/avalanchesass/avalanche_utility_offset ### Author Markus Oberlehner From 2716d4945798297bc8d16c6820bef7ebb91088b4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 19:56:27 +0200 Subject: [PATCH 021/355] added variable system package dependency --- packages/avalanchesass-object-grid/bower.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 0cd672c..c6479b0 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -21,6 +21,7 @@ ], "dependencies": { "avalanche_function_strip_unit": "dev", + "avalanche_system_variable": "dev", "avalanche_utility_clearfix": "dev" } } From aaf14f06ac7d61a8c348ece633fca2bf20cee6e3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 19:56:53 +0200 Subject: [PATCH 022/355] set all config variables to true --- packages/avalanchesass-object-grid/scss/_grid.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 17d5a66..fad0be6 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -8,10 +8,10 @@ $o-grid-item-count: 12 !default; // Sizes -$o-grid-size-s: false !default; -$o-grid-size-m: false !default; -$o-grid-size-l: false !default; -$o-grid-size-xl: false !default; +$o-grid-size-s: true !default; +$o-grid-size-m: true !default; +$o-grid-size-l: true !default; +$o-grid-size-xl: true !default; // Spacing between items $o-grid-spacing-s: $spacing-s !default; From 7f016b3d890de3e8c8ecf53141e911f404ab7363 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 20:29:15 +0200 Subject: [PATCH 023/355] initial commit --- .../avalanchesass-utility-grid/.gitignore | 3 + packages/avalanchesass-utility-grid/LICENSE | 340 ++++++++++++++++++ packages/avalanchesass-utility-grid/README.md | 10 + .../avalanchesass-utility-grid/bower.json | 27 ++ .../scss/_width.scss | 138 +++++++ 5 files changed, 518 insertions(+) create mode 100644 packages/avalanchesass-utility-grid/.gitignore create mode 100644 packages/avalanchesass-utility-grid/LICENSE create mode 100644 packages/avalanchesass-utility-grid/README.md create mode 100644 packages/avalanchesass-utility-grid/bower.json create mode 100644 packages/avalanchesass-utility-grid/scss/_width.scss diff --git a/packages/avalanchesass-utility-grid/.gitignore b/packages/avalanchesass-utility-grid/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/avalanchesass-utility-grid/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/avalanchesass-utility-grid/LICENSE b/packages/avalanchesass-utility-grid/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/avalanchesass-utility-grid/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-grid/README.md new file mode 100644 index 0000000..eff6711 --- /dev/null +++ b/packages/avalanchesass-utility-grid/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility offset +Offset classes +https://github.com/avalanchesass/avalanche_utility_offset + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json new file mode 100644 index 0000000..b5e04d8 --- /dev/null +++ b/packages/avalanchesass-utility-grid/bower.json @@ -0,0 +1,27 @@ +{ + "name": "avalanche: Utility offset", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", + "authors": [ + "Markus Oberlehner" + ], + "description": "Offset classes", + "keywords": [ + "SASS", + "CSS", + "Grid" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_function_strip_unit": "dev", + "avalanche_system_variable": "dev", + "avalanche_object_grid": "dev" + } +} diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss new file mode 100644 index 0000000..264b20a --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -0,0 +1,138 @@ +/** + * @name Width + * @level X.X. + */ +/** + * Variables + */ +$u-width-item-count: 12 !default; + +// Sizes +$u-width-size-s: true !default; +$u-width-size-m: true !default; +$u-width-size-l: true !default; +$u-width-size-xl: true !default; + + + +/** + * @name Base + * @level X.X.X. + * @description + * Mobile first styles for all screen sizes + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ +$u-width-base-size: (100% / $u-width-item-count); + +@for $i from 1 through $u-width-item-count { + .u-width--#{$i} { + width: ($u-width-base-size * $i); + } +} + + + +@if $u-width-size-s { + /** + * @name Small + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-s) { + @for $i from 1 through $u-width-item-count { + .u-width--s--#{$i} { + width: ($u-width-base-size * $i); + } + } + } +} + + + +@if $u-width-size-m { + /** + * @name Medium + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-m) { + @for $i from 1 through $u-width-item-count { + .u-width--m--#{$i} { + width: ($u-width-base-size * $i); + } + } + } +} + + + +@if $u-width-size-l { + /** + * @name Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-l) { + @for $i from 1 through $u-width-item-count { + .u-width--l--#{$i} { + width: ($u-width-base-size * $i); + } + } + } +} + + + +@if $u-width-size-xl { + /** + * @name X-Large + * @level X.X.X. + * @description + * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @markup + *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
+ */ + @media (min-width: $breakpoint-xl) { + @for $i from 1 through $u-width-item-count { + .u-width--xl--#{$i} { + width: ($u-width-base-size * $i); + } + } + } +} From 114516e3f94f8b4e38e05020d73b0352517087eb Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 20:33:19 +0200 Subject: [PATCH 024/355] revamped grid system, moved widths in a 'width' utility package and added a spaced modifier class, fixes #1 and #2 --- packages/avalanchesass-object-grid/bower.json | 3 +- .../avalanchesass-object-grid/scss/_grid.scss | 106 ++++++++---------- 2 files changed, 46 insertions(+), 63 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index c6479b0..7782905 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -22,6 +22,7 @@ "dependencies": { "avalanche_function_strip_unit": "dev", "avalanche_system_variable": "dev", - "avalanche_utility_clearfix": "dev" + "avalanche_utility_clearfix": "dev", + "avalanche_utility_width": "dev" } } diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index fad0be6..e548c36 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -28,30 +28,25 @@ $o-grid-spacing-xl: $spacing-m !default; * Mobile first styles for all screen sizes * * @markup - *
- *
Grid Item
- *
Grid Item
+ *
+ *
Grid Item
+ *
Grid Item
*
*/ -$o-grid-base-size: (100% / $o-grid-item-count); - .o-grid { @include u-clearfix(); - margin-left: -$o-grid-spacing-s; + &.o-grid--spaced { + margin-left: -$o-grid-spacing-s; + } } -[class*='o-grid__item'] { +.o-grid__item { float: left; - padding-left: $o-grid-spacing-s; - width: 100%; @if $layout-box-sizing-reset == false { box-sizing: border-box; } -} - -@for $i from 1 through $o-grid-item-count { - .o-grid__item--#{$i} { - width: ($o-grid-base-size * $i); + .o-grid--spaced & { + padding-left: $o-grid-spacing-s; } } @@ -65,18 +60,11 @@ $o-grid-base-size: (100% / $o-grid-item-count); * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up * * @markup - *
- *
Grid Item
- *
Grid Item
+ *
+ *
Grid Item
+ *
Grid Item
*
*/ - @media (min-width: $breakpoint-s) { - @for $i from 1 through $o-grid-item-count { - .o-grid__item--s--#{$i} { - width: ($o-grid-base-size * $i); - } - } - } } @@ -89,25 +77,23 @@ $o-grid-base-size: (100% / $o-grid-item-count); * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
*
*/ @media (min-width: $breakpoint-m) { .o-grid { - margin-left: -$o-grid-spacing-m; - } - - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-m; + &.o-grid--spaced { + margin-left: -$o-grid-spacing-m; + } } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--m--#{$i} { - width: ($o-grid-base-size * $i); + .o-grid__item { + .o-grid--spaced & { + padding-left: $o-grid-spacing-m; } } } @@ -123,25 +109,23 @@ $o-grid-base-size: (100% / $o-grid-item-count); * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * * @markup - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
*
*/ @media (min-width: $breakpoint-l) { .o-grid { - margin-left: -$o-grid-spacing-l; - } - - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-l; + &.o-grid--spaced { + margin-left: -$o-grid-spacing-l; + } } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--l--#{$i} { - width: ($o-grid-base-size * $i); + .o-grid__item { + .o-grid--spaced & { + padding-left: $o-grid-spacing-l; } } } @@ -158,24 +142,22 @@ $o-grid-base-size: (100% / $o-grid-item-count); * * @markup *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
*
*/ @media (min-width: $breakpoint-xl) { .o-grid { - margin-left: -$o-grid-spacing-xl; - } - - [class*='o-grid__item'] { - padding-left: $o-grid-spacing-xl; + &.o-grid--spaced { + margin-left: -$o-grid-spacing-xl; + } } - @for $i from 1 through $o-grid-item-count { - .o-grid__item--xl--#{$i} { - width: ($o-grid-base-size * $i); + .o-grid__item { + .o-grid--spaced & { + padding-left: $o-grid-spacing-xl; } } } From 6d74e4db6b4a02751060b73de1103a504a55aa29 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 20:40:39 +0200 Subject: [PATCH 025/355] added dependency to the width utility package and implemented it in the demos --- packages/utility-offset/bower.json | 3 ++- packages/utility-offset/scss/_offset.scss | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json index b5e04d8..6649f35 100644 --- a/packages/utility-offset/bower.json +++ b/packages/utility-offset/bower.json @@ -22,6 +22,7 @@ "dependencies": { "avalanche_function_strip_unit": "dev", "avalanche_system_variable": "dev", - "avalanche_object_grid": "dev" + "avalanche_object_grid": "dev", + "avalanche_utility_width": "dev" } } diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 3ed5ab8..f72ab4a 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -23,7 +23,7 @@ $u-offset-size-xl: true !default; * * @markup *
- *
Grid Item with offset
+ *
Grid Item with offset
*
*/ $u-offset-base-size: (100% / $u-offset-item-count); @@ -45,7 +45,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @markup *
- *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-s) { @@ -68,8 +68,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @markup *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-m) { @@ -92,8 +92,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @markup *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-l) { @@ -116,8 +116,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @markup *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-xl) { From 812300b1e267ce3f27f35f641b13a47ba58b06d7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 4 May 2015 20:56:27 +0200 Subject: [PATCH 026/355] fixed README text --- packages/avalanchesass-utility-grid/README.md | 6 +++--- packages/avalanchesass-utility-grid/bower.json | 11 +++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-grid/README.md index eff6711..c58856a 100644 --- a/packages/avalanchesass-utility-grid/README.md +++ b/packages/avalanchesass-utility-grid/README.md @@ -1,6 +1,6 @@ -# avalanche: Utility offset -Offset classes -https://github.com/avalanchesass/avalanche_utility_offset +# avalanche: Utility width +Width classes +https://github.com/avalanchesass/avalanche_utility_width ### Author Markus Oberlehner diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json index b5e04d8..1d17bb5 100644 --- a/packages/avalanchesass-utility-grid/bower.json +++ b/packages/avalanchesass-utility-grid/bower.json @@ -1,15 +1,14 @@ { - "name": "avalanche: Utility offset", - "version": "2.0.0", - "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", + "name": "avalanche: Utility width", + "version": "2.0.1", + "homepage": "https://github.com/avalanchesass/avalanche_utility_width", "authors": [ "Markus Oberlehner" ], - "description": "Offset classes", + "description": "Width classes", "keywords": [ "SASS", - "CSS", - "Grid" + "CSS" ], "license": "GPL v2", "ignore": [ From 7ca8671d4223fcf9e830293f91f643b2ec9ee1b6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 19:43:42 +0200 Subject: [PATCH 027/355] initial commit --- packages/object-island/.gitignore | 3 + packages/object-island/LICENSE | 340 +++++++++++++++++++++++ packages/object-island/README.md | 10 + packages/object-island/bower.json | 24 ++ packages/object-island/scss/_island.scss | 202 ++++++++++++++ 5 files changed, 579 insertions(+) create mode 100644 packages/object-island/.gitignore create mode 100644 packages/object-island/LICENSE create mode 100644 packages/object-island/README.md create mode 100644 packages/object-island/bower.json create mode 100644 packages/object-island/scss/_island.scss diff --git a/packages/object-island/.gitignore b/packages/object-island/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/object-island/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/object-island/LICENSE b/packages/object-island/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/object-island/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/object-island/README.md b/packages/object-island/README.md new file mode 100644 index 0000000..4fc8711 --- /dev/null +++ b/packages/object-island/README.md @@ -0,0 +1,10 @@ +# avalanche: Object island +Island object for boxed-off content +https://github.com/avalanchesass/avalanche_object_island + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json new file mode 100644 index 0000000..c4a83a0 --- /dev/null +++ b/packages/object-island/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Object island", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_object_island", + "authors": [ + "Markus Oberlehner" + ], + "description": "Island object for boxed-off content", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "^2.0.0" + } +} diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss new file mode 100644 index 0000000..b355962 --- /dev/null +++ b/packages/object-island/scss/_island.scss @@ -0,0 +1,202 @@ +/** + * @name Island + * @level X.X. + */ +/** + * Variables + */ +// Functions +$o-island-function-positive: true; +$o-island-function-neutral: true; +$o-island-function-cautious: true; +$o-island-function-negative: true; + +// Color scheme +$o-island-cs-a: true; +$o-island-cs-b: true; +$o-island-cs-c: true; +$o-island-cs-d: true; +$o-island-cs-e: true; + + + +/** + * @name Base + * @level X.X.X. + * @description + * A single class used to box off content, leaving it closed on all sides like, well, an island. + * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) + * + * @markup + *
+ * Island + *
+ */ +.o-island { + display: block; + padding: $spacing-m; + background: $cs-grey-a; + & > :last-child { + margin-bottom: 0; + } +} + + + +/** + * @name Functions + * @level X.X.X. + */ +@if $o-island-function-positive { + /** + * @name Positive + * @level X.X.X.X. + * @description + * Positive actions; e.g. sign in, purchase, submit, etc. + * + * @markup + *
+ * Positive Island + *
+ */ + .o-island--positive { + background: mix($cs-positive, #fff, 20%); + color: $cs-positive; + } +} + +@if $o-island-function-neutral { + /** + * @name Neutral + * @level X.X.X.X. + * + * @markup + *
+ * Neutral Island + *
+ */ + .o-island--neutral { + background: mix($cs-neutral, #fff, 20%); + color: $cs-neutral; + } +} + +@if $o-island-function-cautious { + /** + * @name Cautious + * @level X.X.X.X. + * + * @markup + *
+ * Cautious Island + *
+ */ + .o-island--cautious { + background: mix($cs-cautious, #fff, 20%); + color: $cs-cautious; + } +} + +@if $o-island-function-negative { + /** + * @name Negative + * @level X.X.X.X. + * @description + * Negative actions; e.g. close account, delete photo, remove friend, etc. + * + * @markup + *
+ * Negative Island + *
+ */ + .o-island--negative { + background: mix($cs-negative, #fff, 20%); + color: $cs-negative; + } +} + + + +/** + * @name Color scheme + * @level X.X.X. + */ +@if $o-island-cs-a { + /** + * @name cs-a + * @level X.X.X.X. + * + * @markup + *
+ * cs-a Island + *
+ */ + .o-island--cs-a { + background: $cs-a; + color: $cs-a-contrast; + } +} + +@if $o-island-cs-b { + /** + * @name cs-b + * @level X.X.X.X. + * + * @markup + *
+ * cs-b Island + *
+ */ + .o-island--cs-b { + background: $cs-b; + color: $cs-b-contrast; + } +} + +@if $o-island-cs-c { + /** + * @name cs-c + * @level X.X.X.X. + * + * @markup + *
+ * cs-c Island + *
+ */ + .o-island--cs-c { + background: $cs-c; + color: $cs-c-contrast; + } +} + +@if $o-island-cs-d { + /** + * @name cs-d + * @level X.X.X.X. + * + * @markup + *
+ * cs-d Island + *
+ */ + .o-island--cs-d { + background: $cs-d; + color: $cs-d-contrast; + } +} + +@if $o-island-cs-e { + /** + * @name cs-e + * @level X.X.X.X. + * + * @markup + *
+ * cs-e Island + *
+ */ + .o-island--cs-e { + background: $cs-e; + color: $cs-e-contrast; + } +} From 953e3ff31504e16a7bafc43f7608769ea306dcea Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 19:52:34 +0200 Subject: [PATCH 028/355] initial commit --- packages/object-media/.gitignore | 3 + packages/object-media/LICENSE | 340 +++++++++++++++++++++++++ packages/object-media/README.md | 10 + packages/object-media/bower.json | 24 ++ packages/object-media/scss/_media.scss | 72 ++++++ 5 files changed, 449 insertions(+) create mode 100644 packages/object-media/.gitignore create mode 100644 packages/object-media/LICENSE create mode 100644 packages/object-media/README.md create mode 100644 packages/object-media/bower.json create mode 100644 packages/object-media/scss/_media.scss diff --git a/packages/object-media/.gitignore b/packages/object-media/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/object-media/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/object-media/LICENSE b/packages/object-media/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/object-media/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/object-media/README.md b/packages/object-media/README.md new file mode 100644 index 0000000..4a26afe --- /dev/null +++ b/packages/object-media/README.md @@ -0,0 +1,10 @@ +# avalanche: Object media +Image on one side, with descriptive content on the other side +https://github.com/avalanchesass/avalanche_object_media + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/object-media/bower.json b/packages/object-media/bower.json new file mode 100644 index 0000000..a3f630e --- /dev/null +++ b/packages/object-media/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Object media", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_object_media", + "authors": [ + "Markus Oberlehner" + ], + "description": "Image on one side, with descriptive content on the other side", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "^2.0.0" + } +} diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss new file mode 100644 index 0000000..41ffe60 --- /dev/null +++ b/packages/object-media/scss/_media.scss @@ -0,0 +1,72 @@ +/** + * @name Media + * @level X.X. + */ +/** + * @name Base + * @level X.X.X. + * @description + * The media object is an image on one side, with descriptive content on the other side. + * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) + * + * @markup + *
+ *
+ * + *
+ *
+ * Lorem ipsum dolor sit... + *
+ *
+ *
+ *
+ * + *
+ *
+ * Lorem ipsum dolor sit... + *
+ *
+ */ +.o-media { + @include u-clearfix(); +} + +.o-media__figure, +.o-media__figure-rev { + img { + display: block; + } +} + +.o-media__figure { + float: left; + margin-right: $spacing-m; +} + +.o-media__body { + overflow: hidden; +} + +/** + * Reversed image location (right instead of left). + */ +.o-media__figure-rev { + float: right; + margin-left: $spacing-m; +} + +/** + * Reset media styling on small screens + */ +@media (max-width: $breakpoint-max-m) { + .o-media--mobile-reset { + .o-media__figure { + float: none; + margin-right: 0; + } + .o-media__figure-rev { + float: none; + margin-left: 0; + } + } +} From a7ddbd6f1258b4647376c8631168ed4e987b9dcd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:00:52 +0200 Subject: [PATCH 029/355] initial commit --- packages/utility-visibility/.gitignore | 3 + packages/utility-visibility/LICENSE | 340 ++++++++++++++++++ packages/utility-visibility/README.md | 10 + packages/utility-visibility/bower.json | 21 ++ .../utility-visibility/scss/_visibility.scss | 66 ++++ 5 files changed, 440 insertions(+) create mode 100644 packages/utility-visibility/.gitignore create mode 100644 packages/utility-visibility/LICENSE create mode 100644 packages/utility-visibility/README.md create mode 100644 packages/utility-visibility/bower.json create mode 100644 packages/utility-visibility/scss/_visibility.scss diff --git a/packages/utility-visibility/.gitignore b/packages/utility-visibility/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/utility-visibility/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/utility-visibility/LICENSE b/packages/utility-visibility/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-visibility/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-visibility/README.md b/packages/utility-visibility/README.md new file mode 100644 index 0000000..13ba891 --- /dev/null +++ b/packages/utility-visibility/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility visibility +CSS visibility utilities +https://github.com/avalanchesass/avalanche_utility_visibility + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-visibility/bower.json b/packages/utility-visibility/bower.json new file mode 100644 index 0000000..d052b0a --- /dev/null +++ b/packages/utility-visibility/bower.json @@ -0,0 +1,21 @@ +{ + "name": "avalanche: Utility visibility", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_visibility", + "authors": [ + "Markus Oberlehner" + ], + "description": "CSS visibility utilities", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/packages/utility-visibility/scss/_visibility.scss b/packages/utility-visibility/scss/_visibility.scss new file mode 100644 index 0000000..3767499 --- /dev/null +++ b/packages/utility-visibility/scss/_visibility.scss @@ -0,0 +1,66 @@ +/** + * @name Visibility + * @level X.X. + */ +/** + * @name .hidden + * @level X.X.X. + * @description + * Hide from both screenreaders and browsers: h5bp.com/u + */ +@mixin u-hidden() { + display: none !important; + visibility: hidden; +} + +.u-hidden { + @include u-hidden(); +} + + + +/** + * @name .visuallyhidden + * @level X.X.X. + * @description + * Hide only visually, but have it available for screenreaders: h5bp.com/v + */ +@mixin u-visuallyhidden() { + position: absolute; + overflow: hidden; + clip: rect(0 0 0 0); + margin: -1px; + padding: 0; + width: 1px; + height: 1px; + border: 0; + &.is-focusable:active, + &.is-focusable:focus { + position: static; + overflow: visible; + clip: auto; + margin: 0; + width: auto; + height: auto; + } +} + +.u-visuallyhidden { + @include u-visuallyhidden(); +} + + + +/** + * @name .invisible + * @level X.X.X. + * @description + * Hide visually and from screenreaders, but maintain layout + */ +@mixin u-invisible() { + visibility: hidden; +} + +.u-invisible { + @include u-invisible(); +} From 7a1e6a391a0a9f77e17324ec5316f1ff52e89b99 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:14:34 +0200 Subject: [PATCH 030/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/utility-spacing/bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json index fb71a28..febd129 100644 --- a/packages/utility-spacing/bower.json +++ b/packages/utility-spacing/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility spacing", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "authors": [ "Markus Oberlehner" @@ -19,6 +19,6 @@ "tests" ], "dependencies": { - "avalanche_system_variable": "dev" + "avalanche_system_variable": "^2.0.0" } } From 025eed392cba265407d7d61961364b99417ba193 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:23:10 +0200 Subject: [PATCH 031/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/utility-font-family/bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json index e58c687..fc9f117 100644 --- a/packages/utility-font-family/bower.json +++ b/packages/utility-font-family/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility font family", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", "authors": [ "Markus Oberlehner" @@ -19,6 +19,6 @@ "tests" ], "dependencies": { - "avalanche_system_variable": "dev" + "avalanche_system_variable": "^2.0.0" } } From 1e5ad9727da8b08d14339228d8b0e08aabe3e8f0 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:28:07 +0200 Subject: [PATCH 032/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/generic-box-sizing-reset/bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json index b7bda74..478b1ee 100644 --- a/packages/generic-box-sizing-reset/bower.json +++ b/packages/generic-box-sizing-reset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Base layout", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_base_layout", "authors": [ "Markus Oberlehner" @@ -19,6 +19,6 @@ "tests" ], "dependencies": { - "avalanche_system_variable": "dev" + "avalanche_system_variable": "^2.0.0" } } From b9e7f3a4fc74950838e6391374353386cbe06af5 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:36:57 +0200 Subject: [PATCH 033/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/avalanchesass-object-grid/bower.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 7782905..a6e27ad 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object grid", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "authors": [ "Markus Oberlehner" @@ -20,9 +20,9 @@ "tests" ], "dependencies": { - "avalanche_function_strip_unit": "dev", - "avalanche_system_variable": "dev", - "avalanche_utility_clearfix": "dev", - "avalanche_utility_width": "dev" + "avalanche_function_strip_unit": "^2.0.0", + "avalanche_system_variable": "^2.0.0", + "avalanche_utility_clearfix": "^2.0.0", + "avalanche_utility_width": "^2.0.0" } } From 65d097c0c34334340944e02e728795bd78e9f919 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:42:57 +0200 Subject: [PATCH 034/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/utility-offset/bower.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json index 6649f35..f3d9aea 100644 --- a/packages/utility-offset/bower.json +++ b/packages/utility-offset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility offset", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", "authors": [ "Markus Oberlehner" @@ -20,9 +20,9 @@ "tests" ], "dependencies": { - "avalanche_function_strip_unit": "dev", - "avalanche_system_variable": "dev", - "avalanche_object_grid": "dev", - "avalanche_utility_width": "dev" + "avalanche_function_strip_unit": "^2.0.0", + "avalanche_system_variable": "^2.0.0", + "avalanche_object_grid": "^2.0.0", + "avalanche_utility_width": "^2.0.0" } } From f2fdedf02cc479bc37fc3a85dddb27e5c899e416 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:47:06 +0200 Subject: [PATCH 035/355] specified version numbers of bower dependencies, and bumped version nr in bower.json --- packages/avalanchesass-utility-grid/bower.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json index 1d17bb5..3d01bc2 100644 --- a/packages/avalanchesass-utility-grid/bower.json +++ b/packages/avalanchesass-utility-grid/bower.json @@ -19,8 +19,8 @@ "tests" ], "dependencies": { - "avalanche_function_strip_unit": "dev", - "avalanche_system_variable": "dev", - "avalanche_object_grid": "dev" + "avalanche_function_strip_unit": "^2.0.0", + "avalanche_system_variable": "^2.0.0", + "avalanche_object_grid": "^2.0.0" } } From 84860da2748bfa1e3908e054259191e4283366db Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 11 May 2015 20:50:21 +0200 Subject: [PATCH 036/355] fixed bower.json version number --- packages/avalanchesass-utility-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json index 3d01bc2..aac02f9 100644 --- a/packages/avalanchesass-utility-grid/bower.json +++ b/packages/avalanchesass-utility-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility width", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_utility_width", "authors": [ "Markus Oberlehner" From 137d20f3ec8a93e266586552225a422701bb083b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 May 2015 00:44:33 +0200 Subject: [PATCH 037/355] fixed grid__item class name in the demo for the xl size --- packages/avalanchesass-object-grid/scss/_grid.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index e548c36..3dcaf99 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -142,10 +142,10 @@ $o-grid-spacing-xl: $spacing-m !default; * * @markup *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
+ *
Grid Item
*
*/ @media (min-width: $breakpoint-xl) { From 9d79b9ee998b5fd8b412eda7c602e9bff2bcfe49 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:25:40 +0200 Subject: [PATCH 038/355] changed comment section @markup to more semantic @code --- packages/avalanchesass-utility-grid/scss/_width.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss index 264b20a..7c01414 100644 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -21,7 +21,7 @@ $u-width-size-xl: true !default; * @description * Mobile first styles for all screen sizes * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -44,7 +44,7 @@ $u-width-base-size: (100% / $u-width-item-count); * @description * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -68,7 +68,7 @@ $u-width-base-size: (100% / $u-width-item-count); * @description * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -94,7 +94,7 @@ $u-width-base-size: (100% / $u-width-item-count); * @description * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -120,7 +120,7 @@ $u-width-base-size: (100% / $u-width-item-count); * @description * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
From 3516bfdfd94d87733e3008968f155478c191d58d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:26:32 +0200 Subject: [PATCH 039/355] changed comment section @markup to more semantic @code --- packages/utility-offset/scss/_offset.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index f72ab4a..3b5776b 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -21,7 +21,7 @@ $u-offset-size-xl: true !default; * @description * Mobile first styles for all screen sizes * - * @markup + * @code *
*
Grid Item with offset
*
@@ -43,7 +43,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * @description * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item with offset
*
@@ -66,7 +66,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * @description * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item with offset
*
Grid Item with offset
@@ -90,7 +90,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * @description * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item with offset
*
Grid Item with offset
@@ -114,7 +114,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * @description * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item with offset
*
Grid Item with offset
From 636d19ce2e6952f2207047c88489b3bc8667fa4d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:28:35 +0200 Subject: [PATCH 040/355] changed comment section @markup to more semantic @code --- packages/object-media/scss/_media.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss index 41ffe60..b7c97e5 100644 --- a/packages/object-media/scss/_media.scss +++ b/packages/object-media/scss/_media.scss @@ -9,7 +9,7 @@ * The media object is an image on one side, with descriptive content on the other side. * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) * - * @markup + * @code *
*
* From 7d30588cd28589073c91d4560be805b9bc95f96f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:28:50 +0200 Subject: [PATCH 041/355] changed comment section @markup to more semantic @code --- packages/object-island/scss/_island.scss | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index b355962..d49abfc 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -27,7 +27,7 @@ $o-island-cs-e: true; * A single class used to box off content, leaving it closed on all sides like, well, an island. * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) * - * @markup + * @code *
* Island *
@@ -54,7 +54,7 @@ $o-island-cs-e: true; * @description * Positive actions; e.g. sign in, purchase, submit, etc. * - * @markup + * @code *
* Positive Island *
@@ -70,7 +70,7 @@ $o-island-cs-e: true; * @name Neutral * @level X.X.X.X. * - * @markup + * @code *
* Neutral Island *
@@ -86,7 +86,7 @@ $o-island-cs-e: true; * @name Cautious * @level X.X.X.X. * - * @markup + * @code *
* Cautious Island *
@@ -104,7 +104,7 @@ $o-island-cs-e: true; * @description * Negative actions; e.g. close account, delete photo, remove friend, etc. * - * @markup + * @code *
* Negative Island *
@@ -126,7 +126,7 @@ $o-island-cs-e: true; * @name cs-a * @level X.X.X.X. * - * @markup + * @code *
* cs-a Island *
@@ -142,7 +142,7 @@ $o-island-cs-e: true; * @name cs-b * @level X.X.X.X. * - * @markup + * @code *
* cs-b Island *
@@ -158,7 +158,7 @@ $o-island-cs-e: true; * @name cs-c * @level X.X.X.X. * - * @markup + * @code *
* cs-c Island *
@@ -174,7 +174,7 @@ $o-island-cs-e: true; * @name cs-d * @level X.X.X.X. * - * @markup + * @code *
* cs-d Island *
@@ -190,7 +190,7 @@ $o-island-cs-e: true; * @name cs-e * @level X.X.X.X. * - * @markup + * @code *
* cs-e Island *
From a9a478f2a80bb16bdb2e3b9d7b1845101a2b840f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:29:32 +0200 Subject: [PATCH 042/355] changed comment section @markup to more semantic @code --- packages/avalanchesass-object-grid/scss/_grid.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 3dcaf99..a2bb767 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -27,7 +27,7 @@ $o-grid-spacing-xl: $spacing-m !default; * @description * Mobile first styles for all screen sizes * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -59,7 +59,7 @@ $o-grid-spacing-xl: $spacing-m !default; * @description * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -76,7 +76,7 @@ $o-grid-spacing-xl: $spacing-m !default; * @description * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -108,7 +108,7 @@ $o-grid-spacing-xl: $spacing-m !default; * @description * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
@@ -140,7 +140,7 @@ $o-grid-spacing-xl: $spacing-m !default; * @description * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up * - * @markup + * @code *
*
Grid Item
*
Grid Item
From 75f7631721c8798dd1c35f7380c7c5daf6e75edd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:37:30 +0200 Subject: [PATCH 043/355] added a description to the inline documentation --- packages/generic-box-sizing-reset/scss/_layout.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss index 99b3eb3..1eec668 100644 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -1,6 +1,8 @@ /** * @name Layout * @level X.X. + * @description + * Styles that influence basic layout */ /** * @name Box sizing reset From 0e047307b6687dab92727972b8d61b0b462dc6e9 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 21:50:06 +0200 Subject: [PATCH 044/355] added a code example to the inline documentation --- .../utility-font-family/scss/_font_family.scss | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index a9a421c..31da4d4 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -1,6 +1,8 @@ /** * @name Font family * @level X.X. + * @description + * Font family classes */ @function font-family-find-normal-weight($font-family) { @if variable-exists(font-a-family) and $font-family == $font-a-family { @@ -32,11 +34,23 @@ } } + /** + * @code + *
+ * Lorem ipsum dolor (#{$font-a-family}) + *
+ */ .u-font-family-a { @include u-font-family(); } @if variable-exists(font-b-family) { + /** + * @code + *
+ * Lorem ipsum dolor (#{$font-b-family}) + *
+ */ .u-font-family-b { @include u-font-family($font-b-family); } From 47baadd8d8bea5a28c163fe43425026a94e48a8e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 13 May 2015 22:12:51 +0200 Subject: [PATCH 045/355] added a description to the inline documentation and made the grid items better visible --- packages/utility-offset/scss/_offset.scss | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 3b5776b..7ca3519 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -1,6 +1,8 @@ /** * @name Offset * @level X.X. + * @description + * Offset classes mainly (but not exclusively) to be used in grids */ /** * Variables @@ -23,7 +25,7 @@ $u-offset-size-xl: true !default; * * @code *
- *
Grid Item with offset
+ *
Grid Item with offset
*
*/ $u-offset-base-size: (100% / $u-offset-item-count); @@ -45,7 +47,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-s) { @@ -68,8 +70,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-m) { @@ -92,8 +94,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-l) { @@ -116,8 +118,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid Item with offset
+ *
Grid Item with offset
*
*/ @media (min-width: $breakpoint-xl) { From 2f0c897573943b3d76b10601f9a7d794c0e887d2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:14:40 +0200 Subject: [PATCH 046/355] added a code example to the inline documentation --- packages/utility-spacing/scss/_spacing.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss index 7d32882..ffbcd9b 100644 --- a/packages/utility-spacing/scss/_spacing.scss +++ b/packages/utility-spacing/scss/_spacing.scss @@ -1,6 +1,15 @@ /** * @name Spacing * @level X.X. + * @description + * Let elements "breath" with some spacing + * + * @code + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
*/ @mixin u-spacing-wrap($spacing: $spacing-m) { > * + * { From 862fd53389477b6eb4d26051578065202a2b3620 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:22:48 +0200 Subject: [PATCH 047/355] added a code example to the inline documentation --- .../utility-visibility/scss/_visibility.scss | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/utility-visibility/scss/_visibility.scss b/packages/utility-visibility/scss/_visibility.scss index 3767499..c1068cf 100644 --- a/packages/utility-visibility/scss/_visibility.scss +++ b/packages/utility-visibility/scss/_visibility.scss @@ -1,12 +1,19 @@ /** * @name Visibility * @level X.X. + * @description + * Classes to hide content with accessibility in mind */ /** - * @name .hidden + * @name .u-hidden * @level X.X.X. * @description - * Hide from both screenreaders and browsers: h5bp.com/u + * Hide from both screenreaders and browsers: [h5bp.com/u](http://h5bp.com/u) + * + * @code + *
+ * Nobody can see me + *
*/ @mixin u-hidden() { display: none !important; @@ -20,10 +27,15 @@ /** - * @name .visuallyhidden + * @name .u-visuallyhidden * @level X.X.X. * @description - * Hide only visually, but have it available for screenreaders: h5bp.com/v + * Hide only visually, but have it available for screenreaders: [h5bp.com/v](http://h5bp.com/v) + * + * @code + *
+ * Only screenreader users will notice me + *
*/ @mixin u-visuallyhidden() { position: absolute; @@ -52,10 +64,15 @@ /** - * @name .invisible + * @name .u-invisible * @level X.X.X. * @description * Hide visually and from screenreaders, but maintain layout + * + * @code + *
+ * Nobody can see my contents but im still here, somehow + *
*/ @mixin u-invisible() { visibility: hidden; From 116f96bc18ce4555640c7820732e2d94a3b42588 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:25:25 +0200 Subject: [PATCH 048/355] removed extra styling for :last-child elements inside an island element - is not necessary because of the enhanced spacing system --- packages/object-island/scss/_island.scss | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index d49abfc..4b561a0 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -36,9 +36,6 @@ $o-island-cs-e: true; display: block; padding: $spacing-m; background: $cs-grey-a; - & > :last-child { - margin-bottom: 0; - } } From fcb10b56e90616329d1b6e8f93cb247d2f04cf99 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:31:04 +0200 Subject: [PATCH 049/355] changed 'Grid Item' to 'Grid item' --- packages/utility-offset/scss/_offset.scss | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 7ca3519..3decea8 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -25,7 +25,7 @@ $u-offset-size-xl: true !default; * * @code *
- *
Grid Item with offset
+ *
Grid item with offset
*
*/ $u-offset-base-size: (100% / $u-offset-item-count); @@ -47,7 +47,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
+ *
Grid item with offset
*
*/ @media (min-width: $breakpoint-s) { @@ -70,8 +70,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid item with offset
+ *
Grid item with offset
*
*/ @media (min-width: $breakpoint-m) { @@ -94,8 +94,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid item with offset
+ *
Grid item with offset
*
*/ @media (min-width: $breakpoint-l) { @@ -118,8 +118,8 @@ $u-offset-base-size: (100% / $u-offset-item-count); * * @code *
- *
Grid Item with offset
- *
Grid Item with offset
+ *
Grid item with offset
+ *
Grid item with offset
*
*/ @media (min-width: $breakpoint-xl) { From 1b5ccbc05ce81d0ab1046bb587361eb4d5c284c7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:32:10 +0200 Subject: [PATCH 050/355] enhanced inline documentation --- .../scss/_width.scss | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss index 7c01414..1243373 100644 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -1,6 +1,8 @@ /** * @name Width * @level X.X. + * @description + * Width classes mainly (but not exclusively) to be used in grids */ /** * Variables @@ -23,8 +25,8 @@ $u-width-size-xl: true !default; * * @code *
- *
Grid Item
- *
Grid Item
+ *
Width item
+ *
Width item
*
*/ $u-width-base-size: (100% / $u-width-item-count); @@ -46,8 +48,8 @@ $u-width-base-size: (100% / $u-width-item-count); * * @code *
- *
Grid Item
- *
Grid Item
+ *
Width item
+ *
Width item
*
*/ @media (min-width: $breakpoint-s) { @@ -70,10 +72,10 @@ $u-width-base-size: (100% / $u-width-item-count); * * @code *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
*
*/ @media (min-width: $breakpoint-m) { @@ -96,10 +98,10 @@ $u-width-base-size: (100% / $u-width-item-count); * * @code *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
*
*/ @media (min-width: $breakpoint-l) { @@ -122,10 +124,10 @@ $u-width-base-size: (100% / $u-width-item-count); * * @code *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
*
*/ @media (min-width: $breakpoint-xl) { From 3b77b889869ea4da355f5d3835def933610e64f8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:37:50 +0200 Subject: [PATCH 051/355] enhanced inline documentation --- .../avalanchesass-object-grid/scss/_grid.scss | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index a2bb767..6e92ac2 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,6 +1,8 @@ /** * @name Grid * @level X.X. + * @description + * Fluid width, responsive grid system */ /** * Variables @@ -29,8 +31,8 @@ $o-grid-spacing-xl: $spacing-m !default; * * @code *
- *
Grid Item
- *
Grid Item
+ *
Grid item
+ *
Grid item
*
*/ .o-grid { @@ -61,8 +63,8 @@ $o-grid-spacing-xl: $spacing-m !default; * * @code *
- *
Grid Item
- *
Grid Item
+ *
Grid item
+ *
Grid item
*
*/ } @@ -78,10 +80,10 @@ $o-grid-spacing-xl: $spacing-m !default; * * @code *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
*
*/ @media (min-width: $breakpoint-m) { @@ -110,10 +112,10 @@ $o-grid-spacing-xl: $spacing-m !default; * * @code *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
*
*/ @media (min-width: $breakpoint-l) { @@ -141,11 +143,11 @@ $o-grid-spacing-xl: $spacing-m !default; * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up * * @code - *
- *
Grid Item
- *
Grid Item
- *
Grid Item
- *
Grid Item
+ *
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
*
*/ @media (min-width: $breakpoint-xl) { From 9e49758bdf385715ae1c02a979cc48e60d1b73d2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:43:53 +0200 Subject: [PATCH 052/355] enhanced inline documentation --- packages/object-island/scss/_island.scss | 169 +++++++++++------------ 1 file changed, 81 insertions(+), 88 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index 4b561a0..8e65724 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -1,16 +1,13 @@ /** * @name Island * @level X.X. + * @description + * A single class used to box off content, leaving it closed on all sides like, well, an island. + * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) */ /** * Variables */ -// Functions -$o-island-function-positive: true; -$o-island-function-neutral: true; -$o-island-function-cautious: true; -$o-island-function-negative: true; - // Color scheme $o-island-cs-a: true; $o-island-cs-b: true; @@ -18,15 +15,17 @@ $o-island-cs-c: true; $o-island-cs-d: true; $o-island-cs-e: true; +// Functions +$o-island-function-positive: true; +$o-island-function-neutral: true; +$o-island-function-cautious: true; +$o-island-function-negative: true; + /** * @name Base * @level X.X.X. - * @description - * A single class used to box off content, leaving it closed on all sides like, well, an island. - * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) - * * @code *
* Island @@ -36,79 +35,8 @@ $o-island-cs-e: true; display: block; padding: $spacing-m; background: $cs-grey-a; -} - - - -/** - * @name Functions - * @level X.X.X. - */ -@if $o-island-function-positive { - /** - * @name Positive - * @level X.X.X.X. - * @description - * Positive actions; e.g. sign in, purchase, submit, etc. - * - * @code - *
- * Positive Island - *
- */ - .o-island--positive { - background: mix($cs-positive, #fff, 20%); - color: $cs-positive; - } -} - -@if $o-island-function-neutral { - /** - * @name Neutral - * @level X.X.X.X. - * - * @code - *
- * Neutral Island - *
- */ - .o-island--neutral { - background: mix($cs-neutral, #fff, 20%); - color: $cs-neutral; - } -} - -@if $o-island-function-cautious { - /** - * @name Cautious - * @level X.X.X.X. - * - * @code - *
- * Cautious Island - *
- */ - .o-island--cautious { - background: mix($cs-cautious, #fff, 20%); - color: $cs-cautious; - } -} - -@if $o-island-function-negative { - /** - * @name Negative - * @level X.X.X.X. - * @description - * Negative actions; e.g. close account, delete photo, remove friend, etc. - * - * @code - *
- * Negative Island - *
- */ - .o-island--negative { - background: mix($cs-negative, #fff, 20%); - color: $cs-negative; + & > :last-child { + margin-bottom: 0; } } @@ -117,12 +45,13 @@ $o-island-cs-e: true; /** * @name Color scheme * @level X.X.X. + * @description + * Islands using the base color scheme */ @if $o-island-cs-a { /** * @name cs-a * @level X.X.X.X. - * * @code *
* cs-a Island @@ -138,7 +67,6 @@ $o-island-cs-e: true; /** * @name cs-b * @level X.X.X.X. - * * @code *
* cs-b Island @@ -154,7 +82,6 @@ $o-island-cs-e: true; /** * @name cs-c * @level X.X.X.X. - * * @code *
* cs-c Island @@ -170,7 +97,6 @@ $o-island-cs-e: true; /** * @name cs-d * @level X.X.X.X. - * * @code *
* cs-d Island @@ -186,7 +112,6 @@ $o-island-cs-e: true; /** * @name cs-e * @level X.X.X.X. - * * @code *
* cs-e Island @@ -197,3 +122,71 @@ $o-island-cs-e: true; color: $cs-e-contrast; } } + + + +/** + * @name Functions + * @level X.X.X. + * @description + * Islands using the function color scheme + */ +@if $o-island-function-positive { + /** + * @name Positive + * @level X.X.X.X. + * @code + *
+ * Positive Island + *
+ */ + .o-island--positive { + background: mix($cs-positive, #fff, 20%); + color: $cs-positive; + } +} + +@if $o-island-function-neutral { + /** + * @name Neutral + * @level X.X.X.X. + * @code + *
+ * Neutral Island + *
+ */ + .o-island--neutral { + background: mix($cs-neutral, #fff, 20%); + color: $cs-neutral; + } +} + +@if $o-island-function-cautious { + /** + * @name Cautious + * @level X.X.X.X. + * @code + *
+ * Cautious Island + *
+ */ + .o-island--cautious { + background: mix($cs-cautious, #fff, 20%); + color: $cs-cautious; + } +} + +@if $o-island-function-negative { + /** + * @name Negative + * @level X.X.X.X. + * @code + *
+ * Negative Island + *
+ */ + .o-island--negative { + background: mix($cs-negative, #fff, 20%); + color: $cs-negative; + } +} From f84043b529de515131d924cff95e2350b0595dff Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 10:48:54 +0200 Subject: [PATCH 053/355] enhanced inline documentation --- packages/object-media/scss/_media.scss | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss index b7c97e5..d591473 100644 --- a/packages/object-media/scss/_media.scss +++ b/packages/object-media/scss/_media.scss @@ -1,14 +1,13 @@ /** * @name Media * @level X.X. + * @description + * The media object is an image on one side, with descriptive content on the other side. + * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) */ /** * @name Base * @level X.X.X. - * @description - * The media object is an image on one side, with descriptive content on the other side. - * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) - * * @code *
*
From c31bc5c819d1ca6f096dd230cca1b1cf689766a9 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 11:30:19 +0200 Subject: [PATCH 054/355] bumped version number --- packages/generic-box-sizing-reset/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json index 478b1ee..600b1a2 100644 --- a/packages/generic-box-sizing-reset/bower.json +++ b/packages/generic-box-sizing-reset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Base layout", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_base_layout", "authors": [ "Markus Oberlehner" From ab814010f27600045f7a3bd12e3402a57b5374e4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 11:54:51 +0200 Subject: [PATCH 055/355] bumped version number --- packages/avalanchesass-object-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index a6e27ad..8662243 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object grid", - "version": "2.0.1", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "authors": [ "Markus Oberlehner" From 6e3dfae87f95e863a416253bfe389ed8d11dc17f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 11:58:33 +0200 Subject: [PATCH 056/355] bumped version number --- packages/object-island/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json index c4a83a0..81d6348 100644 --- a/packages/object-island/bower.json +++ b/packages/object-island/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object island", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_object_island", "authors": [ "Markus Oberlehner" From b15c40fe18155fa9dece88f18381be363708d3fb Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:00:09 +0200 Subject: [PATCH 057/355] bumped version number --- packages/object-media/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-media/bower.json b/packages/object-media/bower.json index a3f630e..fe136c5 100644 --- a/packages/object-media/bower.json +++ b/packages/object-media/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object media", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_object_media", "authors": [ "Markus Oberlehner" From 90c588d7877b5e19dac06c972d2fe6a482f2d420 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:08:15 +0200 Subject: [PATCH 058/355] bumped version number --- packages/utility-font-family/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json index fc9f117..15329e5 100644 --- a/packages/utility-font-family/bower.json +++ b/packages/utility-font-family/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility font family", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", "authors": [ "Markus Oberlehner" From 814f38be9eaa1ebb3e6ea7d8660aa34f70e8a676 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:12:48 +0200 Subject: [PATCH 059/355] bumped version number --- packages/utility-offset/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json index f3d9aea..c85f628 100644 --- a/packages/utility-offset/bower.json +++ b/packages/utility-offset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility offset", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", "authors": [ "Markus Oberlehner" From 61d8f73c01104b38c6340e5cbef73479f627f6ce Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:14:36 +0200 Subject: [PATCH 060/355] bumped version number --- packages/utility-spacing/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json index febd129..1d65ac9 100644 --- a/packages/utility-spacing/bower.json +++ b/packages/utility-spacing/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility spacing", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "authors": [ "Markus Oberlehner" From bf3e84fdc4aa71845ee545bdb501d2900389a865 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:16:29 +0200 Subject: [PATCH 061/355] bumped version number --- packages/utility-visibility/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-visibility/bower.json b/packages/utility-visibility/bower.json index d052b0a..4133685 100644 --- a/packages/utility-visibility/bower.json +++ b/packages/utility-visibility/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility visibility", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_utility_visibility", "authors": [ "Markus Oberlehner" From b7174c88cf6a0ef4e9ce7d5c1aa28d47498d9296 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 May 2015 12:20:28 +0200 Subject: [PATCH 062/355] bumped version number --- packages/avalanchesass-utility-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json index aac02f9..736b8e9 100644 --- a/packages/avalanchesass-utility-grid/bower.json +++ b/packages/avalanchesass-utility-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility width", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_utility_width", "authors": [ "Markus Oberlehner" From 0cb7df80f158a623ef93da2ab3c74b952440da2f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 13:59:23 +0200 Subject: [PATCH 063/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- .../scss/_width.scss | 113 +++++++++--------- 1 file changed, 56 insertions(+), 57 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss index 1243373..53e2895 100644 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -1,12 +1,11 @@ /** - * @name Width + * Width + * + * Width classes mainly (but not exclusively) to be used in grids + * * @level X.X. - * @description - * Width classes mainly (but not exclusively) to be used in grids - */ -/** - * Variables */ +// Variables $u-width-item-count: 12 !default; // Sizes @@ -18,16 +17,16 @@ $u-width-size-xl: true !default; /** - * @name Base - * @level X.X.X. - * @description - * Mobile first styles for all screen sizes + * Base * - * @code - *
- *
Width item
- *
Width item
- *
+ * Mobile first styles for all screen sizes + * + * @level X.X.X. + * @markup + *
+ *
Width item
+ *
Width item
+ *
*/ $u-width-base-size: (100% / $u-width-item-count); @@ -41,16 +40,16 @@ $u-width-base-size: (100% / $u-width-item-count); @if $u-width-size-s { /** - * @name Small - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * Small * - * @code - *
- *
Width item
- *
Width item
- *
+ * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Width item
+ *
Width item
+ *
*/ @media (min-width: $breakpoint-s) { @for $i from 1 through $u-width-item-count { @@ -65,18 +64,18 @@ $u-width-base-size: (100% / $u-width-item-count); @if $u-width-size-m { /** - * @name Medium - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up + * Medium + * + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @code - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
+ * @level X.X.X. + * @markup + *
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
*/ @media (min-width: $breakpoint-m) { @for $i from 1 through $u-width-item-count { @@ -91,18 +90,18 @@ $u-width-base-size: (100% / $u-width-item-count); @if $u-width-size-l { /** - * @name Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up + * Large + * + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @code - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
+ * @level X.X.X. + * @markup + *
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
*/ @media (min-width: $breakpoint-l) { @for $i from 1 through $u-width-item-count { @@ -117,18 +116,18 @@ $u-width-base-size: (100% / $u-width-item-count); @if $u-width-size-xl { /** - * @name X-Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * X-Large * - * @code - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
+ * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Width item
+ *
Width item
+ *
Width item
+ *
Width item
+ *
*/ @media (min-width: $breakpoint-xl) { @for $i from 1 through $u-width-item-count { From 55dbdd0b7178b9bf63f8af83713b9e46cb4ab366 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:03:52 +0200 Subject: [PATCH 064/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- .../utility-visibility/scss/_visibility.scss | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/packages/utility-visibility/scss/_visibility.scss b/packages/utility-visibility/scss/_visibility.scss index c1068cf..317cc29 100644 --- a/packages/utility-visibility/scss/_visibility.scss +++ b/packages/utility-visibility/scss/_visibility.scss @@ -1,19 +1,20 @@ /** - * @name Visibility + * Visibility + * + * Classes to hide content with accessibility in mind + * * @level X.X. - * @description - * Classes to hide content with accessibility in mind */ /** - * @name .u-hidden - * @level X.X.X. - * @description - * Hide from both screenreaders and browsers: [h5bp.com/u](http://h5bp.com/u) + * hidden * - * @code - *
- * Nobody can see me - *
+ * Hide from both screenreaders and browsers: [h5bp.com/u](http://h5bp.com/u) + * + * @level X.X.X. + * @markup + *
+ * Nobody can see me + *
*/ @mixin u-hidden() { display: none !important; @@ -27,15 +28,15 @@ /** - * @name .u-visuallyhidden - * @level X.X.X. - * @description - * Hide only visually, but have it available for screenreaders: [h5bp.com/v](http://h5bp.com/v) + * visuallyhidden * - * @code - *
- * Only screenreader users will notice me - *
+ * Hide only visually, but have it available for screenreaders: [h5bp.com/v](http://h5bp.com/v) + * + * @level X.X.X. + * @markup + *
+ * Only screenreader users will notice me + *
*/ @mixin u-visuallyhidden() { position: absolute; @@ -64,15 +65,15 @@ /** - * @name .u-invisible - * @level X.X.X. - * @description - * Hide visually and from screenreaders, but maintain layout + * invisible * - * @code - *
- * Nobody can see my contents but im still here, somehow - *
+ * Hide visually and from screenreaders, but maintain layout + * + * @level X.X.X. + * @markup + *
+ * Nobody can see my contents but im still here, somehow + *
*/ @mixin u-invisible() { visibility: hidden; From ccf3a2f9c179008fe4e379287bc7201b6d999ff3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:05:10 +0200 Subject: [PATCH 065/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- packages/utility-spacing/scss/_spacing.scss | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss index ffbcd9b..7655776 100644 --- a/packages/utility-spacing/scss/_spacing.scss +++ b/packages/utility-spacing/scss/_spacing.scss @@ -1,15 +1,15 @@ /** - * @name Spacing - * @level X.X. - * @description - * Let elements "breath" with some spacing + * Spacing + * + * Let elements "breath" with some spacing * - * @code - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
+ * @level X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
*/ @mixin u-spacing-wrap($spacing: $spacing-m) { > * + * { From 6b4d141ba2fbe1b28a48ca7a98fd94270d11d726 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:09:20 +0200 Subject: [PATCH 066/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- packages/utility-offset/scss/_offset.scss | 97 +++++++++++------------ 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 3decea8..8faafff 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -1,12 +1,11 @@ /** - * @name Offset + * Offset + * + * Offset classes mainly (but not exclusively) to be used in grids + * * @level X.X. - * @description - * Offset classes mainly (but not exclusively) to be used in grids - */ -/** - * Variables */ +// Variables $u-offset-item-count: 12 !default; // Sizes @@ -18,15 +17,15 @@ $u-offset-size-xl: true !default; /** - * @name Base - * @level X.X.X. - * @description - * Mobile first styles for all screen sizes + * Base * - * @code - *
- *
Grid item with offset
- *
+ * Mobile first styles for all screen sizes + * + * @level X.X.X. + * @markup + *
+ *
Grid item with offset
+ *
*/ $u-offset-base-size: (100% / $u-offset-item-count); @@ -40,15 +39,15 @@ $u-offset-base-size: (100% / $u-offset-item-count); @if $u-offset-size-s { /** - * @name Small - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * Small * - * @code - *
- *
Grid item with offset
- *
+ * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Grid item with offset
+ *
*/ @media (min-width: $breakpoint-s) { @for $i from 1 through $u-offset-item-count { @@ -63,16 +62,16 @@ $u-offset-base-size: (100% / $u-offset-item-count); @if $u-offset-size-m { /** - * @name Medium - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up + * Medium + * + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @code - *
- *
Grid item with offset
- *
Grid item with offset
- *
+ * @level X.X.X. + * @markup + *
+ *
Grid item with offset
+ *
Grid item with offset
+ *
*/ @media (min-width: $breakpoint-m) { @for $i from 1 through $u-offset-item-count { @@ -87,16 +86,16 @@ $u-offset-base-size: (100% / $u-offset-item-count); @if $u-offset-size-l { /** - * @name Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up + * Large + * + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @code - *
- *
Grid item with offset
- *
Grid item with offset
- *
+ * @level X.X.X. + * @markup + *
+ *
Grid item with offset
+ *
Grid item with offset
+ *
*/ @media (min-width: $breakpoint-l) { @for $i from 1 through $u-offset-item-count { @@ -111,16 +110,16 @@ $u-offset-base-size: (100% / $u-offset-item-count); @if $u-offset-size-xl { /** - * @name X-Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * X-Large * - * @code - *
- *
Grid item with offset
- *
Grid item with offset
- *
+ * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Grid item with offset
+ *
Grid item with offset
+ *
*/ @media (min-width: $breakpoint-xl) { @for $i from 1 through $u-offset-item-count { From 5577393447a408cc236984527e34b56e5bd45512 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:12:27 +0200 Subject: [PATCH 067/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- .../scss/_font_family.scss | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index 31da4d4..dbc5c33 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -1,8 +1,9 @@ /** - * @name Font family + * Font family + * + * Font family classes + * * @level X.X. - * @description - * Font family classes */ @function font-family-find-normal-weight($font-family) { @if variable-exists(font-a-family) and $font-family == $font-a-family { @@ -35,10 +36,10 @@ } /** - * @code - *
- * Lorem ipsum dolor (#{$font-a-family}) - *
+ * @markup + *
+ * Lorem ipsum dolor (#{$font-a-family}) + *
*/ .u-font-family-a { @include u-font-family(); @@ -46,10 +47,10 @@ @if variable-exists(font-b-family) { /** - * @code - *
- * Lorem ipsum dolor (#{$font-b-family}) - *
+ * @markup + *
+ * Lorem ipsum dolor (#{$font-b-family}) + *
*/ .u-font-family-b { @include u-font-family($font-b-family); From 9e9b280271273789c245f5d84334df883f1aa78d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:42:06 +0200 Subject: [PATCH 068/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- packages/object-media/scss/_media.scss | 62 +++++++++++++++++--------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss index d591473..aa9b01d 100644 --- a/packages/object-media/scss/_media.scss +++ b/packages/object-media/scss/_media.scss @@ -1,30 +1,24 @@ /** - * @name Media + * Media + * + * The media object is an image on one side, with descriptive content on the other side.
+ * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) + * * @level X.X. - * @description - * The media object is an image on one side, with descriptive content on the other side. - * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) */ /** - * @name Base + * Base + * * @level X.X.X. - * @code - *
- *
- * - *
- *
- * Lorem ipsum dolor sit... - *
+ * @markup + *
+ *
+ * *
- *
- *
- * - *
- *
- * Lorem ipsum dolor sit... - *
+ *
+ * Lorem ipsum dolor sit... *
+ *
*/ .o-media { @include u-clearfix(); @@ -46,16 +40,42 @@ overflow: hidden; } + + /** - * Reversed image location (right instead of left). + * Reversed figure location + * + * @level X.X.X. + * @markup + *
+ *
+ * + *
+ *
+ * Lorem ipsum dolor sit... + *
+ *
*/ .o-media__figure-rev { float: right; margin-left: $spacing-m; } + + /** * Reset media styling on small screens + * + * @level X.X.X. + * @markup + *
+ *
+ * + *
+ *
+ * Lorem ipsum dolor sit... + *
+ *
*/ @media (max-width: $breakpoint-max-m) { .o-media--mobile-reset { From 6010523995c438977ee205dd743f605b514e112f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:48:16 +0200 Subject: [PATCH 069/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- packages/object-island/scss/_island.scss | 137 ++++++++++++----------- 1 file changed, 74 insertions(+), 63 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index 8e65724..eec08d9 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -1,13 +1,12 @@ /** - * @name Island + * Island + * + * A single class used to box off content, leaving it closed on all sides like, well, an island.
+ * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) + * * @level X.X. - * @description - * A single class used to box off content, leaving it closed on all sides like, well, an island. - * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) - */ -/** - * Variables */ +// Variables // Color scheme $o-island-cs-a: true; $o-island-cs-b: true; @@ -24,12 +23,13 @@ $o-island-function-negative: true; /** - * @name Base + * Base + * * @level X.X.X. - * @code - *
- * Island - *
+ * @markup + *
+ * Island + *
*/ .o-island { display: block; @@ -43,19 +43,21 @@ $o-island-function-negative: true; /** - * @name Color scheme + * Color scheme + * + * Islands using the base color scheme + * * @level X.X.X. - * @description - * Islands using the base color scheme */ @if $o-island-cs-a { /** - * @name cs-a + * cs-a + * * @level X.X.X.X. - * @code - *
- * cs-a Island - *
+ * @markup + *
+ * cs-a Island + *
*/ .o-island--cs-a { background: $cs-a; @@ -65,12 +67,13 @@ $o-island-function-negative: true; @if $o-island-cs-b { /** - * @name cs-b + * cs-b + * * @level X.X.X.X. - * @code - *
- * cs-b Island - *
+ * @markup + *
+ * cs-b Island + *
*/ .o-island--cs-b { background: $cs-b; @@ -80,12 +83,13 @@ $o-island-function-negative: true; @if $o-island-cs-c { /** - * @name cs-c + * cs-c + * * @level X.X.X.X. - * @code - *
- * cs-c Island - *
+ * @markup + *
+ * cs-c Island + *
*/ .o-island--cs-c { background: $cs-c; @@ -95,12 +99,13 @@ $o-island-function-negative: true; @if $o-island-cs-d { /** - * @name cs-d + * cs-d + * * @level X.X.X.X. - * @code - *
- * cs-d Island - *
+ * @markup + *
+ * cs-d Island + *
*/ .o-island--cs-d { background: $cs-d; @@ -110,12 +115,13 @@ $o-island-function-negative: true; @if $o-island-cs-e { /** - * @name cs-e + * cs-e + * * @level X.X.X.X. - * @code - *
- * cs-e Island - *
+ * @markup + *
+ * cs-e Island + *
*/ .o-island--cs-e { background: $cs-e; @@ -126,19 +132,21 @@ $o-island-function-negative: true; /** - * @name Functions + * Functions + * + * Islands using the function color scheme + * * @level X.X.X. - * @description - * Islands using the function color scheme */ @if $o-island-function-positive { /** - * @name Positive + * Positive + * * @level X.X.X.X. - * @code - *
- * Positive Island - *
+ * @markup + *
+ * Positive Island + *
*/ .o-island--positive { background: mix($cs-positive, #fff, 20%); @@ -148,12 +156,13 @@ $o-island-function-negative: true; @if $o-island-function-neutral { /** - * @name Neutral + * Neutral + * * @level X.X.X.X. - * @code - *
- * Neutral Island - *
+ * @markup + *
+ * Neutral Island + *
*/ .o-island--neutral { background: mix($cs-neutral, #fff, 20%); @@ -163,12 +172,13 @@ $o-island-function-negative: true; @if $o-island-function-cautious { /** - * @name Cautious + * Cautious + * * @level X.X.X.X. - * @code - *
- * Cautious Island - *
+ * @markup + *
+ * Cautious Island + *
*/ .o-island--cautious { background: mix($cs-cautious, #fff, 20%); @@ -178,12 +188,13 @@ $o-island-function-negative: true; @if $o-island-function-negative { /** - * @name Negative + * Negative + * * @level X.X.X.X. - * @code - *
- * Negative Island - *
+ * @markup + *
+ * Negative Island + *
*/ .o-island--negative { background: mix($cs-negative, #fff, 20%); From 28406b6a5ea3badb31f6d64fc8d7d6c75327d65a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 14:52:04 +0200 Subject: [PATCH 070/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- .../avalanchesass-object-grid/scss/_grid.scss | 113 +++++++++--------- 1 file changed, 56 insertions(+), 57 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 6e92ac2..442293a 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,12 +1,11 @@ /** - * @name Grid + * Grid + * + * Fluid width, responsive grid system + * * @level X.X. - * @description - * Fluid width, responsive grid system - */ -/** - * Variables */ +// Variables $o-grid-item-count: 12 !default; // Sizes @@ -24,16 +23,16 @@ $o-grid-spacing-xl: $spacing-m !default; /** - * @name Base - * @level X.X.X. - * @description - * Mobile first styles for all screen sizes + * Base * - * @code - *
- *
Grid item
- *
Grid item
- *
+ * Mobile first styles for all screen sizes + * + * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
*/ .o-grid { @include u-clearfix(); @@ -56,16 +55,16 @@ $o-grid-spacing-xl: $spacing-m !default; @if $o-grid-size-s { /** - * @name Small - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * Small * - * @code - *
- *
Grid item
- *
Grid item
- *
+ * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
*/ } @@ -73,18 +72,18 @@ $o-grid-spacing-xl: $spacing-m !default; @if $o-grid-size-m { /** - * @name Medium - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up + * Medium + * + * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up * - * @code - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
+ * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
*/ @media (min-width: $breakpoint-m) { .o-grid { @@ -105,18 +104,18 @@ $o-grid-spacing-xl: $spacing-m !default; @if $o-grid-size-l { /** - * @name Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up + * Large + * + * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up * - * @code - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
+ * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
*/ @media (min-width: $breakpoint-l) { .o-grid { @@ -137,18 +136,18 @@ $o-grid-spacing-xl: $spacing-m !default; @if $o-grid-size-xl { /** - * @name X-Large - * @level X.X.X. - * @description - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * X-Large * - * @code - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
+ * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up + * + * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
Grid item
+ *
*/ @media (min-width: $breakpoint-xl) { .o-grid { From c0e01dc6f1f4e1b0a91a5bc4a147547502f12a4f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 15:09:19 +0200 Subject: [PATCH 071/355] made comments compatible with the latest cultusrego build (docblock syntax) according to avalanchesass/avalanche#89 --- .../generic-box-sizing-reset/scss/_layout.scss | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss index 1eec668..6236f61 100644 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -1,15 +1,17 @@ /** - * @name Layout + * Layout + * + * Styles that influence basic layout + * * @level X.X. - * @description - * Styles that influence basic layout */ /** - * @name Box sizing reset + * Box sizing reset + * + * Better box model
+ * [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) + * * @level X.X.X. - * @description - * Better box model - * [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) */ @if $layout-box-sizing-reset { html { From f4cacd8c988ffdccbcee367fb0278e3064b6cdbf Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 18:34:03 +0200 Subject: [PATCH 072/355] Bumped version number to 2.0.3 --- packages/generic-box-sizing-reset/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json index 600b1a2..cf6d146 100644 --- a/packages/generic-box-sizing-reset/bower.json +++ b/packages/generic-box-sizing-reset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Base layout", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_base_layout", "authors": [ "Markus Oberlehner" From d8597b80be865a696d2aa99e84f548ec1164caef Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 18:50:24 +0200 Subject: [PATCH 073/355] Bumped version number to 2.0.4 --- packages/avalanchesass-object-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 8662243..5a64ce7 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object grid", - "version": "2.0.3", + "version": "2.0.4", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "authors": [ "Markus Oberlehner" From d9793101a6d64e0462291f43442d24547538e66d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 18:52:02 +0200 Subject: [PATCH 074/355] Bumped version number to 2.0.2 --- packages/object-island/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json index 81d6348..68613d9 100644 --- a/packages/object-island/bower.json +++ b/packages/object-island/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object island", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_object_island", "authors": [ "Markus Oberlehner" From 020f14d096fb8f627fca12bbfaaf92e7f47fb40f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 18:53:32 +0200 Subject: [PATCH 075/355] Bumped version number to 2.0.2 --- packages/object-media/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-media/bower.json b/packages/object-media/bower.json index fe136c5..703febe 100644 --- a/packages/object-media/bower.json +++ b/packages/object-media/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object media", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_object_media", "authors": [ "Markus Oberlehner" From 620174c5994fd1941d401b283d63047fb3e40bf0 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 18:58:44 +0200 Subject: [PATCH 076/355] Bumped version number to 2.0.3 --- packages/utility-font-family/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json index 15329e5..832b4e8 100644 --- a/packages/utility-font-family/bower.json +++ b/packages/utility-font-family/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility font family", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", "authors": [ "Markus Oberlehner" From 78acc1c4929f6f6cda03275c69b5158891eacc92 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 19:01:56 +0200 Subject: [PATCH 077/355] Bumped version number to 2.0.3 --- packages/utility-offset/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json index c85f628..7e8e2db 100644 --- a/packages/utility-offset/bower.json +++ b/packages/utility-offset/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility offset", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", "authors": [ "Markus Oberlehner" From 39eeb688ceb31bc6c4feb8360212c6682b2716ed Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 19:06:07 +0200 Subject: [PATCH 078/355] Bumped version number to 2.0.3 --- packages/utility-spacing/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json index 1d65ac9..d1eeea6 100644 --- a/packages/utility-spacing/bower.json +++ b/packages/utility-spacing/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility spacing", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "authors": [ "Markus Oberlehner" From 0144cb82c413ea58e337185d1709f05286a6265c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 19:08:52 +0200 Subject: [PATCH 079/355] Bumped version number to 2.0.2 --- packages/utility-visibility/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-visibility/bower.json b/packages/utility-visibility/bower.json index 4133685..555b6f0 100644 --- a/packages/utility-visibility/bower.json +++ b/packages/utility-visibility/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility visibility", - "version": "2.0.1", + "version": "2.0.2", "homepage": "https://github.com/avalanchesass/avalanche_utility_visibility", "authors": [ "Markus Oberlehner" From a0d5ac87985ace26134dd2b8622fa7ba2654110d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Aug 2015 19:10:40 +0200 Subject: [PATCH 080/355] Bumped version number to 2.0.4 --- packages/avalanchesass-utility-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json index 736b8e9..9eebaf6 100644 --- a/packages/avalanchesass-utility-grid/bower.json +++ b/packages/avalanchesass-utility-grid/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility width", - "version": "2.0.3", + "version": "2.0.4", "homepage": "https://github.com/avalanchesass/avalanche_utility_width", "authors": [ "Markus Oberlehner" From 6af8b77c1ca3484157deeee016fb6740bc701a7f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 28 Aug 2015 16:00:09 +0200 Subject: [PATCH 081/355] added various sizes, fixes #1 --- packages/utility-spacing/scss/_spacing.scss | 150 ++++++++++++++++++-- 1 file changed, 142 insertions(+), 8 deletions(-) diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss index 7655776..d1e6434 100644 --- a/packages/utility-spacing/scss/_spacing.scss +++ b/packages/utility-spacing/scss/_spacing.scss @@ -4,19 +4,153 @@ * Let elements "breath" with some spacing * * @level X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
*/ +// Variables +$u-spacing-wrap-xs: false; +$u-spacing-wrap-s: false; +$u-spacing-wrap-m: true; +$u-spacing-wrap-l: false; +$u-spacing-wrap-xl: false; +$u-spacing-wrap-xxl: false; +$u-spacing-wrap-xxxl: false; + + + @mixin u-spacing-wrap($spacing: $spacing-m) { > * + * { margin-top: $spacing; } } -.u-spacing-wrap { - @include u-spacing-wrap(); + + +@if $u-spacing-wrap-xs { + /** + * XS + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-xs { + @include u-spacing-wrap($spacing-xs); + } +} + + + +@if $u-spacing-wrap-s { + /** + * S + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-s { + @include u-spacing-wrap($spacing-s); + } +} + + + +@if $u-spacing-wrap-m { + /** + * M + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap { + @include u-spacing-wrap(); + } +} + + + +@if $u-spacing-wrap-l { + /** + * L + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-l { + @include u-spacing-wrap($spacing-l); + } +} + + + +@if $u-spacing-wrap-xl { + /** + * XL + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-xl { + @include u-spacing-wrap($spacing-xl); + } +} + + + +@if $u-spacing-wrap-xxl { + /** + * XXL + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-xxl { + @include u-spacing-wrap($spacing-xxl); + } +} + + + +@if $u-spacing-wrap-xxxl { + /** + * XXXL + * + * @level X.X.X. + * @markup + *
+ *
No spacing top because I'm the first element
+ *
I have spacing top
+ *
Me too
+ *
+ */ + .u-spacing-wrap-xxxl { + @include u-spacing-wrap($spacing-xxxl); + } } From efc09b3891aa56b5a85434fc81c0bac72103a8b7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 28 Aug 2015 16:09:57 +0200 Subject: [PATCH 082/355] Bumped version number to 2.0.4 --- packages/utility-spacing/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json index d1eeea6..60c1fe9 100644 --- a/packages/utility-spacing/bower.json +++ b/packages/utility-spacing/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility spacing", - "version": "2.0.3", + "version": "2.0.4", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "authors": [ "Markus Oberlehner" From 7dc2342a385743734469a3a76145e7e5c608f702 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 28 Aug 2015 16:30:56 +0200 Subject: [PATCH 083/355] initial commit --- packages/utility-text-align/.gitignore | 3 + packages/utility-text-align/LICENSE | 340 ++++++++++++++++++ packages/utility-text-align/README.md | 10 + packages/utility-text-align/bower.json | 24 ++ .../utility-text-align/scss/_text_align.scss | 55 +++ 5 files changed, 432 insertions(+) create mode 100644 packages/utility-text-align/.gitignore create mode 100644 packages/utility-text-align/LICENSE create mode 100644 packages/utility-text-align/README.md create mode 100644 packages/utility-text-align/bower.json create mode 100644 packages/utility-text-align/scss/_text_align.scss diff --git a/packages/utility-text-align/.gitignore b/packages/utility-text-align/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/utility-text-align/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/utility-text-align/LICENSE b/packages/utility-text-align/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-text-align/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-text-align/README.md b/packages/utility-text-align/README.md new file mode 100644 index 0000000..77b8e74 --- /dev/null +++ b/packages/utility-text-align/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility text align +Text align utility classes +https://github.com/avalanchesass/avalanche_utility_text_align + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-text-align/bower.json b/packages/utility-text-align/bower.json new file mode 100644 index 0000000..0371e60 --- /dev/null +++ b/packages/utility-text-align/bower.json @@ -0,0 +1,24 @@ +{ + "name": "avalanche: Utility text align", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_text_align", + "authors": [ + "Markus Oberlehner" + ], + "description": "Text align utility classes", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "avalanche_system_variable": "^2.0.0" + } +} diff --git a/packages/utility-text-align/scss/_text_align.scss b/packages/utility-text-align/scss/_text_align.scss new file mode 100644 index 0000000..e5a7135 --- /dev/null +++ b/packages/utility-text-align/scss/_text_align.scss @@ -0,0 +1,55 @@ +/** + * Text align + * + * Text align utility classes + * + * @level X.X. + */ +@mixin u-text-align($align: right) { + text-align: $align; +} + + + +/** + * Right + * + * @level X.X.X. + * @markup + *
+ *

right aligned text

+ *
+ */ +.u-text-align-right { + @include u-text-align(); +} + + + +/** + * Left + * + * @level X.X.X. + * @markup + *
+ *

left aligned text

+ *
+ */ +.u-text-align-left { + @include u-text-align(left); +} + + + +/** + * Center + * + * @level X.X.X. + * @markup + *
+ *

centred text

+ *
+ */ +.u-text-align-center { + @include u-text-align(center); +} From 5ae00599ea60786acd35a7870a50c9dcde1b2705 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 28 Aug 2015 16:34:20 +0200 Subject: [PATCH 084/355] removed dependencies --- packages/utility-text-align/bower.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/utility-text-align/bower.json b/packages/utility-text-align/bower.json index 0371e60..2597dfb 100644 --- a/packages/utility-text-align/bower.json +++ b/packages/utility-text-align/bower.json @@ -17,8 +17,5 @@ "bower_components", "test", "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } + ] } From ead483cb3464bc24c1c51447db34ec82c0cb75ac Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 28 Aug 2015 16:34:52 +0200 Subject: [PATCH 085/355] Bumped version number to 2.0.1 --- packages/utility-text-align/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-text-align/bower.json b/packages/utility-text-align/bower.json index 2597dfb..34bacd3 100644 --- a/packages/utility-text-align/bower.json +++ b/packages/utility-text-align/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility text align", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/avalanchesass/avalanche_utility_text_align", "authors": [ "Markus Oberlehner" From b30cb86ed26f3b4a9971fd8f900df5d37129251d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 30 Aug 2015 12:07:05 +0200 Subject: [PATCH 086/355] added spacing top classes, fixes #2 --- packages/utility-spacing/scss/_spacing.scss | 174 +++++++++++++++++--- 1 file changed, 147 insertions(+), 27 deletions(-) diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss index d1e6434..cf30b4e 100644 --- a/packages/utility-spacing/scss/_spacing.scss +++ b/packages/utility-spacing/scss/_spacing.scss @@ -6,29 +6,43 @@ * @level X.X. */ // Variables -$u-spacing-wrap-xs: false; -$u-spacing-wrap-s: false; -$u-spacing-wrap-m: true; -$u-spacing-wrap-l: false; -$u-spacing-wrap-xl: false; -$u-spacing-wrap-xxl: false; -$u-spacing-wrap-xxxl: false; +$u-spacing-wrap-xs: false !default; +$u-spacing-wrap-s: false !default; +$u-spacing-wrap-m: true !default; +$u-spacing-wrap-l: false !default; +$u-spacing-wrap-xl: false !default; +$u-spacing-wrap-xxl: false !default; +$u-spacing-wrap-xxxl: false !default; +$u-spacing-top-xs: false !default; +$u-spacing-top-s: false !default; +$u-spacing-top-m: false !default; +$u-spacing-top-l: false !default; +$u-spacing-top-xl: false !default; +$u-spacing-top-xxl: false !default; +$u-spacing-top-xxxl: false !default; + +/** + * Wrap + * + * Give a set of elements wrapped in a container a top margin + * the first element gets no margin top. + * + * @level X.X.X. + */ @mixin u-spacing-wrap($spacing: $spacing-m) { > * + * { margin-top: $spacing; } } - - @if $u-spacing-wrap-xs { /** * XS * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -41,13 +55,11 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-s { /** * S * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -60,13 +72,11 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-m { /** * M * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -79,13 +89,11 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-l { /** * L * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -98,13 +106,11 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-xl { /** * XL * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -117,13 +123,11 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-xxl { /** * XXL * - * @level X.X.X. + * @level X.X.X.X. * @markup *
*
No spacing top because I'm the first element
@@ -136,8 +140,6 @@ $u-spacing-wrap-xxxl: false; } } - - @if $u-spacing-wrap-xxxl { /** * XXXL @@ -154,3 +156,121 @@ $u-spacing-wrap-xxxl: false; @include u-spacing-wrap($spacing-xxxl); } } + + + +/** + * Top + * + * Add top margin to an element. + * + * @level X.X.X. + */ +@mixin u-spacing-top($spacing: $spacing-m) { + margin-top: $spacing; +} + +@if $u-spacing-top-xs { + /** + * XS + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-xs { + @include u-spacing-top($spacing-xs); + } +} + +@if $u-spacing-top-s { + /** + * S + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-s { + @include u-spacing-top($spacing-s); + } +} + +@if $u-spacing-top-m { + /** + * M + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-m { + @include u-spacing-top(); + } +} + +@if $u-spacing-top-l { + /** + * L + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-l { + @include u-spacing-top($spacing-l); + } +} + +@if $u-spacing-top-xl { + /** + * XL + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-xl { + @include u-spacing-top($spacing-xl); + } +} + +@if $u-spacing-top-xxl { + /** + * XXL + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-xxl { + @include u-spacing-top($spacing-xxl); + } +} + +@if $u-spacing-top-xxxl { + /** + * XXXL + * + * @level X.X.X.X. + * @markup + *
+ * Lorem ipsum + *
+ */ + .u-spacing-top-xxxl { + @include u-spacing-top($spacing-xxxl); + } +} From 223fdc46da053f77eb16071042c411bdd5a0797d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 30 Aug 2015 12:09:21 +0200 Subject: [PATCH 087/355] Bumped version to 2.0.5 --- packages/utility-spacing/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json index 60c1fe9..9dd27b6 100644 --- a/packages/utility-spacing/bower.json +++ b/packages/utility-spacing/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Utility spacing", - "version": "2.0.4", + "version": "2.0.5", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "authors": [ "Markus Oberlehner" From 27dcedea0cf290bb8333394b99b545b4137e570d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Sep 2015 19:27:18 +0200 Subject: [PATCH 088/355] optimized documentation --- packages/generic-box-sizing-reset/scss/_layout.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss index 6236f61..9fcc6fa 100644 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -1,8 +1,6 @@ /** * Layout * - * Styles that influence basic layout - * * @level X.X. */ /** From 1dfb9330e35ca4fdd1ea61a869ffb47367d055c4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 3 Sep 2015 19:41:20 +0200 Subject: [PATCH 089/355] unify spacing --- packages/utility-text-align/scss/_text_align.scss | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/utility-text-align/scss/_text_align.scss b/packages/utility-text-align/scss/_text_align.scss index e5a7135..5158de5 100644 --- a/packages/utility-text-align/scss/_text_align.scss +++ b/packages/utility-text-align/scss/_text_align.scss @@ -9,8 +9,6 @@ text-align: $align; } - - /** * Right * @@ -24,8 +22,6 @@ @include u-text-align(); } - - /** * Left * @@ -39,8 +35,6 @@ @include u-text-align(left); } - - /** * Center * From 91ba69fe1c614ff34f3b00aed5fede07bf90739f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 3 Sep 2015 19:43:05 +0200 Subject: [PATCH 090/355] added 'important' to the style definition, according to avalanchesass/avalanche#95 --- packages/utility-text-align/scss/_text_align.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-text-align/scss/_text_align.scss b/packages/utility-text-align/scss/_text_align.scss index 5158de5..49c5697 100644 --- a/packages/utility-text-align/scss/_text_align.scss +++ b/packages/utility-text-align/scss/_text_align.scss @@ -6,7 +6,7 @@ * @level X.X. */ @mixin u-text-align($align: right) { - text-align: $align; + text-align: $align !important; } /** From 46b38e5e5393a7d212e4e9cb6e322ccbdd0427cd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Sep 2015 18:23:30 +0200 Subject: [PATCH 091/355] set config variables false on default, added 'default' to the config variables, added if conditional around variations --- packages/object-island/scss/_island.scss | 293 +++++++++++------------ 1 file changed, 145 insertions(+), 148 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index eec08d9..57c51ee 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -8,17 +8,17 @@ */ // Variables // Color scheme -$o-island-cs-a: true; -$o-island-cs-b: true; -$o-island-cs-c: true; -$o-island-cs-d: true; -$o-island-cs-e: true; +$o-island-cs-a: false !default; +$o-island-cs-b: false !default; +$o-island-cs-c: false !default; +$o-island-cs-d: false !default; +$o-island-cs-e: false !default; // Functions -$o-island-function-positive: true; -$o-island-function-neutral: true; -$o-island-function-cautious: true; -$o-island-function-negative: true; +$o-island-function-positive: false !default; +$o-island-function-neutral: false !default; +$o-island-function-cautious: false !default; +$o-island-function-negative: false !default; @@ -42,162 +42,159 @@ $o-island-function-negative: true; -/** - * Color scheme - * - * Islands using the base color scheme - * - * @level X.X.X. - */ -@if $o-island-cs-a { +@if $o-island-cs-a or $o-island-cs-b or $o-island-cs-c or $o-island-cs-d or $o-island-cs-e { /** - * cs-a + * Color scheme * - * @level X.X.X.X. - * @markup - *
- * cs-a Island - *
- */ - .o-island--cs-a { - background: $cs-a; - color: $cs-a-contrast; - } -} - -@if $o-island-cs-b { - /** - * cs-b + * Islands using the base color scheme * - * @level X.X.X.X. - * @markup - *
- * cs-b Island - *
+ * @level X.X.X. */ - .o-island--cs-b { - background: $cs-b; - color: $cs-b-contrast; + @if $o-island-cs-a { + /** + * cs-a + * + * @level X.X.X.X. + * @markup + *
+ * cs-a Island + *
+ */ + .o-island--cs-a { + background: $cs-a; + color: $cs-a-contrast; + } } -} - -@if $o-island-cs-c { - /** - * cs-c - * - * @level X.X.X.X. - * @markup - *
- * cs-c Island - *
- */ - .o-island--cs-c { - background: $cs-c; - color: $cs-c-contrast; + @if $o-island-cs-b { + /** + * cs-b + * + * @level X.X.X.X. + * @markup + *
+ * cs-b Island + *
+ */ + .o-island--cs-b { + background: $cs-b; + color: $cs-b-contrast; + } } -} - -@if $o-island-cs-d { - /** - * cs-d - * - * @level X.X.X.X. - * @markup - *
- * cs-d Island - *
- */ - .o-island--cs-d { - background: $cs-d; - color: $cs-d-contrast; + @if $o-island-cs-c { + /** + * cs-c + * + * @level X.X.X.X. + * @markup + *
+ * cs-c Island + *
+ */ + .o-island--cs-c { + background: $cs-c; + color: $cs-c-contrast; + } } -} - -@if $o-island-cs-e { - /** - * cs-e - * - * @level X.X.X.X. - * @markup - *
- * cs-e Island - *
- */ - .o-island--cs-e { - background: $cs-e; - color: $cs-e-contrast; + @if $o-island-cs-d { + /** + * cs-d + * + * @level X.X.X.X. + * @markup + *
+ * cs-d Island + *
+ */ + .o-island--cs-d { + background: $cs-d; + color: $cs-d-contrast; + } + } + @if $o-island-cs-e { + /** + * cs-e + * + * @level X.X.X.X. + * @markup + *
+ * cs-e Island + *
+ */ + .o-island--cs-e { + background: $cs-e; + color: $cs-e-contrast; + } } } -/** - * Functions - * - * Islands using the function color scheme - * - * @level X.X.X. - */ -@if $o-island-function-positive { +@if $o-island-function-positive or $o-island-function-neutral or $o-island-function-cautious or $o-island-function-negative { /** - * Positive + * Functions * - * @level X.X.X.X. - * @markup - *
- * Positive Island - *
- */ - .o-island--positive { - background: mix($cs-positive, #fff, 20%); - color: $cs-positive; - } -} - -@if $o-island-function-neutral { - /** - * Neutral + * Islands using the function color scheme * - * @level X.X.X.X. - * @markup - *
- * Neutral Island - *
+ * @level X.X.X. */ - .o-island--neutral { - background: mix($cs-neutral, #fff, 20%); - color: $cs-neutral; + @if $o-island-function-positive { + /** + * Positive + * + * @level X.X.X.X. + * @markup + *
+ * Positive Island + *
+ */ + .o-island--positive { + background: mix($cs-positive, #fff, 20%); + color: $cs-positive; + } } -} - -@if $o-island-function-cautious { - /** - * Cautious - * - * @level X.X.X.X. - * @markup - *
- * Cautious Island - *
- */ - .o-island--cautious { - background: mix($cs-cautious, #fff, 20%); - color: $cs-cautious; + @if $o-island-function-neutral { + /** + * Neutral + * + * @level X.X.X.X. + * @markup + *
+ * Neutral Island + *
+ */ + .o-island--neutral { + background: mix($cs-neutral, #fff, 20%); + color: $cs-neutral; + } } -} - -@if $o-island-function-negative { - /** - * Negative - * - * @level X.X.X.X. - * @markup - *
- * Negative Island - *
- */ - .o-island--negative { - background: mix($cs-negative, #fff, 20%); - color: $cs-negative; + @if $o-island-function-cautious { + /** + * Cautious + * + * @level X.X.X.X. + * @markup + *
+ * Cautious Island + *
+ */ + .o-island--cautious { + background: mix($cs-cautious, #fff, 20%); + color: $cs-cautious; + } + } + @if $o-island-function-negative { + /** + * Negative + * + * @level X.X.X.X. + * @markup + *
+ * Negative Island + *
+ */ + .o-island--negative { + background: mix($cs-negative, #fff, 20%); + color: $cs-negative; + } } } From 3569a2992b2b86ac3ad51c99cdc78b2c0bac00f7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Sep 2015 18:24:24 +0200 Subject: [PATCH 092/355] Bumped version to 2.0.3 --- packages/object-island/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json index 68613d9..0a50137 100644 --- a/packages/object-island/bower.json +++ b/packages/object-island/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object island", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_object_island", "authors": [ "Markus Oberlehner" From 4910e52c8b7b5ef77f4c322eabd6422aa822390f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 6 Sep 2015 14:54:52 +0200 Subject: [PATCH 093/355] removed 'base' section - moved the text and example markup to the top (X.X.) level --- packages/object-media/scss/_media.scss | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss index aa9b01d..355aada 100644 --- a/packages/object-media/scss/_media.scss +++ b/packages/object-media/scss/_media.scss @@ -5,11 +5,6 @@ * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) * * @level X.X. - */ -/** - * Base - * - * @level X.X.X. * @markup *
*
From 5cf35244c5c2eb5a9d12f7da2f359b13b5d1410b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 6 Sep 2015 14:55:54 +0200 Subject: [PATCH 094/355] Bumped version to 2.0.3 --- packages/object-media/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-media/bower.json b/packages/object-media/bower.json index 703febe..5d03e2b 100644 --- a/packages/object-media/bower.json +++ b/packages/object-media/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche: Object media", - "version": "2.0.2", + "version": "2.0.3", "homepage": "https://github.com/avalanchesass/avalanche_object_media", "authors": [ "Markus Oberlehner" From ca93a91a7055f8a3c0392a0b79f63a469fad6757 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 7 Sep 2015 19:44:27 +0200 Subject: [PATCH 095/355] set config variables false on default --- packages/avalanchesass-object-grid/scss/_grid.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 442293a..8b6ce1d 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -9,10 +9,10 @@ $o-grid-item-count: 12 !default; // Sizes -$o-grid-size-s: true !default; -$o-grid-size-m: true !default; -$o-grid-size-l: true !default; -$o-grid-size-xl: true !default; +$o-grid-size-s: false !default; +$o-grid-size-m: false !default; +$o-grid-size-l: false !default; +$o-grid-size-xl: false !default; // Spacing between items $o-grid-spacing-s: $spacing-s !default; From f98a9e52dddbeaf98e1440cf4251818c85bbe505 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 7 Sep 2015 19:47:01 +0200 Subject: [PATCH 096/355] set config variables false on default --- packages/utility-offset/scss/_offset.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 8faafff..01f5daa 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -9,10 +9,10 @@ $u-offset-item-count: 12 !default; // Sizes -$u-offset-size-s: true !default; -$u-offset-size-m: true !default; -$u-offset-size-l: true !default; -$u-offset-size-xl: true !default; +$u-offset-size-s: false !default; +$u-offset-size-m: false !default; +$u-offset-size-l: false !default; +$u-offset-size-xl: false !default; From ae672792fb6d1761ffab6bccb193a59b8f380a80 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 7 Sep 2015 19:49:18 +0200 Subject: [PATCH 097/355] set config variables false on default --- packages/avalanchesass-utility-grid/scss/_width.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss index 53e2895..768575a 100644 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -9,10 +9,10 @@ $u-width-item-count: 12 !default; // Sizes -$u-width-size-s: true !default; -$u-width-size-m: true !default; -$u-width-size-l: true !default; -$u-width-size-xl: true !default; +$u-width-size-s: false !default; +$u-width-size-m: false !default; +$u-width-size-l: false !default; +$u-width-size-xl: false !default; From bd80660cb8cfe34ebb85542b01c5f8c6ea22f7fb Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 11 Sep 2015 17:33:33 +0200 Subject: [PATCH 098/355] initial commit --- packages/object-aspect-ratio/.gitignore | 3 + packages/object-aspect-ratio/LICENSE | 340 ++++++++++++++++++ packages/object-aspect-ratio/README.md | 10 + packages/object-aspect-ratio/bower.json | 21 ++ .../scss/_aspect_ratio.scss | 26 ++ 5 files changed, 400 insertions(+) create mode 100644 packages/object-aspect-ratio/.gitignore create mode 100644 packages/object-aspect-ratio/LICENSE create mode 100644 packages/object-aspect-ratio/README.md create mode 100644 packages/object-aspect-ratio/bower.json create mode 100644 packages/object-aspect-ratio/scss/_aspect_ratio.scss diff --git a/packages/object-aspect-ratio/.gitignore b/packages/object-aspect-ratio/.gitignore new file mode 100644 index 0000000..22ddb57 --- /dev/null +++ b/packages/object-aspect-ratio/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +.sass-cache +bower_components diff --git a/packages/object-aspect-ratio/LICENSE b/packages/object-aspect-ratio/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/object-aspect-ratio/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/object-aspect-ratio/README.md b/packages/object-aspect-ratio/README.md new file mode 100644 index 0000000..ecd44c7 --- /dev/null +++ b/packages/object-aspect-ratio/README.md @@ -0,0 +1,10 @@ +# avalanche: Utility aspect ratio +Maintain aspect ratio +https://github.com/avalanchesass/avalanche_utility_aspect_ratio + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/object-aspect-ratio/bower.json b/packages/object-aspect-ratio/bower.json new file mode 100644 index 0000000..59a8156 --- /dev/null +++ b/packages/object-aspect-ratio/bower.json @@ -0,0 +1,21 @@ +{ + "name": "avalanche: Utility aspect ratio", + "version": "2.0.0", + "homepage": "https://github.com/avalanchesass/avalanche_utility_aspect_ratio", + "authors": [ + "Markus Oberlehner" + ], + "description": "Maintain aspect ratio", + "keywords": [ + "SASS", + "CSS" + ], + "license": "GPL v2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/packages/object-aspect-ratio/scss/_aspect_ratio.scss b/packages/object-aspect-ratio/scss/_aspect_ratio.scss new file mode 100644 index 0000000..0671255 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_aspect_ratio.scss @@ -0,0 +1,26 @@ +/** + * Aspect ratio + * + * Maintain aspect ratio. + * + * @level X.X. + * @code [scss] + * .foo-bar { + * @include u-aspect-ratio(16, 9, '.foo-bar__inner'); + * } + */ +@mixin u-aspect-ratio($width, $height, $inner-selector: '.u-aspect-ratio-inner') { + position: relative; + &:before { + display: block; + padding-top: ($height / $width) * 100%; + content: ''; + } + > #{$inner-selector} { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} From 1a4dd8fd87211d2817529ca5b198c0d1a8ca8b48 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 19 Nov 2015 19:03:29 +0100 Subject: [PATCH 099/355] implemented flexbox (with the option to disable and switch back to float grid), according to #64 --- packages/avalanchesass-object-grid/scss/_grid.scss | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 8b6ce1d..d87728d 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -6,6 +6,7 @@ * @level X.X. */ // Variables +$o-grid-flex: true !default; $o-grid-item-count: 12 !default; // Sizes @@ -35,14 +36,21 @@ $o-grid-spacing-xl: $spacing-m !default; *
*/ .o-grid { - @include u-clearfix(); + @if $o-grid-flex { + display: flex; + flex-wrap: wrap; + } @else { + @include u-clearfix(); + } &.o-grid--spaced { margin-left: -$o-grid-spacing-s; } } .o-grid__item { - float: left; + @if $o-grid-flex != true { + float: left; + } @if $layout-box-sizing-reset == false { box-sizing: border-box; } From 6c599bb3ddb10bffc4a53a9a64d025a782dd1cfc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 19 Nov 2015 20:01:04 +0100 Subject: [PATCH 100/355] started playing around with the flexbox order property --- .../avalanchesass-object-grid/scss/_grid.scss | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index d87728d..1087944 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -171,3 +171,51 @@ $o-grid-spacing-xl: $spacing-m !default; } } } + + + + + +/** + * Order MOVE THIS TO A UTILITY PACKAGE + * DISPLAY WARNING IF FLEX GRID IS DISABLED + * + * Reorder flex items + * + * @level X.X. + * @markup + *
+ *
Grid item 1
+ *
Grid item 2
+ *
Grid item 3
+ *
Grid item 4
+ *
Grid item 5
+ *
Grid item 6
+ *
Grid item 7
+ *
Grid item 8
+ *
Grid item 9
+ *
Grid item 10
+ *
Grid item 11
+ *
Grid item 12
+ *
Grid item 13
+ *
+ */ +@media (min-width: $breakpoint-m) { + .u-order-start\@m { + order: -9999; + } +} +$u-order-max: 8; +@for $i from 1 through $u-order-max { + @media (min-width: $breakpoint-m) { + .u-order-#{$i}\@m { + order: $i - $u-order-max; + } + } +} + +@media (min-width: $breakpoint-m) { + .u-order-end\@m { + order: 9999; + } +} From 7fb7da0bb60e0303bd74fe7ebfccade6b5a77769 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 16 Dec 2015 19:12:00 +0100 Subject: [PATCH 101/355] added !important, according to avalanchesass/avalanche#95 --- packages/utility-visibility/scss/_visibility.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-visibility/scss/_visibility.scss b/packages/utility-visibility/scss/_visibility.scss index 317cc29..7066ede 100644 --- a/packages/utility-visibility/scss/_visibility.scss +++ b/packages/utility-visibility/scss/_visibility.scss @@ -18,7 +18,7 @@ */ @mixin u-hidden() { display: none !important; - visibility: hidden; + visibility: hidden !important; } .u-hidden { @@ -76,7 +76,7 @@ *
*/ @mixin u-invisible() { - visibility: hidden; + visibility: hidden !important; } .u-invisible { From c4c29453d7483cef850447f5afbc097903b96164 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 16 Dec 2015 19:14:50 +0100 Subject: [PATCH 102/355] added !important, according to avalanchesass/avalanche#95 --- packages/avalanchesass-utility-grid/scss/_width.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss index 768575a..8dedbb8 100644 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ b/packages/avalanchesass-utility-grid/scss/_width.scss @@ -32,7 +32,7 @@ $u-width-base-size: (100% / $u-width-item-count); @for $i from 1 through $u-width-item-count { .u-width--#{$i} { - width: ($u-width-base-size * $i); + width: ($u-width-base-size * $i) !important; } } @@ -54,7 +54,7 @@ $u-width-base-size: (100% / $u-width-item-count); @media (min-width: $breakpoint-s) { @for $i from 1 through $u-width-item-count { .u-width--s--#{$i} { - width: ($u-width-base-size * $i); + width: ($u-width-base-size * $i) !important; } } } @@ -80,7 +80,7 @@ $u-width-base-size: (100% / $u-width-item-count); @media (min-width: $breakpoint-m) { @for $i from 1 through $u-width-item-count { .u-width--m--#{$i} { - width: ($u-width-base-size * $i); + width: ($u-width-base-size * $i) !important; } } } @@ -106,7 +106,7 @@ $u-width-base-size: (100% / $u-width-item-count); @media (min-width: $breakpoint-l) { @for $i from 1 through $u-width-item-count { .u-width--l--#{$i} { - width: ($u-width-base-size * $i); + width: ($u-width-base-size * $i) !important; } } } @@ -132,7 +132,7 @@ $u-width-base-size: (100% / $u-width-item-count); @media (min-width: $breakpoint-xl) { @for $i from 1 through $u-width-item-count { .u-width--xl--#{$i} { - width: ($u-width-base-size * $i); + width: ($u-width-base-size * $i) !important; } } } From 1d4922ae847d4d00a95758f532fd2e23603fd5ed Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 16 Dec 2015 19:17:10 +0100 Subject: [PATCH 103/355] added !important, according to avalanchesass/avalanche#95 --- packages/utility-offset/scss/_offset.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss index 01f5daa..69a811a 100644 --- a/packages/utility-offset/scss/_offset.scss +++ b/packages/utility-offset/scss/_offset.scss @@ -31,7 +31,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); @for $i from 1 through $u-offset-item-count { .u-offset--#{$i} { - margin-left: ($u-offset-base-size * $i); + margin-left: ($u-offset-base-size * $i) !important; } } @@ -52,7 +52,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); @media (min-width: $breakpoint-s) { @for $i from 1 through $u-offset-item-count { .u-offset--s--#{$i} { - margin-left: ($u-offset-base-size * $i); + margin-left: ($u-offset-base-size * $i) !important; } } } @@ -76,7 +76,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); @media (min-width: $breakpoint-m) { @for $i from 1 through $u-offset-item-count { .u-offset--m--#{$i} { - margin-left: ($u-offset-base-size * $i); + margin-left: ($u-offset-base-size * $i) !important; } } } @@ -100,7 +100,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); @media (min-width: $breakpoint-l) { @for $i from 1 through $u-offset-item-count { .u-offset--l--#{$i} { - margin-left: ($u-offset-base-size * $i); + margin-left: ($u-offset-base-size * $i) !important; } } } @@ -124,7 +124,7 @@ $u-offset-base-size: (100% / $u-offset-item-count); @media (min-width: $breakpoint-xl) { @for $i from 1 through $u-offset-item-count { .u-offset--xl--#{$i} { - margin-left: ($u-offset-base-size * $i); + margin-left: ($u-offset-base-size * $i) !important; } } } From 1a98bfeab273feb625111ca097d899d1de0affb8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 16 Dec 2015 19:19:52 +0100 Subject: [PATCH 104/355] added !important, according to avalanchesass/avalanche#95 --- packages/utility-font-family/scss/_font_family.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index dbc5c33..abf2a2d 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -26,7 +26,7 @@ @if variable-exists(font-a-family) { @mixin u-font-family($font-family: $font-a-family, $font-weight: 0) { - font-family: $font-family; + font-family: $font-family !important; @if $font-weight > 0 { font-weight: $font-weight; } From a16e05ff0eb06bab38fc78e6a58dba10e25ea893 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 6 Jan 2016 19:03:34 +0100 Subject: [PATCH 105/355] removed grid sizes because the actual size of the grid items is defined with utility classes, implemented "spaced" classes for vertical and horizonral spacing between grid items (variable between breakpoints), fixes #5 --- .../avalanchesass-object-grid/scss/_grid.scss | 225 ++++++++---------- 1 file changed, 101 insertions(+), 124 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 1087944..98c6417 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -7,171 +7,148 @@ */ // Variables $o-grid-flex: true !default; -$o-grid-item-count: 12 !default; -// Sizes -$o-grid-size-s: false !default; -$o-grid-size-m: false !default; -$o-grid-size-l: false !default; -$o-grid-size-xl: false !default; +// Spaced +$o-grid-spaced-s: false !default; +$o-grid-spaced-m: false !default; +$o-grid-spaced-l: false !default; +$o-grid-spaced-xl: false !default; + +$o-grid-spaced-vertical-s: false !default; +$o-grid-spaced-vertical-m: false !default; +$o-grid-spaced-vertical-l: false !default; +$o-grid-spaced-vertical-xl: false !default; + +$o-grid-spaced-horizontal-s: false !default; +$o-grid-spaced-horizontal-m: false !default; +$o-grid-spaced-horizontal-l: false !default; +$o-grid-spaced-horizontal-xl: false !default; // Spacing between items -$o-grid-spacing-s: $spacing-s !default; +$o-grid-spacing-s: $spacing-m !default; $o-grid-spacing-m: $spacing-m !default; $o-grid-spacing-l: $spacing-m !default; $o-grid-spacing-xl: $spacing-m !default; - - -/** - * Base - * - * Mobile first styles for all screen sizes - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
- */ -.o-grid { +@mixin o-grid($flex: $o-grid-flex) { @if $o-grid-flex { display: flex; flex-wrap: wrap; } @else { @include u-clearfix(); } - &.o-grid--spaced { - margin-left: -$o-grid-spacing-s; +} + +@mixin o-grid-spaced-vertical($spacing: $o-grid-spacing-m, $item-selector: '.o-grid__item') { + margin-top: -$spacing; + > #{$item-selector} { + margin-top: $spacing; } } -.o-grid__item { +@mixin o-grid-spaced-horizontal($spacing: $o-grid-spacing-m, $item-selector: '.o-grid__item') { + margin-left: -$spacing; + > #{$item-selector} { + padding-left: $spacing; + } +} + +@mixin o-grid-item($flex: $o-grid-flex) { @if $o-grid-flex != true { float: left; } @if $layout-box-sizing-reset == false { box-sizing: border-box; } - .o-grid--spaced & { - padding-left: $o-grid-spacing-s; - } } - - -@if $o-grid-size-s { - /** - * Small - * - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
- */ +/** + * Base + * + * Mobile first styles for all screen sizes + * + * @level X.X.X. + * @markup + *
+ *
Grid item
+ *
Grid item
+ *
+ */ +.o-grid { + @include o-grid(); } - - -@if $o-grid-size-m { - /** - * Medium - * - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
- */ - @media (min-width: $breakpoint-m) { - .o-grid { - &.o-grid--spaced { - margin-left: -$o-grid-spacing-m; - } +.o-grid--spaced { + @if $o-grid-spaced-s { + @include o-grid-spaced-vertical($o-grid-spacing-s); + @include o-grid-spaced-horizontal($o-grid-spacing-s); + } + @if $o-grid-spaced-m and $o-grid-spacing-s != $o-grid-spacing-m { + @media (min-width: $breakpoint-m) { + @include o-grid-spaced-vertical($o-grid-spacing-m); + @include o-grid-spaced-horizontal($o-grid-spacing-m); } - - .o-grid__item { - .o-grid--spaced & { - padding-left: $o-grid-spacing-m; - } + } + @if $o-grid-spaced-l and $o-grid-spacing-s != $o-grid-spacing-l { + @media (min-width: $breakpoint-l) { + @include o-grid-spaced-vertical($o-grid-spacing-l); + @include o-grid-spaced-horizontal($o-grid-spacing-l); + } + } + @if $o-grid-spaced-xl and $o-grid-spacing-s != $o-grid-spacing-xl { + @media (min-width: $breakpoint-xl) { + @include o-grid-spaced-vertical($o-grid-spacing-xl); + @include o-grid-spaced-horizontal($o-grid-spacing-xl); } } } - - -@if $o-grid-size-l { - /** - * Large - * - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
- */ - @media (min-width: $breakpoint-l) { - .o-grid { - &.o-grid--spaced { - margin-left: -$o-grid-spacing-l; - } +.o-grid--spaced-vertical { + @if $o-grid-spaced-vertical-s { + @include o-grid-spaced-vertical($o-grid-spacing-s); + } + @if $o-grid-spaced-vertical-m and $o-grid-spacing-s != $o-grid-spacing-m { + @media (min-width: $breakpoint-m) { + @include o-grid-spaced-vertical($o-grid-spacing-m); } - - .o-grid__item { - .o-grid--spaced & { - padding-left: $o-grid-spacing-l; - } + } + @if $o-grid-spaced-vertical-l and $o-grid-spacing-s != $o-grid-spacing-l { + @media (min-width: $breakpoint-l) { + @include o-grid-spaced-vertical($o-grid-spacing-l); + } + } + @if $o-grid-spaced-vertical-xl and $o-grid-spacing-s != $o-grid-spacing-xl { + @media (min-width: $breakpoint-xl) { + @include o-grid-spaced-vertical($o-grid-spacing-xl); } } } - - -@if $o-grid-size-xl { - /** - * X-Large - * - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
Grid item
- *
Grid item
- *
- */ - @media (min-width: $breakpoint-xl) { - .o-grid { - &.o-grid--spaced { - margin-left: -$o-grid-spacing-xl; - } +.o-grid--spaced-horizontal { + @if $o-grid-spaced-horizontal-s { + @include o-grid-spaced-horizontal($o-grid-spacing-s); + } + @if $o-grid-spaced-horizontal-m and $o-grid-spacing-s != $o-grid-spacing-m { + @media (min-width: $breakpoint-m) { + @include o-grid-spaced-horizontal($o-grid-spacing-m); } - - .o-grid__item { - .o-grid--spaced & { - padding-left: $o-grid-spacing-xl; - } + } + @if $o-grid-spaced-horizontal-l and $o-grid-spacing-s != $o-grid-spacing-l { + @media (min-width: $breakpoint-l) { + @include o-grid-spaced-horizontal($o-grid-spacing-l); + } + } + @if $o-grid-spaced-horizontal-xl and $o-grid-spacing-s != $o-grid-spacing-xl { + @media (min-width: $breakpoint-xl) { + @include o-grid-spaced-horizontal($o-grid-spacing-xl); } } } +.o-grid__item { + @include o-grid-item(); +} + From c0a885fb5c84f0ec11ce6e2c05163a03bd4bdf0c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 6 Jan 2016 20:38:40 +0100 Subject: [PATCH 106/355] removed the combination of vertical and horizontal spacing because of unecessary redundancy, enhanced the documentation and made it compatible with mdcss --- .../avalanchesass-object-grid/scss/_grid.scss | 187 ++++++++++-------- 1 file changed, 105 insertions(+), 82 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 98c6417..899d92b 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,35 +1,37 @@ +/*--- +section: Grid +--- + +Fluid width, responsive grid system. + +*/ /** - * Grid - * - * Fluid width, responsive grid system - * - * @level X.X. + * Variables */ -// Variables +// Flexbox grid system. $o-grid-flex: true !default; -// Spaced -$o-grid-spaced-s: false !default; -$o-grid-spaced-m: false !default; -$o-grid-spaced-l: false !default; -$o-grid-spaced-xl: false !default; - +// Vertical spacing between items. $o-grid-spaced-vertical-s: false !default; $o-grid-spaced-vertical-m: false !default; $o-grid-spaced-vertical-l: false !default; $o-grid-spaced-vertical-xl: false !default; +// Horizontal spacing between items. $o-grid-spaced-horizontal-s: false !default; $o-grid-spaced-horizontal-m: false !default; $o-grid-spaced-horizontal-l: false !default; $o-grid-spaced-horizontal-xl: false !default; -// Spacing between items +// Spacing size between items. $o-grid-spacing-s: $spacing-m !default; $o-grid-spacing-m: $spacing-m !default; $o-grid-spacing-l: $spacing-m !default; $o-grid-spacing-xl: $spacing-m !default; +/** + * Mixins + */ @mixin o-grid($flex: $o-grid-flex) { @if $o-grid-flex { display: flex; @@ -62,93 +64,114 @@ $o-grid-spacing-xl: $spacing-m !default; } } -/** - * Base - * - * Mobile first styles for all screen sizes - * - * @level X.X.X. - * @markup - *
- *
Grid item
- *
Grid item
- *
- */ + + +/*--- +title: Default +section: Grid +--- + +Default responsive grid without spacing between items. + +```example:html +
+
.u-width--6
+
.u-width--6
+
+``` +*/ .o-grid { @include o-grid(); } -.o-grid--spaced { - @if $o-grid-spaced-s { - @include o-grid-spaced-vertical($o-grid-spacing-s); - @include o-grid-spaced-horizontal($o-grid-spacing-s); - } - @if $o-grid-spaced-m and $o-grid-spacing-s != $o-grid-spacing-m { - @media (min-width: $breakpoint-m) { - @include o-grid-spaced-vertical($o-grid-spacing-m); - @include o-grid-spaced-horizontal($o-grid-spacing-m); - } - } - @if $o-grid-spaced-l and $o-grid-spacing-s != $o-grid-spacing-l { - @media (min-width: $breakpoint-l) { - @include o-grid-spaced-vertical($o-grid-spacing-l); - @include o-grid-spaced-horizontal($o-grid-spacing-l); - } - } - @if $o-grid-spaced-xl and $o-grid-spacing-s != $o-grid-spacing-xl { - @media (min-width: $breakpoint-xl) { - @include o-grid-spaced-vertical($o-grid-spacing-xl); - @include o-grid-spaced-horizontal($o-grid-spacing-xl); - } - } +.o-grid__item { + @include o-grid-item(); } -.o-grid--spaced-vertical { - @if $o-grid-spaced-vertical-s { - @include o-grid-spaced-vertical($o-grid-spacing-s); - } - @if $o-grid-spaced-vertical-m and $o-grid-spacing-s != $o-grid-spacing-m { - @media (min-width: $breakpoint-m) { - @include o-grid-spaced-vertical($o-grid-spacing-m); + + +@if $o-grid-spaced-vertical-s or $o-grid-spaced-vertical-m or $o-grid-spaced-vertical-l or $o-grid-spaced-vertical-xl or + $o-grid-spaced-horizontal-s or $o-grid-spaced-horizontal-m or $o-grid-spaced-horizontal-l or $o-grid-spaced-horizontal-xl { + /*--- + title: Spaced + section: Grid + --- + */ +} +@if $o-grid-spaced-vertical-s or $o-grid-spaced-vertical-m or $o-grid-spaced-vertical-l or $o-grid-spaced-vertical-xl { + /*--- + title: Vertical + section: Spaced + --- + + Vertical spacing between grid items. + + ```example:html +
+
.u-width--12
+
.u-width--12
+
+ ``` + */ + .o-grid--spaced-vertical { + @if $o-grid-spaced-vertical-s { + @include o-grid-spaced-vertical($o-grid-spacing-s); } - } - @if $o-grid-spaced-vertical-l and $o-grid-spacing-s != $o-grid-spacing-l { - @media (min-width: $breakpoint-l) { - @include o-grid-spaced-vertical($o-grid-spacing-l); + @if $o-grid-spaced-vertical-m and $o-grid-spacing-s != $o-grid-spacing-m { + @media (min-width: $breakpoint-m) { + @include o-grid-spaced-vertical($o-grid-spacing-m); + } } - } - @if $o-grid-spaced-vertical-xl and $o-grid-spacing-s != $o-grid-spacing-xl { - @media (min-width: $breakpoint-xl) { - @include o-grid-spaced-vertical($o-grid-spacing-xl); + @if $o-grid-spaced-vertical-l and $o-grid-spacing-s != $o-grid-spacing-l { + @media (min-width: $breakpoint-l) { + @include o-grid-spaced-vertical($o-grid-spacing-l); + } + } + @if $o-grid-spaced-vertical-xl and $o-grid-spacing-s != $o-grid-spacing-xl { + @media (min-width: $breakpoint-xl) { + @include o-grid-spaced-vertical($o-grid-spacing-xl); + } } } } -.o-grid--spaced-horizontal { - @if $o-grid-spaced-horizontal-s { - @include o-grid-spaced-horizontal($o-grid-spacing-s); - } - @if $o-grid-spaced-horizontal-m and $o-grid-spacing-s != $o-grid-spacing-m { - @media (min-width: $breakpoint-m) { - @include o-grid-spaced-horizontal($o-grid-spacing-m); +@if $o-grid-spaced-horizontal-s or $o-grid-spaced-horizontal-m or $o-grid-spaced-horizontal-l or $o-grid-spaced-horizontal-xl { + /*--- + title: Horizontal + section: Spaced + --- + + Horizontal spacing between grid items. + + ```example:html +
+
.u-width--6
+
.u-width--6
+
+ ``` + */ + .o-grid--spaced-horizontal { + @if $o-grid-spaced-horizontal-s { + @include o-grid-spaced-horizontal($o-grid-spacing-s); } - } - @if $o-grid-spaced-horizontal-l and $o-grid-spacing-s != $o-grid-spacing-l { - @media (min-width: $breakpoint-l) { - @include o-grid-spaced-horizontal($o-grid-spacing-l); + @if $o-grid-spaced-horizontal-m and $o-grid-spacing-s != $o-grid-spacing-m { + @media (min-width: $breakpoint-m) { + @include o-grid-spaced-horizontal($o-grid-spacing-m); + } } - } - @if $o-grid-spaced-horizontal-xl and $o-grid-spacing-s != $o-grid-spacing-xl { - @media (min-width: $breakpoint-xl) { - @include o-grid-spaced-horizontal($o-grid-spacing-xl); + @if $o-grid-spaced-horizontal-l and $o-grid-spacing-s != $o-grid-spacing-l { + @media (min-width: $breakpoint-l) { + @include o-grid-spaced-horizontal($o-grid-spacing-l); + } + } + @if $o-grid-spaced-horizontal-xl and $o-grid-spacing-s != $o-grid-spacing-xl { + @media (min-width: $breakpoint-xl) { + @include o-grid-spaced-horizontal($o-grid-spacing-xl); + } } } } -.o-grid__item { - @include o-grid-item(); -} - From 701a75965f654650240f03237a0c3c58a55a8084 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 12:15:00 +0100 Subject: [PATCH 107/355] optimized the mdcss documentation --- .../avalanchesass-object-grid/scss/_grid.scss | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 899d92b..8cdd980 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,9 +1,9 @@ /*--- -section: Grid +title: Grid +section: Object --- Fluid width, responsive grid system. - */ /** * Variables @@ -75,8 +75,18 @@ Default responsive grid without spacing between items. ```example:html
-
.u-width--6
-
.u-width--6
+
+
width: 50%
+
+
+
width: 50%
+
+
+
width: 50%
+
+
+
width: 50%
+
``` */ @@ -108,8 +118,12 @@ Default responsive grid without spacing between items. ```example:html
-
.u-width--12
-
.u-width--12
+
+
width: 100%
+
+
+
width: 100%
+
``` */ @@ -145,8 +159,18 @@ Default responsive grid without spacing between items. ```example:html
-
.u-width--6
-
.u-width--6
+
+
width: 50%
+
+
+
width: 50%
+
+
+
width: 50%
+
+
+
width: 50%
+
``` */ From 953289dc878eea307a5754b9cd1d26135c5e68ee Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 12:55:17 +0100 Subject: [PATCH 108/355] added a "TIP" in the documentation to use this package in combination with the width utiltiy package --- packages/avalanchesass-object-grid/scss/_grid.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 8cdd980..5fcfe29 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -4,6 +4,8 @@ section: Object --- Fluid width, responsive grid system. + +**TIP:** Most likely you want to use this package in combination with the [width utility package](https://github.com/avalanchesass/avalanche_utility_width). */ /** * Variables From 471aa44cc0539b1b2f004e5acc0072e6dc57de97 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 12:56:43 +0100 Subject: [PATCH 109/355] moved from bower to npm package handling --- packages/avalanchesass-object-grid/.gitignore | 1 - packages/avalanchesass-object-grid/bower.json | 28 ------------------- .../avalanchesass-object-grid/package.json | 19 +++++++++++++ 3 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 packages/avalanchesass-object-grid/bower.json create mode 100644 packages/avalanchesass-object-grid/package.json diff --git a/packages/avalanchesass-object-grid/.gitignore b/packages/avalanchesass-object-grid/.gitignore index 22ddb57..c219de4 100644 --- a/packages/avalanchesass-object-grid/.gitignore +++ b/packages/avalanchesass-object-grid/.gitignore @@ -1,3 +1,2 @@ .DS_Store .sass-cache -bower_components diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json deleted file mode 100644 index 5a64ce7..0000000 --- a/packages/avalanchesass-object-grid/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "avalanche: Object grid", - "version": "2.0.4", - "homepage": "https://github.com/avalanchesass/avalanche_object_grid", - "authors": [ - "Markus Oberlehner" - ], - "description": "CSS grid system", - "keywords": [ - "SASS", - "CSS", - "Grid" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_function_strip_unit": "^2.0.0", - "avalanche_system_variable": "^2.0.0", - "avalanche_utility_clearfix": "^2.0.0", - "avalanche_utility_width": "^2.0.0" - } -} diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json new file mode 100644 index 0000000..46b21d9 --- /dev/null +++ b/packages/avalanchesass-object-grid/package.json @@ -0,0 +1,19 @@ +{ + "name": "avalanche_object_grid", + "version": "3.0.0", + "description": "CSS grid system", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_object_grid.git" + }, + "author": "Markus Oberlehner", + "license": "GPL v2", + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" + }, + "homepage": "https://github.com/avalanchesass/avalanche_object_grid", + "dependencies": { + "avalanche_system_variable": "^3.0.0", + "avalanche_utility_clearfix": "^3.0.0" + } +} From 1182ccf40a101f55ff9d6cf9002650de6b0a0ee7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 17:33:58 +0100 Subject: [PATCH 110/355] implemented changes made to the variable system --- packages/avalanchesass-object-grid/package.json | 1 - packages/avalanchesass-object-grid/scss/_grid.scss | 3 --- 2 files changed, 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 46b21d9..e4c86e4 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -13,7 +13,6 @@ }, "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "dependencies": { - "avalanche_system_variable": "^3.0.0", "avalanche_utility_clearfix": "^3.0.0" } } diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 5fcfe29..17d17ee 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -61,9 +61,6 @@ $o-grid-spacing-xl: $spacing-m !default; @if $o-grid-flex != true { float: left; } - @if $layout-box-sizing-reset == false { - box-sizing: border-box; - } } From 865bedac6818f3fc5e6cfeb8075ba83c5309c1d2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 17:38:52 +0100 Subject: [PATCH 111/355] added base_layout dependency because of the box-sizing reset and changed dependency format to github notation --- packages/avalanchesass-object-grid/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index e4c86e4..241cbca 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -13,6 +13,7 @@ }, "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "dependencies": { - "avalanche_utility_clearfix": "^3.0.0" + "avalanche_base_layout": "avalanchesass/avalanche_base_layout#dev-3.0.0", + "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" } } From 675ccdf154f89f0b1963caf5801bb1fe46c71a7d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 18:54:27 +0100 Subject: [PATCH 112/355] updated documentation syntax do mdcss style and switched from bower to npm --- packages/generic-box-sizing-reset/.gitignore | 1 - packages/generic-box-sizing-reset/bower.json | 24 -------------- .../generic-box-sizing-reset/package.json | 15 +++++++++ .../scss/_layout.scss | 33 ++++++++----------- 4 files changed, 29 insertions(+), 44 deletions(-) delete mode 100644 packages/generic-box-sizing-reset/bower.json create mode 100644 packages/generic-box-sizing-reset/package.json diff --git a/packages/generic-box-sizing-reset/.gitignore b/packages/generic-box-sizing-reset/.gitignore index 22ddb57..c219de4 100644 --- a/packages/generic-box-sizing-reset/.gitignore +++ b/packages/generic-box-sizing-reset/.gitignore @@ -1,3 +1,2 @@ .DS_Store .sass-cache -bower_components diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json deleted file mode 100644 index cf6d146..0000000 --- a/packages/generic-box-sizing-reset/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "avalanche: Base layout", - "version": "2.0.3", - "homepage": "https://github.com/avalanchesass/avalanche_base_layout", - "authors": [ - "Markus Oberlehner" - ], - "description": "Basic layout", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } -} diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json new file mode 100644 index 0000000..27c977e --- /dev/null +++ b/packages/generic-box-sizing-reset/package.json @@ -0,0 +1,15 @@ +{ + "name": "avalanche_base_layout", + "version": "3.0.0", + "description": "Basic layout", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_base_layout.git" + }, + "author": "Markus Oberlehner", + "license": "GPL v2", + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_base_layout/issues" + }, + "homepage": "https://github.com/avalanchesass/avalanche_base_layout" +} diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss index 9fcc6fa..7ea31eb 100644 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ b/packages/generic-box-sizing-reset/scss/_layout.scss @@ -1,25 +1,20 @@ -/** - * Layout - * - * @level X.X. - */ +/*--- +title: Layout +section: Base +--- +*/ /** * Box sizing reset * - * Better box model
- * [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) - * - * @level X.X.X. + * Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) */ -@if $layout-box-sizing-reset { - html { - box-sizing: border-box; - } - * { - &, - &:before, - &:after { - box-sizing: inherit; - } +html { + box-sizing: border-box; +} +* { + &, + &:before, + &:after { + box-sizing: inherit; } } From c96ed7c0c762cade6038d3d7e52f1562f637040d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 21:18:15 +0100 Subject: [PATCH 113/355] readded bower.json (tree dependencies suck!) --- packages/avalanchesass-object-grid/bower.json | 22 +++++++++++++++++++ .../avalanchesass-object-grid/package.json | 19 ---------------- 2 files changed, 22 insertions(+), 19 deletions(-) create mode 100644 packages/avalanchesass-object-grid/bower.json delete mode 100644 packages/avalanchesass-object-grid/package.json diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json new file mode 100644 index 0000000..aa475d4 --- /dev/null +++ b/packages/avalanchesass-object-grid/bower.json @@ -0,0 +1,22 @@ +{ + "name": "avalanche_object_grid", + "description": "Grid system", + "version": "3.0.0", + "authors": [ + "Markus Oberlehner" + ], + "homepage": "https://github.com/avalanchesass/avalanche", + "license": "GPL v2", + "dependencies": { + "avalanche_base_layout": "avalanchesass/avalanche_base_layout#dev-3.0.0", + "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" + }, + "main": "scss/avalanche.scss", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json deleted file mode 100644 index 241cbca..0000000 --- a/packages/avalanchesass-object-grid/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "avalanche_object_grid", - "version": "3.0.0", - "description": "CSS grid system", - "repository": { - "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_grid.git" - }, - "author": "Markus Oberlehner", - "license": "GPL v2", - "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" - }, - "homepage": "https://github.com/avalanchesass/avalanche_object_grid", - "dependencies": { - "avalanche_base_layout": "avalanchesass/avalanche_base_layout#dev-3.0.0", - "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" - } -} From 525c4d0e9caf5fcb888c84260f3ba73254f2cd2c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 21:20:45 +0100 Subject: [PATCH 114/355] readded bower.json (tree dependencies suck!) --- packages/generic-box-sizing-reset/bower.json | 18 ++++++++++++++++++ packages/generic-box-sizing-reset/package.json | 15 --------------- 2 files changed, 18 insertions(+), 15 deletions(-) create mode 100644 packages/generic-box-sizing-reset/bower.json delete mode 100644 packages/generic-box-sizing-reset/package.json diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json new file mode 100644 index 0000000..1bce927 --- /dev/null +++ b/packages/generic-box-sizing-reset/bower.json @@ -0,0 +1,18 @@ +{ + "name": "avalanche_base_layout", + "description": "Basic layout", + "version": "3.0.0", + "authors": [ + "Markus Oberlehner" + ], + "homepage": "https://github.com/avalanchesass/avalanche_base_layout", + "license": "GPL v2", + "main": "scss/_layout.scss", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json deleted file mode 100644 index 27c977e..0000000 --- a/packages/generic-box-sizing-reset/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "avalanche_base_layout", - "version": "3.0.0", - "description": "Basic layout", - "repository": { - "type": "git", - "url": "https://github.com/avalanchesass/avalanche_base_layout.git" - }, - "author": "Markus Oberlehner", - "license": "GPL v2", - "bugs": { - "url": "https://github.com/avalanchesass/avalanche_base_layout/issues" - }, - "homepage": "https://github.com/avalanchesass/avalanche_base_layout" -} From 13fa834332f72fe4925077cf3e6daf4bed958312 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 7 Jan 2016 21:21:29 +0100 Subject: [PATCH 115/355] fixed copy paste error --- packages/avalanchesass-object-grid/bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index aa475d4..0afca67 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -5,13 +5,13 @@ "authors": [ "Markus Oberlehner" ], - "homepage": "https://github.com/avalanchesass/avalanche", + "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { "avalanche_base_layout": "avalanchesass/avalanche_base_layout#dev-3.0.0", "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" }, - "main": "scss/avalanche.scss", + "main": "scss/_grid.scss", "ignore": [ "**/.*", "node_modules", From 1f2b4c8ae40a2e107880fc974aec01b7312a46d1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 8 Jan 2016 10:10:46 +0100 Subject: [PATCH 116/355] updated the dependency the the new name of the box sizing reset package --- packages/avalanchesass-object-grid/bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 0afca67..4e9feed 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -8,7 +8,7 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { - "avalanche_base_layout": "avalanchesass/avalanche_base_layout#dev-3.0.0", + "avalanche_base_box_sizing_reset": "avalanchesass/avalanche_base_box_sizing_reset#dev-3.0.0", "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" }, "main": "scss/_grid.scss", From cb2e8637fbcc25946676bef19104b241f01bd61f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 8 Jan 2016 10:18:46 +0100 Subject: [PATCH 117/355] renamed the repository --- packages/generic-box-sizing-reset/README.md | 6 +++--- packages/generic-box-sizing-reset/bower.json | 8 ++++---- .../scss/_box_sizing_reset.scss | 17 ++++++++++++++++ .../scss/_layout.scss | 20 ------------------- 4 files changed, 24 insertions(+), 27 deletions(-) create mode 100644 packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss delete mode 100644 packages/generic-box-sizing-reset/scss/_layout.scss diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md index 6682103..a1b7047 100644 --- a/packages/generic-box-sizing-reset/README.md +++ b/packages/generic-box-sizing-reset/README.md @@ -1,6 +1,6 @@ -# avalanche: Base layout -Basic layout -https://github.com/avalanchesass/avalanche_base_layout +# avalanche_base_box_sizing_reset +Box sizing reset +https://github.com/avalanchesass/avalanche_base_box_sizing_reset ### Author Markus Oberlehner diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json index 1bce927..e885e04 100644 --- a/packages/generic-box-sizing-reset/bower.json +++ b/packages/generic-box-sizing-reset/bower.json @@ -1,13 +1,13 @@ { - "name": "avalanche_base_layout", - "description": "Basic layout", + "name": "avalanche_base_box_sizing_reset", + "description": "Box sizing reset", "version": "3.0.0", "authors": [ "Markus Oberlehner" ], - "homepage": "https://github.com/avalanchesass/avalanche_base_layout", + "homepage": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset", "license": "GPL v2", - "main": "scss/_layout.scss", + "main": "scss/_box_sizing_reset.scss", "ignore": [ "**/.*", "node_modules", diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss new file mode 100644 index 0000000..fa3288b --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss @@ -0,0 +1,17 @@ +/*--- +title: Box sizing reset +section: Base +--- + +Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) +*/ +html { + box-sizing: border-box; +} +* { + &, + &:before, + &:after { + box-sizing: inherit; + } +} diff --git a/packages/generic-box-sizing-reset/scss/_layout.scss b/packages/generic-box-sizing-reset/scss/_layout.scss deleted file mode 100644 index 7ea31eb..0000000 --- a/packages/generic-box-sizing-reset/scss/_layout.scss +++ /dev/null @@ -1,20 +0,0 @@ -/*--- -title: Layout -section: Base ---- -*/ -/** - * Box sizing reset - * - * Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) - */ -html { - box-sizing: border-box; -} -* { - &, - &:before, - &:after { - box-sizing: inherit; - } -} From cf1832fc7c11f16fad67ea33d01346c032547d37 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 8 Jan 2016 10:22:32 +0100 Subject: [PATCH 118/355] changed the README title --- packages/avalanchesass-object-grid/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 2ac713a..ac28c62 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,4 +1,4 @@ -# avalanche: Object grid +# avalanche_object_grid CSS grid system https://github.com/avalanchesass/avalanche_object_grid From 12c1ef19d56c22dadc4b13d61713f3f5086acd6e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 8 Jan 2016 15:06:15 +0100 Subject: [PATCH 119/355] added "extract" placeholders --- packages/avalanchesass-object-grid/scss/_grid.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 17d17ee..09f8644 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,3 +1,4 @@ +/* extract=object_grid.css */ /*--- title: Grid section: Object @@ -242,3 +243,4 @@ $u-order-max: 8; order: 9999; } } +/* end extract */ From 34c32ac9ee50505bbf6d6676f56c11c87a70d11f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 8 Jan 2016 15:08:51 +0100 Subject: [PATCH 120/355] added "extract" placeholders --- packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss index fa3288b..2e15c6d 100644 --- a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss +++ b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss @@ -1,3 +1,4 @@ +/* extract=base_box_sizing_reset.css */ /*--- title: Box sizing reset section: Base @@ -15,3 +16,4 @@ html { box-sizing: inherit; } } +/* end extract */ From 5d9860f806ae829ac792517f77ce16d5971cb2b5 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 9 Jan 2016 11:45:11 +0100 Subject: [PATCH 121/355] use double colon for pseudo elements, according to avalanchesass/avalanche#115 --- packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss index 2e15c6d..9b7e643 100644 --- a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss +++ b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss @@ -11,8 +11,8 @@ html { } * { &, - &:before, - &:after { + &::before, + &::after { box-sizing: inherit; } } From 384f263c0e65efe92cf7a41fa0875fecea3f0ba7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 9 Jan 2016 13:14:31 +0100 Subject: [PATCH 122/355] switched from pure variables to maps and lists and made the code more DRY --- .../avalanchesass-object-grid/scss/_grid.scss | 119 ++++-------------- 1 file changed, 25 insertions(+), 94 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 09f8644..1c5c13e 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -15,22 +15,18 @@ Fluid width, responsive grid system. $o-grid-flex: true !default; // Vertical spacing between items. -$o-grid-spaced-vertical-s: false !default; -$o-grid-spaced-vertical-m: false !default; -$o-grid-spaced-vertical-l: false !default; -$o-grid-spaced-vertical-xl: false !default; +$o-grid-spaced-vertical-breakpoints: () !default; // Horizontal spacing between items. -$o-grid-spaced-horizontal-s: false !default; -$o-grid-spaced-horizontal-m: false !default; -$o-grid-spaced-horizontal-l: false !default; -$o-grid-spaced-horizontal-xl: false !default; +$o-grid-spaced-horizontal-breakpoints: () !default; // Spacing size between items. -$o-grid-spacing-s: $spacing-m !default; -$o-grid-spacing-m: $spacing-m !default; -$o-grid-spacing-l: $spacing-m !default; -$o-grid-spacing-xl: $spacing-m !default; +$o-grid-spacing-sizes: ( + s: map-get($spacing, 'm'), + m: map-get($spacing, 'm'), + l: map-get($spacing, 'm'), + xl: map-get($spacing, 'm') +) !default; /** * Mixins @@ -100,15 +96,14 @@ Default responsive grid without spacing between items. -@if $o-grid-spaced-vertical-s or $o-grid-spaced-vertical-m or $o-grid-spaced-vertical-l or $o-grid-spaced-vertical-xl or - $o-grid-spaced-horizontal-s or $o-grid-spaced-horizontal-m or $o-grid-spaced-horizontal-l or $o-grid-spaced-horizontal-xl { +@if length($o-grid-spaced-vertical-breakpoints) >= 1 or length($o-grid-spaced-horizontal-breakpoints) >= 1 { /*--- title: Spaced section: Grid --- */ } -@if $o-grid-spaced-vertical-s or $o-grid-spaced-vertical-m or $o-grid-spaced-vertical-l or $o-grid-spaced-vertical-xl { +@if length($o-grid-spaced-vertical-breakpoints) >= 1 { /*--- title: Vertical section: Spaced @@ -128,28 +123,20 @@ Default responsive grid without spacing between items. ``` */ .o-grid--spaced-vertical { - @if $o-grid-spaced-vertical-s { - @include o-grid-spaced-vertical($o-grid-spacing-s); + @if index($o-grid-spaced-vertical-breakpoints, 's') { + @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, 's')); } - @if $o-grid-spaced-vertical-m and $o-grid-spacing-s != $o-grid-spacing-m { - @media (min-width: $breakpoint-m) { - @include o-grid-spaced-vertical($o-grid-spacing-m); - } - } - @if $o-grid-spaced-vertical-l and $o-grid-spacing-s != $o-grid-spacing-l { - @media (min-width: $breakpoint-l) { - @include o-grid-spaced-vertical($o-grid-spacing-l); - } - } - @if $o-grid-spaced-vertical-xl and $o-grid-spacing-s != $o-grid-spacing-xl { - @media (min-width: $breakpoint-xl) { - @include o-grid-spaced-vertical($o-grid-spacing-xl); + @each $breakpoint-key in $o-grid-spaced-vertical-breakpoints { + @if map-get($o-grid-spacing-sizes, 's') != map-get($o-grid-spacing-sizes, $breakpoint-key) { + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, $breakpoint-key)); + } } } } } -@if $o-grid-spaced-horizontal-s or $o-grid-spaced-horizontal-m or $o-grid-spaced-horizontal-l or $o-grid-spaced-horizontal-xl { +@if length($o-grid-spaced-horizontal-breakpoints) >= 1 { /*--- title: Horizontal section: Spaced @@ -175,72 +162,16 @@ Default responsive grid without spacing between items. ``` */ .o-grid--spaced-horizontal { - @if $o-grid-spaced-horizontal-s { - @include o-grid-spaced-horizontal($o-grid-spacing-s); - } - @if $o-grid-spaced-horizontal-m and $o-grid-spacing-s != $o-grid-spacing-m { - @media (min-width: $breakpoint-m) { - @include o-grid-spaced-horizontal($o-grid-spacing-m); - } + @if index($o-grid-spaced-horizontal-breakpoints, 's') { + @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, 's')); } - @if $o-grid-spaced-horizontal-l and $o-grid-spacing-s != $o-grid-spacing-l { - @media (min-width: $breakpoint-l) { - @include o-grid-spaced-horizontal($o-grid-spacing-l); + @each $breakpoint-key in $o-grid-spaced-horizontal-breakpoints { + @if map-get($o-grid-spacing-sizes, 's') != map-get($o-grid-spacing-sizes, $breakpoint-key) { + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, $breakpoint-key)); + } } } - @if $o-grid-spaced-horizontal-xl and $o-grid-spacing-s != $o-grid-spacing-xl { - @media (min-width: $breakpoint-xl) { - @include o-grid-spaced-horizontal($o-grid-spacing-xl); - } - } - } -} - - - - - -/** - * Order MOVE THIS TO A UTILITY PACKAGE - * DISPLAY WARNING IF FLEX GRID IS DISABLED - * - * Reorder flex items - * - * @level X.X. - * @markup - *
- *
Grid item 1
- *
Grid item 2
- *
Grid item 3
- *
Grid item 4
- *
Grid item 5
- *
Grid item 6
- *
Grid item 7
- *
Grid item 8
- *
Grid item 9
- *
Grid item 10
- *
Grid item 11
- *
Grid item 12
- *
Grid item 13
- *
- */ -@media (min-width: $breakpoint-m) { - .u-order-start\@m { - order: -9999; - } -} -$u-order-max: 8; -@for $i from 1 through $u-order-max { - @media (min-width: $breakpoint-m) { - .u-order-#{$i}\@m { - order: $i - $u-order-max; - } - } -} - -@media (min-width: $breakpoint-m) { - .u-order-end\@m { - order: 9999; } } /* end extract */ From 5095c50ce3d9661e979a5fea15aa6eb93a793f0d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 9 Jan 2016 14:01:35 +0100 Subject: [PATCH 123/355] initial commit --- packages/utility-order/.gitignore | 2 + packages/utility-order/LICENSE | 340 ++++++++++++++++++++++++ packages/utility-order/README.md | 10 + packages/utility-order/bower.json | 18 ++ packages/utility-order/scss/_order.scss | 40 +++ 5 files changed, 410 insertions(+) create mode 100644 packages/utility-order/.gitignore create mode 100644 packages/utility-order/LICENSE create mode 100644 packages/utility-order/README.md create mode 100644 packages/utility-order/bower.json create mode 100644 packages/utility-order/scss/_order.scss diff --git a/packages/utility-order/.gitignore b/packages/utility-order/.gitignore new file mode 100644 index 0000000..c219de4 --- /dev/null +++ b/packages/utility-order/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +.sass-cache diff --git a/packages/utility-order/LICENSE b/packages/utility-order/LICENSE new file mode 100644 index 0000000..f1f9389 --- /dev/null +++ b/packages/utility-order/LICENSE @@ -0,0 +1,340 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/packages/utility-order/README.md b/packages/utility-order/README.md new file mode 100644 index 0000000..0d5f73a --- /dev/null +++ b/packages/utility-order/README.md @@ -0,0 +1,10 @@ +# avalanche_utility_order +Order +https://github.com/avalanchesass/avalanche_utility_order + +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner + +### License +GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/packages/utility-order/bower.json b/packages/utility-order/bower.json new file mode 100644 index 0000000..39a9260 --- /dev/null +++ b/packages/utility-order/bower.json @@ -0,0 +1,18 @@ +{ + "name": "avalanche_utility_order", + "description": "Order", + "version": "3.0.0", + "authors": [ + "Markus Oberlehner" + ], + "homepage": "https://github.com/avalanchesass/avalanche_utility_order", + "license": "GPL v2", + "main": "scss/_order.scss", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss new file mode 100644 index 0000000..34f556a --- /dev/null +++ b/packages/utility-order/scss/_order.scss @@ -0,0 +1,40 @@ +/* extract=utility_order.css */ +/*--- +title: Order +section: Utility +--- + +Reorder elements. + +```example:html +
+
Item 1
+
Item 2
+
Item 3
+
Item 4
+
Item 5
+
Item 6
+
Item 7
+
+``` +*/ +@media (min-width: $breakpoint-m) { + .u-order-start\@m { + order: -9999; + } +} +$u-order-max: 8; +@for $i from 1 through $u-order-max { + @media (min-width: $breakpoint-m) { + .u-order-#{$i}\@m { + order: $i - $u-order-max; + } + } +} + +@media (min-width: $breakpoint-m) { + .u-order-end\@m { + order: 9999; + } +} +/* end extract */ From bfa51a03af6a9c917f0b0d88c2dd8215984cc51c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 9 Jan 2016 14:05:07 +0100 Subject: [PATCH 124/355] revamped from cocept to clean code --- packages/utility-order/scss/_order.scss | 53 +++++++++++++++++++------ 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 34f556a..5e38bfb 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -18,23 +18,50 @@ Reorder elements.
``` */ -@media (min-width: $breakpoint-m) { - .u-order-start\@m { - order: -9999; - } +/** + * Variables + */ +$u-order-max: 8 !default; + +// Breakpoints +$u-order-breakpoints: ('m') !default; + +/** + * Mixins + */ +@mixin u-order($order: 1, $order-max: $u-order-max) { + order: $order - $order-max; +} + +@mixin u-order-start($order: -9999) { + order: $order; +} + +@mixin u-order-end($order: 9999) { + order: $order; } -$u-order-max: 8; -@for $i from 1 through $u-order-max { - @media (min-width: $breakpoint-m) { - .u-order-#{$i}\@m { - order: $i - $u-order-max; + + + +@each $breakpoint-key in $u-order-breakpoints { + @for $i from 1 through $u-order-max { + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + .u-order-#{$i}\@#{$breakpoint-key} { + @include u-order($i); + } } } -} -@media (min-width: $breakpoint-m) { - .u-order-end\@m { - order: 9999; + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + .u-order-start\@#{$breakpoint-key} { + @include u-order-start(); + } + } + + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + .u-order-end\@#{$breakpoint-key} { + @include u-order-end(); + } } } /* end extract */ From af234a563201c95c5c1a01fe5e00b1f20f0051c9 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 10 Jan 2016 15:59:17 +0100 Subject: [PATCH 125/355] changed the extraction tag syntax to match latest changes in avalanche --- packages/utility-order/scss/_order.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 5e38bfb..733c4bd 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -1,4 +1,4 @@ -/* extract=utility_order.css */ +/* extract utility_order.css */ /*--- title: Order section: Utility @@ -64,4 +64,4 @@ $u-order-breakpoints: ('m') !default; } } } -/* end extract */ +/* end extract utility_order.css */ From abcc027e300bd16d237fa5b648cd35217c3e6769 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 10 Jan 2016 16:01:00 +0100 Subject: [PATCH 126/355] changed the extraction tag syntax to match latest changes in avalanche --- packages/avalanchesass-object-grid/scss/_grid.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 1c5c13e..b958b80 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,4 +1,4 @@ -/* extract=object_grid.css */ +/* extract object_grid.css */ /*--- title: Grid section: Object @@ -174,4 +174,4 @@ Default responsive grid without spacing between items. } } } -/* end extract */ +/* end extract object_grid.css */ From 06016d8c4d979f1f295166bd98383d6179611a41 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 10 Jan 2016 16:01:28 +0100 Subject: [PATCH 127/355] changed the extraction tag syntax to match latest changes in avalanche --- packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss index 9b7e643..1075480 100644 --- a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss +++ b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss @@ -1,4 +1,4 @@ -/* extract=base_box_sizing_reset.css */ +/* extract base_box_sizing_reset.css */ /*--- title: Box sizing reset section: Base @@ -16,4 +16,4 @@ html { box-sizing: inherit; } } -/* end extract */ +/* end extract base_box_sizing_reset.css */ From 316b96d2bf1450abdcaf390fecd91c1d9eec9c50 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 Jan 2016 18:50:27 +0100 Subject: [PATCH 128/355] unified map-get syntax, according to #136 --- .../avalanchesass-object-grid/scss/_grid.scss | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index b958b80..b141c7e 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -22,10 +22,10 @@ $o-grid-spaced-horizontal-breakpoints: () !default; // Spacing size between items. $o-grid-spacing-sizes: ( - s: map-get($spacing, 'm'), - m: map-get($spacing, 'm'), - l: map-get($spacing, 'm'), - xl: map-get($spacing, 'm') + s: map-get($spacing, m), + m: map-get($spacing, m), + l: map-get($spacing, m), + xl: map-get($spacing, m) ) !default; /** @@ -123,11 +123,11 @@ Default responsive grid without spacing between items. ``` */ .o-grid--spaced-vertical { - @if index($o-grid-spaced-vertical-breakpoints, 's') { - @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, 's')); + @if index($o-grid-spaced-vertical-breakpoints, s) { + @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, s)); } @each $breakpoint-key in $o-grid-spaced-vertical-breakpoints { - @if map-get($o-grid-spacing-sizes, 's') != map-get($o-grid-spacing-sizes, $breakpoint-key) { + @if map-get($o-grid-spacing-sizes, s) != map-get($o-grid-spacing-sizes, $breakpoint-key) { @media (min-width: map-get($breakpoints, $breakpoint-key)) { @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, $breakpoint-key)); } @@ -162,11 +162,11 @@ Default responsive grid without spacing between items. ``` */ .o-grid--spaced-horizontal { - @if index($o-grid-spaced-horizontal-breakpoints, 's') { - @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, 's')); + @if index($o-grid-spaced-horizontal-breakpoints, s) { + @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, s)); } @each $breakpoint-key in $o-grid-spaced-horizontal-breakpoints { - @if map-get($o-grid-spacing-sizes, 's') != map-get($o-grid-spacing-sizes, $breakpoint-key) { + @if map-get($o-grid-spacing-sizes, s) != map-get($o-grid-spacing-sizes, $breakpoint-key) { @media (min-width: map-get($breakpoints, $breakpoint-key)) { @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, $breakpoint-key)); } From 0b2e65eb61fef0c43c9fa85b13d38d55e3f95555 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 Jan 2016 18:55:56 +0100 Subject: [PATCH 129/355] unified map-get syntax, according to #136 --- packages/utility-order/scss/_order.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 733c4bd..15ca4d2 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -24,7 +24,7 @@ Reorder elements. $u-order-max: 8 !default; // Breakpoints -$u-order-breakpoints: ('m') !default; +$u-order-breakpoints: (m) !default; /** * Mixins From 37fd9c04bc2244a83e4a213facbadd904a79319f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 Jan 2016 20:05:21 +0100 Subject: [PATCH 130/355] changed description --- packages/avalanchesass-object-grid/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index ac28c62..1cb4026 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,5 +1,5 @@ # avalanche_object_grid -CSS grid system +Fluid width, responsive grid system. https://github.com/avalanchesass/avalanche_object_grid ### Author From 6f7ee9638acc4ccf7155e8e4f0ee63de99c36c90 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 Jan 2016 20:06:21 +0100 Subject: [PATCH 131/355] moved mixins to separate repository --- packages/avalanchesass-object-grid/bower.json | 1 + .../avalanchesass-object-grid/scss/_grid.scss | 43 ------------------- 2 files changed, 1 insertion(+), 43 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 4e9feed..862d1b3 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -8,6 +8,7 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { + "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0", "avalanche_base_box_sizing_reset": "avalanchesass/avalanche_base_box_sizing_reset#dev-3.0.0", "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" }, diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index b141c7e..4a5bf3c 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -11,55 +11,12 @@ Fluid width, responsive grid system. /** * Variables */ -// Flexbox grid system. -$o-grid-flex: true !default; - // Vertical spacing between items. $o-grid-spaced-vertical-breakpoints: () !default; // Horizontal spacing between items. $o-grid-spaced-horizontal-breakpoints: () !default; -// Spacing size between items. -$o-grid-spacing-sizes: ( - s: map-get($spacing, m), - m: map-get($spacing, m), - l: map-get($spacing, m), - xl: map-get($spacing, m) -) !default; - -/** - * Mixins - */ -@mixin o-grid($flex: $o-grid-flex) { - @if $o-grid-flex { - display: flex; - flex-wrap: wrap; - } @else { - @include u-clearfix(); - } -} - -@mixin o-grid-spaced-vertical($spacing: $o-grid-spacing-m, $item-selector: '.o-grid__item') { - margin-top: -$spacing; - > #{$item-selector} { - margin-top: $spacing; - } -} - -@mixin o-grid-spaced-horizontal($spacing: $o-grid-spacing-m, $item-selector: '.o-grid__item') { - margin-left: -$spacing; - > #{$item-selector} { - padding-left: $spacing; - } -} - -@mixin o-grid-item($flex: $o-grid-flex) { - @if $o-grid-flex != true { - float: left; - } -} - /*--- From c638c1af4f475637fbfa5825b0cae08c76cf3fc0 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 12 Jan 2016 20:21:11 +0100 Subject: [PATCH 132/355] removed dependencies that are now defined in the grid mixin package --- packages/avalanchesass-object-grid/bower.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json index 862d1b3..f71230d 100644 --- a/packages/avalanchesass-object-grid/bower.json +++ b/packages/avalanchesass-object-grid/bower.json @@ -8,9 +8,7 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { - "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0", - "avalanche_base_box_sizing_reset": "avalanchesass/avalanche_base_box_sizing_reset#dev-3.0.0", - "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" + "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0" }, "main": "scss/_grid.scss", "ignore": [ From 09c1afbccf40221e53697080af25bf9ac65696df Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 Jan 2016 21:53:43 +0100 Subject: [PATCH 133/355] revamped the package so the horizontal and vertical spaced classes use BEMIT @ extended classes instead of fixed breakpoints, fixes #9 --- .../avalanchesass-object-grid/scss/_grid.scss | 152 ++++++++++++------ 1 file changed, 105 insertions(+), 47 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 4a5bf3c..3440c73 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -11,11 +11,21 @@ Fluid width, responsive grid system. /** * Variables */ -// Vertical spacing between items. -$o-grid-spaced-vertical-breakpoints: () !default; +$o-grid-spaced-vertical-sizes: (m) !default; +$o-grid-spaced-vertical-sizes-breakpoints: ( + s: (), + m: (), + l: (), + xl: () +) !default; -// Horizontal spacing between items. -$o-grid-spaced-horizontal-breakpoints: () !default; +$o-grid-spaced-horizontal-sizes: (m) !default; +$o-grid-spaced-horizontal-sizes-breakpoints: ( + s: (), + m: (), + l: (), + xl: () +) !default; @@ -53,79 +63,127 @@ Default responsive grid without spacing between items. -@if length($o-grid-spaced-vertical-breakpoints) >= 1 or length($o-grid-spaced-horizontal-breakpoints) >= 1 { +@if length($o-grid-spaced-vertical-sizes) >= 1 or length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Spaced section: Grid --- */ } -@if length($o-grid-spaced-vertical-breakpoints) >= 1 { +@if length($o-grid-spaced-vertical-sizes) >= 1 { /*--- title: Vertical section: Spaced --- Vertical spacing between grid items. + */ + $o-grid-spaced-vertical-selector: '.o-grid--spaced-vertical'; + @each $o-grid-spaced-size in $o-grid-spaced-vertical-sizes { + /*--- + title: Size: #{$o-grid-spaced-size} + section: Vertical + --- - ```example:html -
-
-
width: 100%
-
-
-
width: 100%
-
+```example:html +
+
+
width: 100%
- ``` - */ - .o-grid--spaced-vertical { - @if index($o-grid-spaced-vertical-breakpoints, s) { - @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, s)); +
+
width: 100%
+
+
+``` + */ + #{$o-grid-spaced-vertical-selector}--#{$o-grid-spaced-size} { + @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-size)); } - @each $breakpoint-key in $o-grid-spaced-vertical-breakpoints { - @if map-get($o-grid-spacing-sizes, s) != map-get($o-grid-spacing-sizes, $breakpoint-key) { - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - @include o-grid-spaced-vertical(map-get($o-grid-spacing-sizes, $breakpoint-key)); + } + @each $o-grid-spaced-breakpoints in $o-grid-spaced-vertical-sizes-breakpoints { + $o-grid-spaced-size: nth($o-grid-spaced-breakpoints, 1); + $o-grid-spaced-breakpoints: nth($o-grid-spaced-breakpoints, 2); + + @each $breakpoint-key in $o-grid-spaced-breakpoints { + /*--- + title: Size: #{$o-grid-spaced-size}@#{$breakpoint-key} + section: Vertical + --- + +```example:html +
+
+
width: 100%
+
+
+
width: 100%
+
+
+``` + */ + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + #{$o-grid-spaced-vertical-selector}--#{$o-grid-spaced-size}\@#{$breakpoint-key} { + @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-size)); } } } } } -@if length($o-grid-spaced-horizontal-breakpoints) >= 1 { +@if length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Horizontal section: Spaced --- Horizontal spacing between grid items. + */ + $o-grid-spaced-horizontal-selector: '.o-grid--spaced-horizontal'; + @each $o-grid-spaced-size in $o-grid-spaced-horizontal-sizes { + /*--- + title: Size: #{$o-grid-spaced-size} + section: Horizontal + --- - ```example:html -
-
-
width: 50%
-
-
-
width: 50%
-
-
-
width: 50%
-
-
-
width: 50%
-
+```example:html +
+
+
width: 50%
- ``` - */ - .o-grid--spaced-horizontal { - @if index($o-grid-spaced-horizontal-breakpoints, s) { - @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, s)); +
+
width: 50%
+
+
+``` + */ + #{$o-grid-spaced-horizontal-selector}--#{$o-grid-spaced-size} { + @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-size)); } - @each $breakpoint-key in $o-grid-spaced-horizontal-breakpoints { - @if map-get($o-grid-spacing-sizes, s) != map-get($o-grid-spacing-sizes, $breakpoint-key) { - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - @include o-grid-spaced-horizontal(map-get($o-grid-spacing-sizes, $breakpoint-key)); + } + @each $o-grid-spaced-breakpoints in $o-grid-spaced-horizontal-sizes-breakpoints { + $o-grid-spaced-size: nth($o-grid-spaced-breakpoints, 1); + $o-grid-spaced-breakpoints: nth($o-grid-spaced-breakpoints, 2); + + @each $breakpoint-key in $o-grid-spaced-breakpoints { + /*--- + title: Size: #{$o-grid-spaced-size}@#{$breakpoint-key} + section: Horizontal + --- + +```example:html +
+
+
width: 50%
+
+
+
width: 50%
+
+
+``` + */ + @media (min-width: map-get($breakpoints, $breakpoint-key)) { + #{$o-grid-spaced-horizontal-selector}--#{$o-grid-spaced-size}\@#{$breakpoint-key} { + @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-size)); } } } From 189f8105c362f8cf95c5e4dbaddc98a8f844170a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 14 Jan 2016 22:08:23 +0100 Subject: [PATCH 134/355] made the default variables simpler --- packages/avalanchesass-object-grid/scss/_grid.scss | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 3440c73..c4b5b1f 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -13,18 +13,12 @@ Fluid width, responsive grid system. */ $o-grid-spaced-vertical-sizes: (m) !default; $o-grid-spaced-vertical-sizes-breakpoints: ( - s: (), - m: (), - l: (), - xl: () + m: () ) !default; $o-grid-spaced-horizontal-sizes: (m) !default; $o-grid-spaced-horizontal-sizes-breakpoints: ( - s: (), - m: (), - l: (), - xl: () + m: () ) !default; From 2ea777641c529534c689596e7f97ce6f9d4d6bf5 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 14:33:09 +0100 Subject: [PATCH 135/355] optimized variable naming and implemented "private" variable naming convention --- .../avalanchesass-object-grid/scss/_grid.scss | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index c4b5b1f..b133c03 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -12,12 +12,12 @@ Fluid width, responsive grid system. * Variables */ $o-grid-spaced-vertical-sizes: (m) !default; -$o-grid-spaced-vertical-sizes-breakpoints: ( +$o-grid-spaced-vertical-sizes-with-breakpoints: ( m: () ) !default; $o-grid-spaced-horizontal-sizes: (m) !default; -$o-grid-spaced-horizontal-sizes-breakpoints: ( +$o-grid-spaced-horizontal-sizes-with-breakpoints: ( m: () ) !default; @@ -72,15 +72,16 @@ Default responsive grid without spacing between items. Vertical spacing between grid items. */ - $o-grid-spaced-vertical-selector: '.o-grid--spaced-vertical'; - @each $o-grid-spaced-size in $o-grid-spaced-vertical-sizes { + $-class-name: 'o-grid--spaced-vertical'; + $-selector: '.#{$-class-name}'; + @each $-size in $o-grid-spaced-vertical-sizes { /*--- - title: Size: #{$o-grid-spaced-size} + title: Size: #{$-size} section: Vertical --- ```example:html -
+
width: 100%
@@ -90,22 +91,22 @@ Default responsive grid without spacing between items.
``` */ - #{$o-grid-spaced-vertical-selector}--#{$o-grid-spaced-size} { - @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-size)); + #{$-selector}--#{$-size} { + @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } - @each $o-grid-spaced-breakpoints in $o-grid-spaced-vertical-sizes-breakpoints { - $o-grid-spaced-size: nth($o-grid-spaced-breakpoints, 1); - $o-grid-spaced-breakpoints: nth($o-grid-spaced-breakpoints, 2); + @each $-size-and-breakpoints in $o-grid-spaced-vertical-sizes-with-breakpoints { + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); - @each $breakpoint-key in $o-grid-spaced-breakpoints { + @each $-breakpoint in $-breakpoints { /*--- - title: Size: #{$o-grid-spaced-size}@#{$breakpoint-key} + title: Size: #{$-size}@#{$-breakpoint} section: Vertical --- ```example:html -
+
width: 100%
@@ -115,9 +116,9 @@ Default responsive grid without spacing between items.
``` */ - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - #{$o-grid-spaced-vertical-selector}--#{$o-grid-spaced-size}\@#{$breakpoint-key} { - @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-size)); + @media (min-width: map-get($breakpoints, $-breakpoint)) { + #{$-selector}--#{$-size}\@#{$-breakpoint} { + @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } } @@ -132,15 +133,16 @@ Default responsive grid without spacing between items. Horizontal spacing between grid items. */ - $o-grid-spaced-horizontal-selector: '.o-grid--spaced-horizontal'; - @each $o-grid-spaced-size in $o-grid-spaced-horizontal-sizes { + $-class-name: 'o-grid--spaced-horizontal'; + $-selector: '.#{$-class-name}'; + @each $-size in $o-grid-spaced-horizontal-sizes { /*--- - title: Size: #{$o-grid-spaced-size} + title: Size: #{$-size} section: Horizontal --- ```example:html -
+
width: 50%
@@ -150,22 +152,22 @@ Default responsive grid without spacing between items.
``` */ - #{$o-grid-spaced-horizontal-selector}--#{$o-grid-spaced-size} { - @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-size)); + #{$-selector}--#{$-size} { + @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } - @each $o-grid-spaced-breakpoints in $o-grid-spaced-horizontal-sizes-breakpoints { - $o-grid-spaced-size: nth($o-grid-spaced-breakpoints, 1); - $o-grid-spaced-breakpoints: nth($o-grid-spaced-breakpoints, 2); + @each $-size-and-breakpoints in $o-grid-spaced-horizontal-sizes-with-breakpoints { + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); - @each $breakpoint-key in $o-grid-spaced-breakpoints { + @each $-breakpoint in $-breakpoints { /*--- - title: Size: #{$o-grid-spaced-size}@#{$breakpoint-key} + title: Size: #{$-size}@#{$-breakpoint} section: Horizontal --- ```example:html -
+
width: 50%
@@ -175,9 +177,9 @@ Default responsive grid without spacing between items.
``` */ - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - #{$o-grid-spaced-horizontal-selector}--#{$o-grid-spaced-size}\@#{$breakpoint-key} { - @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-size)); + @media (min-width: map-get($breakpoints, $-breakpoint)) { + #{$-selector}--#{$-size}\@#{$-breakpoint} { + @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } } From 911d47dc297cc08c6b6c510a0c185fb97e1cde52 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 14:42:21 +0100 Subject: [PATCH 136/355] moved back the flex grid config variable from the mixin to this package --- packages/avalanchesass-object-grid/scss/_grid.scss | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index b133c03..70ecfee 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -11,6 +11,9 @@ Fluid width, responsive grid system. /** * Variables */ +// Flexbox grid system. +$o-grid-flex: true !default; + $o-grid-spaced-vertical-sizes: (m) !default; $o-grid-spaced-vertical-sizes-with-breakpoints: ( m: () @@ -48,11 +51,11 @@ Default responsive grid without spacing between items. ``` */ .o-grid { - @include o-grid(); + @include o-grid($o-grid-flex); } .o-grid__item { - @include o-grid-item(); + @include o-grid-item($o-grid-flex); } From 6e39b758ae7811ce58c6b8e95529c850ab74416a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 15:03:17 +0100 Subject: [PATCH 137/355] added a description for the config variables --- packages/avalanchesass-object-grid/scss/_grid.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 70ecfee..7b5af75 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -14,12 +14,21 @@ Fluid width, responsive grid system. // Flexbox grid system. $o-grid-flex: true !default; +// Vertical spacing sizes. $o-grid-spaced-vertical-sizes: (m) !default; +// Vertical spacing sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which vertical spacing classes should be generated. $o-grid-spaced-vertical-sizes-with-breakpoints: ( m: () ) !default; +// Horizontal spacing sizes. $o-grid-spaced-horizontal-sizes: (m) !default; +// Horizontal spacing sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which horizontal spacing classes should be +// generated. $o-grid-spaced-horizontal-sizes-with-breakpoints: ( m: () ) !default; From 69414f10d921f05fd12e57765f3d4e8ea2d9cf25 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 18:21:08 +0100 Subject: [PATCH 138/355] implemented "private" variable naming convention --- packages/utility-order/scss/_order.scss | 32 ++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 15ca4d2..7fe9cef 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -21,7 +21,7 @@ Reorder elements. /** * Variables */ -$u-order-max: 8 !default; +$u-order-steps: 8 !default; // Breakpoints $u-order-breakpoints: (m) !default; @@ -29,37 +29,37 @@ $u-order-breakpoints: (m) !default; /** * Mixins */ -@mixin u-order($order: 1, $order-max: $u-order-max) { - order: $order - $order-max; +@mixin u-order($-order: 1, $-order-steps: $u-order-steps) { + order: $-order - $-order-steps; } -@mixin u-order-start($order: -9999) { - order: $order; +@mixin u-order-start($-order: -9999) { + order: $-order; } -@mixin u-order-end($order: 9999) { - order: $order; +@mixin u-order-end($-order: 9999) { + order: $-order; } -@each $breakpoint-key in $u-order-breakpoints { - @for $i from 1 through $u-order-max { - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - .u-order-#{$i}\@#{$breakpoint-key} { - @include u-order($i); +@each $-breakpoint in $u-order-breakpoints { + @for $-i from 1 through $u-order-steps { + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .u-order-#{$-i}\@#{$-breakpoint} { + @include u-order($-i); } } } - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - .u-order-start\@#{$breakpoint-key} { + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .u-order-start\@#{$-breakpoint} { @include u-order-start(); } } - @media (min-width: map-get($breakpoints, $breakpoint-key)) { - .u-order-end\@#{$breakpoint-key} { + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .u-order-end\@#{$-breakpoint} { @include u-order-end(); } } From 2ab4dd032dde5d2faf35ff6ad5582a61d6922174 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 18:24:36 +0100 Subject: [PATCH 139/355] unified description --- packages/utility-order/README.md | 2 +- packages/utility-order/bower.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-order/README.md b/packages/utility-order/README.md index 0d5f73a..56db4e1 100644 --- a/packages/utility-order/README.md +++ b/packages/utility-order/README.md @@ -1,5 +1,5 @@ # avalanche_utility_order -Order +Reorder elements. https://github.com/avalanchesass/avalanche_utility_order ### Author diff --git a/packages/utility-order/bower.json b/packages/utility-order/bower.json index 39a9260..4ce9237 100644 --- a/packages/utility-order/bower.json +++ b/packages/utility-order/bower.json @@ -1,6 +1,6 @@ { "name": "avalanche_utility_order", - "description": "Order", + "description": "Reorder elements", "version": "3.0.0", "authors": [ "Markus Oberlehner" From b1fb3801729818e2bd64f1e12527442a47417459 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 18:42:05 +0100 Subject: [PATCH 140/355] moved mixins to separate package, renamed start/end classes to first/last and updated variables to match changes to mixins --- packages/utility-order/scss/_order.scss | 31 +++++++------------------ 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 7fe9cef..5a54d21 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -10,9 +10,9 @@ Reorder elements.
Item 1
Item 2
-
Item 3
+
Item 3
Item 4
-
Item 5
+
Item 5
Item 6
Item 7
@@ -21,30 +21,15 @@ Reorder elements. /** * Variables */ -$u-order-steps: 8 !default; +$u-order-max-elements: 8 !default; // Breakpoints $u-order-breakpoints: (m) !default; -/** - * Mixins - */ -@mixin u-order($-order: 1, $-order-steps: $u-order-steps) { - order: $-order - $-order-steps; -} - -@mixin u-order-start($-order: -9999) { - order: $-order; -} - -@mixin u-order-end($-order: 9999) { - order: $-order; -} - @each $-breakpoint in $u-order-breakpoints { - @for $-i from 1 through $u-order-steps { + @for $-i from 1 through $u-order-max-elements { @media (min-width: map-get($breakpoints, $-breakpoint)) { .u-order-#{$-i}\@#{$-breakpoint} { @include u-order($-i); @@ -53,14 +38,14 @@ $u-order-breakpoints: (m) !default; } @media (min-width: map-get($breakpoints, $-breakpoint)) { - .u-order-start\@#{$-breakpoint} { - @include u-order-start(); + .u-order-first\@#{$-breakpoint} { + @include u-order-first(); } } @media (min-width: map-get($breakpoints, $-breakpoint)) { - .u-order-end\@#{$-breakpoint} { - @include u-order-end(); + .u-order-last\@#{$-breakpoint} { + @include u-order-last(); } } } From 063c9fb2fa1550866f816acc3b5f819f481c3a0f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 18:43:11 +0100 Subject: [PATCH 141/355] added the order mixin package as dependency --- packages/utility-order/bower.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/utility-order/bower.json b/packages/utility-order/bower.json index 4ce9237..51390d0 100644 --- a/packages/utility-order/bower.json +++ b/packages/utility-order/bower.json @@ -7,6 +7,9 @@ ], "homepage": "https://github.com/avalanchesass/avalanche_utility_order", "license": "GPL v2", + "dependencies": { + "avalanche_mixin_utility_order": "avalanchesass/avalanche_mixin_utility_order#dev-3.0.0" + }, "main": "scss/_order.scss", "ignore": [ "**/.*", From a4f00ac9cea43026946869e11c7875113157663f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 18:47:28 +0100 Subject: [PATCH 142/355] added a dot after a code comment --- packages/utility-order/scss/_order.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 5a54d21..0060dbe 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -23,7 +23,7 @@ Reorder elements. */ $u-order-max-elements: 8 !default; -// Breakpoints +// Breakpoints. $u-order-breakpoints: (m) !default; From 3fa6795e238fd8ea753d0311bf48dc5614622f3a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Jan 2016 19:00:46 +0100 Subject: [PATCH 143/355] reduced default max elements variable to 4 to reduce default code output --- packages/utility-order/scss/_order.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 0060dbe..14bfc85 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -21,7 +21,7 @@ Reorder elements. /** * Variables */ -$u-order-max-elements: 8 !default; +$u-order-max-elements: 4 !default; // Breakpoints. $u-order-breakpoints: (m) !default; From 21f230de60fb1c4717b773ce03e756d7f963ef1e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 16 Jan 2016 11:46:29 +0100 Subject: [PATCH 144/355] changed the size classes to not use modifier ("--") syntax because it is not correct --- .../avalanchesass-object-grid/scss/_grid.scss | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 7b5af75..3f9ed8b 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -93,7 +93,7 @@ Default responsive grid without spacing between items. --- ```example:html -
+
width: 100%
@@ -103,7 +103,7 @@ Default responsive grid without spacing between items.
``` */ - #{$-selector}--#{$-size} { + #{$-selector}-#{$-size} { @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } @@ -118,7 +118,7 @@ Default responsive grid without spacing between items. --- ```example:html -
+
width: 100%
@@ -129,7 +129,7 @@ Default responsive grid without spacing between items. ``` */ @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}--#{$-size}\@#{$-breakpoint} { + #{$-selector}-#{$-size}\@#{$-breakpoint} { @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } @@ -154,7 +154,7 @@ Default responsive grid without spacing between items. --- ```example:html -
+
width: 50%
@@ -164,7 +164,7 @@ Default responsive grid without spacing between items.
``` */ - #{$-selector}--#{$-size} { + #{$-selector}-#{$-size} { @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } @@ -179,7 +179,7 @@ Default responsive grid without spacing between items. --- ```example:html -
+
width: 50%
@@ -190,7 +190,7 @@ Default responsive grid without spacing between items. ``` */ @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}--#{$-size}\@#{$-breakpoint} { + #{$-selector}-#{$-size}\@#{$-breakpoint} { @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } From 581bfd657443344745ed30f757cdb08c02625155 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 16 Jan 2016 11:49:29 +0100 Subject: [PATCH 145/355] revamped and updated to dev-3.0.0, moved color variants to a separate utility package (avalanche_utility_background) --- packages/object-island/.gitignore | 1 - packages/object-island/README.md | 4 +- packages/object-island/bower.json | 21 +-- packages/object-island/scss/_island.scss | 220 ++++------------------- 4 files changed, 41 insertions(+), 205 deletions(-) diff --git a/packages/object-island/.gitignore b/packages/object-island/.gitignore index 22ddb57..c219de4 100644 --- a/packages/object-island/.gitignore +++ b/packages/object-island/.gitignore @@ -1,3 +1,2 @@ .DS_Store .sass-cache -bower_components diff --git a/packages/object-island/README.md b/packages/object-island/README.md index 4fc8711..d35aa0c 100644 --- a/packages/object-island/README.md +++ b/packages/object-island/README.md @@ -1,5 +1,5 @@ -# avalanche: Object island -Island object for boxed-off content +# avalanche_object_island +Box off content https://github.com/avalanchesass/avalanche_object_island ### Author diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json index 0a50137..97d59c9 100644 --- a/packages/object-island/bower.json +++ b/packages/object-island/bower.json @@ -1,24 +1,21 @@ { - "name": "avalanche: Object island", - "version": "2.0.3", - "homepage": "https://github.com/avalanchesass/avalanche_object_island", + "name": "avalanche_object_island", + "description": "Box off content", + "version": "3.0.0", "authors": [ "Markus Oberlehner" ], - "description": "Island object for boxed-off content", - "keywords": [ - "SASS", - "CSS" - ], + "homepage": "https://github.com/avalanchesass/avalanche_object_island", "license": "GPL v2", + "dependencies": { + "avalanche_mixin_object_island": "avalanchesass/avalanche_mixin_object_island#dev-3.0.0" + }, + "main": "scss/_island.scss", "ignore": [ "**/.*", "node_modules", "bower_components", "test", "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } + ] } diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index 57c51ee..c6643e0 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -1,200 +1,40 @@ +/* extract object_island.css */ +/*--- +title: Island +section: Object +--- + +Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). +*/ /** - * Island - * - * A single class used to box off content, leaving it closed on all sides like, well, an island.
- * [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/) - * - * @level X.X. + * Variables */ -// Variables -// Color scheme -$o-island-cs-a: false !default; -$o-island-cs-b: false !default; -$o-island-cs-c: false !default; -$o-island-cs-d: false !default; -$o-island-cs-e: false !default; +$o-island-sizes: (m) !default; -// Functions -$o-island-function-positive: false !default; -$o-island-function-neutral: false !default; -$o-island-function-cautious: false !default; -$o-island-function-negative: false !default; - -/** - * Base - * - * @level X.X.X. - * @markup - *
- * Island - *
- */ -.o-island { - display: block; - padding: $spacing-m; - background: $cs-grey-a; - & > :last-child { - margin-bottom: 0; - } -} - - - -@if $o-island-cs-a or $o-island-cs-b or $o-island-cs-c or $o-island-cs-d or $o-island-cs-e { - /** - * Color scheme - * - * Islands using the base color scheme - * - * @level X.X.X. - */ - @if $o-island-cs-a { - /** - * cs-a - * - * @level X.X.X.X. - * @markup - *
- * cs-a Island - *
- */ - .o-island--cs-a { - background: $cs-a; - color: $cs-a-contrast; - } - } - @if $o-island-cs-b { - /** - * cs-b - * - * @level X.X.X.X. - * @markup - *
- * cs-b Island - *
- */ - .o-island--cs-b { - background: $cs-b; - color: $cs-b-contrast; - } - } - @if $o-island-cs-c { - /** - * cs-c - * - * @level X.X.X.X. - * @markup - *
- * cs-c Island - *
- */ - .o-island--cs-c { - background: $cs-c; - color: $cs-c-contrast; - } - } - @if $o-island-cs-d { - /** - * cs-d - * - * @level X.X.X.X. - * @markup - *
- * cs-d Island - *
- */ - .o-island--cs-d { - background: $cs-d; - color: $cs-d-contrast; - } - } - @if $o-island-cs-e { - /** - * cs-e - * - * @level X.X.X.X. - * @markup - *
- * cs-e Island - *
- */ - .o-island--cs-e { - background: $cs-e; - color: $cs-e-contrast; +@each $-size in $o-island-sizes { + $-size-ext: '-#{$-size}'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + @if length($o-island-sizes) > 1 { + $-default-text: ' (default)'; } } -} + /*--- + title: Size: #{$-size}#{$-default-text} + section: Island + --- - - -@if $o-island-function-positive or $o-island-function-neutral or $o-island-function-cautious or $o-island-function-negative { - /** - * Functions - * - * Islands using the function color scheme - * - * @level X.X.X. - */ - @if $o-island-function-positive { - /** - * Positive - * - * @level X.X.X.X. - * @markup - *
- * Positive Island - *
- */ - .o-island--positive { - background: mix($cs-positive, #fff, 20%); - color: $cs-positive; - } - } - @if $o-island-function-neutral { - /** - * Neutral - * - * @level X.X.X.X. - * @markup - *
- * Neutral Island - *
- */ - .o-island--neutral { - background: mix($cs-neutral, #fff, 20%); - color: $cs-neutral; - } - } - @if $o-island-function-cautious { - /** - * Cautious - * - * @level X.X.X.X. - * @markup - *
- * Cautious Island - *
- */ - .o-island--cautious { - background: mix($cs-cautious, #fff, 20%); - color: $cs-cautious; - } - } - @if $o-island-function-negative { - /** - * Negative - * - * @level X.X.X.X. - * @markup - *
- * Negative Island - *
- */ - .o-island--negative { - background: mix($cs-negative, #fff, 20%); - color: $cs-negative; - } +```example:html +
+ Island +
+``` + */ + .o-island#{$-size-ext} { + @include o-island(map-get($spacing, $-size)); } } +/* end extract object_island.css */ From 66f53db3c80c391349678fc132e702e1a60e737c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 16 Jan 2016 12:02:52 +0100 Subject: [PATCH 146/355] made "m" sizes the default and do not append "m" to those class names --- .../avalanchesass-object-grid/scss/_grid.scss | 56 +++++++++++++++---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 3f9ed8b..7fb6478 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -87,13 +87,21 @@ Default responsive grid without spacing between items. $-class-name: 'o-grid--spaced-vertical'; $-selector: '.#{$-class-name}'; @each $-size in $o-grid-spaced-vertical-sizes { + $-size-ext: '-#{$-size}'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + @if length($o-grid-spaced-vertical-sizes) > 1 { + $-default-text: ' (default)'; + } + } /*--- - title: Size: #{$-size} + title: Size: #{$-size}#{$-default-text} section: Vertical --- ```example:html -
+
width: 100%
@@ -103,7 +111,7 @@ Default responsive grid without spacing between items.
``` */ - #{$-selector}-#{$-size} { + #{$-selector}#{$-size-ext} { @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } @@ -112,13 +120,21 @@ Default responsive grid without spacing between items. $-breakpoints: nth($-size-and-breakpoints, 2); @each $-breakpoint in $-breakpoints { + $-size-ext: '-#{$-size}'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + @if length($o-grid-spaced-vertical-sizes-with-breakpoints) > 1 { + $-default-text: ' (default)'; + } + } /*--- - title: Size: #{$-size}@#{$-breakpoint} + title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} section: Vertical --- ```example:html -
+
width: 100%
@@ -129,7 +145,7 @@ Default responsive grid without spacing between items. ``` */ @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}-#{$-size}\@#{$-breakpoint} { + #{$-selector}#{$-size-ext}\@#{$-breakpoint} { @include o-grid-spaced-vertical(map-get($spacing, $-size)); } } @@ -148,13 +164,21 @@ Default responsive grid without spacing between items. $-class-name: 'o-grid--spaced-horizontal'; $-selector: '.#{$-class-name}'; @each $-size in $o-grid-spaced-horizontal-sizes { + $-size-ext: '-#{$-size}'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + @if length($o-grid-spaced-horizontal-sizes) > 1 { + $-default-text: ' (default)'; + } + } /*--- - title: Size: #{$-size} + title: Size: #{$-size}#{$-default-text} section: Horizontal --- ```example:html -
+
width: 50%
@@ -164,7 +188,7 @@ Default responsive grid without spacing between items.
``` */ - #{$-selector}-#{$-size} { + #{$-selector}#{$-size-ext} { @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } @@ -173,13 +197,21 @@ Default responsive grid without spacing between items. $-breakpoints: nth($-size-and-breakpoints, 2); @each $-breakpoint in $-breakpoints { + $-size-ext: '-#{$-size}'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + @if length($o-grid-spaced-horizontal-sizes-with-breakpoints) > 1 { + $-default-text: ' (default)'; + } + } /*--- - title: Size: #{$-size}@#{$-breakpoint} + title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} section: Horizontal --- ```example:html -
+
width: 50%
@@ -190,7 +222,7 @@ Default responsive grid without spacing between items. ``` */ @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}-#{$-size}\@#{$-breakpoint} { + #{$-selector}#{$-size-ext}\@#{$-breakpoint} { @include o-grid-spaced-horizontal(map-get($spacing, $-size)); } } From ffe5aeb3e31bbdabc1b5582f013ead463e58b061 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 17 Jan 2016 12:37:28 +0100 Subject: [PATCH 147/355] added "name" mdcss comment tag and changed section titles to reference the name (instead of title) tag to prevent problems with dublicated title across the style guide --- packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss index 1075480..18da20a 100644 --- a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss +++ b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss @@ -1,6 +1,7 @@ /* extract base_box_sizing_reset.css */ /*--- title: Box sizing reset +name: base_box_sizing_reset section: Base --- From b44ce54e353d180a6aa386ae6aeb4635be27a457 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 17 Jan 2016 12:51:15 +0100 Subject: [PATCH 148/355] added "name" mdcss comment tag and changed section titles to reference the name (instead of title) tag to prevent problems with dublicated title across the style guide --- .../avalanchesass-object-grid/scss/_grid.scss | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 7fb6478..0bbe248 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -1,6 +1,7 @@ /* extract object_grid.css */ /*--- title: Grid +name: object_grid section: Object --- @@ -37,7 +38,8 @@ $o-grid-spaced-horizontal-sizes-with-breakpoints: ( /*--- title: Default -section: Grid +name: object_grid_default +section: object_grid --- Default responsive grid without spacing between items. @@ -72,14 +74,16 @@ Default responsive grid without spacing between items. @if length($o-grid-spaced-vertical-sizes) >= 1 or length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Spaced - section: Grid + name: object_grid_spaced + section: object_grid --- */ } @if length($o-grid-spaced-vertical-sizes) >= 1 { /*--- title: Vertical - section: Spaced + name: object_grid_spaced_vertical + section: object_grid_spaced --- Vertical spacing between grid items. @@ -97,7 +101,8 @@ Default responsive grid without spacing between items. } /*--- title: Size: #{$-size}#{$-default-text} - section: Vertical + name: object_grid_spaced_vertical_size_#{$-size} + section: object_grid_spaced_vertical --- ```example:html @@ -130,7 +135,8 @@ Default responsive grid without spacing between items. } /*--- title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - section: Vertical + name: object_grid_spaced_vertical_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_spaced_vertical --- ```example:html @@ -156,7 +162,8 @@ Default responsive grid without spacing between items. @if length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Horizontal - section: Spaced + name: object_grid_spaced_horizontal + section: object_grid_spaced --- Horizontal spacing between grid items. @@ -174,7 +181,8 @@ Default responsive grid without spacing between items. } /*--- title: Size: #{$-size}#{$-default-text} - section: Horizontal + name: object_grid_spaced_horizontal_size_#{$-size} + section: object_grid_spaced_horizontal --- ```example:html @@ -207,7 +215,8 @@ Default responsive grid without spacing between items. } /*--- title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - section: Horizontal + name: object_grid_spaced_horizontal_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_spaced_horizontal --- ```example:html From f0251ac37ae22f5ebf50c419d11f98170785626b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 17 Jan 2016 12:54:08 +0100 Subject: [PATCH 149/355] added "name" mdcss comment tag and changed section titles to reference the name (instead of title) tag to prevent problems with dublicated title across the style guide --- packages/object-island/scss/_island.scss | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index c6643e0..3d252a2 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -1,6 +1,7 @@ /* extract object_island.css */ /*--- title: Island +name: object_island section: Object --- @@ -24,7 +25,8 @@ $o-island-sizes: (m) !default; } /*--- title: Size: #{$-size}#{$-default-text} - section: Island + name: object_island_size_#{$-size} + section: object_island --- ```example:html From 109c63acc5aa3b693270895b0abcf7e562c09b5c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 17 Jan 2016 12:57:54 +0100 Subject: [PATCH 150/355] added "name" mdcss comment tag and changed section titles to reference the name (instead of title) tag to prevent problems with dublicated title across the style guide --- packages/utility-order/scss/_order.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_order.scss index 14bfc85..a77017e 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_order.scss @@ -1,6 +1,7 @@ /* extract utility_order.css */ /*--- title: Order +name: utility_order section: Utility --- From d69ba93d8b0e4efd9933b22dfd78afdd20a00802 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 18 Jan 2016 19:20:45 +0100 Subject: [PATCH 151/355] implemented responsive island sizes (fixes #1) and started to experiment with modifier classes (e.g. "[l]") for sizes (according to avalanchesass/avalanche#145) --- packages/object-island/scss/_island.scss | 46 ++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index 3d252a2..0435ab3 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -11,14 +11,21 @@ Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2 * Variables */ $o-island-sizes: (m) !default; +// The key of the associative map defines the size of the padding, the value is +// a map with breakpoint sizes for which island classes should be generated. +$o-island-sizes-with-breakpoints: ( + m: () +) !default; @each $-size in $o-island-sizes { - $-size-ext: '-#{$-size}'; + $-size-ext: '\\[#{$-size}\\]'; + $-size-ext-plain: '[#{$-size}]'; $-default-text: ''; @if $-size == m { $-size-ext: ''; + $-size-ext-plain: ''; @if length($o-island-sizes) > 1 { $-default-text: ' (default)'; } @@ -30,7 +37,7 @@ $o-island-sizes: (m) !default; --- ```example:html -
+
Island
``` @@ -39,4 +46,39 @@ $o-island-sizes: (m) !default; @include o-island(map-get($spacing, $-size)); } } + +@each $-size-and-breakpoints in $o-island-sizes-with-breakpoints { + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); + + @each $-breakpoint in $-breakpoints { + $-size-ext: '\\[#{$-size}\\]'; + $-size-ext-plain: '[#{$-size}]'; + $-default-text: ''; + @if $-size == m { + $-size-ext: ''; + $-size-ext-plain: ''; + @if length($o-island-sizes-with-breakpoints) > 1 { + $-default-text: ' (default)'; + } + } + /*--- + title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} + name: object_island_size_#{$-size}_at_#{$-breakpoint} + section: object_island + --- + +```example:html +
+ Island +
+``` + */ + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .o-island#{$-size-ext}\@#{$-breakpoint} { + @include o-island(map-get($spacing, $-size)); + } + } + } + } /* end extract object_island.css */ From e10fccd3cac713d005b09713748604bf7617a63f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 19 Jan 2016 18:15:48 +0100 Subject: [PATCH 152/355] added line breaks so comments do not exceed more than 80 characters avalanchesass/avalanche#142 --- packages/avalanchesass-object-grid/scss/_grid.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 0bbe248..9d79f30 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -7,7 +7,8 @@ section: Object Fluid width, responsive grid system. -**TIP:** Most likely you want to use this package in combination with the [width utility package](https://github.com/avalanchesass/avalanche_utility_width). +**TIP:** Most likely you want to use this package in combination with the +[width utility package](https://github.com/avalanchesass/avalanche_utility_width). */ /** * Variables From 394c105b112901827c83e22e100339c1b195a03f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 19 Jan 2016 18:34:32 +0100 Subject: [PATCH 153/355] minor: removed dot in README --- packages/avalanchesass-object-grid/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 1cb4026..3bfda2f 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,5 +1,5 @@ # avalanche_object_grid -Fluid width, responsive grid system. +Fluid width, responsive grid system https://github.com/avalanchesass/avalanche_object_grid ### Author From a0e7cab23abd45348961c323811175bfb7445d08 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 19 Jan 2016 18:35:35 +0100 Subject: [PATCH 154/355] minor: removed dot in README --- packages/utility-order/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-order/README.md b/packages/utility-order/README.md index 56db4e1..4384b1d 100644 --- a/packages/utility-order/README.md +++ b/packages/utility-order/README.md @@ -1,5 +1,5 @@ # avalanche_utility_order -Reorder elements. +Reorder elements https://github.com/avalanchesass/avalanche_utility_order ### Author From 056cd758948821bdaac5ea1ec815dd029c7f0721 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 20 Jan 2016 19:38:59 +0100 Subject: [PATCH 155/355] implemented a flexbox fallback mode --- packages/avalanchesass-object-grid/scss/_grid.scss | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 9d79f30..687de74 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -14,7 +14,8 @@ Fluid width, responsive grid system. * Variables */ // Flexbox grid system. -$o-grid-flex: true !default; +$o-grid-flex: true !default; +$o-grid-flex-fallback: false !default; // Vertical spacing sizes. $o-grid-spaced-vertical-sizes: (m) !default; @@ -63,11 +64,11 @@ Default responsive grid without spacing between items. ``` */ .o-grid { - @include o-grid($o-grid-flex); + @include o-grid($o-grid-flex, $o-grid-flex-fallback); } .o-grid__item { - @include o-grid-item($o-grid-flex); + @include o-grid-item($o-grid-flex, $o-grid-flex-fallback); } From 9322d8bc12a3defa84457072f828262204ab26db Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 23 Jan 2016 20:48:29 +0100 Subject: [PATCH 156/355] updated to dev-3.0.0 --- packages/utility-font-family/.gitignore | 1 - packages/utility-font-family/README.md | 2 +- packages/utility-font-family/bower.json | 18 ++--- .../scss/_font_family.scss | 72 +++++-------------- 4 files changed, 25 insertions(+), 68 deletions(-) diff --git a/packages/utility-font-family/.gitignore b/packages/utility-font-family/.gitignore index 22ddb57..c219de4 100644 --- a/packages/utility-font-family/.gitignore +++ b/packages/utility-font-family/.gitignore @@ -1,3 +1,2 @@ .DS_Store .sass-cache -bower_components diff --git a/packages/utility-font-family/README.md b/packages/utility-font-family/README.md index b2382a5..7363f30 100644 --- a/packages/utility-font-family/README.md +++ b/packages/utility-font-family/README.md @@ -1,4 +1,4 @@ -# avalanche: Utility font family +# avalanche_utility_font_family Font family utility classes https://github.com/avalanchesass/avalanche_utility_font_family diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json index 832b4e8..cda9210 100644 --- a/packages/utility-font-family/bower.json +++ b/packages/utility-font-family/bower.json @@ -1,24 +1,18 @@ { - "name": "avalanche: Utility font family", - "version": "2.0.3", - "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", + "name": "avalanche_utility_font_family", + "description": "Font family utility classes", + "version": "3.0.0", "authors": [ "Markus Oberlehner" ], - "description": "Font family utility classes", - "keywords": [ - "SASS", - "CSS" - ], + "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", "license": "GPL v2", + "main": "scss/_font_family.scss", "ignore": [ "**/.*", "node_modules", "bower_components", "test", "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } + ] } diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index abf2a2d..6b2c281 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -1,59 +1,23 @@ -/** - * Font family - * - * Font family classes - * - * @level X.X. - */ -@function font-family-find-normal-weight($font-family) { - @if variable-exists(font-a-family) and $font-family == $font-a-family { - @return $font-a-weight-normal; - } - @else if variable-exists(font-b-family) and $font-family == $font-b-family { - @return $font-b-weight-normal; - } - @else if variable-exists(font-c-family) and $font-family == $font-c-family { - @return $font-c-weight-normal; - } - @else if variable-exists(font-d-family) and $font-family == $font-d-family { - @return $font-d-weight-normal; - } - @else if variable-exists(font-e-family) and $font-family == $font-e-family { - @return $font-e-weight-normal; - } - @return 400; -} - -@if variable-exists(font-a-family) { - @mixin u-font-family($font-family: $font-a-family, $font-weight: 0) { - font-family: $font-family !important; - @if $font-weight > 0 { - font-weight: $font-weight; - } - @else { - font-weight: font-family-find-normal-weight($font-family); - } - } +/* extract utility_font_family.css */ +/*--- +title: Font family +name: utility_font_family +section: Utility +--- - /** - * @markup - *
- * Lorem ipsum dolor (#{$font-a-family}) - *
- */ - .u-font-family-a { - @include u-font-family(); +Font family utility classes. +*/ +@mixin u-font-family($-font, $-font-weight: normal, $-set-weight: true) { + font-family: unquote(map-get-deep($fonts, $-font, family)) !important; + @if $-set-weight { + font-weight: map-get-deep($fonts, $-font, weights, $-font-weight); } +} - @if variable-exists(font-b-family) { - /** - * @markup - *
- * Lorem ipsum dolor (#{$font-b-family}) - *
- */ - .u-font-family-b { - @include u-font-family($font-b-family); - } +@each $-font-data in $fonts { + $-font: nth($-font-data, 1); + .u-font-family-#{$-font} { + @include u-font-family($-font); } } +/* end extract utility_font_family.css */ From 0973f2713dcf834fa1e8d01af4177f2cee2c3de2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 23 Jan 2016 20:53:59 +0100 Subject: [PATCH 157/355] moved mixin to a separet package --- packages/utility-font-family/bower.json | 3 +++ packages/utility-font-family/scss/_font_family.scss | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json index cda9210..c048bb2 100644 --- a/packages/utility-font-family/bower.json +++ b/packages/utility-font-family/bower.json @@ -7,6 +7,9 @@ ], "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", "license": "GPL v2", + "dependencies": { + "avalanche_mixin_utility_font_family": "avalanchesass/avalanche_mixin_utility_font_family#dev-3.0.0" + }, "main": "scss/_font_family.scss", "ignore": [ "**/.*", diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss index 6b2c281..462b55a 100644 --- a/packages/utility-font-family/scss/_font_family.scss +++ b/packages/utility-font-family/scss/_font_family.scss @@ -7,13 +7,6 @@ section: Utility Font family utility classes. */ -@mixin u-font-family($-font, $-font-weight: normal, $-set-weight: true) { - font-family: unquote(map-get-deep($fonts, $-font, family)) !important; - @if $-set-weight { - font-weight: map-get-deep($fonts, $-font, weights, $-font-weight); - } -} - @each $-font-data in $fonts { $-font: nth($-font-data, 1); .u-font-family-#{$-font} { From 2587912fa7dc10a58ebb4d98b33e34b338260ba1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 24 Jan 2016 13:05:49 +0100 Subject: [PATCH 158/355] added "," after the last element of maps, according to avalanchesass/avalanche#147 --- packages/avalanchesass-object-grid/scss/_grid.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/_grid.scss index 687de74..8a30e16 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/_grid.scss @@ -23,7 +23,7 @@ $o-grid-spaced-vertical-sizes: (m) !default; // The key of the associative map defines the spacing size, the value is a map // with breakpoint sizes for which vertical spacing classes should be generated. $o-grid-spaced-vertical-sizes-with-breakpoints: ( - m: () + m: (), ) !default; // Horizontal spacing sizes. @@ -33,7 +33,7 @@ $o-grid-spaced-horizontal-sizes: (m) !default; // with breakpoint sizes for which horizontal spacing classes should be // generated. $o-grid-spaced-horizontal-sizes-with-breakpoints: ( - m: () + m: (), ) !default; From 3339d95f7945795496a6cbb7c379f82a12bfa7ef Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 24 Jan 2016 13:06:14 +0100 Subject: [PATCH 159/355] added "," after the last element of maps, according to avalanchesass/avalanche#147 --- packages/object-island/scss/_island.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_island.scss index 0435ab3..b43eddb 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_island.scss @@ -14,7 +14,7 @@ $o-island-sizes: (m) !default; // The key of the associative map defines the size of the padding, the value is // a map with breakpoint sizes for which island classes should be generated. $o-island-sizes-with-breakpoints: ( - m: () + m: (), ) !default; From 1649ce068ccdd30f4859a36179cc6f3fbd64731e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 27 Jan 2016 20:29:22 +0100 Subject: [PATCH 160/355] revamped to use npm instead of bower and added "eyeglass" module configuration --- packages/avalanchesass-object-grid/bower.json | 21 -------------- .../avalanchesass-object-grid/package.json | 28 +++++++++++++++++++ .../scss/{_grid.scss => index.scss} | 3 ++ 3 files changed, 31 insertions(+), 21 deletions(-) delete mode 100644 packages/avalanchesass-object-grid/bower.json create mode 100644 packages/avalanchesass-object-grid/package.json rename packages/avalanchesass-object-grid/scss/{_grid.scss => index.scss} (99%) diff --git a/packages/avalanchesass-object-grid/bower.json b/packages/avalanchesass-object-grid/bower.json deleted file mode 100644 index f71230d..0000000 --- a/packages/avalanchesass-object-grid/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche_object_grid", - "description": "Grid system", - "version": "3.0.0", - "authors": [ - "Markus Oberlehner" - ], - "homepage": "https://github.com/avalanchesass/avalanche_object_grid", - "license": "GPL v2", - "dependencies": { - "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0" - }, - "main": "scss/_grid.scss", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json new file mode 100644 index 0000000..34f852c --- /dev/null +++ b/packages/avalanchesass-object-grid/package.json @@ -0,0 +1,28 @@ +{ + "name": "avalanche_object_grid", + "description": "Fluid width, responsive grid system", + "keywords": [ + "avalanche-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_object_grid", + "license": "GPL v2", + "dependencies": { + "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_object_grid" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/avalanchesass-object-grid/scss/_grid.scss b/packages/avalanchesass-object-grid/scss/index.scss similarity index 99% rename from packages/avalanchesass-object-grid/scss/_grid.scss rename to packages/avalanchesass-object-grid/scss/index.scss index 8a30e16..0445609 100644 --- a/packages/avalanchesass-object-grid/scss/_grid.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,4 +1,7 @@ /* extract object_grid.css */ + +@import 'avalanche_mixin_object_grid'; + /*--- title: Grid name: object_grid From 9c89b459f77e9a2674c8071b7813bdeffa57d571 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 28 Jan 2016 20:42:08 +0100 Subject: [PATCH 161/355] moved import to the top of the file, outside of the extract block - imports (can) define their own extracts --- packages/avalanchesass-object-grid/scss/index.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 0445609..16034d6 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,7 +1,6 @@ -/* extract object_grid.css */ - @import 'avalanche_mixin_object_grid'; +/* extract object_grid.css */ /*--- title: Grid name: object_grid From 5d0474573a79d8da81ea830d0a3d162e0ce11b37 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 3 Feb 2016 19:36:02 +0100 Subject: [PATCH 162/355] deprecated mixin package and merged code with the base package, according to avalanchesass/avalanche#156 --- .../avalanchesass-object-grid/package.json | 3 - .../scss/{index.scss => _index.scss} | 2 +- .../scss/_mixin.scss | 59 +++++++++++++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) rename packages/avalanchesass-object-grid/scss/{index.scss => _index.scss} (99%) create mode 100644 packages/avalanchesass-object-grid/scss/_mixin.scss diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 34f852c..f323303 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -10,9 +10,6 @@ "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", - "dependencies": { - "avalanche_mixin_object_grid": "avalanchesass/avalanche_mixin_object_grid#dev-3.0.0" - }, "repository": { "type": "git", "url": "https://github.com/avalanchesass/avalanche_object_grid" diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/_index.scss similarity index 99% rename from packages/avalanchesass-object-grid/scss/index.scss rename to packages/avalanchesass-object-grid/scss/_index.scss index 16034d6..bdb8284 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,4 +1,4 @@ -@import 'avalanche_mixin_object_grid'; +@import 'avalanche_object_grid/mixin'; /* extract object_grid.css */ /*--- diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss new file mode 100644 index 0000000..500e173 --- /dev/null +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -0,0 +1,59 @@ +@import 'avalanche_base_box_sizing_reset'; +@import 'avalanche_utility_clearfix/mixin'; + +/*--- +title: Mixin +name: object_grid_mixin +section: object_grid +--- + +```css +// Basic grid. +o-grid([$-flex: true[, $-flex-fallback: false]]) +// Vertical spacing between grid items. +o-grid-spaced-vertical([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) +// Horizontal spacing between grid items. +o-grid-spaced-horizontal([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) +// Basic grid item. +o-grid-item([$-flex: true[, $-flex-fallback: false]]) +``` +```css +.foo { + @include o-grid(); + @include o-grid-spaced-vertical(); + @include o-grid-spaced-horizontal(); +} +.bar { + @include o-grid-item(); +} +``` +*/ +@mixin o-grid($-flex: true, $-flex-fallback: false) { + @if $-flex { + display: flex; + flex-wrap: wrap; + } + @if not $-flex or $-flex-fallback { + @include u-clearfix(); + } +} + +@mixin o-grid-spaced-vertical($-spacing: map-get($spacing, m), $-item-selector: '.o-grid__item') { + margin-top: -$-spacing; + > #{$-item-selector} { + margin-top: $-spacing; + } +} + +@mixin o-grid-spaced-horizontal($-spacing: map-get($spacing, m), $-item-selector: '.o-grid__item') { + margin-left: -$-spacing; + > #{$-item-selector} { + padding-left: $-spacing; + } +} + +@mixin o-grid-item($-flex: true, $-flex-fallback: false) { + @if not $-flex or $-flex-fallback { + float: left; + } +} From c72842d02f05938b0f5cf796619a4dc6711aed41 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 3 Feb 2016 19:38:45 +0100 Subject: [PATCH 163/355] added "About" headline to README, according to avalanchesass/avalanche#166 --- packages/avalanchesass-object-grid/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 3bfda2f..e84d54d 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -2,6 +2,7 @@ Fluid width, responsive grid system https://github.com/avalanchesass/avalanche_object_grid +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner From c3d7ad1c689208e5e9504fa43c18ba19de56125e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 3 Feb 2016 19:42:53 +0100 Subject: [PATCH 164/355] added dependencies necessary for the mixin --- packages/avalanchesass-object-grid/package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index f323303..beee013 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -10,6 +10,10 @@ "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", + "dependencies": { + "avalanche_base_box_sizing_reset": "avalanchesass/avalanche_base_box_sizing_reset#dev-3.0.0", + "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" + }, "repository": { "type": "git", "url": "https://github.com/avalanchesass/avalanche_object_grid" From 0fbb512263a1317b3987a9a58ce9ee8ed557c88f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 5 Feb 2016 14:59:52 +0100 Subject: [PATCH 165/355] revamped the gitignore file, according to avalanchesass/avalanche#152 --- packages/avalanchesass-object-grid/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/.gitignore b/packages/avalanchesass-object-grid/.gitignore index c219de4..42ffb40 100644 --- a/packages/avalanchesass-object-grid/.gitignore +++ b/packages/avalanchesass-object-grid/.gitignore @@ -1,2 +1,3 @@ .DS_Store -.sass-cache + +node_modules From 9f0b789c0e437c1bacec6ca4ef55e3fec7ac7689 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 10:17:54 +0100 Subject: [PATCH 166/355] moved variables to a separate file, according to avalanchesass/avalanche#167 --- .../scss/_index.scss | 29 +------------------ .../scss/_variable.scss | 22 ++++++++++++++ 2 files changed, 23 insertions(+), 28 deletions(-) create mode 100644 packages/avalanchesass-object-grid/scss/_variable.scss diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index bdb8284..9c2a427 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,3 +1,4 @@ +@import 'avalanche_object_grid/variable'; @import 'avalanche_object_grid/mixin'; /* extract object_grid.css */ @@ -12,34 +13,6 @@ Fluid width, responsive grid system. **TIP:** Most likely you want to use this package in combination with the [width utility package](https://github.com/avalanchesass/avalanche_utility_width). */ -/** - * Variables - */ -// Flexbox grid system. -$o-grid-flex: true !default; -$o-grid-flex-fallback: false !default; - -// Vertical spacing sizes. -$o-grid-spaced-vertical-sizes: (m) !default; -// Vertical spacing sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which vertical spacing classes should be generated. -$o-grid-spaced-vertical-sizes-with-breakpoints: ( - m: (), -) !default; - -// Horizontal spacing sizes. -$o-grid-spaced-horizontal-sizes: (m) !default; -// Horizontal spacing sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which horizontal spacing classes should be -// generated. -$o-grid-spaced-horizontal-sizes-with-breakpoints: ( - m: (), -) !default; - - - /*--- title: Default name: object_grid_default diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss new file mode 100644 index 0000000..50c40e2 --- /dev/null +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -0,0 +1,22 @@ +// Flexbox grid system. +$o-grid-flex: true !default; +$o-grid-flex-fallback: false !default; + +// Vertical spacing sizes. +$o-grid-spaced-vertical-sizes: (m) !default; +// Vertical spacing sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which vertical spacing classes should be generated. +$o-grid-spaced-vertical-sizes-with-breakpoints: ( + m: (), +) !default; + +// Horizontal spacing sizes. +$o-grid-spaced-horizontal-sizes: (m) !default; +// Horizontal spacing sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which horizontal spacing classes should be +// generated. +$o-grid-spaced-horizontal-sizes-with-breakpoints: ( + m: (), +) !default; From 31caa101d0856869b49ce758a1f90e9b88aff8b6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 16:46:04 +0100 Subject: [PATCH 167/355] removed dependency to the box sizing package, fixes #11 --- packages/avalanchesass-object-grid/package.json | 1 - packages/avalanchesass-object-grid/scss/_mixin.scss | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index beee013..7dc9d68 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -11,7 +11,6 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { - "avalanche_base_box_sizing_reset": "avalanchesass/avalanche_base_box_sizing_reset#dev-3.0.0", "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" }, "repository": { diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 500e173..b93c2ac 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,4 +1,3 @@ -@import 'avalanche_base_box_sizing_reset'; @import 'avalanche_utility_clearfix/mixin'; /*--- @@ -53,6 +52,10 @@ o-grid-item([$-flex: true[, $-flex-fallback: false]]) } @mixin o-grid-item($-flex: true, $-flex-fallback: false) { + $base-box-sizing-reset: false !default; + @if not $base-box-sizing-reset { + box-sizing: border-box; + } @if not $-flex or $-flex-fallback { float: left; } From 87393a4d04ed1adff0e682f49c35091f3ed5e74b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 16:49:35 +0100 Subject: [PATCH 168/355] basic grid class now has vertical and horizontal spacing by default, modifier classes are used to make spacing smaller / bigger or remove it (fixes #13), implemented a variable for the class name (according to avalanchesass/avalanche#146), added collapsing modifier classes --- .../scss/_index.scss | 160 +++++++++++------- .../scss/_variable.scss | 6 + 2 files changed, 108 insertions(+), 58 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 9c2a427..4258875 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -19,30 +19,30 @@ name: object_grid_default section: object_grid --- -Default responsive grid without spacing between items. +Default responsive grid with vertical and horizontal spacing between items. ```example:html -
-
+
+
width: 50%
-
+
width: 50%
-
+
width: 50%
-
+
width: 50%
``` */ -.o-grid { +.#{$o-grid-class} { @include o-grid($o-grid-flex, $o-grid-flex-fallback); } -.o-grid__item { +.#{$o-grid-class}__item { @include o-grid-item($o-grid-flex, $o-grid-flex-fallback); } @@ -50,8 +50,8 @@ Default responsive grid without spacing between items. @if length($o-grid-spaced-vertical-sizes) >= 1 or length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- - title: Spaced - name: object_grid_spaced + title: Spacing + name: object_grid_spacing section: object_grid --- */ @@ -59,69 +59,67 @@ Default responsive grid without spacing between items. @if length($o-grid-spaced-vertical-sizes) >= 1 { /*--- title: Vertical - name: object_grid_spaced_vertical - section: object_grid_spaced + name: object_grid_spacing_vertical + section: object_grid_spacing --- Vertical spacing between grid items. */ - $-class-name: 'o-grid--spaced-vertical'; - $-selector: '.#{$-class-name}'; @each $-size in $o-grid-spaced-vertical-sizes { + $-block-class: '#{$o-grid-class} '; + $-class-name: '#{$o-grid-class}--vertical'; $-size-ext: '-#{$-size}'; $-default-text: ''; @if $-size == m { + $-block-class: ''; + $-class-name: '#{$o-grid-class}'; $-size-ext: ''; @if length($o-grid-spaced-vertical-sizes) > 1 { $-default-text: ' (default)'; } } + $-selector: '.#{$-class-name}'; /*--- title: Size: #{$-size}#{$-default-text} - name: object_grid_spaced_vertical_size_#{$-size} - section: object_grid_spaced_vertical + name: object_grid_spacing_vertical_size_#{$-size} + section: object_grid_spacing_vertical --- ```example:html -
-
+
+
width: 100%
-
+
width: 100%
``` */ #{$-selector}#{$-size-ext} { - @include o-grid-spaced-vertical(map-get($spacing, $-size)); + @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-class}__item'); } } @each $-size-and-breakpoints in $o-grid-spaced-vertical-sizes-with-breakpoints { + $-block-class: '#{$o-grid-class} '; + $-class-name: '#{$o-grid-class}--vertical'; $-size: nth($-size-and-breakpoints, 1); $-breakpoints: nth($-size-and-breakpoints, 2); @each $-breakpoint in $-breakpoints { $-size-ext: '-#{$-size}'; - $-default-text: ''; - @if $-size == m { - $-size-ext: ''; - @if length($o-grid-spaced-vertical-sizes-with-breakpoints) > 1 { - $-default-text: ' (default)'; - } - } /*--- - title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - name: object_grid_spaced_vertical_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_spaced_vertical + title: Size: #{$-size}@#{$-breakpoint} + name: object_grid_spacing_vertical_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_spacing_vertical --- ```example:html -
-
+
+
width: 100%
-
+
width: 100%
@@ -129,7 +127,7 @@ Default responsive grid without spacing between items. */ @media (min-width: map-get($breakpoints, $-breakpoint)) { #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-vertical(map-get($spacing, $-size)); + @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-class}__item'); } } } @@ -139,69 +137,67 @@ Default responsive grid without spacing between items. @if length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Horizontal - name: object_grid_spaced_horizontal - section: object_grid_spaced + name: object_grid_spacing_horizontal + section: object_grid_spacing --- Horizontal spacing between grid items. */ - $-class-name: 'o-grid--spaced-horizontal'; - $-selector: '.#{$-class-name}'; @each $-size in $o-grid-spaced-horizontal-sizes { + $-block-class: '#{$o-grid-class} '; + $-class-name: '#{$o-grid-class}--horizontal'; $-size-ext: '-#{$-size}'; $-default-text: ''; @if $-size == m { + $-block-class: ''; + $-class-name: '#{$o-grid-class}'; $-size-ext: ''; @if length($o-grid-spaced-horizontal-sizes) > 1 { $-default-text: ' (default)'; } } + $-selector: '.#{$-class-name}'; /*--- title: Size: #{$-size}#{$-default-text} - name: object_grid_spaced_horizontal_size_#{$-size} - section: object_grid_spaced_horizontal + name: object_grid_spacing_horizontal_size_#{$-size} + section: object_grid_spacing_horizontal --- ```example:html -
-
+
+
width: 50%
-
+
width: 50%
``` */ #{$-selector}#{$-size-ext} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size)); + @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-class}__item'); } } @each $-size-and-breakpoints in $o-grid-spaced-horizontal-sizes-with-breakpoints { + $-block-class: '#{$o-grid-class} '; + $-class-name: '#{$o-grid-class}--horizontal'; $-size: nth($-size-and-breakpoints, 1); $-breakpoints: nth($-size-and-breakpoints, 2); @each $-breakpoint in $-breakpoints { $-size-ext: '-#{$-size}'; - $-default-text: ''; - @if $-size == m { - $-size-ext: ''; - @if length($o-grid-spaced-horizontal-sizes-with-breakpoints) > 1 { - $-default-text: ' (default)'; - } - } /*--- - title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - name: object_grid_spaced_horizontal_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_spaced_horizontal + title: Size: #{$-size}@#{$-breakpoint} + name: object_grid_spacing_horizontal_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_spacing_horizontal --- ```example:html -
-
+
+
width: 50%
-
+
width: 50%
@@ -209,10 +205,58 @@ Default responsive grid without spacing between items. */ @media (min-width: map-get($breakpoints, $-breakpoint)) { #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size)); + @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-class}__item'); } } } } } + + + +@if $o-grid-collapsed-vertical { + /*--- + title: Vertical collapsed + name: object_grid_collapsed_vertical + section: object_grid + --- + +```example:html +
+
+
width: 100%
+
+
+
width: 100%
+
+
+``` + */ + .#{$o-grid-class}--vertical-collapsed { + @include o-grid-spaced-vertical(0, '.#{$o-grid-class}__item'); + } +} + +@if $o-grid-collapsed-horizontal { + /*--- + title: Horizontal collapsed + name: object_grid_collapsed_horizontal + section: object_grid + --- + +```example:html +
+
+
width: 50%
+
+
+
width: 50%
+
+
+``` + */ + .#{$o-grid-class}--horizontal-collapsed { + @include o-grid-spaced-horizontal(0, '.#{$o-grid-class}__item'); + } +} /* end extract object_grid.css */ diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 50c40e2..1a2ff85 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,3 +1,5 @@ +$o-grid-class: 'o-grid' !default; + // Flexbox grid system. $o-grid-flex: true !default; $o-grid-flex-fallback: false !default; @@ -10,6 +12,8 @@ $o-grid-spaced-vertical-sizes: (m) !default; $o-grid-spaced-vertical-sizes-with-breakpoints: ( m: (), ) !default; +// Vertical collapsed grid. +$o-grid-collapsed-vertical: false !default; // Horizontal spacing sizes. $o-grid-spaced-horizontal-sizes: (m) !default; @@ -20,3 +24,5 @@ $o-grid-spaced-horizontal-sizes: (m) !default; $o-grid-spaced-horizontal-sizes-with-breakpoints: ( m: (), ) !default; +// Horizontal collapsed grid. +$o-grid-collapsed-horizontal: false !default; From 471e51a31c1fe1a1f295957a503866055f270518 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 17:01:21 +0100 Subject: [PATCH 169/355] renamed grid class variable to grid namespace and use global namespace map for package prefixes --- .../scss/_index.scss | 78 +++++++++---------- .../scss/_variable.scss | 2 +- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 4258875..3f5ea66 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -22,27 +22,27 @@ section: object_grid Default responsive grid with vertical and horizontal spacing between items. ```example:html -
-
+
+
width: 50%
-
+
width: 50%
-
+
width: 50%
-
+
width: 50%
``` */ -.#{$o-grid-class} { +.#{$o-grid-namespace} { @include o-grid($o-grid-flex, $o-grid-flex-fallback); } -.#{$o-grid-class}__item { +.#{$o-grid-namespace}__item { @include o-grid-item($o-grid-flex, $o-grid-flex-fallback); } @@ -66,13 +66,13 @@ Default responsive grid with vertical and horizontal spacing between items. Vertical spacing between grid items. */ @each $-size in $o-grid-spaced-vertical-sizes { - $-block-class: '#{$o-grid-class} '; - $-class-name: '#{$o-grid-class}--vertical'; + $-block-class: '#{$o-grid-namespace} '; + $-class-name: '#{$o-grid-namespace}--vertical'; $-size-ext: '-#{$-size}'; $-default-text: ''; @if $-size == m { $-block-class: ''; - $-class-name: '#{$o-grid-class}'; + $-class-name: '#{$o-grid-namespace}'; $-size-ext: ''; @if length($o-grid-spaced-vertical-sizes) > 1 { $-default-text: ' (default)'; @@ -87,22 +87,22 @@ Default responsive grid with vertical and horizontal spacing between items. ```example:html
-
+
width: 100%
-
+
width: 100%
``` */ #{$-selector}#{$-size-ext} { - @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-class}__item'); + @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); } } @each $-size-and-breakpoints in $o-grid-spaced-vertical-sizes-with-breakpoints { - $-block-class: '#{$o-grid-class} '; - $-class-name: '#{$o-grid-class}--vertical'; + $-block-class: '#{$o-grid-namespace} '; + $-class-name: '#{$o-grid-namespace}--vertical'; $-size: nth($-size-and-breakpoints, 1); $-breakpoints: nth($-size-and-breakpoints, 2); @@ -116,10 +116,10 @@ Default responsive grid with vertical and horizontal spacing between items. ```example:html
-
+
width: 100%
-
+
width: 100%
@@ -127,7 +127,7 @@ Default responsive grid with vertical and horizontal spacing between items. */ @media (min-width: map-get($breakpoints, $-breakpoint)) { #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-class}__item'); + @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); } } } @@ -144,13 +144,13 @@ Default responsive grid with vertical and horizontal spacing between items. Horizontal spacing between grid items. */ @each $-size in $o-grid-spaced-horizontal-sizes { - $-block-class: '#{$o-grid-class} '; - $-class-name: '#{$o-grid-class}--horizontal'; + $-block-class: '#{$o-grid-namespace} '; + $-class-name: '#{$o-grid-namespace}--horizontal'; $-size-ext: '-#{$-size}'; $-default-text: ''; @if $-size == m { $-block-class: ''; - $-class-name: '#{$o-grid-class}'; + $-class-name: '#{$o-grid-namespace}'; $-size-ext: ''; @if length($o-grid-spaced-horizontal-sizes) > 1 { $-default-text: ' (default)'; @@ -165,22 +165,22 @@ Default responsive grid with vertical and horizontal spacing between items. ```example:html
-
+
width: 50%
-
+
width: 50%
``` */ #{$-selector}#{$-size-ext} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-class}__item'); + @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); } } @each $-size-and-breakpoints in $o-grid-spaced-horizontal-sizes-with-breakpoints { - $-block-class: '#{$o-grid-class} '; - $-class-name: '#{$o-grid-class}--horizontal'; + $-block-class: '#{$o-grid-namespace} '; + $-class-name: '#{$o-grid-namespace}--horizontal'; $-size: nth($-size-and-breakpoints, 1); $-breakpoints: nth($-size-and-breakpoints, 2); @@ -194,10 +194,10 @@ Default responsive grid with vertical and horizontal spacing between items. ```example:html
-
+
width: 50%
-
+
width: 50%
@@ -205,7 +205,7 @@ Default responsive grid with vertical and horizontal spacing between items. */ @media (min-width: map-get($breakpoints, $-breakpoint)) { #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-class}__item'); + @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); } } } @@ -222,18 +222,18 @@ Default responsive grid with vertical and horizontal spacing between items. --- ```example:html -
-
+
+
width: 100%
-
+
width: 100%
``` */ - .#{$o-grid-class}--vertical-collapsed { - @include o-grid-spaced-vertical(0, '.#{$o-grid-class}__item'); + .#{$o-grid-namespace}--vertical-collapsed { + @include o-grid-spaced-vertical(0, '.#{$o-grid-namespace}__item'); } } @@ -245,18 +245,18 @@ Default responsive grid with vertical and horizontal spacing between items. --- ```example:html -
-
+
+
width: 50%
-
+
width: 50%
``` */ - .#{$o-grid-class}--horizontal-collapsed { - @include o-grid-spaced-horizontal(0, '.#{$o-grid-class}__item'); + .#{$o-grid-namespace}--horizontal-collapsed { + @include o-grid-spaced-horizontal(0, '.#{$o-grid-namespace}__item'); } } /* end extract object_grid.css */ diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 1a2ff85..976759d 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,4 +1,4 @@ -$o-grid-class: 'o-grid' !default; +$o-grid-namespace: '#{map-get($namespace, object)}grid' !default; // Flexbox grid system. $o-grid-flex: true !default; From 7fec34f521b73bd9fc88e8964c94bb06edd73aff Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 17:37:14 +0100 Subject: [PATCH 170/355] converted to eyeglass module, added $base-box-sizing-reset variable, fixes #1 --- packages/generic-box-sizing-reset/.gitignore | 3 ++- packages/generic-box-sizing-reset/README.md | 1 + packages/generic-box-sizing-reset/bower.json | 18 ------------- .../generic-box-sizing-reset/package.json | 25 +++++++++++++++++++ .../scss/_box_sizing_reset.scss | 20 --------------- .../generic-box-sizing-reset/scss/_index.scss | 24 ++++++++++++++++++ .../scss/_variable.scss | 1 + 7 files changed, 53 insertions(+), 39 deletions(-) delete mode 100644 packages/generic-box-sizing-reset/bower.json create mode 100644 packages/generic-box-sizing-reset/package.json delete mode 100644 packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss create mode 100644 packages/generic-box-sizing-reset/scss/_index.scss create mode 100644 packages/generic-box-sizing-reset/scss/_variable.scss diff --git a/packages/generic-box-sizing-reset/.gitignore b/packages/generic-box-sizing-reset/.gitignore index c219de4..42ffb40 100644 --- a/packages/generic-box-sizing-reset/.gitignore +++ b/packages/generic-box-sizing-reset/.gitignore @@ -1,2 +1,3 @@ .DS_Store -.sass-cache + +node_modules diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md index a1b7047..f0b657a 100644 --- a/packages/generic-box-sizing-reset/README.md +++ b/packages/generic-box-sizing-reset/README.md @@ -2,6 +2,7 @@ Box sizing reset https://github.com/avalanchesass/avalanche_base_box_sizing_reset +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/generic-box-sizing-reset/bower.json b/packages/generic-box-sizing-reset/bower.json deleted file mode 100644 index e885e04..0000000 --- a/packages/generic-box-sizing-reset/bower.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "avalanche_base_box_sizing_reset", - "description": "Box sizing reset", - "version": "3.0.0", - "authors": [ - "Markus Oberlehner" - ], - "homepage": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset", - "license": "GPL v2", - "main": "scss/_box_sizing_reset.scss", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json new file mode 100644 index 0000000..78cd321 --- /dev/null +++ b/packages/generic-box-sizing-reset/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanche_base_box_sizing_reset", + "description": "Box sizing reset", + "keywords": [ + "avalanche-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss b/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss deleted file mode 100644 index 18da20a..0000000 --- a/packages/generic-box-sizing-reset/scss/_box_sizing_reset.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* extract base_box_sizing_reset.css */ -/*--- -title: Box sizing reset -name: base_box_sizing_reset -section: Base ---- - -Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) -*/ -html { - box-sizing: border-box; -} -* { - &, - &::before, - &::after { - box-sizing: inherit; - } -} -/* end extract base_box_sizing_reset.css */ diff --git a/packages/generic-box-sizing-reset/scss/_index.scss b/packages/generic-box-sizing-reset/scss/_index.scss new file mode 100644 index 0000000..6b7c8aa --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_index.scss @@ -0,0 +1,24 @@ +@import 'avalanche_base_box_sizing_reset/variable'; + +@if $base-box-sizing-reset { + /* extract base_box_sizing_reset.css */ + /*--- + title: Box sizing reset + name: base_box_sizing_reset + section: Base + --- + + Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) + */ + html { + box-sizing: border-box; + } + * { + &, + &::before, + &::after { + box-sizing: inherit; + } + } + /* end extract base_box_sizing_reset.css */ +} diff --git a/packages/generic-box-sizing-reset/scss/_variable.scss b/packages/generic-box-sizing-reset/scss/_variable.scss new file mode 100644 index 0000000..5aeab8d --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_variable.scss @@ -0,0 +1 @@ +$base-box-sizing-reset: true !default; From 3c91d243778a66eccaa639034691e42bd0ed6ad8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 6 Feb 2016 20:52:17 +0100 Subject: [PATCH 171/355] converted to eyeglass module --- packages/object-island/.gitignore | 3 +- packages/object-island/README.md | 1 + packages/object-island/bower.json | 21 --------- packages/object-island/package.json | 25 +++++++++++ .../scss/{_island.scss => _index.scss} | 45 ++++++++----------- packages/object-island/scss/_mixin.scss | 19 ++++++++ packages/object-island/scss/_variable.scss | 8 ++++ 7 files changed, 73 insertions(+), 49 deletions(-) delete mode 100644 packages/object-island/bower.json create mode 100644 packages/object-island/package.json rename packages/object-island/scss/{_island.scss => _index.scss} (61%) create mode 100644 packages/object-island/scss/_mixin.scss create mode 100644 packages/object-island/scss/_variable.scss diff --git a/packages/object-island/.gitignore b/packages/object-island/.gitignore index c219de4..42ffb40 100644 --- a/packages/object-island/.gitignore +++ b/packages/object-island/.gitignore @@ -1,2 +1,3 @@ .DS_Store -.sass-cache + +node_modules diff --git a/packages/object-island/README.md b/packages/object-island/README.md index d35aa0c..d21f525 100644 --- a/packages/object-island/README.md +++ b/packages/object-island/README.md @@ -2,6 +2,7 @@ Box off content https://github.com/avalanchesass/avalanche_object_island +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/object-island/bower.json b/packages/object-island/bower.json deleted file mode 100644 index 97d59c9..0000000 --- a/packages/object-island/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche_object_island", - "description": "Box off content", - "version": "3.0.0", - "authors": [ - "Markus Oberlehner" - ], - "homepage": "https://github.com/avalanchesass/avalanche_object_island", - "license": "GPL v2", - "dependencies": { - "avalanche_mixin_object_island": "avalanchesass/avalanche_mixin_object_island#dev-3.0.0" - }, - "main": "scss/_island.scss", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/object-island/package.json b/packages/object-island/package.json new file mode 100644 index 0000000..5766718 --- /dev/null +++ b/packages/object-island/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanche_object_island", + "description": "Box off content", + "keywords": [ + "avalanche-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_object_island", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_object_island" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_object_island/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/object-island/scss/_island.scss b/packages/object-island/scss/_index.scss similarity index 61% rename from packages/object-island/scss/_island.scss rename to packages/object-island/scss/_index.scss index b43eddb..a31bffc 100644 --- a/packages/object-island/scss/_island.scss +++ b/packages/object-island/scss/_index.scss @@ -1,3 +1,6 @@ +@import 'avalanche_object_island/variable'; +@import 'avalanche_object_island/mixin'; + /* extract object_island.css */ /*--- title: Island @@ -7,23 +10,12 @@ section: Object Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). */ -/** - * Variables - */ -$o-island-sizes: (m) !default; -// The key of the associative map defines the size of the padding, the value is -// a map with breakpoint sizes for which island classes should be generated. -$o-island-sizes-with-breakpoints: ( - m: (), -) !default; - - - @each $-size in $o-island-sizes { - $-size-ext: '\\[#{$-size}\\]'; - $-size-ext-plain: '[#{$-size}]'; + $-block-class: '#{$o-island-namespace} '; + $-size-ext: '--#{$-size}'; $-default-text: ''; @if $-size == m { + $-block-class: ''; $-size-ext: ''; $-size-ext-plain: ''; @if length($o-island-sizes) > 1 { @@ -37,12 +29,12 @@ $o-island-sizes-with-breakpoints: ( --- ```example:html -
+
Island
``` */ - .o-island#{$-size-ext} { + .#{$o-island-namespace}#{$-size-ext} { @include o-island(map-get($spacing, $-size)); } } @@ -52,16 +44,15 @@ $o-island-sizes-with-breakpoints: ( $-breakpoints: nth($-size-and-breakpoints, 2); @each $-breakpoint in $-breakpoints { - $-size-ext: '\\[#{$-size}\\]'; - $-size-ext-plain: '[#{$-size}]'; + $-size-ext: '--#{$-size}'; $-default-text: ''; - @if $-size == m { - $-size-ext: ''; - $-size-ext-plain: ''; - @if length($o-island-sizes-with-breakpoints) > 1 { - $-default-text: ' (default)'; - } - } + // @if $-size == m { + // $-size-ext: ''; + // $-size-ext-plain: ''; + // @if length($o-island-sizes-with-breakpoints) > 1 { + // $-default-text: ' (default)'; + // } + // } /*--- title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} name: object_island_size_#{$-size}_at_#{$-breakpoint} @@ -69,13 +60,13 @@ $o-island-sizes-with-breakpoints: ( --- ```example:html -
+
Island
``` */ @media (min-width: map-get($breakpoints, $-breakpoint)) { - .o-island#{$-size-ext}\@#{$-breakpoint} { + .#{$o-island-namespace}#{$-size-ext}\@#{$-breakpoint} { @include o-island(map-get($spacing, $-size)); } } diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss new file mode 100644 index 0000000..da6687f --- /dev/null +++ b/packages/object-island/scss/_mixin.scss @@ -0,0 +1,19 @@ +/*--- +title: Mixin +name: object_island_mixin +section: object_island +--- + +```css +o-island([$-spacing: 1.5em]) +``` + +```css +.foo { + @include o-island(); +} +``` +*/ +@mixin o-island($-spacing: 1.5em) { + padding: $-spacing; +} diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss new file mode 100644 index 0000000..fd8dc45 --- /dev/null +++ b/packages/object-island/scss/_variable.scss @@ -0,0 +1,8 @@ +$o-island-namespace: '#{map-get($namespace, object)}island' !default; + +$o-island-sizes: (m) !default; +// The key of the associative map defines the size of the padding, the value is +// a map with breakpoint sizes for which island classes should be generated. +$o-island-sizes-with-breakpoints: ( + m: (), +) !default; From b3e5a4342c6c9640bc721cbfdd9172778c1d47b6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 10:07:38 +0100 Subject: [PATCH 172/355] changed the package prefix from "avalanche" to "avalanchesass" (in node module context), according to avalanchesass/avalanche#174 --- packages/generic-box-sizing-reset/README.md | 2 +- packages/generic-box-sizing-reset/package.json | 2 +- packages/generic-box-sizing-reset/scss/_index.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md index f0b657a..ddc7991 100644 --- a/packages/generic-box-sizing-reset/README.md +++ b/packages/generic-box-sizing-reset/README.md @@ -1,4 +1,4 @@ -# avalanche_base_box_sizing_reset +# avalanchesass_base_box_sizing_reset Box sizing reset https://github.com/avalanchesass/avalanche_base_box_sizing_reset diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json index 78cd321..2896785 100644 --- a/packages/generic-box-sizing-reset/package.json +++ b/packages/generic-box-sizing-reset/package.json @@ -1,5 +1,5 @@ { - "name": "avalanche_base_box_sizing_reset", + "name": "avalanchesass_base_box_sizing_reset", "description": "Box sizing reset", "keywords": [ "avalanche-package", diff --git a/packages/generic-box-sizing-reset/scss/_index.scss b/packages/generic-box-sizing-reset/scss/_index.scss index 6b7c8aa..c64c11c 100644 --- a/packages/generic-box-sizing-reset/scss/_index.scss +++ b/packages/generic-box-sizing-reset/scss/_index.scss @@ -1,4 +1,4 @@ -@import 'avalanche_base_box_sizing_reset/variable'; +@import 'avalanchesass_base_box_sizing_reset/variable'; @if $base-box-sizing-reset { /* extract base_box_sizing_reset.css */ From c5f89f76c68531c70255201f445ed62a19b94662 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 10:10:34 +0100 Subject: [PATCH 173/355] changed the package prefix from "avalanche" to "avalanchesass" (in node module context), according to avalanchesass/avalanche#174 --- packages/avalanchesass-object-grid/README.md | 2 +- packages/avalanchesass-object-grid/package.json | 4 ++-- packages/avalanchesass-object-grid/scss/_index.scss | 4 ++-- packages/avalanchesass-object-grid/scss/_mixin.scss | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index e84d54d..ce28195 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,4 +1,4 @@ -# avalanche_object_grid +# avalanchesass_object_grid Fluid width, responsive grid system https://github.com/avalanchesass/avalanche_object_grid diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 7dc9d68..59595b8 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -1,5 +1,5 @@ { - "name": "avalanche_object_grid", + "name": "avalanchesass_object_grid", "description": "Fluid width, responsive grid system", "keywords": [ "avalanche-package", @@ -11,7 +11,7 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { - "avalanche_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" + "avalanchesass_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" }, "repository": { "type": "git", diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 3f5ea66..422ee63 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,5 +1,5 @@ -@import 'avalanche_object_grid/variable'; -@import 'avalanche_object_grid/mixin'; +@import 'avalanchesass_object_grid/variable'; +@import 'avalanchesass_object_grid/mixin'; /* extract object_grid.css */ /*--- diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index b93c2ac..da7c9f7 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,4 +1,4 @@ -@import 'avalanche_utility_clearfix/mixin'; +@import 'avalanchesass_utility_clearfix/mixin'; /*--- title: Mixin From 3103c0762ec52facd27ad7dec0b774c406f42741 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 10:10:54 +0100 Subject: [PATCH 174/355] changed the package prefix from "avalanche" to "avalanchesass" (in node module context), according to avalanchesass/avalanche#174 --- packages/object-island/README.md | 2 +- packages/object-island/package.json | 2 +- packages/object-island/scss/_index.scss | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/object-island/README.md b/packages/object-island/README.md index d21f525..724f0f0 100644 --- a/packages/object-island/README.md +++ b/packages/object-island/README.md @@ -1,4 +1,4 @@ -# avalanche_object_island +# avalanchesass_object_island Box off content https://github.com/avalanchesass/avalanche_object_island diff --git a/packages/object-island/package.json b/packages/object-island/package.json index 5766718..be84e7a 100644 --- a/packages/object-island/package.json +++ b/packages/object-island/package.json @@ -1,5 +1,5 @@ { - "name": "avalanche_object_island", + "name": "avalanchesass_object_island", "description": "Box off content", "keywords": [ "avalanche-package", diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index a31bffc..00a82e8 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -1,5 +1,5 @@ -@import 'avalanche_object_island/variable'; -@import 'avalanche_object_island/mixin'; +@import 'avalanchesass_object_island/variable'; +@import 'avalanchesass_object_island/mixin'; /* extract object_island.css */ /*--- From 76f4d62e982a20b301b741a69a717af1211f9104 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 11:47:17 +0100 Subject: [PATCH 175/355] added package type extraction comments, according to avalanchesass/avalanche#172 --- packages/generic-box-sizing-reset/scss/_index.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/generic-box-sizing-reset/scss/_index.scss b/packages/generic-box-sizing-reset/scss/_index.scss index c64c11c..f6203c0 100644 --- a/packages/generic-box-sizing-reset/scss/_index.scss +++ b/packages/generic-box-sizing-reset/scss/_index.scss @@ -1,6 +1,7 @@ @import 'avalanchesass_base_box_sizing_reset/variable'; @if $base-box-sizing-reset { + /* extract base.css */ /* extract base_box_sizing_reset.css */ /*--- title: Box sizing reset @@ -21,4 +22,5 @@ } } /* end extract base_box_sizing_reset.css */ + /* end extract base.css */ } From 0e2005104354fe00c7c76f642401f001133013dd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 11:50:08 +0100 Subject: [PATCH 176/355] added package type extraction comments, according to avalanchesass/avalanche#172 --- packages/avalanchesass-object-grid/scss/_index.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 422ee63..ffc8ca8 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,6 +1,7 @@ @import 'avalanchesass_object_grid/variable'; @import 'avalanchesass_object_grid/mixin'; +/* extract object.css */ /* extract object_grid.css */ /*--- title: Grid @@ -260,3 +261,4 @@ Default responsive grid with vertical and horizontal spacing between items. } } /* end extract object_grid.css */ +/* end extract object.css */ From 55951e38163fbc8be32698c8821c0c83625fe239 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 7 Feb 2016 11:50:23 +0100 Subject: [PATCH 177/355] added package type extraction comments, according to avalanchesass/avalanche#172 --- packages/object-island/scss/_index.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index 00a82e8..e4d8461 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -1,6 +1,7 @@ @import 'avalanchesass_object_island/variable'; @import 'avalanchesass_object_island/mixin'; +/* extract object.css */ /* extract object_island.css */ /*--- title: Island @@ -73,3 +74,4 @@ Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2 } } /* end extract object_island.css */ +/* end extract object.css */ From 486405bf75b11edfd1d79fbc028609270f694271 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 8 Feb 2016 18:53:23 +0100 Subject: [PATCH 178/355] revamped mdcss commenting structure, introduced a separate style guide scss file to address problems with style guide generation when only the mixin file is loaded (according to avalanchesass/avalanche#175), added documentation for variables (according to avalanchesass/avalanche#141) --- packages/object-island/scss/_index.scss | 24 ++++------------- packages/object-island/scss/_mixin.scss | 7 +++-- packages/object-island/scss/_style_guide.scss | 26 +++++++++++++++++++ packages/object-island/scss/_variable.scss | 12 +++++++++ 4 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 packages/object-island/scss/_style_guide.scss diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index e4d8461..a354f8d 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -1,16 +1,9 @@ +@import 'avalanchesass_object_island/style_guide'; @import 'avalanchesass_object_island/variable'; @import 'avalanchesass_object_island/mixin'; /* extract object.css */ /* extract object_island.css */ -/*--- -title: Island -name: object_island -section: Object ---- - -Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). -*/ @each $-size in $o-island-sizes { $-block-class: '#{$o-island-namespace} '; $-size-ext: '--#{$-size}'; @@ -25,8 +18,8 @@ Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2 } /*--- title: Size: #{$-size}#{$-default-text} - name: object_island_size_#{$-size} - section: object_island + name: object_island_example_size_#{$-size} + section: object_island_example --- ```example:html @@ -47,17 +40,10 @@ Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2 @each $-breakpoint in $-breakpoints { $-size-ext: '--#{$-size}'; $-default-text: ''; - // @if $-size == m { - // $-size-ext: ''; - // $-size-ext-plain: ''; - // @if length($o-island-sizes-with-breakpoints) > 1 { - // $-default-text: ' (default)'; - // } - // } /*--- title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - name: object_island_size_#{$-size}_at_#{$-breakpoint} - section: object_island + name: object_island_example_size_#{$-size}_at_#{$-breakpoint} + section: object_island_example --- ```example:html diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss index da6687f..1a20795 100644 --- a/packages/object-island/scss/_mixin.scss +++ b/packages/object-island/scss/_mixin.scss @@ -1,13 +1,12 @@ +@import 'avalanchesass_object_island/style_guide'; + /*--- -title: Mixin -name: object_island_mixin -section: object_island +section: object_island_mixin --- ```css o-island([$-spacing: 1.5em]) ``` - ```css .foo { @include o-island(); diff --git a/packages/object-island/scss/_style_guide.scss b/packages/object-island/scss/_style_guide.scss new file mode 100644 index 0000000..612ba6c --- /dev/null +++ b/packages/object-island/scss/_style_guide.scss @@ -0,0 +1,26 @@ +/*--- +title: Island +name: object_island +section: Object +--- + +Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). +*/ +/*--- +title: Example +name: object_island_example +section: object_island +--- +*/ +/*--- +title: Mixin +name: object_island_mixin +section: object_island +--- +*/ +/*--- +title: Variable +name: object_island_variable +section: object_island +--- +*/ diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss index fd8dc45..25f199f 100644 --- a/packages/object-island/scss/_variable.scss +++ b/packages/object-island/scss/_variable.scss @@ -1,3 +1,5 @@ +@import 'avalanchesass_object_island/style_guide'; + $o-island-namespace: '#{map-get($namespace, object)}island' !default; $o-island-sizes: (m) !default; @@ -6,3 +8,13 @@ $o-island-sizes: (m) !default; $o-island-sizes-with-breakpoints: ( m: (), ) !default; +/*--- +section: object_island_variable +--- + +```css +$o-island-namespace: '#{$o-island-namespace}'; +$o-island-sizes: ('#{$o-island-sizes}'); +$o-island-sizes-with-breakpoints: (nested-map); +``` +*/ From 4973c819a75815e0cb293498169cb8623acb4269 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 9 Feb 2016 18:29:43 +0100 Subject: [PATCH 179/355] revamped mdcss commenting structure, introduced a separate style guide scss file to address problems with style guide generation when only the mixin file is loaded (according to avalanchesass/avalanche#175), added documentation for variables (according to avalanchesass/avalanche#141) --- .../scss/_index.scss | 53 +++++++++---------- .../scss/_mixin.scss | 2 + .../scss/_style_guide.scss | 11 ++++ .../scss/_variable.scss | 21 ++++++++ 4 files changed, 59 insertions(+), 28 deletions(-) create mode 100644 packages/avalanchesass-object-grid/scss/_style_guide.scss diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index ffc8ca8..d07df3c 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,23 +1,20 @@ +@import 'avalanchesass_object_grid/style_guide'; @import 'avalanchesass_object_grid/variable'; @import 'avalanchesass_object_grid/mixin'; /* extract object.css */ /* extract object_grid.css */ /*--- -title: Grid -name: object_grid -section: Object +title: Example +name: object_grid_example +section: object_grid +sort: 1 --- - -Fluid width, responsive grid system. - -**TIP:** Most likely you want to use this package in combination with the -[width utility package](https://github.com/avalanchesass/avalanche_utility_width). */ /*--- title: Default -name: object_grid_default -section: object_grid +name: object_grid_example_default +section: object_grid_example --- Default responsive grid with vertical and horizontal spacing between items. @@ -52,16 +49,16 @@ Default responsive grid with vertical and horizontal spacing between items. @if length($o-grid-spaced-vertical-sizes) >= 1 or length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Spacing - name: object_grid_spacing - section: object_grid + name: object_grid_example_spacing + section: object_grid_example --- */ } @if length($o-grid-spaced-vertical-sizes) >= 1 { /*--- title: Vertical - name: object_grid_spacing_vertical - section: object_grid_spacing + name: object_grid_example_spacing_vertical + section: object_grid_example_spacing --- Vertical spacing between grid items. @@ -82,8 +79,8 @@ Default responsive grid with vertical and horizontal spacing between items. $-selector: '.#{$-class-name}'; /*--- title: Size: #{$-size}#{$-default-text} - name: object_grid_spacing_vertical_size_#{$-size} - section: object_grid_spacing_vertical + name: object_grid_example_spacing_vertical_size_#{$-size} + section: object_grid_example_spacing_vertical --- ```example:html @@ -111,8 +108,8 @@ Default responsive grid with vertical and horizontal spacing between items. $-size-ext: '-#{$-size}'; /*--- title: Size: #{$-size}@#{$-breakpoint} - name: object_grid_spacing_vertical_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_spacing_vertical + name: object_grid_example_spacing_vertical_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_example_spacing_vertical --- ```example:html @@ -138,8 +135,8 @@ Default responsive grid with vertical and horizontal spacing between items. @if length($o-grid-spaced-horizontal-sizes) >= 1 { /*--- title: Horizontal - name: object_grid_spacing_horizontal - section: object_grid_spacing + name: object_grid_example_spacing_horizontal + section: object_grid_example_spacing --- Horizontal spacing between grid items. @@ -160,8 +157,8 @@ Default responsive grid with vertical and horizontal spacing between items. $-selector: '.#{$-class-name}'; /*--- title: Size: #{$-size}#{$-default-text} - name: object_grid_spacing_horizontal_size_#{$-size} - section: object_grid_spacing_horizontal + name: object_grid_example_spacing_horizontal_size_#{$-size} + section: object_grid_example_spacing_horizontal --- ```example:html @@ -189,8 +186,8 @@ Default responsive grid with vertical and horizontal spacing between items. $-size-ext: '-#{$-size}'; /*--- title: Size: #{$-size}@#{$-breakpoint} - name: object_grid_spacing_horizontal_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_spacing_horizontal + name: object_grid_example_spacing_horizontal_size_#{$-size}_at_#{$-breakpoint} + section: object_grid_example_spacing_horizontal --- ```example:html @@ -218,8 +215,8 @@ Default responsive grid with vertical and horizontal spacing between items. @if $o-grid-collapsed-vertical { /*--- title: Vertical collapsed - name: object_grid_collapsed_vertical - section: object_grid + name: object_grid_example_collapsed_vertical + section: object_grid_example --- ```example:html @@ -241,8 +238,8 @@ Default responsive grid with vertical and horizontal spacing between items. @if $o-grid-collapsed-horizontal { /*--- title: Horizontal collapsed - name: object_grid_collapsed_horizontal - section: object_grid + name: object_grid_example_collapsed_horizontal + section: object_grid_example --- ```example:html diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index da7c9f7..9914f4b 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,9 +1,11 @@ +@import 'avalanchesass_object_grid/style_guide'; @import 'avalanchesass_utility_clearfix/mixin'; /*--- title: Mixin name: object_grid_mixin section: object_grid +sort: 2 --- ```css diff --git a/packages/avalanchesass-object-grid/scss/_style_guide.scss b/packages/avalanchesass-object-grid/scss/_style_guide.scss new file mode 100644 index 0000000..f4f3eec --- /dev/null +++ b/packages/avalanchesass-object-grid/scss/_style_guide.scss @@ -0,0 +1,11 @@ +/*--- +title: Grid +name: object_grid +section: Object +--- + +Fluid width, responsive grid system. + +**TIP:** Most likely you want to use this package in combination with the +[width utility package](https://github.com/avalanchesass/avalanche_utility_width). +*/ diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 976759d..a5276b0 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,3 +1,5 @@ +@import 'avalanchesass_object_grid/style_guide'; + $o-grid-namespace: '#{map-get($namespace, object)}grid' !default; // Flexbox grid system. @@ -26,3 +28,22 @@ $o-grid-spaced-horizontal-sizes-with-breakpoints: ( ) !default; // Horizontal collapsed grid. $o-grid-collapsed-horizontal: false !default; +/*--- +title: Variable +name: oobject_grid_variable +section: object_grid +sort: 3 +--- + +```css +$o-grid-namespace: '#{$o-grid-namespace}'; +$o-grid-flex: #{$o-grid-flex}; +$o-grid-flex-fallback: #{$o-grid-flex-fallback}; +$o-grid-spaced-vertical-sizes: (#{$o-grid-spaced-vertical-sizes}); +$o-grid-spaced-vertical-sizes-with-breakpoints: (nested-map); +$o-grid-collapsed-vertical: #{$o-grid-collapsed-vertical}; +$o-grid-spaced-horizontal-sizes: (#{$o-grid-spaced-horizontal-sizes}); +$o-grid-spaced-horizontal-sizes-with-breakpoints: (nested-map); +$o-grid-collapsed-horizontal: #{$o-grid-collapsed-horizontal}; +``` +*/ From f8aec858c205044193637990e00f8ba4178cd362 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 9 Feb 2016 18:31:28 +0100 Subject: [PATCH 180/355] moved styleguide documentation headers back in the concerned files and implemented a "sort" custom property to order styleguide objects, this prevents problems when importing only the mixin --- packages/object-island/scss/_index.scss | 7 +++++++ packages/object-island/scss/_mixin.scss | 5 ++++- packages/object-island/scss/_style_guide.scss | 18 ------------------ packages/object-island/scss/_variable.scss | 5 ++++- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index a354f8d..221fecf 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -4,6 +4,13 @@ /* extract object.css */ /* extract object_island.css */ +/*--- +title: Example +name: object_island_example +section: object_island +sort: 1 +--- +*/ @each $-size in $o-island-sizes { $-block-class: '#{$o-island-namespace} '; $-size-ext: '--#{$-size}'; diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss index 1a20795..387f766 100644 --- a/packages/object-island/scss/_mixin.scss +++ b/packages/object-island/scss/_mixin.scss @@ -1,7 +1,10 @@ @import 'avalanchesass_object_island/style_guide'; /*--- -section: object_island_mixin +title: Mixin +name: object_island_mixin +section: object_island +sort: 2 --- ```css diff --git a/packages/object-island/scss/_style_guide.scss b/packages/object-island/scss/_style_guide.scss index 612ba6c..7ceb82d 100644 --- a/packages/object-island/scss/_style_guide.scss +++ b/packages/object-island/scss/_style_guide.scss @@ -6,21 +6,3 @@ section: Object Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). */ -/*--- -title: Example -name: object_island_example -section: object_island ---- -*/ -/*--- -title: Mixin -name: object_island_mixin -section: object_island ---- -*/ -/*--- -title: Variable -name: object_island_variable -section: object_island ---- -*/ diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss index 25f199f..50805e8 100644 --- a/packages/object-island/scss/_variable.scss +++ b/packages/object-island/scss/_variable.scss @@ -9,7 +9,10 @@ $o-island-sizes-with-breakpoints: ( m: (), ) !default; /*--- -section: object_island_variable +title: Variable +name: object_island_variable +section: object_island +sort: 3 --- ```css From bcf18b4dea74824fd8e2481c4f6a7e169e0d6c05 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 9 Feb 2016 19:26:01 +0100 Subject: [PATCH 181/355] fixed typo --- packages/avalanchesass-object-grid/scss/_variable.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index a5276b0..bd14154 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -30,7 +30,7 @@ $o-grid-spaced-horizontal-sizes-with-breakpoints: ( $o-grid-collapsed-horizontal: false !default; /*--- title: Variable -name: oobject_grid_variable +name: object_grid_variable section: object_grid sort: 3 --- From 0d310ff9c98f57f569e20b96b47295b587445ead Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 11 Feb 2016 16:59:54 +0100 Subject: [PATCH 182/355] revamped mdcss commenting structure, introduced a separate style guide scss file to address problems with style guide generation when only the mixin file is loaded (according to avalanchesass/avalanche#175), added documentation for variables (according to avalanchesass/avalanche#141) --- packages/generic-box-sizing-reset/scss/_index.scss | 9 +-------- .../generic-box-sizing-reset/scss/_style_guide.scss | 12 ++++++++++++ .../generic-box-sizing-reset/scss/_variable.scss | 12 ++++++++++++ 3 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 packages/generic-box-sizing-reset/scss/_style_guide.scss diff --git a/packages/generic-box-sizing-reset/scss/_index.scss b/packages/generic-box-sizing-reset/scss/_index.scss index f6203c0..40fc8b8 100644 --- a/packages/generic-box-sizing-reset/scss/_index.scss +++ b/packages/generic-box-sizing-reset/scss/_index.scss @@ -1,16 +1,9 @@ +@import 'avalanchesass_base_box_sizing_reset/style_guide'; @import 'avalanchesass_base_box_sizing_reset/variable'; @if $base-box-sizing-reset { /* extract base.css */ /* extract base_box_sizing_reset.css */ - /*--- - title: Box sizing reset - name: base_box_sizing_reset - section: Base - --- - - Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) - */ html { box-sizing: border-box; } diff --git a/packages/generic-box-sizing-reset/scss/_style_guide.scss b/packages/generic-box-sizing-reset/scss/_style_guide.scss new file mode 100644 index 0000000..463e9f0 --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_style_guide.scss @@ -0,0 +1,12 @@ +@import 'avalanchesass_base_box_sizing_reset/variable'; + +@if $base-box-sizing-reset { + /*--- + title: Box sizing reset + name: base_box_sizing_reset + section: Base + --- + + Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) + */ +} diff --git a/packages/generic-box-sizing-reset/scss/_variable.scss b/packages/generic-box-sizing-reset/scss/_variable.scss index 5aeab8d..713d9fd 100644 --- a/packages/generic-box-sizing-reset/scss/_variable.scss +++ b/packages/generic-box-sizing-reset/scss/_variable.scss @@ -1 +1,13 @@ +@import 'avalanchesass_base_box_sizing_reset/style_guide'; + $base-box-sizing-reset: true !default; +/*--- +title: Variable +name: base_box_sizing_reset_variable +section: base_box_sizing_reset +--- + +```css +$base-box-sizing-reset: #{$base-box-sizing-reset}; +``` +*/ From 6d171158cbd0e3bfb746159f34317d5a8e23972f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 11 Feb 2016 17:20:47 +0100 Subject: [PATCH 183/355] removed quotes around a variable example --- packages/object-island/scss/_variable.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss index 50805e8..23310ba 100644 --- a/packages/object-island/scss/_variable.scss +++ b/packages/object-island/scss/_variable.scss @@ -17,7 +17,7 @@ sort: 3 ```css $o-island-namespace: '#{$o-island-namespace}'; -$o-island-sizes: ('#{$o-island-sizes}'); +$o-island-sizes: (#{$o-island-sizes}); $o-island-sizes-with-breakpoints: (nested-map); ``` */ From 91c9c1481299f1b5fc5623c0099af69b58d18689 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 12 Feb 2016 17:21:14 +0100 Subject: [PATCH 184/355] fixed identation --- packages/object-island/scss/_index.scss | 32 ++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index 221fecf..be55d35 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -41,30 +41,30 @@ sort: 1 } @each $-size-and-breakpoints in $o-island-sizes-with-breakpoints { - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); - @each $-breakpoint in $-breakpoints { - $-size-ext: '--#{$-size}'; - $-default-text: ''; - /*--- - title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - name: object_island_example_size_#{$-size}_at_#{$-breakpoint} - section: object_island_example - --- + @each $-breakpoint in $-breakpoints { + $-size-ext: '--#{$-size}'; + $-default-text: ''; + /*--- + title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} + name: object_island_example_size_#{$-size}_at_#{$-breakpoint} + section: object_island_example + --- ```example:html
- Island +Island
``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$o-island-namespace}#{$-size-ext}\@#{$-breakpoint} { - @include o-island(map-get($spacing, $-size)); - } + */ + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .#{$o-island-namespace}#{$-size-ext}\@#{$-breakpoint} { + @include o-island(map-get($spacing, $-size)); } } } +} /* end extract object_island.css */ /* end extract object.css */ From 28880b57d0d6da070c21b6d5103e823c6b7b951f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 12 Feb 2016 18:09:20 +0100 Subject: [PATCH 185/355] 3.x.x updates --- packages/object-media/.gitignore | 4 +- packages/object-media/README.md | 5 +- packages/object-media/bower.json | 24 ---- packages/object-media/package.json | 25 ++++ packages/object-media/scss/_index.scss | 131 +++++++++++++++++++ packages/object-media/scss/_media.scss | 86 ------------ packages/object-media/scss/_style_guide.scss | 12 ++ packages/object-media/scss/_variable.scss | 19 +++ 8 files changed, 192 insertions(+), 114 deletions(-) delete mode 100644 packages/object-media/bower.json create mode 100644 packages/object-media/package.json create mode 100644 packages/object-media/scss/_index.scss delete mode 100644 packages/object-media/scss/_media.scss create mode 100644 packages/object-media/scss/_style_guide.scss create mode 100644 packages/object-media/scss/_variable.scss diff --git a/packages/object-media/.gitignore b/packages/object-media/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/object-media/.gitignore +++ b/packages/object-media/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/object-media/README.md b/packages/object-media/README.md index 4a26afe..bc113ad 100644 --- a/packages/object-media/README.md +++ b/packages/object-media/README.md @@ -1,7 +1,8 @@ -# avalanche: Object media -Image on one side, with descriptive content on the other side +# avalanchesass_object_media +Media object - image on left/right, text next to it https://github.com/avalanchesass/avalanche_object_media +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/object-media/bower.json b/packages/object-media/bower.json deleted file mode 100644 index 5d03e2b..0000000 --- a/packages/object-media/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "avalanche: Object media", - "version": "2.0.3", - "homepage": "https://github.com/avalanchesass/avalanche_object_media", - "authors": [ - "Markus Oberlehner" - ], - "description": "Image on one side, with descriptive content on the other side", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } -} diff --git a/packages/object-media/package.json b/packages/object-media/package.json new file mode 100644 index 0000000..6516019 --- /dev/null +++ b/packages/object-media/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_object_media", + "description": "Media object - image on left/right, text next to it", + "keywords": [ + "avalanche-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_object_media", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_object_media" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_object_media/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/object-media/scss/_index.scss b/packages/object-media/scss/_index.scss new file mode 100644 index 0000000..3ffcc58 --- /dev/null +++ b/packages/object-media/scss/_index.scss @@ -0,0 +1,131 @@ +@import 'avalanchesass_object_media/style_guide'; +@import 'avalanchesass_object_media/variable'; + +/* extract object.css */ +/* extract object_media.css */ +/*--- +title: Example +name: object_media_example +section: object_media +sort: 1 +--- + +```example:html +
+
+ +
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et

+
+
+
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et

+
+
+ +
+
+``` +*/ +.#{$o-media-namespace} { + display: flex; +} + +.#{$o-media-namespace}__body { + flex: 1; +} + +.#{$o-media-namespace}__figure { + img, + video { + display: block; + } +} + +@each $-size in $o-media-sizes { + $-block-class: '#{$o-media-namespace} '; + $-size-ext: '--#{$-size}'; + $-default-text: ''; + @if $-size == s { + $-block-class: ''; + $-size-ext: ''; + $-size-ext-plain: ''; + @if length($o-media-sizes) > 1 { + $-default-text: ' (default)'; + } + } + /*--- + title: Size: #{$-size}#{$-default-text} + name: object_media_example_size_#{$-size} + section: object_media_example + --- + +```example:html +
+
+ +
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et

+
+
+``` + */ + .#{$o-media-namespace}#{$-size-ext} { + > :last-child { + margin-left: map-get($spacing, $-size); + } + } +} + +@each $-breakpoint in $o-media-stacked-breakpoints { + /*--- + title: Stacked up to breakpoint: #{$-breakpoint} + name: object_media_example_stacked_to_#{$-breakpoint} + section: object_media_example + --- + +```example:html +
+
+ +
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et

+
+
+``` + */ + @media (max-width: map-get($breakpoints-max, $-breakpoint)) { + .#{$o-media-namespace}--stacked2#{$-breakpoint} { + &, + .#{$o-media-namespace}__figure img, + .#{$o-media-namespace}__figure video { + display: initial; + } + > :last-child { + margin-top: map-get($spacing, s); + margin-left: initial; + } + } + } +} + +.u-align-self-center { + align-self: auto; +} +.u-align-self-bottom { + align-self: flex-end; +} +/* end extract object_media.css */ +/* end extract object.css */ diff --git a/packages/object-media/scss/_media.scss b/packages/object-media/scss/_media.scss deleted file mode 100644 index 355aada..0000000 --- a/packages/object-media/scss/_media.scss +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Media - * - * The media object is an image on one side, with descriptive content on the other side.
- * [Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) - * - * @level X.X. - * @markup - *
- *
- * - *
- *
- * Lorem ipsum dolor sit... - *
- *
- */ -.o-media { - @include u-clearfix(); -} - -.o-media__figure, -.o-media__figure-rev { - img { - display: block; - } -} - -.o-media__figure { - float: left; - margin-right: $spacing-m; -} - -.o-media__body { - overflow: hidden; -} - - - -/** - * Reversed figure location - * - * @level X.X.X. - * @markup - *
- *
- * - *
- *
- * Lorem ipsum dolor sit... - *
- *
- */ -.o-media__figure-rev { - float: right; - margin-left: $spacing-m; -} - - - -/** - * Reset media styling on small screens - * - * @level X.X.X. - * @markup - *
- *
- * - *
- *
- * Lorem ipsum dolor sit... - *
- *
- */ -@media (max-width: $breakpoint-max-m) { - .o-media--mobile-reset { - .o-media__figure { - float: none; - margin-right: 0; - } - .o-media__figure-rev { - float: none; - margin-left: 0; - } - } -} diff --git a/packages/object-media/scss/_style_guide.scss b/packages/object-media/scss/_style_guide.scss new file mode 100644 index 0000000..05e6097 --- /dev/null +++ b/packages/object-media/scss/_style_guide.scss @@ -0,0 +1,12 @@ +/*--- +title: Media +name: object_media +section: Object +--- + +Media object - image on left/right, text next to it. +[Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) + +**TIP:** You can use this package in combination with the +[align-self utility package](https://github.com/avalanchesass/avalanche_utility_align_self). +*/ diff --git a/packages/object-media/scss/_variable.scss b/packages/object-media/scss/_variable.scss new file mode 100644 index 0000000..9b58bfe --- /dev/null +++ b/packages/object-media/scss/_variable.scss @@ -0,0 +1,19 @@ +@import 'avalanchesass_object_media/style_guide'; + +$o-media-namespace: '#{map-get($namespace, object)}media' !default; + +$o-media-sizes: (s) !default; +$o-media-stacked-breakpoints: () !default; +/*--- +title: Variable +name: object_media_variable +section: object_media +sort: 2 +--- + +```css +$o-media-namespace: '#{$o-media-namespace}'; +$o-media-sizes: (#{$o-media-sizes}); +$o-media-stacked-breakpoints: (#{$o-media-stacked-breakpoints}); +``` +*/ From 257ffb0bcb1c9b3904d590a1f6ad08cd08c96c01 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 12 Feb 2016 18:37:18 +0100 Subject: [PATCH 186/355] added a collapsed modifier --- packages/object-media/scss/_index.scss | 27 +++++++++++++++++++++++ packages/object-media/scss/_variable.scss | 1 + 2 files changed, 28 insertions(+) diff --git a/packages/object-media/scss/_index.scss b/packages/object-media/scss/_index.scss index 3ffcc58..3d35301 100644 --- a/packages/object-media/scss/_index.scss +++ b/packages/object-media/scss/_index.scss @@ -121,6 +121,33 @@ sort: 1 } } +@if $o-media-collapsed { + /*--- + title: Collapsed + name: object_media_example_collapsed + section: object_media_example + --- + +```example:html +
+
+ +
+
+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et

+
+
+``` + */ + .#{$o-media-namespace}--collapsed { + > :last-child { + margin-left: 0; + } + } +} + .u-align-self-center { align-self: auto; } diff --git a/packages/object-media/scss/_variable.scss b/packages/object-media/scss/_variable.scss index 9b58bfe..98b368f 100644 --- a/packages/object-media/scss/_variable.scss +++ b/packages/object-media/scss/_variable.scss @@ -4,6 +4,7 @@ $o-media-namespace: '#{map-get($namespace, object)}media' !default; $o-media-sizes: (s) !default; $o-media-stacked-breakpoints: () !default; +$o-media-collapsed: false !default; /*--- title: Variable name: object_media_variable From 7cd1e1d2e3617c763b876f754c3d692c9763829a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:38:23 +0100 Subject: [PATCH 187/355] removed @include mixin example according to avalanchesass/avalanche#182 --- packages/object-island/scss/_mixin.scss | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss index 387f766..1211881 100644 --- a/packages/object-island/scss/_mixin.scss +++ b/packages/object-island/scss/_mixin.scss @@ -10,11 +10,6 @@ sort: 2 ```css o-island([$-spacing: 1.5em]) ``` -```css -.foo { - @include o-island(); -} -``` */ @mixin o-island($-spacing: 1.5em) { padding: $-spacing; From 5b68b56cdf45d7db3c615d33f969be3f5ff9f589 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:38:52 +0100 Subject: [PATCH 188/355] removed @include mixin example according to avalanchesass/avalanche#182 --- packages/avalanchesass-object-grid/scss/_mixin.scss | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 9914f4b..76ddd17 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -18,16 +18,6 @@ o-grid-spaced-horizontal([$-spacing: map-get($spacing, m)[, $-item-selector: '.o // Basic grid item. o-grid-item([$-flex: true[, $-flex-fallback: false]]) ``` -```css -.foo { - @include o-grid(); - @include o-grid-spaced-vertical(); - @include o-grid-spaced-horizontal(); -} -.bar { - @include o-grid-item(); -} -``` */ @mixin o-grid($-flex: true, $-flex-fallback: false) { @if $-flex { From e798cd47c7561371e2578edb469ea99de029678e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:54:52 +0100 Subject: [PATCH 189/355] changed the npm keyword "avalanche-package" to "avalanchesass-package", according to avalanchesass/avalanche#176 --- packages/generic-box-sizing-reset/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json index 2896785..cb5e2fa 100644 --- a/packages/generic-box-sizing-reset/package.json +++ b/packages/generic-box-sizing-reset/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass_base_box_sizing_reset", "description": "Box sizing reset", "keywords": [ - "avalanche-package", + "avalanchesass-package", "eyeglass-module", "sass" ], From 1da8d162c159ff8b441656b2e32b4387b485cbc6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:58:10 +0100 Subject: [PATCH 190/355] changed the npm keyword "avalanche-package" to "avalanchesass-package", according to avalanchesass/avalanche#176 --- packages/avalanchesass-object-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 59595b8..74e51f0 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass_object_grid", "description": "Fluid width, responsive grid system", "keywords": [ - "avalanche-package", + "avalanchesass-package", "eyeglass-module", "sass" ], From 6d27c3c24ee1b28c2d9e50bf8b8a5241e33c2a29 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:58:43 +0100 Subject: [PATCH 191/355] changed the npm keyword "avalanche-package" to "avalanchesass-package", according to avalanchesass/avalanche#176 --- packages/object-island/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/package.json b/packages/object-island/package.json index be84e7a..5eef6b6 100644 --- a/packages/object-island/package.json +++ b/packages/object-island/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass_object_island", "description": "Box off content", "keywords": [ - "avalanche-package", + "avalanchesass-package", "eyeglass-module", "sass" ], From c0810594ac78b8288244279ea58e01746cd4389a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 13 Feb 2016 06:59:08 +0100 Subject: [PATCH 192/355] changed the npm keyword "avalanche-package" to "avalanchesass-package", according to avalanchesass/avalanche#176 --- packages/object-media/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-media/package.json b/packages/object-media/package.json index 6516019..6cb4cde 100644 --- a/packages/object-media/package.json +++ b/packages/object-media/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass_object_media", "description": "Media object - image on left/right, text next to it", "keywords": [ - "avalanche-package", + "avalanchesass-package", "eyeglass-module", "sass" ], From 116b805566093f1975cfd17e768a27c72f5d7cc4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 18 Feb 2016 19:04:33 +0100 Subject: [PATCH 193/355] add spacing between import dependecy types --- packages/avalanchesass-object-grid/scss/_mixin.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 76ddd17..1dc7a32 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,4 +1,5 @@ @import 'avalanchesass_object_grid/style_guide'; + @import 'avalanchesass_utility_clearfix/mixin'; /*--- From dc7329ca52510ce8f68735388c45e87939eec9e4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 27 Feb 2016 20:06:40 +0100 Subject: [PATCH 194/355] rename "sort" style guide parameter to "order", according to avalanchesass/avalanche#206 --- packages/avalanchesass-object-grid/scss/_index.scss | 2 +- packages/avalanchesass-object-grid/scss/_mixin.scss | 2 +- packages/avalanchesass-object-grid/scss/_variable.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index d07df3c..d43a1fe 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -8,7 +8,7 @@ title: Example name: object_grid_example section: object_grid -sort: 1 +order: 1 --- */ /*--- diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 1dc7a32..5ea9b8d 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -6,7 +6,7 @@ title: Mixin name: object_grid_mixin section: object_grid -sort: 2 +order: 2 --- ```css diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index bd14154..2aaf12c 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -32,7 +32,7 @@ $o-grid-collapsed-horizontal: false !default; title: Variable name: object_grid_variable section: object_grid -sort: 3 +order: 3 --- ```css From 3ba52d9586b70b13fa07dd75cd0b47599c68f484 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 27 Feb 2016 20:07:17 +0100 Subject: [PATCH 195/355] rename "sort" style guide parameter to "order", according to avalanchesass/avalanche#206 --- packages/object-island/scss/_index.scss | 2 +- packages/object-island/scss/_mixin.scss | 2 +- packages/object-island/scss/_variable.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss index be55d35..0ec4f06 100644 --- a/packages/object-island/scss/_index.scss +++ b/packages/object-island/scss/_index.scss @@ -8,7 +8,7 @@ title: Example name: object_island_example section: object_island -sort: 1 +order: 1 --- */ @each $-size in $o-island-sizes { diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss index 1211881..b5dbf5a 100644 --- a/packages/object-island/scss/_mixin.scss +++ b/packages/object-island/scss/_mixin.scss @@ -4,7 +4,7 @@ title: Mixin name: object_island_mixin section: object_island -sort: 2 +order: 2 --- ```css diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss index 23310ba..1470f34 100644 --- a/packages/object-island/scss/_variable.scss +++ b/packages/object-island/scss/_variable.scss @@ -12,7 +12,7 @@ $o-island-sizes-with-breakpoints: ( title: Variable name: object_island_variable section: object_island -sort: 3 +order: 3 --- ```css From 68ca0aa605aa1cce034e942c397758cfa0cf9e01 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 27 Feb 2016 20:08:03 +0100 Subject: [PATCH 196/355] rename "sort" style guide parameter to "order", according to avalanchesass/avalanche#206 --- packages/object-media/scss/_index.scss | 2 +- packages/object-media/scss/_variable.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/object-media/scss/_index.scss b/packages/object-media/scss/_index.scss index 3d35301..a5d1b55 100644 --- a/packages/object-media/scss/_index.scss +++ b/packages/object-media/scss/_index.scss @@ -7,7 +7,7 @@ title: Example name: object_media_example section: object_media -sort: 1 +order: 1 --- ```example:html diff --git a/packages/object-media/scss/_variable.scss b/packages/object-media/scss/_variable.scss index 98b368f..ce34b39 100644 --- a/packages/object-media/scss/_variable.scss +++ b/packages/object-media/scss/_variable.scss @@ -9,7 +9,7 @@ $o-media-collapsed: false !default; title: Variable name: object_media_variable section: object_media -sort: 2 +order: 2 --- ```css From 3c6148f02fa85e2d206210abc59f9632c577b92f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Mar 2016 18:55:01 +0100 Subject: [PATCH 197/355] add infos about installation and usage to the README --- packages/generic-box-sizing-reset/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md index ddc7991..fb5057e 100644 --- a/packages/generic-box-sizing-reset/README.md +++ b/packages/generic-box-sizing-reset/README.md @@ -1,6 +1,16 @@ # avalanchesass_base_box_sizing_reset -Box sizing reset -https://github.com/avalanchesass/avalanche_base_box_sizing_reset +Box sizing reset. + +## Install +``` +npm install avalanchesass_base_box_sizing_reset --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_base_box_sizing_reset'; +``` ## About ### Author From 77123c271ff4425f228b9ebd6cf909ebe1814c98 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 14 Mar 2016 18:28:36 +0100 Subject: [PATCH 198/355] update the README to match final v3 standard --- packages/avalanchesass-object-grid/README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index ce28195..3d43a63 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,6 +1,19 @@ # avalanchesass_object_grid -Fluid width, responsive grid system -https://github.com/avalanchesass/avalanche_object_grid +Fluid width, responsive grid system. + +## Install +``` +npm install avalanchesass_object_grid --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_object_grid'; + +/* Import just the mixin file. */ +@import 'avalanchesass_object_grid/mixin'; +``` ## About ### Author From 6012448a07f809b98a50eb79070542ecb055054a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 14 Mar 2016 18:46:06 +0100 Subject: [PATCH 199/355] reference the npm hosted version of the clearfix package in the dependencies, minor formatting changes, reference the npm hosted width utility package --- packages/avalanchesass-object-grid/package.json | 2 +- packages/avalanchesass-object-grid/scss/_mixin.scss | 4 +++- packages/avalanchesass-object-grid/scss/_style_guide.scss | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 74e51f0..684584b 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -11,7 +11,7 @@ "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", "dependencies": { - "avalanchesass_utility_clearfix": "avalanchesass/avalanche_utility_clearfix#dev-3.0.0" + "avalanchesass_utility_clearfix": "^3.0.0" }, "repository": { "type": "git", diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 5ea9b8d..c4ad836 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,5 +1,4 @@ @import 'avalanchesass_object_grid/style_guide'; - @import 'avalanchesass_utility_clearfix/mixin'; /*--- @@ -12,10 +11,13 @@ order: 2 ```css // Basic grid. o-grid([$-flex: true[, $-flex-fallback: false]]) + // Vertical spacing between grid items. o-grid-spaced-vertical([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) + // Horizontal spacing between grid items. o-grid-spaced-horizontal([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) + // Basic grid item. o-grid-item([$-flex: true[, $-flex-fallback: false]]) ``` diff --git a/packages/avalanchesass-object-grid/scss/_style_guide.scss b/packages/avalanchesass-object-grid/scss/_style_guide.scss index f4f3eec..1617a66 100644 --- a/packages/avalanchesass-object-grid/scss/_style_guide.scss +++ b/packages/avalanchesass-object-grid/scss/_style_guide.scss @@ -7,5 +7,5 @@ section: Object Fluid width, responsive grid system. **TIP:** Most likely you want to use this package in combination with the -[width utility package](https://github.com/avalanchesass/avalanche_utility_width). +[width utility package](https://www.npmjs.com/package/avalanchesass_utility_width). */ From 42d565a65d639a70a07c0e6459c1dbe7a93cee01 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 15 Mar 2016 20:37:54 +0100 Subject: [PATCH 200/355] update to 3.0.0 standards --- .../avalanchesass-utility-grid/.gitignore | 4 +- packages/avalanchesass-utility-grid/README.md | 20 ++- .../avalanchesass-utility-grid/bower.json | 26 ---- .../avalanchesass-utility-grid/package.json | 26 ++++ .../scss/_index.scss | 45 ++++++ .../scss/_mixin.scss | 17 +++ .../scss/_style_guide.scss | 8 + .../scss/_variable.scss | 19 +++ .../scss/_width.scss | 139 ------------------ 9 files changed, 134 insertions(+), 170 deletions(-) delete mode 100644 packages/avalanchesass-utility-grid/bower.json create mode 100644 packages/avalanchesass-utility-grid/package.json create mode 100644 packages/avalanchesass-utility-grid/scss/_index.scss create mode 100644 packages/avalanchesass-utility-grid/scss/_mixin.scss create mode 100644 packages/avalanchesass-utility-grid/scss/_style_guide.scss create mode 100644 packages/avalanchesass-utility-grid/scss/_variable.scss delete mode 100644 packages/avalanchesass-utility-grid/scss/_width.scss diff --git a/packages/avalanchesass-utility-grid/.gitignore b/packages/avalanchesass-utility-grid/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/avalanchesass-utility-grid/.gitignore +++ b/packages/avalanchesass-utility-grid/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-grid/README.md index c58856a..64f4f57 100644 --- a/packages/avalanchesass-utility-grid/README.md +++ b/packages/avalanchesass-utility-grid/README.md @@ -1,7 +1,21 @@ -# avalanche: Utility width -Width classes -https://github.com/avalanchesass/avalanche_utility_width +# avalanchesass_utility_width +Width classes. +## Install +``` +npm install avalanchesass_utility_width --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_width'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_width/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/avalanchesass-utility-grid/bower.json b/packages/avalanchesass-utility-grid/bower.json deleted file mode 100644 index 9eebaf6..0000000 --- a/packages/avalanchesass-utility-grid/bower.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "avalanche: Utility width", - "version": "2.0.4", - "homepage": "https://github.com/avalanchesass/avalanche_utility_width", - "authors": [ - "Markus Oberlehner" - ], - "description": "Width classes", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_function_strip_unit": "^2.0.0", - "avalanche_system_variable": "^2.0.0", - "avalanche_object_grid": "^2.0.0" - } -} diff --git a/packages/avalanchesass-utility-grid/package.json b/packages/avalanchesass-utility-grid/package.json new file mode 100644 index 0000000..3275476 --- /dev/null +++ b/packages/avalanchesass-utility-grid/package.json @@ -0,0 +1,26 @@ +{ + "name": "avalanchesass_utility_width", + "description": "Width classes", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_width", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_width" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_width/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} + diff --git a/packages/avalanchesass-utility-grid/scss/_index.scss b/packages/avalanchesass-utility-grid/scss/_index.scss new file mode 100644 index 0000000..74f5628 --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/_index.scss @@ -0,0 +1,45 @@ +@import 'avalanchesass_utility_width/style_guide'; +@import 'avalanchesass_utility_width/variable'; +@import 'avalanchesass_utility_width/mixin'; + +/* extract utility.css */ +/* extract utility_width.css */ +/*--- +title: Example +name: utility_width_example +section: utility_width +order: 1 +--- + +```example:html +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
+``` +*/ +@for $-size from 1 through $u-width-item-count { + .#{$u-width-namespace}-#{$-size} { + @include u-width($-size, $u-width-item-count); + } +} + +@each $-breakpoint in $u-width-breakpoints { + @for $-size from 1 through $u-width-item-count { + .#{$u-width-namespace}-#{$-size}\@#{$-breakpoint} { + @include u-width($-size, $u-width-item-count); + } + } +} +/* end extract utility_width.css */ +/* end extract utility.css */ diff --git a/packages/avalanchesass-utility-grid/scss/_mixin.scss b/packages/avalanchesass-utility-grid/scss/_mixin.scss new file mode 100644 index 0000000..03c26ac --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/_mixin.scss @@ -0,0 +1,17 @@ +@import 'avalanchesass_utility_width/style_guide'; + +/*--- +title: Mixin +name: utility_width_mixin +section: utility_width +order: 2 +--- + +```css +u-width($-size[, $-item-count: 12]) +``` +*/ +@mixin u-width($-size, $-item-count: 12) { + $-base-size: (100% / $-item-count); + width: ($-base-size * $-size) !important; +} \ No newline at end of file diff --git a/packages/avalanchesass-utility-grid/scss/_style_guide.scss b/packages/avalanchesass-utility-grid/scss/_style_guide.scss new file mode 100644 index 0000000..952b0ce --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Width +name: utility_width +section: Utility +--- + +Width classes. +*/ diff --git a/packages/avalanchesass-utility-grid/scss/_variable.scss b/packages/avalanchesass-utility-grid/scss/_variable.scss new file mode 100644 index 0000000..3a4e566 --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/_variable.scss @@ -0,0 +1,19 @@ +@import 'avalanchesass_utility_width/style_guide'; + +$u-width-namespace: '#{map-get($namespace, utility)}width' !default; + +$u-width-item-count: 12 !default; +$u-width-breakpoints: (m) !default; +/*--- +title: Variable +name: utility_width_variable +section: utility_width +order: 3 +--- + +```css +$u-width-namespace: '#{$u-width-namespace}'; +$u-width-item-count: #{$u-width-item-count}; +$u-width-breakpoints: (#{$u-width-breakpoints}); +``` +*/ diff --git a/packages/avalanchesass-utility-grid/scss/_width.scss b/packages/avalanchesass-utility-grid/scss/_width.scss deleted file mode 100644 index 8dedbb8..0000000 --- a/packages/avalanchesass-utility-grid/scss/_width.scss +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Width - * - * Width classes mainly (but not exclusively) to be used in grids - * - * @level X.X. - */ -// Variables -$u-width-item-count: 12 !default; - -// Sizes -$u-width-size-s: false !default; -$u-width-size-m: false !default; -$u-width-size-l: false !default; -$u-width-size-xl: false !default; - - - -/** - * Base - * - * Mobile first styles for all screen sizes - * - * @level X.X.X. - * @markup - *
- *
Width item
- *
Width item
- *
- */ -$u-width-base-size: (100% / $u-width-item-count); - -@for $i from 1 through $u-width-item-count { - .u-width--#{$i} { - width: ($u-width-base-size * $i) !important; - } -} - - - -@if $u-width-size-s { - /** - * Small - * - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Width item
- *
Width item
- *
- */ - @media (min-width: $breakpoint-s) { - @for $i from 1 through $u-width-item-count { - .u-width--s--#{$i} { - width: ($u-width-base-size * $i) !important; - } - } - } -} - - - -@if $u-width-size-m { - /** - * Medium - * - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
- */ - @media (min-width: $breakpoint-m) { - @for $i from 1 through $u-width-item-count { - .u-width--m--#{$i} { - width: ($u-width-base-size * $i) !important; - } - } - } -} - - - -@if $u-width-size-l { - /** - * Large - * - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
- */ - @media (min-width: $breakpoint-l) { - @for $i from 1 through $u-width-item-count { - .u-width--l--#{$i} { - width: ($u-width-base-size * $i) !important; - } - } - } -} - - - -@if $u-width-size-xl { - /** - * X-Large - * - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Width item
- *
Width item
- *
Width item
- *
Width item
- *
- */ - @media (min-width: $breakpoint-xl) { - @for $i from 1 through $u-width-item-count { - .u-width--xl--#{$i} { - width: ($u-width-base-size * $i) !important; - } - } - } -} From 66a20aab5f64ab5591caca914280f223bdb929ca Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 19 Mar 2016 15:08:40 +0100 Subject: [PATCH 201/355] README formatting according to 3.0.0 final standards --- packages/object-island/README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/object-island/README.md b/packages/object-island/README.md index 724f0f0..a97604c 100644 --- a/packages/object-island/README.md +++ b/packages/object-island/README.md @@ -1,6 +1,19 @@ # avalanchesass_object_island -Box off content -https://github.com/avalanchesass/avalanche_object_island +Box off content. + +## Install +``` +npm install avalanchesass_object_island --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_object_island'; + +/* Import just the mixin file. */ +@import 'avalanchesass_object_island/mixin'; +``` ## About ### Author From d3a566793d7e103be2d21cdf0ee938b33065dc46 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 20 Mar 2016 10:20:40 +0100 Subject: [PATCH 202/355] add media query, fixes #1 --- packages/avalanchesass-utility-grid/scss/_index.scss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-utility-grid/scss/_index.scss b/packages/avalanchesass-utility-grid/scss/_index.scss index 74f5628..d92390f 100644 --- a/packages/avalanchesass-utility-grid/scss/_index.scss +++ b/packages/avalanchesass-utility-grid/scss/_index.scss @@ -35,9 +35,11 @@ order: 1 } @each $-breakpoint in $u-width-breakpoints { - @for $-size from 1 through $u-width-item-count { - .#{$u-width-namespace}-#{$-size}\@#{$-breakpoint} { - @include u-width($-size, $u-width-item-count); + @media (min-width: map-get($breakpoints, $-breakpoint)) { + @for $-size from 1 through $u-width-item-count { + .#{$u-width-namespace}-#{$-size}\@#{$-breakpoint} { + @include u-width($-size, $u-width-item-count); + } } } } From 265823700e05aaf4a7914afcb8fd31c3f1e31be5 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 20 Mar 2016 10:21:07 +0100 Subject: [PATCH 203/355] bump version number --- packages/avalanchesass-utility-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-utility-grid/package.json b/packages/avalanchesass-utility-grid/package.json index 3275476..ec80b0c 100644 --- a/packages/avalanchesass-utility-grid/package.json +++ b/packages/avalanchesass-utility-grid/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.0", + "version": "3.0.1", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_utility_width", "license": "GPL v2", From 4833df06bff6a9bbca21d63cc9994daa2c7dd8bc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 5 Apr 2016 19:22:33 +0200 Subject: [PATCH 204/355] add medium spacing to the default grid class and remove special default (m) logic from the modifier class generation, implement new variables to control the default spacing on grid items (fixes #14) --- .../scss/_index.scss | 34 ++++++++----------- .../scss/_variable.scss | 6 ++-- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index d43a1fe..4ad1d11 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -38,6 +38,12 @@ Default responsive grid with vertical and horizontal spacing between items. */ .#{$o-grid-namespace} { @include o-grid($o-grid-flex, $o-grid-flex-fallback); + @if $o-grid-spaced-vertical-default-size { + @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-vertical-default-size), '.#{$o-grid-namespace}__item'); + } + @if $o-grid-spaced-horizontal-default-size { + @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-horizontal-default-size), '.#{$o-grid-namespace}__item'); + } } .#{$o-grid-namespace}__item { @@ -67,18 +73,12 @@ Default responsive grid with vertical and horizontal spacing between items. $-block-class: '#{$o-grid-namespace} '; $-class-name: '#{$o-grid-namespace}--vertical'; $-size-ext: '-#{$-size}'; - $-default-text: ''; - @if $-size == m { - $-block-class: ''; - $-class-name: '#{$o-grid-namespace}'; - $-size-ext: ''; - @if length($o-grid-spaced-vertical-sizes) > 1 { - $-default-text: ' (default)'; - } - } $-selector: '.#{$-class-name}'; + @if $-size == $o-grid-spaced-vertical-default-size { + @warn 'Defining the same size in $o-grid-spaced-vertical-sizes as set for $o-grid-spaced-vertical-default-size is redundant, remove "#{$-size}" from $o-grid-spaced-vertical-sizes'; + } /*--- - title: Size: #{$-size}#{$-default-text} + title: Size: #{$-size} name: object_grid_example_spacing_vertical_size_#{$-size} section: object_grid_example_spacing_vertical --- @@ -145,18 +145,12 @@ Default responsive grid with vertical and horizontal spacing between items. $-block-class: '#{$o-grid-namespace} '; $-class-name: '#{$o-grid-namespace}--horizontal'; $-size-ext: '-#{$-size}'; - $-default-text: ''; - @if $-size == m { - $-block-class: ''; - $-class-name: '#{$o-grid-namespace}'; - $-size-ext: ''; - @if length($o-grid-spaced-horizontal-sizes) > 1 { - $-default-text: ' (default)'; - } - } $-selector: '.#{$-class-name}'; + @if $-size == $o-grid-spaced-horizontal-default-size { + @warn 'Defining the same size in $o-grid-spaced-horizontal-sizes as set for $o-grid-spaced-horizontal-default-size is redundant, remove "#{$-size}" from $o-grid-spaced-horizontal-sizes'; + } /*--- - title: Size: #{$-size}#{$-default-text} + title: Size: #{$-size} name: object_grid_example_spacing_horizontal_size_#{$-size} section: object_grid_example_spacing_horizontal --- diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 2aaf12c..e627340 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -7,7 +7,8 @@ $o-grid-flex: true !default; $o-grid-flex-fallback: false !default; // Vertical spacing sizes. -$o-grid-spaced-vertical-sizes: (m) !default; +$o-grid-spaced-vertical-default-size: m !default; +$o-grid-spaced-vertical-sizes: () !default; // Vertical spacing sizes at defined breakpoints. // The key of the associative map defines the spacing size, the value is a map // with breakpoint sizes for which vertical spacing classes should be generated. @@ -18,7 +19,8 @@ $o-grid-spaced-vertical-sizes-with-breakpoints: ( $o-grid-collapsed-vertical: false !default; // Horizontal spacing sizes. -$o-grid-spaced-horizontal-sizes: (m) !default; +$o-grid-spaced-horizontal-default-size: m !default; +$o-grid-spaced-horizontal-sizes: () !default; // Horizontal spacing sizes at defined breakpoints. // The key of the associative map defines the spacing size, the value is a map // with breakpoint sizes for which horizontal spacing classes should be From f0b07e591955c8ac7e17d5e138d9af09a627ec59 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 5 Apr 2016 19:24:16 +0200 Subject: [PATCH 205/355] bumped version number to 3.1.0 --- packages/avalanchesass-object-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 684584b..66f34cb 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.0", + "version": "3.1.0", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", From a9f0ea85f5b3e56fd4cfcfdacf67480c9e605e89 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 10 Apr 2016 11:42:10 +0200 Subject: [PATCH 206/355] reformat the readme to match 3.0.0 standards --- packages/object-media/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/object-media/README.md b/packages/object-media/README.md index bc113ad..a3b2bfb 100644 --- a/packages/object-media/README.md +++ b/packages/object-media/README.md @@ -1,6 +1,16 @@ # avalanchesass_object_media -Media object - image on left/right, text next to it -https://github.com/avalanchesass/avalanche_object_media +Media object - image on left/right, text next to it. + +## Install +``` +npm install avalanchesass_object_media --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_object_media'; +``` ## About ### Author From ed208953350120ecfb85a53a907b461ce4ff69fb Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 10 Apr 2016 11:44:11 +0200 Subject: [PATCH 207/355] cleanup, change the sizes behaviour so that there is a default size and a variable to control it, in the sizes loop warn that the size is already defined as the default size - similar to the grid object package --- packages/object-media/scss/_index.scss | 22 ++++++---------------- packages/object-media/scss/_variable.scss | 5 ++++- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/packages/object-media/scss/_index.scss b/packages/object-media/scss/_index.scss index a5d1b55..f4cb546 100644 --- a/packages/object-media/scss/_index.scss +++ b/packages/object-media/scss/_index.scss @@ -35,6 +35,9 @@ order: 1 */ .#{$o-media-namespace} { display: flex; + > :last-child { + margin-left: map-get($spacing, $o-media-default-size); + } } .#{$o-media-namespace}__body { @@ -51,17 +54,11 @@ order: 1 @each $-size in $o-media-sizes { $-block-class: '#{$o-media-namespace} '; $-size-ext: '--#{$-size}'; - $-default-text: ''; - @if $-size == s { - $-block-class: ''; - $-size-ext: ''; - $-size-ext-plain: ''; - @if length($o-media-sizes) > 1 { - $-default-text: ' (default)'; - } + @if $-size == $o-media-default-size { + @warn 'Defining the same size in $o-media-sizes as set for $o-media-default-size is redundant, remove "#{$-size}" from $o-media-sizes'; } /*--- - title: Size: #{$-size}#{$-default-text} + title: Size: #{$-size} name: object_media_example_size_#{$-size} section: object_media_example --- @@ -147,12 +144,5 @@ order: 1 } } } - -.u-align-self-center { - align-self: auto; -} -.u-align-self-bottom { - align-self: flex-end; -} /* end extract object_media.css */ /* end extract object.css */ diff --git a/packages/object-media/scss/_variable.scss b/packages/object-media/scss/_variable.scss index ce34b39..bbf08b0 100644 --- a/packages/object-media/scss/_variable.scss +++ b/packages/object-media/scss/_variable.scss @@ -2,7 +2,8 @@ $o-media-namespace: '#{map-get($namespace, object)}media' !default; -$o-media-sizes: (s) !default; +$o-media-default-size: s !default; +$o-media-sizes: () !default; $o-media-stacked-breakpoints: () !default; $o-media-collapsed: false !default; /*--- @@ -14,7 +15,9 @@ order: 2 ```css $o-media-namespace: '#{$o-media-namespace}'; +$o-media-default-size: #{$o-media-default-size}; $o-media-sizes: (#{$o-media-sizes}); $o-media-stacked-breakpoints: (#{$o-media-stacked-breakpoints}); +$o-media-collapsed: #{$o-media-collapsed}; ``` */ From e4f07c41c9ed2b9bb9ab2a0a0ffbb359e95c3b42 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Apr 2016 19:34:55 +0200 Subject: [PATCH 208/355] add the new "$o-grid-spaced-vertical-default-size" variable to the style guide docu output, fixes #15 --- packages/avalanchesass-object-grid/scss/_variable.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index e627340..31f85cd 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -41,6 +41,7 @@ order: 3 $o-grid-namespace: '#{$o-grid-namespace}'; $o-grid-flex: #{$o-grid-flex}; $o-grid-flex-fallback: #{$o-grid-flex-fallback}; +$o-grid-spaced-vertical-default-size: #{$o-grid-spaced-vertical-default-size}; $o-grid-spaced-vertical-sizes: (#{$o-grid-spaced-vertical-sizes}); $o-grid-spaced-vertical-sizes-with-breakpoints: (nested-map); $o-grid-collapsed-vertical: #{$o-grid-collapsed-vertical}; From b748a75fed8c5d9a299b1f2c7c9dbbea58af098b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 15 Apr 2016 19:35:42 +0200 Subject: [PATCH 209/355] bump the version number --- packages/avalanchesass-object-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 66f34cb..50efd4c 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.1.0", + "version": "3.1.1", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_object_grid", "license": "GPL v2", From a8b94cd609e807e22f27e5df2b0123b0298a8bf7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 19 Apr 2016 20:31:02 +0200 Subject: [PATCH 210/355] update to latest 3.0.0 coding standards / package structure --- packages/utility-order/.gitignore | 3 +- packages/utility-order/README.md | 20 ++++++++++-- packages/utility-order/bower.json | 21 ------------- packages/utility-order/package.json | 25 +++++++++++++++ .../scss/{_order.scss => _index.scss} | 31 ++++++++----------- packages/utility-order/scss/_mixin.scss | 31 +++++++++++++++++++ packages/utility-order/scss/_style_guide.scss | 8 +++++ packages/utility-order/scss/_variable.scss | 19 ++++++++++++ 8 files changed, 115 insertions(+), 43 deletions(-) delete mode 100644 packages/utility-order/bower.json create mode 100644 packages/utility-order/package.json rename packages/utility-order/scss/{_order.scss => _index.scss} (70%) create mode 100644 packages/utility-order/scss/_mixin.scss create mode 100644 packages/utility-order/scss/_style_guide.scss create mode 100644 packages/utility-order/scss/_variable.scss diff --git a/packages/utility-order/.gitignore b/packages/utility-order/.gitignore index c219de4..42ffb40 100644 --- a/packages/utility-order/.gitignore +++ b/packages/utility-order/.gitignore @@ -1,2 +1,3 @@ .DS_Store -.sass-cache + +node_modules diff --git a/packages/utility-order/README.md b/packages/utility-order/README.md index 4384b1d..f88aef9 100644 --- a/packages/utility-order/README.md +++ b/packages/utility-order/README.md @@ -1,7 +1,21 @@ -# avalanche_utility_order -Reorder elements -https://github.com/avalanchesass/avalanche_utility_order +# avalanchesass_utility_order +Reorder flex items. +## Install +``` +npm install avalanchesass_utility_order --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_order'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_order/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/utility-order/bower.json b/packages/utility-order/bower.json deleted file mode 100644 index 51390d0..0000000 --- a/packages/utility-order/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche_utility_order", - "description": "Reorder elements", - "version": "3.0.0", - "authors": [ - "Markus Oberlehner" - ], - "homepage": "https://github.com/avalanchesass/avalanche_utility_order", - "license": "GPL v2", - "dependencies": { - "avalanche_mixin_utility_order": "avalanchesass/avalanche_mixin_utility_order#dev-3.0.0" - }, - "main": "scss/_order.scss", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/utility-order/package.json b/packages/utility-order/package.json new file mode 100644 index 0000000..88c00d4 --- /dev/null +++ b/packages/utility-order/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_utility_order", + "description": "Reorder flex items", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_order", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_order" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_order/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/utility-order/scss/_order.scss b/packages/utility-order/scss/_index.scss similarity index 70% rename from packages/utility-order/scss/_order.scss rename to packages/utility-order/scss/_index.scss index a77017e..a8da959 100644 --- a/packages/utility-order/scss/_order.scss +++ b/packages/utility-order/scss/_index.scss @@ -1,12 +1,16 @@ +@import 'avalanchesass_utility_order/style_guide'; +@import 'avalanchesass_utility_order/variable'; +@import 'avalanchesass_utility_order/mixin'; + +/* extract utility.css */ /* extract utility_order.css */ /*--- -title: Order -name: utility_order -section: Utility +title: Example +name: utility_order_example +section: utility_order +order: 1 --- -Reorder elements. - ```example:html
Item 1
@@ -19,35 +23,26 @@ Reorder elements.
``` */ -/** - * Variables - */ -$u-order-max-elements: 4 !default; - -// Breakpoints. -$u-order-breakpoints: (m) !default; - - - @each $-breakpoint in $u-order-breakpoints { @for $-i from 1 through $u-order-max-elements { @media (min-width: map-get($breakpoints, $-breakpoint)) { - .u-order-#{$-i}\@#{$-breakpoint} { + .#{$u-order-namespace}-#{$-i}\@#{$-breakpoint} { @include u-order($-i); } } } @media (min-width: map-get($breakpoints, $-breakpoint)) { - .u-order-first\@#{$-breakpoint} { + .#{$u-order-namespace}-first\@#{$-breakpoint} { @include u-order-first(); } } @media (min-width: map-get($breakpoints, $-breakpoint)) { - .u-order-last\@#{$-breakpoint} { + .#{$u-order-namespace}-last\@#{$-breakpoint} { @include u-order-last(); } } } /* end extract utility_order.css */ +/* end extract utility.css */ diff --git a/packages/utility-order/scss/_mixin.scss b/packages/utility-order/scss/_mixin.scss new file mode 100644 index 0000000..3e8b5d4 --- /dev/null +++ b/packages/utility-order/scss/_mixin.scss @@ -0,0 +1,31 @@ +@import 'avalanchesass_utility_order/style_guide'; + +/*--- +title: Mixin +name: utility_order_mixin +section: utility_order +order: 2 +--- + +```css +// Display as Nth element. +u-order([$-n: 1[, $-max-elements: 4]]) + +// Display as first element. +u-order-first() + +// Display as last element. +u-order-last() +``` +*/ +@mixin u-order($-n: 1, $-max-elements: 4) { + order: $-n - $-max-elements !important; +} + +@mixin u-order-first() { + order: -9999 !important; +} + +@mixin u-order-last() { + order: 9999 !important; +} diff --git a/packages/utility-order/scss/_style_guide.scss b/packages/utility-order/scss/_style_guide.scss new file mode 100644 index 0000000..0f145c2 --- /dev/null +++ b/packages/utility-order/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Order +name: utility_order +section: Utility +--- + +Reorder flex items. +*/ diff --git a/packages/utility-order/scss/_variable.scss b/packages/utility-order/scss/_variable.scss new file mode 100644 index 0000000..cc68344 --- /dev/null +++ b/packages/utility-order/scss/_variable.scss @@ -0,0 +1,19 @@ +@import 'avalanchesass_utility_order/style_guide'; + +$u-order-namespace: '#{map-get($namespace, utility)}order' !default; + +$u-order-max-elements: 4 !default; +$u-order-breakpoints: (m) !default; +/*--- +title: Variable +name: utility_order_variable +section: utility_order +order: 3 +--- + +```css +$u-order-namespace: '#{$u-order-namespace}'; +$u-order-max-elements: #{$u-order-max-elements}; +$u-order-breakpoints: #{$u-order-breakpoints}; +``` +*/ From 5193cdb203358ecb30915469b5b0c5491a152b23 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 23 Apr 2016 20:34:57 +0200 Subject: [PATCH 211/355] use global spacing variable for the default spacing, fixes #2 --- packages/object-island/scss/_mixin.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss index b5dbf5a..d18ca4e 100644 --- a/packages/object-island/scss/_mixin.scss +++ b/packages/object-island/scss/_mixin.scss @@ -8,9 +8,9 @@ order: 2 --- ```css -o-island([$-spacing: 1.5em]) +o-island([$-spacing: map-get($spacing, m)]) ``` */ -@mixin o-island($-spacing: 1.5em) { +@mixin o-island($-spacing: map-get($spacing, m)) { padding: $-spacing; } From b25c03b6a7773613b3d14795df6896c707a272a8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 23 Apr 2016 20:37:13 +0200 Subject: [PATCH 212/355] bump version to 3.0.1 --- packages/object-island/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-island/package.json b/packages/object-island/package.json index 5eef6b6..db98782 100644 --- a/packages/object-island/package.json +++ b/packages/object-island/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.0", + "version": "3.0.1", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_object_island", "license": "GPL v2", From e4fa8dc8425ca6526c89f70dc943f0a761c44db0 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 30 Apr 2016 19:58:38 +0200 Subject: [PATCH 213/355] update to final 3.x.x coding standards --- packages/utility-font-family/.gitignore | 3 +- packages/utility-font-family/README.md | 20 ++++++++++-- packages/utility-font-family/bower.json | 21 ------------ packages/utility-font-family/package.json | 26 +++++++++++++++ .../scss/_font_family.scss | 16 ---------- packages/utility-font-family/scss/_index.scss | 32 +++++++++++++++++++ packages/utility-font-family/scss/_mixin.scss | 17 ++++++++++ .../scss/_style_guide.scss | 8 +++++ .../utility-font-family/scss/_variable.scss | 18 +++++++++++ 9 files changed, 120 insertions(+), 41 deletions(-) delete mode 100644 packages/utility-font-family/bower.json create mode 100644 packages/utility-font-family/package.json delete mode 100644 packages/utility-font-family/scss/_font_family.scss create mode 100644 packages/utility-font-family/scss/_index.scss create mode 100644 packages/utility-font-family/scss/_mixin.scss create mode 100644 packages/utility-font-family/scss/_style_guide.scss create mode 100644 packages/utility-font-family/scss/_variable.scss diff --git a/packages/utility-font-family/.gitignore b/packages/utility-font-family/.gitignore index c219de4..42ffb40 100644 --- a/packages/utility-font-family/.gitignore +++ b/packages/utility-font-family/.gitignore @@ -1,2 +1,3 @@ .DS_Store -.sass-cache + +node_modules diff --git a/packages/utility-font-family/README.md b/packages/utility-font-family/README.md index 7363f30..87f0b51 100644 --- a/packages/utility-font-family/README.md +++ b/packages/utility-font-family/README.md @@ -1,7 +1,21 @@ -# avalanche_utility_font_family -Font family utility classes -https://github.com/avalanchesass/avalanche_utility_font_family +# avalanchesass_utility_font_family +Font family utility classes. +## Install +``` +npm install avalanchesass_utility_font_family --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_font_family'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_font_family/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/utility-font-family/bower.json b/packages/utility-font-family/bower.json deleted file mode 100644 index c048bb2..0000000 --- a/packages/utility-font-family/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche_utility_font_family", - "description": "Font family utility classes", - "version": "3.0.0", - "authors": [ - "Markus Oberlehner" - ], - "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", - "license": "GPL v2", - "dependencies": { - "avalanche_mixin_utility_font_family": "avalanchesass/avalanche_mixin_utility_font_family#dev-3.0.0" - }, - "main": "scss/_font_family.scss", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/utility-font-family/package.json b/packages/utility-font-family/package.json new file mode 100644 index 0000000..d0319d7 --- /dev/null +++ b/packages/utility-font-family/package.json @@ -0,0 +1,26 @@ +{ + "name": "avalanchesass_utility_font_family", + "description": "Font family utility classes", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_font_family" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_font_family/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} + diff --git a/packages/utility-font-family/scss/_font_family.scss b/packages/utility-font-family/scss/_font_family.scss deleted file mode 100644 index 462b55a..0000000 --- a/packages/utility-font-family/scss/_font_family.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* extract utility_font_family.css */ -/*--- -title: Font family -name: utility_font_family -section: Utility ---- - -Font family utility classes. -*/ -@each $-font-data in $fonts { - $-font: nth($-font-data, 1); - .u-font-family-#{$-font} { - @include u-font-family($-font); - } -} -/* end extract utility_font_family.css */ diff --git a/packages/utility-font-family/scss/_index.scss b/packages/utility-font-family/scss/_index.scss new file mode 100644 index 0000000..0070e9c --- /dev/null +++ b/packages/utility-font-family/scss/_index.scss @@ -0,0 +1,32 @@ +@import 'avalanchesass_utility_font_family/style_guide'; +@import 'avalanchesass_utility_font_family/variable'; +@import 'avalanchesass_utility_font_family/mixin'; + +/* extract utility.css */ +/* extract utility_font_family.css */ +/*--- +title: Example +name: utility_font_family_example +section: utility_font_family +order: 1 +--- +*/ +@each $-font-family in $u-font-family-font-families { + /*--- + title: Font family: #{$-font-family} + name: utility_font_family_example_family_#{$-font-family} + section: utility_font_family_example + --- +```example:html +
+ Font family: #{$-font-family} +
+``` + */ + .#{$u-font-family-namespace}-#{$-font-family} { + @include u-font-family($-font-family); + } +} +/* end extract utility_font_family.css */ +/* end extract utility.css */ + diff --git a/packages/utility-font-family/scss/_mixin.scss b/packages/utility-font-family/scss/_mixin.scss new file mode 100644 index 0000000..1c023d7 --- /dev/null +++ b/packages/utility-font-family/scss/_mixin.scss @@ -0,0 +1,17 @@ +@import 'avalanchesass_utility_font_family/style_guide'; + +/*--- +title: Mixin +name: utility_font_family_mixin +section: utility_font_family +order: 2 +--- + +```css +// Set font family. +u-font-family($-font-family) +``` +*/ +@mixin u-font-family($-font-family) { + font-family: unquote(map-get-deep($fonts, $-font-family, family)) !important; +} diff --git a/packages/utility-font-family/scss/_style_guide.scss b/packages/utility-font-family/scss/_style_guide.scss new file mode 100644 index 0000000..403a43f --- /dev/null +++ b/packages/utility-font-family/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Font family +name: utility_font_family +section: Utility +--- + +Font family utility classes. +*/ diff --git a/packages/utility-font-family/scss/_variable.scss b/packages/utility-font-family/scss/_variable.scss new file mode 100644 index 0000000..bd4efd7 --- /dev/null +++ b/packages/utility-font-family/scss/_variable.scss @@ -0,0 +1,18 @@ +@import 'avalanchesass_utility_font_family/style_guide'; + +$u-font-family-namespace: '#{map-get($namespace, utility)}font-family' !default; + +$u-font-family-font-families: (b) !default; +/*--- +title: Variable +name: utility_font_family_variable +section: utility_font_family +order: 3 +--- + +```css +$u-font-family-namespace: '#{$u-font-family-namespace}'; + +$u-font-family-font-families: #{$u-font-family-font-families}; +``` +*/ From 9e30567b46b9e7f5ab7f1c64d28b79428e104bbe Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 1 May 2016 13:22:42 +0200 Subject: [PATCH 214/355] remove deprecated "vendor" directory from .gitignore because it is not needed anymore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2ddb4fb..4e86fe6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,3 @@ node_modules # DEPRECATED /package_dev -/vendor From dab266ae93ed99e2f98fd08b1647343e79c6a01e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 1 May 2016 13:33:23 +0200 Subject: [PATCH 215/355] add newline --- packages/avalanchesass-utility-grid/scss/_mixin.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-utility-grid/scss/_mixin.scss b/packages/avalanchesass-utility-grid/scss/_mixin.scss index 03c26ac..3f9503e 100644 --- a/packages/avalanchesass-utility-grid/scss/_mixin.scss +++ b/packages/avalanchesass-utility-grid/scss/_mixin.scss @@ -14,4 +14,4 @@ u-width($-size[, $-item-count: 12]) @mixin u-width($-size, $-item-count: 12) { $-base-size: (100% / $-item-count); width: ($-base-size * $-size) !important; -} \ No newline at end of file +} From 3f40f67d5b0a30413602af4148d1b9b0f9b890a4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 1 May 2016 13:41:04 +0200 Subject: [PATCH 216/355] change the mdcss comment section name to match the convention of other packages --- packages/utility-font-family/scss/_index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-font-family/scss/_index.scss b/packages/utility-font-family/scss/_index.scss index 0070e9c..3924a02 100644 --- a/packages/utility-font-family/scss/_index.scss +++ b/packages/utility-font-family/scss/_index.scss @@ -14,7 +14,7 @@ order: 1 @each $-font-family in $u-font-family-font-families { /*--- title: Font family: #{$-font-family} - name: utility_font_family_example_family_#{$-font-family} + name: utility_font_family_example_#{$-font-family} section: utility_font_family_example --- ```example:html From 7904cab0ce499fae34dcae987a1048cc97b48253 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 1 May 2016 13:51:22 +0200 Subject: [PATCH 217/355] update to match 3.x.x coding standards --- packages/utility-spacing/.gitignore | 4 +- packages/utility-spacing/README.md | 20 +- packages/utility-spacing/bower.json | 24 -- packages/utility-spacing/package.json | 25 ++ packages/utility-spacing/scss/_index.scss | 68 +++++ packages/utility-spacing/scss/_mixin.scss | 26 ++ packages/utility-spacing/scss/_spacing.scss | 276 ------------------ .../utility-spacing/scss/_style_guide.scss | 8 + packages/utility-spacing/scss/_variable.scss | 19 ++ 9 files changed, 165 insertions(+), 305 deletions(-) delete mode 100644 packages/utility-spacing/bower.json create mode 100644 packages/utility-spacing/package.json create mode 100644 packages/utility-spacing/scss/_index.scss create mode 100644 packages/utility-spacing/scss/_mixin.scss delete mode 100644 packages/utility-spacing/scss/_spacing.scss create mode 100644 packages/utility-spacing/scss/_style_guide.scss create mode 100644 packages/utility-spacing/scss/_variable.scss diff --git a/packages/utility-spacing/.gitignore b/packages/utility-spacing/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/utility-spacing/.gitignore +++ b/packages/utility-spacing/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/utility-spacing/README.md b/packages/utility-spacing/README.md index e34b013..d454f33 100644 --- a/packages/utility-spacing/README.md +++ b/packages/utility-spacing/README.md @@ -1,7 +1,21 @@ -# avalanche: Utility spacing -Spacing utility classes -https://github.com/avalanchesass/avalanche_utility_spacing +# avalanchesass_utility_spacing +Spacing utility classes. +## Install +``` +npm install avalanchesass_utility_spacing --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_spacing'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_spacing/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/utility-spacing/bower.json b/packages/utility-spacing/bower.json deleted file mode 100644 index 9dd27b6..0000000 --- a/packages/utility-spacing/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "avalanche: Utility spacing", - "version": "2.0.5", - "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", - "authors": [ - "Markus Oberlehner" - ], - "description": "Spacing utility classes", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_system_variable": "^2.0.0" - } -} diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json new file mode 100644 index 0000000..f1db6d3 --- /dev/null +++ b/packages/utility-spacing/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_utility_spacing", + "description": "Spacing utility classes", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_spacing" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_spacing/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/utility-spacing/scss/_index.scss b/packages/utility-spacing/scss/_index.scss new file mode 100644 index 0000000..c94f7ff --- /dev/null +++ b/packages/utility-spacing/scss/_index.scss @@ -0,0 +1,68 @@ +@import 'avalanchesass_utility_spacing/style_guide'; +@import 'avalanchesass_utility_spacing/variable'; +@import 'avalanchesass_utility_spacing/mixin'; + +/* extract utility.css */ +/* extract utility_spacing.css */ +/*--- +title: Example +name: utility_spacing_example +section: utility_spacing +order: 1 +--- +*/ +@if length($u-spacing-top-sizes) >= 1 { + /*--- + title: Spacing top + name: utility_spacing_example_top + section: utility_spacing_example + order: 1 + --- + */ + @each $-spacing in $u-spacing-top-sizes { + /*--- + title: Spacing top: #{$-spacing} + name: utility_spacing_example_top_#{$-spacing} + section: utility_spacing_example_top + --- + ```example:html +
+ Spacing top: #{$-spacing} +
+ ``` + */ + .#{$u-spacing-namespace}-top-#{$-spacing} { + @include u-spacing-top($-spacing); + } + } +} + +@if length($u-spacing-wrap-sizes) >= 1 { + /*--- + title: Spacing wrap + name: utility_spacing_example_wrap + section: utility_spacing_example + order: 1 + --- + */ + @each $-spacing in $u-spacing-wrap-sizes { + /*--- + title: Spacing wrap: #{$-spacing} + name: utility_spacing_example_wrap_#{$-spacing} + section: utility_spacing_example_wrap + --- + ```example:html +
+
Spacing item 1
+
Spacing item 2
+
Spacing item 3
+
+ ``` + */ + .#{$u-spacing-namespace}-wrap-#{$-spacing} { + @include u-spacing-wrap($-spacing); + } + } +} +/* end extract utility_spacing.css */ +/* end extract utility.css */ diff --git a/packages/utility-spacing/scss/_mixin.scss b/packages/utility-spacing/scss/_mixin.scss new file mode 100644 index 0000000..47d6bd3 --- /dev/null +++ b/packages/utility-spacing/scss/_mixin.scss @@ -0,0 +1,26 @@ +@import 'avalanchesass_utility_spacing/style_guide'; + +/*--- +title: Mixin +name: utility_spacing_mixin +section: utility_spacing +order: 2 +--- + +```css +// Spacing top. +u-spacing-top([$-spacing: m]) + +// Spacing wrap. +u-spacing-wrap([$-spacing: m]) +``` +*/ +@mixin u-spacing-top($-spacing: m) { + margin-top: map-get($spacing, $-spacing); +} + +@mixin u-spacing-wrap($-spacing: m) { + > :not(:first-child) { + margin-top: map-get($spacing, $-spacing); + } +} diff --git a/packages/utility-spacing/scss/_spacing.scss b/packages/utility-spacing/scss/_spacing.scss deleted file mode 100644 index cf30b4e..0000000 --- a/packages/utility-spacing/scss/_spacing.scss +++ /dev/null @@ -1,276 +0,0 @@ -/** - * Spacing - * - * Let elements "breath" with some spacing - * - * @level X.X. - */ -// Variables -$u-spacing-wrap-xs: false !default; -$u-spacing-wrap-s: false !default; -$u-spacing-wrap-m: true !default; -$u-spacing-wrap-l: false !default; -$u-spacing-wrap-xl: false !default; -$u-spacing-wrap-xxl: false !default; -$u-spacing-wrap-xxxl: false !default; - -$u-spacing-top-xs: false !default; -$u-spacing-top-s: false !default; -$u-spacing-top-m: false !default; -$u-spacing-top-l: false !default; -$u-spacing-top-xl: false !default; -$u-spacing-top-xxl: false !default; -$u-spacing-top-xxxl: false !default; - - - -/** - * Wrap - * - * Give a set of elements wrapped in a container a top margin - * the first element gets no margin top. - * - * @level X.X.X. - */ -@mixin u-spacing-wrap($spacing: $spacing-m) { - > * + * { - margin-top: $spacing; - } -} - -@if $u-spacing-wrap-xs { - /** - * XS - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-xs { - @include u-spacing-wrap($spacing-xs); - } -} - -@if $u-spacing-wrap-s { - /** - * S - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-s { - @include u-spacing-wrap($spacing-s); - } -} - -@if $u-spacing-wrap-m { - /** - * M - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap { - @include u-spacing-wrap(); - } -} - -@if $u-spacing-wrap-l { - /** - * L - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-l { - @include u-spacing-wrap($spacing-l); - } -} - -@if $u-spacing-wrap-xl { - /** - * XL - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-xl { - @include u-spacing-wrap($spacing-xl); - } -} - -@if $u-spacing-wrap-xxl { - /** - * XXL - * - * @level X.X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-xxl { - @include u-spacing-wrap($spacing-xxl); - } -} - -@if $u-spacing-wrap-xxxl { - /** - * XXXL - * - * @level X.X.X. - * @markup - *
- *
No spacing top because I'm the first element
- *
I have spacing top
- *
Me too
- *
- */ - .u-spacing-wrap-xxxl { - @include u-spacing-wrap($spacing-xxxl); - } -} - - - -/** - * Top - * - * Add top margin to an element. - * - * @level X.X.X. - */ -@mixin u-spacing-top($spacing: $spacing-m) { - margin-top: $spacing; -} - -@if $u-spacing-top-xs { - /** - * XS - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-xs { - @include u-spacing-top($spacing-xs); - } -} - -@if $u-spacing-top-s { - /** - * S - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-s { - @include u-spacing-top($spacing-s); - } -} - -@if $u-spacing-top-m { - /** - * M - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-m { - @include u-spacing-top(); - } -} - -@if $u-spacing-top-l { - /** - * L - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-l { - @include u-spacing-top($spacing-l); - } -} - -@if $u-spacing-top-xl { - /** - * XL - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-xl { - @include u-spacing-top($spacing-xl); - } -} - -@if $u-spacing-top-xxl { - /** - * XXL - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-xxl { - @include u-spacing-top($spacing-xxl); - } -} - -@if $u-spacing-top-xxxl { - /** - * XXXL - * - * @level X.X.X.X. - * @markup - *
- * Lorem ipsum - *
- */ - .u-spacing-top-xxxl { - @include u-spacing-top($spacing-xxxl); - } -} diff --git a/packages/utility-spacing/scss/_style_guide.scss b/packages/utility-spacing/scss/_style_guide.scss new file mode 100644 index 0000000..892b20f --- /dev/null +++ b/packages/utility-spacing/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Spacing +name: utility_spacing +section: Utility +--- + +Spacing utility classes. +*/ diff --git a/packages/utility-spacing/scss/_variable.scss b/packages/utility-spacing/scss/_variable.scss new file mode 100644 index 0000000..eec8f2e --- /dev/null +++ b/packages/utility-spacing/scss/_variable.scss @@ -0,0 +1,19 @@ +@import 'avalanchesass_utility_spacing/style_guide'; + +$u-spacing-namespace: '#{map-get($namespace, utility)}spacing' !default; + +$u-spacing-top-sizes: (m) !default; +$u-spacing-wrap-sizes: () !default; +/*--- +title: Variable +name: utility_spacing_variable +section: utility_spacing +order: 3 +--- + +```css +$u-spacing-namespace: '#{$u-spacing-namespace}'; +$u-spacing-top-sizes: (#{$u-spacing-top-sizes}); +$u-spacing-wrap-sizes: (#{$u-spacing-wrap-sizes}); +``` +*/ From bb9602de901dd6e9dcbab251239b258d6c8f302b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 2 May 2016 18:47:51 +0200 Subject: [PATCH 218/355] implement breakpoint specific classes, fixes #4 --- packages/utility-spacing/scss/_index.scss | 104 ++++++++++++++----- packages/utility-spacing/scss/_variable.scss | 15 +++ 2 files changed, 93 insertions(+), 26 deletions(-) diff --git a/packages/utility-spacing/scss/_index.scss b/packages/utility-spacing/scss/_index.scss index c94f7ff..dc4af9f 100644 --- a/packages/utility-spacing/scss/_index.scss +++ b/packages/utility-spacing/scss/_index.scss @@ -11,56 +11,108 @@ section: utility_spacing order: 1 --- */ -@if length($u-spacing-top-sizes) >= 1 { +@if length($u-spacing-top-sizes) >= 1 or length($u-spacing-top-sizes-with-breakpoints) >= 1 { /*--- title: Spacing top name: utility_spacing_example_top section: utility_spacing_example - order: 1 --- */ - @each $-spacing in $u-spacing-top-sizes { +} +@if length($u-spacing-top-sizes) >= 1 { + @each $-size in $u-spacing-top-sizes { /*--- - title: Spacing top: #{$-spacing} - name: utility_spacing_example_top_#{$-spacing} + title: Spacing top: #{$-size} + name: utility_spacing_example_top_#{$-size} section: utility_spacing_example_top --- - ```example:html -
- Spacing top: #{$-spacing} -
- ``` +```example:html +
+ Spacing top: #{$-size} +
+``` */ - .#{$u-spacing-namespace}-top-#{$-spacing} { - @include u-spacing-top($-spacing); + .#{$u-spacing-namespace}-top-#{$-size} { + @include u-spacing-top($-size); } } } +@each $-size-and-breakpoints in $u-spacing-top-sizes-with-breakpoints { + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); -@if length($u-spacing-wrap-sizes) >= 1 { + @each $-breakpoint in $-breakpoints { + /*--- + title: Spacing top: #{$-size}@#{$-breakpoint} + name: utility_spacing_example_top_#{$-size}_at_#{$-breakpoint} + section: utility_spacing_example_top + --- + +```example:html +
+ Spacing top: #{$-size}@#{$-breakpoint} +
+``` + */ + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .#{$u-spacing-namespace}-top-#{$-size}\@#{$-breakpoint} { + @include u-spacing-top($-size); + } + } + } +} + +@if length($u-spacing-wrap-sizes) >= 1 or length($u-spacing-wrap-sizes-with-breakpoints) >= 1 { /*--- title: Spacing wrap name: utility_spacing_example_wrap section: utility_spacing_example - order: 1 --- */ - @each $-spacing in $u-spacing-wrap-sizes { +} +@if length($u-spacing-wrap-sizes) >= 1 { + @each $-size in $u-spacing-wrap-sizes { + /*--- + title: Spacing wrap: #{$-size} + name: utility_spacing_example_top_#{$-size} + section: utility_spacing_example_top + --- +```example:html +
+
Spacing item 1
+
Spacing item 2
+
Spacing item 3
+
+``` + */ + .#{$u-spacing-namespace}-wrap-#{$-size} { + @include u-spacing-wrap($-size); + } + } +} +@each $-size-and-breakpoints in $u-spacing-wrap-sizes-with-breakpoints { + $-size: nth($-size-and-breakpoints, 1); + $-breakpoints: nth($-size-and-breakpoints, 2); + + @each $-breakpoint in $-breakpoints { /*--- - title: Spacing wrap: #{$-spacing} - name: utility_spacing_example_wrap_#{$-spacing} + title: Spacing wrap: #{$-size}@#{$-breakpoint} + name: utility_spacing_example_wrap_#{$-size}_at_#{$-breakpoint} section: utility_spacing_example_wrap --- - ```example:html -
-
Spacing item 1
-
Spacing item 2
-
Spacing item 3
-
- ``` + +```example:html +
+
Spacing item 1
+
Spacing item 2
+
Spacing item 3
+
+``` */ - .#{$u-spacing-namespace}-wrap-#{$-spacing} { - @include u-spacing-wrap($-spacing); + @media (min-width: map-get($breakpoints, $-breakpoint)) { + .#{$u-spacing-namespace}-wrap-#{$-size}\@#{$-breakpoint} { + @include u-spacing-wrap($-size); + } } } } diff --git a/packages/utility-spacing/scss/_variable.scss b/packages/utility-spacing/scss/_variable.scss index eec8f2e..9161aa9 100644 --- a/packages/utility-spacing/scss/_variable.scss +++ b/packages/utility-spacing/scss/_variable.scss @@ -3,7 +3,20 @@ $u-spacing-namespace: '#{map-get($namespace, utility)}spacing' !default; $u-spacing-top-sizes: (m) !default; +// Spacing top sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which spacing top classes should be generated. +$u-spacing-top-sizes-with-breakpoints: ( + m: (), +) !default; $u-spacing-wrap-sizes: () !default; +// Wrap spacing sizes at defined breakpoints. +// The key of the associative map defines the spacing size, the value is a map +// with breakpoint sizes for which spacing wrap classes should be generated. +$u-spacing-wrap-sizes-with-breakpoints: ( + m: (s, m, l), + l: (s, m, l), +) !default; /*--- title: Variable name: utility_spacing_variable @@ -14,6 +27,8 @@ order: 3 ```css $u-spacing-namespace: '#{$u-spacing-namespace}'; $u-spacing-top-sizes: (#{$u-spacing-top-sizes}); +$u-spacing-top-sizes-with-breakpoints: (nested-map); $u-spacing-wrap-sizes: (#{$u-spacing-wrap-sizes}); +$u-spacing-wrap-sizes-with-breakpoints: (nested-map); ``` */ From ff8ec2711cc99f0fb94db4bce6efb669302495b1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 2 May 2016 18:48:25 +0200 Subject: [PATCH 219/355] bump version number to 3.0.1 --- packages/utility-spacing/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json index f1db6d3..dfb1d09 100644 --- a/packages/utility-spacing/package.json +++ b/packages/utility-spacing/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.0", + "version": "3.0.1", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "license": "GPL v2", From 05ff8c685f596813ed8a78b6381390afaa084289 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 2 May 2016 18:49:43 +0200 Subject: [PATCH 220/355] change the wrap sizes with breakpoints default variable value to a better default --- packages/utility-spacing/scss/_variable.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/utility-spacing/scss/_variable.scss b/packages/utility-spacing/scss/_variable.scss index 9161aa9..a567793 100644 --- a/packages/utility-spacing/scss/_variable.scss +++ b/packages/utility-spacing/scss/_variable.scss @@ -14,8 +14,7 @@ $u-spacing-wrap-sizes: () !default; // The key of the associative map defines the spacing size, the value is a map // with breakpoint sizes for which spacing wrap classes should be generated. $u-spacing-wrap-sizes-with-breakpoints: ( - m: (s, m, l), - l: (s, m, l), + m: (), ) !default; /*--- title: Variable From 7280ed3c44ec9c82b54e587ec477a36495500d3d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 2 May 2016 18:50:25 +0200 Subject: [PATCH 221/355] bump version number to 3.0.2 --- packages/utility-spacing/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json index dfb1d09..5286e29 100644 --- a/packages/utility-spacing/package.json +++ b/packages/utility-spacing/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.1", + "version": "3.0.2", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "license": "GPL v2", From 7e39a9fc50e7920d57d3cdd3d0272e73fd0dc2d3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 3 May 2016 17:21:09 +0200 Subject: [PATCH 222/355] change package type to object and update to 3.x.x coding style --- packages/object-aspect-ratio/.gitignore | 4 +- packages/object-aspect-ratio/README.md | 20 ++++++++-- packages/object-aspect-ratio/bower.json | 21 ---------- packages/object-aspect-ratio/package.json | 25 ++++++++++++ .../scss/_aspect_ratio.scss | 26 ------------- packages/object-aspect-ratio/scss/_index.scss | 38 +++++++++++++++++++ packages/object-aspect-ratio/scss/_mixin.scss | 29 ++++++++++++++ .../scss/_style_guide.scss | 8 ++++ .../object-aspect-ratio/scss/_variable.scss | 23 +++++++++++ 9 files changed, 142 insertions(+), 52 deletions(-) delete mode 100644 packages/object-aspect-ratio/bower.json create mode 100644 packages/object-aspect-ratio/package.json delete mode 100644 packages/object-aspect-ratio/scss/_aspect_ratio.scss create mode 100644 packages/object-aspect-ratio/scss/_index.scss create mode 100644 packages/object-aspect-ratio/scss/_mixin.scss create mode 100644 packages/object-aspect-ratio/scss/_style_guide.scss create mode 100644 packages/object-aspect-ratio/scss/_variable.scss diff --git a/packages/object-aspect-ratio/.gitignore b/packages/object-aspect-ratio/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/object-aspect-ratio/.gitignore +++ b/packages/object-aspect-ratio/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/object-aspect-ratio/README.md b/packages/object-aspect-ratio/README.md index ecd44c7..7b0d734 100644 --- a/packages/object-aspect-ratio/README.md +++ b/packages/object-aspect-ratio/README.md @@ -1,7 +1,21 @@ -# avalanche: Utility aspect ratio -Maintain aspect ratio -https://github.com/avalanchesass/avalanche_utility_aspect_ratio +# avalanchesass_object_aspect_ratio +Maintain aspect ratio. +## Install +``` +npm install avalanchesass_object_aspect_ratio --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_object_aspect_ratio'; + +/* Import just the mixin file. */ +@import 'avalanchesass_object_aspect_ratio/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/object-aspect-ratio/bower.json b/packages/object-aspect-ratio/bower.json deleted file mode 100644 index 59a8156..0000000 --- a/packages/object-aspect-ratio/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche: Utility aspect ratio", - "version": "2.0.0", - "homepage": "https://github.com/avalanchesass/avalanche_utility_aspect_ratio", - "authors": [ - "Markus Oberlehner" - ], - "description": "Maintain aspect ratio", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/object-aspect-ratio/package.json b/packages/object-aspect-ratio/package.json new file mode 100644 index 0000000..81165c4 --- /dev/null +++ b/packages/object-aspect-ratio/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_object_aspect_ratio", + "description": "Maintain aspect ratio", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_object_aspect_ratio", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_object_aspect_ratio" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_object_aspect_ratio/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/object-aspect-ratio/scss/_aspect_ratio.scss b/packages/object-aspect-ratio/scss/_aspect_ratio.scss deleted file mode 100644 index 0671255..0000000 --- a/packages/object-aspect-ratio/scss/_aspect_ratio.scss +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Aspect ratio - * - * Maintain aspect ratio. - * - * @level X.X. - * @code [scss] - * .foo-bar { - * @include u-aspect-ratio(16, 9, '.foo-bar__inner'); - * } - */ -@mixin u-aspect-ratio($width, $height, $inner-selector: '.u-aspect-ratio-inner') { - position: relative; - &:before { - display: block; - padding-top: ($height / $width) * 100%; - content: ''; - } - > #{$inner-selector} { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - } -} diff --git a/packages/object-aspect-ratio/scss/_index.scss b/packages/object-aspect-ratio/scss/_index.scss new file mode 100644 index 0000000..2dfc5fa --- /dev/null +++ b/packages/object-aspect-ratio/scss/_index.scss @@ -0,0 +1,38 @@ +@import 'avalanchesass_object_aspect_ratio/style_guide'; +@import 'avalanchesass_object_aspect_ratio/variable'; +@import 'avalanchesass_object_aspect_ratio/mixin'; + +@if length($o-aspect-ratio-sizes) >= 1 { + /* extract object.css */ + /* extract object_aspect_ratio.css */ + /*--- + title: Example + name: object_aspect_ratio_example + section: object_aspect_ratio + order: 1 + --- + */ + @each $-ratio in $o-aspect-ratio-sizes { + $-width: map-get($-ratio, width); + $-height: map-get($-ratio, height); + /*--- + title: Ratio: #{$-width}/#{$-height} + name: object_aspect_ratio_example_#{$-width}_#{$-height} + section: object_aspect_ratio_example + --- + + ```example:html +
+
+ Ratio: #{$-width}/#{$-height} +
+
+ ``` + */ + .#{$o-aspect-ratio-namespace}--#{$-width}-#{$-height} { + @include o-aspect-ratio($-width, $-height); + } + } + /* end extract object_aspect_ratio.css */ + /* end extract object.css */ +} diff --git a/packages/object-aspect-ratio/scss/_mixin.scss b/packages/object-aspect-ratio/scss/_mixin.scss new file mode 100644 index 0000000..9bf3a18 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_mixin.scss @@ -0,0 +1,29 @@ +@import 'avalanchesass_object_aspect_ratio/style_guide'; + +/*--- +title: Mixin +name: object_aspect_ratio_mixin +section: object_aspect_ratio +order: 2 +--- + +```css +// Aspect ratio. +o-aspect-ratio($-width, $-height[, $-inner-selector: '.#{$o-aspect-ratio-namespace}__inner']) +``` +*/ +@mixin o-aspect-ratio($-width, $-height, $-inner-selector: '.#{$o-aspect-ratio-namespace}__inner') { + position: relative; + &::before { + display: block; + padding-top: ($-height / $-width) * 100%; + content: ''; + } + > #{$-inner-selector} { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } +} diff --git a/packages/object-aspect-ratio/scss/_style_guide.scss b/packages/object-aspect-ratio/scss/_style_guide.scss new file mode 100644 index 0000000..5ad9583 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Aspect ratio +name: object_aspect_ratio +section: Object +--- + +Maintain aspect ratio. +*/ diff --git a/packages/object-aspect-ratio/scss/_variable.scss b/packages/object-aspect-ratio/scss/_variable.scss new file mode 100644 index 0000000..30be664 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_variable.scss @@ -0,0 +1,23 @@ +@import 'avalanchesass_object_aspect_ratio/style_guide'; + +$o-aspect-ratio-namespace: '#{map-get($namespace, object)}aspect-ratio' !default; + +$o-aspect-ratio-sizes: ( + ( + width: 16, + height: 9, + ), +) !default; +/*--- +title: Variable +name: object_aspect_ratio_variable +section: object_aspect_ratio +order: 3 +--- + +```css +$o-aspect-ratio-namespace: '#{$o-aspect-ratio-namespace}'; + +$o-aspect-ratio-sizes: (nested-map); +``` +*/ From 60744cca6f76c68a50414c9fbe0d963c941e901e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 3 May 2016 19:11:45 +0200 Subject: [PATCH 223/355] output the main style guide mdcss comment even if the variable is set to false --- .../scss/_style_guide.scss | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/generic-box-sizing-reset/scss/_style_guide.scss b/packages/generic-box-sizing-reset/scss/_style_guide.scss index 463e9f0..523c32d 100644 --- a/packages/generic-box-sizing-reset/scss/_style_guide.scss +++ b/packages/generic-box-sizing-reset/scss/_style_guide.scss @@ -1,12 +1,8 @@ -@import 'avalanchesass_base_box_sizing_reset/variable'; +/*--- +title: Box sizing reset +name: base_box_sizing_reset +section: Base +--- -@if $base-box-sizing-reset { - /*--- - title: Box sizing reset - name: base_box_sizing_reset - section: Base - --- - - Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) - */ -} +Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) +*/ From cee86c5fe3520ea8ce943bcde7625dc47f426d78 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 3 May 2016 19:13:00 +0200 Subject: [PATCH 224/355] bump the version number to 3.0.1 --- packages/generic-box-sizing-reset/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json index cb5e2fa..da875a3 100644 --- a/packages/generic-box-sizing-reset/package.json +++ b/packages/generic-box-sizing-reset/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.0", + "version": "3.0.1", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset", "license": "GPL v2", From d80815790b29336b05f26021e217860124827d6d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 3 May 2016 19:17:26 +0200 Subject: [PATCH 225/355] add !important, fixes #5 --- packages/utility-spacing/scss/_mixin.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/utility-spacing/scss/_mixin.scss b/packages/utility-spacing/scss/_mixin.scss index 47d6bd3..94386bba 100644 --- a/packages/utility-spacing/scss/_mixin.scss +++ b/packages/utility-spacing/scss/_mixin.scss @@ -16,11 +16,11 @@ u-spacing-wrap([$-spacing: m]) ``` */ @mixin u-spacing-top($-spacing: m) { - margin-top: map-get($spacing, $-spacing); + margin-top: map-get($spacing, $-spacing) !important; } @mixin u-spacing-wrap($-spacing: m) { > :not(:first-child) { - margin-top: map-get($spacing, $-spacing); + margin-top: map-get($spacing, $-spacing) !important; } } From 12477fc69b4db051de2236ed2b9df01abf610eeb Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 3 May 2016 19:18:53 +0200 Subject: [PATCH 226/355] bump the version number to 3.0.3 --- packages/utility-spacing/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json index 5286e29..d6aa815 100644 --- a/packages/utility-spacing/package.json +++ b/packages/utility-spacing/package.json @@ -6,7 +6,7 @@ "eyeglass-module", "sass" ], - "version": "3.0.2", + "version": "3.0.3", "author": "Markus Oberlehner", "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", "license": "GPL v2", From 0b1c6502e46e5e5aef5c9b662c5f14028bf7ff2d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 4 May 2016 19:06:09 +0200 Subject: [PATCH 227/355] update to 3.x.x coding style --- packages/utility-offset/.gitignore | 4 +- packages/utility-offset/README.md | 20 ++- packages/utility-offset/bower.json | 28 ---- packages/utility-offset/package.json | 25 ++++ packages/utility-offset/scss/_index.scss | 38 +++++ packages/utility-offset/scss/_mixin.scss | 17 +++ packages/utility-offset/scss/_offset.scss | 131 ------------------ .../utility-offset/scss/_style_guide.scss | 8 ++ packages/utility-offset/scss/_variable.scss | 19 +++ 9 files changed, 126 insertions(+), 164 deletions(-) delete mode 100644 packages/utility-offset/bower.json create mode 100644 packages/utility-offset/package.json create mode 100644 packages/utility-offset/scss/_index.scss create mode 100644 packages/utility-offset/scss/_mixin.scss delete mode 100644 packages/utility-offset/scss/_offset.scss create mode 100644 packages/utility-offset/scss/_style_guide.scss create mode 100644 packages/utility-offset/scss/_variable.scss diff --git a/packages/utility-offset/.gitignore b/packages/utility-offset/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/utility-offset/.gitignore +++ b/packages/utility-offset/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/utility-offset/README.md b/packages/utility-offset/README.md index eff6711..1568c68 100644 --- a/packages/utility-offset/README.md +++ b/packages/utility-offset/README.md @@ -1,7 +1,21 @@ -# avalanche: Utility offset -Offset classes -https://github.com/avalanchesass/avalanche_utility_offset +# avalanchesass_utility_offset +Offset classes. +## Install +``` +npm install avalanchesass_utility_offset --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_offset'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_offset/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/utility-offset/bower.json b/packages/utility-offset/bower.json deleted file mode 100644 index 7e8e2db..0000000 --- a/packages/utility-offset/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "avalanche: Utility offset", - "version": "2.0.3", - "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", - "authors": [ - "Markus Oberlehner" - ], - "description": "Offset classes", - "keywords": [ - "SASS", - "CSS", - "Grid" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "avalanche_function_strip_unit": "^2.0.0", - "avalanche_system_variable": "^2.0.0", - "avalanche_object_grid": "^2.0.0", - "avalanche_utility_width": "^2.0.0" - } -} diff --git a/packages/utility-offset/package.json b/packages/utility-offset/package.json new file mode 100644 index 0000000..be68cf8 --- /dev/null +++ b/packages/utility-offset/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_utility_offset", + "description": "Offset classes", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_offset" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_offset/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/utility-offset/scss/_index.scss b/packages/utility-offset/scss/_index.scss new file mode 100644 index 0000000..95d9af1 --- /dev/null +++ b/packages/utility-offset/scss/_index.scss @@ -0,0 +1,38 @@ +@import 'avalanchesass_utility_offset/style_guide'; +@import 'avalanchesass_utility_offset/variable'; +@import 'avalanchesass_utility_offset/mixin'; + +/* extract utility.css */ +/* extract utility_offset.css */ +/*--- +title: Example +name: utility_offset_example +section: utility_offset +order: 1 +--- + +```example:html +
+
Offset 6
+
Offset 8
+
Offset 4
+
+``` +*/ +@for $-size from 1 through $u-offset-item-count { + .#{$u-offset-namespace}-#{$-size} { + @include u-offset($-size, $u-offset-item-count); + } +} + +@each $-breakpoint in $u-offset-breakpoints { + @media (min-width: map-get($breakpoints, $-breakpoint)) { + @for $-size from 1 through $u-offset-item-count { + .#{$u-offset-namespace}-#{$-size}\@#{$-breakpoint} { + @include u-offset($-size, $u-offset-item-count); + } + } + } +} +/* end extract utility_offset.css */ +/* end extract utility.css */ diff --git a/packages/utility-offset/scss/_mixin.scss b/packages/utility-offset/scss/_mixin.scss new file mode 100644 index 0000000..ce6c3bf --- /dev/null +++ b/packages/utility-offset/scss/_mixin.scss @@ -0,0 +1,17 @@ +@import 'avalanchesass_utility_offset/style_guide'; + +/*--- +title: Mixin +name: utility_offset_mixin +section: utility_offset +order: 2 +--- + +```css +u-offset($-size[, $-item-count: 12]) +``` +*/ +@mixin u-offset($-size, $-item-count: 12) { + $-base-size: (100% / $-item-count); + margin-left: ($-base-size * $-size) !important; +} diff --git a/packages/utility-offset/scss/_offset.scss b/packages/utility-offset/scss/_offset.scss deleted file mode 100644 index 69a811a..0000000 --- a/packages/utility-offset/scss/_offset.scss +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Offset - * - * Offset classes mainly (but not exclusively) to be used in grids - * - * @level X.X. - */ -// Variables -$u-offset-item-count: 12 !default; - -// Sizes -$u-offset-size-s: false !default; -$u-offset-size-m: false !default; -$u-offset-size-l: false !default; -$u-offset-size-xl: false !default; - - - -/** - * Base - * - * Mobile first styles for all screen sizes - * - * @level X.X.X. - * @markup - *
- *
Grid item with offset
- *
- */ -$u-offset-base-size: (100% / $u-offset-item-count); - -@for $i from 1 through $u-offset-item-count { - .u-offset--#{$i} { - margin-left: ($u-offset-base-size * $i) !important; - } -} - - - -@if $u-offset-size-s { - /** - * Small - * - * Screen sizes #{$breakpoint-s} (#{strip-unit($breakpoint-s) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item with offset
- *
- */ - @media (min-width: $breakpoint-s) { - @for $i from 1 through $u-offset-item-count { - .u-offset--s--#{$i} { - margin-left: ($u-offset-base-size * $i) !important; - } - } - } -} - - - -@if $u-offset-size-m { - /** - * Medium - * - * Screen sizes #{$breakpoint-m} (#{strip-unit($breakpoint-m) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item with offset
- *
Grid item with offset
- *
- */ - @media (min-width: $breakpoint-m) { - @for $i from 1 through $u-offset-item-count { - .u-offset--m--#{$i} { - margin-left: ($u-offset-base-size * $i) !important; - } - } - } -} - - - -@if $u-offset-size-l { - /** - * Large - * - * Screen sizes #{$breakpoint-l} (#{strip-unit($breakpoint-l) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item with offset
- *
Grid item with offset
- *
- */ - @media (min-width: $breakpoint-l) { - @for $i from 1 through $u-offset-item-count { - .u-offset--l--#{$i} { - margin-left: ($u-offset-base-size * $i) !important; - } - } - } -} - - - -@if $u-offset-size-xl { - /** - * X-Large - * - * Screen sizes #{$breakpoint-xl} (#{strip-unit($breakpoint-xl) * $font-base-size}) and up - * - * @level X.X.X. - * @markup - *
- *
Grid item with offset
- *
Grid item with offset
- *
- */ - @media (min-width: $breakpoint-xl) { - @for $i from 1 through $u-offset-item-count { - .u-offset--xl--#{$i} { - margin-left: ($u-offset-base-size * $i) !important; - } - } - } -} diff --git a/packages/utility-offset/scss/_style_guide.scss b/packages/utility-offset/scss/_style_guide.scss new file mode 100644 index 0000000..4963c43 --- /dev/null +++ b/packages/utility-offset/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Offset +name: utility_offset +section: Utility +--- + +Offset classes. +*/ diff --git a/packages/utility-offset/scss/_variable.scss b/packages/utility-offset/scss/_variable.scss new file mode 100644 index 0000000..b60d9c6 --- /dev/null +++ b/packages/utility-offset/scss/_variable.scss @@ -0,0 +1,19 @@ +@import 'avalanchesass_utility_offset/style_guide'; + +$u-offset-namespace: '#{map-get($namespace, utility)}offset' !default; + +$u-offset-item-count: 12 !default; +$u-offset-breakpoints: (m) !default; +/*--- +title: Variable +name: utility_offset_variable +section: utility_offset +order: 3 +--- + +```css +$u-offset-namespace: '#{$u-offset-namespace}'; +$u-offset-item-count: #{$u-offset-item-count}; +$u-offset-breakpoints: (#{$u-offset-breakpoints}); +``` +*/ From b8861aff7f61560727d94ae62169edf31c785216 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 7 May 2016 20:49:07 +0200 Subject: [PATCH 228/355] update to 3.x.x coding standards --- packages/utility-text-align/.gitignore | 4 +- packages/utility-text-align/README.md | 20 +++++- packages/utility-text-align/bower.json | 21 ------- packages/utility-text-align/package.json | 25 ++++++++ packages/utility-text-align/scss/_index.scss | 62 +++++++++++++++++++ packages/utility-text-align/scss/_mixin.scss | 17 +++++ .../utility-text-align/scss/_style_guide.scss | 8 +++ .../utility-text-align/scss/_text_align.scss | 49 --------------- .../utility-text-align/scss/_variable.scss | 14 +++++ 9 files changed, 145 insertions(+), 75 deletions(-) delete mode 100644 packages/utility-text-align/bower.json create mode 100644 packages/utility-text-align/package.json create mode 100644 packages/utility-text-align/scss/_index.scss create mode 100644 packages/utility-text-align/scss/_mixin.scss create mode 100644 packages/utility-text-align/scss/_style_guide.scss delete mode 100644 packages/utility-text-align/scss/_text_align.scss create mode 100644 packages/utility-text-align/scss/_variable.scss diff --git a/packages/utility-text-align/.gitignore b/packages/utility-text-align/.gitignore index 22ddb57..42ffb40 100644 --- a/packages/utility-text-align/.gitignore +++ b/packages/utility-text-align/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache -bower_components + +node_modules diff --git a/packages/utility-text-align/README.md b/packages/utility-text-align/README.md index 77b8e74..26d9611 100644 --- a/packages/utility-text-align/README.md +++ b/packages/utility-text-align/README.md @@ -1,7 +1,21 @@ -# avalanche: Utility text align -Text align utility classes -https://github.com/avalanchesass/avalanche_utility_text_align +# avalanchesass_utility_text_align +Text align utility classes. +## Install +``` +npm install avalanchesass_utility_text_align --save +``` + +## Basic usage +```css +/* Import the main file. */ +@import 'avalanchesass_utility_text_align'; + +/* Import just the mixin file. */ +@import 'avalanchesass_utility_text_align/mixin'; +``` + +## About ### Author Markus Oberlehner Twitter: https://twitter.com/MaOberlehner diff --git a/packages/utility-text-align/bower.json b/packages/utility-text-align/bower.json deleted file mode 100644 index 34bacd3..0000000 --- a/packages/utility-text-align/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche: Utility text align", - "version": "2.0.1", - "homepage": "https://github.com/avalanchesass/avalanche_utility_text_align", - "authors": [ - "Markus Oberlehner" - ], - "description": "Text align utility classes", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/utility-text-align/package.json b/packages/utility-text-align/package.json new file mode 100644 index 0000000..5fc346b --- /dev/null +++ b/packages/utility-text-align/package.json @@ -0,0 +1,25 @@ +{ + "name": "avalanchesass_utility_text_align", + "description": "Text align utility classes", + "keywords": [ + "avalanchesass-package", + "eyeglass-module", + "sass" + ], + "version": "3.0.0", + "author": "Markus Oberlehner", + "homepage": "https://github.com/avalanchesass/avalanche_utility_text_align", + "license": "GPL v2", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche_utility_text_align" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche_utility_text_align/issues" + }, + "eyeglass": { + "sassDir": "scss", + "exports": false, + "needs": "^0.8.2" + } +} diff --git a/packages/utility-text-align/scss/_index.scss b/packages/utility-text-align/scss/_index.scss new file mode 100644 index 0000000..aac4c95 --- /dev/null +++ b/packages/utility-text-align/scss/_index.scss @@ -0,0 +1,62 @@ +@import 'avalanchesass_utility_text_align/style_guide'; +@import 'avalanchesass_utility_text_align/variable'; +@import 'avalanchesass_utility_text_align/mixin'; + +/* extract utility.css */ +/* extract utility_text_align.css */ +/*--- +title: Example +name: utility_text_align_example +section: utility_text_align +order: 1 +--- +*/ +/*--- +title: Text align: right +name: utility_text_align_example_right +section: utility_text_align_example +--- + +```example:html +
+ Lorem Ipsum +
+``` +*/ +.#{$u-text-align-namespace}-right { + @include u-text-align(right); +} + +/*--- +title: Text align: left +name: utility_text_align_example_left +section: utility_text_align_example +--- + +```example:html +
+ Lorem Ipsum +
+``` +*/ +.#{$u-text-align-namespace}-left { + @include u-text-align(left); +} + +/*--- +title: Text align: center +name: utility_text_align_example_center +section: utility_text_align_example +--- + +```example:html +
+ Lorem Ipsum +
+``` +*/ +.#{$u-text-align-namespace}-center { + @include u-text-align(center); +} +/* end extract utility_text_align.css */ +/* end extract utility.css */ diff --git a/packages/utility-text-align/scss/_mixin.scss b/packages/utility-text-align/scss/_mixin.scss new file mode 100644 index 0000000..d27c207 --- /dev/null +++ b/packages/utility-text-align/scss/_mixin.scss @@ -0,0 +1,17 @@ +@import 'avalanchesass_utility_text_align/style_guide'; + +/*--- +title: Mixin +name: utility_text_align_mixin +section: utility_text_align +order: 2 +--- + +```css +// Text align. +@mixin u-text-align([$-align: right]) +``` +*/ +@mixin u-text-align($-align: right) { + text-align: $-align !important; +} diff --git a/packages/utility-text-align/scss/_style_guide.scss b/packages/utility-text-align/scss/_style_guide.scss new file mode 100644 index 0000000..99c33fc --- /dev/null +++ b/packages/utility-text-align/scss/_style_guide.scss @@ -0,0 +1,8 @@ +/*--- +title: Text align +name: utility_text_align +section: Utility +--- + +Text align utility classes. +*/ diff --git a/packages/utility-text-align/scss/_text_align.scss b/packages/utility-text-align/scss/_text_align.scss deleted file mode 100644 index 49c5697..0000000 --- a/packages/utility-text-align/scss/_text_align.scss +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Text align - * - * Text align utility classes - * - * @level X.X. - */ -@mixin u-text-align($align: right) { - text-align: $align !important; -} - -/** - * Right - * - * @level X.X.X. - * @markup - *
- *

right aligned text

- *
- */ -.u-text-align-right { - @include u-text-align(); -} - -/** - * Left - * - * @level X.X.X. - * @markup - *
- *

left aligned text

- *
- */ -.u-text-align-left { - @include u-text-align(left); -} - -/** - * Center - * - * @level X.X.X. - * @markup - *
- *

centred text

- *
- */ -.u-text-align-center { - @include u-text-align(center); -} diff --git a/packages/utility-text-align/scss/_variable.scss b/packages/utility-text-align/scss/_variable.scss new file mode 100644 index 0000000..8d64b5d --- /dev/null +++ b/packages/utility-text-align/scss/_variable.scss @@ -0,0 +1,14 @@ +@import 'avalanchesass_utility_text_align/style_guide'; + +$u-text-align-namespace: '#{map-get($namespace, utility)}text-align' !default; +/*--- +title: Variable +name: utility_text_align_variable +section: utility_text_align +order: 3 +--- + +```css +$u-text-align-namespace: '#{$u-text-align-namespace}'; +``` +*/ From ed16725c1cb4b3c9da22531212d9a60fc1bd79d2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 11 May 2016 18:41:30 +0200 Subject: [PATCH 229/355] whitespace --- packages/utility-font-family/scss/_index.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/utility-font-family/scss/_index.scss b/packages/utility-font-family/scss/_index.scss index 3924a02..0ece001 100644 --- a/packages/utility-font-family/scss/_index.scss +++ b/packages/utility-font-family/scss/_index.scss @@ -29,4 +29,3 @@ order: 1 } /* end extract utility_font_family.css */ /* end extract utility.css */ - From 49c9063525afad262b183bc297e009b9c2d1dee9 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 13 May 2016 15:49:26 +0200 Subject: [PATCH 230/355] add more infos about the gulp build process to the main README, fixes #213 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index b6d2607..0710ebd 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,19 @@ To extend your installation with a preconfigured package open your ``` ## Working with avalanche +### Gulp +avalanche utilizes [gulp](http://gulpjs.com/) as build system. At the beginning +of the `gulpfile.js`, inside your project directory you can find a config +variable. Change the settings according to your needs. + +To start the build process, you can run `gulp` in your command line application +of choice. This starts the default task which will watch for changes to files +inside your project directory and builds the CSS and JS code. + +After the CSS and JS code is generated, the built in +[browsersync](https://www.browsersync.io/) tool will automatically refresh the +browser for you. + ### Extend packages If you wan’t to make changes to a class defined by a package it is recommended to create a custom package with the name `_PACKAGE_NAME_extend.scss` in the scss From 000a03cb252f13f2881708c427257aa6d0e38ea3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 8 Jun 2016 16:07:25 +0200 Subject: [PATCH 231/355] change the "homepage" option in the package.json to the avalanche website URL, fixes #241 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bc30582..77fe361 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ ], "version": "3.0.5", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche", + "homepage": "https://avalanche.oberlehner.net", "license": "GPL v2", "repository": { "type": "git", From af3628a6be52defc90bb85008b73d34b5973ae7f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 11 Sep 2016 19:43:03 +0200 Subject: [PATCH 232/355] Add .npmignore file --- .npmignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..015d86c --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +.editorconfig + +CONTRIBUTING.md From 730111894f5fd6223dde8c6b693b3212568868e9 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 11:02:18 +0200 Subject: [PATCH 233/355] Init lerna --- lerna.json | 4 ++++ package.json | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 lerna.json diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..60f5a64 --- /dev/null +++ b/lerna.json @@ -0,0 +1,4 @@ +{ + "lerna": "2.0.0-beta.29", + "version": "0.0.0" +} diff --git a/package.json b/package.json index 77fe361..037b629 100644 --- a/package.json +++ b/package.json @@ -22,5 +22,8 @@ "command-line-args": "^2.1.6", "ncp": "^2.0.0", "replace": "^0.3.0" + }, + "devDependencies": { + "lerna": "2.0.0-beta.29" } } From e894934553d3d102143f223ee3bef81aa1db2214 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 11:28:01 +0200 Subject: [PATCH 234/355] Initial 4.x.x cleanup --- .../.csscomb.json => .csscomb.json | 0 .gitignore | 31 +- .npmignore | 2 + CONTRIBUTING.md | 10 +- LICENSE | 361 +- package.json | 18 +- packages/avalanchesass-object-grid/.gitignore | 3 - packages/avalanchesass-object-grid/LICENSE | 340 -- .../avalanchesass-object-grid/package.json | 21 +- .../scss/_index.scss | 5 +- .../scss/_mixin.scss | 3 - .../scss/_style_guide.scss | 11 - .../scss/_variable.scss | 2 - template-package/.gitignore | 3 - template-package/LICENSE | 340 -- template-package/README.md | 24 - template-package/package.json | 27 - template-package/scss/_index.scss | 21 - template-package/scss/_mixin.scss | 16 - template-package/scss/_style_guide.scss | 8 - template-package/scss/_variable.scss | 14 - template-project/.gitignore | 9 - template-project/gulpfile.js | 255 - template-project/js/avalanche.js | 3 - template-project/logo.svg | 1 - template-project/npm-shrinkwrap.json | 4290 ----------------- template-project/package.json | 33 - template-project/scss/_variable.scss | 262 - template-project/scss/avalanche.scss | 103 - template-project/scss/base/README.md | 3 - template-project/scss/component/README.md | 5 - template-project/scss/function/README.md | 1 - template-project/scss/object/README.md | 9 - template-project/scss/utility/README.md | 5 - template-project/style-guide/README.md | 11 - 35 files changed, 67 insertions(+), 6183 deletions(-) rename template-project/.csscomb.json => .csscomb.json (100%) delete mode 100644 packages/avalanchesass-object-grid/.gitignore delete mode 100644 packages/avalanchesass-object-grid/LICENSE delete mode 100644 packages/avalanchesass-object-grid/scss/_style_guide.scss delete mode 100644 template-package/.gitignore delete mode 100644 template-package/LICENSE delete mode 100644 template-package/README.md delete mode 100644 template-package/package.json delete mode 100644 template-package/scss/_index.scss delete mode 100644 template-package/scss/_mixin.scss delete mode 100644 template-package/scss/_style_guide.scss delete mode 100644 template-package/scss/_variable.scss delete mode 100644 template-project/.gitignore delete mode 100644 template-project/gulpfile.js delete mode 100644 template-project/js/avalanche.js delete mode 100644 template-project/logo.svg delete mode 100644 template-project/npm-shrinkwrap.json delete mode 100644 template-project/package.json delete mode 100644 template-project/scss/_variable.scss delete mode 100644 template-project/scss/avalanche.scss delete mode 100644 template-project/scss/base/README.md delete mode 100644 template-project/scss/component/README.md delete mode 100644 template-project/scss/function/README.md delete mode 100644 template-project/scss/object/README.md delete mode 100644 template-project/scss/utility/README.md delete mode 100644 template-project/style-guide/README.md diff --git a/template-project/.csscomb.json b/.csscomb.json similarity index 100% rename from template-project/.csscomb.json rename to .csscomb.json diff --git a/.gitignore b/.gitignore index 4e86fe6..f5307a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,29 @@ -.DS_Store +# Numerous always-ignore extensions +*.diff +*.err +*.log +*.orig +*.rej +*.swo +*.swp +*.vi +*.zip +*~ -/template-project/scss/*/*.scss +# OS or Editor folders +._* +.cache +.DS_Store +.idea +.project +.settings +.tmproj +*.esproj +*.sublime-project +*.sublime-workspace +nbproject +Thumbs.db +# Folders to ignore +bower_components node_modules - -# DEPRECATED -/package_dev diff --git a/.npmignore b/.npmignore index 015d86c..922336f 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,5 @@ .editorconfig CONTRIBUTING.md + +test diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac7cc9a..1901d5a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,11 +14,11 @@ Pull requests are the greatest contributions, so be sure they are focused in sco 1. To begin, [fork this project], clone your fork, and add our upstream. ```bash # Clone your fork of the repo into the current directory - git clone https://github.com//avalanche + git clone https://github.com//avalanchesass # Navigate to the newly cloned directory - cd avalanche + cd avalanchesass # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/avalanchesass/avalanche + git remote add upstream https://github.com/avalanchesass/avalanchesass # Install the tools necessary for development npm install ``` @@ -45,8 +45,8 @@ Pull requests are the greatest contributions, so be sure they are focused in sco 4. Now [open a pull request] with a clear title and description. -[already been reported]: https://github.com/avalanchesass/avalanche/issues -[fork this project]: https://github.com/avalanchesass/avalanche/fork +[already been reported]: https://github.com/avalanchesass/avalanchesass/issues +[fork this project]: https://github.com/avalanchesass/avalanchesass/fork [live example]: http://codepen.io/pen [open a pull request]: https://help.github.com/articles/using-pull-requests/ [reduced test case]: https://css-tricks.com/reduced-test-cases/ diff --git a/LICENSE b/LICENSE index f1f9389..4cd4c91 100644 --- a/LICENSE +++ b/LICENSE @@ -1,340 +1,21 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. +The MIT License (MIT) + +Copyright (c) 2016 Markus Oberlehner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package.json b/package.json index 037b629..ad27936 100644 --- a/package.json +++ b/package.json @@ -2,26 +2,18 @@ "name": "avalanchesass", "description": "A modular SASS framework", "keywords": [ - "avalanchesass-package" + "avalanchesass" ], - "version": "3.0.5", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net", - "license": "GPL v2", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche" + "url": "https://github.com/avalanchesass/avalanchesass" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche/issues" - }, - "bin": { - "avalanchesass": "index.js" - }, - "dependencies": { - "command-line-args": "^2.1.6", - "ncp": "^2.0.0", - "replace": "^0.3.0" + "url": "https://github.com/avalanchesass/avalanchesass/issues" }, "devDependencies": { "lerna": "2.0.0-beta.29" diff --git a/packages/avalanchesass-object-grid/.gitignore b/packages/avalanchesass-object-grid/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/avalanchesass-object-grid/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/avalanchesass-object-grid/LICENSE b/packages/avalanchesass-object-grid/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/avalanchesass-object-grid/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 50efd4c..1a04686 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -1,28 +1,19 @@ { - "name": "avalanchesass_object_grid", + "name": "avalanchesass-object-grid", "description": "Fluid width, responsive grid system", "keywords": [ "avalanchesass-package", - "eyeglass-module", "sass" ], - "version": "3.1.1", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_object_grid", - "license": "GPL v2", - "dependencies": { - "avalanchesass_utility_clearfix": "^3.0.0" - }, + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_grid" + "url": "https://github.com/avalanchesass/avalanchesass/tree/master/packages/avalanche-object-grid" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_grid/issues" - }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" + "url": "https://github.com/avalanchesass/avalanchesass/issues" } } diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 4ad1d11..99e6849 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,6 +1,5 @@ -@import 'avalanchesass_object_grid/style_guide'; -@import 'avalanchesass_object_grid/variable'; -@import 'avalanchesass_object_grid/mixin'; +@import 'variable'; +@import 'mixin'; /* extract object.css */ /* extract object_grid.css */ diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index c4ad836..7f7ff97 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,6 +1,3 @@ -@import 'avalanchesass_object_grid/style_guide'; -@import 'avalanchesass_utility_clearfix/mixin'; - /*--- title: Mixin name: object_grid_mixin diff --git a/packages/avalanchesass-object-grid/scss/_style_guide.scss b/packages/avalanchesass-object-grid/scss/_style_guide.scss deleted file mode 100644 index 1617a66..0000000 --- a/packages/avalanchesass-object-grid/scss/_style_guide.scss +++ /dev/null @@ -1,11 +0,0 @@ -/*--- -title: Grid -name: object_grid -section: Object ---- - -Fluid width, responsive grid system. - -**TIP:** Most likely you want to use this package in combination with the -[width utility package](https://www.npmjs.com/package/avalanchesass_utility_width). -*/ diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 31f85cd..87a3d18 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,5 +1,3 @@ -@import 'avalanchesass_object_grid/style_guide'; - $o-grid-namespace: '#{map-get($namespace, object)}grid' !default; // Flexbox grid system. diff --git a/template-package/.gitignore b/template-package/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/template-package/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/template-package/LICENSE b/template-package/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/template-package/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/template-package/README.md b/template-package/README.md deleted file mode 100644 index 462f115..0000000 --- a/template-package/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER -Description. - -## Install -``` -npm install avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER --save -``` - -## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER'; - -/* Import just the mixin file. */ -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/mixin'; -``` - -## About -### Author -Your Name -Twitter: https://twitter.com/YourName - -### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) diff --git a/template-package/package.json b/template-package/package.json deleted file mode 100644 index 7279150..0000000 --- a/template-package/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER", - "description": "Description", - "keywords": [ - "avalanchesass-package", - "eyeglass-module", - "sass" - ], - "version": "3.0.0", - "author": "Your Name", - "homepage": "https://github.com/avalanchesass/avalanche_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER", - "license": "GPL v2", - "dependencies": { - }, - "repository": { - "type": "git", - "url": "https://github.com/avalanchesass/avalanche_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER" - }, - "bugs": { - "url": "https://github.com/avalanchesass/avalanche_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/issues" - }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } -} diff --git a/template-package/scss/_index.scss b/template-package/scss/_index.scss deleted file mode 100644 index 61e6129..0000000 --- a/template-package/scss/_index.scss +++ /dev/null @@ -1,21 +0,0 @@ -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/style_guide'; -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/variable'; -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/mixin'; - -/* extract PACKAGE-TYPE-LOWER.css */ -/* extract PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER.css */ -/*--- -title: Example -name: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER_example -section: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER -order: 1 ---- - -```example:html -``` -*/ -.your-styles { - -} -/* end extract PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER.css */ -/* end extract PACKAGE-TYPE-LOWER.css */ diff --git a/template-package/scss/_mixin.scss b/template-package/scss/_mixin.scss deleted file mode 100644 index bf4a7d5..0000000 --- a/template-package/scss/_mixin.scss +++ /dev/null @@ -1,16 +0,0 @@ -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/style_guide'; - -/*--- -title: Mixin -name: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER_mixin -section: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER -order: 2 ---- - -```css -MIXIN() -``` -*/ -@mixin MIXIN() { - -} diff --git a/template-package/scss/_style_guide.scss b/template-package/scss/_style_guide.scss deleted file mode 100644 index a2d29cb..0000000 --- a/template-package/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: PACKAGE-NAME -name: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER -section: Component ---- - -Description. -*/ diff --git a/template-package/scss/_variable.scss b/template-package/scss/_variable.scss deleted file mode 100644 index 77632dd..0000000 --- a/template-package/scss/_variable.scss +++ /dev/null @@ -1,14 +0,0 @@ -@import 'avalanchesass_PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER/style_guide'; - -$VARIABLE: 'VALUE' !default; -/*--- -title: Variable -name: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER_variable -section: PACKAGE-TYPE-LOWER_PACKAGE-NAME-LOWER -order: 3 ---- - -```css -$VARIABLE: #{$VARIABLE}; -``` -*/ diff --git a/template-project/.gitignore b/template-project/.gitignore deleted file mode 100644 index 78d2423..0000000 --- a/template-project/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -.DS_Store - -/_TEMP -/dist -/dist-extract -/style-guide/* -!/style-guide/README.md - -node_modules diff --git a/template-project/gulpfile.js b/template-project/gulpfile.js deleted file mode 100644 index f981f8b..0000000 --- a/template-project/gulpfile.js +++ /dev/null @@ -1,255 +0,0 @@ -/** - * Configuration - */ -var config = { - host: 'devbox.dev', - subdirectory: '', - styles: { - destination: 'dist', - destinationFileName: 'avalanche.css', - extractDestination: 'dist-extract', - watchDirectories: ['scss/**/*'] - }, - scripts: { - destination: 'dist', - destinationFileName: 'avalanche.js', - browserifyEntries: ['js/avalanche.js'], - watchDirectories: ['js/**/*'] - }, - styleGuide: { - title: 'avalanche - a modular front-end framework', - description: 'a modular front-end framework', - logo: '../logo.svg', - theme: 'avalanchesass_mdcss_theme', - destination: 'style-guide' - }, - sassOptions: { - precision: 7 - } -}; - -/** - * Plugins - */ -var browserSync = require('browser-sync').create(); -var browserify = require('browserify'); -var del = require('del'); -var eyeglass = require('eyeglass'); -var fs = require('fs'); -var gulp = require('gulp'); -var autoprefixer = require('gulp-autoprefixer'); -var cssGlobbing = require('gulp-css-globbing'); -var cssnano = require('gulp-cssnano'); -var minifyCss = require('gulp-minify-css'); -var postcss = require('gulp-postcss'); -var rename = require('gulp-rename'); -var replace = require('gulp-replace'); -var sass = require('gulp-sass'); -var sourcemaps = require('gulp-sourcemaps'); -var uglify = require('gulp-uglify'); -var buffer = require('vinyl-buffer'); -var source = require('vinyl-source-stream'); - -/** - * Styles - */ -// Build css from scss source files. -gulp.task('styles:build', ['clean:styles'], function () { - // Use the watch directories config variable to define the src directories. - var srcDirectories = []; - config.styles.watchDirectories.forEach(function (value) { - srcDirectories.push(value + '.scss'); - }); - return gulp.src(srcDirectories) - .pipe(cssGlobbing({ - extensions: ['.scss'], - scssImportPath: { - leading_underscore: false, - filename_extension: false - } - })) - .pipe(sourcemaps.init()) - .pipe(sass(eyeglass(config.sassOptions)).on('error', sass.logError)) - .pipe(autoprefixer()) - .pipe(sourcemaps.write()) - .pipe(rename(config.styles.destinationFileName)) - .pipe(gulp.dest(config.styles.destination)) - .pipe(browserSync.stream()); -}); - -// Create separate css files from placeholders. -gulp.task('styles:extract', ['clean:styles:extract', 'styles:minify'], function () { - fs.readFile(config.styles.destination + '/' + config.styles.destinationFileName, 'utf8', function (error, data) { - if (error) throw error; - - var files = stylesExtractFiles(data); - - for (var fileName in files) { - var fileData = files[fileName]; - var fileDir = config.styles.extractDestination; - var filePath = fileDir + '/' + fileName; - // Create directory if it doesn't exist. - if (!fs.existsSync(fileDir)){ - fs.mkdirSync(fileDir); - } - // Create the file. - fs.openSync(filePath, 'w'); - fs.writeFileSync(filePath, fileData); - // Create a minified version of the file. - stylesMinify(filePath, fileDir); - } - }); -}); - -// Minify and optimize the css code generated by the build process. -gulp.task('styles:minify', ['styles:build'], function () { - stylesMinify(config.styles.destination + '/' + config.styles.destinationFileName, config.styles.destination); -}); - -function stylesExtractFiles(data) { - var files = {}; - var extractRegExp = /\/\* extract (.*?) \*\/((.|\n)*?)\/\* end extract \1 \*\//g; - - // Find extract placeholders in the CSS file. - while (match = extractRegExp.exec(data)) { - var extractFileName = match[1]; - var extractFileData = match[0].replace('/* extract ' + extractFileName + ' */', '').replace('/* end extract ' + extractFileName + ' */', ''); - if (!files[extractFileName]) { - files[extractFileName] = ''; - } - // Append the file data if it already exists. - files[extractFileName] += extractFileData; - - // Find nested extraction placeholders. - var nestedFiles = stylesExtractFiles(extractFileData); - for (var nestedFileName in nestedFiles) { - var nestedFileData = nestedFiles[nestedFileName]; - if (!files[nestedFileName]) { - files[nestedFileName] = ''; - } - files[nestedFileName] += nestedFileData; - } - } - - return files; -} - -function stylesMinify(files, dest) { - return gulp.src(files) - .pipe(minifyCss()) - .pipe(replace(/[^;\{]+:[^;\}]+;?\/\*\!remove\*\//g, '')) - .pipe(cssnano()) - .pipe(rename(function (path) { - path.basename += '.min'; - })) - .pipe(gulp.dest(dest)) - .pipe(browserSync.stream()); -} - -/** - * Scripts - */ -// Bundle js resources with browserify and create a minified output file. -gulp.task('scripts:build', ['clean:scripts'], function () { - // Set up the browserify instance. - var b = browserify({ - entries: config.scripts.browserifyEntries, - debug: true - }); - - return b.bundle() - .pipe(source(config.scripts.destinationFileName)) - .pipe(buffer()) - .pipe(uglify()) - .pipe(gulp.dest(config.scripts.destination)) - .pipe(browserSync.stream()); -}); - -/** - * Style guide - */ -// Create the mdcss style guide. -gulp.task('style_guide', function () { - gulp.src(config.styles.destination + '/' + config.styles.destinationFileName) - .pipe(postcss([ - require('mdcss')({ - theme: require(config.styleGuide.theme)({ - logo: config.styleGuide.logo, - title: config.styleGuide.title, - description: config.styleGuide.description, - examples: { - css: ['../' + config.styles.destination + '/' + config.styles.destinationFileName], - bodyjs: ['../' + config.scripts.destination + '/' + config.scripts.destinationFileName], - htmlcss: '', - bodycss: '' - } - }), - destination: config.styleGuide.destination - }) - ])); -}); - -/** - * Clean - * - * Remove compiled files before regenerating them. - */ -gulp.task('clean:styles', function () { - return del([ - config.styles.destination + '/**/*.css' - ]); -}); - -gulp.task('clean:scripts', function () { - return del([ - config.scripts.destination + '/**/*.js' - ]); -}); - -gulp.task('clean:styles:extract', function () { - return del([ - config.styles.extractDestination + '/**/*.css' - ]); -}); - -/** - * Watch - * - * Watch files for changes. - */ -gulp.task('watch', function () { - browserSync.init({ - proxy: config.host + config.subdirectory - }); - gulp.watch(config.styles.watchDirectories, ['styles:minify']); - gulp.watch(config.scripts.watchDirectories, ['scripts:build']); -}); - -gulp.task('watch:extract', function () { - browserSync.init({ - proxy: config.host + config.subdirectory - }); - gulp.watch(config.styles.watchDirectories, ['styles:extract']); -}); - -gulp.task('watch:style_guide', function () { - var assetWatchDirectories = [ - config.styles.destination + '/' + config.styles.destinationFileName, - config.scripts.destination + '/' + config.scripts.destinationFileName, - ]; - browserSync.init({ - proxy: config.host + config.subdirectory + '/' + config.styleGuide.destination - }); - gulp.watch(config.styles.watchDirectories, ['styles:minify']); - gulp.watch(config.scripts.watchDirectories, ['scripts:build']); - gulp.watch(assetWatchDirectories, ['style_guide']); - gulp.watch(config.styleGuide.destination + '/*.html').on('change', browserSync.reload); -}); - -/** - * Default task - */ -// Run this task with `gulp`. -gulp.task('default', function () { - gulp.start('watch'); -}); diff --git a/template-project/js/avalanche.js b/template-project/js/avalanche.js deleted file mode 100644 index 5cf21e1..0000000 --- a/template-project/js/avalanche.js +++ /dev/null @@ -1,3 +0,0 @@ -// Example usage: -// var cMenu = require('avalanchesass_component_menu'); -// var mainMenu = new cMenu('#main-menu'); diff --git a/template-project/logo.svg b/template-project/logo.svg deleted file mode 100644 index f96ca19..0000000 --- a/template-project/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/template-project/npm-shrinkwrap.json b/template-project/npm-shrinkwrap.json deleted file mode 100644 index 4dc6f18..0000000 --- a/template-project/npm-shrinkwrap.json +++ /dev/null @@ -1,4290 +0,0 @@ -{ - "name": "PROJECT-NAME-LOWER", - "version": "0.0.1", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "abbrev@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - }, - "accepts": { - "version": "1.2.13", - "from": "accepts@>=1.2.13 <1.3.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz" - }, - "acorn": { - "version": "1.2.2", - "from": "acorn@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" - }, - "after": { - "version": "0.8.1", - "from": "after@0.8.1", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" - }, - "align-text": { - "version": "0.1.4", - "from": "align-text@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" - }, - "alphanum-sort": { - "version": "1.0.2", - "from": "alphanum-sort@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - }, - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - }, - "ansi": { - "version": "0.3.1", - "from": "ansi@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz" - }, - "ansi-regex": { - "version": "0.2.1", - "from": "ansi-regex@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "ansi-styles": { - "version": "1.1.0", - "from": "ansi-styles@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "anymatch": { - "version": "1.3.0", - "from": "anymatch@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz" - }, - "archy": { - "version": "1.0.0", - "from": "archy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" - }, - "are-we-there-yet": { - "version": "1.0.6", - "from": "are-we-there-yet@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz" - }, - "argparse": { - "version": "1.0.6", - "from": "argparse@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.6.tgz" - }, - "arr-diff": { - "version": "2.0.0", - "from": "arr-diff@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" - }, - "arr-flatten": { - "version": "1.0.1", - "from": "arr-flatten@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" - }, - "array-differ": { - "version": "1.0.0", - "from": "array-differ@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" - }, - "array-filter": { - "version": "0.0.1", - "from": "array-filter@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz" - }, - "array-index": { - "version": "1.0.0", - "from": "array-index@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz" - }, - "array-map": { - "version": "0.0.0", - "from": "array-map@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz" - }, - "array-reduce": { - "version": "0.0.0", - "from": "array-reduce@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz" - }, - "array-union": { - "version": "1.0.1", - "from": "array-union@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.1.tgz" - }, - "array-uniq": { - "version": "1.0.2", - "from": "array-uniq@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz" - }, - "array-unique": { - "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "from": "arraybuffer.slice@0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" - }, - "arrify": { - "version": "1.0.1", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "asn1@0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "asn1.js": { - "version": "4.5.2", - "from": "asn1.js@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.5.2.tgz" - }, - "assert": { - "version": "1.3.0", - "from": "assert@>=1.3.0 <1.4.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" - }, - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "astw": { - "version": "2.0.0", - "from": "astw@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz" - }, - "async": { - "version": "1.5.2", - "from": "async@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "async-each": { - "version": "0.1.6", - "from": "async-each@>=0.1.6 <0.2.0", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" - }, - "async-each-series": { - "version": "0.1.1", - "from": "async-each-series@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz" - }, - "async-foreach": { - "version": "0.1.3", - "from": "async-foreach@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz" - }, - "autoprefixer": { - "version": "6.3.3", - "from": "autoprefixer@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.3.3.tgz" - }, - "avalanchesass_base_box_sizing_reset": { - "version": "3.0.0", - "from": "avalanchesass_base_box_sizing_reset@>=3.0.0 <4.0.0" - }, - "avalanchesass_base_typography": { - "version": "3.0.0", - "from": "avalanchesass_base_typography@>=3.0.0 <4.0.0" - }, - "avalanchesass_component_hn": { - "version": "3.0.0", - "from": "avalanchesass_component_hn@>=3.0.0 <4.0.0" - }, - "avalanchesass_function_breakpointmax": { - "version": "3.0.0", - "from": "avalanchesass_function_breakpointmax@>=3.0.0 <4.0.0" - }, - "avalanchesass_function_map_get_deep": { - "version": "3.0.0", - "from": "avalanchesass_function_map_get_deep@>=3.0.0 <4.0.0" - }, - "avalanchesass_function_strip_unit": { - "version": "3.0.0", - "from": "avalanchesass_function_strip_unit@>=3.0.0 <4.0.0" - }, - "avalanchesass_mdcss_theme": { - "version": "1.0.0", - "from": "avalanchesass_mdcss_theme@>=1.0.0 <2.0.0" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "backo2": { - "version": "1.0.2", - "from": "backo2@1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" - }, - "balanced-match": { - "version": "0.3.0", - "from": "balanced-match@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" - }, - "base64-arraybuffer": { - "version": "0.1.2", - "from": "base64-arraybuffer@0.1.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" - }, - "base64-js": { - "version": "1.1.1", - "from": "base64-js@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.1.tgz" - }, - "base64id": { - "version": "0.1.0", - "from": "base64id@0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" - }, - "batch": { - "version": "0.5.3", - "from": "batch@0.5.3", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz" - }, - "beeper": { - "version": "1.1.0", - "from": "beeper@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.0.tgz" - }, - "benchmark": { - "version": "1.0.0", - "from": "benchmark@1.0.0", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz" - }, - "better-assert": { - "version": "1.0.2", - "from": "better-assert@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" - }, - "binary-extensions": { - "version": "1.4.0", - "from": "binary-extensions@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.4.0.tgz" - }, - "binaryextensions": { - "version": "1.0.0", - "from": "binaryextensions@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-1.0.0.tgz" - }, - "bindings": { - "version": "1.2.1", - "from": "bindings@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" - }, - "bl": { - "version": "1.0.3", - "from": "bl@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz" - }, - "blob": { - "version": "0.0.4", - "from": "blob@0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" - }, - "block-stream": { - "version": "0.0.8", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "bn.js": { - "version": "4.11.0", - "from": "bn.js@>=4.1.1 <5.0.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.0.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "brace-expansion": { - "version": "1.1.3", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz" - }, - "braces": { - "version": "1.8.3", - "from": "braces@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.3.tgz" - }, - "brorand": { - "version": "1.0.5", - "from": "brorand@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" - }, - "browser-pack": { - "version": "6.0.1", - "from": "browser-pack@>=6.0.1 <7.0.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.1.tgz" - }, - "browser-resolve": { - "version": "1.11.1", - "from": "browser-resolve@>=1.11.0 <2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.1.tgz" - }, - "browser-sync": { - "version": "2.11.1", - "from": "browser-sync@>=2.11.1 <3.0.0", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.11.1.tgz" - }, - "browser-sync-client": { - "version": "2.4.1", - "from": "browser-sync-client@>=2.3.3 <3.0.0", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.4.1.tgz" - }, - "browser-sync-ui": { - "version": "0.5.18", - "from": "browser-sync-ui@>=0.5.16 <0.6.0", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-0.5.18.tgz" - }, - "browserify": { - "version": "13.0.0", - "from": "browserify@>=13.0.0 <14.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.0.0.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.15 <6.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - } - } - }, - "browserify-aes": { - "version": "1.0.6", - "from": "browserify-aes@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz" - }, - "browserify-cipher": { - "version": "1.0.0", - "from": "browserify-cipher@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz" - }, - "browserify-des": { - "version": "1.0.0", - "from": "browserify-des@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz" - }, - "browserify-rsa": { - "version": "4.0.1", - "from": "browserify-rsa@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" - }, - "browserify-sign": { - "version": "4.0.0", - "from": "browserify-sign@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "browserify-zlib@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz" - }, - "browserslist": { - "version": "1.1.3", - "from": "browserslist@>=1.1.3 <1.2.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.1.3.tgz" - }, - "bs-recipes": { - "version": "1.1.0", - "from": "bs-recipes@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.1.0.tgz" - }, - "buffer": { - "version": "4.5.0", - "from": "buffer@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.5.0.tgz", - "dependencies": { - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - } - } - }, - "buffer-xor": { - "version": "1.0.3", - "from": "buffer-xor@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - }, - "bufferstreams": { - "version": "1.0.1", - "from": "bufferstreams@1.0.1", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz", - "dependencies": { - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.0.33 <2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" - } - } - }, - "bufferutil": { - "version": "1.2.1", - "from": "bufferutil@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.2.1.tgz" - }, - "builtin-status-codes": { - "version": "2.0.0", - "from": "builtin-status-codes@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz" - }, - "callsite": { - "version": "1.0.0", - "from": "callsite@1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - }, - "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "camelcase-keys": { - "version": "1.0.0", - "from": "camelcase-keys@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz" - }, - "caniuse-db": { - "version": "1.0.30000429", - "from": "caniuse-db@>=1.0.30000409 <2.0.0", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000429.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "center-align": { - "version": "0.1.3", - "from": "center-align@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "dependencies": { - "lazy-cache": { - "version": "1.0.3", - "from": "lazy-cache@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.3.tgz" - } - } - }, - "chalk": { - "version": "0.5.1", - "from": "chalk@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" - }, - "chokidar": { - "version": "1.4.1", - "from": "chokidar@1.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.4.1.tgz" - }, - "cipher-base": { - "version": "1.0.2", - "from": "cipher-base@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" - }, - "clap": { - "version": "1.0.10", - "from": "clap@>=1.0.9 <2.0.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.0.10.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@1.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "clean-css": { - "version": "3.4.10", - "from": "clean-css@>=3.3.3 <4.0.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.10.tgz", - "dependencies": { - "commander": { - "version": "2.8.1", - "from": "commander@>=2.8.0 <2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" - } - } - }, - "cliui": { - "version": "3.1.0", - "from": "cliui@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - } - } - }, - "clone": { - "version": "1.0.2", - "from": "clone@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "clone-stats": { - "version": "0.0.1", - "from": "clone-stats@>=0.0.1 <0.0.2", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - }, - "coa": { - "version": "1.0.1", - "from": "coa@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.1.tgz" - }, - "code-point-at": { - "version": "1.0.0", - "from": "code-point-at@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz" - }, - "color": { - "version": "0.11.1", - "from": "color@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.1.tgz", - "dependencies": { - "color-convert": { - "version": "0.5.3", - "from": "color-convert@>=0.5.3 <0.6.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" - } - } - }, - "color-convert": { - "version": "1.0.0", - "from": "color-convert@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.0.0.tgz" - }, - "color-name": { - "version": "1.1.1", - "from": "color-name@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz" - }, - "color-string": { - "version": "0.3.0", - "from": "color-string@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz" - }, - "colormin": { - "version": "1.1.0", - "from": "colormin@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.0.tgz" - }, - "colors": { - "version": "1.1.2", - "from": "colors@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - }, - "combine-source-map": { - "version": "0.7.1", - "from": "combine-source-map@>=0.7.1 <0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.1.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "commander": { - "version": "2.9.0", - "from": "commander@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "component-bind": { - "version": "1.0.0", - "from": "component-bind@1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" - }, - "component-emitter": { - "version": "1.1.2", - "from": "component-emitter@1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" - }, - "component-inherit": { - "version": "0.0.3", - "from": "component-inherit@0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "concat-stream": { - "version": "1.5.1", - "from": "concat-stream@>=1.5.1 <1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz" - }, - "config-chain": { - "version": "1.1.10", - "from": "config-chain@>=1.1.8 <1.2.0", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz" - }, - "connect": { - "version": "3.4.1", - "from": "connect@>=3.4.0 <4.0.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz" - }, - "connect-history-api-fallback": { - "version": "1.1.0", - "from": "connect-history-api-fallback@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.1.0.tgz" - }, - "console-browserify": { - "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz" - }, - "constants-browserify": { - "version": "1.0.0", - "from": "constants-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - }, - "convert-source-map": { - "version": "1.1.3", - "from": "convert-source-map@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "create-ecdh": { - "version": "4.0.0", - "from": "create-ecdh@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz" - }, - "create-hash": { - "version": "1.1.2", - "from": "create-hash@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz" - }, - "create-hmac": { - "version": "1.1.4", - "from": "create-hmac@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz" - }, - "cross-spawn": { - "version": "2.1.5", - "from": "cross-spawn@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.1.5.tgz" - }, - "cross-spawn-async": { - "version": "2.1.9", - "from": "cross-spawn-async@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.1.9.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "crypto-browserify": { - "version": "3.11.0", - "from": "crypto-browserify@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz" - }, - "css-color-names": { - "version": "0.0.3", - "from": "css-color-names@0.0.3", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz" - }, - "cssnano": { - "version": "3.5.2", - "from": "cssnano@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.5.2.tgz" - }, - "csso": { - "version": "1.6.4", - "from": "csso@>=1.6.4 <1.7.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-1.6.4.tgz", - "dependencies": { - "source-map": { - "version": "0.5.3", - "from": "source-map@>=0.5.3 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" - } - } - }, - "ctype": { - "version": "0.5.3", - "from": "ctype@0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - }, - "d": { - "version": "0.1.1", - "from": "d@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" - }, - "date-now": { - "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - }, - "dateformat": { - "version": "1.0.12", - "from": "dateformat@>=1.0.11 <2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz" - }, - "deap": { - "version": "1.0.0", - "from": "deap@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/deap/-/deap-1.0.0.tgz" - }, - "deasync": { - "version": "0.1.4", - "from": "deasync@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.4.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "decamelize@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "defaults": { - "version": "1.0.3", - "from": "defaults@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - }, - "defined": { - "version": "1.0.0", - "from": "defined@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" - }, - "del": { - "version": "2.2.0", - "from": "del@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "delegates": { - "version": "1.0.0", - "from": "delegates@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "depd": { - "version": "1.1.0", - "from": "depd@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "deprecated": { - "version": "0.0.1", - "from": "deprecated@>=0.0.1 <0.0.2", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz" - }, - "deps-sort": { - "version": "2.0.0", - "from": "deps-sort@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz" - }, - "des.js": { - "version": "1.0.0", - "from": "des.js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz" - }, - "destroy": { - "version": "1.0.4", - "from": "destroy@>=1.0.4 <1.1.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "detective": { - "version": "4.3.1", - "from": "detective@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz" - }, - "dev-ip": { - "version": "1.0.1", - "from": "dev-ip@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz" - }, - "diffie-hellman": { - "version": "5.0.2", - "from": "diffie-hellman@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz" - }, - "domain-browser": { - "version": "1.1.7", - "from": "domain-browser@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz" - }, - "duplexer2": { - "version": "0.1.4", - "from": "duplexer2@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" - }, - "easy-extender": { - "version": "2.3.2", - "from": "easy-extender@>=2.3.1 <3.0.0", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz" - }, - "eazy-logger": { - "version": "2.1.2", - "from": "eazy-logger@>=2.1.2 <3.0.0", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-2.1.2.tgz" - }, - "ee-first": { - "version": "1.1.1", - "from": "ee-first@1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - }, - "ejs": { - "version": "2.4.1", - "from": "ejs@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.4.1.tgz" - }, - "elliptic": { - "version": "6.2.3", - "from": "elliptic@>=6.0.0 <7.0.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz" - }, - "emitter-steward": { - "version": "1.0.0", - "from": "emitter-steward@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/emitter-steward/-/emitter-steward-1.0.0.tgz" - }, - "end-of-stream": { - "version": "0.1.5", - "from": "end-of-stream@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz" - }, - "engine.io": { - "version": "1.5.4", - "from": "engine.io@1.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.5.4.tgz", - "dependencies": { - "debug": { - "version": "1.0.3", - "from": "debug@1.0.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.3.tgz" - }, - "ms": { - "version": "0.6.2", - "from": "ms@0.6.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - } - } - }, - "engine.io-client": { - "version": "1.5.4", - "from": "engine.io-client@1.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.5.4.tgz", - "dependencies": { - "debug": { - "version": "1.0.4", - "from": "debug@1.0.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz" - }, - "ms": { - "version": "0.6.2", - "from": "ms@0.6.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - }, - "parseuri": { - "version": "0.0.4", - "from": "parseuri@0.0.4", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz" - } - } - }, - "engine.io-parser": { - "version": "1.2.2", - "from": "engine.io-parser@1.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.2.tgz" - }, - "es5-ext": { - "version": "0.10.11", - "from": "es5-ext@>=0.10.10 <0.11.0", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz" - }, - "es6-iterator": { - "version": "2.0.0", - "from": "es6-iterator@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" - }, - "es6-symbol": { - "version": "3.0.2", - "from": "es6-symbol@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz" - }, - "escape-html": { - "version": "1.0.3", - "from": "escape-html@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "escape-string-regexp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "esprima": { - "version": "2.7.2", - "from": "esprima@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz" - }, - "etag": { - "version": "1.7.0", - "from": "etag@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "eventemitter3": { - "version": "1.1.1", - "from": "eventemitter3@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" - }, - "events": { - "version": "1.1.0", - "from": "events@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.0.tgz" - }, - "evp_bytestokey": { - "version": "1.0.0", - "from": "evp_bytestokey@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" - }, - "expand-brackets": { - "version": "0.1.4", - "from": "expand-brackets@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" - }, - "expand-range": { - "version": "1.8.1", - "from": "expand-range@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz" - }, - "express": { - "version": "2.5.11", - "from": "express@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/express/-/express-2.5.11.tgz", - "dependencies": { - "connect": { - "version": "1.9.2", - "from": "connect@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-1.9.2.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "extglob": { - "version": "0.3.2", - "from": "extglob@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - }, - "eyeglass": { - "version": "0.8.3", - "from": "eyeglass@>=0.8.3 <0.9.0", - "resolved": "https://registry.npmjs.org/eyeglass/-/eyeglass-0.8.3.tgz", - "dependencies": { - "fs-extra": { - "version": "0.24.0", - "from": "fs-extra@>=0.24.0 <0.25.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.24.0.tgz" - }, - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.15 <6.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - } - } - }, - "fancy-log": { - "version": "1.2.0", - "from": "fancy-log@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "filename-regex": { - "version": "2.0.0", - "from": "filename-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "fill-range": { - "version": "2.2.3", - "from": "fill-range@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" - }, - "finalhandler": { - "version": "0.4.1", - "from": "finalhandler@0.4.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz" - }, - "find-index": { - "version": "0.1.1", - "from": "find-index@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" - }, - "findup-sync": { - "version": "0.3.0", - "from": "findup-sync@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.0 <5.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "from": "first-chunk-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz" - }, - "flagged-respawn": { - "version": "0.3.1", - "from": "flagged-respawn@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.1.tgz" - }, - "flatten": { - "version": "1.0.2", - "from": "flatten@1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz" - }, - "for-in": { - "version": "0.1.4", - "from": "for-in@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" - }, - "for-own": { - "version": "0.1.3", - "from": "for-own@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc3", - "from": "form-data@>=1.0.0-rc3 <1.1.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz" - }, - "formidable": { - "version": "1.0.17", - "from": "formidable@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz" - }, - "foxy": { - "version": "11.1.4", - "from": "foxy@>=11.1.2 <12.0.0", - "resolved": "https://registry.npmjs.org/foxy/-/foxy-11.1.4.tgz", - "dependencies": { - "resp-modifier": { - "version": "4.0.4", - "from": "resp-modifier@>=4.0.2 <5.0.0", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-4.0.4.tgz" - } - } - }, - "fresh": { - "version": "0.3.0", - "from": "fresh@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "fs-extra": { - "version": "0.26.5", - "from": "fs-extra@>=0.26.2 <0.27.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.5.tgz" - }, - "fsevents": { - "version": "1.0.8", - "from": "fsevents@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.8.tgz", - "dependencies": { - "ansi": { - "version": "0.3.1", - "from": "ansi@~0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz" - }, - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@^2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.1.0", - "from": "ansi-styles@^2.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" - }, - "are-we-there-yet": { - "version": "1.0.6", - "from": "are-we-there-yet@~1.0.6", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz" - }, - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@^0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "async": { - "version": "1.5.2", - "from": "async@^1.4.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@~0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "aws4": { - "version": "1.2.1", - "from": "aws4@^1.2.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.2.1.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@^2.6.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - } - } - }, - "bl": { - "version": "1.0.2", - "from": "bl@~1.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.2.tgz" - }, - "block-stream": { - "version": "0.0.8", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@2.x.x", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@~0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@^1.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@~1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "commander": { - "version": "2.9.0", - "from": "commander@^2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@~1.0.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@2.x.x", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "dashdash": { - "version": "1.12.2", - "from": "dashdash@>=1.10.1 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.12.2.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "deep-extend": { - "version": "0.4.1", - "from": "deep-extend@~0.4.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@~1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "delegates": { - "version": "1.0.0", - "from": "delegates@^1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.0.1 <1.0.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.4", - "from": "escape-string-regexp@^1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "extend@~3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@~0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc3", - "from": "form-data@~1.0.0-rc3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz" - }, - "fstream": { - "version": "1.0.8", - "from": "fstream@^1.0.2", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz" - }, - "fstream-ignore": { - "version": "1.0.3", - "from": "fstream-ignore@~1.0.3", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.3.tgz", - "dependencies": { - "minimatch": { - "version": "3.0.0", - "from": "minimatch@^3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.2", - "from": "brace-expansion@^1.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz", - "dependencies": { - "balanced-match": { - "version": "0.3.0", - "from": "balanced-match@^0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - }, - "gauge": { - "version": "1.2.5", - "from": "gauge@~1.2.5", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.5.tgz" - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@^2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@^1.1.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "graceful-fs": { - "version": "4.1.3", - "from": "graceful-fs@^4.1.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>= 1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "har-validator": { - "version": "2.0.6", - "from": "har-validator@~2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@^2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "has-unicode": { - "version": "2.0.0", - "from": "has-unicode@^2.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.0.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@~3.1.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@2.x.x", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "http-signature": { - "version": "1.1.1", - "from": "http-signature@~1.1.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@*", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "ini@~1.3.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "is-my-json-valid": { - "version": "2.12.4", - "from": "is-my-json-valid@^2.12.4", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.4.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@^1.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@~1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@~0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "json-schema@0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "jsprim": { - "version": "1.2.2", - "from": "jsprim@^1.2.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz" - }, - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._createpadding": { - "version": "3.6.1", - "from": "lodash._createpadding@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz" - }, - "lodash._root": { - "version": "3.0.0", - "from": "lodash._root@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.0.tgz" - }, - "lodash.pad": { - "version": "3.3.0", - "from": "lodash.pad@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.3.0.tgz" - }, - "lodash.padleft": { - "version": "3.1.1", - "from": "lodash.padleft@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz" - }, - "lodash.padright": { - "version": "3.1.1", - "from": "lodash.padright@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz" - }, - "lodash.repeat": { - "version": "3.2.0", - "from": "lodash.repeat@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.2.0.tgz" - }, - "mime-db": { - "version": "1.21.0", - "from": "mime-db@~1.21.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.21.0.tgz" - }, - "mime-types": { - "version": "2.1.9", - "from": "mime-types@~2.1.7", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.9.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.3.0 <0.4.0||>=0.4.0 <0.5.0||>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "node-pre-gyp": { - "version": "0.6.21", - "from": "node-pre-gyp@>=0.6.21 <0.7.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.21.tgz", - "dependencies": { - "nopt": { - "version": "3.0.6", - "from": "nopt@~3.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "abbrev@1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - } - } - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@~1.4.7", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "npmlog": { - "version": "2.0.2", - "from": "npmlog@~2.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.2.tgz" - }, - "oauth-sign": { - "version": "0.8.1", - "from": "oauth-sign@~0.8.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz" - }, - "once": { - "version": "1.3.3", - "from": "once@~1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@^2.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.0", - "from": "pinkie-promise@^2.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.6", - "from": "process-nextick-args@~1.0.6", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz" - }, - "qs": { - "version": "6.0.2", - "from": "qs@~6.0.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.0.2.tgz" - }, - "rc": { - "version": "1.1.6", - "from": "rc@~1.1.0", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "dependencies": { - "minimist": { - "version": "1.2.0", - "from": "minimist@^1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "readable-stream": { - "version": "2.0.5", - "from": "readable-stream@^2.0.0 || ^1.1.13", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.5.tgz" - }, - "request": { - "version": "2.69.0", - "from": "request@2.x", - "resolved": "https://registry.npmjs.org/request/-/request-2.69.0.tgz" - }, - "rimraf": { - "version": "2.5.1", - "from": "rimraf@~2.5.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.1.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "glob@^6.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "inflight@^1.0.4", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.0", - "from": "minimatch@2 || 3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.2", - "from": "brace-expansion@^1.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz", - "dependencies": { - "balanced-match": { - "version": "0.3.0", - "from": "balanced-match@^0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "once@^1.3.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "path-is-absolute@^1.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "semver": { - "version": "5.1.0", - "from": "semver@~5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@1.x.x", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - }, - "sshpk": { - "version": "1.7.3", - "from": "sshpk@^1.7.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.3.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-ansi": { - "version": "3.0.0", - "from": "strip-ansi@^3.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "strip-json-comments@~1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@^2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "tar@~2.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz" - }, - "tar-pack": { - "version": "3.1.3", - "from": "tar-pack@~3.1.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.3.tgz" - }, - "tough-cookie": { - "version": "2.2.1", - "from": "tough-cookie@~2.2.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz" - }, - "tunnel-agent": { - "version": "0.4.2", - "from": "tunnel-agent@~0.4.1", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz" - }, - "tweetnacl": { - "version": "0.13.3", - "from": "tweetnacl@>=0.13.0 <1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "uid-number": { - "version": "0.0.6", - "from": "uid-number@~0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@~1.0.1", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - }, - "wrappy": { - "version": "1.0.1", - "from": "wrappy@1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@^4.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "fstream": { - "version": "1.0.8", - "from": "fstream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 >=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - } - } - }, - "function-bind": { - "version": "1.1.0", - "from": "function-bind@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz" - }, - "gauge": { - "version": "1.2.7", - "from": "gauge@>=1.2.5 <1.3.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz" - }, - "gaze": { - "version": "0.5.2", - "from": "gaze@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz" - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "glob": { - "version": "7.0.3", - "from": "glob@>=7.0.0 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz" - }, - "glob-base": { - "version": "0.3.0", - "from": "glob-base@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - }, - "glob-parent": { - "version": "2.0.0", - "from": "glob-parent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "glob-stream": { - "version": "3.1.18", - "from": "glob-stream@>=3.1.5 <4.0.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "glob@>=4.3.1 <5.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - } - } - }, - "glob-watcher": { - "version": "0.0.6", - "from": "glob-watcher@>=0.0.6 <0.0.7", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz" - }, - "glob2base": { - "version": "0.0.12", - "from": "glob2base@>=0.0.12 <0.0.13", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz" - }, - "global": { - "version": "2.0.1", - "from": "https://github.com/component/global/archive/v2.0.1.tar.gz", - "resolved": "https://github.com/component/global/archive/v2.0.1.tar.gz" - }, - "globby": { - "version": "4.0.0", - "from": "globby@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-4.0.0.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "glob@>=6.0.1 <7.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" - } - } - }, - "globule": { - "version": "0.1.0", - "from": "globule@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "dependencies": { - "glob": { - "version": "3.1.21", - "from": "glob@>=3.1.21 <3.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz" - }, - "graceful-fs": { - "version": "1.2.3", - "from": "graceful-fs@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "inherits": { - "version": "1.0.2", - "from": "inherits@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - }, - "lodash": { - "version": "1.0.2", - "from": "lodash@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz" - }, - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "minimatch": { - "version": "0.2.14", - "from": "minimatch@>=0.2.11 <0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" - } - } - }, - "glogg": { - "version": "1.0.0", - "from": "glogg@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz" - }, - "graceful-fs": { - "version": "4.1.3", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "gulp": { - "version": "3.9.1", - "from": "gulp@>=3.9.0 <4.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "semver": { - "version": "4.3.6", - "from": "semver@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "gulp-autoprefixer": { - "version": "3.1.0", - "from": "gulp-autoprefixer@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-3.1.0.tgz" - }, - "gulp-css-globbing": { - "version": "0.1.8", - "from": "gulp-css-globbing@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/gulp-css-globbing/-/gulp-css-globbing-0.1.8.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "glob@>=4.0.5 <5.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" - } - } - }, - "gulp-cssnano": { - "version": "2.1.1", - "from": "gulp-cssnano@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.1.tgz" - }, - "gulp-minify-css": { - "version": "1.2.4", - "from": "gulp-minify-css@>=1.2.4 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-minify-css/-/gulp-minify-css-1.2.4.tgz" - }, - "gulp-postcss": { - "version": "6.1.0", - "from": "gulp-postcss@>=6.0.1 <7.0.0", - "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-6.1.0.tgz" - }, - "gulp-rename": { - "version": "1.2.2", - "from": "gulp-rename@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz" - }, - "gulp-replace": { - "version": "0.5.4", - "from": "gulp-replace@>=0.5.4 <0.6.0", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.5.4.tgz" - }, - "gulp-sass": { - "version": "2.2.0", - "from": "gulp-sass@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-2.2.0.tgz" - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "from": "gulp-sourcemaps@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "from": "strip-bom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - }, - "vinyl": { - "version": "1.1.1", - "from": "vinyl@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.1.1.tgz" - } - } - }, - "gulp-uglify": { - "version": "1.5.3", - "from": "gulp-uglify@>=1.5.3 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.3.tgz" - }, - "gulp-util": { - "version": "3.0.7", - "from": "gulp-util@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "object-assign": { - "version": "3.0.0", - "from": "object-assign@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "gulplog": { - "version": "1.0.0", - "from": "gulplog@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz" - }, - "har-validator": { - "version": "2.0.6", - "from": "har-validator@>=2.0.2 <2.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "has": { - "version": "1.0.1", - "from": "has@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "has-ansi@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" - }, - "has-binary": { - "version": "0.1.6", - "from": "has-binary@0.1.6", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" - }, - "has-binary-data": { - "version": "0.1.3", - "from": "has-binary-data@0.1.3", - "resolved": "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.3.tgz" - }, - "has-cors": { - "version": "1.0.3", - "from": "has-cors@1.0.3", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz" - }, - "has-flag": { - "version": "1.0.0", - "from": "has-flag@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - }, - "has-gulplog": { - "version": "0.1.0", - "from": "has-gulplog@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz" - }, - "has-own": { - "version": "1.0.0", - "from": "has-own@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has-own/-/has-own-1.0.0.tgz" - }, - "has-unicode": { - "version": "2.0.0", - "from": "has-unicode@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.0.tgz" - }, - "hash.js": { - "version": "1.0.3", - "from": "hash.js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "htmlescape": { - "version": "1.1.0", - "from": "htmlescape@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.0.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "http-errors@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz" - }, - "http-proxy": { - "version": "1.13.2", - "from": "http-proxy@>=1.9.0 <2.0.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.13.2.tgz" - }, - "http-signature": { - "version": "0.11.0", - "from": "http-signature@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz" - }, - "https-browserify": { - "version": "0.0.1", - "from": "https-browserify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz" - }, - "ieee754": { - "version": "1.1.6", - "from": "ieee754@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" - }, - "immutable": { - "version": "3.7.6", - "from": "immutable@>=3.7.4 <4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" - }, - "indent-string": { - "version": "1.2.2", - "from": "indent-string@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz" - }, - "indexes-of": { - "version": "1.0.1", - "from": "indexes-of@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - }, - "indexof": { - "version": "0.0.1", - "from": "indexof@0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - }, - "inflight": { - "version": "1.0.4", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "ini@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "inline-source-map": { - "version": "0.6.1", - "from": "inline-source-map@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.1.tgz" - }, - "insert-module-globals": { - "version": "7.0.1", - "from": "insert-module-globals@>=7.0.0 <8.0.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz" - }, - "interpret": { - "version": "1.0.0", - "from": "interpret@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.0.tgz" - }, - "invert-kv": { - "version": "1.0.0", - "from": "invert-kv@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - }, - "is-absolute": { - "version": "0.1.7", - "from": "is-absolute@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz" - }, - "is-absolute-url": { - "version": "2.0.0", - "from": "is-absolute-url@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.0.0.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "is-binary-path@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - }, - "is-buffer": { - "version": "1.1.3", - "from": "is-buffer@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.3.tgz" - }, - "is-dotfile": { - "version": "1.0.2", - "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz" - }, - "is-equal-shallow": { - "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-extendable": { - "version": "0.1.1", - "from": "is-extendable@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "is-finite": { - "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "is-my-json-valid@>=2.12.4 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz" - }, - "is-number": { - "version": "2.1.0", - "from": "is-number@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - }, - "is-path-cwd": { - "version": "1.0.0", - "from": "is-path-cwd@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "from": "is-path-in-cwd@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz" - }, - "is-path-inside": { - "version": "1.0.0", - "from": "is-path-inside@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" - }, - "is-plain-obj": { - "version": "1.1.0", - "from": "is-plain-obj@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "is-relative": { - "version": "0.1.3", - "from": "is-relative@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz" - }, - "is-svg": { - "version": "1.1.1", - "from": "is-svg@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-1.1.1.tgz" - }, - "is-utf8": { - "version": "0.2.1", - "from": "is-utf8@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "isexe": { - "version": "1.1.2", - "from": "isexe@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" - }, - "isobject": { - "version": "2.0.0", - "from": "isobject@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "istextorbinary": { - "version": "1.0.2", - "from": "istextorbinary@1.0.2", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz" - }, - "js-base64": { - "version": "2.1.9", - "from": "js-base64@>=2.1.9 <3.0.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz" - }, - "js-yaml": { - "version": "3.5.4", - "from": "js-yaml@>=3.5.3 <3.6.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.4.tgz" - }, - "json-stable-stringify": { - "version": "0.0.1", - "from": "json-stable-stringify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.1 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "json3": { - "version": "3.2.6", - "from": "json3@3.2.6", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz" - }, - "jsonfile": { - "version": "2.2.3", - "from": "jsonfile@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.3.tgz" - }, - "jsonify": { - "version": "0.0.0", - "from": "jsonify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - }, - "jsonparse": { - "version": "1.2.0", - "from": "jsonparse@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "JSONStream": { - "version": "1.1.1", - "from": "JSONStream@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.1.1.tgz" - }, - "kind-of": { - "version": "3.0.2", - "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.2.tgz" - }, - "klaw": { - "version": "1.1.3", - "from": "klaw@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.1.3.tgz" - }, - "labeled-stream-splicer": { - "version": "2.0.0", - "from": "labeled-stream-splicer@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz" - }, - "lazy-cache": { - "version": "0.2.7", - "from": "lazy-cache@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" - }, - "lcid": { - "version": "1.0.0", - "from": "lcid@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - }, - "lexical-scope": { - "version": "1.2.0", - "from": "lexical-scope@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz" - }, - "liftoff": { - "version": "2.2.0", - "from": "liftoff@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.0.tgz", - "dependencies": { - "extend": { - "version": "2.0.1", - "from": "extend@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz" - } - } - }, - "limiter": { - "version": "1.1.0", - "from": "limiter@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.0.tgz" - }, - "localtunnel": { - "version": "1.8.1", - "from": "localtunnel@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.8.1.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.9.3 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "lodash._arraycopy": { - "version": "3.0.0", - "from": "lodash._arraycopy@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz" - }, - "lodash._arrayeach": { - "version": "3.0.0", - "from": "lodash._arrayeach@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz" - }, - "lodash._basecopy": { - "version": "3.0.1", - "from": "lodash._basecopy@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" - }, - "lodash._basefor": { - "version": "3.0.3", - "from": "lodash._basefor@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz" - }, - "lodash._baseindexof": { - "version": "3.1.0", - "from": "lodash._baseindexof@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz" - }, - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._basevalues": { - "version": "3.0.0", - "from": "lodash._basevalues@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz" - }, - "lodash._bindcallback": { - "version": "3.0.1", - "from": "lodash._bindcallback@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz" - }, - "lodash._createassigner": { - "version": "3.1.1", - "from": "lodash._createassigner@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz" - }, - "lodash._getnative": { - "version": "3.9.1", - "from": "lodash._getnative@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - }, - "lodash._reescape": { - "version": "3.0.0", - "from": "lodash._reescape@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz" - }, - "lodash._reevaluate": { - "version": "3.0.0", - "from": "lodash._reevaluate@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "from": "lodash._reinterpolate@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - }, - "lodash._root": { - "version": "3.0.1", - "from": "lodash._root@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" - }, - "lodash.escape": { - "version": "3.2.0", - "from": "lodash.escape@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" - }, - "lodash.includes": { - "version": "3.1.3", - "from": "lodash.includes@>=3.1.3 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-3.1.3.tgz" - }, - "lodash.isarguments": { - "version": "3.0.8", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz" - }, - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - }, - "lodash.isplainobject": { - "version": "3.2.0", - "from": "lodash.isplainobject@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz" - }, - "lodash.isstring": { - "version": "3.0.1", - "from": "lodash.isstring@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-3.0.1.tgz" - }, - "lodash.istypedarray": { - "version": "3.0.5", - "from": "lodash.istypedarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.5.tgz" - }, - "lodash.keys": { - "version": "3.1.2", - "from": "lodash.keys@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" - }, - "lodash.keysin": { - "version": "3.0.8", - "from": "lodash.keysin@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz" - }, - "lodash.memoize": { - "version": "3.0.4", - "from": "lodash.memoize@>=3.0.3 <3.1.0", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" - }, - "lodash.merge": { - "version": "3.3.2", - "from": "lodash.merge@>=3.3.1 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-3.3.2.tgz" - }, - "lodash.pad": { - "version": "4.1.0", - "from": "lodash.pad@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.1.0.tgz" - }, - "lodash.padend": { - "version": "4.2.0", - "from": "lodash.padend@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.2.0.tgz" - }, - "lodash.padstart": { - "version": "4.2.0", - "from": "lodash.padstart@>=4.1.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.2.0.tgz" - }, - "lodash.repeat": { - "version": "4.0.0", - "from": "lodash.repeat@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.0.0.tgz" - }, - "lodash.restparam": { - "version": "3.6.1", - "from": "lodash.restparam@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" - }, - "lodash.template": { - "version": "3.6.2", - "from": "lodash.template@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz" - }, - "lodash.templatesettings": { - "version": "3.1.1", - "from": "lodash.templatesettings@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz" - }, - "lodash.toplainobject": { - "version": "3.0.0", - "from": "lodash.toplainobject@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz" - }, - "lodash.tostring": { - "version": "4.1.2", - "from": "lodash.tostring@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.2.tgz" - }, - "longest": { - "version": "1.0.1", - "from": "longest@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" - }, - "lru-cache": { - "version": "4.0.0", - "from": "lru-cache@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz" - }, - "map-obj": { - "version": "1.0.1", - "from": "map-obj@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "marked": { - "version": "0.3.5", - "from": "marked@>=0.3.5 <0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" - }, - "mdcss": { - "version": "1.5.1", - "from": "mdcss@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/mdcss/-/mdcss-1.5.1.tgz" - }, - "mdcss-theme-github": { - "version": "2.2.0", - "from": "mdcss-theme-github@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/mdcss-theme-github/-/mdcss-theme-github-2.2.0.tgz" - }, - "meow": { - "version": "3.3.0", - "from": "meow@3.3.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.3.0.tgz", - "dependencies": { - "object-assign": { - "version": "3.0.0", - "from": "object-assign@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - } - } - }, - "micromatch": { - "version": "2.3.5", - "from": "micromatch@2.3.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.5.tgz" - }, - "miller-rabin": { - "version": "4.0.0", - "from": "miller-rabin@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz" - }, - "mime": { - "version": "1.2.4", - "from": "mime@1.2.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.4.tgz" - }, - "mime-db": { - "version": "1.22.0", - "from": "mime-db@>=1.22.0 <1.23.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz" - }, - "mime-types": { - "version": "2.1.10", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.10.tgz" - }, - "minimalistic-assert": { - "version": "1.0.0", - "from": "minimalistic-assert@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "minimatch@>=2.0.10 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "mkdirp@0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - }, - "module-deps": { - "version": "4.0.5", - "from": "module-deps@>=4.0.2 <5.0.0", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.0.5.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "multipipe": { - "version": "0.1.2", - "from": "multipipe@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "from": "duplexer2@0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.9 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" - } - } - }, - "nan": { - "version": "2.2.0", - "from": "nan@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.2.0.tgz" - }, - "negotiator": { - "version": "0.5.3", - "from": "negotiator@0.5.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" - }, - "new-from": { - "version": "0.0.3", - "from": "new-from@0.0.3", - "resolved": "https://registry.npmjs.org/new-from/-/new-from-0.0.3.tgz", - "dependencies": { - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.8 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz" - } - } - }, - "node-gyp": { - "version": "3.3.1", - "from": "node-gyp@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.3.1.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "glob@>=3.0.0 <4.0.0||>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "dependencies": { - "minimatch": { - "version": "2.0.10", - "from": "minimatch@>=2.0.1 <3.0.0" - } - } - }, - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "minimatch": { - "version": "1.0.0", - "from": "minimatch@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - } - } - }, - "node-sass": { - "version": "3.4.2", - "from": "node-sass@>=3.4.2 <4.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.4.2.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "ansi-styles": { - "version": "2.2.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.0.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" - }, - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.14 <6.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "node-sass-utils": { - "version": "1.1.2", - "from": "node-sass-utils@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/node-sass-utils/-/node-sass-utils-1.1.2.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.3 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "nopt": { - "version": "3.0.6", - "from": "nopt@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - }, - "normalize-path": { - "version": "2.0.1", - "from": "normalize-path@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz" - }, - "normalize-range": { - "version": "0.1.2", - "from": "normalize-range@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - }, - "normalize-scss": { - "version": "4.0.3", - "from": "normalize-scss@>=4.0.3 <5.0.0", - "resolved": "https://registry.npmjs.org/normalize-scss/-/normalize-scss-4.0.3.tgz" - }, - "normalize-url": { - "version": "1.4.1", - "from": "normalize-url@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.4.1.tgz", - "dependencies": { - "query-string": { - "version": "3.0.1", - "from": "query-string@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.1.tgz" - } - } - }, - "npmconf": { - "version": "2.1.2", - "from": "npmconf@>=2.1.2 <3.0.0", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "semver": { - "version": "4.3.6", - "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" - } - } - }, - "npmlog": { - "version": "2.0.2", - "from": "npmlog@>=0.0.0 <1.0.0||>=1.0.0 <2.0.0||>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.2.tgz" - }, - "num2fraction": { - "version": "1.2.2", - "from": "num2fraction@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - }, - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - }, - "oauth-sign": { - "version": "0.8.1", - "from": "oauth-sign@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz" - }, - "object-assign": { - "version": "4.0.1", - "from": "object-assign@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz" - }, - "object-component": { - "version": "0.0.3", - "from": "object-component@0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz" - }, - "object-keys": { - "version": "1.0.1", - "from": "object-keys@1.0.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.1.tgz" - }, - "object-path": { - "version": "0.9.2", - "from": "object-path@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz" - }, - "object.omit": { - "version": "2.0.0", - "from": "object.omit@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - }, - "once": { - "version": "1.3.3", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "openurl": { - "version": "1.1.0", - "from": "openurl@1.1.0", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.0.tgz" - }, - "opn": { - "version": "3.0.3", - "from": "opn@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz" - }, - "opt-merger": { - "version": "1.1.1", - "from": "opt-merger@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/opt-merger/-/opt-merger-1.1.1.tgz" - }, - "options": { - "version": "0.0.6", - "from": "options@>=0.0.5", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" - }, - "orchestrator": { - "version": "0.3.7", - "from": "orchestrator@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz" - }, - "ordered-read-streams": { - "version": "0.1.0", - "from": "ordered-read-streams@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz" - }, - "os-browserify": { - "version": "0.1.2", - "from": "os-browserify@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "os-homedir": { - "version": "1.0.1", - "from": "os-homedir@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - }, - "os-locale": { - "version": "1.4.0", - "from": "os-locale@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" - }, - "os-shim": { - "version": "0.1.3", - "from": "os-shim@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" - }, - "os-tmpdir": { - "version": "1.0.1", - "from": "os-tmpdir@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - }, - "osenv": { - "version": "0.1.3", - "from": "osenv@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz" - }, - "pako": { - "version": "0.2.8", - "from": "pako@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" - }, - "parents": { - "version": "1.0.1", - "from": "parents@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz" - }, - "parse-asn1": { - "version": "5.0.0", - "from": "parse-asn1@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz" - }, - "parse-glob": { - "version": "3.0.4", - "from": "parse-glob@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" - }, - "parsejson": { - "version": "0.0.1", - "from": "parsejson@0.0.1", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz" - }, - "parseqs": { - "version": "0.0.2", - "from": "parseqs@0.0.2", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz" - }, - "parseuri": { - "version": "0.0.2", - "from": "parseuri@0.0.2", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "parseurl@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "path-array": { - "version": "1.0.1", - "from": "path-array@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz" - }, - "path-browserify": { - "version": "0.0.0", - "from": "path-browserify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "path-is-inside": { - "version": "1.0.1", - "from": "path-is-inside@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz" - }, - "path-platform": { - "version": "0.11.15", - "from": "path-platform@>=0.11.15 <0.12.0", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" - }, - "pbkdf2": { - "version": "3.0.4", - "from": "pbkdf2@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.4.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "pify@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.0", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz" - }, - "portscanner": { - "version": "1.0.0", - "from": "portscanner@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.0.0.tgz", - "dependencies": { - "async": { - "version": "0.1.15", - "from": "async@0.1.15", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.15.tgz" - } - } - }, - "postcss": { - "version": "5.0.19", - "from": "postcss@>=5.0.4 <6.0.0", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.19.tgz", - "dependencies": { - "source-map": { - "version": "0.5.3", - "from": "source-map@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" - }, - "supports-color": { - "version": "3.1.2", - "from": "supports-color@>=3.1.2 <4.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" - } - } - }, - "postcss-calc": { - "version": "5.2.0", - "from": "postcss-calc@>=5.2.0 <6.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.2.0.tgz" - }, - "postcss-colormin": { - "version": "2.2.0", - "from": "postcss-colormin@>=2.1.8 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.0.tgz" - }, - "postcss-convert-values": { - "version": "2.3.4", - "from": "postcss-convert-values@>=2.3.4 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.3.4.tgz" - }, - "postcss-discard-comments": { - "version": "2.0.4", - "from": "postcss-discard-comments@>=2.0.4 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz" - }, - "postcss-discard-duplicates": { - "version": "2.0.1", - "from": "postcss-discard-duplicates@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.1.tgz" - }, - "postcss-discard-empty": { - "version": "2.0.1", - "from": "postcss-discard-empty@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.0.1.tgz" - }, - "postcss-discard-unused": { - "version": "2.2.1", - "from": "postcss-discard-unused@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.1.tgz" - }, - "postcss-filter-plugins": { - "version": "2.0.0", - "from": "postcss-filter-plugins@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.0.tgz" - }, - "postcss-merge-idents": { - "version": "2.1.5", - "from": "postcss-merge-idents@>=2.1.5 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.5.tgz" - }, - "postcss-merge-longhand": { - "version": "2.0.1", - "from": "postcss-merge-longhand@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz" - }, - "postcss-merge-rules": { - "version": "2.0.6", - "from": "postcss-merge-rules@>=2.0.3 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.0.6.tgz" - }, - "postcss-message-helpers": { - "version": "2.0.0", - "from": "postcss-message-helpers@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" - }, - "postcss-minify-font-values": { - "version": "1.0.3", - "from": "postcss-minify-font-values@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.3.tgz" - }, - "postcss-minify-gradients": { - "version": "1.0.1", - "from": "postcss-minify-gradients@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.1.tgz" - }, - "postcss-minify-params": { - "version": "1.0.4", - "from": "postcss-minify-params@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.0.4.tgz" - }, - "postcss-minify-selectors": { - "version": "2.0.4", - "from": "postcss-minify-selectors@>=2.0.4 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.0.4.tgz" - }, - "postcss-normalize-charset": { - "version": "1.1.0", - "from": "postcss-normalize-charset@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.0.tgz" - }, - "postcss-normalize-url": { - "version": "3.0.7", - "from": "postcss-normalize-url@>=3.0.7 <4.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.7.tgz" - }, - "postcss-ordered-values": { - "version": "2.1.0", - "from": "postcss-ordered-values@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.1.0.tgz" - }, - "postcss-reduce-idents": { - "version": "2.3.0", - "from": "postcss-reduce-idents@>=2.2.2 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.3.0.tgz" - }, - "postcss-reduce-transforms": { - "version": "1.0.3", - "from": "postcss-reduce-transforms@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.3.tgz" - }, - "postcss-selector-parser": { - "version": "1.3.3", - "from": "postcss-selector-parser@>=1.3.1 <2.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz" - }, - "postcss-svgo": { - "version": "2.1.2", - "from": "postcss-svgo@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.2.tgz" - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "from": "postcss-unique-selectors@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz" - }, - "postcss-value-parser": { - "version": "3.3.0", - "from": "postcss-value-parser@>=3.2.3 <4.0.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" - }, - "postcss-zindex": { - "version": "2.0.1", - "from": "postcss-zindex@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.0.1.tgz" - }, - "prepend-http": { - "version": "1.0.3", - "from": "prepend-http@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.3.tgz" - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "pretty-hrtime": { - "version": "1.0.2", - "from": "pretty-hrtime@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz" - }, - "process": { - "version": "0.11.2", - "from": "process@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" - }, - "process-nextick-args": { - "version": "1.0.6", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz" - }, - "proto-list": { - "version": "1.2.4", - "from": "proto-list@>=1.2.1 <1.3.0", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - }, - "pseudomap": { - "version": "1.0.2", - "from": "pseudomap@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - }, - "public-encrypt": { - "version": "4.0.0", - "from": "public-encrypt@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz" - }, - "punycode": { - "version": "1.4.0", - "from": "punycode@>=1.3.2 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.0.tgz" - }, - "q": { - "version": "1.4.1", - "from": "q@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" - }, - "qs": { - "version": "0.4.2", - "from": "qs@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.4.2.tgz" - }, - "query-string": { - "version": "2.4.2", - "from": "query-string@>=2.4.0 <3.0.0", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-2.4.2.tgz" - }, - "querystring": { - "version": "0.2.0", - "from": "querystring@0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "querystring-es3@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "randomatic": { - "version": "1.1.5", - "from": "randomatic@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz" - }, - "randombytes": { - "version": "2.0.3", - "from": "randombytes@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz" - }, - "range-parser": { - "version": "1.0.3", - "from": "range-parser@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" - }, - "read-only-stream": { - "version": "2.0.0", - "from": "read-only-stream@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz" - }, - "readable-stream": { - "version": "2.0.5", - "from": "readable-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.5.tgz" - }, - "readdirp": { - "version": "2.0.0", - "from": "readdirp@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz" - }, - "rechoir": { - "version": "0.6.2", - "from": "rechoir@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - }, - "reduce-css-calc": { - "version": "1.2.1", - "from": "reduce-css-calc@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.2.1.tgz", - "dependencies": { - "balanced-match": { - "version": "0.1.0", - "from": "balanced-match@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" - } - } - }, - "reduce-function-call": { - "version": "1.0.1", - "from": "reduce-function-call@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", - "dependencies": { - "balanced-match": { - "version": "0.1.0", - "from": "balanced-match@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.2", - "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - }, - "repeat-string": { - "version": "1.5.4", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" - }, - "repeating": { - "version": "1.1.3", - "from": "repeating@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz" - }, - "replace-ext": { - "version": "0.0.1", - "from": "replace-ext@0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" - }, - "replacestream": { - "version": "4.0.0", - "from": "replacestream@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.0.tgz", - "dependencies": { - "object-assign": { - "version": "3.0.0", - "from": "object-assign@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - } - } - }, - "request": { - "version": "2.65.0", - "from": "request@2.65.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.65.0.tgz", - "dependencies": { - "qs": { - "version": "5.2.0", - "from": "qs@>=5.2.0 <5.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz" - } - } - }, - "requires-port": { - "version": "1.0.0", - "from": "requires-port@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - }, - "resolve": { - "version": "1.1.7", - "from": "resolve@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - }, - "resp-modifier": { - "version": "5.0.2", - "from": "resp-modifier@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-5.0.2.tgz" - }, - "right-align": { - "version": "0.1.3", - "from": "right-align@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" - }, - "rimraf": { - "version": "2.5.2", - "from": "rimraf@>=2.2.8 <3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz" - }, - "ripemd160": { - "version": "1.0.1", - "from": "ripemd160@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz" - }, - "sass-graph": { - "version": "2.1.1", - "from": "sass-graph@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.1.1.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "glob@>=6.0.4 <7.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" - }, - "lodash": { - "version": "4.6.1", - "from": "lodash@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.6.1.tgz" - } - } - }, - "sax": { - "version": "1.1.6", - "from": "sax@>=1.1.6 <1.2.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz" - }, - "semver": { - "version": "5.1.0", - "from": "semver@>=5.0.3 <6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz" - }, - "send": { - "version": "0.13.1", - "from": "send@0.13.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz", - "dependencies": { - "mime": { - "version": "1.3.4", - "from": "mime@1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - } - } - }, - "sequencify": { - "version": "0.0.7", - "from": "sequencify@>=0.0.7 <0.1.0", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz" - }, - "serve-index": { - "version": "1.7.3", - "from": "serve-index@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz" - }, - "serve-static": { - "version": "1.10.2", - "from": "serve-static@>=1.10.0 <2.0.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.2.tgz" - }, - "sha.js": { - "version": "2.4.5", - "from": "sha.js@>=2.3.6 <3.0.0", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" - }, - "shasum": { - "version": "1.0.2", - "from": "shasum@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz" - }, - "shell-quote": { - "version": "1.4.3", - "from": "shell-quote@>=1.4.3 <2.0.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.4.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - }, - "socket.io": { - "version": "1.3.7", - "from": "socket.io@1.3.7", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.3.7.tgz", - "dependencies": { - "debug": { - "version": "2.1.0", - "from": "debug@2.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.0.tgz" - }, - "ms": { - "version": "0.6.2", - "from": "ms@0.6.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - } - } - }, - "socket.io-adapter": { - "version": "0.3.1", - "from": "socket.io-adapter@0.3.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.3.1.tgz", - "dependencies": { - "debug": { - "version": "1.0.2", - "from": "debug@1.0.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.2.tgz" - }, - "ms": { - "version": "0.6.2", - "from": "ms@0.6.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - }, - "socket.io-parser": { - "version": "2.2.2", - "from": "socket.io-parser@2.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", - "dependencies": { - "debug": { - "version": "0.7.4", - "from": "debug@0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - } - } - } - } - }, - "socket.io-client": { - "version": "1.3.7", - "from": "socket.io-client@1.3.7", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.3.7.tgz", - "dependencies": { - "debug": { - "version": "0.7.4", - "from": "debug@0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - } - } - }, - "socket.io-parser": { - "version": "2.2.4", - "from": "socket.io-parser@2.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.4.tgz", - "dependencies": { - "debug": { - "version": "0.7.4", - "from": "debug@0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - } - } - }, - "sort-keys": { - "version": "1.1.1", - "from": "sort-keys@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.1.tgz" - }, - "source-map": { - "version": "0.4.2", - "from": "source-map@0.4.2", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz" - }, - "sparkles": { - "version": "1.0.0", - "from": "sparkles@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" - }, - "spawn-sync": { - "version": "1.0.15", - "from": "spawn-sync@>=1.0.15 <2.0.0", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz" - }, - "sprintf-js": { - "version": "1.0.3", - "from": "sprintf-js@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "statuses@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - }, - "stream-browserify": { - "version": "2.0.1", - "from": "stream-browserify@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz" - }, - "stream-combiner2": { - "version": "1.1.1", - "from": "stream-combiner2@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" - }, - "stream-consume": { - "version": "0.1.0", - "from": "stream-consume@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" - }, - "stream-http": { - "version": "2.2.0", - "from": "stream-http@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.2.0.tgz" - }, - "stream-splicer": { - "version": "2.0.0", - "from": "stream-splicer@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz" - }, - "stream-throttle": { - "version": "0.1.3", - "from": "stream-throttle@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz" - }, - "strict-uri-encode": { - "version": "1.1.0", - "from": "strict-uri-encode@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "string-width@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - } - } - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-ansi": { - "version": "0.3.0", - "from": "strip-ansi@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" - }, - "strip-bom": { - "version": "1.0.0", - "from": "strip-bom@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz" - }, - "subarg": { - "version": "1.0.0", - "from": "subarg@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" - }, - "support-for": { - "version": "1.0.3", - "from": "support-for@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/support-for/-/support-for-1.0.3.tgz" - }, - "supports-color": { - "version": "0.2.0", - "from": "supports-color@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - }, - "svgo": { - "version": "0.6.2", - "from": "svgo@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.6.2.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - } - } - }, - "syntax-error": { - "version": "1.1.5", - "from": "syntax-error@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.5.tgz", - "dependencies": { - "acorn": { - "version": "2.7.0", - "from": "acorn@>=2.7.0 <3.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz" - } - } - }, - "tar": { - "version": "2.2.1", - "from": "tar@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz" - }, - "textextensions": { - "version": "1.0.1", - "from": "textextensions@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-1.0.1.tgz" - }, - "tfunk": { - "version": "3.0.1", - "from": "tfunk@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.0.1.tgz" - }, - "through": { - "version": "2.3.8", - "from": "through@>=2.2.7 <3.0.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "through2": { - "version": "2.0.1", - "from": "through2@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz" - }, - "tildify": { - "version": "1.1.2", - "from": "tildify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.1.2.tgz" - }, - "time-stamp": { - "version": "1.0.0", - "from": "time-stamp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.0.tgz" - }, - "timers-browserify": { - "version": "1.4.2", - "from": "timers-browserify@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz" - }, - "tmp": { - "version": "0.0.28", - "from": "tmp@0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz" - }, - "to-array": { - "version": "0.1.3", - "from": "to-array@0.1.3", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz" - }, - "to-arraybuffer": { - "version": "1.0.1", - "from": "to-arraybuffer@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - }, - "tough-cookie": { - "version": "2.2.2", - "from": "tough-cookie@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "tty-browserify": { - "version": "0.0.0", - "from": "tty-browserify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - }, - "tunnel-agent": { - "version": "0.4.2", - "from": "tunnel-agent@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz" - }, - "typedarray": { - "version": "0.0.6", - "from": "typedarray@>=0.0.5 <0.1.0", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "ua-parser-js": { - "version": "0.7.10", - "from": "ua-parser-js@>=0.7.9 <0.8.0", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz" - }, - "ucfirst": { - "version": "1.0.0", - "from": "ucfirst@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ucfirst/-/ucfirst-1.0.0.tgz" - }, - "uglify-js": { - "version": "2.6.2", - "from": "uglify-js@2.6.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "cliui": { - "version": "2.1.0", - "from": "cliui@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" - }, - "source-map": { - "version": "0.5.3", - "from": "source-map@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "window-size@0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "yargs": { - "version": "3.10.0", - "from": "yargs@>=3.10.0 <3.11.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" - } - } - }, - "uglify-save-license": { - "version": "0.4.1", - "from": "uglify-save-license@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz" - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "uid-number": { - "version": "0.0.5", - "from": "uid-number@0.0.5", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz" - }, - "ultron": { - "version": "1.0.2", - "from": "ultron@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" - }, - "umd": { - "version": "3.0.1", - "from": "umd@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz" - }, - "underscore": { - "version": "1.7.0", - "from": "underscore@>=1.7.0 <1.8.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - }, - "uniq": { - "version": "1.0.1", - "from": "uniq@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - }, - "uniqid": { - "version": "1.0.0", - "from": "uniqid@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-1.0.0.tgz" - }, - "uniqs": { - "version": "2.0.0", - "from": "uniqs@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - }, - "unique-stream": { - "version": "1.0.0", - "from": "unique-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz" - }, - "unpipe": { - "version": "1.0.0", - "from": "unpipe@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - }, - "url": { - "version": "0.11.0", - "from": "url@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "dependencies": { - "punycode": { - "version": "1.3.2", - "from": "punycode@1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - } - } - }, - "user-home": { - "version": "1.1.1", - "from": "user-home@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - }, - "utf-8-validate": { - "version": "1.2.1", - "from": "utf-8-validate@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.2.1.tgz" - }, - "utf8": { - "version": "2.1.0", - "from": "utf8@2.1.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" - }, - "util": { - "version": "0.10.3", - "from": "util@>=0.10.1 <0.11.0", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "utils-merge@1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - }, - "v8flags": { - "version": "2.0.11", - "from": "v8flags@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz" - }, - "vinyl": { - "version": "0.5.3", - "from": "vinyl@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" - }, - "vinyl-buffer": { - "version": "1.0.0", - "from": "vinyl-buffer@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.0.tgz", - "dependencies": { - "bl": { - "version": "0.9.5", - "from": "bl@>=0.9.1 <0.10.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.26 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - } - } - }, - "vinyl-bufferstream": { - "version": "1.0.1", - "from": "vinyl-bufferstream@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-bufferstream/-/vinyl-bufferstream-1.0.1.tgz" - }, - "vinyl-fs": { - "version": "0.3.14", - "from": "vinyl-fs@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "clone@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "vinyl": { - "version": "0.4.6", - "from": "vinyl@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - } - } - }, - "vinyl-map": { - "version": "1.0.1", - "from": "vinyl-map@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-map/-/vinyl-map-1.0.1.tgz", - "dependencies": { - "bl": { - "version": "0.7.0", - "from": "bl@>=0.7.0 <0.8.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.7.0.tgz" - }, - "object-keys": { - "version": "0.4.0", - "from": "object-keys@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "through2": { - "version": "0.4.2", - "from": "through2@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz" - }, - "xtend": { - "version": "2.1.2", - "from": "xtend@>=2.1.1 <2.2.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" - } - } - }, - "vinyl-source-stream": { - "version": "1.1.0", - "from": "vinyl-source-stream@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "clone@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "vinyl": { - "version": "0.4.6", - "from": "vinyl@>=0.4.3 <0.5.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - } - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "from": "vinyl-sourcemaps-apply@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "dependencies": { - "source-map": { - "version": "0.5.3", - "from": "source-map@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "from": "vm-browserify@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz" - }, - "weinre": { - "version": "2.0.0-pre-I0Z7U9OV", - "from": "weinre@>=2.0.0-pre-I0Z7U9OV <3.0.0", - "resolved": "https://registry.npmjs.org/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz" - }, - "whet.extend": { - "version": "0.9.9", - "from": "whet.extend@>=0.9.9 <0.10.0", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz" - }, - "which": { - "version": "1.2.4", - "from": "which@>=1.2.4 <2.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz" - }, - "window-size": { - "version": "0.1.4", - "from": "window-size@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - }, - "wrap-ansi": { - "version": "1.0.0", - "from": "wrap-ansi@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-1.0.0.tgz" - }, - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - }, - "ws": { - "version": "0.8.0", - "from": "ws@0.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-0.8.0.tgz" - }, - "xmlhttprequest": { - "version": "1.5.0", - "from": "https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz", - "resolved": "https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "y18n": { - "version": "3.2.0", - "from": "y18n@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.0.tgz" - }, - "yallist": { - "version": "2.0.0", - "from": "yallist@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz" - }, - "yargs": { - "version": "3.29.0", - "from": "yargs@3.29.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz" - } - } -} diff --git a/template-project/package.json b/template-project/package.json deleted file mode 100644 index 85e9c7d..0000000 --- a/template-project/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "PROJECT-NAME-LOWER", - "description": "", - "version": "0.0.1", - "author": "", - "license": "GPL v2", - "dependencies": { - "avalanchesass_base_default": "^3.0.0", - "avalanchesass_function_breakpointmax": "^3.0.0", - "avalanchesass_function_map_get_deep": "^3.0.0", - "avalanchesass_mdcss_theme": "^1.0.0", - "browser-sync": "^2.11.1", - "browserify": "^13.0.0", - "del": "^2.2.0", - "eyeglass": "^0.8.3", - "gulp": "^3.9.0", - "gulp-autoprefixer": "^3.1.0", - "gulp-css-globbing": "^0.1.7", - "gulp-cssnano": "^2.0.1", - "gulp-minify-css": "^1.2.4", - "gulp-postcss": "^6.0.1", - "gulp-rename": "^1.2.2", - "gulp-replace": "^0.5.4", - "gulp-sass": "^2.1.0", - "gulp-sourcemaps": "^1.5.2", - "gulp-uglify": "^1.5.3", - "mdcss": "^1.3.0", - "normalize-scss": "^4.0.3", - "vinyl-buffer": "^1.0.0", - "vinyl-source-stream": "^1.1.0" - }, - "main": "gulpfile.js" -} diff --git a/template-project/scss/_variable.scss b/template-project/scss/_variable.scss deleted file mode 100644 index d259d41..0000000 --- a/template-project/scss/_variable.scss +++ /dev/null @@ -1,262 +0,0 @@ -@import 'avalanchesass_function_breakpointmax'; -@import 'avalanchesass_function_map_get_deep'; - -/*--- -title: Variable -name: variable ---- - -Basic system variables. -*/ -/*--- -title: Color scheme -name: variable_color_scheme -section: variable ---- - -It's mandatory to use color scheme variables -whenever you use colors in your styles. -Generator: [coolors.co](http://coolors.co/). -*/ -$cs: ( - a: #16193B, - b: #35478C, - c: #4E7AC7, - d: #7FB2F0, - e: #ADD5F7, -); - -$cs-contrast: ( - a: #fff, - b: #fff, - c: #fff, - d: #fff, - e: #fff, -); -/*--- -title: Basic -name: variable_color_scheme_basic -section: variable_color_scheme ---- - -```example:color -@color: #{map-get($cs, a)} @name: map-get($cs, a) -@color: #{map-get($cs, b)} @name: map-get($cs, b) -@color: #{map-get($cs, c)} @name: map-get($cs, c) -@color: #{map-get($cs, d)} @name: map-get($cs, d) -@color: #{map-get($cs, e)} @name: map-get($cs, e) -``` -```example:color -@color: #{map-get($cs-contrast, a)} @name: map-get($cs-contrast, a) -@color: #{map-get($cs-contrast, b)} @name: map-get($cs-contrast, b) -@color: #{map-get($cs-contrast, c)} @name: map-get($cs-contrast, c) -@color: #{map-get($cs-contrast, d)} @name: map-get($cs-contrast, d) -@color: #{map-get($cs-contrast, e)} @name: map-get($cs-contrast, e) -``` -*/ - -/** - * Alerts - */ -$cs-alerts: ( - positive: #468847, - neutral: #3A87AD, - cautious: #c09853, - negative: #b94a48, -); -/*--- -title: Alerts -name: variable_color_scheme_alerts -section: variable_color_scheme ---- - -```example:color -@color: #{map-get($cs-alerts, positive)} @name: map-get($cs-alerts, positive) -@color: #{map-get($cs-alerts, neutral)} @name: map-get($cs-alerts, neutral) -@color: #{map-get($cs-alerts, cautious)} @name: map-get($cs-alerts, cautious) -@color: #{map-get($cs-alerts, negative)} @name: map-get($cs-alerts, negative) -``` -*/ - -/** - * Grey - * - * 1. You must not use this directly in your styles! - */ -$-cs-grey-base: #efefef; // [1] -$cs-grey: ( - a: $-cs-grey-base, - b: darken($-cs-grey-base, 20%), - c: darken($-cs-grey-base, 40%), -); -/*--- -title: Grey -name: variable_color_scheme_grey -section: variable_color_scheme ---- - -```example:color -@color: #{map-get($cs-grey, a)} @name: map-get($cs-grey, a) -@color: #{map-get($cs-grey, b)} @name: map-get($cs-grey, b) -@color: #{map-get($cs-grey, c)} @name: map-get($cs-grey, c) -``` -*/ - - - -/*--- -title: Typography -name: variable_typography -section: variable ---- -*/ -/** - * 1. Must be in px, do not use in your styles. - * 2. You must not use this directly in your styles! - */ -$font-base-size: 16px; // [1][2] -$font-base-line-height: 24px; // [1][2] -$font-base-color: #222; - -/** - * Font sizes - */ -$font-sizes: ( - xs: 0.64em, - s: 0.8em, - m: 1em, - l: 1.25em, - xl: 1.563em, - xxl: 1.953em, - xxxl: 2.441em, -); -/*--- -title: Font sizes -name: variable_typography_font_sizes -section: variable_typography ---- - -
map-get($font-sizes, xs)
-
map-get($font-sizes, s)
-
map-get($font-sizes, m)
-
map-get($font-sizes, l)
-
map-get($font-sizes, xl)
-
map-get($font-sizes, xxl)
-
map-get($font-sizes, xxxl)
-*/ - -/*--- -title: Fonts -name: variable_typography_fonts -section: variable_typography ---- - -Font sizes and weights are defined globally to ensure a consistent look. -*/ -/** - * If you use webfonts set the font weight variables according to the font weights the font provides. - * E.g. you use a Google font like http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,700 - * In this case set the font weights to 200, 400 and 700. - * If you set a font weight in your css you must use this variables! - */ -$fonts: ( - a: ( - family: "'Helvetica Neue', sans-serif", - weights: ( - thin: 100, - extra-light: 200, - light: 300, - normal: 400, - medium: 500, - semi-bold: 600, - bold: 700, - extra-bold: 800, - ultra-bold: 900, - ), - ), - b: ( - family: "Futura, 'Trebuchet MS', sans-serif", - weights: ( - thin: 100, - extra-light: 200, - light: 300, - normal: 400, - medium: 500, - semi-bold: 600, - bold: 700, - extra-bold: 800, - ultra-bold: 900, - ), - ), -); - -@each $-font-data in $fonts { - $-font: nth($-font-data, 1); - /*--- - title: Font #{to-upper-case($-font)} - name: variable_typography_fonts_font_#{$-font} - section: variable_typography_fonts - --- - -

- **#{map-get-deep($fonts, $-font, family)}** - ABCDEFGHIJKLMNOPQRSTUVWXYZ - abcdefghijklmnopqrstuvwxyz - 0123456789!?#%&$@*{(/|\)}

- */ -} - - - -/** - * Breakpoints - * - * Infos about media queries: [Brad Frost - 7 Habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/) - */ -/** - * min Breakpoints - */ -$breakpoints: ( - s: 30em, - m: 45em, - l: 60em, - xl: 75em, -); - -/** - * max Breakpoints - * - * Use with care, min-width breakpoints should be preferred! - */ -$breakpoints-max: ( - s: breakpointmax(map-get($breakpoints, s)), - m: breakpointmax(map-get($breakpoints, m)), - l: breakpointmax(map-get($breakpoints, l)), - xl: breakpointmax(map-get($breakpoints, xl)), -); - - - -/** - * Spacing - */ -$spacing: ( - xs: 0.5em, - s: 1em, - m: 1.5em, - l: 2em, - xl: 3em, - xxl: 4em, - xxxl: 5em, -); - - - -/** - * Namespace - */ -$namespace: ( - utility: 'u-', - object: 'o-', - component: 'c-', -); diff --git a/template-project/scss/avalanche.scss b/template-project/scss/avalanche.scss deleted file mode 100644 index 7179a68..0000000 --- a/template-project/scss/avalanche.scss +++ /dev/null @@ -1,103 +0,0 @@ -/*--- -title: avalanche ---- - -avalanche is a modular front-end framework which can be extended with npm -packages. The goal is to provide a workflow to manage the complexity of big -front-end projects. -*/ -/*--- -title: Function ---- - -Custom SASS functions. -*/ -@import 'function/**/*.scss'; - - - -/** - * Variable - * - * If you want to **only** import the variables from a package import them here. - */ -@import 'variable'; -// Base -// e.g. @import 'avalanchesass_base_typography/variable'; -@import 'base/**/*variable.scss'; -// Object -// e.g. @import 'avalanchesass_object_grid/variable'; -@import 'object/**/*variable.scss'; -// Component -// e.g. @import 'avalanchesass_component_button/variable'; -@import 'component/**/*variable.scss'; -// Utility -// e.g. @import 'avalanchesass_utility_clearfix/variable'; -@import 'utility/**/*variable.scss'; - - - -/** - * Mixin - * - * If you want to **only** import the mixins from a package import them here. - */ -// Base -// e.g. @import 'avalanchesass_base_typography/mixin'; -// Object -// e.g. @import 'avalanchesass_object_grid/mixin'; -// Component -// e.g. @import 'avalanchesass_component_button/mixin'; -// Utility -// e.g. @import 'avalanchesass_utility_clearfix/mixin'; - - - -/*--- -title: Base ---- - -Base styles like typography and other global default styles -(mostly unclassed HTML elements). -*/ -@import 'normalize/import-now'; -// Import your dependencies here. -// e.g. @import 'avalanchesass_base_typography'; -@import 'avalanchesass_base_default'; -@import 'base/**/*.scss'; - - - -/*--- -title: Object ---- - -Non-cosmetic styles (e.g. the famous media object). -*/ -// Import your dependencies here. -// e.g. @import 'avalanchesass_object_grid'; -@import 'object/**/*.scss'; - - - -/*--- -title: Component ---- - -Concrete, implementation-specific piece of UI. -*/ -// Import your dependencies here. -// e.g. @import 'avalanchesass_component_button'; -@import 'component/**/*.scss'; - - - -/*--- -title: Utility ---- - -Utility classes that do very specific things (e.g. clearfix). -*/ -// Import your dependencies here. -// e.g. @import 'avalanchesass_utility_clearfix'; -@import 'utility/**/*.scss'; diff --git a/template-project/scss/base/README.md b/template-project/scss/base/README.md deleted file mode 100644 index 4250ec7..0000000 --- a/template-project/scss/base/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Place your basic styles in this directory. - -Base styles may only be applied to element selectors (except rare special cases). diff --git a/template-project/scss/component/README.md b/template-project/scss/component/README.md deleted file mode 100644 index 14f88d5..0000000 --- a/template-project/scss/component/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Place your component styles in this directory. - -Components are concrete, implementation-specific piece of UI. - -[Read more about components](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#component-namespaces-c-) diff --git a/template-project/scss/function/README.md b/template-project/scss/function/README.md deleted file mode 100644 index 72901b8..0000000 --- a/template-project/scss/function/README.md +++ /dev/null @@ -1 +0,0 @@ -Place your custom functions in this directory. diff --git a/template-project/scss/object/README.md b/template-project/scss/object/README.md deleted file mode 100644 index cc73c64..0000000 --- a/template-project/scss/object/README.md +++ /dev/null @@ -1,9 +0,0 @@ -Place your object styles in this directory. - -Objects are non-cosmetic styles. They might be used in an open-ended number of instances. - -- Objects are abstract. -- They can be used in any number of places across the project—places you might not have even seen. -- Avoid modifying their styles. - -[Read more about objects](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#object-namespaces-o-) diff --git a/template-project/scss/utility/README.md b/template-project/scss/utility/README.md deleted file mode 100644 index b2883fd..0000000 --- a/template-project/scss/utility/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Place your utility styles in this directory. - -Utility classes are very specific and often provide only one declaration. Utility classes should be used sparingly. They can be reused and are not tied to a specific piece of UI. - -[Read more about utilities](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#utility-namespaces-u-) diff --git a/template-project/style-guide/README.md b/template-project/style-guide/README.md deleted file mode 100644 index 9fab62d..0000000 --- a/template-project/style-guide/README.md +++ /dev/null @@ -1,11 +0,0 @@ -avalanche uses [mdcss](https://github.com/jonathantneal/mdcss) to automatically -generate a style guide from CSS comments in markdown syntax -([avalanche style guide DEMO](http://avalanche.oberlehner.net)). - -Please follow the [official mdcss documentation](https://github.com/jonathantneal/mdcss#writing-documentation) -on how to format comments in your SCSS code for the style guide. - -To generate the style guide run `gulp style_guide`. You can also run -`gulp watch:style_guide` instead of the default `gulp` task to start the build -process. This automatically generates the style guide on every change you make -to your code base. From 1fcb494e8106b66e71a10d1007a45d6c3e7309c4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 11:37:10 +0200 Subject: [PATCH 235/355] Update README, remove deprecated stuff, add .npmignore for package --- README.md | 5 +- index.js | 102 ------------------ packages/avalanchesass-object-grid/.npmignore | 1 + packages/avalanchesass-object-grid/README.md | 13 +-- 4 files changed, 11 insertions(+), 110 deletions(-) delete mode 100755 index.js create mode 100644 packages/avalanchesass-object-grid/.npmignore diff --git a/README.md b/README.md index 0710ebd..6c44e87 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,8 @@ files per package type. ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/index.js b/index.js deleted file mode 100755 index dd2e50d..0000000 --- a/index.js +++ /dev/null @@ -1,102 +0,0 @@ -#! /usr/bin/env node - -var commandLineArgs = require('command-line-args'); -var ncp = require('ncp').ncp; -var replace = require('replace'); - -var avalanchePath = __dirname; -var cli = commandLineArgs([ - { name: 'template', type: String }, - { name: 'type', type: String }, - { name: 'name', type: String }, - { name: 'path', type: String } -]); -var options = cli.parse(); -var type = options.type ? options.type : 'Component'; -var typeLower = type.toLowerCase(); -var name = options.name ? options.name : 'Avalanche Project'; -var nameLower = name.toLowerCase().replace(/ /g, '_'); -var path = options.path ? options.path : process.cwd(); - -var projectReplacements = [ - { - regex: 'PROJECT-NAME-LOWER', - replacement: nameLower - }, - { - regex: 'PROJECT-NAME', - replacement: name - } -]; -var packageReplacements = [ - { - regex: 'PACKAGE-NAME-LOWER', - replacement: nameLower - }, - { - regex: 'PACKAGE-NAME', - replacement: name - }, - { - regex: 'PACKAGE-TYPE-LOWER', - replacement: typeLower - }, - { - regex: 'PACKAGE-TYPE', - replacement: type - } -]; - -switch (options.template) { - case 'project': - var source = avalanchePath + '/template-project'; - var destination = path + '/' + nameLower; - ncp(source, destination, function (err) { - if (err) { - return console.error(err); - } - runReplacements(projectReplacements, destination); - console.log('Created a new project "' + name + '" in ' + destination + '.'); - }); - break; - - case 'package': - var source = avalanchePath + '/template-package'; - var destination = path + '/' + nameLower; - ncp(source, destination, function (err) { - if (err) { - return console.error(err); - } - runReplacements(packageReplacements, destination); - console.log('Created a new package "' + name + '" in ' + destination + '.'); - }); - break; - - case 'package-custom': - var source = avalanchePath + '/template-package/scss/_index.scss'; - var destination = path + '/_' + nameLower + '.scss'; - ncp(source, destination, function (err) { - if (err) { - return console.error(err); - } - runReplacements(packageReplacements, destination); - console.log('Created a new custom package "' + name + '" in ' + destination + '.'); - }); - break; - - default: - console.log('Invalid template type. Choose either "project", "package" or "package-custom".'); - break; -} - -function runReplacements(replacements, path) { - replacements.forEach(function (replaceDate) { - replace({ - regex: replaceDate.regex, - replacement: replaceDate.replacement, - paths: [path], - recursive: true, - silent: true - }); - }); -} diff --git a/packages/avalanchesass-object-grid/.npmignore b/packages/avalanchesass-object-grid/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/avalanchesass-object-grid/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 3d43a63..3ba5025 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -1,24 +1,25 @@ -# avalanchesass_object_grid +# avalanchesass-object-grid Fluid width, responsive grid system. ## Install ``` -npm install avalanchesass_object_grid --save +npm install avalanchesass-object-grid --save ``` ## Basic usage ```css /* Import the main file. */ -@import 'avalanchesass_object_grid'; +@import '~avalanchesass-object-grid'; /* Import just the mixin file. */ -@import 'avalanchesass_object_grid/mixin'; +@import '~avalanchesass-object-grid/mixin'; ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT From 3b07713aba37efd3c7c1b9bdb6ddcfbc6861ff0d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 14:48:26 +0200 Subject: [PATCH 236/355] Cleanup and 4.x.x ify the grid package code. Add backstop package testing --- .gitignore | 2 + backstop.json | 48 +++ package.json | 1 + .../backstop_data/html_report/README.md | 8 + .../backstop_data/html_report/bower.json | 15 + .../backstop_data/html_report/config.js | 85 +++++ .../html_report/css/revealer.css | 96 ++++++ .../backstop_data/html_report/css/styles.css | 66 ++++ .../backstop_data/html_report/index.html | 114 +++++++ .../backstop_data/html_report/js/compare.js | 137 ++++++++ .../backstop_data/html_report/js/revealer.js | 317 ++++++++++++++++++ .../avalanchesass-object-grid/package.json | 14 + .../scss/_index.scss | 252 +------------- .../scss/_mixin.scss | 60 +--- .../scss/_variable.scss | 54 +-- .../64003731_avalanchesass_0_document_0_s.png | Bin 0 -> 3045 bytes .../64003731_avalanchesass_0_document_1_m.png | Bin 0 -> 3719 bytes .../64003731_avalanchesass_0_document_2_l.png | Bin 0 -> 4607 bytes ...64003731_avalanchesass_0_document_3_xl.png | Bin 0 -> 5746 bytes .../avalanchesass-object-grid/test/body.html | 11 + .../avalanchesass-object-grid/test/test.scss | 1 + test/test.html.template | 14 + 22 files changed, 956 insertions(+), 339 deletions(-) create mode 100644 backstop.json create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/README.md create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/bower.json create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/config.js create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/index.html create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js create mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js create mode 100644 packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png create mode 100644 packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png create mode 100644 packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png create mode 100644 packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png create mode 100644 packages/avalanchesass-object-grid/test/body.html create mode 100644 packages/avalanchesass-object-grid/test/test.scss create mode 100644 test/test.html.template diff --git a/.gitignore b/.gitignore index f5307a8..c0e6a6b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,7 @@ nbproject Thumbs.db # Folders to ignore +bitmaps_test bower_components node_modules +tmp diff --git a/backstop.json b/backstop.json new file mode 100644 index 0000000..f8da6cc --- /dev/null +++ b/backstop.json @@ -0,0 +1,48 @@ +{ + "viewports": [ + { + "name": "s", + "width": 480, + "height": 270 + }, + { + "name": "m", + "width": 720, + "height": 405 + }, + { + "name": "l", + "width": 960, + "height": 540 + }, + { + "name": "xl", + "width": 1200, + "height": 675 + } + ], + "scenarios": [ + { + "label": "avalanchesass", + "url": "test/tmp/test.html", + "selectors": [ + "document" + ], + "readyEvent": null, + "delay": 500, + "misMatchThreshold" : 0.1 + } + ], + "paths": { + "bitmaps_reference": "test/backstopjs/bitmaps_reference", + "bitmaps_test": "test/backstopjs/bitmaps_test", + "compare_data": "test/backstopjs/bitmaps_test/compare.json", + "casper_scripts": "test/backstopjs/casper_scripts" + }, + "engine": "phantomjs", + "report": ["CLI", "browser"], + "cliExitOnFail": false, + "casperFlags": [], + "debug": false, + "port": 9999 +} diff --git a/package.json b/package.json index ad27936..f3fd78b 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "url": "https://github.com/avalanchesass/avalanchesass/issues" }, "devDependencies": { + "backstopjs": "^2.0.2", "lerna": "2.0.0-beta.29" } } diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/README.md b/packages/avalanchesass-object-grid/backstop_data/html_report/README.md new file mode 100644 index 0000000..c55f61c --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/README.md @@ -0,0 +1,8 @@ +./compare/* +==== + +`config.js` is generated by `$ backstop test`. + +`index.html` is opened by `$ backstop test` after screenshots are generated and the local http server is started. + +The HTTP server will auto-shutdown after a 15 minute timeout to save you the trouble of cleaning it up yourself. You can configure this in `./server.js` diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json b/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json new file mode 100644 index 0000000..12de128 --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json @@ -0,0 +1,15 @@ +{ + "name": "BackstopJS_compare", + "version": "0.0.0", + "main": "index.html", + "ignore": [ + "node_modules" + ], + "dependencies": { + "angular": "~1.4.8", + "bootstrap-css-only": "~3.3.6", + "angular-bootstrap": "~2.1.1", + "angular-clipboard": "~1.5.0" + }, + "devDependencies": {} +} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/config.js b/packages/avalanchesass-object-grid/backstop_data/html_report/config.js new file mode 100644 index 0000000..287f33b --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/config.js @@ -0,0 +1,85 @@ +report({ + "testSuite": "BackstopJS", + "tests": [ + { + "pair": { + "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png", + "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_0_s.png", + "selector": "document", + "fileName": "64003731_avalanchesass_0_document_0_s.png", + "label": "avalanchesass", + "misMatchThreshold": 0.1, + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00", + "analysisTime": 20 + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png", + "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_1_m.png", + "selector": "document", + "fileName": "64003731_avalanchesass_0_document_1_m.png", + "label": "avalanchesass", + "misMatchThreshold": 0.1, + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00", + "analysisTime": 48 + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png", + "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_2_l.png", + "selector": "document", + "fileName": "64003731_avalanchesass_0_document_2_l.png", + "label": "avalanchesass", + "misMatchThreshold": 0.1, + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00", + "analysisTime": 62 + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png", + "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_3_xl.png", + "selector": "document", + "fileName": "64003731_avalanchesass_0_document_3_xl.png", + "label": "avalanchesass", + "misMatchThreshold": 0.1, + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00", + "analysisTime": 91 + } + }, + "status": "pass" + } + ] +}); \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css b/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css new file mode 100644 index 0000000..e357933 --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css @@ -0,0 +1,96 @@ +img { + max-width: 100% +} + +.revealer__container { + position: relative; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.revealer__image { + display: block +} + +.revealer__top-image { + position: absolute; + left: 0; + top: 0; + width: 50%; + height: 100%; + overflow: hidden; + transform: translateZ(0) +} + +.revealer__top-image .revealer__image { + position: absolute; + left: 0; + top: 0; + display: block; + height: 100%; + width: auto; + max-width: none +} + +.revealer__handle { + width: 3px; + height: 102%; + background: #e74c3c; + /*border-radius: 50%;*/ + left: 50%; + top: -1%; + position: absolute; + display: block; + /*margin-left: -25px;*/ + /*margin-top: -25px;*/ + cursor: move; + /*background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1cHgiIGhlaWdodD0iOHB4IiB2aWV3Qm94PSIwIDAgMjUgOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8dGl0bGU+VW50aXRsZWQgNTwvdGl0bGU+CiAgICA8ZGVzY3JpcHRpb24+Q3JlYXRlZCB3aXRoIFNrZXRjaCAoaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoKTwvZGVzY3JpcHRpb24+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBza2V0Y2g6dHlwZT0iTVNQYWdlIj4KICAgICAgICA8ZyBpZD0ibWF4aW1pc2UiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAtMi4wMDAwMDApIiBmaWxsPSIjMzMzMzMzIj4KICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljg4NDU3MTksNC45MDk5MDg2MSBDMjUuMzczMzQyLDUuMzk4Njc4NzIgMjUuMzQ2MDYwNCw2LjIxNjEyMzg5IDI0LjgyNTY0ODQsNi43MzY1MzU4OSBMMjEuOTk3MzIyMyw5LjU2NDg2MjAxIEMyMS42MTY0NDExLDkuOTQ1NzQzMjYgMjEuMDU2NjY4MiwxMC4wNzQxOTY0IDIwLjU4MDg2MTMsOS44OTA2NDk4MiBDMjAuNDIzMTgyMSw5LjgyOTEzMzczIDIwLjI4NDcxMTksOS43Mzc4MDIzNiAyMC4xNzA2OTUsOS42MjM3ODU0NyBDMTkuOTQwODkzNiw5LjM5Mzk4Mzk3IDE5LjgxMDc5MDUsOS4wNzE1NTQ3OSAxOS44MjIwNDQ5LDguNzIyNjY4OTggTDE5Ljg2ODc3MTIsNy4yNzQxNTM1NSBMMTQuNzY3MDAxMiw3LjQzODcyNjc3IEMxNC4wNTI3OSw3LjQ2MTc2NTg1IDEzLjQ5NDE5NTYsNi45MDMxNzE0NCAxMy41MTcyMzQ2LDYuMTg4OTYwMTcgQzEzLjU0MDI3MzcsNS40NzQ3NDg5MSAxNC4xMzYxMDc3LDQuODc4OTE0ODcgMTQuODUwMzE5LDQuODU1ODc1OCBMMTkuOTUyMDg5LDQuNjkxMzAyNTcgTDE5Ljk5ODgxNTMsMy4yNDI3ODcxNCBDMjAuMDE1NjY3NCwyLjcyMDM3MTc0IDIwLjM0NTkzMzQsMi4yMzk4NTA5MSAyMC44MzQ2NDQ2LDIuMDIzMzY2MTIgQzIxLjMyMjQxMywxLjgwNzgyNDEgMjEuODc1OTQsMS45MDEyNzY3MSAyMi4yMzMwMTYyLDIuMjU4MzUyODggTDI0Ljg4NDU3MTksNC45MDk5MDg2MSBMMjQuODg0NTcxOSw0LjkwOTkwODYxIFogTTEwLjIzMjk5ODgsNC41NjEyNzMyMyBDMTAuOTQ3MjEsNC41MzgyMzQxNSAxMS41MDU4MDQ0LDUuMDk2ODI4NTYgMTEuNDgyNzY1NCw1LjgxMTAzOTgzIEMxMS40NTk3MjYzLDYuNTI1MjUxMDkgMTAuODYzODkyMyw3LjEyMTA4NTEzIDEwLjE0OTY4MSw3LjE0NDEyNDIgTDUuMDQ3OTEwOTksNy4zMDg2OTc0MyBMNS4wMDExODQ2OSw4Ljc1NzIxMjg2IEM0Ljk4NDMzMjU4LDkuMjc5NjI4MjYgNC42NTQ5NTA0Myw5Ljc2MTAzMjk0IDQuMTY1MzU1NCw5Ljk3NjYzMzg4IEMzLjY3NjcwMzE0LDEwLjE5MTI5MiAzLjEyNDA2LDEwLjA5ODcyMzMgMi43NjY5ODM4Myw5Ljc0MTY0NzEyIEwwLjExNTQyODA5Nyw3LjA5MDA5MTM5IEMtMC4zNzI0NTgxNTcsNi42MDIyMDUxMyAtMC4zNDcwMDMyMjIsNS43ODQ4MTg4OSAwLjE3NDM1MTU1OCw1LjI2MzQ2NDExIEwzLjAwMjY3NzY3LDIuNDM1MTM3OTkgQzMuMzgzNTU4OTIsMi4wNTQyNTY3NCAzLjk0NDI3NDU3LDEuOTI0ODYwODIgNC40MTkxMzg3NCwyLjEwOTM1MDE4IEM0LjU3NjgxNzkyLDIuMTcwODY2MjcgNC43MTUyODgwNiwyLjI2MjE5NzY0IDQuODI5MzA0OTUsMi4zNzYyMTQ1MyBDNS4wNTkxMDY0NSwyLjYwNjAxNjAzIDUuMTg5MjA5NDUsMi45Mjg0NDUyMSA1LjE3Nzk1NTA3LDMuMjc3MzMxMDIgTDUuMTMxMjI4NzYsNC43MjU4NDY0NSBMMTAuMjMyOTk4OCw0LjU2MTI3MzIzIEwxMC4yMzI5OTg4LDQuNTYxMjczMjMgWiIgaWQ9IlNoYXBlIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=);*/ + background-repeat: no-repeat; + background-position: center +} + +.revealer__handle:before { + content: ""; + position: absolute; + top: -16px; + left: -7px; + + background: #e74c3c; + width:16px; + height: 16px; + border-radius:2px; +} + +.revealer__handle:after { + content: ""; + position: absolute; + top: -13px; + left: -2px; + width: 6px; + height: 10px; + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} + +.revealer__handle--drag, +.revealer__handle--drag:before{ + background-color: #c0392b +} + +.revealer__label { + position: absolute; + bottom: 0; + padding: 1em +} + +.revealer__label--right { + right: 0 +} + +.revealer__label--left { + left: 0 +} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css b/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css new file mode 100644 index 0000000..563e502 --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css @@ -0,0 +1,66 @@ +body{font-family: Helvetica Neue,Helvetica,Arial,sans-serif; } +label span{display: block;} +td,th{vertical-align: top;padding: 8px;width: 25%;} +td img{width: 100%;} +table{width: 100%;border-collapse: collapse;margin-bottom: 50px;} +input{width: 55ex; display: none;} +th{text-align: left;background: #ddd;padding: 10px;white-space: nowrap;} + + +.flex-container {display: flex; margin-bottom: 10px;} +.flex-container > div { + flex: 1; + padding-left: 5px; + padding-right: 5px; + min-width: 1px; /* for Firefox */ +} +.flex-container > div img {max-width: 100%;} + +.flex-container .selector, +.flex-container .filename {background-color: #ddd;color:#444; padding: 5px 10px;} +.flex-container .filename {text-align: right; color: #888;} + +.flex-container.small {font-size:0.85em;} + +.reportTxt{white-space: pre-wrap;font-family: monospace; font-size: 11px;} + +.summaryList {padding: 0;list-style: none;width: auto;} +.summaryList td {width: auto; padding: 5px;} +.summaryList tr:nth-child(2n-1) {background-color: #f0f0f0;} +.summaryList .statusInds {width: 15ex;} + +.summaryBlock .fileName{font-style: italic;font-weight: 100;color: #999;} + +.statContainer {margin: 1em 0;} +.stat {white-space: nowrap;margin-right: 2em;display: inline-block;} + +.filterGroup {padding: 7px; background-color: #f0f0f0;} +.filterGroup select {display: inline-block;width: auto;} + +.results {margin-bottom: 20px;} + +.indicator{display: inline-block;font-style: italic;font-weight: 100;color: #999;} + +.dot{ + width: 0.5em; + height: 0.5em; + border-radius: .5em; + display: inline-block; + margin-right: 0.8ex; +} +.yellow{background-color: #ffcc00; } +.red{background: #c60000; } +.green{background: #56e900; } +.hide{display: none} +.summaryListButton {margin-bottom:10px;} + +.modal .modal-dialog{ + width: 80%; height: 400px; + position: absolute; + top:0; bottom: 0; left: 0; right: 0; + margin: auto +} + +.btn-group { + margin-bottom: 10px; +} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/index.html b/packages/avalanchesass-object-grid/backstop_data/html_report/index.html new file mode 100644 index 0000000..b130513 --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/index.html @@ -0,0 +1,114 @@ + + + + BackstopJS Report + + + + + + + + + + + + + + +
+
{{alert.msg}}
+

{{name}} Report

+
+

+ Passed {{passedCount}}   Failed {{testPairs.length-passedCount}} + {{testDuration/1000 | number : 2}}s +

+ + + + + + + + + +
+
failed
+
passed
+
{{ thisTestPair.meta.pair.label }}{{ thisTestPair.meta.pair.selector }}{{ thisTestPair.meta.pair.fileName }}
+
+ +
+ + +
+ +
+
+
{{ thisTestPair.meta.pair.label }} - {{ thisTestPair.meta.pair.selector }} + +
+
{{ thisTestPair.meta.pair.fileName }}
+
+
+
Reference
+
Test
+
Diff
+
Report
+
+
+
+ Reference +
+
+ Test +
+
+ Difference +
+
+
+
failed
+
passed
+
+
Report: {{ thisTestPair.report }}
+
Threshold: {{ thisTestPair.meta.misMatchThreshold}}
+
+
+
+ +
+ +
+ +
+ + + diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js b/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js new file mode 100644 index 0000000..6a760bc --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js @@ -0,0 +1,137 @@ +/* global angular */ + +var tests = {}; + +function report (report) { // eslint-disable-line no-unused-vars + tests = report; +} + +var compareApp = angular.module('compareApp', ['ui.bootstrap', 'angular-clipboard', 'revealer']); + +var defaultMisMatchThreshold = 1; + +var TestPair = function (o) { + this.a = {src: o.pair.reference || '', srcClass: 'reference'}; + this.b = {src: o.pair.test || '', srcClass: 'test'}; + this.c = {src: o.pair.diffImage || '', srcClass: 'diff'}; + + this.report = JSON.stringify(o.pair.diff, null, 2); + this.passed = o.status === 'pass'; + this.meta = o; + this.meta.misMatchThreshold = (o && o.misMatchThreshold && o.misMatchThreshold >= 0) ? o.misMatchThreshold : defaultMisMatchThreshold; +}; + +compareApp.controller('MainCtrl', ['$scope', '$uibModal', 'clipboard', function ($scope, $uibModal, clipboard) { + $scope.name = tests.testSuite; + $scope.testPairs = []; + $scope.alerts = []; + $scope.passedCount = 0; + $scope.testDuration = 0; + $scope.testIsRunning = true; + $scope.isSummaryListCollapsed = true; + + if (!clipboard.supported) { + $scope.alerts.push({type: 'danger', msg: 'Sorry, copy to clipboard is not supported'}); + } + + tests.tests.forEach(function (o) { + $scope.testDuration += o.pair.diff.analysisTime; + + if (o.pair.diff.isSameDimensions) { + delete o.pair.diff.dimensionDifference; + } + + delete o.pair.diff.analysisTime; + + if (o.status === 'pass') { + $scope.passedCount++; + } + + $scope.testPairs.push(new TestPair(o)); + }); + + $scope.statusFilter = 'failed'; + if ($scope.passedCount === $scope.testPairs.length) { + $scope.statusFilter = 'passed'; + } + + $scope.detailFilterOptions = ['failed', 'passed', 'all', 'none']; + + $scope.displayOnStatusFilter = function (o) { + if ($scope.statusFilter === 'all') { + return true; + } + + if ($scope.statusFilter === 'failed' && !o.passed) { + return true; + } + + if ($scope.statusFilter === 'passed' && o.passed) { + return true; + } + + return false; + }; + + $scope.copyFailedTestsIds = function () { + var failedTests = ''; + $scope.testPairs.forEach(function (test) { + if (!test.passed) { + failedTests = failedTests + test.meta.pair.label + ','; + } + }); + + if (failedTests) { + clipboard.copyText(failedTests.substring(0, failedTests.length - 1)); + $scope.alerts.push({type: 'success', msg: 'Failed tests were copied to clipboard'}); + } else { + $scope.alerts.push({type: 'warning', msg: 'No failed tests were found'}); + } + }; + + $scope.closeAlert = function (index) { + $scope.alerts.splice(index, 1); + }; + + $scope.openModal = function (size, referenceImg, testImg) { + $uibModal.open({ + animation: true, + ariaLabelledBy: 'modal-title', + ariaDescribedBy: 'modal-body', + templateUrl: 'myModalContent.html', + controller: 'ModalInstanceCtrl', + windowClass: 'modal', + resolve: { + referenceImg: function () { + return referenceImg; + }, + testImg: function () { + return testImg; + } + } + }); + }; +}]); + +// Please note that $uibModalInstance represents a modal window (instance) dependency. +// It is not the same as the $uibModal service used above. +compareApp.controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, referenceImg, testImg) { + $scope.imgPositionValue = 50; + + $scope.selected = { + referenceImg: referenceImg, + testImg: testImg + }; + + $scope.setImgPositionValue = function (value) { + $scope.imgPositionValue = value; + }; + + $scope.ok = function () { + $uibModalInstance.close(); + }; + + $scope.cancel = function () { + $uibModalInstance.dismiss('cancel'); + }; +}); diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js b/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js new file mode 100644 index 0000000..bd88516 --- /dev/null +++ b/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js @@ -0,0 +1,317 @@ +/* global define */ +(function (root, factory) { + 'use strict'; + + if (typeof define === 'function' && define.amd) { + // AMD support + define(['angular'], factory); + } else if (typeof module !== 'undefined' && typeof module.exports === 'object') { + // commonJS support + module.exports = factory(require('angular')); + } else { + // no module loading system + return factory(root.angular); + } +})(this, function (angular) { + 'use strict'; + + var module = 'revealer'; + + /** + * ngDoc module + * @name 'revealer' + * @description allow two images to be layered on top of each other + * and compared using a drag handler + */ + angular + .module(module, []) + .directive('revealer', revealer); + + var multipleEvents = [{ + action: 'mousedown', + move: 'mousemove', + release: 'mouseup' + }, { + action: 'touchstart', + move: 'touchmove', + release: 'touchend' + }]; + + revealer.$inject = ['$document', '$window']; + + /** + * @ngdoc directive + * @name revealer.directive:revealer + * @description directive that will take two images and create a handler * that allows for the top image to be adjusted that reveals + * the image below. Images will be inherit the size of its + * parent container + * @element + * @scope + */ + function revealer ($document, $window) { + return { + restrcit: 'E', + template: ['
', + '', + '{{ bottomLabel}}', + '
', + '', + '{{topLabel}}', + '
', + '', + '
'].join(''), + scope: { + bottomLabel: '@', + topLabel: '@', + bottomImage: '@', + topImage: '@', + startPosition: '=?', + onComplete: '&', + scroll: '=?', + scrollOffset: '=?' + }, + link: link + }; + + function link (scope, elem, attr) { + // throw error when image path not provided + if ((!scope.topImage) || + (!scope.bottomImage)) { + throw Error('please provide a valid path for the top and bottom image attributes on the revealer directive'); + } + + scope.startPosition = (scope.startPosition && scope.startPosition < 100) ? scope.startPosition : 50; + + scope.scroll = scope.scroll === true; + scope.scrollOffset = scope.scrollOffset || 0; + + var handle; + var topImage; + var revealer; + var handleClass; + var revealerSettings; + var handlerSettings; + var handleOffset = 0; + + var handleDrag = throttle(_handleDrag, 40); + var handleScroll = throttle(_handleScroll, 20); + + $document.ready(function () { + // store the needed elements + handle = getElem(elem, '.revealer__handle'); + topImage = getElem(elem, '.revealer__top-image'); + revealer = getElem(elem, '.revealer__container'); + handleClass = 'revealer__handle--drag'; + + if (scope.scroll) { + // $window does not have on method so it must be wrapped + // in an angular.element to use this method + angular.element($window).on('scroll', handleScroll); + } + + (!scope.scroll) ? setRevealPosition(handle, topImage, scope.startPosition) : setRevealPosition(handle, topImage, 0); + + angular.forEach(multipleEvents, function (eventConfig) { + handle.on(eventConfig.action, function (e) { + var clickPos; + + handle.addClass(handleClass); + revealerSettings = getDimensions(revealer); + handlerSettings = getDimensions(handle); + + // get the click/touch postiton of the handler + clickPos = mousePos(e, handlerSettings).x; + + // if the click position is on the other side of the handler + // we have to set a negative offset, also do some maths to + // calculate the actual value to offset + if (clickPos > handlerSettings.width / 2) { + handleOffset = -(clickPos - handlerSettings.width / 2); + } else { + handleOffset = (handlerSettings.width / 2 - clickPos); + } + + // when the handle is dragged, can either + // be a 'mousemove' or 'touchmove' event, + // caluclate the position of the overlay + $document.on(eventConfig.move, handleDrag); + + // when the release action is triggered unbind + // event listerners on drag an elements + $document.on(eventConfig.release, removeListeners); + }); + }); + + scope.$watch('startPosition', function (newValue, oldValue) { + setRevealPosition(handle, topImage, newValue); + }); + }); // ready + + /** + * handle the drag of the handle, if the handle is + * draged outside the container do nothing. Otherwise + * calculate the percentage and set the position of + * the handle and the width of the topImage container + * @param {Event Object} e : Event Object + */ + function _handleDrag (e) { + e.preventDefault(); + + var eventObject = (e.type === 'mousemove') ? e : e.changedTouches[0]; + var position = mousePos(eventObject, revealerSettings); + var percentage; + + position.x += handleOffset; + + if (position.x < 0 || position.x > revealerSettings.width) { + return; + } + + percentage = (position.x / revealerSettings.width) * 100; + + setRevealPosition(handle, topImage, percentage); + } + + /** + * when the pages scrolls calculate if the element is in the + * viewport and then set the reveal position in relation to + * the scroll position of the element + * @param {Event Object} e + */ + function _handleScroll (e) { + e.preventDefault(); + + // calculate if elem in viewport + // if it is, calulate the scroll percentage + // in relation to the elem, set percentage for revealer + if (inView(elem, $window, scope.scrollOffset)) { + var elemTop = getDimensions(elem[0].parentNode).top; + var height = window.innerHeight - scope.scrollOffset; + var percentage = (height - elemTop) / height * 100; + + if (percentage > 0 && percentage < 100) { + setRevealPosition(handle, topImage, percentage); + } + } + } + + /** + * ensure only the correct event listener functions + * are removed from the 'document' object + * @param {Object} config + * @param {Event object} e + */ + function removeListeners (e) { + var configIndex = (e.type === multipleEvents[0].release) ? 0 : 1; + var config = multipleEvents[configIndex]; + + if (scope.onComplete) { + scope.onComplete(); + } + + handle.removeClass(handleClass); + $document.off(config.move, handleDrag); + $document.off(config.release, removeListeners); + + if (scope.pageScroll) { + angular.element($window).off('scroll', handleScroll); + } + } + } // link + } // revealer + + /** + * set the position of the handler and the revealer + * @param {DOM Object} handle : drag handler + * @param {DOM object} revealer : top image to reveal + * @param {Number} position : position of revealer + */ + function setRevealPosition (handle, revealer, position) { + handle.css({ left: appendPercentage(position) }); + revealer.css({ width: appendPercentage(position) }); + } + + /** + * return an angular element based on the querySelector of the elem provided + * @param {DOM Element} elem : element to find elements near + * @param {String} value : class to search for + * @return {DOM Element} + */ + function getElem (elem, value) { + return angular.element(elem[0].querySelector(value)); + } + + /** + * get the mouse coordsinatea based on a target element + * @param {Event object} e + * @param {Object} target position of target element on page + * @return {Object} x and y coordinates of mouse + */ + function mousePos (e, target) { + return { + x: e.clientX - target.left + }; + } + + /** + * get the settings of the DOM element passed as a parameter + * @param {DOM element} elem + * @return {Object} getBoundingClientRect() results + */ + function getDimensions (elem) { + elem = elem[0] || elem; + return elem.getBoundingClientRect(); + } + + /** + * return the value as a string with '%' appendPercentage + * @param {Number} value + * @return {String} string representation of value + */ + function appendPercentage (value) { + return value + '%'; + } + + /** + * utility function to throttle the execution + * of the callback, this is useful when every + * opertations need to be done on events that + * get executed in rapid succession. The callback + * will get executed after the delay + * @param {Function} cb + * @param {Number} delay + * @return {Function} + */ + function throttle (cb, delay) { + var _this = this; + var wait = false; + + function reset () { + wait = false; + } + + return function () { + if (!wait) { + cb.apply(_this, arguments); + wait = true; + setTimeout(reset, delay); + } + }; + } + + /** + * return if the DOM element is within the window + * viewport, offset can be applied + * @param {DOM Object} elem + * @param {Object} global + * @param {Number} offset + * @return {Boolean} + */ + function inView (elem, win, offset) { + offset = offset || 0; + var dimensions = getDimensions(elem[0].parentNode || elem); + return (!!dimensions && dimensions.bottom >= 0 && dimensions.top <= win.innerHeight - offset); + } + + return module; +}); diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 1a04686..e78303b 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -15,5 +15,19 @@ }, "bugs": { "url": "https://github.com/avalanchesass/avalanchesass/issues" + }, + "devDependencies": { + "autoprefixer": "^6.5.0", + "backstopjs": "^2.0.2", + "node-sass": "^3.10.1", + "node-sass-magic-importer": "^1.1.0", + "postcss-cli": "^2.6.0" + }, + "scripts": { + "test:buildcss": "node-sass --importer node_modules/node-sass-magic-importer test/test.scss | postcss -u autoprefixer -o test/tmp/test.css", + "test:buildhtml": "body=$(cat test/body.html | tr '\r\n' ' '); sed \"s~{{ body }}~${body}~g\" ../../test/test.html.template > test/tmp/test.html", + "test:cleanup": "rm -Rf test/tmp", + "test-reference": "npm run test:buildcss && npm run test:buildhtml && backstop reference --configPath=../../backstop.json && npm run test:cleanup", + "test": "npm run test:buildcss && npm run test:buildhtml && backstop test --configPath=../../backstop.json && npm run test:cleanup" } } diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/_index.scss index 99e6849..8c99397 100644 --- a/packages/avalanchesass-object-grid/scss/_index.scss +++ b/packages/avalanchesass-object-grid/scss/_index.scss @@ -1,254 +1,10 @@ @import 'variable'; @import 'mixin'; -/* extract object.css */ -/* extract object_grid.css */ -/*--- -title: Example -name: object_grid_example -section: object_grid -order: 1 ---- -*/ -/*--- -title: Default -name: object_grid_example_default -section: object_grid_example ---- - -Default responsive grid with vertical and horizontal spacing between items. - -```example:html -
-
-
width: 50%
-
-
-
width: 50%
-
-
-
width: 50%
-
-
-
width: 50%
-
-
-``` -*/ -.#{$o-grid-namespace} { - @include o-grid($o-grid-flex, $o-grid-flex-fallback); - @if $o-grid-spaced-vertical-default-size { - @include o-grid-spaced-vertical(map-get($spacing, $o-grid-spaced-vertical-default-size), '.#{$o-grid-namespace}__item'); - } - @if $o-grid-spaced-horizontal-default-size { - @include o-grid-spaced-horizontal(map-get($spacing, $o-grid-spaced-horizontal-default-size), '.#{$o-grid-namespace}__item'); - } -} - -.#{$o-grid-namespace}__item { - @include o-grid-item($o-grid-flex, $o-grid-flex-fallback); -} - - - -@if length($o-grid-spaced-vertical-sizes) >= 1 or length($o-grid-spaced-horizontal-sizes) >= 1 { - /*--- - title: Spacing - name: object_grid_example_spacing - section: object_grid_example - --- - */ -} -@if length($o-grid-spaced-vertical-sizes) >= 1 { - /*--- - title: Vertical - name: object_grid_example_spacing_vertical - section: object_grid_example_spacing - --- - - Vertical spacing between grid items. - */ - @each $-size in $o-grid-spaced-vertical-sizes { - $-block-class: '#{$o-grid-namespace} '; - $-class-name: '#{$o-grid-namespace}--vertical'; - $-size-ext: '-#{$-size}'; - $-selector: '.#{$-class-name}'; - @if $-size == $o-grid-spaced-vertical-default-size { - @warn 'Defining the same size in $o-grid-spaced-vertical-sizes as set for $o-grid-spaced-vertical-default-size is redundant, remove "#{$-size}" from $o-grid-spaced-vertical-sizes'; - } - /*--- - title: Size: #{$-size} - name: object_grid_example_spacing_vertical_size_#{$-size} - section: object_grid_example_spacing_vertical - --- - -```example:html -
-
-
width: 100%
-
-
-
width: 100%
-
-
-``` - */ - #{$-selector}#{$-size-ext} { - @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); - } - } - @each $-size-and-breakpoints in $o-grid-spaced-vertical-sizes-with-breakpoints { - $-block-class: '#{$o-grid-namespace} '; - $-class-name: '#{$o-grid-namespace}--vertical'; - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); - - @each $-breakpoint in $-breakpoints { - $-size-ext: '-#{$-size}'; - /*--- - title: Size: #{$-size}@#{$-breakpoint} - name: object_grid_example_spacing_vertical_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_example_spacing_vertical - --- - -```example:html -
-
-
width: 100%
-
-
-
width: 100%
-
-
-``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-vertical(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); - } - } - } - } +.o-grid { + @include o-grid($o-grid-spacing-vertical, $o-grid-spacing-horizontal); } -@if length($o-grid-spaced-horizontal-sizes) >= 1 { - /*--- - title: Horizontal - name: object_grid_example_spacing_horizontal - section: object_grid_example_spacing - --- - - Horizontal spacing between grid items. - */ - @each $-size in $o-grid-spaced-horizontal-sizes { - $-block-class: '#{$o-grid-namespace} '; - $-class-name: '#{$o-grid-namespace}--horizontal'; - $-size-ext: '-#{$-size}'; - $-selector: '.#{$-class-name}'; - @if $-size == $o-grid-spaced-horizontal-default-size { - @warn 'Defining the same size in $o-grid-spaced-horizontal-sizes as set for $o-grid-spaced-horizontal-default-size is redundant, remove "#{$-size}" from $o-grid-spaced-horizontal-sizes'; - } - /*--- - title: Size: #{$-size} - name: object_grid_example_spacing_horizontal_size_#{$-size} - section: object_grid_example_spacing_horizontal - --- - -```example:html -
-
-
width: 50%
-
-
-
width: 50%
-
-
-``` - */ - #{$-selector}#{$-size-ext} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); - } - } - @each $-size-and-breakpoints in $o-grid-spaced-horizontal-sizes-with-breakpoints { - $-block-class: '#{$o-grid-namespace} '; - $-class-name: '#{$o-grid-namespace}--horizontal'; - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); - - @each $-breakpoint in $-breakpoints { - $-size-ext: '-#{$-size}'; - /*--- - title: Size: #{$-size}@#{$-breakpoint} - name: object_grid_example_spacing_horizontal_size_#{$-size}_at_#{$-breakpoint} - section: object_grid_example_spacing_horizontal - --- - -```example:html -
-
-
width: 50%
-
-
-
width: 50%
-
-
-``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - #{$-selector}#{$-size-ext}\@#{$-breakpoint} { - @include o-grid-spaced-horizontal(map-get($spacing, $-size), '.#{$o-grid-namespace}__item'); - } - } - } - } -} - - - -@if $o-grid-collapsed-vertical { - /*--- - title: Vertical collapsed - name: object_grid_example_collapsed_vertical - section: object_grid_example - --- - -```example:html -
-
-
width: 100%
-
-
-
width: 100%
-
-
-``` - */ - .#{$o-grid-namespace}--vertical-collapsed { - @include o-grid-spaced-vertical(0, '.#{$o-grid-namespace}__item'); - } -} - -@if $o-grid-collapsed-horizontal { - /*--- - title: Horizontal collapsed - name: object_grid_example_collapsed_horizontal - section: object_grid_example - --- - -```example:html -
-
-
width: 50%
-
-
-
width: 50%
-
-
-``` - */ - .#{$o-grid-namespace}--horizontal-collapsed { - @include o-grid-spaced-horizontal(0, '.#{$o-grid-namespace}__item'); - } +.o-grid__item { + @include o-grid-item($o-grid-spacing-vertical, $o-grid-spacing-horizontal); } -/* end extract object_grid.css */ -/* end extract object.css */ diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 7f7ff97..e860306 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,54 +1,28 @@ -/*--- -title: Mixin -name: object_grid_mixin -section: object_grid -order: 2 ---- +@import 'variable'; -```css -// Basic grid. -o-grid([$-flex: true[, $-flex-fallback: false]]) - -// Vertical spacing between grid items. -o-grid-spaced-vertical([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) - -// Horizontal spacing between grid items. -o-grid-spaced-horizontal([$-spacing: map-get($spacing, m)[, $-item-selector: '.o-grid__item']]) - -// Basic grid item. -o-grid-item([$-flex: true[, $-flex-fallback: false]]) -``` -*/ -@mixin o-grid($-flex: true, $-flex-fallback: false) { - @if $-flex { - display: flex; - flex-wrap: wrap; - } - @if not $-flex or $-flex-fallback { - @include u-clearfix(); - } -} - -@mixin o-grid-spaced-vertical($-spacing: map-get($spacing, m), $-item-selector: '.o-grid__item') { - margin-top: -$-spacing; - > #{$-item-selector} { - margin-top: $-spacing; +/** + * Mixins + */ +@mixin o-grid($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { + display: flex; + flex-wrap: wrap; + @if $-spacing-vertical > 0 { + margin-top: -$-spacing-vertical; } -} - -@mixin o-grid-spaced-horizontal($-spacing: map-get($spacing, m), $-item-selector: '.o-grid__item') { - margin-left: -$-spacing; - > #{$-item-selector} { - padding-left: $-spacing; + @if $-spacing-horizontal > 0 { + margin-left: -$-spacing-horizontal; } } -@mixin o-grid-item($-flex: true, $-flex-fallback: false) { +@mixin o-grid-item($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { $base-box-sizing-reset: false !default; @if not $base-box-sizing-reset { box-sizing: border-box; } - @if not $-flex or $-flex-fallback { - float: left; + @if $-spacing-vertical > 0 { + padding-top: $-spacing-vertical; + } + @if $-spacing-horizontal > 0 { + padding-left: $-spacing-horizontal; } } diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 87a3d18..8a10e6e 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,50 +1,8 @@ -$o-grid-namespace: '#{map-get($namespace, object)}grid' !default; +// @TODO: may not use separate file? -// Flexbox grid system. -$o-grid-flex: true !default; -$o-grid-flex-fallback: false !default; +// @TODO: import default variables. +$spacing-m: 1em !default; -// Vertical spacing sizes. -$o-grid-spaced-vertical-default-size: m !default; -$o-grid-spaced-vertical-sizes: () !default; -// Vertical spacing sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which vertical spacing classes should be generated. -$o-grid-spaced-vertical-sizes-with-breakpoints: ( - m: (), -) !default; -// Vertical collapsed grid. -$o-grid-collapsed-vertical: false !default; - -// Horizontal spacing sizes. -$o-grid-spaced-horizontal-default-size: m !default; -$o-grid-spaced-horizontal-sizes: () !default; -// Horizontal spacing sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which horizontal spacing classes should be -// generated. -$o-grid-spaced-horizontal-sizes-with-breakpoints: ( - m: (), -) !default; -// Horizontal collapsed grid. -$o-grid-collapsed-horizontal: false !default; -/*--- -title: Variable -name: object_grid_variable -section: object_grid -order: 3 ---- - -```css -$o-grid-namespace: '#{$o-grid-namespace}'; -$o-grid-flex: #{$o-grid-flex}; -$o-grid-flex-fallback: #{$o-grid-flex-fallback}; -$o-grid-spaced-vertical-default-size: #{$o-grid-spaced-vertical-default-size}; -$o-grid-spaced-vertical-sizes: (#{$o-grid-spaced-vertical-sizes}); -$o-grid-spaced-vertical-sizes-with-breakpoints: (nested-map); -$o-grid-collapsed-vertical: #{$o-grid-collapsed-vertical}; -$o-grid-spaced-horizontal-sizes: (#{$o-grid-spaced-horizontal-sizes}); -$o-grid-spaced-horizontal-sizes-with-breakpoints: (nested-map); -$o-grid-collapsed-horizontal: #{$o-grid-collapsed-horizontal}; -``` -*/ +// Spacing. +$o-grid-spacing-vertical: $spacing-m !default; +$o-grid-spacing-horizontal: $spacing-m !default; diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..47a5333a05c4f12d553611f80f0303dcd77ba3ae GIT binary patch literal 3045 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a9e8a99700af481d38d7b9ddd00b6ed00d36e0 GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..2208fc42cb2268641be34749958c420587a69dc8 GIT binary patch literal 4607 zcmeH}`B&0;7stQlq|apL(==t4*@il4iMf%fY0IQ!r~{^%8)Zni!9<4SLfWI9EKNjh zMAXMD9nEEM-w?~(1#&?{TpL9(fs&9=g2(v-o*$lb=C`MNKA&^Xx%ZsUz4!Gw=braN zPj?rct$Viu0H6bPJr4%}jdlRoZ14}wjfh=9cg%+S9_Q+d2LSDzf89+0m9_@}cF>{c z&v-@CM3dO?%L{Q@AF(A}^dINuLfsMmrn?Wn+|jc$)XTIV3c*r6zps7ulUv}P`b5YU zuf*T3P?Gy7{zeI!ohV`W^BvDOgFo87u6H&ikXmnBVBM*AAKt3z(azCZO6g3wpLGH9 z@mb8Zb2tlQ5M6JOXYek;&vB)_E7;G$!fn zY@$A7mqN?Gbnbv>rFkZaX^Ysu2>|Z7K{ss!0B2uMKm!0gcmLSF@o46jEfyONb>?qK zg|q_ZsoT*vaTe#!b?6^YB|#i$gQX39NK%kyvKyk@ikk2q$!_Rc^gI#QS@>jRL1=O6 z6qgS86jgJWgR|SVZx3-*o#7poE6sFtQAp&$`v^mAi=83mfVqyLyC42s2&aOTn512U zJQE>co8N%q@gZaJj*JdOxPvl0+t!@@tcoC*;9j(QJ4!oyEpqpyw4>FAsG(53Pd*lT zg(fatwbIbsexPT~C@D7TL(S9rBkhmLq$0bfOr>aIEnZGT)V(Vc>+-z=RV|rlPU7xPt^RKfTjq zI%0xFTZQ0D9O zLV?B~dYPai;w*QIkQf=f+uOKzVuGYDTxLkJXtV@|1|@gZzCA7`-xZr-$I3PS*R+0C z16odYR9ug;ba?x;lFh>W9(FMX?YDPp(uj@3HHecCJ~@)vY~+U*98H_;;MG1)f4$s1 zvP&Q+%mq0=qEV`35%Qh0Z`a z#{8Ze@$2F{R1;@9y2Gwtb8UTSdb&W}A4P0og4GITjY9h16x?ByQvaYCzww3d!qj{}Wcb$1xvxAgUwyA9t?u zku%jsYU8~y^((gZuF&DpT(5wbRQq<^_b}-{7aLZVw1a&HBNeY@iSjjD5tq#O?gv^z*7b4pMa; z;UXyKk+H|h*WNOXaYkg)&L@g1fd;N^tz!1)+Xffu!6?<7wo5ght9+!!Bs__rN`SGs zM@+}ng7rEdr;qn8%ukeu#vS&kPjk%qgk1R3_o`nO#l#I-$oA;^7vw%sUjUUmdO+{dX{t_LDZ8b;@618eD=7yt|?MET+XvW z%dDWY_+Xzyn=*Qsy;0aeYFe4rFhi8@6&M{glLAs38%mYsDGI^;_Ky?#;eb~`rZJBR+7FJpg@I|pp&%IX$c;&>Di zdR~oAPoov?wIp-Ad@+R=%s>Ys%O?j7KOG^tTLa6#t zNkPN!C#90kHvh%(Fw+dL#{rmQ_4Bd3QJKF_eNcD~*wU%rIq+=u}xZ?8yVr+RT%IH^10K-sd^Y2vWj zaAv8iRuW?Y9g3GEhEK(P8AyLJwCEhaw(>6K;B>A<%KRHG&AP{P3)shT)U3I*mbPpV z#&5M-xU{dwd3suay-WE~eJC%$5y5#Ad#b>l@f1W9Hjz9C3!|;;_F>)p@Bsn4(%>D# zCQ93lioHTBgNC_nUydY=H?Vl{Qin$J0ad|zc1Nk)SOz@&~Cjp zlH|QdUthsBp%)DyJ=)}x-9v3m!uv!!8Lu%i;A-2aEM+%g3>DQ~_-TubH&p|E8R8AG2z(>(jleeo-w6C46Yz(t Zb-`&z?SF~?;_(*-=+ExwE6*Ym{{waqf%X6Z literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fea5c9de5421e8c728cfbf982cd6fb3f6721c5 GIT binary patch literal 5746 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 +
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
diff --git a/packages/avalanchesass-object-grid/test/test.scss b/packages/avalanchesass-object-grid/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/avalanchesass-object-grid/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; diff --git a/test/test.html.template b/test/test.html.template new file mode 100644 index 0000000..3be0a4a --- /dev/null +++ b/test/test.html.template @@ -0,0 +1,14 @@ + + + + + + avalanchesass test + + + + + + {{ body }} + + From 803fa56add34fdf624583a99966feccec0a419e1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 14:50:01 +0200 Subject: [PATCH 237/355] Remove backstop_data directory that was accidently added --- .../backstop_data/html_report/README.md | 8 - .../backstop_data/html_report/bower.json | 15 - .../backstop_data/html_report/config.js | 85 ----- .../html_report/css/revealer.css | 96 ------ .../backstop_data/html_report/css/styles.css | 66 ---- .../backstop_data/html_report/index.html | 114 ------- .../backstop_data/html_report/js/compare.js | 137 -------- .../backstop_data/html_report/js/revealer.js | 317 ------------------ 8 files changed, 838 deletions(-) delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/README.md delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/bower.json delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/config.js delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/index.html delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js delete mode 100644 packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/README.md b/packages/avalanchesass-object-grid/backstop_data/html_report/README.md deleted file mode 100644 index c55f61c..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/README.md +++ /dev/null @@ -1,8 +0,0 @@ -./compare/* -==== - -`config.js` is generated by `$ backstop test`. - -`index.html` is opened by `$ backstop test` after screenshots are generated and the local http server is started. - -The HTTP server will auto-shutdown after a 15 minute timeout to save you the trouble of cleaning it up yourself. You can configure this in `./server.js` diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json b/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json deleted file mode 100644 index 12de128..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "BackstopJS_compare", - "version": "0.0.0", - "main": "index.html", - "ignore": [ - "node_modules" - ], - "dependencies": { - "angular": "~1.4.8", - "bootstrap-css-only": "~3.3.6", - "angular-bootstrap": "~2.1.1", - "angular-clipboard": "~1.5.0" - }, - "devDependencies": {} -} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/config.js b/packages/avalanchesass-object-grid/backstop_data/html_report/config.js deleted file mode 100644 index 287f33b..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/config.js +++ /dev/null @@ -1,85 +0,0 @@ -report({ - "testSuite": "BackstopJS", - "tests": [ - { - "pair": { - "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png", - "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_0_s.png", - "selector": "document", - "fileName": "64003731_avalanchesass_0_document_0_s.png", - "label": "avalanchesass", - "misMatchThreshold": 0.1, - "diff": { - "isSameDimensions": true, - "dimensionDifference": { - "width": 0, - "height": 0 - }, - "misMatchPercentage": "0.00", - "analysisTime": 20 - } - }, - "status": "pass" - }, - { - "pair": { - "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png", - "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_1_m.png", - "selector": "document", - "fileName": "64003731_avalanchesass_0_document_1_m.png", - "label": "avalanchesass", - "misMatchThreshold": 0.1, - "diff": { - "isSameDimensions": true, - "dimensionDifference": { - "width": 0, - "height": 0 - }, - "misMatchPercentage": "0.00", - "analysisTime": 48 - } - }, - "status": "pass" - }, - { - "pair": { - "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png", - "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_2_l.png", - "selector": "document", - "fileName": "64003731_avalanchesass_0_document_2_l.png", - "label": "avalanchesass", - "misMatchThreshold": 0.1, - "diff": { - "isSameDimensions": true, - "dimensionDifference": { - "width": 0, - "height": 0 - }, - "misMatchPercentage": "0.00", - "analysisTime": 62 - } - }, - "status": "pass" - }, - { - "pair": { - "reference": "../../test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png", - "test": "../../test/backstopjs/bitmaps_test/20161001-144502/64003731_avalanchesass_0_document_3_xl.png", - "selector": "document", - "fileName": "64003731_avalanchesass_0_document_3_xl.png", - "label": "avalanchesass", - "misMatchThreshold": 0.1, - "diff": { - "isSameDimensions": true, - "dimensionDifference": { - "width": 0, - "height": 0 - }, - "misMatchPercentage": "0.00", - "analysisTime": 91 - } - }, - "status": "pass" - } - ] -}); \ No newline at end of file diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css b/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css deleted file mode 100644 index e357933..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/css/revealer.css +++ /dev/null @@ -1,96 +0,0 @@ -img { - max-width: 100% -} - -.revealer__container { - position: relative; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.revealer__image { - display: block -} - -.revealer__top-image { - position: absolute; - left: 0; - top: 0; - width: 50%; - height: 100%; - overflow: hidden; - transform: translateZ(0) -} - -.revealer__top-image .revealer__image { - position: absolute; - left: 0; - top: 0; - display: block; - height: 100%; - width: auto; - max-width: none -} - -.revealer__handle { - width: 3px; - height: 102%; - background: #e74c3c; - /*border-radius: 50%;*/ - left: 50%; - top: -1%; - position: absolute; - display: block; - /*margin-left: -25px;*/ - /*margin-top: -25px;*/ - cursor: move; - /*background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1cHgiIGhlaWdodD0iOHB4IiB2aWV3Qm94PSIwIDAgMjUgOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8dGl0bGU+VW50aXRsZWQgNTwvdGl0bGU+CiAgICA8ZGVzY3JpcHRpb24+Q3JlYXRlZCB3aXRoIFNrZXRjaCAoaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoKTwvZGVzY3JpcHRpb24+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBza2V0Y2g6dHlwZT0iTVNQYWdlIj4KICAgICAgICA8ZyBpZD0ibWF4aW1pc2UiIHNrZXRjaDp0eXBlPSJNU0xheWVyR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAtMi4wMDAwMDApIiBmaWxsPSIjMzMzMzMzIj4KICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljg4NDU3MTksNC45MDk5MDg2MSBDMjUuMzczMzQyLDUuMzk4Njc4NzIgMjUuMzQ2MDYwNCw2LjIxNjEyMzg5IDI0LjgyNTY0ODQsNi43MzY1MzU4OSBMMjEuOTk3MzIyMyw5LjU2NDg2MjAxIEMyMS42MTY0NDExLDkuOTQ1NzQzMjYgMjEuMDU2NjY4MiwxMC4wNzQxOTY0IDIwLjU4MDg2MTMsOS44OTA2NDk4MiBDMjAuNDIzMTgyMSw5LjgyOTEzMzczIDIwLjI4NDcxMTksOS43Mzc4MDIzNiAyMC4xNzA2OTUsOS42MjM3ODU0NyBDMTkuOTQwODkzNiw5LjM5Mzk4Mzk3IDE5LjgxMDc5MDUsOS4wNzE1NTQ3OSAxOS44MjIwNDQ5LDguNzIyNjY4OTggTDE5Ljg2ODc3MTIsNy4yNzQxNTM1NSBMMTQuNzY3MDAxMiw3LjQzODcyNjc3IEMxNC4wNTI3OSw3LjQ2MTc2NTg1IDEzLjQ5NDE5NTYsNi45MDMxNzE0NCAxMy41MTcyMzQ2LDYuMTg4OTYwMTcgQzEzLjU0MDI3MzcsNS40NzQ3NDg5MSAxNC4xMzYxMDc3LDQuODc4OTE0ODcgMTQuODUwMzE5LDQuODU1ODc1OCBMMTkuOTUyMDg5LDQuNjkxMzAyNTcgTDE5Ljk5ODgxNTMsMy4yNDI3ODcxNCBDMjAuMDE1NjY3NCwyLjcyMDM3MTc0IDIwLjM0NTkzMzQsMi4yMzk4NTA5MSAyMC44MzQ2NDQ2LDIuMDIzMzY2MTIgQzIxLjMyMjQxMywxLjgwNzgyNDEgMjEuODc1OTQsMS45MDEyNzY3MSAyMi4yMzMwMTYyLDIuMjU4MzUyODggTDI0Ljg4NDU3MTksNC45MDk5MDg2MSBMMjQuODg0NTcxOSw0LjkwOTkwODYxIFogTTEwLjIzMjk5ODgsNC41NjEyNzMyMyBDMTAuOTQ3MjEsNC41MzgyMzQxNSAxMS41MDU4MDQ0LDUuMDk2ODI4NTYgMTEuNDgyNzY1NCw1LjgxMTAzOTgzIEMxMS40NTk3MjYzLDYuNTI1MjUxMDkgMTAuODYzODkyMyw3LjEyMTA4NTEzIDEwLjE0OTY4MSw3LjE0NDEyNDIgTDUuMDQ3OTEwOTksNy4zMDg2OTc0MyBMNS4wMDExODQ2OSw4Ljc1NzIxMjg2IEM0Ljk4NDMzMjU4LDkuMjc5NjI4MjYgNC42NTQ5NTA0Myw5Ljc2MTAzMjk0IDQuMTY1MzU1NCw5Ljk3NjYzMzg4IEMzLjY3NjcwMzE0LDEwLjE5MTI5MiAzLjEyNDA2LDEwLjA5ODcyMzMgMi43NjY5ODM4Myw5Ljc0MTY0NzEyIEwwLjExNTQyODA5Nyw3LjA5MDA5MTM5IEMtMC4zNzI0NTgxNTcsNi42MDIyMDUxMyAtMC4zNDcwMDMyMjIsNS43ODQ4MTg4OSAwLjE3NDM1MTU1OCw1LjI2MzQ2NDExIEwzLjAwMjY3NzY3LDIuNDM1MTM3OTkgQzMuMzgzNTU4OTIsMi4wNTQyNTY3NCAzLjk0NDI3NDU3LDEuOTI0ODYwODIgNC40MTkxMzg3NCwyLjEwOTM1MDE4IEM0LjU3NjgxNzkyLDIuMTcwODY2MjcgNC43MTUyODgwNiwyLjI2MjE5NzY0IDQuODI5MzA0OTUsMi4zNzYyMTQ1MyBDNS4wNTkxMDY0NSwyLjYwNjAxNjAzIDUuMTg5MjA5NDUsMi45Mjg0NDUyMSA1LjE3Nzk1NTA3LDMuMjc3MzMxMDIgTDUuMTMxMjI4NzYsNC43MjU4NDY0NSBMMTAuMjMyOTk4OCw0LjU2MTI3MzIzIEwxMC4yMzI5OTg4LDQuNTYxMjczMjMgWiIgaWQ9IlNoYXBlIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=);*/ - background-repeat: no-repeat; - background-position: center -} - -.revealer__handle:before { - content: ""; - position: absolute; - top: -16px; - left: -7px; - - background: #e74c3c; - width:16px; - height: 16px; - border-radius:2px; -} - -.revealer__handle:after { - content: ""; - position: absolute; - top: -13px; - left: -2px; - width: 6px; - height: 10px; - border-left: 1px solid #fff; - border-right: 1px solid #fff; -} - -.revealer__handle--drag, -.revealer__handle--drag:before{ - background-color: #c0392b -} - -.revealer__label { - position: absolute; - bottom: 0; - padding: 1em -} - -.revealer__label--right { - right: 0 -} - -.revealer__label--left { - left: 0 -} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css b/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css deleted file mode 100644 index 563e502..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/css/styles.css +++ /dev/null @@ -1,66 +0,0 @@ -body{font-family: Helvetica Neue,Helvetica,Arial,sans-serif; } -label span{display: block;} -td,th{vertical-align: top;padding: 8px;width: 25%;} -td img{width: 100%;} -table{width: 100%;border-collapse: collapse;margin-bottom: 50px;} -input{width: 55ex; display: none;} -th{text-align: left;background: #ddd;padding: 10px;white-space: nowrap;} - - -.flex-container {display: flex; margin-bottom: 10px;} -.flex-container > div { - flex: 1; - padding-left: 5px; - padding-right: 5px; - min-width: 1px; /* for Firefox */ -} -.flex-container > div img {max-width: 100%;} - -.flex-container .selector, -.flex-container .filename {background-color: #ddd;color:#444; padding: 5px 10px;} -.flex-container .filename {text-align: right; color: #888;} - -.flex-container.small {font-size:0.85em;} - -.reportTxt{white-space: pre-wrap;font-family: monospace; font-size: 11px;} - -.summaryList {padding: 0;list-style: none;width: auto;} -.summaryList td {width: auto; padding: 5px;} -.summaryList tr:nth-child(2n-1) {background-color: #f0f0f0;} -.summaryList .statusInds {width: 15ex;} - -.summaryBlock .fileName{font-style: italic;font-weight: 100;color: #999;} - -.statContainer {margin: 1em 0;} -.stat {white-space: nowrap;margin-right: 2em;display: inline-block;} - -.filterGroup {padding: 7px; background-color: #f0f0f0;} -.filterGroup select {display: inline-block;width: auto;} - -.results {margin-bottom: 20px;} - -.indicator{display: inline-block;font-style: italic;font-weight: 100;color: #999;} - -.dot{ - width: 0.5em; - height: 0.5em; - border-radius: .5em; - display: inline-block; - margin-right: 0.8ex; -} -.yellow{background-color: #ffcc00; } -.red{background: #c60000; } -.green{background: #56e900; } -.hide{display: none} -.summaryListButton {margin-bottom:10px;} - -.modal .modal-dialog{ - width: 80%; height: 400px; - position: absolute; - top:0; bottom: 0; left: 0; right: 0; - margin: auto -} - -.btn-group { - margin-bottom: 10px; -} diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/index.html b/packages/avalanchesass-object-grid/backstop_data/html_report/index.html deleted file mode 100644 index b130513..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - BackstopJS Report - - - - - - - - - - - - - - -
-
{{alert.msg}}
-

{{name}} Report

-
-

- Passed {{passedCount}}   Failed {{testPairs.length-passedCount}} - {{testDuration/1000 | number : 2}}s -

- - - - - - - - - -
-
failed
-
passed
-
{{ thisTestPair.meta.pair.label }}{{ thisTestPair.meta.pair.selector }}{{ thisTestPair.meta.pair.fileName }}
-
- -
- - -
- -
-
-
{{ thisTestPair.meta.pair.label }} - {{ thisTestPair.meta.pair.selector }} - -
-
{{ thisTestPair.meta.pair.fileName }}
-
-
-
Reference
-
Test
-
Diff
-
Report
-
-
-
- Reference -
-
- Test -
-
- Difference -
-
-
-
failed
-
passed
-
-
Report: {{ thisTestPair.report }}
-
Threshold: {{ thisTestPair.meta.misMatchThreshold}}
-
-
-
- -
- -
- -
- - - diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js b/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js deleted file mode 100644 index 6a760bc..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/js/compare.js +++ /dev/null @@ -1,137 +0,0 @@ -/* global angular */ - -var tests = {}; - -function report (report) { // eslint-disable-line no-unused-vars - tests = report; -} - -var compareApp = angular.module('compareApp', ['ui.bootstrap', 'angular-clipboard', 'revealer']); - -var defaultMisMatchThreshold = 1; - -var TestPair = function (o) { - this.a = {src: o.pair.reference || '', srcClass: 'reference'}; - this.b = {src: o.pair.test || '', srcClass: 'test'}; - this.c = {src: o.pair.diffImage || '', srcClass: 'diff'}; - - this.report = JSON.stringify(o.pair.diff, null, 2); - this.passed = o.status === 'pass'; - this.meta = o; - this.meta.misMatchThreshold = (o && o.misMatchThreshold && o.misMatchThreshold >= 0) ? o.misMatchThreshold : defaultMisMatchThreshold; -}; - -compareApp.controller('MainCtrl', ['$scope', '$uibModal', 'clipboard', function ($scope, $uibModal, clipboard) { - $scope.name = tests.testSuite; - $scope.testPairs = []; - $scope.alerts = []; - $scope.passedCount = 0; - $scope.testDuration = 0; - $scope.testIsRunning = true; - $scope.isSummaryListCollapsed = true; - - if (!clipboard.supported) { - $scope.alerts.push({type: 'danger', msg: 'Sorry, copy to clipboard is not supported'}); - } - - tests.tests.forEach(function (o) { - $scope.testDuration += o.pair.diff.analysisTime; - - if (o.pair.diff.isSameDimensions) { - delete o.pair.diff.dimensionDifference; - } - - delete o.pair.diff.analysisTime; - - if (o.status === 'pass') { - $scope.passedCount++; - } - - $scope.testPairs.push(new TestPair(o)); - }); - - $scope.statusFilter = 'failed'; - if ($scope.passedCount === $scope.testPairs.length) { - $scope.statusFilter = 'passed'; - } - - $scope.detailFilterOptions = ['failed', 'passed', 'all', 'none']; - - $scope.displayOnStatusFilter = function (o) { - if ($scope.statusFilter === 'all') { - return true; - } - - if ($scope.statusFilter === 'failed' && !o.passed) { - return true; - } - - if ($scope.statusFilter === 'passed' && o.passed) { - return true; - } - - return false; - }; - - $scope.copyFailedTestsIds = function () { - var failedTests = ''; - $scope.testPairs.forEach(function (test) { - if (!test.passed) { - failedTests = failedTests + test.meta.pair.label + ','; - } - }); - - if (failedTests) { - clipboard.copyText(failedTests.substring(0, failedTests.length - 1)); - $scope.alerts.push({type: 'success', msg: 'Failed tests were copied to clipboard'}); - } else { - $scope.alerts.push({type: 'warning', msg: 'No failed tests were found'}); - } - }; - - $scope.closeAlert = function (index) { - $scope.alerts.splice(index, 1); - }; - - $scope.openModal = function (size, referenceImg, testImg) { - $uibModal.open({ - animation: true, - ariaLabelledBy: 'modal-title', - ariaDescribedBy: 'modal-body', - templateUrl: 'myModalContent.html', - controller: 'ModalInstanceCtrl', - windowClass: 'modal', - resolve: { - referenceImg: function () { - return referenceImg; - }, - testImg: function () { - return testImg; - } - } - }); - }; -}]); - -// Please note that $uibModalInstance represents a modal window (instance) dependency. -// It is not the same as the $uibModal service used above. -compareApp.controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, referenceImg, testImg) { - $scope.imgPositionValue = 50; - - $scope.selected = { - referenceImg: referenceImg, - testImg: testImg - }; - - $scope.setImgPositionValue = function (value) { - $scope.imgPositionValue = value; - }; - - $scope.ok = function () { - $uibModalInstance.close(); - }; - - $scope.cancel = function () { - $uibModalInstance.dismiss('cancel'); - }; -}); diff --git a/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js b/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js deleted file mode 100644 index bd88516..0000000 --- a/packages/avalanchesass-object-grid/backstop_data/html_report/js/revealer.js +++ /dev/null @@ -1,317 +0,0 @@ -/* global define */ -(function (root, factory) { - 'use strict'; - - if (typeof define === 'function' && define.amd) { - // AMD support - define(['angular'], factory); - } else if (typeof module !== 'undefined' && typeof module.exports === 'object') { - // commonJS support - module.exports = factory(require('angular')); - } else { - // no module loading system - return factory(root.angular); - } -})(this, function (angular) { - 'use strict'; - - var module = 'revealer'; - - /** - * ngDoc module - * @name 'revealer' - * @description allow two images to be layered on top of each other - * and compared using a drag handler - */ - angular - .module(module, []) - .directive('revealer', revealer); - - var multipleEvents = [{ - action: 'mousedown', - move: 'mousemove', - release: 'mouseup' - }, { - action: 'touchstart', - move: 'touchmove', - release: 'touchend' - }]; - - revealer.$inject = ['$document', '$window']; - - /** - * @ngdoc directive - * @name revealer.directive:revealer - * @description directive that will take two images and create a handler * that allows for the top image to be adjusted that reveals - * the image below. Images will be inherit the size of its - * parent container - * @element - * @scope - */ - function revealer ($document, $window) { - return { - restrcit: 'E', - template: ['
', - '', - '{{ bottomLabel}}', - '
', - '', - '{{topLabel}}', - '
', - '', - '
'].join(''), - scope: { - bottomLabel: '@', - topLabel: '@', - bottomImage: '@', - topImage: '@', - startPosition: '=?', - onComplete: '&', - scroll: '=?', - scrollOffset: '=?' - }, - link: link - }; - - function link (scope, elem, attr) { - // throw error when image path not provided - if ((!scope.topImage) || - (!scope.bottomImage)) { - throw Error('please provide a valid path for the top and bottom image attributes on the revealer directive'); - } - - scope.startPosition = (scope.startPosition && scope.startPosition < 100) ? scope.startPosition : 50; - - scope.scroll = scope.scroll === true; - scope.scrollOffset = scope.scrollOffset || 0; - - var handle; - var topImage; - var revealer; - var handleClass; - var revealerSettings; - var handlerSettings; - var handleOffset = 0; - - var handleDrag = throttle(_handleDrag, 40); - var handleScroll = throttle(_handleScroll, 20); - - $document.ready(function () { - // store the needed elements - handle = getElem(elem, '.revealer__handle'); - topImage = getElem(elem, '.revealer__top-image'); - revealer = getElem(elem, '.revealer__container'); - handleClass = 'revealer__handle--drag'; - - if (scope.scroll) { - // $window does not have on method so it must be wrapped - // in an angular.element to use this method - angular.element($window).on('scroll', handleScroll); - } - - (!scope.scroll) ? setRevealPosition(handle, topImage, scope.startPosition) : setRevealPosition(handle, topImage, 0); - - angular.forEach(multipleEvents, function (eventConfig) { - handle.on(eventConfig.action, function (e) { - var clickPos; - - handle.addClass(handleClass); - revealerSettings = getDimensions(revealer); - handlerSettings = getDimensions(handle); - - // get the click/touch postiton of the handler - clickPos = mousePos(e, handlerSettings).x; - - // if the click position is on the other side of the handler - // we have to set a negative offset, also do some maths to - // calculate the actual value to offset - if (clickPos > handlerSettings.width / 2) { - handleOffset = -(clickPos - handlerSettings.width / 2); - } else { - handleOffset = (handlerSettings.width / 2 - clickPos); - } - - // when the handle is dragged, can either - // be a 'mousemove' or 'touchmove' event, - // caluclate the position of the overlay - $document.on(eventConfig.move, handleDrag); - - // when the release action is triggered unbind - // event listerners on drag an elements - $document.on(eventConfig.release, removeListeners); - }); - }); - - scope.$watch('startPosition', function (newValue, oldValue) { - setRevealPosition(handle, topImage, newValue); - }); - }); // ready - - /** - * handle the drag of the handle, if the handle is - * draged outside the container do nothing. Otherwise - * calculate the percentage and set the position of - * the handle and the width of the topImage container - * @param {Event Object} e : Event Object - */ - function _handleDrag (e) { - e.preventDefault(); - - var eventObject = (e.type === 'mousemove') ? e : e.changedTouches[0]; - var position = mousePos(eventObject, revealerSettings); - var percentage; - - position.x += handleOffset; - - if (position.x < 0 || position.x > revealerSettings.width) { - return; - } - - percentage = (position.x / revealerSettings.width) * 100; - - setRevealPosition(handle, topImage, percentage); - } - - /** - * when the pages scrolls calculate if the element is in the - * viewport and then set the reveal position in relation to - * the scroll position of the element - * @param {Event Object} e - */ - function _handleScroll (e) { - e.preventDefault(); - - // calculate if elem in viewport - // if it is, calulate the scroll percentage - // in relation to the elem, set percentage for revealer - if (inView(elem, $window, scope.scrollOffset)) { - var elemTop = getDimensions(elem[0].parentNode).top; - var height = window.innerHeight - scope.scrollOffset; - var percentage = (height - elemTop) / height * 100; - - if (percentage > 0 && percentage < 100) { - setRevealPosition(handle, topImage, percentage); - } - } - } - - /** - * ensure only the correct event listener functions - * are removed from the 'document' object - * @param {Object} config - * @param {Event object} e - */ - function removeListeners (e) { - var configIndex = (e.type === multipleEvents[0].release) ? 0 : 1; - var config = multipleEvents[configIndex]; - - if (scope.onComplete) { - scope.onComplete(); - } - - handle.removeClass(handleClass); - $document.off(config.move, handleDrag); - $document.off(config.release, removeListeners); - - if (scope.pageScroll) { - angular.element($window).off('scroll', handleScroll); - } - } - } // link - } // revealer - - /** - * set the position of the handler and the revealer - * @param {DOM Object} handle : drag handler - * @param {DOM object} revealer : top image to reveal - * @param {Number} position : position of revealer - */ - function setRevealPosition (handle, revealer, position) { - handle.css({ left: appendPercentage(position) }); - revealer.css({ width: appendPercentage(position) }); - } - - /** - * return an angular element based on the querySelector of the elem provided - * @param {DOM Element} elem : element to find elements near - * @param {String} value : class to search for - * @return {DOM Element} - */ - function getElem (elem, value) { - return angular.element(elem[0].querySelector(value)); - } - - /** - * get the mouse coordsinatea based on a target element - * @param {Event object} e - * @param {Object} target position of target element on page - * @return {Object} x and y coordinates of mouse - */ - function mousePos (e, target) { - return { - x: e.clientX - target.left - }; - } - - /** - * get the settings of the DOM element passed as a parameter - * @param {DOM element} elem - * @return {Object} getBoundingClientRect() results - */ - function getDimensions (elem) { - elem = elem[0] || elem; - return elem.getBoundingClientRect(); - } - - /** - * return the value as a string with '%' appendPercentage - * @param {Number} value - * @return {String} string representation of value - */ - function appendPercentage (value) { - return value + '%'; - } - - /** - * utility function to throttle the execution - * of the callback, this is useful when every - * opertations need to be done on events that - * get executed in rapid succession. The callback - * will get executed after the delay - * @param {Function} cb - * @param {Number} delay - * @return {Function} - */ - function throttle (cb, delay) { - var _this = this; - var wait = false; - - function reset () { - wait = false; - } - - return function () { - if (!wait) { - cb.apply(_this, arguments); - wait = true; - setTimeout(reset, delay); - } - }; - } - - /** - * return if the DOM element is within the window - * viewport, offset can be applied - * @param {DOM Object} elem - * @param {Object} global - * @param {Number} offset - * @return {Boolean} - */ - function inView (elem, win, offset) { - offset = offset || 0; - var dimensions = getDimensions(elem[0].parentNode || elem); - return (!!dimensions && dimensions.bottom >= 0 && dimensions.top <= win.innerHeight - offset); - } - - return module; -}); From c451f9732039175f90344853d7179455b07844e7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 14:51:15 +0200 Subject: [PATCH 238/355] .gitignore backstop_data --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c0e6a6b..2f853e8 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ nbproject Thumbs.db # Folders to ignore +backstop_data bitmaps_test bower_components node_modules From 9b46ddff62e1e950b30b8aab7fcba4495e804e8b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 19:01:05 +0200 Subject: [PATCH 239/355] Global testing --- README.md | 200 +----------------- package.json | 9 +- .../avalanchesass-object-grid/package.json | 14 -- scripts/test-reference.sh | 33 +++ scripts/test.sh | 33 +++ 5 files changed, 79 insertions(+), 210 deletions(-) create mode 100644 scripts/test-reference.sh create mode 100644 scripts/test.sh diff --git a/README.md b/README.md index 6c44e87..d9b4aef 100644 --- a/README.md +++ b/README.md @@ -1,201 +1,11 @@ -# avalanche -avalanche is a modular front-end framework which can be extended with npm +# avalanchesass +avalanchesass is a modular front-end framework which can be extended with npm packages. The goal is to provide a workflow to manage the complexity of big front-end projects. -## Getting started -### Quick start -- Install [npm](https://docs.npmjs.com/getting-started/installing-node) and -[gulp](https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md) on -your system (if not already installed). -- Install avalanche globally `npm install -g avalanchesass`. -- Run `avalanchesass --template="project" --name="Your project name"` to create -a new avalanche project in the current directory. -- Run `npm install` inside your newly created project directory. -- Run `gulp` to start the build process. - -### Extend avalanche -The high modularity of avalanche requires that every part of the system is a -distinct package. There are multiple package types: - -- **Function:** custom SASS functions -- **Base:** base styles like typography and other global default styles (mostly -unclassed HTML elements) -- **Object:** non-cosmetic styles (such as the famous media object) -- **Component:** concrete, implementation-specific piece of UI -- **Utility:** utility classes that do specific things (for example clearfix) - -You can find various available packages on -[npm](https://www.npmjs.com/browse/keyword/avalanchesass-package) -To extend your installation with a preconfigured package open your -`package.json` file, add the package to your *dependencies* and run -`npm install` afterwards. - -```json -"dependencies": { - "avalanchesass_base_default": "^3.0.0", - "avalanchesass_base_form": "^3.0.0", - "avalanchesass_base_typography": "^3.0.0", - "avalanchesass_object_media": "^3.0.0", - "normalize-scss": "^4.0.3" -} -``` - -## Working with avalanche -### Gulp -avalanche utilizes [gulp](http://gulpjs.com/) as build system. At the beginning -of the `gulpfile.js`, inside your project directory you can find a config -variable. Change the settings according to your needs. - -To start the build process, you can run `gulp` in your command line application -of choice. This starts the default task which will watch for changes to files -inside your project directory and builds the CSS and JS code. - -After the CSS and JS code is generated, the built in -[browsersync](https://www.browsersync.io/) tool will automatically refresh the -browser for you. - -### Extend packages -If you wan’t to make changes to a class defined by a package it is recommended -to create a custom package with the name `_PACKAGE_NAME_extend.scss` in the scss -directory of your project. - -#### Example -Extending the `.c-button` class of the button component: - -- Create a file `_button_extend.scss` in `scss/component`. -- Define the `.c-button` class and override or change it’s properties. -- You can also remove properties by setting their value to `initial` and adding -a `/*!remove*/` comment at the end of the line. - -```scss -.c-button { - padding: initial;/*!remove*/ - text-transform: uppercase; -} -``` - -**Attention:** removing properties and merging extended classes, will only -happen in the minified version of the CSS code. But the styling of your site -will be the same: setting a property value to `initial` has the same effect as -removing the property from the original class. Extending the original class by -defining it a second time, uses the default cascading behavior of CSS. - -### Override package variables -Most packages define there own default variables which you can override to -change the CSS output. There are two ways how to override variables of external -and custom packages: - -1. Similar to the extending of packages, you can create a separate file in which -you define the variables you want to override (for example -`_button_variable.scss`). -2. If you prefer to have one big file with all the variables inside, you can -also override package variables inside the `_variable.scss` file in your -projects `scss` directory. - -### CLI -`avalanchesass --template="" [--type=""] [--name=""] [--path=""]` - -#### Options -- `--template` *mandatory* - possible values: project | package | package-custom -- `--type` *optional* - possible values: Function | Base | Object | Component | Utility - default value: Component -- `--name` *optional* - possible values: "Your Project Name" - default value: "Avalanche Project" -- `--path` *optional* - possible values: /path/to/somewhere - default value: current working directory - -#### Examples -**Create a project** -`avalanchesass --template="project" --name="Project Name"` - -**Create a `Component` package** -`avalanchesass --template="package" --type="Component" --name="Package Name"` - -**Create a custom `Object` package** *assuming you are in the project diretory* -`avalanchesass --template="package-custom" --type="Object" --name="Package Name" --path="scss/object"` - -### BEM -avalanche uses the [BEM syntax](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/). -To make the meaning of the classes more transparent every BEM class name is -[namespaced](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/). -The BEM syntax helps to prevent [side effects in CSS](http://philipwalton.com/articles/side-effects-in-css/) -and the informative nature of the naming convention makes it ideal for teams and -larger projects. - -```css -.c-block {} -.c-block__element {} -.c-block--modifier {} - -.c-menu {} -.c-menu__link {} -.c-menu--horizontal {} -``` - -### Style guide -avalanche uses [mdcss](https://github.com/jonathantneal/mdcss) to automatically -generate a style guide from CSS comments in markdown syntax -([avalanche style guide DEMO](http://avalanche.oberlehner.net)). - -Please follow the [official mdcss documentation](https://github.com/jonathantneal/mdcss#writing-documentation) -on how to format comments in your SCSS code for the style guide. - -To generate the style guide run `gulp style_guide`. You can also run -`gulp watch:style_guide` instead of the default `gulp` task to start the build -process. This automatically generates the style guide on every change you make -to your code base. - -### CSS extraction -[HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) is coming and changes the way -[how we should build websites](https://mattwilcox.net/web-development/http2-for-front-end-web-developers). -With HTTP/2 it can be faster to load multiple small files (but only those which -are really needed) instead of one big file (with a potential overhead). Example: -the pager component isn’t used on most of your pages but the styles are loaded -on every request because they are concatenated into one big file. - -With CSS extraction you can split your styles into multiple separate CSS files. -This makes it possible to load just the styles you need. Amongst other things -there are the following advantages using this technique: - -- Increased cache granularity (avoids invalidating a whole sprite or -concatenated bundle when just a single part changes) -- Parallel downloading of files that before were bundled into one file -- Less energy/memory usage in the client - -By default every avalanche package is prepared for CSS extraction. -Run `gulp styles:extract` to create the CSS files - you can find them in -`dist-extract`. Or you can start a watch task with CSS extraction enabled: -`gulp watch:extract`. - -To make your custom packages CSS extraction ready, you have to add special -placeholder comments. - -```css -/* extract component_PACKAGE_NAME.css */ -.c-PACKAGE_NAME { … } -/* end extract component_PACKAGE_NAME.css */ -``` - -To prevent naming collisions it is recommended to add the package type as a -prefix to the name of the desired resulting CSS file. If you define two or more -extraction sections with the same name, those are combined into one file. - -It is recommended to also add placeholder comments for the package type. Because -extraction sections with the same name are combined you end up with separate -files per package type. - -```css -/* extract component.css */ -/* extract component_PACKAGE_NAME.css */ -.c-PACKAGE_NAME { … } -/* end extract component_PACKAGE_NAME.css */ -/* end extract component.css */ -``` +## Testing +- Test all packages at once: `npm test` +- Test a specific package: `npm test -- -p PACKAGE-NAME` ## About ### Author diff --git a/package.json b/package.json index f3fd78b..581ea1f 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,14 @@ "url": "https://github.com/avalanchesass/avalanchesass/issues" }, "devDependencies": { + "autoprefixer": "^6.5.0", "backstopjs": "^2.0.2", - "lerna": "2.0.0-beta.29" + "lerna": "2.0.0-beta.29", + "node-sass": "^3.10.1", + "node-sass-magic-importer": "^1.1.0", + "postcss-cli": "^2.6.0" + }, + "scripts": { + "test": "sh scripts/test.sh" } } diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index e78303b..1a04686 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -15,19 +15,5 @@ }, "bugs": { "url": "https://github.com/avalanchesass/avalanchesass/issues" - }, - "devDependencies": { - "autoprefixer": "^6.5.0", - "backstopjs": "^2.0.2", - "node-sass": "^3.10.1", - "node-sass-magic-importer": "^1.1.0", - "postcss-cli": "^2.6.0" - }, - "scripts": { - "test:buildcss": "node-sass --importer node_modules/node-sass-magic-importer test/test.scss | postcss -u autoprefixer -o test/tmp/test.css", - "test:buildhtml": "body=$(cat test/body.html | tr '\r\n' ' '); sed \"s~{{ body }}~${body}~g\" ../../test/test.html.template > test/tmp/test.html", - "test:cleanup": "rm -Rf test/tmp", - "test-reference": "npm run test:buildcss && npm run test:buildhtml && backstop reference --configPath=../../backstop.json && npm run test:cleanup", - "test": "npm run test:buildcss && npm run test:buildhtml && backstop test --configPath=../../backstop.json && npm run test:cleanup" } } diff --git a/scripts/test-reference.sh b/scripts/test-reference.sh new file mode 100644 index 0000000..7a7826f --- /dev/null +++ b/scripts/test-reference.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -e + +while [[ $# -gt 1 ]] +do +key="$1" +case $key in + -p|--package) + PACKAGE="$2" + shift + ;; + *) + ;; +esac +shift +done + +for f in packages/*; do + if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then + continue + fi + + if [ -d "$f/test" ]; then + # Build CSS + node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" + # Build HTML + BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" + # Create test reference + ( cd "$f" && ../../node_modules/backstopjs/cli/index.js reference --configPath=../../backstop.json ) + # Cleanup + rm -Rf "$f/test/tmp" + fi +done diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100644 index 0000000..6d5dfc7 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -e + +while [[ $# -gt 1 ]] +do +key="$1" +case $key in + -p|--package) + PACKAGE="$2" + shift + ;; + *) + ;; +esac +shift +done + +for f in packages/*; do + if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then + continue + fi + + if [ -d "$f/test" ]; then + # Build CSS + node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" + # Build HTML + BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" + # Test + ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) + # Cleanup + rm -Rf "$f/test/tmp" + fi +done From 56be69e0f45fd9336cafd2c8e005559128bbae0f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 19:43:27 +0200 Subject: [PATCH 240/355] Implement sassdoc workflow, use sassdoc comments --- .gitignore | 1 + package.json | 4 +- .../scss/_mixin.scss | 46 +++++++++++++++++-- .../scss/_variable.scss | 11 ++++- .../scss/{_index.scss => index.scss} | 0 5 files changed, 57 insertions(+), 5 deletions(-) rename packages/avalanchesass-object-grid/scss/{_index.scss => index.scss} (100%) diff --git a/.gitignore b/.gitignore index 2f853e8..d0f2774 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,5 @@ backstop_data bitmaps_test bower_components node_modules +sassdoc tmp diff --git a/package.json b/package.json index 581ea1f..752c5e2 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,11 @@ "lerna": "2.0.0-beta.29", "node-sass": "^3.10.1", "node-sass-magic-importer": "^1.1.0", - "postcss-cli": "^2.6.0" + "postcss-cli": "^2.6.0", + "sassdoc": "^2.1.20" }, "scripts": { + "doc": "sassdoc packages/", "test": "sh scripts/test.sh" } } diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index e860306..b81a450 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,8 +1,31 @@ @import 'variable'; -/** - * Mixins - */ +//// +/// Fluid width, responsive grid system. +/// +/// @group Object: grid +/// @author Markus Oberlehner +//// + +/// Grid wrapper. +/// +/// @param {Number [unit]} $-spacing-vertical [$o-grid-spacing-vertical] +/// Vertical spacing size. +/// @param {Number [unit]} $-spacing-horizontal [$o-grid-spacing-horizontal] +/// Horizontal spacing size. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid(1em, 1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// display: flex; +/// flex-wrap: wrap; +/// margin-top: -1em; +/// margin-left: -1em; +/// } @mixin o-grid($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { display: flex; flex-wrap: wrap; @@ -14,6 +37,23 @@ } } +/// Grid item. +/// +/// @param {Number [unit]} $-spacing-vertical [$o-grid-spacing-vertical] +/// Vertical spacing size. +/// @param {Number [unit]} $-spacing-horizontal [$o-grid-spacing-horizontal] +/// Horizontal spacing size. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid-item(1em, 1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// padding-top: 1em; +/// padding-left: 1em; +/// } @mixin o-grid-item($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { $base-box-sizing-reset: false !default; @if not $base-box-sizing-reset { diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 8a10e6e..2cdaae9 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -3,6 +3,15 @@ // @TODO: import default variables. $spacing-m: 1em !default; -// Spacing. +//// +/// @group Object: grid +/// @author Markus Oberlehner +//// + +/// Vertical spacing. +/// @type Number (Unit) $o-grid-spacing-vertical: $spacing-m !default; + +/// Horizontal spacing. +/// @type Number (Unit) $o-grid-spacing-horizontal: $spacing-m !default; diff --git a/packages/avalanchesass-object-grid/scss/_index.scss b/packages/avalanchesass-object-grid/scss/index.scss similarity index 100% rename from packages/avalanchesass-object-grid/scss/_index.scss rename to packages/avalanchesass-object-grid/scss/index.scss From 808886303492f800bd9ed0c8e4fcc94fcc477a6e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 1 Oct 2016 20:30:38 +0200 Subject: [PATCH 241/355] SASS linting --- .stylelintrc | 3 +++ package.json | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .stylelintrc diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..eb2909e --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-modularis" +} diff --git a/package.json b/package.json index 752c5e2..efea27f 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,13 @@ "node-sass": "^3.10.1", "node-sass-magic-importer": "^1.1.0", "postcss-cli": "^2.6.0", - "sassdoc": "^2.1.20" + "sassdoc": "^2.1.20", + "stylelint": "^7.3.1", + "stylelint-config-modularis": "1.0.0" }, "scripts": { "doc": "sassdoc packages/", + "lint": "stylelint packages/**/*.scss", "test": "sh scripts/test.sh" } } From 1aac821fdcf8699be0c5f45adb8d4d39a9d15fad Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 07:36:45 +0200 Subject: [PATCH 242/355] Use glob pattern for sassdoc command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efea27f..1670e03 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "stylelint-config-modularis": "1.0.0" }, "scripts": { - "doc": "sassdoc packages/", + "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", "test": "sh scripts/test.sh" } From d3c2a435244f626fe81623e27f544ef2f0329f6d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 07:42:19 +0200 Subject: [PATCH 243/355] Use "avalanchesass" only in the context of the npm namespace --- CONTRIBUTING.md | 10 +++++----- README.md | 6 ++---- backstop.json | 2 +- package.json | 2 +- packages/avalanchesass-object-grid/package.json | 6 +++--- test/test.html.template | 2 +- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1901d5a..ac7cc9a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,11 +14,11 @@ Pull requests are the greatest contributions, so be sure they are focused in sco 1. To begin, [fork this project], clone your fork, and add our upstream. ```bash # Clone your fork of the repo into the current directory - git clone https://github.com//avalanchesass + git clone https://github.com//avalanche # Navigate to the newly cloned directory - cd avalanchesass + cd avalanche # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/avalanchesass/avalanchesass + git remote add upstream https://github.com/avalanchesass/avalanche # Install the tools necessary for development npm install ``` @@ -45,8 +45,8 @@ Pull requests are the greatest contributions, so be sure they are focused in sco 4. Now [open a pull request] with a clear title and description. -[already been reported]: https://github.com/avalanchesass/avalanchesass/issues -[fork this project]: https://github.com/avalanchesass/avalanchesass/fork +[already been reported]: https://github.com/avalanchesass/avalanche/issues +[fork this project]: https://github.com/avalanchesass/avalanche/fork [live example]: http://codepen.io/pen [open a pull request]: https://help.github.com/articles/using-pull-requests/ [reduced test case]: https://css-tricks.com/reduced-test-cases/ diff --git a/README.md b/README.md index d9b4aef..a1125be 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ -# avalanchesass -avalanchesass is a modular front-end framework which can be extended with npm -packages. The goal is to provide a workflow to manage the complexity of big -front-end projects. +# avalanche +avalanche is a modular SASS framework which can be extended with npm packages. The goal is to provide a workflow to manage the complexity of big front-end projects. ## Testing - Test all packages at once: `npm test` diff --git a/backstop.json b/backstop.json index f8da6cc..e99a050 100644 --- a/backstop.json +++ b/backstop.json @@ -23,7 +23,7 @@ ], "scenarios": [ { - "label": "avalanchesass", + "label": "avalanche", "url": "test/tmp/test.html", "selectors": [ "document" diff --git a/package.json b/package.json index 1670e03..a91bbf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "avalanchesass", - "description": "A modular SASS framework", + "description": "A modular SASS framework which can be extended with npm packages", "keywords": [ "avalanchesass" ], diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 1a04686..72ca5d3 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass-object-grid", "description": "Fluid width, responsive grid system", "keywords": [ - "avalanchesass-package", + "avalanche-package", "sass" ], "version": "4.0.0-alpha.1", @@ -11,9 +11,9 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanchesass/tree/master/packages/avalanche-object-grid" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanche-object-grid" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanchesass/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" } } diff --git a/test/test.html.template b/test/test.html.template index 3be0a4a..162dbbb 100644 --- a/test/test.html.template +++ b/test/test.html.template @@ -3,7 +3,7 @@ - avalanchesass test + avalanche test From da096992b72035462f7f98b306b9b5e9ab6ff068 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 07:53:11 +0200 Subject: [PATCH 244/355] Make the grid package work better standalonw without width utility classes and fix the naming of the grid test files --- packages/avalanchesass-object-grid/scss/_mixin.scss | 6 ++---- ..._s.png => 64003731_avalanche_0_document_0_s.png} | Bin ..._m.png => 64003731_avalanche_0_document_1_m.png} | Bin ..._l.png => 64003731_avalanche_0_document_2_l.png} | Bin ...l.png => 64003731_avalanche_0_document_3_xl.png} | Bin packages/avalanchesass-object-grid/test/body.html | 6 +++--- 6 files changed, 5 insertions(+), 7 deletions(-) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanchesass_0_document_0_s.png => 64003731_avalanche_0_document_0_s.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanchesass_0_document_1_m.png => 64003731_avalanche_0_document_1_m.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanchesass_0_document_2_l.png => 64003731_avalanche_0_document_2_l.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanchesass_0_document_3_xl.png => 64003731_avalanche_0_document_3_xl.png} (100%) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index b81a450..ee4ea0e 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -55,10 +55,8 @@ /// padding-left: 1em; /// } @mixin o-grid-item($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { - $base-box-sizing-reset: false !default; - @if not $base-box-sizing-reset { - box-sizing: border-box; - } + flex-grow: 1; + box-sizing: border-box; @if $-spacing-vertical > 0 { padding-top: $-spacing-vertical; } diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_0_s.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_0_s.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_0_s.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_1_m.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_1_m.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_1_m.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_2_l.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_2_l.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_2_l.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_3_xl.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanchesass_0_document_3_xl.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_3_xl.png diff --git a/packages/avalanchesass-object-grid/test/body.html b/packages/avalanchesass-object-grid/test/body.html index 3977043..ea9e288 100644 --- a/packages/avalanchesass-object-grid/test/body.html +++ b/packages/avalanchesass-object-grid/test/body.html @@ -1,11 +1,11 @@
-
+
Grid item 1
-
+
Grid item 2
-
+
Grid item 3
From 5340ec0bddd33a8683c36ec5cb8cee2eac52e15e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 17:34:22 +0200 Subject: [PATCH 245/355] Implement raw website building functionality --- .gitignore | 1 + package.json | 2 + packages/avalanchesass-object-grid/README.md | 51 +++++++++++++++++-- .../scss/_mixin.scss | 2 + scripts/build-website.sh | 32 ++++++++++++ website/demo.html.template | 15 ++++++ 6 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 scripts/build-website.sh create mode 100644 website/demo.html.template diff --git a/.gitignore b/.gitignore index d0f2774..90d7b82 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ Thumbs.db backstop_data bitmaps_test bower_components +dist node_modules sassdoc tmp diff --git a/package.json b/package.json index a91bbf3..27dbb05 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "devDependencies": { "autoprefixer": "^6.5.0", "backstopjs": "^2.0.2", + "handlebarsjs-cli": "0.0.1", "lerna": "2.0.0-beta.29", + "marked": "^0.3.6", "node-sass": "^3.10.1", "node-sass-magic-importer": "^1.1.0", "postcss-cli": "^2.6.0", diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 3ba5025..95177c4 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -7,14 +7,59 @@ npm install avalanchesass-object-grid --save ``` ## Basic usage -```css -/* Import the main file. */ +```scss +// Import the main file. @import '~avalanchesass-object-grid'; -/* Import just the mixin file. */ +// Import just the mixin file. @import '~avalanchesass-object-grid/mixin'; ``` +## Demo +### Default +```html +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+``` + +### Mixins +```scss +@import '~avalanchesass-object-grid/mixin'; + +// Usage. +.grid { + @include o-grid(1em, 1em); +} + +.grid__item { + @include o-grid-item(1em, 1em); +} + +// Output. +.grid { + display: flex; + flex-wrap: wrap; + margin-top: -1em; + margin-left: -1em; +} + +.grid__item { + flex-grow: 1; + box-sizing: border-box; + padding-top: 1em; + padding-left: 1em; +} +``` + ## About ### Author Markus Oberlehner diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index ee4ea0e..039c9d5 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -51,6 +51,8 @@ /// /// @example css - CSS Output /// .element { +/// flex-grow: 1; +/// box-sizing: border-box; /// padding-top: 1em; /// padding-left: 1em; /// } diff --git a/scripts/build-website.sh b/scripts/build-website.sh new file mode 100644 index 0000000..0926bf4 --- /dev/null +++ b/scripts/build-website.sh @@ -0,0 +1,32 @@ +#!/bin/sh +set -e + +for f in packages/*; do + if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then + continue + fi + + if [ -f "$f/README.md" ]; then + # BODY=$(node_modules/marked/bin/marked -i "$f/README.md") + BODY=$(cat "$f/README.md") + EXAMPLE=$(pcregrep -M '```html(\n|.)*?```' "$f/README.md") + EXAMPLE=${EXAMPLE/'```html'/} + EXAMPLE=${EXAMPLE/'```'/} + BODY=${BODY/'```html'/$EXAMPLE'```html'} + BODY=$(echo "$BODY" | node_modules/marked/bin/marked) + TEMPLATE=$(cat website/demo.html.template) + mkdir -p "website/dist/$f" + echo "$TEMPLATE" | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "website/dist/$f/test.html" + + + + # Build CSS + # node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" + # # Build HTML + # BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" + # # Test + # ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) + # # Cleanup + # rm -Rf "$f/test/tmp" + fi +done diff --git a/website/demo.html.template b/website/demo.html.template new file mode 100644 index 0000000..34d4ef6 --- /dev/null +++ b/website/demo.html.template @@ -0,0 +1,15 @@ + + + + + + avalanche + + + + + + + {{{ body }}} + + From 5eff85964b3b1cbab703ef2fb8682606b329872e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 17:46:28 +0200 Subject: [PATCH 246/355] Generate CSS for package demo sites --- scripts/build-website.sh | 15 +++------------ website/demo.html.template | 4 ++-- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/scripts/build-website.sh b/scripts/build-website.sh index 0926bf4..15b66b4 100644 --- a/scripts/build-website.sh +++ b/scripts/build-website.sh @@ -7,7 +7,6 @@ for f in packages/*; do fi if [ -f "$f/README.md" ]; then - # BODY=$(node_modules/marked/bin/marked -i "$f/README.md") BODY=$(cat "$f/README.md") EXAMPLE=$(pcregrep -M '```html(\n|.)*?```' "$f/README.md") EXAMPLE=${EXAMPLE/'```html'/} @@ -16,17 +15,9 @@ for f in packages/*; do BODY=$(echo "$BODY" | node_modules/marked/bin/marked) TEMPLATE=$(cat website/demo.html.template) mkdir -p "website/dist/$f" - echo "$TEMPLATE" | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "website/dist/$f/test.html" - - - # Build CSS - # node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" - # # Build HTML - # BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" - # # Test - # ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) - # # Cleanup - # rm -Rf "$f/test/tmp" + node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/scss/index.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "website/dist/$f/demo.css" + # Build HTML + echo "$TEMPLATE" | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "website/dist/$f/index.html" fi done diff --git a/website/demo.html.template b/website/demo.html.template index 34d4ef6..98eff46 100644 --- a/website/demo.html.template +++ b/website/demo.html.template @@ -6,8 +6,8 @@ avalanche - - + + {{{ body }}} From 9d1a1dd491a96931e4c7004573a8abfef97c67dc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 17:52:35 +0200 Subject: [PATCH 247/355] Use handlebars for generating test html files --- scripts/test-reference.sh | 3 ++- scripts/test.sh | 3 ++- test/test.html.template | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/test-reference.sh b/scripts/test-reference.sh index 7a7826f..ba63756 100644 --- a/scripts/test-reference.sh +++ b/scripts/test-reference.sh @@ -24,7 +24,8 @@ for f in packages/*; do # Build CSS node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" # Build HTML - BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" + BODY=$(cat "$f/test/body.html") + echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" # Create test reference ( cd "$f" && ../../node_modules/backstopjs/cli/index.js reference --configPath=../../backstop.json ) # Cleanup diff --git a/scripts/test.sh b/scripts/test.sh index 6d5dfc7..6e635c8 100644 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -24,7 +24,8 @@ for f in packages/*; do # Build CSS node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" # Build HTML - BODY=$(cat "$f/test/body.html" | tr '\r\n' ' '); sed "s~{{ body }}~${BODY}~g" test/test.html.template > "$f/test/tmp/test.html" + BODY=$(cat "$f/test/body.html") + echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" # Test ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) # Cleanup diff --git a/test/test.html.template b/test/test.html.template index 162dbbb..e6193c9 100644 --- a/test/test.html.template +++ b/test/test.html.template @@ -9,6 +9,6 @@ - {{ body }} + {{{ body }}} From 0b53529a793a8b2046186ee4184e39e2d31ccd26 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 2 Oct 2016 17:54:20 +0200 Subject: [PATCH 248/355] Define template variable outside of loop because it does not change --- scripts/build-website.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build-website.sh b/scripts/build-website.sh index 15b66b4..791f083 100644 --- a/scripts/build-website.sh +++ b/scripts/build-website.sh @@ -1,6 +1,8 @@ #!/bin/sh set -e +TEMPLATE=$(cat website/demo.html.template) + for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then continue @@ -13,7 +15,6 @@ for f in packages/*; do EXAMPLE=${EXAMPLE/'```'/} BODY=${BODY/'```html'/$EXAMPLE'```html'} BODY=$(echo "$BODY" | node_modules/marked/bin/marked) - TEMPLATE=$(cat website/demo.html.template) mkdir -p "website/dist/$f" # Build CSS node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/scss/index.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "website/dist/$f/demo.css" From 056dd56fc9bbef9d33663fcb8000fe8d50ffd886 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 4 Oct 2016 19:46:28 +0200 Subject: [PATCH 249/355] Start to convert shell to node scripts --- package.json | 3 ++- scripts/_build-test-css.js | 23 +++++++++++++++++++++++ scripts/_get-directories.js | 8 ++++++++ scripts/test.js | 18 ++++++++++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 scripts/_build-test-css.js create mode 100644 scripts/_get-directories.js create mode 100644 scripts/test.js diff --git a/package.json b/package.json index 27dbb05..fd78c71 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "marked": "^0.3.6", "node-sass": "^3.10.1", "node-sass-magic-importer": "^1.1.0", - "postcss-cli": "^2.6.0", + "postcss": "^5.2.4", + "postcss-scss": "^0.3.1", "sassdoc": "^2.1.20", "stylelint": "^7.3.1", "stylelint-config-modularis": "1.0.0" diff --git a/scripts/_build-test-css.js b/scripts/_build-test-css.js new file mode 100644 index 0000000..9d7a071 --- /dev/null +++ b/scripts/_build-test-css.js @@ -0,0 +1,23 @@ +const sass = require('node-sass'); +const magicImporter = require('node-sass-magic-importer'); +const path = require('path'); +const postcss = require('postcss'); +const postcssScssSyntax = require('postcss-scss'); +const autoprefixer = require('autoprefixer'); +const fs = require('fs'); + +module.exports = (packageName) => { + const testPath = path.join(process.cwd(), 'packages', packageName, 'test'); + const tmpPath = path.join(testPath, 'tmp'); + const scssFile = path.join(testPath, 'test.scss'); + + let css = sass.renderSync({ + file: scssFile + }).css.toString(); + css = postcss(autoprefixer).process(css, { syntax: postcssScssSyntax }).css; + + try { + fs.mkdirSync(tmpPath); + } catch (error) {} + fs.writeFileSync(path.join(tmpPath, 'test.css'), css); +}; diff --git a/scripts/_get-directories.js b/scripts/_get-directories.js new file mode 100644 index 0000000..cc68dc0 --- /dev/null +++ b/scripts/_get-directories.js @@ -0,0 +1,8 @@ +const path = require('path'); +const fs = require('fs'); + +module.exports = (srcpath) => { + return fs.readdirSync(srcpath).filter(function(file) { + return fs.statSync(path.join(srcpath, file)).isDirectory(); + }); +}; diff --git a/scripts/test.js b/scripts/test.js new file mode 100644 index 0000000..1fbd455 --- /dev/null +++ b/scripts/test.js @@ -0,0 +1,18 @@ +const path = require('path'); + +const getDirectories = require(path.join(__dirname, '_get-directories.js')); +const buildTestCss = require(path.join(__dirname, '_build-test-css.js')); + +const packages = getDirectories('packages'); + +packages.forEach((packageName) => { + buildTestCss(packageName); +}); + +// # Build HTML +// BODY=$(cat "$f/test/body.html") +// echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" +// # Test +// ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) +// # Cleanup +// rm -Rf "$f/test/tmp" From 7c38629eed6cdbbf59a8cb84772fa9409da9c8d6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 5 Oct 2016 20:20:58 +0200 Subject: [PATCH 250/355] Remove node scripts, optimize shell scripts --- package.json | 1 + .../test/{body.html => body.hbs} | 0 scripts/_build-test-css.js | 23 ------------------ scripts/_build-test-parameter.sh | 16 +++++++++++++ scripts/_get-directories.js | 8 ------- scripts/build-test-css.sh | 8 +++++++ scripts/build-test-html.sh | 9 +++++++ scripts/test-reference.sh | 24 ++++++------------- scripts/test.js | 18 -------------- scripts/test.sh | 24 ++++++------------- test/{test.html.template => test.hbs} | 0 11 files changed, 48 insertions(+), 83 deletions(-) rename packages/avalanchesass-object-grid/test/{body.html => body.hbs} (100%) delete mode 100644 scripts/_build-test-css.js create mode 100644 scripts/_build-test-parameter.sh delete mode 100644 scripts/_get-directories.js create mode 100644 scripts/build-test-css.sh create mode 100644 scripts/build-test-html.sh delete mode 100644 scripts/test.js rename test/{test.html.template => test.hbs} (100%) diff --git a/package.json b/package.json index fd78c71..cdc9481 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "scripts": { "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", + "test:reference": "sh scripts/test-reference.sh", "test": "sh scripts/test.sh" } } diff --git a/packages/avalanchesass-object-grid/test/body.html b/packages/avalanchesass-object-grid/test/body.hbs similarity index 100% rename from packages/avalanchesass-object-grid/test/body.html rename to packages/avalanchesass-object-grid/test/body.hbs diff --git a/scripts/_build-test-css.js b/scripts/_build-test-css.js deleted file mode 100644 index 9d7a071..0000000 --- a/scripts/_build-test-css.js +++ /dev/null @@ -1,23 +0,0 @@ -const sass = require('node-sass'); -const magicImporter = require('node-sass-magic-importer'); -const path = require('path'); -const postcss = require('postcss'); -const postcssScssSyntax = require('postcss-scss'); -const autoprefixer = require('autoprefixer'); -const fs = require('fs'); - -module.exports = (packageName) => { - const testPath = path.join(process.cwd(), 'packages', packageName, 'test'); - const tmpPath = path.join(testPath, 'tmp'); - const scssFile = path.join(testPath, 'test.scss'); - - let css = sass.renderSync({ - file: scssFile - }).css.toString(); - css = postcss(autoprefixer).process(css, { syntax: postcssScssSyntax }).css; - - try { - fs.mkdirSync(tmpPath); - } catch (error) {} - fs.writeFileSync(path.join(tmpPath, 'test.css'), css); -}; diff --git a/scripts/_build-test-parameter.sh b/scripts/_build-test-parameter.sh new file mode 100644 index 0000000..22c1556 --- /dev/null +++ b/scripts/_build-test-parameter.sh @@ -0,0 +1,16 @@ +#!/bin/sh +set -e + +while [[ $# -gt 1 ]] +do +key="$1" +case $key in + -p|--package) + PACKAGE="$2" + shift + ;; + *) + ;; +esac +shift +done diff --git a/scripts/_get-directories.js b/scripts/_get-directories.js deleted file mode 100644 index cc68dc0..0000000 --- a/scripts/_get-directories.js +++ /dev/null @@ -1,8 +0,0 @@ -const path = require('path'); -const fs = require('fs'); - -module.exports = (srcpath) => { - return fs.readdirSync(srcpath).filter(function(file) { - return fs.statSync(path.join(srcpath, file)).isDirectory(); - }); -}; diff --git a/scripts/build-test-css.sh b/scripts/build-test-css.sh new file mode 100644 index 0000000..a8a6266 --- /dev/null +++ b/scripts/build-test-css.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$DIR/_build-test-parameter.sh" + +node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "packages/$PACKAGE/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "packages/$PACKAGE/test/tmp/test.css" diff --git a/scripts/build-test-html.sh b/scripts/build-test-html.sh new file mode 100644 index 0000000..63a0cdd --- /dev/null +++ b/scripts/build-test-html.sh @@ -0,0 +1,9 @@ +#!/bin/sh +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$DIR/_build-test-parameter.sh" + +BODY=$(cat "packages/$PACKAGE/test/body.hbs") +echo $(cat test/test.hbs) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" diff --git a/scripts/test-reference.sh b/scripts/test-reference.sh index ba63756..cae6a9b 100644 --- a/scripts/test-reference.sh +++ b/scripts/test-reference.sh @@ -1,19 +1,9 @@ #!/bin/sh set -e -while [[ $# -gt 1 ]] -do -key="$1" -case $key in - -p|--package) - PACKAGE="$2" - shift - ;; - *) - ;; -esac -shift -done +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$DIR/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then @@ -21,11 +11,11 @@ for f in packages/*; do fi if [ -d "$f/test" ]; then - # Build CSS - node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" + mkdir -p "$f/test/tmp" # Build HTML - BODY=$(cat "$f/test/body.html") - echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" + sh scripts/build-test-html.sh --package $(basename $f) + # Build CSS + sh scripts/build-test-css.sh --package $(basename $f) # Create test reference ( cd "$f" && ../../node_modules/backstopjs/cli/index.js reference --configPath=../../backstop.json ) # Cleanup diff --git a/scripts/test.js b/scripts/test.js deleted file mode 100644 index 1fbd455..0000000 --- a/scripts/test.js +++ /dev/null @@ -1,18 +0,0 @@ -const path = require('path'); - -const getDirectories = require(path.join(__dirname, '_get-directories.js')); -const buildTestCss = require(path.join(__dirname, '_build-test-css.js')); - -const packages = getDirectories('packages'); - -packages.forEach((packageName) => { - buildTestCss(packageName); -}); - -// # Build HTML -// BODY=$(cat "$f/test/body.html") -// echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" -// # Test -// ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) -// # Cleanup -// rm -Rf "$f/test/tmp" diff --git a/scripts/test.sh b/scripts/test.sh index 6e635c8..67d5c1b 100644 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,19 +1,9 @@ #!/bin/sh set -e -while [[ $# -gt 1 ]] -do -key="$1" -case $key in - -p|--package) - PACKAGE="$2" - shift - ;; - *) - ;; -esac -shift -done +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$DIR/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then @@ -21,11 +11,11 @@ for f in packages/*; do fi if [ -d "$f/test" ]; then - # Build CSS - node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "$f/test/tmp/test.css" + mkdir -p "$f/test/tmp" # Build HTML - BODY=$(cat "$f/test/body.html") - echo $(cat test/test.html.template) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "$f/test/tmp/test.html" + sh scripts/build-test-html.sh --package $(basename $f) + # Build CSS + sh scripts/build-test-css.sh --package $(basename $f) # Test ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) # Cleanup diff --git a/test/test.html.template b/test/test.hbs similarity index 100% rename from test/test.html.template rename to test/test.hbs From 20b6fb182edb90326bd6e58c9b4aca533b69cde2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 6 Oct 2016 19:42:15 +0200 Subject: [PATCH 251/355] Use .hbs template for website, add build:website npm script --- package.json | 1 + scripts/build-website.sh | 2 +- website/{demo.html.template => demo.hbs} | 0 3 files changed, 2 insertions(+), 1 deletion(-) rename website/{demo.html.template => demo.hbs} (100%) diff --git a/package.json b/package.json index cdc9481..ebb0f43 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "scripts": { "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", + "build:website": "sh scripts/build-website.sh", "test:reference": "sh scripts/test-reference.sh", "test": "sh scripts/test.sh" } diff --git a/scripts/build-website.sh b/scripts/build-website.sh index 791f083..74930f4 100644 --- a/scripts/build-website.sh +++ b/scripts/build-website.sh @@ -1,7 +1,7 @@ #!/bin/sh set -e -TEMPLATE=$(cat website/demo.html.template) +TEMPLATE=$(cat website/demo.hbs) for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then diff --git a/website/demo.html.template b/website/demo.hbs similarity index 100% rename from website/demo.html.template rename to website/demo.hbs From 3fdd77247b54cba92062bfc2a60f22815fa1d58d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 6 Oct 2016 19:45:35 +0200 Subject: [PATCH 252/355] Remove output example from the grid package --- packages/avalanchesass-object-grid/README.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 95177c4..fb13be8 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -44,22 +44,6 @@ npm install avalanchesass-object-grid --save @include o-grid-item(1em, 1em); } -// Output. -.grid { - display: flex; - flex-wrap: wrap; - margin-top: -1em; - margin-left: -1em; -} - -.grid__item { - flex-grow: 1; - box-sizing: border-box; - padding-top: 1em; - padding-left: 1em; -} -``` - ## About ### Author Markus Oberlehner From 95f7084a25a57162a4e4d469ac418ae4b555fd99 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 6 Oct 2016 19:48:27 +0200 Subject: [PATCH 253/355] Fix grid README --- packages/avalanchesass-object-grid/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index fb13be8..51a0cad 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -43,6 +43,7 @@ npm install avalanchesass-object-grid --save .grid__item { @include o-grid-item(1em, 1em); } +``` ## About ### Author From eeb9376867dc0678344828ceaf20571526f17343 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 6 Oct 2016 20:01:27 +0200 Subject: [PATCH 254/355] Add static webserver npm script --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index ebb0f43..d966b35 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "postcss": "^5.2.4", "postcss-scss": "^0.3.1", "sassdoc": "^2.1.20", + "static-server": "^2.0.3", "stylelint": "^7.3.1", "stylelint-config-modularis": "1.0.0" }, @@ -33,6 +34,7 @@ "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", "build:website": "sh scripts/build-website.sh", + "server": "static-server website/dist", "test:reference": "sh scripts/test-reference.sh", "test": "sh scripts/test.sh" } From a35c426483e13989d709218aaa0df76f0b7084e8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 6 Oct 2016 20:48:34 +0200 Subject: [PATCH 255/355] Optimize the website build process --- package.json | 2 +- scripts/build-test-html.sh | 2 +- scripts/build-website.sh | 7 +++++-- website/demo.hbs | 15 --------------- website/index.hbs | 3 +++ website/templates/_footer.hbs | 4 ++++ website/templates/_header.hbs | 9 +++++++++ 7 files changed, 23 insertions(+), 19 deletions(-) delete mode 100644 website/demo.hbs create mode 100644 website/index.hbs create mode 100644 website/templates/_footer.hbs create mode 100644 website/templates/_header.hbs diff --git a/package.json b/package.json index d966b35..570405d 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "devDependencies": { "autoprefixer": "^6.5.0", "backstopjs": "^2.0.2", - "handlebarsjs-cli": "0.0.1", + "handlebars-cmd": "^0.1.4", "lerna": "2.0.0-beta.29", "marked": "^0.3.6", "node-sass": "^3.10.1", diff --git a/scripts/build-test-html.sh b/scripts/build-test-html.sh index 63a0cdd..1fee9aa 100644 --- a/scripts/build-test-html.sh +++ b/scripts/build-test-html.sh @@ -6,4 +6,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/_build-test-parameter.sh" BODY=$(cat "packages/$PACKAGE/test/body.hbs") -echo $(cat test/test.hbs) | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" +echo $(cat test/test.hbs) | node_modules/handlebars-cmd/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" diff --git a/scripts/build-website.sh b/scripts/build-website.sh index 74930f4..00c5947 100644 --- a/scripts/build-website.sh +++ b/scripts/build-website.sh @@ -1,7 +1,9 @@ #!/bin/sh set -e -TEMPLATE=$(cat website/demo.hbs) +TEMPLATE=$(cat website/index.hbs) +CSS='' +CSS=${CSS//\"/\\\"} for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then @@ -19,6 +21,7 @@ for f in packages/*; do # Build CSS node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/scss/index.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "website/dist/$f/demo.css" # Build HTML - echo "$TEMPLATE" | node_modules/handlebarsjs-cli/index.js --body "$BODY" > "website/dist/$f/index.html" + HEADER="{\"css\": \"$CSS\", \"title\": \"$(basename $f)\"}" + echo "$TEMPLATE" | node_modules/handlebars-cmd/index.js --header "$HEADER" --body "$BODY" > "website/dist/$f/index.html" fi done diff --git a/website/demo.hbs b/website/demo.hbs deleted file mode 100644 index 98eff46..0000000 --- a/website/demo.hbs +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - avalanche - - - - - - - {{{ body }}} - - diff --git a/website/index.hbs b/website/index.hbs new file mode 100644 index 0000000..fae26d4 --- /dev/null +++ b/website/index.hbs @@ -0,0 +1,3 @@ +{{{ include 'website/templates/_header.hbs' header }}} + {{{ body }}} +{{{ include 'website/templates/_footer.hbs' }}} diff --git a/website/templates/_footer.hbs b/website/templates/_footer.hbs new file mode 100644 index 0000000..d563a24 --- /dev/null +++ b/website/templates/_footer.hbs @@ -0,0 +1,4 @@ + + {{{ scripts }}} + + diff --git a/website/templates/_header.hbs b/website/templates/_header.hbs new file mode 100644 index 0000000..4bdfaec --- /dev/null +++ b/website/templates/_header.hbs @@ -0,0 +1,9 @@ + + + + + + {{ title }} + + {{{ css }}} + From f7f7d5e4e80ccac0e4963bad6eaa6cc1c0aba299 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 13 Oct 2016 19:42:46 +0200 Subject: [PATCH 256/355] Update width utility to match 4.x.x changes --- .../avalanchesass-utility-grid/.gitignore | 3 - .../avalanchesass-utility-grid/.npmignore | 1 + packages/avalanchesass-utility-grid/LICENSE | 340 ------------------ packages/avalanchesass-utility-grid/README.md | 47 ++- .../avalanchesass-utility-grid/package.json | 21 +- .../scss/_index.scss | 47 --- .../scss/_mixin.scss | 35 +- .../scss/_style_guide.scss | 8 - .../scss/_variable.scss | 17 - .../scss/index.scss | 18 + 10 files changed, 86 insertions(+), 451 deletions(-) delete mode 100644 packages/avalanchesass-utility-grid/.gitignore create mode 100644 packages/avalanchesass-utility-grid/.npmignore delete mode 100644 packages/avalanchesass-utility-grid/LICENSE delete mode 100644 packages/avalanchesass-utility-grid/scss/_index.scss delete mode 100644 packages/avalanchesass-utility-grid/scss/_style_guide.scss create mode 100644 packages/avalanchesass-utility-grid/scss/index.scss diff --git a/packages/avalanchesass-utility-grid/.gitignore b/packages/avalanchesass-utility-grid/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/avalanchesass-utility-grid/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/avalanchesass-utility-grid/.npmignore b/packages/avalanchesass-utility-grid/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/avalanchesass-utility-grid/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/avalanchesass-utility-grid/LICENSE b/packages/avalanchesass-utility-grid/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/avalanchesass-utility-grid/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-grid/README.md index 64f4f57..53246b2 100644 --- a/packages/avalanchesass-utility-grid/README.md +++ b/packages/avalanchesass-utility-grid/README.md @@ -1,24 +1,53 @@ -# avalanchesass_utility_width +# avalanchesass-utility-width Width classes. ## Install ``` -npm install avalanchesass_utility_width --save +npm install avalanchesass-utility-width --save ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_width'; +```scss +// Import the main file. +@import '~avalanchesass-utility-width'; -/* Import just the mixin file. */ -@import 'avalanchesass_utility_width/mixin'; +// Import just the mixin file. +@import '~avalanchesass-utility-width/mixin'; +``` + +## Demo +### Default +```html +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+``` + +### Mixins +```scss +@import '~avalanchesass-utility-width/mixin'; + +// Usage. +.u-width-1/12 { + @include u-width(6, 12); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT + diff --git a/packages/avalanchesass-utility-grid/package.json b/packages/avalanchesass-utility-grid/package.json index ec80b0c..658732c 100644 --- a/packages/avalanchesass-utility-grid/package.json +++ b/packages/avalanchesass-utility-grid/package.json @@ -1,26 +1,19 @@ { - "name": "avalanchesass_utility_width", + "name": "avalanchesass-utility-width", "description": "Width classes", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", "sass" ], - "version": "3.0.1", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_width", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_width" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanche-utility-width" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_width/issues" - }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" + "url": "https://github.com/avalanchesass/avalanche/issues" } } - diff --git a/packages/avalanchesass-utility-grid/scss/_index.scss b/packages/avalanchesass-utility-grid/scss/_index.scss deleted file mode 100644 index d92390f..0000000 --- a/packages/avalanchesass-utility-grid/scss/_index.scss +++ /dev/null @@ -1,47 +0,0 @@ -@import 'avalanchesass_utility_width/style_guide'; -@import 'avalanchesass_utility_width/variable'; -@import 'avalanchesass_utility_width/mixin'; - -/* extract utility.css */ -/* extract utility_width.css */ -/*--- -title: Example -name: utility_width_example -section: utility_width -order: 1 ---- - -```example:html -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
-``` -*/ -@for $-size from 1 through $u-width-item-count { - .#{$u-width-namespace}-#{$-size} { - @include u-width($-size, $u-width-item-count); - } -} - -@each $-breakpoint in $u-width-breakpoints { - @media (min-width: map-get($breakpoints, $-breakpoint)) { - @for $-size from 1 through $u-width-item-count { - .#{$u-width-namespace}-#{$-size}\@#{$-breakpoint} { - @include u-width($-size, $u-width-item-count); - } - } - } -} -/* end extract utility_width.css */ -/* end extract utility.css */ diff --git a/packages/avalanchesass-utility-grid/scss/_mixin.scss b/packages/avalanchesass-utility-grid/scss/_mixin.scss index 3f9503e..7c4e988 100644 --- a/packages/avalanchesass-utility-grid/scss/_mixin.scss +++ b/packages/avalanchesass-utility-grid/scss/_mixin.scss @@ -1,17 +1,26 @@ -@import 'avalanchesass_utility_width/style_guide'; +@import 'variable'; -/*--- -title: Mixin -name: utility_width_mixin -section: utility_width -order: 2 ---- - -```css -u-width($-size[, $-item-count: 12]) -``` -*/ -@mixin u-width($-size, $-item-count: 12) { +//// +/// Width helper. +/// +/// @group Utility: width +/// @author Markus Oberlehner +/// +/// @param {Number} $-size +/// Width divisor. +/// @param {Number} $-item-count [$u-width-item-count] +/// Width base size. +/// +/// @example scss - Usage +/// .element { +/// @include u-width(6, 12); +/// } +/// +/// @example css - CSS Output +/// .element { +/// width: 50%; +/// } +@mixin u-width($-size, $-item-count: $u-width-item-count) { $-base-size: (100% / $-item-count); width: ($-base-size * $-size) !important; } diff --git a/packages/avalanchesass-utility-grid/scss/_style_guide.scss b/packages/avalanchesass-utility-grid/scss/_style_guide.scss deleted file mode 100644 index 952b0ce..0000000 --- a/packages/avalanchesass-utility-grid/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Width -name: utility_width -section: Utility ---- - -Width classes. -*/ diff --git a/packages/avalanchesass-utility-grid/scss/_variable.scss b/packages/avalanchesass-utility-grid/scss/_variable.scss index 3a4e566..a2b9be3 100644 --- a/packages/avalanchesass-utility-grid/scss/_variable.scss +++ b/packages/avalanchesass-utility-grid/scss/_variable.scss @@ -1,19 +1,2 @@ -@import 'avalanchesass_utility_width/style_guide'; - -$u-width-namespace: '#{map-get($namespace, utility)}width' !default; - $u-width-item-count: 12 !default; $u-width-breakpoints: (m) !default; -/*--- -title: Variable -name: utility_width_variable -section: utility_width -order: 3 ---- - -```css -$u-width-namespace: '#{$u-width-namespace}'; -$u-width-item-count: #{$u-width-item-count}; -$u-width-breakpoints: (#{$u-width-breakpoints}); -``` -*/ diff --git a/packages/avalanchesass-utility-grid/scss/index.scss b/packages/avalanchesass-utility-grid/scss/index.scss new file mode 100644 index 0000000..7e9e57f --- /dev/null +++ b/packages/avalanchesass-utility-grid/scss/index.scss @@ -0,0 +1,18 @@ +@import 'variable'; +@import 'mixin'; + +@for $-size from 1 through $u-width-item-count { + .u-width-#{$-size} { + @include u-width($-size, $u-width-item-count); + } +} + +@each $-breakpoint in $u-width-breakpoints { + @media (min-width: map-get($breakpoints, $-breakpoint)) { + @for $-size from 1 through $u-width-item-count { + .u-width-#{$-size}\@#{$-breakpoint} { + @include u-width($-size, $u-width-item-count); + } + } + } +} From 9f516fd2796815e1d4d5b4352c38b62450bd15aa Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 15:51:18 +0200 Subject: [PATCH 257/355] Fix utility package documentation and classes --- packages/avalanchesass-utility-grid/README.md | 43 +++++++++++++------ .../scss/_mixin.scss | 1 - .../scss/_variable.scss | 15 +++++++ .../scss/index.scss | 4 +- 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-grid/README.md index 53246b2..1094071 100644 --- a/packages/avalanchesass-utility-grid/README.md +++ b/packages/avalanchesass-utility-grid/README.md @@ -18,18 +18,37 @@ npm install avalanchesass-utility-width --save ## Demo ### Default ```html -
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
+
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
+``` + +```html +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
``` ### Mixins diff --git a/packages/avalanchesass-utility-grid/scss/_mixin.scss b/packages/avalanchesass-utility-grid/scss/_mixin.scss index 7c4e988..b784a38 100644 --- a/packages/avalanchesass-utility-grid/scss/_mixin.scss +++ b/packages/avalanchesass-utility-grid/scss/_mixin.scss @@ -1,6 +1,5 @@ @import 'variable'; -//// /// Width helper. /// /// @group Utility: width diff --git a/packages/avalanchesass-utility-grid/scss/_variable.scss b/packages/avalanchesass-utility-grid/scss/_variable.scss index a2b9be3..d7cdbc0 100644 --- a/packages/avalanchesass-utility-grid/scss/_variable.scss +++ b/packages/avalanchesass-utility-grid/scss/_variable.scss @@ -1,2 +1,17 @@ +// @TODO: import default variables. +$breakpoints: ( + m: 42em +); + +//// +/// @group Utility: width +/// @author Markus Oberlehner +//// + +/// Width base. +/// @type Number $u-width-item-count: 12 !default; + +/// Vertical spacing. +/// @type Map $u-width-breakpoints: (m) !default; diff --git a/packages/avalanchesass-utility-grid/scss/index.scss b/packages/avalanchesass-utility-grid/scss/index.scss index 7e9e57f..bc315be 100644 --- a/packages/avalanchesass-utility-grid/scss/index.scss +++ b/packages/avalanchesass-utility-grid/scss/index.scss @@ -2,7 +2,7 @@ @import 'mixin'; @for $-size from 1 through $u-width-item-count { - .u-width-#{$-size} { + .u-width-#{$-size}\/#{$u-width-item-count} { @include u-width($-size, $u-width-item-count); } } @@ -10,7 +10,7 @@ @each $-breakpoint in $u-width-breakpoints { @media (min-width: map-get($breakpoints, $-breakpoint)) { @for $-size from 1 through $u-width-item-count { - .u-width-#{$-size}\@#{$-breakpoint} { + .u-width-#{$-size}\/#{$u-width-item-count}\@#{$-breakpoint} { @include u-width($-size, $u-width-item-count); } } From eef4a041d5971004f6e8add4c6f77efcc7084a5f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 15:53:31 +0200 Subject: [PATCH 258/355] Fix the utility package directory name --- .../.npmignore | 0 .../README.md | 0 .../package.json | 0 .../scss/_mixin.scss | 0 .../scss/_variable.scss | 0 .../scss/index.scss | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/.npmignore (100%) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/README.md (100%) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/package.json (100%) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/scss/_mixin.scss (100%) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/scss/_variable.scss (100%) rename packages/{avalanchesass-utility-grid => avalanchesass-utility-width}/scss/index.scss (100%) diff --git a/packages/avalanchesass-utility-grid/.npmignore b/packages/avalanchesass-utility-width/.npmignore similarity index 100% rename from packages/avalanchesass-utility-grid/.npmignore rename to packages/avalanchesass-utility-width/.npmignore diff --git a/packages/avalanchesass-utility-grid/README.md b/packages/avalanchesass-utility-width/README.md similarity index 100% rename from packages/avalanchesass-utility-grid/README.md rename to packages/avalanchesass-utility-width/README.md diff --git a/packages/avalanchesass-utility-grid/package.json b/packages/avalanchesass-utility-width/package.json similarity index 100% rename from packages/avalanchesass-utility-grid/package.json rename to packages/avalanchesass-utility-width/package.json diff --git a/packages/avalanchesass-utility-grid/scss/_mixin.scss b/packages/avalanchesass-utility-width/scss/_mixin.scss similarity index 100% rename from packages/avalanchesass-utility-grid/scss/_mixin.scss rename to packages/avalanchesass-utility-width/scss/_mixin.scss diff --git a/packages/avalanchesass-utility-grid/scss/_variable.scss b/packages/avalanchesass-utility-width/scss/_variable.scss similarity index 100% rename from packages/avalanchesass-utility-grid/scss/_variable.scss rename to packages/avalanchesass-utility-width/scss/_variable.scss diff --git a/packages/avalanchesass-utility-grid/scss/index.scss b/packages/avalanchesass-utility-width/scss/index.scss similarity index 100% rename from packages/avalanchesass-utility-grid/scss/index.scss rename to packages/avalanchesass-utility-width/scss/index.scss From 3891713f0cf321c751aab41fb8cce0e23f378345 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 16:00:11 +0200 Subject: [PATCH 259/355] Add trim_trailing_whitespace editorconfig setting --- .editorconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.editorconfig b/.editorconfig index 0d25961..9d5248e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,7 @@ end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false From 3d0773033814054e1eaeb51a6b3f8d83f4322386 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 16:56:24 +0200 Subject: [PATCH 260/355] Removed website generation feature. Update tests / rename test hsb file --- package.json | 7 +---- ...=> 708650260_avalanche_0_document_0_s.png} | Bin ...=> 708650260_avalanche_0_document_1_m.png} | Bin ...=> 708650260_avalanche_0_document_2_l.png} | Bin ...> 708650260_avalanche_0_document_3_xl.png} | Bin .../test/{body.hbs => test.hbs} | 0 scripts/build-test-html.sh | 2 +- scripts/build-website.sh | 27 ------------------ website/index.hbs | 3 -- website/templates/_footer.hbs | 4 --- website/templates/_header.hbs | 9 ------ 11 files changed, 2 insertions(+), 50 deletions(-) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanche_0_document_0_s.png => 708650260_avalanche_0_document_0_s.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanche_0_document_1_m.png => 708650260_avalanche_0_document_1_m.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanche_0_document_2_l.png => 708650260_avalanche_0_document_2_l.png} (100%) rename packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/{64003731_avalanche_0_document_3_xl.png => 708650260_avalanche_0_document_3_xl.png} (100%) rename packages/avalanchesass-object-grid/test/{body.hbs => test.hbs} (100%) delete mode 100644 scripts/build-website.sh delete mode 100644 website/index.hbs delete mode 100644 website/templates/_footer.hbs delete mode 100644 website/templates/_header.hbs diff --git a/package.json b/package.json index 570405d..f220f9b 100644 --- a/package.json +++ b/package.json @@ -20,21 +20,16 @@ "backstopjs": "^2.0.2", "handlebars-cmd": "^0.1.4", "lerna": "2.0.0-beta.29", - "marked": "^0.3.6", "node-sass": "^3.10.1", "node-sass-magic-importer": "^1.1.0", - "postcss": "^5.2.4", - "postcss-scss": "^0.3.1", + "postcss-cli": "^2.6.0", "sassdoc": "^2.1.20", - "static-server": "^2.0.3", "stylelint": "^7.3.1", "stylelint-config-modularis": "1.0.0" }, "scripts": { "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", - "build:website": "sh scripts/build-website.sh", - "server": "static-server website/dist", "test:reference": "sh scripts/test-reference.sh", "test": "sh scripts/test.sh" } diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_0_s.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_0_s.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_1_m.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_1_m.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_2_l.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_2_l.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_3_xl.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/64003731_avalanche_0_document_3_xl.png rename to packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png diff --git a/packages/avalanchesass-object-grid/test/body.hbs b/packages/avalanchesass-object-grid/test/test.hbs similarity index 100% rename from packages/avalanchesass-object-grid/test/body.hbs rename to packages/avalanchesass-object-grid/test/test.hbs diff --git a/scripts/build-test-html.sh b/scripts/build-test-html.sh index 1fee9aa..53c422d 100644 --- a/scripts/build-test-html.sh +++ b/scripts/build-test-html.sh @@ -5,5 +5,5 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/_build-test-parameter.sh" -BODY=$(cat "packages/$PACKAGE/test/body.hbs") +BODY=$(cat "packages/$PACKAGE/test/test.hbs") echo $(cat test/test.hbs) | node_modules/handlebars-cmd/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" diff --git a/scripts/build-website.sh b/scripts/build-website.sh deleted file mode 100644 index 00c5947..0000000 --- a/scripts/build-website.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -set -e - -TEMPLATE=$(cat website/index.hbs) -CSS='' -CSS=${CSS//\"/\\\"} - -for f in packages/*; do - if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then - continue - fi - - if [ -f "$f/README.md" ]; then - BODY=$(cat "$f/README.md") - EXAMPLE=$(pcregrep -M '```html(\n|.)*?```' "$f/README.md") - EXAMPLE=${EXAMPLE/'```html'/} - EXAMPLE=${EXAMPLE/'```'/} - BODY=${BODY/'```html'/$EXAMPLE'```html'} - BODY=$(echo "$BODY" | node_modules/marked/bin/marked) - mkdir -p "website/dist/$f" - # Build CSS - node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "$f/scss/index.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "website/dist/$f/demo.css" - # Build HTML - HEADER="{\"css\": \"$CSS\", \"title\": \"$(basename $f)\"}" - echo "$TEMPLATE" | node_modules/handlebars-cmd/index.js --header "$HEADER" --body "$BODY" > "website/dist/$f/index.html" - fi -done diff --git a/website/index.hbs b/website/index.hbs deleted file mode 100644 index fae26d4..0000000 --- a/website/index.hbs +++ /dev/null @@ -1,3 +0,0 @@ -{{{ include 'website/templates/_header.hbs' header }}} - {{{ body }}} -{{{ include 'website/templates/_footer.hbs' }}} diff --git a/website/templates/_footer.hbs b/website/templates/_footer.hbs deleted file mode 100644 index d563a24..0000000 --- a/website/templates/_footer.hbs +++ /dev/null @@ -1,4 +0,0 @@ - - {{{ scripts }}} - - diff --git a/website/templates/_header.hbs b/website/templates/_header.hbs deleted file mode 100644 index 4bdfaec..0000000 --- a/website/templates/_header.hbs +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - {{ title }} - - {{{ css }}} - From 0a7a715aa3312a30c3150b1506f8335c032e9732 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 17:02:13 +0200 Subject: [PATCH 261/355] Add width utility package tests --- .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 12202 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 13827 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 14914 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 16126 bytes .../avalanchesass-utility-width/test/test.hbs | 29 ++++++++++++++++++ .../test/test.scss | 1 + 6 files changed, 30 insertions(+) create mode 100644 packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/avalanchesass-utility-width/test/test.hbs create mode 100644 packages/avalanchesass-utility-width/test/test.scss diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffb2b35e7a03f1efd6262b1561c0f7031737565 GIT binary patch literal 12202 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..d625c0975df01b11443bb87ad4bbe01f079bfe23 GIT binary patch literal 14914 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..f9871e6433007901464820f145fe340cd7c0c45d GIT binary patch literal 16126 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 +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
+ +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
diff --git a/packages/avalanchesass-utility-width/test/test.scss b/packages/avalanchesass-utility-width/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/avalanchesass-utility-width/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From 939d13204bf13f78ed377a6d7d9fe435f189f465 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 14 Oct 2016 17:12:18 +0200 Subject: [PATCH 262/355] Do not use variables as default values for mixin parameters and slightly revamp variable names --- .../avalanchesass-object-grid/scss/_mixin.scss | 14 ++++++-------- .../avalanchesass-utility-width/scss/_mixin.scss | 10 ++++------ .../scss/_variable.scss | 6 +++--- .../avalanchesass-utility-width/scss/index.scss | 12 ++++++------ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 039c9d5..033c230 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -1,5 +1,3 @@ -@import 'variable'; - //// /// Fluid width, responsive grid system. /// @@ -9,9 +7,9 @@ /// Grid wrapper. /// -/// @param {Number [unit]} $-spacing-vertical [$o-grid-spacing-vertical] +/// @param {Number [unit]} $-spacing-vertical [1em] /// Vertical spacing size. -/// @param {Number [unit]} $-spacing-horizontal [$o-grid-spacing-horizontal] +/// @param {Number [unit]} $-spacing-horizontal [1em] /// Horizontal spacing size. /// /// @example scss - Usage @@ -26,7 +24,7 @@ /// margin-top: -1em; /// margin-left: -1em; /// } -@mixin o-grid($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { +@mixin o-grid($-spacing-vertical: 1em, $-spacing-horizontal: 1em) { display: flex; flex-wrap: wrap; @if $-spacing-vertical > 0 { @@ -39,9 +37,9 @@ /// Grid item. /// -/// @param {Number [unit]} $-spacing-vertical [$o-grid-spacing-vertical] +/// @param {Number [unit]} $-spacing-vertical [1em] /// Vertical spacing size. -/// @param {Number [unit]} $-spacing-horizontal [$o-grid-spacing-horizontal] +/// @param {Number [unit]} $-spacing-horizontal [1em] /// Horizontal spacing size. /// /// @example scss - Usage @@ -56,7 +54,7 @@ /// padding-top: 1em; /// padding-left: 1em; /// } -@mixin o-grid-item($-spacing-vertical: $o-grid-spacing-vertical, $-spacing-horizontal: $o-grid-spacing-horizontal) { +@mixin o-grid-item($-spacing-vertical: 1em, $-spacing-horizontal: 1em) { flex-grow: 1; box-sizing: border-box; @if $-spacing-vertical > 0 { diff --git a/packages/avalanchesass-utility-width/scss/_mixin.scss b/packages/avalanchesass-utility-width/scss/_mixin.scss index b784a38..40ae239 100644 --- a/packages/avalanchesass-utility-width/scss/_mixin.scss +++ b/packages/avalanchesass-utility-width/scss/_mixin.scss @@ -1,5 +1,3 @@ -@import 'variable'; - /// Width helper. /// /// @group Utility: width @@ -7,8 +5,8 @@ /// /// @param {Number} $-size /// Width divisor. -/// @param {Number} $-item-count [$u-width-item-count] -/// Width base size. +/// @param {Number} $-base [12] +/// Width base. /// /// @example scss - Usage /// .element { @@ -19,7 +17,7 @@ /// .element { /// width: 50%; /// } -@mixin u-width($-size, $-item-count: $u-width-item-count) { - $-base-size: (100% / $-item-count); +@mixin u-width($-size, $-base: 12) { + $-base-size: (100% / $-base); width: ($-base-size * $-size) !important; } diff --git a/packages/avalanchesass-utility-width/scss/_variable.scss b/packages/avalanchesass-utility-width/scss/_variable.scss index d7cdbc0..b37b179 100644 --- a/packages/avalanchesass-utility-width/scss/_variable.scss +++ b/packages/avalanchesass-utility-width/scss/_variable.scss @@ -1,7 +1,7 @@ // @TODO: import default variables. $breakpoints: ( m: 42em -); +) !default; //// /// @group Utility: width @@ -10,8 +10,8 @@ $breakpoints: ( /// Width base. /// @type Number -$u-width-item-count: 12 !default; +$u-width-base: 12 !default; -/// Vertical spacing. +/// Width breakpoints. /// @type Map $u-width-breakpoints: (m) !default; diff --git a/packages/avalanchesass-utility-width/scss/index.scss b/packages/avalanchesass-utility-width/scss/index.scss index bc315be..c9f51b0 100644 --- a/packages/avalanchesass-utility-width/scss/index.scss +++ b/packages/avalanchesass-utility-width/scss/index.scss @@ -1,17 +1,17 @@ @import 'variable'; @import 'mixin'; -@for $-size from 1 through $u-width-item-count { - .u-width-#{$-size}\/#{$u-width-item-count} { - @include u-width($-size, $u-width-item-count); +@for $-size from 1 through $u-width-base { + .u-width-#{$-size}\/#{$u-width-base} { + @include u-width($-size, $u-width-base); } } @each $-breakpoint in $u-width-breakpoints { @media (min-width: map-get($breakpoints, $-breakpoint)) { - @for $-size from 1 through $u-width-item-count { - .u-width-#{$-size}\/#{$u-width-item-count}\@#{$-breakpoint} { - @include u-width($-size, $u-width-item-count); + @for $-size from 1 through $u-width-base { + .u-width-#{$-size}\/#{$u-width-base}\@#{$-breakpoint} { + @include u-width($-size, $u-width-base); } } } From 9431a831fcb4ad52d72557f97e80077f4bf05b5e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 16 Oct 2016 16:15:35 +0200 Subject: [PATCH 263/355] Add bash syntax hints to readmes --- packages/avalanchesass-object-grid/README.md | 2 +- packages/avalanchesass-utility-width/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 51a0cad..3fd932d 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -2,7 +2,7 @@ Fluid width, responsive grid system. ## Install -``` +```bash npm install avalanchesass-object-grid --save ``` diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index 1094071..ccdbae2 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -2,7 +2,7 @@ Width classes. ## Install -``` +```bash npm install avalanchesass-utility-width --save ``` From acf04ed2b0e1e713116d4a6992c19e087c8e90bc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 16 Oct 2016 16:53:03 +0200 Subject: [PATCH 264/355] Reformat readme --- packages/avalanchesass-object-grid/README.md | 3 +-- packages/avalanchesass-utility-width/README.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 3fd932d..c95f952 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -16,7 +16,6 @@ npm install avalanchesass-object-grid --save ``` ## Demo -### Default ```html
@@ -31,7 +30,7 @@ npm install avalanchesass-object-grid --save
``` -### Mixins +## Mixins ```scss @import '~avalanchesass-object-grid/mixin'; diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index ccdbae2..e1dd0f0 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -16,7 +16,6 @@ npm install avalanchesass-utility-width --save ``` ## Demo -### Default ```html
1
@@ -51,7 +50,7 @@ npm install avalanchesass-utility-width --save
``` -### Mixins +## Mixins ```scss @import '~avalanchesass-utility-width/mixin'; From 87452f825ea2375d2df68b1a0177715f75861f1d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 21 Oct 2016 15:17:14 +0200 Subject: [PATCH 265/355] Remove inline styles from demos --- packages/avalanchesass-object-grid/README.md | 6 +-- .../avalanchesass-utility-width/README.md | 52 +++++++++---------- 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index c95f952..bdd54af 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -19,13 +19,13 @@ npm install avalanchesass-object-grid --save ```html
-
Grid item 1
+
Grid item 1
-
Grid item 2
+
Grid item 2
-
Grid item 3
+
Grid item 3
``` diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index e1dd0f0..dd18c3e 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -17,37 +17,33 @@ npm install avalanchesass-utility-width --save ## Demo ```html -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
``` ```html -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
``` ## Mixins From 4105520e93da6db41914ef088d339a2254c952f3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 29 Oct 2016 09:18:12 +0200 Subject: [PATCH 266/355] Change npm package keyword to "avalanchesass-package" --- packages/avalanchesass-object-grid/package.json | 2 +- packages/avalanchesass-utility-width/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 72ca5d3..61a6706 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass-object-grid", "description": "Fluid width, responsive grid system", "keywords": [ - "avalanche-package", + "avalanchesass-package", "sass" ], "version": "4.0.0-alpha.1", diff --git a/packages/avalanchesass-utility-width/package.json b/packages/avalanchesass-utility-width/package.json index 658732c..c85cf3f 100644 --- a/packages/avalanchesass-utility-width/package.json +++ b/packages/avalanchesass-utility-width/package.json @@ -2,7 +2,7 @@ "name": "avalanchesass-utility-width", "description": "Width classes", "keywords": [ - "avalanche-package", + "avalanchesass-package", "sass" ], "version": "4.0.0-alpha.1", From 4e107aeaabb4f549fe825da9c3bbb48bce5b533f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 14:46:54 +0100 Subject: [PATCH 267/355] Implement new (simplified old) grid system --- .../scss/_mixin.scss | 86 +++++++++++++------ .../scss/_variable.scss | 67 +++++++++++++-- .../avalanchesass-object-grid/scss/index.scss | 49 ++++++++++- 3 files changed, 164 insertions(+), 38 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index 033c230..bcfcda0 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -7,60 +7,90 @@ /// Grid wrapper. /// -/// @param {Number [unit]} $-spacing-vertical [1em] -/// Vertical spacing size. -/// @param {Number [unit]} $-spacing-horizontal [1em] -/// Horizontal spacing size. -/// /// @example scss - Usage /// .element { -/// @include o-grid(1em, 1em); +/// @include o-grid(); /// } /// /// @example css - CSS Output /// .element { /// display: flex; /// flex-wrap: wrap; -/// margin-top: -1em; -/// margin-left: -1em; /// } -@mixin o-grid($-spacing-vertical: 1em, $-spacing-horizontal: 1em) { +@mixin o-grid() { display: flex; flex-wrap: wrap; - @if $-spacing-vertical > 0 { - margin-top: -$-spacing-vertical; +} + +/// Gutter horizontal. +/// +/// @param {Number [unit]} $-gutter [1em] +/// Gutter spacing size. +/// @param {String} $-item-selector ['.o-grid__item'] +/// Grid item selector. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid-horizontal-gutter(1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// margin-left: -1em; +/// +/// > .o-grid__item { +/// padding-top: 1em; +/// } +/// } +@mixin o-grid-horizontal-gutter($-gutter: 1em, $-item-selector: '.o-grid__item') { + margin-left: -$-gutter; + + > #{$-item-selector} { + padding-left: $-gutter; } - @if $-spacing-horizontal > 0 { - margin-left: -$-spacing-horizontal; +} + +/// Gutter vertical. +/// +/// @param {Number [unit]} $-gutter [1em] +/// Gutter spacing size. +/// @param {String} $-item-selector ['.o-grid__item'] +/// Grid item selector. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid-vertical-gutter(1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// margin-top: -1em; +/// +/// > .o-grid__item { +/// margin-top: 1em; +/// } +/// } +@mixin o-grid-vertical-gutter($-gutter: 1em, $-item-selector: '.o-grid__item') { + margin-top: -$-gutter; + + > #{$-item-selector} { + margin-top: $-gutter; } } /// Grid item. /// -/// @param {Number [unit]} $-spacing-vertical [1em] -/// Vertical spacing size. -/// @param {Number [unit]} $-spacing-horizontal [1em] -/// Horizontal spacing size. -/// /// @example scss - Usage /// .element { -/// @include o-grid-item(1em, 1em); +/// @include o-grid-item(); /// } /// /// @example css - CSS Output /// .element { /// flex-grow: 1; /// box-sizing: border-box; -/// padding-top: 1em; -/// padding-left: 1em; /// } -@mixin o-grid-item($-spacing-vertical: 1em, $-spacing-horizontal: 1em) { +@mixin o-grid-item() { flex-grow: 1; box-sizing: border-box; - @if $-spacing-vertical > 0 { - padding-top: $-spacing-vertical; - } - @if $-spacing-horizontal > 0 { - padding-left: $-spacing-horizontal; - } } diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 2cdaae9..29d9b89 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,17 +1,68 @@ // @TODO: may not use separate file? - // @TODO: import default variables. -$spacing-m: 1em !default; +$spacings: ( + xs: 0.5em, + s: 0.75em, + m: 1em, + l: 1.5em, + xl: 2em, + xxl: 3.5em, + xxxl: 6em, +); + +@function spacing($-size, $-rem: false) { + $-spacing: map-get($spacings, $-size); + @if $-rem { $-spacing: ($-spacing / 1em) * 1rem; } + @return $-spacing; +} + +$breakpoints: ( + s: 30em, + m: 45em, + l: 60em, + xl: 75em, +); + +@function breakpoint($-size, $-rem: false) { + $breakpoint: map-get($breakpoints, $-size); + @if $-rem { $breakpoint: ($breakpoint / 1em) * 1rem; } + @return $breakpoint; +} + + //// /// @group Object: grid /// @author Markus Oberlehner //// -/// Vertical spacing. -/// @type Number (Unit) -$o-grid-spacing-vertical: $spacing-m !default; +/// Horizontal gutter default. +/// @type String +$o-grid-horizontal-gutter-default: m !default; + +/// Horizontal gutter sizes. +/// @type Map +$o-grid-horizontal-gutter: () !default; + +/// The key of the associative map defines the gutter size, the value is a map +/// with breakpoint sizes for which horizontal gutter classes should be +/// generated. +/// @type Map +$o-grid-horizontal-gutter-at-breakpoints: ( + m: (), +) !default; + +/// Vertical gutter default. +/// @type String +$o-grid-vertical-gutter-default: m !default; + +/// Vertical gutter sizes. +/// @type Map +$o-grid-vertical-gutter: () !default; -/// Horizontal spacing. -/// @type Number (Unit) -$o-grid-spacing-horizontal: $spacing-m !default; +/// The key of the associative map defines the gutter size, the value is a map +/// with breakpoint sizes for which vertical gutter classes should be generated. +/// @type Map +$o-grid-vertical-gutter-at-breakpoints: ( + m: (), +) !default; diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 8c99397..54ec54b 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -2,9 +2,54 @@ @import 'mixin'; .o-grid { - @include o-grid($o-grid-spacing-vertical, $o-grid-spacing-horizontal); + @include o-grid(); + + @if $o-grid-horizontal-gutter-default { + @include o-grid-horizontal-gutter(spacing($o-grid-horizontal-gutter-default)); + } + @if $o-grid-vertical-gutter-default { + @include o-grid-vertical-gutter(spacing($o-grid-vertical-gutter-default)); + } } .o-grid__item { - @include o-grid-item($o-grid-spacing-vertical, $o-grid-spacing-horizontal); + @include o-grid-item(); +} + +@each $-size in $o-grid-horizontal-gutter { + @if $-size == $o-grid-horizontal-gutter-default { + @warn 'Defining the same size in $o-grid-horizontal-gutter as set for $o-grid-horizontal-gutter-default is redundant, remove "#{$-size}" from $o-grid-horizontal-gutter'; + } + .o-grid--horizontal-gutter-#{$-size} { + @include o-grid-horizontal-gutter(spacing($-size)); + } +} + +@each $-size, $-breakpoints in $o-grid-horizontal-gutter-at-breakpoints { + @each $-breakpoint in $-breakpoints { + @media (min-width: breakpoint($-breakpoint)) { + .o-grid--horizontal-gutter-#{$-size}\@#{$-breakpoint} { + @include o-grid-horizontal-gutter(spacing($-size)); + } + } + } +} + +@each $-size in $o-grid-vertical-gutter { + @if $-size == $o-grid-vertical-gutter-default { + @warn 'Defining the same size in $o-grid-vertical-gutter as set for $o-grid-vertical-gutter-default is redundant, remove "#{$-size}" from $o-grid-vertical-gutter'; + } + .o-grid--vertical-gutter-#{$-size} { + @include o-grid-vertical-gutter(spacing($-size)); + } +} + +@each $-size, $-breakpoints in $o-grid-vertical-gutter-at-breakpoints { + @each $-breakpoint in $-breakpoints { + @media (min-width: breakpoint($-breakpoint)) { + .o-grid--vertical-gutter-#{$-size}\@#{$-breakpoint} { + @include o-grid-vertical-gutter(spacing($-size)); + } + } + } } From d6fadb68c99665015ff8795760cd4064fca6793b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 14:55:33 +0100 Subject: [PATCH 268/355] Move test related scripts into the test directory --- package.json | 4 ++-- {scripts => test/scripts}/_build-test-parameter.sh | 0 {scripts => test/scripts}/build-test-css.sh | 0 {scripts => test/scripts}/build-test-html.sh | 2 +- test/{ => templates}/test.hbs | 0 {scripts => test}/test-reference.sh | 6 +++--- {scripts => test}/test.sh | 6 +++--- 7 files changed, 9 insertions(+), 9 deletions(-) rename {scripts => test/scripts}/_build-test-parameter.sh (100%) rename {scripts => test/scripts}/build-test-css.sh (100%) rename {scripts => test/scripts}/build-test-html.sh (55%) rename test/{ => templates}/test.hbs (100%) rename {scripts => test}/test-reference.sh (71%) rename {scripts => test}/test.sh (70%) diff --git a/package.json b/package.json index f220f9b..87d2472 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "scripts": { "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", - "test:reference": "sh scripts/test-reference.sh", - "test": "sh scripts/test.sh" + "test:reference": "sh test/test-reference.sh", + "test": "sh test/test.sh" } } diff --git a/scripts/_build-test-parameter.sh b/test/scripts/_build-test-parameter.sh similarity index 100% rename from scripts/_build-test-parameter.sh rename to test/scripts/_build-test-parameter.sh diff --git a/scripts/build-test-css.sh b/test/scripts/build-test-css.sh similarity index 100% rename from scripts/build-test-css.sh rename to test/scripts/build-test-css.sh diff --git a/scripts/build-test-html.sh b/test/scripts/build-test-html.sh similarity index 55% rename from scripts/build-test-html.sh rename to test/scripts/build-test-html.sh index 53c422d..80ccbf5 100644 --- a/scripts/build-test-html.sh +++ b/test/scripts/build-test-html.sh @@ -6,4 +6,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/_build-test-parameter.sh" BODY=$(cat "packages/$PACKAGE/test/test.hbs") -echo $(cat test/test.hbs) | node_modules/handlebars-cmd/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" +echo $(cat test/templates/test.hbs) | node_modules/handlebars-cmd/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" diff --git a/test/test.hbs b/test/templates/test.hbs similarity index 100% rename from test/test.hbs rename to test/templates/test.hbs diff --git a/scripts/test-reference.sh b/test/test-reference.sh similarity index 71% rename from scripts/test-reference.sh rename to test/test-reference.sh index cae6a9b..2c97494 100644 --- a/scripts/test-reference.sh +++ b/test/test-reference.sh @@ -3,7 +3,7 @@ set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source "$DIR/_build-test-parameter.sh" +source "$DIR/scripts/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then @@ -13,9 +13,9 @@ for f in packages/*; do if [ -d "$f/test" ]; then mkdir -p "$f/test/tmp" # Build HTML - sh scripts/build-test-html.sh --package $(basename $f) + sh "$DIR/scripts/build-test-html.sh" --package $(basename $f) # Build CSS - sh scripts/build-test-css.sh --package $(basename $f) + sh "$DIR/scripts/build-test-css.sh" --package $(basename $f) # Create test reference ( cd "$f" && ../../node_modules/backstopjs/cli/index.js reference --configPath=../../backstop.json ) # Cleanup diff --git a/scripts/test.sh b/test/test.sh similarity index 70% rename from scripts/test.sh rename to test/test.sh index 67d5c1b..b8533f9 100644 --- a/scripts/test.sh +++ b/test/test.sh @@ -3,7 +3,7 @@ set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source "$DIR/_build-test-parameter.sh" +source "$DIR/scripts/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then @@ -13,9 +13,9 @@ for f in packages/*; do if [ -d "$f/test" ]; then mkdir -p "$f/test/tmp" # Build HTML - sh scripts/build-test-html.sh --package $(basename $f) + sh "$DIR/scripts/build-test-html.sh" --package $(basename $f) # Build CSS - sh scripts/build-test-css.sh --package $(basename $f) + sh "$DIR/scripts/build-test-css.sh" --package $(basename $f) # Test ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) # Cleanup From 9322061cef436b03e8e888827d1f4b7f41e52a1e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 15:17:10 +0100 Subject: [PATCH 269/355] Add gutter documentation to the readme. Use variables in the test.scss file. Change the gutter breakpoint variable names. --- packages/avalanchesass-object-grid/README.md | 54 +++++++++++++++++++ .../scss/_variable.scss | 4 +- .../avalanchesass-object-grid/scss/index.scss | 4 +- .../avalanchesass-object-grid/test/test.scss | 10 ++++ 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index bdd54af..93633c1 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -30,6 +30,60 @@ npm install avalanchesass-object-grid --save
``` +### Gutter +Activate horizontal / vertical gutter modifier classes via the `$o-grid-horizontal-gutter` / `$o-grid-vertical-gutter` map variables. + +```scss +$o-grid-horizontal-gutter: (l); +$o-grid-vertical-gutter: (l); +``` + +```html +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+``` + +### Gutter breakpoints +To activate gutter breakpoint modifier classes, use the `$o-grid-horizontal-gutter-breakpoints` / `$o-grid-vertical-gutter-breakpoints` map variables. + +```scss +$o-grid-horizontal-gutter-breakpoints: ( + l: (m), +); +$o-grid-vertical-gutter-breakpoints: ( + l: (m), +); +``` + +```html +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+``` + ## Mixins ```scss @import '~avalanchesass-object-grid/mixin'; diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 29d9b89..3b07411 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -48,7 +48,7 @@ $o-grid-horizontal-gutter: () !default; /// with breakpoint sizes for which horizontal gutter classes should be /// generated. /// @type Map -$o-grid-horizontal-gutter-at-breakpoints: ( +$o-grid-horizontal-gutter-breakpoints: ( m: (), ) !default; @@ -63,6 +63,6 @@ $o-grid-vertical-gutter: () !default; /// The key of the associative map defines the gutter size, the value is a map /// with breakpoint sizes for which vertical gutter classes should be generated. /// @type Map -$o-grid-vertical-gutter-at-breakpoints: ( +$o-grid-vertical-gutter-breakpoints: ( m: (), ) !default; diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 54ec54b..40cf3f7 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -25,7 +25,7 @@ } } -@each $-size, $-breakpoints in $o-grid-horizontal-gutter-at-breakpoints { +@each $-size, $-breakpoints in $o-grid-horizontal-gutter-breakpoints { @each $-breakpoint in $-breakpoints { @media (min-width: breakpoint($-breakpoint)) { .o-grid--horizontal-gutter-#{$-size}\@#{$-breakpoint} { @@ -44,7 +44,7 @@ } } -@each $-size, $-breakpoints in $o-grid-vertical-gutter-at-breakpoints { +@each $-size, $-breakpoints in $o-grid-vertical-gutter-breakpoints { @each $-breakpoint in $-breakpoints { @media (min-width: breakpoint($-breakpoint)) { .o-grid--vertical-gutter-#{$-size}\@#{$-breakpoint} { diff --git a/packages/avalanchesass-object-grid/test/test.scss b/packages/avalanchesass-object-grid/test/test.scss index 313a442..dc7db7a 100644 --- a/packages/avalanchesass-object-grid/test/test.scss +++ b/packages/avalanchesass-object-grid/test/test.scss @@ -1 +1,11 @@ +$o-grid-horizontal-gutter: (l); +$o-grid-horizontal-gutter-breakpoints: ( + l: (m), +); + +$o-grid-vertical-gutter: (l); +$o-grid-vertical-gutter-breakpoints: ( + l: (m), +); + @import '../scss/index'; From 0a968063d74e5c0036ee891c95a86682e07bb6d4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 15:46:42 +0100 Subject: [PATCH 270/355] Configure the autoprefixer building the test css files to build for safari >= 4 for maximum compatibility (this prevents problems with flexbox) --- test/scripts/build-test-css.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/scripts/build-test-css.sh b/test/scripts/build-test-css.sh index a8a6266..864ceb7 100644 --- a/test/scripts/build-test-css.sh +++ b/test/scripts/build-test-css.sh @@ -5,4 +5,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/_build-test-parameter.sh" -node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "packages/$PACKAGE/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer -o "packages/$PACKAGE/test/tmp/test.css" +node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "packages/$PACKAGE/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer --autoprefixer.browsers "safari >= 4" -o "packages/$PACKAGE/test/tmp/test.css" From 22b3e3e29b8ffd7832fb6b94a8a69b834cc5b329 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 15:48:03 +0100 Subject: [PATCH 271/355] Add tests for grid object package modifier classes --- .../708650260_avalanche_0_document_0_s.png | Bin 3045 -> 11111 bytes .../708650260_avalanche_0_document_1_m.png | Bin 3719 -> 12081 bytes .../708650260_avalanche_0_document_2_l.png | Bin 4607 -> 13194 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 5746 -> 14364 bytes .../avalanchesass-object-grid/test/test.hbs | 30 ++++++++++++++++++ 5 files changed, 30 insertions(+) diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index 47a5333a05c4f12d553611f80f0303dcd77ba3ae..60affdd41f551ac9512e88bcf6cfc191dc8b6107 100644 GIT binary patch literal 11111 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 diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png index e9a9e8a99700af481d38d7b9ddd00b6ed00d36e0..d86b2882fba8234e602780b8b71ce35604b96795 100644 GIT binary patch literal 12081 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 literal 3719 zcmeH}YfuvC8pkQO+@q0aR=b#*wPvoDGA}DB3GJo@UQ1n#Rirh=yoH8HibCzKwOU$Y zYI%WmR7`A9v&1W8b|^1kfmc$f1X)SJKv5L+xHJ24=X^MGzMPqTX5M*b{-56e@53{{ zoU;LEfCl>v0000G4)Y2E0Jgpc0Jao;zI`(pwd063*FTbB2rK|#X#B_90w^ut3jpkN zhkJb!aGkx1eLf;&PSyh5$40w12MbFi80jQiI5_4X=<^dH6y z5)B@H=G1f;SY*@YvlW=z&mV_b!L~)dOZqwKdWd5E>dXaEx$EK=Qgp!{XUCykw|42< z=Usm1z4ZLXy9+x&ChA)1pczVxWEM0RYKI&Ysi*oHRArtbBI+Hdg@P-Zxu-06@%t9p5l@ z{MGlOmFfO{ee?4$j*qc2?{;+JN{zGYYif4^-&K7(rt$baEZ4~`!jF`)d~s15wAZZc za`?Nx1$(NvsbB{X7;~Q3X0S$=F+rKRl+G)#19_8H3Hhv{s@{4k^3Gu(FdZFulk1HC`4vZ#34MJwJfDKyy(8JWKpeC) zG0xwAveV&w;{o-@cz(M#vF*4^&`BdpdEcICNBGNbGxeCLM?3!erA^!}V{8z!EB#n+ zUfq4hbp*EgF%IE&Vys-=d^i+616p@5lNW{{N%?7LDPu9AIdOPpf_Pf5=Vn?>2Wk3? ztV=IBCl(|qbRg==)S}?BQ-qTQWUKhTOj;)Hz4#U%D>F6=qDG@u*R&(+-KGd=W`wG2 zM;ghqe<{;r(0o6PG{}20Vxtejl&wG8!ka2A$pl(;A-W_5=KfhNOVE;4Iix%U$vhUg zCTLEtLi-aTNV6i``20|QU2PFLL_{vbz^}}f1FO>)tKuNortY;ieD8`wriS9|HvM6u zEh9mZ=y|WW)LN#ni-1c&aHl{9$)!WzC^iL0cHkkINNRgAcZTo@_V|e+6ZlMekPYXk z_#f5$)#o<`8vMxa>GRz`jjNv}xI5`3$b`7w!IMi$qFojo&AeQ0A`;js2N*paYOOpv zx)C~wEaMNoCg(FWuDcB4E=^L_MQh`ao2-GiS|kg|5UZPyQ_daCF1_JuGA$_(9RdYR z-hBU|a#k+9NBh<{<1{%aB`kjTBR?nj%To8aOEa%vf(%M2lcdFlL zfmWY|EB)TBh7d;BXOL}T0E`nu?^doO#$$+Zd0nB;|`&ev?0JouGNImA3&nypI?jLo&J`4TRjAn-e|N#y8Z zW(Hr~C9T^Jx$Ee7p3>fO{dT@4wkMV#V0GFe^)Rv`RxE$K$?;zz-ib!gcso8^LCJEp zurG5Vy%#xTWMYKH!?ntp#hF>0|1SyIy2Eh0`rt57dLVdW>8AzjxcJVsD9DA@pC$Om zO*_ng_wlVfI+q0>UL1AT<9fHfU?z7Kj-vKKb35m-Og~D9M=^^nuCVdYNG_2FB8w*n zPdvzPVL2p1iz^!T^Z3Fbj!#h?-9cIi9WT`6T-&`NCybY@%uaSj=_rrd#a!jrhqHpW zw>slR%!9jnHcEe*GnNtU>z$XT>4)IMwbQhg77x#|{ee!4+P)@P^TjZ7PSr4vO|)$| zvEr3GsDQ720-9cB9Kn(&jx~bxL6(EOFls+vcnGMZWr_82U{|I5>{+giHiuZ3!Wlk;L znKSd891`knMeP7v7)8|+OEq0yb;BJjoTph(>t)*&V>Ipf81 zEk0vvj`C@>I;_WZxg?4|b{}O)b!VpxY7)gQN5Yj|Q@0mURI|g8TzZ{n6%}qkHH8}7 zOt_&7sEHMPNDcKYr~I~5qtZ3^#C*vvWVS)<-5&Lxx})f=AADjB*R0KpdFs!h$C7@aI%R2G>Sz(=WWpkmK6OD zIA<55+ViTljX7$aK6e`*5RkRakP)Q}g;E!lLDHO!cck?n)05!ipK|N@BV!cJ zQXsK>=P9!3UazY%6>h2uL$K_{6L`eC8Qu>9vETxstLuo(4EI@otpZO!zScZ(vj<5+ zdXsZMSCrY5|jj;`&?}^+dtRPaL&VsY^!a#tn=blm*Y- zxXVz8W~e`>*r9BoFmk8rIlHzt!B@0V@wIW1TWoL`UZWI}Z)oiW%gdJ4X}JyAR(epl zDpcf&+Y4Dq6ZxpvP>YIn_5I@#d`oHlkGgzJLKB$lD=a(&y(GSm`#2Ia**-G#G_k){ z=COyn%ZFHakKff~?f+XDKiFJ3S;@duyY#EZO1B9XcheSg)ZAkp9xJy{oLrw%U0NQK z3VX?7^%|o==pNxy#M)CwDU{XaW)C(B@Vhk7BI-hSjE3z=2NABQfE#~KLWl&mxk_P0p0 zE$k-@x%VVX2Cpza5? zLiw#_!~JHxuX1t+=nS8jIEOli=HK||IRPQnba~GtDlYo?OCr%3G~sMBtjUc)hxP4T zHqmAq+OP#_=+o-(eP;axn}F)5P#irIl)Qz}x^-V`a+q-E-qz$l4T>+;+cc%ofBrA5 s=|8F0U)bH>(cc9ACh&hrAURG4U30MouWew2e-waw2Y4~Qz3}6|0c)>v3jhEB diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png index 2208fc42cb2268641be34749958c420587a69dc8..932e00b99a5b13e8b0ab080de042e5013a5729a7 100644 GIT binary patch literal 13194 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
{}Wcb$1xvxAgUwyA9t?u zku%jsYU8~y^((gZuF&DpT(5wbRQq<^_b}-{7aLZVw1a&HBNeY@iSjjD5tq#O?gv^z*7b4pMa; z;UXyKk+H|h*WNOXaYkg)&L@g1fd;N^tz!1)+Xffu!6?<7wo5ght9+!!Bs__rN`SGs zM@+}ng7rEdr;qn8%ukeu#vS&kPjk%qgk1R3_o`nO#l#I-$oA;^7vw%sUjUUmdO+{dX{t_LDZ8b;@618eD=7yt|?MET+XvW z%dDWY_+Xzyn=*Qsy;0aeYFe4rFhi8@6&M{glLAs38%mYsDGI^;_Ky?#;eb~`rZJBR+7FJpg@I|pp&%IX$c;&>Di zdR~oAPoov?wIp-Ad@+R=%s>Ys%O?j7KOG^tTLa6#t zNkPN!C#90kHvh%(Fw+dL#{rmQ_4Bd3QJKF_eNcD~*wU%rIq+=u}xZ?8yVr+RT%IH^10K-sd^Y2vWj zaAv8iRuW?Y9g3GEhEK(P8AyLJwCEhaw(>6K;B>A<%KRHG&AP{P3)shT)U3I*mbPpV z#&5M-xU{dwd3suay-WE~eJC%$5y5#Ad#b>l@f1W9Hjz9C3!|;;_F>)p@Bsn4(%>D# zCQ93lioHTBgNC_nUydY=H?Vl{Qin$J0ad|zc1Nk)SOz@&~Cjp zlH|QdUthsBp%)DyJ=)}x-9v3m!uv!!8Lu%i;A-2aEM+%g3>DQ~_-TubH&p|E8R8AG2z(>(jleeo-w6C46Yz(t Zb-`&z?SF~?;_(*-=+ExwE6*Ym{{waqf%X6Z diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png index a1fea5c9de5421e8c728cfbf982cd6fb3f6721c5..905d26394572407cbbe9492fad15d28dc2bac163 100644 GIT binary patch literal 14364 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 item 3
+ +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+ +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
From a900fd9a988ad8fc721d599d84759271519cedfa Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 1 Nov 2016 15:51:44 +0100 Subject: [PATCH 272/355] Update grid object package mixin documentation --- packages/avalanchesass-object-grid/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 93633c1..e37e93c 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -90,11 +90,13 @@ $o-grid-vertical-gutter-breakpoints: ( // Usage. .grid { - @include o-grid(1em, 1em); + @include o-grid(); + @include o-grid-horizontal-gutter(1em, '.grid__item'); + @include o-grid-vertical-gutter(1em, '.grid__item'); } .grid__item { - @include o-grid-item(1em, 1em); + @include o-grid-item(); } ``` From ece1bc8a5a21fec7bd7cc61084cd466cf55c9ccc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 18:44:46 +0100 Subject: [PATCH 273/355] Fix the path to the package mixin file in the package readmes --- packages/avalanchesass-object-grid/README.md | 4 ++-- packages/avalanchesass-utility-width/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index e37e93c..d363734 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -12,7 +12,7 @@ npm install avalanchesass-object-grid --save @import '~avalanchesass-object-grid'; // Import just the mixin file. -@import '~avalanchesass-object-grid/mixin'; +@import '~avalanchesass-object-grid/scss/mixin'; ``` ## Demo @@ -86,7 +86,7 @@ $o-grid-vertical-gutter-breakpoints: ( ## Mixins ```scss -@import '~avalanchesass-object-grid/mixin'; +@import '~avalanchesass-object-grid/scss/mixin'; // Usage. .grid { diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index dd18c3e..11ad9fd 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -12,7 +12,7 @@ npm install avalanchesass-utility-width --save @import '~avalanchesass-utility-width'; // Import just the mixin file. -@import '~avalanchesass-utility-width/mixin'; +@import '~avalanchesass-utility-width/scss/mixin'; ``` ## Demo @@ -48,7 +48,7 @@ npm install avalanchesass-utility-width --save ## Mixins ```scss -@import '~avalanchesass-utility-width/mixin'; +@import '~avalanchesass-utility-width/scss/mixin'; // Usage. .u-width-1/12 { From d0ce7803c7db44f6e7a8db6b8c01f15b53bac62b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:08:26 +0100 Subject: [PATCH 274/355] Do not use (fake) private variable notation, because it is not necessary --- .../scss/_mixin.scss | 24 +++++------ .../scss/_variable.scss | 14 +++---- .../avalanchesass-object-grid/scss/index.scss | 40 +++++++++---------- .../scss/_mixin.scss | 10 ++--- .../scss/index.scss | 16 ++++---- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/avalanchesass-object-grid/scss/_mixin.scss index bcfcda0..a450811 100644 --- a/packages/avalanchesass-object-grid/scss/_mixin.scss +++ b/packages/avalanchesass-object-grid/scss/_mixin.scss @@ -24,9 +24,9 @@ /// Gutter horizontal. /// -/// @param {Number [unit]} $-gutter [1em] +/// @param {Number [unit]} $gutter [1em] /// Gutter spacing size. -/// @param {String} $-item-selector ['.o-grid__item'] +/// @param {String} $item-selector ['.o-grid__item'] /// Grid item selector. /// /// @example scss - Usage @@ -42,19 +42,19 @@ /// padding-top: 1em; /// } /// } -@mixin o-grid-horizontal-gutter($-gutter: 1em, $-item-selector: '.o-grid__item') { - margin-left: -$-gutter; +@mixin o-grid-horizontal-gutter($gutter: 1em, $item-selector: '.o-grid__item') { + margin-left: -$gutter; - > #{$-item-selector} { - padding-left: $-gutter; + > #{$item-selector} { + padding-left: $gutter; } } /// Gutter vertical. /// -/// @param {Number [unit]} $-gutter [1em] +/// @param {Number [unit]} $gutter [1em] /// Gutter spacing size. -/// @param {String} $-item-selector ['.o-grid__item'] +/// @param {String} $item-selector ['.o-grid__item'] /// Grid item selector. /// /// @example scss - Usage @@ -70,11 +70,11 @@ /// margin-top: 1em; /// } /// } -@mixin o-grid-vertical-gutter($-gutter: 1em, $-item-selector: '.o-grid__item') { - margin-top: -$-gutter; +@mixin o-grid-vertical-gutter($gutter: 1em, $item-selector: '.o-grid__item') { + margin-top: -$gutter; - > #{$-item-selector} { - margin-top: $-gutter; + > #{$item-selector} { + margin-top: $gutter; } } diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 3b07411..3a252a2 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -10,10 +10,10 @@ $spacings: ( xxxl: 6em, ); -@function spacing($-size, $-rem: false) { - $-spacing: map-get($spacings, $-size); - @if $-rem { $-spacing: ($-spacing / 1em) * 1rem; } - @return $-spacing; +@function spacing($size, $rem: false) { + $spacing: map-get($spacings, $size); + @if $rem { $spacing: ($spacing / 1em) * 1rem; } + @return $spacing; } $breakpoints: ( @@ -23,9 +23,9 @@ $breakpoints: ( xl: 75em, ); -@function breakpoint($-size, $-rem: false) { - $breakpoint: map-get($breakpoints, $-size); - @if $-rem { $breakpoint: ($breakpoint / 1em) * 1rem; } +@function breakpoint($size, $rem: false) { + $breakpoint: map-get($breakpoints, $size); + @if $rem { $breakpoint: ($breakpoint / 1em) * 1rem; } @return $breakpoint; } diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 40cf3f7..0251d4b 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -16,39 +16,39 @@ @include o-grid-item(); } -@each $-size in $o-grid-horizontal-gutter { - @if $-size == $o-grid-horizontal-gutter-default { - @warn 'Defining the same size in $o-grid-horizontal-gutter as set for $o-grid-horizontal-gutter-default is redundant, remove "#{$-size}" from $o-grid-horizontal-gutter'; +@each $size in $o-grid-horizontal-gutter { + @if $size == $o-grid-horizontal-gutter-default { + @warn 'Defining the same size in $o-grid-horizontal-gutter as set for $o-grid-horizontal-gutter-default is redundant, remove "#{$size}" from $o-grid-horizontal-gutter'; } - .o-grid--horizontal-gutter-#{$-size} { - @include o-grid-horizontal-gutter(spacing($-size)); + .o-grid--horizontal-gutter-#{$size} { + @include o-grid-horizontal-gutter(spacing($size)); } } -@each $-size, $-breakpoints in $o-grid-horizontal-gutter-breakpoints { - @each $-breakpoint in $-breakpoints { - @media (min-width: breakpoint($-breakpoint)) { - .o-grid--horizontal-gutter-#{$-size}\@#{$-breakpoint} { - @include o-grid-horizontal-gutter(spacing($-size)); +@each $size, $breakpoints in $o-grid-horizontal-gutter-breakpoints { + @each $breakpoint in $breakpoints { + @media (min-width: breakpoint($breakpoint)) { + .o-grid--horizontal-gutter-#{$size}\@#{$breakpoint} { + @include o-grid-horizontal-gutter(spacing($size)); } } } } -@each $-size in $o-grid-vertical-gutter { - @if $-size == $o-grid-vertical-gutter-default { - @warn 'Defining the same size in $o-grid-vertical-gutter as set for $o-grid-vertical-gutter-default is redundant, remove "#{$-size}" from $o-grid-vertical-gutter'; +@each $size in $o-grid-vertical-gutter { + @if $size == $o-grid-vertical-gutter-default { + @warn 'Defining the same size in $o-grid-vertical-gutter as set for $o-grid-vertical-gutter-default is redundant, remove "#{$size}" from $o-grid-vertical-gutter'; } - .o-grid--vertical-gutter-#{$-size} { - @include o-grid-vertical-gutter(spacing($-size)); + .o-grid--vertical-gutter-#{$size} { + @include o-grid-vertical-gutter(spacing($size)); } } -@each $-size, $-breakpoints in $o-grid-vertical-gutter-breakpoints { - @each $-breakpoint in $-breakpoints { - @media (min-width: breakpoint($-breakpoint)) { - .o-grid--vertical-gutter-#{$-size}\@#{$-breakpoint} { - @include o-grid-vertical-gutter(spacing($-size)); +@each $size, $breakpoints in $o-grid-vertical-gutter-breakpoints { + @each $breakpoint in $breakpoints { + @media (min-width: breakpoint($breakpoint)) { + .o-grid--vertical-gutter-#{$size}\@#{$breakpoint} { + @include o-grid-vertical-gutter(spacing($size)); } } } diff --git a/packages/avalanchesass-utility-width/scss/_mixin.scss b/packages/avalanchesass-utility-width/scss/_mixin.scss index 40ae239..549ae09 100644 --- a/packages/avalanchesass-utility-width/scss/_mixin.scss +++ b/packages/avalanchesass-utility-width/scss/_mixin.scss @@ -3,9 +3,9 @@ /// @group Utility: width /// @author Markus Oberlehner /// -/// @param {Number} $-size +/// @param {Number} $size /// Width divisor. -/// @param {Number} $-base [12] +/// @param {Number} $base [12] /// Width base. /// /// @example scss - Usage @@ -17,7 +17,7 @@ /// .element { /// width: 50%; /// } -@mixin u-width($-size, $-base: 12) { - $-base-size: (100% / $-base); - width: ($-base-size * $-size) !important; +@mixin u-width($size, $base: 12) { + $base-size: (100% / $base); + width: ($base-size * $size) !important; } diff --git a/packages/avalanchesass-utility-width/scss/index.scss b/packages/avalanchesass-utility-width/scss/index.scss index c9f51b0..05817f3 100644 --- a/packages/avalanchesass-utility-width/scss/index.scss +++ b/packages/avalanchesass-utility-width/scss/index.scss @@ -1,17 +1,17 @@ @import 'variable'; @import 'mixin'; -@for $-size from 1 through $u-width-base { - .u-width-#{$-size}\/#{$u-width-base} { - @include u-width($-size, $u-width-base); +@for $size from 1 through $u-width-base { + .u-width-#{$size}\/#{$u-width-base} { + @include u-width($size, $u-width-base); } } -@each $-breakpoint in $u-width-breakpoints { - @media (min-width: map-get($breakpoints, $-breakpoint)) { - @for $-size from 1 through $u-width-base { - .u-width-#{$-size}\/#{$u-width-base}\@#{$-breakpoint} { - @include u-width($-size, $u-width-base); +@each $breakpoint in $u-width-breakpoints { + @media (min-width: map-get($breakpoints, $breakpoint)) { + @for $size from 1 through $u-width-base { + .u-width-#{$size}\/#{$u-width-base}\@#{$breakpoint} { + @include u-width($size, $u-width-base); } } } From 4f7f236995fbf85de3a54e40d39b5bd26ac6da77 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:13:40 +0100 Subject: [PATCH 275/355] Add spacing setting package --- .../avalanchesass-setting-spacings/.npmignore | 1 + .../avalanchesass-setting-spacings/README.md | 38 ++++++++++++++++++ .../package.json | 19 +++++++++ .../scss/_function.scss | 28 +++++++++++++ .../scss/_variable.scss | 16 ++++++++ .../scss/index.scss | 1 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 4879 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 5684 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 6579 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 7727 bytes .../test/test.hbs | 1 + .../test/test.scss | 5 +++ 12 files changed, 109 insertions(+) create mode 100644 packages/avalanchesass-setting-spacings/.npmignore create mode 100644 packages/avalanchesass-setting-spacings/README.md create mode 100644 packages/avalanchesass-setting-spacings/package.json create mode 100644 packages/avalanchesass-setting-spacings/scss/_function.scss create mode 100644 packages/avalanchesass-setting-spacings/scss/_variable.scss create mode 100644 packages/avalanchesass-setting-spacings/scss/index.scss create mode 100644 packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/avalanchesass-setting-spacings/test/test.hbs create mode 100644 packages/avalanchesass-setting-spacings/test/test.scss diff --git a/packages/avalanchesass-setting-spacings/.npmignore b/packages/avalanchesass-setting-spacings/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/avalanchesass-setting-spacings/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/avalanchesass-setting-spacings/README.md b/packages/avalanchesass-setting-spacings/README.md new file mode 100644 index 0000000..ab2fa9c --- /dev/null +++ b/packages/avalanchesass-setting-spacings/README.md @@ -0,0 +1,38 @@ +# avalanchesass-setting-spacings +Spacing sizes. + +## Install +```bash +npm install avalanchesass-setting-spacings --save +``` + +## Basic usage +```scss +// Import the main file. +@import '~avalanchesass-setting-spacings'; + +// Import just the variable file. +@import '~avalanchesass-setting-spacings/scss/variable'; +``` + +## Usage +```scss +// Function. +.element { + margin-top: spacing(m); +} + +// Map. +.element { + margin-top: map-get($spacings, m); +} +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/avalanchesass-setting-spacings/package.json b/packages/avalanchesass-setting-spacings/package.json new file mode 100644 index 0000000..3ac35b5 --- /dev/null +++ b/packages/avalanchesass-setting-spacings/package.json @@ -0,0 +1,19 @@ +{ + "name": "avalanchesass-setting-spacings", + "description": "Spacing sizes", + "keywords": [ + "avalanchesass-package", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanchesass-setting-spacings" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + } +} diff --git a/packages/avalanchesass-setting-spacings/scss/_function.scss b/packages/avalanchesass-setting-spacings/scss/_function.scss new file mode 100644 index 0000000..a652da6 --- /dev/null +++ b/packages/avalanchesass-setting-spacings/scss/_function.scss @@ -0,0 +1,28 @@ +@import 'variable'; + +//// +/// @group Setting: spacings +/// @author Markus Oberlehner +//// + +/// Returns spacing size. +/// +/// @param {String} $size +/// Size (xs, s, m, l, xl, xxl or xxxl). +/// @param {Boolean} $rem [false] +/// Return spacing size in rem instead of em. +/// +/// @example scss - Usage +/// .element { +/// margin-top: spacing(m); +/// } +/// +/// @example css - CSS Output +/// .element { +/// margin-top: 1em; +/// } +@function spacing($size, $rem: false) { + $spacing: map-get($spacings, $size); + @if $rem { $spacing: ($spacing / 1em) * 1rem; } + @return $spacing; +} diff --git a/packages/avalanchesass-setting-spacings/scss/_variable.scss b/packages/avalanchesass-setting-spacings/scss/_variable.scss new file mode 100644 index 0000000..4ff3d3c --- /dev/null +++ b/packages/avalanchesass-setting-spacings/scss/_variable.scss @@ -0,0 +1,16 @@ +//// +/// @group Setting: spacings +/// @author Markus Oberlehner +//// + +/// Spacing sizes. +/// @type Map +$spacings: ( + xs: 0.5em, + s: 0.75em, + m: 1em, + l: 1.5em, + xl: 2em, + xxl: 3.5em, + xxxl: 6em, +); diff --git a/packages/avalanchesass-setting-spacings/scss/index.scss b/packages/avalanchesass-setting-spacings/scss/index.scss new file mode 100644 index 0000000..e62700d --- /dev/null +++ b/packages/avalanchesass-setting-spacings/scss/index.scss @@ -0,0 +1 @@ +@import 'function'; diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5f4adb2af976a6798939e30d1c1f0e504b5bb3 GIT binary patch literal 4879 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 Vgg@m#u0LD=EpBnF&dV$_1ZVKm&vs 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..574547cfd12723463a49f588c1f3e87de16bf54c GIT binary patch literal 6579 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0b03dbe6aa95e3fa7b183baef28e86bc187527 GIT binary patch literal 7727 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 literal 0 HcmV?d00001 diff --git a/packages/avalanchesass-setting-spacings/test/test.hbs b/packages/avalanchesass-setting-spacings/test/test.hbs new file mode 100644 index 0000000..7b67343 --- /dev/null +++ b/packages/avalanchesass-setting-spacings/test/test.hbs @@ -0,0 +1 @@ +
diff --git a/packages/avalanchesass-setting-spacings/test/test.scss b/packages/avalanchesass-setting-spacings/test/test.scss new file mode 100644 index 0000000..06748b6 --- /dev/null +++ b/packages/avalanchesass-setting-spacings/test/test.scss @@ -0,0 +1,5 @@ +@import '../scss/index'; + +.test::before { + content: '#{spacing(xs)}, #{spacing(s)}, #{spacing(m)}, #{spacing(l)}, #{spacing(xl)}, #{spacing(xxl)}, #{spacing(xxxl)}'; +} From efd67daa0b8daab341d32033521cff7c3ad9470d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:24:39 +0100 Subject: [PATCH 276/355] Add "main" field to the package.json of the packages --- packages/avalanchesass-object-grid/package.json | 6 +++++- packages/avalanchesass-setting-spacings/package.json | 3 ++- packages/avalanchesass-utility-width/package.json | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 61a6706..24c3ddc 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -15,5 +15,9 @@ }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" - } + }, + "dependencies": { + "avalanchesass-setting-spacings": "0.0.0-alpha.4f7f2369" + }, + "main": "scss/index.scss" } diff --git a/packages/avalanchesass-setting-spacings/package.json b/packages/avalanchesass-setting-spacings/package.json index 3ac35b5..695a5d6 100644 --- a/packages/avalanchesass-setting-spacings/package.json +++ b/packages/avalanchesass-setting-spacings/package.json @@ -15,5 +15,6 @@ }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" - } + }, + "main": "scss/index.scss" } diff --git a/packages/avalanchesass-utility-width/package.json b/packages/avalanchesass-utility-width/package.json index c85cf3f..4cf5b80 100644 --- a/packages/avalanchesass-utility-width/package.json +++ b/packages/avalanchesass-utility-width/package.json @@ -15,5 +15,6 @@ }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" - } + }, + "main": "scss/index.scss" } From 6e9d29d9f0f4310eae64b8148d62929c312c0a59 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:46:31 +0100 Subject: [PATCH 277/355] Update the node-sass-magic-importer dependency and change the script execution for the test css build step, to cd in the package directory so the CWD ist the package directory for node module resolving --- package.json | 2 +- test/scripts/build-test-css.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 87d2472..b7dce26 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "handlebars-cmd": "^0.1.4", "lerna": "2.0.0-beta.29", "node-sass": "^3.10.1", - "node-sass-magic-importer": "^1.1.0", + "node-sass-magic-importer": "^2.1.1", "postcss-cli": "^2.6.0", "sassdoc": "^2.1.20", "stylelint": "^7.3.1", diff --git a/test/scripts/build-test-css.sh b/test/scripts/build-test-css.sh index 864ceb7..c0b3c85 100644 --- a/test/scripts/build-test-css.sh +++ b/test/scripts/build-test-css.sh @@ -5,4 +5,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$DIR/_build-test-parameter.sh" -node_modules/node-sass/bin/node-sass --importer node_modules/node-sass-magic-importer "packages/$PACKAGE/test/test.scss" | node_modules/postcss-cli/bin/postcss -u autoprefixer --autoprefixer.browsers "safari >= 4" -o "packages/$PACKAGE/test/tmp/test.css" +( cd "packages/$PACKAGE" && ../../node_modules/node-sass/bin/node-sass --importer ../../node_modules/node-sass-magic-importer/dist/cli.js "test/test.scss" | ../../node_modules/postcss-cli/bin/postcss -u autoprefixer --autoprefixer.browsers "safari >= 4" -o "test/tmp/test.css" ) From 5f69fba1ae535613b6b6fa51b7b28be38665302e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:46:59 +0100 Subject: [PATCH 278/355] Use the spacing setting package in the grid object package --- packages/avalanchesass-object-grid/package.json | 2 +- .../scss/_variable.scss | 17 ++--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/packages/avalanchesass-object-grid/package.json b/packages/avalanchesass-object-grid/package.json index 24c3ddc..180f5d0 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/avalanchesass-object-grid/package.json @@ -17,7 +17,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "avalanchesass-setting-spacings": "0.0.0-alpha.4f7f2369" + "avalanchesass-setting-spacings": "0.0.0-alpha.efd67daa" }, "main": "scss/index.scss" } diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 3a252a2..53b292a 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,20 +1,7 @@ +@import '~avalanchesass-setting-spacings'; + // @TODO: may not use separate file? // @TODO: import default variables. -$spacings: ( - xs: 0.5em, - s: 0.75em, - m: 1em, - l: 1.5em, - xl: 2em, - xxl: 3.5em, - xxxl: 6em, -); - -@function spacing($size, $rem: false) { - $spacing: map-get($spacings, $size); - @if $rem { $spacing: ($spacing / 1em) * 1rem; } - @return $spacing; -} $breakpoints: ( s: 30em, From df1ae7308a9fef78d2451f0ce8f1d278ace6a91c Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 2 Nov 2016 19:51:26 +0100 Subject: [PATCH 279/355] Move the spacing setting package import in the grid object package to the file where the dependency is used (index.scss) --- packages/avalanchesass-object-grid/scss/_variable.scss | 2 -- packages/avalanchesass-object-grid/scss/index.scss | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/avalanchesass-object-grid/scss/_variable.scss index 53b292a..1077735 100644 --- a/packages/avalanchesass-object-grid/scss/_variable.scss +++ b/packages/avalanchesass-object-grid/scss/_variable.scss @@ -1,5 +1,3 @@ -@import '~avalanchesass-setting-spacings'; - // @TODO: may not use separate file? // @TODO: import default variables. diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 0251d4b..b07f5a7 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,3 +1,5 @@ +@import '~avalanchesass-setting-spacings'; + @import 'variable'; @import 'mixin'; From 409ed4e9233c31016030c50a65fd12e4ff6e4df6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 10:59:25 +0100 Subject: [PATCH 280/355] Do not use tilde prefixed imports to load dependencies from node_modules, for max compatibility --- packages/avalanchesass-object-grid/scss/index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index b07f5a7..4bbe3fd 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,4 +1,4 @@ -@import '~avalanchesass-setting-spacings'; +@import '../node_modules/avalanchesass-setting-spacings/scss/index.scss'; @import 'variable'; @import 'mixin'; From fef6c85009f92c66c3b036fa8146f59efc9a5316 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 11:10:20 +0100 Subject: [PATCH 281/355] Do not use the scss file extension when importing scss files --- packages/avalanchesass-object-grid/scss/index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index 4bbe3fd..c93041f 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,4 +1,4 @@ -@import '../node_modules/avalanchesass-setting-spacings/scss/index.scss'; +@import '../node_modules/avalanchesass-setting-spacings/scss/index'; @import 'variable'; @import 'mixin'; From c5b9fbd632031d34d5b174a4c56044fc056ea78e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 11:21:31 +0100 Subject: [PATCH 282/355] Add informations about node-sass-magic-importer and how to use the package without it. --- packages/avalanchesass-object-grid/README.md | 6 ++++++ packages/avalanchesass-setting-spacings/README.md | 6 ++++++ packages/avalanchesass-utility-width/README.md | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index d363734..236d5ac 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -7,12 +7,18 @@ npm install avalanchesass-object-grid --save ``` ## Basic usage +It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. + ```scss // Import the main file. @import '~avalanchesass-object-grid'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-object-grid/scss/index'; // Import just the mixin file. @import '~avalanchesass-object-grid/scss/mixin'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-object-grid/scss/mixin'; ``` ## Demo diff --git a/packages/avalanchesass-setting-spacings/README.md b/packages/avalanchesass-setting-spacings/README.md index ab2fa9c..38a9b44 100644 --- a/packages/avalanchesass-setting-spacings/README.md +++ b/packages/avalanchesass-setting-spacings/README.md @@ -7,12 +7,18 @@ npm install avalanchesass-setting-spacings --save ``` ## Basic usage +It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. + ```scss // Import the main file. @import '~avalanchesass-setting-spacings'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-setting-spacings/scss/index'; // Import just the variable file. @import '~avalanchesass-setting-spacings/scss/variable'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-setting-spacings/scss/variable'; ``` ## Usage diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index 11ad9fd..70d8ed5 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -7,12 +7,18 @@ npm install avalanchesass-utility-width --save ``` ## Basic usage +It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. + ```scss // Import the main file. @import '~avalanchesass-utility-width'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-utility-width/scss/index'; // Import just the mixin file. @import '~avalanchesass-utility-width/scss/mixin'; +// Without `node-sass-magic-importer`. +@import 'node_modules/avalanchesass-utility-width/scss/mixin'; ``` ## Demo From 67b39ab85218e0edc1198a5b32ffad7f02f85bc8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 13:53:53 +0100 Subject: [PATCH 283/355] Remove the none node-sass-magic-importer examples because node-sass-magic-importer is required for loading package dependencies --- packages/avalanchesass-object-grid/README.md | 6 +----- packages/avalanchesass-setting-spacings/README.md | 6 +----- packages/avalanchesass-utility-width/README.md | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/packages/avalanchesass-object-grid/README.md b/packages/avalanchesass-object-grid/README.md index 236d5ac..1f2f095 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/avalanchesass-object-grid/README.md @@ -7,18 +7,14 @@ npm install avalanchesass-object-grid --save ``` ## Basic usage -It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. ```scss // Import the main file. @import '~avalanchesass-object-grid'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-object-grid/scss/index'; // Import just the mixin file. @import '~avalanchesass-object-grid/scss/mixin'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-object-grid/scss/mixin'; ``` ## Demo diff --git a/packages/avalanchesass-setting-spacings/README.md b/packages/avalanchesass-setting-spacings/README.md index 38a9b44..f9fcc69 100644 --- a/packages/avalanchesass-setting-spacings/README.md +++ b/packages/avalanchesass-setting-spacings/README.md @@ -7,18 +7,14 @@ npm install avalanchesass-setting-spacings --save ``` ## Basic usage -It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. ```scss // Import the main file. @import '~avalanchesass-setting-spacings'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-setting-spacings/scss/index'; // Import just the variable file. @import '~avalanchesass-setting-spacings/scss/variable'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-setting-spacings/scss/variable'; ``` ## Usage diff --git a/packages/avalanchesass-utility-width/README.md b/packages/avalanchesass-utility-width/README.md index 70d8ed5..2a933ed 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/avalanchesass-utility-width/README.md @@ -7,18 +7,14 @@ npm install avalanchesass-utility-width --save ``` ## Basic usage -It is recommended to use [node-sass](https://github.com/sass/node-sass) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer to enable tilde (~) prefixed imports. +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. ```scss // Import the main file. @import '~avalanchesass-utility-width'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-utility-width/scss/index'; // Import just the mixin file. @import '~avalanchesass-utility-width/scss/mixin'; -// Without `node-sass-magic-importer`. -@import 'node_modules/avalanchesass-utility-width/scss/mixin'; ``` ## Demo From e06b746a72c1077fdc6d68120113616000a7463b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 13:54:41 +0100 Subject: [PATCH 284/355] Use tilde import again for dependency importing because otherwise the system does not work --- packages/avalanchesass-object-grid/scss/index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/avalanchesass-object-grid/scss/index.scss index c93041f..b07f5a7 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/avalanchesass-object-grid/scss/index.scss @@ -1,4 +1,4 @@ -@import '../node_modules/avalanchesass-setting-spacings/scss/index'; +@import '~avalanchesass-setting-spacings'; @import 'variable'; @import 'mixin'; From ffe20ed3eaa38857d8e82a8d2194f5dda0a55737 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 5 Nov 2016 13:59:00 +0100 Subject: [PATCH 285/355] Use * instead of _ for markdown formatting --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac7cc9a..fd905b5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Found a problem? Want a new feature? - See if your issue or idea has [already been reported]. - Provide a [reduced test case] or a [live example]. -Remember, a bug is a _demonstrable problem_ caused by _our_ code. +Remember, a bug is a *demonstrable problem* caused by *our* code. ## Submitting Pull Requests From 424928ab21f4b164aa96e49cda73a481c23c74f2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 25 Nov 2016 21:37:17 +0100 Subject: [PATCH 286/355] Use yarn for dependency management --- yarn.lock | 3917 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3917 insertions(+) create mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..5274d60 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3917 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 +abab@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + +abbrev@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +ajv-keywords@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.1.1.tgz#02550bc605a3e576041565628af972e06c549d50" + +ajv@^4.7.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.9.0.tgz#5a358085747b134eb567d6d15e015f1d7802f45c" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-from@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" + +array-index@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" + dependencies: + debug "^2.2.0" + es6-symbol "^3.0.2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + +async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.0.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + dependencies: + lodash "^4.14.0" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.0.0, autoprefixer@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.5.3.tgz#2d853af66d04449fcf50db3066279ab54c3e4b01" + dependencies: + browserslist "~1.4.0" + caniuse-db "^1.0.30000578" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.5" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-runtime@5.5.*: + version "5.5.8" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.5.8.tgz#e5db2aaef91fa98fb91ba94406386cd3a8abeecc" + dependencies: + core-js "^0.9.0" + +backstopjs@^2.0.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/backstopjs/-/backstopjs-2.3.3.tgz#d475c39d3127ae74328de054f73e711c7a092de6" + dependencies: + bluebird "^3.4.6" + casperjs "^1.1.0-beta5" + chalk "^1.1.3" + fs-extra "^0.30.0" + junitwriter "~0.3.1" + lodash.map "^4.6.0" + minimist "^1.2.0" + node-resemble-js "^0.1.1" + open "0.0.5" + phantomjs-prebuilt "^2.1.7" + temp "^0.8.3" + +balanced-match@^0.4.0, balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + +bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.6: + version "3.4.6" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browserslist@^1.1.1, browserslist@^1.1.3, browserslist@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049" + dependencies: + caniuse-db "^1.0.30000539" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +camel-case@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-1.2.2.tgz#1aca7c4d195359a2ce9955793433c6e5542511f2" + dependencies: + sentence-case "^1.1.1" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0, camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000578: + version "1.0.30000587" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000587.tgz#18bb26f03139887539054cfe1c5358583eaabcf0" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +casperjs@^1.1.0-beta5: + version "1.1.3" + resolved "https://registry.yarnpkg.com/casperjs/-/casperjs-1.1.3.tgz#9653de731f8aa44d0915a69ba2233164bb2eaf94" + +cdocparser@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/cdocparser/-/cdocparser-0.13.0.tgz#1ba98a1e1e1668e2bfb35d41761e9e4645d731ba" + dependencies: + escape-string-regexp "^1.0.2" + lodash.assign "^2.4.1" + strip-indent "^1.0.0" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +change-case@2.3.x: + version "2.3.1" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-2.3.1.tgz#2c4fde3f063bb41d00cd68e0d5a09db61cbe894f" + dependencies: + camel-case "^1.1.1" + constant-case "^1.1.0" + dot-case "^1.1.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + param-case "^1.1.0" + pascal-case "^1.1.0" + path-case "^1.1.0" + sentence-case "^1.1.1" + snake-case "^1.1.0" + swap-case "^1.1.0" + title-case "^1.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +cheerio@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^4.1.0" + optionalDependencies: + jsdom "^7.0.2" + +chokidar@^1.5.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chroma-js@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-0.6.3.tgz#b5344f9b7c9cacefd3262184e3696fa917a8e5c0" + +clean-css@3.1.x: + version "3.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.1.9.tgz#dbd05a148be4943bb37ce0679e676cbc9f580266" + dependencies: + commander "2.6.x" + source-map ">=0.1.43 <0.2" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cli@0.6.x: + version "0.6.6" + resolved "https://registry.yarnpkg.com/cli/-/cli-0.6.6.tgz#02ad44a380abf27adac5e6f0cdd7b043d74c53e3" + dependencies: + exit "0.1.2" + glob "~ 3.2.1" + +cliui@^3.0.3, cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.0.tgz#eae0a2413f55c0942f818c229fefce845d7f3b1c" + dependencies: + is-regexp "^1.0.0" + is-supported-regexp-flag "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +cmd-shim@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-diff@^0.1.3: + version "0.1.7" + resolved "https://registry.yarnpkg.com/color-diff/-/color-diff-0.1.7.tgz#6db78cd9482a8e459d40821eaf4b503283dcb8e2" + +color-logger@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.3.tgz#d9b22dd1d973e166b18bf313f9f481bba4df2018" + +colorguard@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/colorguard/-/colorguard-1.2.0.tgz#f3facaf5caaeba4ef54653d9fb25bb73177c0d84" + dependencies: + chalk "^1.1.1" + color-diff "^0.1.3" + log-symbols "^1.0.2" + object-assign "^4.0.1" + pipetteur "^2.0.0" + plur "^2.0.0" + postcss "^5.0.4" + postcss-reporter "^1.2.1" + text-table "^0.2.0" + yargs "^1.2.6" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +command-join@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/command-join/-/command-join-1.1.1.tgz#09e7609012e1dd8b4f0a14fde41a69eff1d2111f" + dependencies: + array-from "^2.1.1" + repeat-string "^1.5.4" + +commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@2.6.x: + version "2.6.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.7: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@1.4.x: + version "1.4.10" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.9" + typedarray "~0.0.5" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +configstore@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz#25e4c16c3768abf75c5a65bc61761f495055b459" + dependencies: + graceful-fs "^3.0.1" + js-yaml "^3.1.0" + mkdirp "^0.5.0" + object-assign "^2.0.0" + osenv "^0.1.0" + user-home "^1.0.0" + uuid "^2.0.1" + xdg-basedir "^1.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constant-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-1.1.2.tgz#8ec2ca5ba343e00aa38dbf4e200fd5ac907efd63" + dependencies: + snake-case "^1.1.0" + upper-case "^1.1.1" + +core-js@^0.9.0, core-js@0.9.18: + version "0.9.18" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-0.9.18.tgz#13f458e430232b0f4ec1f480da7c2f5288e9d095" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.0.tgz#26e384a2055ea4e087050e5e08d53eb4eac8f86e" + dependencies: + graceful-fs "^4.1.2" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +css-color-names@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.3.tgz#de0cef16f4d8aa8222a320d5b6d7e9bbada7b9f6" + +css-rule-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-rule-stream/-/css-rule-stream-1.1.0.tgz#3786e7198983d965a26e31957e09078cbb7705a2" + dependencies: + css-tokenize "^1.0.1" + duplexer2 "0.0.2" + ldjson-stream "^1.2.1" + through2 "^0.6.3" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-extract@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/css-selector-extract/-/css-selector-extract-1.3.2.tgz#978c89f3c324b119297d6a86efeb6e131c97d4ba" + dependencies: + postcss "^5.2.6" + optionalDependencies: + esdoc "^0.4.8" + +css-tokenize@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-tokenize/-/css-tokenize-1.0.1.tgz#4625cb1eda21c143858b7f81d6803c1d26fc14be" + dependencies: + inherits "^2.0.1" + readable-stream "^1.0.33" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3" + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +d@^0.1.1, d@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" + dependencies: + es5-ext "~0.10.2" + +dargs@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.11.tgz#f27cbee7a012bbfb82ea051562d3977f6093dbb1" + dependencies: + get-stdin "*" + meow "*" + +debug@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.2, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +docopt@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" + +doiuse@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/doiuse/-/doiuse-2.5.0.tgz#c7f156965d054bf4d699a4067af1cadbc7350b7c" + dependencies: + browserslist "^1.1.1" + caniuse-db "^1.0.30000187" + css-rule-stream "^1.1.0" + duplexer2 "0.0.2" + jsonfilter "^1.1.2" + ldjson-stream "^1.2.1" + lodash "^4.0.0" + multimatch "^2.0.0" + postcss "^5.0.8" + source-map "^0.4.2" + through2 "^0.6.3" + yargs "^3.5.4" + +dom-serializer@~0.1.0, dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.5, domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-1.1.2.tgz#1e73826900de28d6de5480bc1de31d0842b06bec" + dependencies: + sentence-case "^1.1.2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexify@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" + dependencies: + end-of-stream "1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +end-of-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" + dependencies: + once "~1.3.0" + +ends-with@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ends-with/-/ends-with-0.2.0.tgz#2f9da98d57a50cfda4571ce4339000500f4e6b8a" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.7, es5-ext@~0.10.11, es5-ext@~0.10.2: + version "0.10.12" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-denodeify@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-denodeify/-/es6-denodeify-0.1.5.tgz#31d4d5fe9c5503e125460439310e16a2a3f39c1f" + +es6-iterator@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" + dependencies: + d "^0.1.1" + es5-ext "^0.10.7" + es6-symbol "3" + +es6-promise@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" + +es6-promise@^3.0.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +es6-promise@~4.0.3: + version "4.0.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" + +es6-symbol@^3.0.2, es6-symbol@~3.1, es6-symbol@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" + dependencies: + d "~0.1.1" + es5-ext "~0.10.11" + +escape-html@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +escodegen@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.7.0.tgz#4e299d8cc33087b7f29c19e2b9e84362abe35453" + dependencies: + esprima "^1.2.2" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.5.0" + optionalDependencies: + source-map "~0.2.0" + +esdoc@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-0.4.8.tgz#4972e2b6de85e2b929a330ed54b8c5f3fdcebd33" + dependencies: + cheerio "0.20.0" + color-logger "0.0.3" + core-js "0.9.18" + escape-html "1.0.2" + escodegen "1.7.0" + espree "2.2.0" + estraverse "4.1.0" + fs-extra "0.26.5" + ice-cap "0.0.4" + marked "0.3.5" + minimist "1.1.1" + taffydb "2.7.2" + +espree@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-2.2.0.tgz#01dc927a7ea5081d1a7b6d610249e624e7fef3d6" + +esprima@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" + +esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.0.tgz#40f23a76092041be6467d7f235c933b670766e05" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +execall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" + dependencies: + clone-regexp "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@^2.0.0, extend@2.*: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-2.0.1.tgz#1ee8010689e7395ff9448241c98652bc759a8260" + +extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-levenshtein@~1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz#0178dcdee023b92905193af0959e8a7639cfdcb9" + +fast-levenshtein@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~1.0.0-rc4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-extra@^0.16.3: + version "0.16.5" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.16.5.tgz#1ad661fa6c86c9608cd1b49efc6fce834939a750" + dependencies: + graceful-fs "^3.0.5" + jsonfile "^2.0.0" + rimraf "^2.2.8" + +fs-extra@^0.30.0, fs-extra@~0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@0.26.5: + version "0.26.5" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.5.tgz#53ac74667ca083fd2dc1712c813039ca32d69a7f" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gather-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" + +gauge@~2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gauge@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@*, get-stdin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-stream@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-4.1.1.tgz#b842df10d688c7eb6bcfcebd846f3852296b3200" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^2.0.2" + +glob-watcher@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.8.tgz#68aeb661e7e2ce8d3634381b2ec415f00c6bc2a4" + dependencies: + gaze "^0.5.1" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +"glob@~ 3.2.1": + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +glob2base@^0.0.12, glob2base@0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +globby@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^6.0.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + +globule@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" + dependencies: + glob "~7.1.1" + lodash "~4.16.4" + minimatch "~3.0.2" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +got@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz#e5d0ed4af55fc3eef4d56007769d98192bcb2eca" + dependencies: + duplexify "^3.2.0" + infinity-agent "^2.0.0" + is-redirect "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + nested-error-stacks "^1.0.0" + object-assign "^3.0.0" + prepend-http "^1.0.0" + read-all-stream "^3.0.0" + timed-out "^2.0.0" + +graceful-fs@^3.0.0, graceful-fs@^3.0.1, graceful-fs@^3.0.5: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +handlebars-cmd@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/handlebars-cmd/-/handlebars-cmd-0.1.4.tgz#576b34184192631e425e04b827be91609d3f46b7" + dependencies: + handlebars "~1.0.10" + optimist "~0.3.5" + +handlebars@~1.0.10: + version "1.0.12" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-1.0.12.tgz#18c6d3440c35e91b19b3ff582b9151ab4985d4fc" + dependencies: + optimist "~0.3" + uglify-js "~2.3" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hasha@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hosted-git-info@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +html-minifier@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-0.7.2.tgz#2b7959b1051a481e71cd7c6e59a64272af895cfd" + dependencies: + change-case "2.3.x" + clean-css "3.1.x" + cli "0.6.x" + concat-stream "1.4.x" + relateurl "0.2.x" + uglify-js "2.4.x" + +html-tags@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.1.1.tgz#869f43859f12d9bdc3892419e494a628aa1b204e" + +htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +ice-cap@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" + dependencies: + cheerio "0.20.0" + color-logger "0.0.3" + +ignore@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +infinity-agent@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz#45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +irregular-plurals@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + dependencies: + lower-case "^1.1.0" + +is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + +is-stream@^1.0.0, is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-supported-regexp-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz#8b520c85fae7a253382d4b02652e045576e13bb8" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + dependencies: + upper-case "^1.1.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@~1.0.0, isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isexe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +jpeg-js@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-yaml@^3.1.0, js-yaml@^3.2.1, js-yaml@^3.4.3: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +jsdom@^7.0.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.2.0" + webidl-conversions "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonfile@^2.0.0, jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfilter@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" + dependencies: + JSONStream "^0.8.4" + minimist "^1.1.0" + stream-combiner "^0.2.1" + through2 "^0.6.3" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonparse@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +JSONStream@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.8.4.tgz#91657dfe6ff857483066132b4618b62e8f4887bd" + dependencies: + jsonparse "0.0.5" + through ">=2.2.7 <3" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +junitwriter@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/junitwriter/-/junitwriter-0.3.1.tgz#7c00efc136ae56630973b13df0c02d67963aaf5a" + dependencies: + dateformat "1.0.11" + merge "1.2.0" + mkdirp "0.5.0" + xmlbuilder "2.6.2" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +known-css-properties@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.0.5.tgz#33de5b8279010a72db917d33119e4c27c078490a" + +latest-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb" + dependencies: + package-json "^1.0.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +ldjson-stream@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ldjson-stream/-/ldjson-stream-1.2.1.tgz#91beceda5ac4ed2b17e649fb777e7abfa0189c2b" + dependencies: + split2 "^0.2.1" + through2 "^0.6.1" + +lerna@2.0.0-beta.30: + version "2.0.0-beta.30" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.0.0-beta.30.tgz#517b54f211f74d8899a42d8e03fdbe311fbe6e2a" + dependencies: + async "^1.5.0" + chalk "^1.1.1" + cmd-shim "^2.0.2" + command-join "^1.1.1" + cross-spawn "^4.0.0" + inquirer "^0.12.0" + lodash.find "^4.3.0" + lodash.unionwith "^4.2.0" + meow "^3.7.0" + minimatch "^3.0.0" + mkdirp "^0.5.1" + normalize-path "^2.0.1" + object-assign "^4.0.1" + object-assign-sorted "^1.0.0" + pad "^1.0.0" + path-exists "^2.1.0" + progress "^1.1.8" + read-cmd-shim "^1.0.1" + rimraf "^2.4.4" + semver "^5.1.0" + signal-exit "^2.1.2" + sync-exec "^0.6.2" + +levn@~0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.2.5.tgz#ba8d339d0ca4a610e3a3f145b9caf48807155054" + dependencies: + prelude-ls "~1.1.0" + type-check "~0.3.1" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash._basebind@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._basebind/-/lodash._basebind-2.4.1.tgz#e940b9ebdd27c327e0a8dab1b55916c5341e9575" + dependencies: + lodash._basecreate "~2.4.1" + lodash._setbinddata "~2.4.1" + lodash._slice "~2.4.1" + lodash.isobject "~2.4.1" + +lodash._basecallback@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz#b7b2bb43dc2160424a21ccf26c57e443772a8e27" + dependencies: + lodash._baseisequal "^3.0.0" + lodash._bindcallback "^3.0.0" + lodash.isarray "^3.0.0" + lodash.pairs "^3.0.0" + +lodash._basecreate@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-2.4.1.tgz#f8e6f5b578a9e34e541179b56b8eeebf4a287e08" + dependencies: + lodash._isnative "~2.4.1" + lodash.isobject "~2.4.1" + lodash.noop "~2.4.1" + +lodash._basecreatecallback@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._basecreatecallback/-/lodash._basecreatecallback-2.4.1.tgz#7d0b267649cb29e7a139d0103b7c11fae84e4851" + dependencies: + lodash._setbinddata "~2.4.1" + lodash.bind "~2.4.1" + lodash.identity "~2.4.1" + lodash.support "~2.4.1" + +lodash._basecreatewrapper@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.4.1.tgz#4d31f2e7de7e134fbf2803762b8150b32519666f" + dependencies: + lodash._basecreate "~2.4.1" + lodash._setbinddata "~2.4.1" + lodash._slice "~2.4.1" + lodash.isobject "~2.4.1" + +lodash._basedifference@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basedifference/-/lodash._basedifference-3.0.3.tgz#f2c204296c2a78e02b389081b6edcac933cf629c" + dependencies: + lodash._baseindexof "^3.0.0" + lodash._cacheindexof "^3.0.0" + lodash._createcache "^3.0.0" + +lodash._baseflatten@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz#0770ff80131af6e34f3b511796a7ba5214e65ff7" + dependencies: + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash._baseindexof@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" + +lodash._baseisequal@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz#d8025f76339d29342767dcc887ce5cb95a5b51f1" + dependencies: + lodash.isarray "^3.0.0" + lodash.istypedarray "^3.0.0" + lodash.keys "^3.0.0" + +lodash._baseuniq@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-3.0.3.tgz#2123fa0db2d69c28d5beb1c1f36d61522a740234" + dependencies: + lodash._baseindexof "^3.0.0" + lodash._cacheindexof "^3.0.0" + lodash._createcache "^3.0.0" + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._cacheindexof@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" + +lodash._createcache@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" + dependencies: + lodash._getnative "^3.0.0" + +lodash._createwrapper@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._createwrapper/-/lodash._createwrapper-2.4.1.tgz#51d6957973da4ed556e37290d8c1a18c53de1607" + dependencies: + lodash._basebind "~2.4.1" + lodash._basecreatewrapper "~2.4.1" + lodash._slice "~2.4.1" + lodash.isfunction "~2.4.1" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._isnative@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + +lodash._objecttypes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + +lodash._setbinddata@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._setbinddata/-/lodash._setbinddata-2.4.1.tgz#f7c200cd1b92ef236b399eecf73c648d17aa94d2" + dependencies: + lodash._isnative "~2.4.1" + lodash.noop "~2.4.1" + +lodash._shimkeys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash._slice@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._slice/-/lodash._slice-2.4.1.tgz#745cf41a53597b18f688898544405efa2b06d90f" + +lodash.assign@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-2.4.1.tgz#84c39596dd71181a97b0652913a7c9675e49b1aa" + dependencies: + lodash._basecreatecallback "~2.4.1" + lodash._objecttypes "~2.4.1" + lodash.keys "~2.4.1" + +lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.bind@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-2.4.1.tgz#5d19fa005c8c4d236faf4742c7b7a1fcabe29267" + dependencies: + lodash._createwrapper "~2.4.1" + lodash._slice "~2.4.1" + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.difference@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-3.2.2.tgz#dc463fffe6619ab4af49a3c87ace6695a285dde6" + dependencies: + lodash._basedifference "^3.0.0" + lodash._baseflatten "^3.0.0" + lodash.restparam "^3.0.0" + +lodash.find@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" + +lodash.identity@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.identity/-/lodash.identity-2.4.1.tgz#6694cffa65fef931f7c31ce86c74597cf560f4f1" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isfunction@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz#2cfd575c73e498ab57e319b77fa02adef13a94d1" + +lodash.isobject@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.istypedarray@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.keys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + dependencies: + lodash._isnative "~2.4.1" + lodash._shimkeys "~2.4.1" + lodash.isobject "~2.4.1" + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.noop@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-2.4.1.tgz#4fb54f816652e5ae10e8f72f717a388c7326538a" + +lodash.pairs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.pairs/-/lodash.pairs-3.0.1.tgz#bbe08d5786eeeaa09a15c91ebf0dcb7d2be326a9" + dependencies: + lodash.keys "^3.0.0" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.support@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.support/-/lodash.support-2.4.1.tgz#320e0b67031673c28d7a2bb5d9e0331a45240515" + dependencies: + lodash._isnative "~2.4.1" + +lodash.unionwith@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.unionwith/-/lodash.unionwith-4.6.0.tgz#74d140b5ca8146e6c643c3724f5152538d9ac1f0" + +lodash.uniq@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-3.2.2.tgz#146c36f25e75d19501ba402e88ba14937f63cd8b" + dependencies: + lodash._basecallback "^3.0.0" + lodash._baseuniq "^3.0.0" + lodash._getnative "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.isarray "^3.0.0" + +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.3.0: + version "4.17.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +lodash@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.5.0.tgz#19bb3f4d51278f0b8c818ed145c74ecf9fe40e6d" + +lodash@~4.16.4: + version "4.16.6" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +markdown@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/markdown/-/markdown-0.5.0.tgz#28205b565a8ae7592de207463d6637dc182722b2" + dependencies: + nopt "~2.1.1" + +marked@^0.3.0: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +marked@0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.5.tgz#4113a15ac5d7bca158a5aae07224587b9fa15b94" + +memoize-decorator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/memoize-decorator/-/memoize-decorator-1.0.2.tgz#605a41715c4171db192a90098b00ab8d6e1102f5" + +meow@*, meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-stream@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-0.1.8.tgz#48a07b3b4a121d74a3edbfdcdb4b08adbf0240b1" + dependencies: + through2 "^0.6.1" + +merge@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.13" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + dependencies: + mime-db "~1.25.0" + +minimatch@^2.0.1, minimatch@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2, "minimatch@2 || 3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.1.tgz#1bc2bc71658cdca5712475684363615b0b4f695b" + +mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +multimatch@^2.0.0, multimatch@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +nan@^2.3.0, nan@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +neo-async@^1.0.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-1.8.2.tgz#31795888b79dd04357a7c52113a65183e93b6735" + +nested-error-stacks@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" + dependencies: + inherits "~2.0.1" + +node-gyp@^3.3.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.4.0.tgz#dda558393b3ecbbe24c9e6b8703c71194c63fa36" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3" + osenv "0" + path-array "^1.0.0" + request "2" + rimraf "2" + semver "2.x || 3.x || 4 || 5" + tar "^2.0.0" + which "1" + +node-pre-gyp@^0.6.29: + version "0.6.31" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.0" + rc "~1.1.6" + request "^2.75.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +node-resemble-js@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/node-resemble-js/-/node-resemble-js-0.1.1.tgz#ff07d4c9d314f235828d30899b1de5999f7305a5" + dependencies: + jpeg-js "0.2.0" + pngjs "~2.2.0" + +node-sass-glob-importer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/node-sass-glob-importer/-/node-sass-glob-importer-3.0.0.tgz#a7845727ebd42c782f8fe57adc2ef066fb5c648a" + dependencies: + glob "^7.1.1" + unique-concat "^0.2.2" + +node-sass-magic-importer@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-sass-magic-importer/-/node-sass-magic-importer-2.1.2.tgz#2014a797258e2275a7273da5d5c5865917f2dd2c" + dependencies: + node-sass-glob-importer "^3.0.0" + node-sass-package-importer "^3.0.0" + node-sass-selector-importer "^3.0.0" + unique-concat "^0.2.2" + +node-sass-package-importer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/node-sass-package-importer/-/node-sass-package-importer-3.0.0.tgz#421875c94b42b7faf684dda046c5215fccb1b436" + dependencies: + resolve "^1.1.7" + +node-sass-selector-importer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/node-sass-selector-importer/-/node-sass-selector-importer-3.0.0.tgz#58f525ce3cc0fecfdfbc6cae5e8f8a97d791d843" + dependencies: + css-selector-extract "^1.3.1" + node-sass "^3.13.0" + postcss-scss "^0.3.1" + +node-sass@^3.10.1, node-sass@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-3.13.0.tgz#d08b95bdebf40941571bd2c16a9334b980f8924f" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.61.0" + sass-graph "^2.1.1" + +node-uuid@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + +nopt@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.1.2.tgz#6cccd977b80132a07731d6e8ce58c2c8303cf9af" + dependencies: + abbrev "1" + +nopt@~3.0.6, "nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + +npmlog@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +"npmlog@0 || 1 || 2 || 3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.6.0" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.3.9" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign-sorted@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/object-assign-sorted/-/object-assign-sorted-1.0.0.tgz#e739f698164014ec1f050f38decabad1e9b228bf" + dependencies: + object-assign "^4.0.1" + sorted-object "^2.0.0" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0, once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onecolor@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +open@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" + +optimist@~0.3, optimist@~0.3.5: + version "0.3.7" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" + dependencies: + wordwrap "~0.0.2" + +optimist@~0.6: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.5.0.tgz#b75a8995a2d417df25b6e4e3862f50aa88651368" + dependencies: + deep-is "~0.1.2" + fast-levenshtein "~1.0.0" + levn "~0.2.5" + prelude-ls "~1.1.1" + type-check "~0.3.1" + wordwrap "~0.0.2" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0, osenv@0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +package-json@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0" + dependencies: + got "^3.2.0" + registry-url "^3.0.0" + +pad@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pad/-/pad-1.0.2.tgz#f6e36ff3ceb468e4ae2ed33ad5ecf25ace920960" + +param-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-1.1.2.tgz#dcb091a43c259b9228f1c341e7b6a44ea0bf9743" + dependencies: + sentence-case "^1.1.2" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +pascal-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-1.1.2.tgz#3e5d64a20043830a7c49344c2d74b41be0c9c99b" + dependencies: + camel-case "^1.1.1" + upper-case-first "^1.1.0" + +path-array@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-array/-/path-array-1.0.1.tgz#7e2f0f35f07a2015122b868b7eac0eb2c4fec271" + dependencies: + array-index "^1.0.0" + +path-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-1.1.2.tgz#50ce6ba0d3bed3dd0b5c2a9c4553697434409514" + dependencies: + sentence-case "^1.1.2" + +path-exists@^2.0.0, path-exists@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +phantomjs-prebuilt@^2.1.7: + version "2.1.13" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.13.tgz#66556ad9e965d893ca5a7dc9e763df7e8697f76d" + dependencies: + es6-promise "~4.0.3" + extract-zip "~1.5.0" + fs-extra "~0.30.0" + hasha "~2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.74.0" + request-progress "~2.0.1" + which "~1.2.10" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pipetteur@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pipetteur/-/pipetteur-2.0.3.tgz#1955760959e8d1a11cb2a50ec83eec470633e49f" + dependencies: + onecolor "^3.0.4" + synesthesia "^1.0.1" + +plur@^2.0.0, plur@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + dependencies: + irregular-plurals "^1.0.0" + +pngjs@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-2.2.0.tgz#649663609a0ebab87c8f08b3fe724048b51d9d7f" + +postcss-cli@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-2.6.0.tgz#f0de393caa026fcfc1b1479822989af508ed515d" + dependencies: + globby "^4.1.0" + mkdirp "^0.5.1" + neo-async "^1.0.0" + postcss "^5.0.0" + read-file-stdin "^0.2.0" + resolve "^1.1.6" + yargs "^4.7.1" + optionalDependencies: + chokidar "^1.5.1" + +postcss-less@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-0.14.0.tgz#c631b089c6cce422b9a10f3a958d2bedd3819324" + dependencies: + postcss "^5.0.21" + +postcss-media-query-parser@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + +postcss-reporter@^1.2.1, postcss-reporter@^1.3.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" + dependencies: + chalk "^1.0.0" + lodash "^4.1.0" + log-symbols "^1.0.2" + postcss "^5.0.0" + +postcss-reporter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-2.0.0.tgz#d25e74ba7fce911e2aa72ec1ae592fade6ec3671" + dependencies: + chalk "^1.0.0" + lodash "^4.1.0" + log-symbols "^1.0.2" + postcss "^5.0.0" + +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + +postcss-scss@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.3.1.tgz#65c610d8e2a7ee0e62b1835b71b8870734816e4b" + dependencies: + postcss "^5.2.4" + +postcss-scss@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.0.tgz#087c052c529b9270d9580bd1248a0f93d3b40d57" + dependencies: + postcss "^5.2.5" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.2.tgz#3d70f5adda130da51c7c0c2fc023f56b1374fe08" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-value-parser@^3.1.1, postcss-value-parser@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss@^5.0.0, postcss@^5.0.18, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.8, postcss@^5.2.4, postcss@^5.2.5, postcss@^5.2.6: + version "5.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.6.tgz#a252cd67cd52585035f17e9ad12b35137a7bdd9e" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.1.2" + +prelude-ls@~1.1.0, prelude-ls@~1.1.1, prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@^1.1.8, progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@1.*: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +qs@~6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +rc@^1.0.1, rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-cmd-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + +read-file-stdin@^0.2.0, read-file-stdin@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" + dependencies: + gather-stream "^1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^1.0.33, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.0, readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +registry-url@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2, repeat-string@^1.5.4: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@^2.55.0, request@^2.61.0, request@^2.75.0, request@2: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +request@~2.74.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc4" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.4.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2, rimraf@2.*: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-wipe@0.*: + version "0.2.4" + resolved "https://registry.yarnpkg.com/safe-wipe/-/safe-wipe-0.2.4.tgz#53b935d7775b739a924b516c95bb2417fa9a451e" + dependencies: + extend "2.*" + q "1.*" + rimraf "2.*" + +sass-convert@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/sass-convert/-/sass-convert-0.5.2.tgz#b1ed42b0e8d6fe98ec7ed6e78a38e26564860f06" + dependencies: + concat-stream "^1.4.7" + dargs "^4.0.0" + ends-with "^0.2.0" + es6-denodeify "^0.1.0" + es6-promise "^3.0.2" + memoize-decorator "^1.0.2" + object-assign "^3.0.0" + semver "^5.0.1" + semver-regex "^1.0.0" + through2 "^2.0.0" + which "^1.0.5" + +sass-graph@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + yargs "^4.7.1" + +sassdoc-extras@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/sassdoc-extras/-/sassdoc-extras-2.4.1.tgz#d69c783142a8fe427c72bb32fcd652f1da03f80a" + dependencies: + marked "^0.3.0" + +sassdoc-theme-default@^2.3.4: + version "2.4.3" + resolved "https://registry.yarnpkg.com/sassdoc-theme-default/-/sassdoc-theme-default-2.4.3.tgz#a186e464c876bf7740ea77624b3c3bd9369b396c" + dependencies: + chroma-js "^0.6.3" + es6-denodeify "^0.1.0" + es6-promise "^2.0.1" + extend "^2.0.0" + fs-extra "^0.16.3" + html-minifier "^0.7.0" + sassdoc-extras "^2.4.0" + swig "1.4.0" + swig-extras "^0.0.1" + +sassdoc@^2.1.20: + version "2.1.20" + resolved "https://registry.yarnpkg.com/sassdoc/-/sassdoc-2.1.20.tgz#a226d09064f707bad69d6802b2673d69cb128f1b" + dependencies: + babel-runtime "5.5.*" + chalk "^1.0.0" + concat-stream "^1.4.7" + docopt "^0.6.1" + glob "^5.0.3" + glob2base "0.0.12" + js-yaml "^3.2.1" + lodash.difference "^3.1.0" + lodash.uniq "^3.1.0" + minimatch "^2.0.4" + mkdirp "^0.5.0" + multipipe "^0.1.2" + rimraf "^2.3.2" + safe-wipe "0.*" + sass-convert "^0.5.0" + sassdoc-theme-default "^2.3.4" + scss-comment-parser "^0.8.1" + strip-indent "^1.0.1" + through2 "^0.6.3" + update-notifier "^0.3.0" + vinyl-fs "^1.0.0" + vinyl-source-stream "^1.0.0" + +sax@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + +scss-comment-parser@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/scss-comment-parser/-/scss-comment-parser-0.8.2.tgz#e7a9405c24ee52b433405a60a0a172cf27221682" + dependencies: + cdocparser "^0.13.0" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" + +semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5": + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +sentence-case@^1.1.1, sentence-case@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-1.1.3.tgz#8034aafc2145772d3abe1509aa42c9e1042dc139" + dependencies: + lower-case "^1.1.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564" + +signal-exit@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +snake-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-1.1.2.tgz#0c2f25e305158d9a18d3d977066187fef8a5a66a" + dependencies: + sentence-case "^1.1.2" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sorted-object@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +"source-map@>=0.1.43 <0.2", source-map@~0.1.7: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +source-map@0.1.34: + version "0.1.34" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" + dependencies: + amdefine ">=0.0.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +specificity@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.0.tgz#332472d4e5eb5af20821171933998a6bc3b1ce6f" + +split2@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/split2/-/split2-0.2.1.tgz#02ddac9adc03ec0bb78c1282ec079ca6e85ae900" + dependencies: + through2 "~0.6.1" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stream-combiner@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" + dependencies: + strip-ansi "^3.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.0, strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + +stylehacks@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.1.tgz#de49e8baa2e12b29c35b416b337094839bc97b35" + dependencies: + browserslist "^1.1.3" + chalk "^1.1.1" + log-symbols "^1.0.2" + minimist "^1.2.0" + plur "^2.1.2" + postcss "^5.0.18" + postcss-reporter "^1.3.3" + postcss-selector-parser "^2.0.0" + read-file-stdin "^0.2.1" + text-table "^0.2.0" + write-file-stdout "0.0.2" + +stylelint-config-modularis@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-modularis/-/stylelint-config-modularis-1.0.0.tgz#cd79e250dd2a688699699ebbd65b3a346fa7d6bb" + +stylelint@^7.3.1: + version "7.6.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-7.6.0.tgz#ddeb06ccc95f72c119fcde5e85439fb7e9cde4df" + dependencies: + autoprefixer "^6.0.0" + balanced-match "^0.4.0" + chalk "^1.1.1" + colorguard "^1.2.0" + cosmiconfig "^2.0.0" + doiuse "^2.4.1" + execall "^1.0.0" + get-stdin "^5.0.0" + globby "^6.0.0" + globjoin "^0.1.4" + html-tags "^1.1.1" + ignore "^3.2.0" + known-css-properties "^0.0.5" + lodash "^4.0.0" + log-symbols "^1.0.2" + meow "^3.3.0" + multimatch "^2.1.0" + normalize-selector "^0.2.0" + postcss "^5.0.20" + postcss-less "^0.14.0" + postcss-media-query-parser "^0.2.0" + postcss-reporter "^2.0.0" + postcss-resolve-nested-selector "^0.1.1" + postcss-scss "^0.4.0" + postcss-selector-parser "^2.1.1" + postcss-value-parser "^3.1.1" + resolve-from "^2.0.0" + specificity "^0.3.0" + string-width "^2.0.0" + style-search "^0.1.0" + stylehacks "^2.3.0" + sugarss "^0.2.0" + svg-tags "^1.0.0" + table "^3.7.8" + +sugarss@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e" + dependencies: + postcss "^5.2.4" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +swig-extras@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/swig-extras/-/swig-extras-0.0.1.tgz#b503fede372ab9c24c6ac68caf656bcef1872328" + dependencies: + markdown "~0.5.0" + +swig@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/swig/-/swig-1.4.0.tgz#e0e606a0899f886a7aee7a45d1b398c2b25d25d1" + dependencies: + optimist "~0.6" + uglify-js "~2.4" + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.1.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.1.4.tgz#02b279348d337debc39694c5c95f882d448a312a" + +sync-exec@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/sync-exec/-/sync-exec-0.6.2.tgz#717d22cc53f0ce1def5594362f3a89a2ebb91105" + +synesthesia@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/synesthesia/-/synesthesia-1.0.1.tgz#5ef95ea548c0d5c6e6f9bb4b0d0731dff864a777" + dependencies: + css-color-names "0.0.3" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +taffydb@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.2.tgz#7bf8106a5c1a48251b3e3bc0a0e1732489fd0dc8" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar@^2.0.0, tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +temp@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through@^2.3.6, "through@>=2.2.7 <3", through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + dependencies: + readable-stream "~2.0.0" + xtend "~4.0.0" + +timed-out@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz#f38b0ae81d3747d628001f41dafc652ace671c0a" + +title-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-1.1.2.tgz#fae4a6ae546bfa22d083a0eea910a40d12ed4f5a" + dependencies: + sentence-case "^1.1.1" + upper-case "^1.0.3" + +tough-cookie@^2.2.0, tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + +type-check@~0.3.1, type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@~2.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" + dependencies: + async "~0.2.6" + optimist "~0.3.5" + source-map "~0.1.7" + +uglify-js@~2.4, uglify-js@2.4.x: + version "2.4.24" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz#fad5755c1e1577658bb06ff9ab6e548c95bebd6e" + dependencies: + async "~0.2.6" + source-map "0.1.34" + uglify-to-browserify "~1.0.0" + yargs "~3.5.4" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +unique-concat@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/unique-concat/-/unique-concat-0.2.2.tgz#9210f9bdcaacc5e1e3929490d7c019df96f18712" + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +update-notifier@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.3.2.tgz#22a8735baadef3320e2db928f693da898dc87777" + dependencies: + chalk "^1.0.0" + configstore "^0.3.1" + is-npm "^1.0.0" + latest-version "^1.0.0" + semver-diff "^2.0.0" + string-length "^1.0.0" + +upper-case-first@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +user-home@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vinyl-fs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-1.0.0.tgz#d15752e68c2dad74364e7e853473735354692edf" + dependencies: + duplexify "^3.2.0" + glob-stream "^4.0.1" + glob-watcher "^0.0.8" + graceful-fs "^3.0.0" + merge-stream "^0.1.7" + mkdirp "^0.5.0" + object-assign "^2.0.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-source-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz#44cbe5108205279deb0c5653c094a2887938b1ab" + dependencies: + through2 "^0.6.1" + vinyl "^0.4.3" + +vinyl@^0.4.0, vinyl@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +webidl-conversions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" + +whatwg-url-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + dependencies: + tr46 "~0.0.1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@^1.0.5, which@^1.2.9, which@~1.2.10, which@1: + version "1.2.12" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + dependencies: + isexe "^1.1.1" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrap-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" + dependencies: + string-width "^1.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-stdout@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" + +xdg-basedir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz#14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e" + dependencies: + user-home "^1.0.0" + +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +xmlbuilder@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-2.6.2.tgz#f916f6d10d45dc171b1be2e6e673fb6e0cc35d0a" + dependencies: + lodash "~3.5.0" + +xtend@^4.0.0, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.0, y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs@^1.2.6: + version "1.3.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a" + +yargs@^3.5.4: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yargs@~3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz#d8aff8f665e94c34bd259bdebd1bfaf0ddd35361" + dependencies: + camelcase "^1.0.2" + decamelize "^1.0.0" + window-size "0.1.0" + wordwrap "0.0.2" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + From 33ccc526ed2fffe677d3cf76f1e1ff523310a53f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 25 Nov 2016 21:55:33 +0100 Subject: [PATCH 287/355] Use @avalanche npm scope instead of "avalanchesass" prefix. Remove prefix from package directories. Update lerna. --- lerna.json | 4 ++-- package.json | 6 +++--- .../.npmignore | 0 .../README.md | 10 +++++----- .../package.json | 8 ++++---- .../scss/_mixin.scss | 0 .../scss/_variable.scss | 0 .../scss/index.scss | 2 +- .../708650260_avalanche_0_document_0_s.png | Bin .../708650260_avalanche_0_document_1_m.png | Bin .../708650260_avalanche_0_document_2_l.png | Bin .../708650260_avalanche_0_document_3_xl.png | Bin .../test/test.hbs | 0 .../test/test.scss | 0 .../.npmignore | 0 .../README.md | 8 ++++---- .../package.json | 6 +++--- .../scss/_function.scss | 0 .../scss/_variable.scss | 0 .../scss/index.scss | 0 .../708650260_avalanche_0_document_0_s.png | Bin .../708650260_avalanche_0_document_1_m.png | Bin .../708650260_avalanche_0_document_2_l.png | Bin .../708650260_avalanche_0_document_3_xl.png | Bin .../test/test.hbs | 0 .../test/test.scss | 0 .../.npmignore | 0 .../README.md | 10 +++++----- .../package.json | 6 +++--- .../scss/_mixin.scss | 0 .../scss/_variable.scss | 0 .../scss/index.scss | 0 .../708650260_avalanche_0_document_0_s.png | Bin .../708650260_avalanche_0_document_1_m.png | Bin .../708650260_avalanche_0_document_2_l.png | Bin .../708650260_avalanche_0_document_3_xl.png | Bin .../test/test.hbs | 0 .../test/test.scss | 0 38 files changed, 30 insertions(+), 30 deletions(-) rename packages/{avalanchesass-object-grid => object-grid}/.npmignore (100%) rename packages/{avalanchesass-object-grid => object-grid}/README.md (91%) rename packages/{avalanchesass-object-grid => object-grid}/package.json (73%) rename packages/{avalanchesass-object-grid => object-grid}/scss/_mixin.scss (100%) rename packages/{avalanchesass-object-grid => object-grid}/scss/_variable.scss (100%) rename packages/{avalanchesass-object-grid => object-grid}/scss/index.scss (97%) rename packages/{avalanchesass-object-grid => object-grid}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png (100%) rename packages/{avalanchesass-object-grid => object-grid}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png (100%) rename packages/{avalanchesass-object-grid => object-grid}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png (100%) rename packages/{avalanchesass-object-grid => object-grid}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png (100%) rename packages/{avalanchesass-object-grid => object-grid}/test/test.hbs (100%) rename packages/{avalanchesass-object-grid => object-grid}/test/test.scss (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/.npmignore (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/README.md (78%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/package.json (78%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/scss/_function.scss (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/scss/_variable.scss (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/scss/index.scss (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/test.hbs (100%) rename packages/{avalanchesass-setting-spacings => setting-spacings}/test/test.scss (100%) rename packages/{avalanchesass-utility-width => utility-width}/.npmignore (100%) rename packages/{avalanchesass-utility-width => utility-width}/README.md (87%) rename packages/{avalanchesass-utility-width => utility-width}/package.json (79%) rename packages/{avalanchesass-utility-width => utility-width}/scss/_mixin.scss (100%) rename packages/{avalanchesass-utility-width => utility-width}/scss/_variable.scss (100%) rename packages/{avalanchesass-utility-width => utility-width}/scss/index.scss (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/test.hbs (100%) rename packages/{avalanchesass-utility-width => utility-width}/test/test.scss (100%) diff --git a/lerna.json b/lerna.json index 60f5a64..5fdfae2 100644 --- a/lerna.json +++ b/lerna.json @@ -1,4 +1,4 @@ { - "lerna": "2.0.0-beta.29", - "version": "0.0.0" + "lerna": "2.0.0-beta.30", + "version": "4.0.0-alpha.1" } diff --git a/package.json b/package.json index b7dce26..fcf4f21 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "avalanchesass", + "name": "@avalanche/avalanche", "description": "A modular SASS framework which can be extended with npm packages", "keywords": [ - "avalanchesass" + "avalanche" ], "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", @@ -19,7 +19,7 @@ "autoprefixer": "^6.5.0", "backstopjs": "^2.0.2", "handlebars-cmd": "^0.1.4", - "lerna": "2.0.0-beta.29", + "lerna": "2.0.0-beta.30", "node-sass": "^3.10.1", "node-sass-magic-importer": "^2.1.1", "postcss-cli": "^2.6.0", diff --git a/packages/avalanchesass-object-grid/.npmignore b/packages/object-grid/.npmignore similarity index 100% rename from packages/avalanchesass-object-grid/.npmignore rename to packages/object-grid/.npmignore diff --git a/packages/avalanchesass-object-grid/README.md b/packages/object-grid/README.md similarity index 91% rename from packages/avalanchesass-object-grid/README.md rename to packages/object-grid/README.md index 1f2f095..62b98a6 100644 --- a/packages/avalanchesass-object-grid/README.md +++ b/packages/object-grid/README.md @@ -1,9 +1,9 @@ -# avalanchesass-object-grid +# @avalanche/object-grid Fluid width, responsive grid system. ## Install ```bash -npm install avalanchesass-object-grid --save +npm install @avalanche/object-grid --save ``` ## Basic usage @@ -11,10 +11,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ```scss // Import the main file. -@import '~avalanchesass-object-grid'; +@import '~@avalanche/object-grid'; // Import just the mixin file. -@import '~avalanchesass-object-grid/scss/mixin'; +@import '~@avalanche/object-grid/scss/mixin'; ``` ## Demo @@ -88,7 +88,7 @@ $o-grid-vertical-gutter-breakpoints: ( ## Mixins ```scss -@import '~avalanchesass-object-grid/scss/mixin'; +@import '~@avalanche/object-grid/scss/mixin'; // Usage. .grid { diff --git a/packages/avalanchesass-object-grid/package.json b/packages/object-grid/package.json similarity index 73% rename from packages/avalanchesass-object-grid/package.json rename to packages/object-grid/package.json index 180f5d0..b27efbc 100644 --- a/packages/avalanchesass-object-grid/package.json +++ b/packages/object-grid/package.json @@ -1,8 +1,8 @@ { - "name": "avalanchesass-object-grid", + "name": "@avalanche/object-grid", "description": "Fluid width, responsive grid system", "keywords": [ - "avalanchesass-package", + "avalanche-package", "sass" ], "version": "4.0.0-alpha.1", @@ -11,13 +11,13 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanche-object-grid" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-grid" }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "avalanchesass-setting-spacings": "0.0.0-alpha.efd67daa" + "@avalanche/setting-spacings": "4.0.0-alpha.1" }, "main": "scss/index.scss" } diff --git a/packages/avalanchesass-object-grid/scss/_mixin.scss b/packages/object-grid/scss/_mixin.scss similarity index 100% rename from packages/avalanchesass-object-grid/scss/_mixin.scss rename to packages/object-grid/scss/_mixin.scss diff --git a/packages/avalanchesass-object-grid/scss/_variable.scss b/packages/object-grid/scss/_variable.scss similarity index 100% rename from packages/avalanchesass-object-grid/scss/_variable.scss rename to packages/object-grid/scss/_variable.scss diff --git a/packages/avalanchesass-object-grid/scss/index.scss b/packages/object-grid/scss/index.scss similarity index 97% rename from packages/avalanchesass-object-grid/scss/index.scss rename to packages/object-grid/scss/index.scss index b07f5a7..78981cc 100644 --- a/packages/avalanchesass-object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,4 +1,4 @@ -@import '~avalanchesass-setting-spacings'; +@import '~@avalanche/setting-spacings'; @import 'variable'; @import 'mixin'; diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png rename to packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png rename to packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png rename to packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png diff --git a/packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png similarity index 100% rename from packages/avalanchesass-object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png rename to packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png diff --git a/packages/avalanchesass-object-grid/test/test.hbs b/packages/object-grid/test/test.hbs similarity index 100% rename from packages/avalanchesass-object-grid/test/test.hbs rename to packages/object-grid/test/test.hbs diff --git a/packages/avalanchesass-object-grid/test/test.scss b/packages/object-grid/test/test.scss similarity index 100% rename from packages/avalanchesass-object-grid/test/test.scss rename to packages/object-grid/test/test.scss diff --git a/packages/avalanchesass-setting-spacings/.npmignore b/packages/setting-spacings/.npmignore similarity index 100% rename from packages/avalanchesass-setting-spacings/.npmignore rename to packages/setting-spacings/.npmignore diff --git a/packages/avalanchesass-setting-spacings/README.md b/packages/setting-spacings/README.md similarity index 78% rename from packages/avalanchesass-setting-spacings/README.md rename to packages/setting-spacings/README.md index f9fcc69..de46931 100644 --- a/packages/avalanchesass-setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -1,9 +1,9 @@ -# avalanchesass-setting-spacings +# @avalanche/setting-spacings Spacing sizes. ## Install ```bash -npm install avalanchesass-setting-spacings --save +npm install @avalanche/setting-spacings --save ``` ## Basic usage @@ -11,10 +11,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ```scss // Import the main file. -@import '~avalanchesass-setting-spacings'; +@import '~@avalanche/setting-spacings'; // Import just the variable file. -@import '~avalanchesass-setting-spacings/scss/variable'; +@import '~@avalanche/setting-spacings/scss/variable'; ``` ## Usage diff --git a/packages/avalanchesass-setting-spacings/package.json b/packages/setting-spacings/package.json similarity index 78% rename from packages/avalanchesass-setting-spacings/package.json rename to packages/setting-spacings/package.json index 695a5d6..070f294 100644 --- a/packages/avalanchesass-setting-spacings/package.json +++ b/packages/setting-spacings/package.json @@ -1,8 +1,8 @@ { - "name": "avalanchesass-setting-spacings", + "name": "@avalanche/setting-spacings", "description": "Spacing sizes", "keywords": [ - "avalanchesass-package", + "avalanche-package", "sass" ], "version": "4.0.0-alpha.1", @@ -11,7 +11,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanchesass-setting-spacings" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/setting-spacings" }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" diff --git a/packages/avalanchesass-setting-spacings/scss/_function.scss b/packages/setting-spacings/scss/_function.scss similarity index 100% rename from packages/avalanchesass-setting-spacings/scss/_function.scss rename to packages/setting-spacings/scss/_function.scss diff --git a/packages/avalanchesass-setting-spacings/scss/_variable.scss b/packages/setting-spacings/scss/_variable.scss similarity index 100% rename from packages/avalanchesass-setting-spacings/scss/_variable.scss rename to packages/setting-spacings/scss/_variable.scss diff --git a/packages/avalanchesass-setting-spacings/scss/index.scss b/packages/setting-spacings/scss/index.scss similarity index 100% rename from packages/avalanchesass-setting-spacings/scss/index.scss rename to packages/setting-spacings/scss/index.scss diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png similarity index 100% rename from packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png rename to packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png similarity index 100% rename from packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png rename to packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png similarity index 100% rename from packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png rename to packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png diff --git a/packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png similarity index 100% rename from packages/avalanchesass-setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png rename to packages/setting-spacings/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png diff --git a/packages/avalanchesass-setting-spacings/test/test.hbs b/packages/setting-spacings/test/test.hbs similarity index 100% rename from packages/avalanchesass-setting-spacings/test/test.hbs rename to packages/setting-spacings/test/test.hbs diff --git a/packages/avalanchesass-setting-spacings/test/test.scss b/packages/setting-spacings/test/test.scss similarity index 100% rename from packages/avalanchesass-setting-spacings/test/test.scss rename to packages/setting-spacings/test/test.scss diff --git a/packages/avalanchesass-utility-width/.npmignore b/packages/utility-width/.npmignore similarity index 100% rename from packages/avalanchesass-utility-width/.npmignore rename to packages/utility-width/.npmignore diff --git a/packages/avalanchesass-utility-width/README.md b/packages/utility-width/README.md similarity index 87% rename from packages/avalanchesass-utility-width/README.md rename to packages/utility-width/README.md index 2a933ed..82c2549 100644 --- a/packages/avalanchesass-utility-width/README.md +++ b/packages/utility-width/README.md @@ -1,9 +1,9 @@ -# avalanchesass-utility-width +# @avalanche/utility-width Width classes. ## Install ```bash -npm install avalanchesass-utility-width --save +npm install @avalanche/utility-width --save ``` ## Basic usage @@ -11,10 +11,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ```scss // Import the main file. -@import '~avalanchesass-utility-width'; +@import '~@avalanche/utility-width'; // Import just the mixin file. -@import '~avalanchesass-utility-width/scss/mixin'; +@import '~@avalanche/utility-width/scss/mixin'; ``` ## Demo @@ -50,7 +50,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Mixins ```scss -@import '~avalanchesass-utility-width/scss/mixin'; +@import '~@avalanche/utility-width/scss/mixin'; // Usage. .u-width-1/12 { diff --git a/packages/avalanchesass-utility-width/package.json b/packages/utility-width/package.json similarity index 79% rename from packages/avalanchesass-utility-width/package.json rename to packages/utility-width/package.json index 4cf5b80..c249dcf 100644 --- a/packages/avalanchesass-utility-width/package.json +++ b/packages/utility-width/package.json @@ -1,8 +1,8 @@ { - "name": "avalanchesass-utility-width", + "name": "@avalanche/utility-width", "description": "Width classes", "keywords": [ - "avalanchesass-package", + "avalanche-package", "sass" ], "version": "4.0.0-alpha.1", @@ -11,7 +11,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/avalanche-utility-width" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-width" }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" diff --git a/packages/avalanchesass-utility-width/scss/_mixin.scss b/packages/utility-width/scss/_mixin.scss similarity index 100% rename from packages/avalanchesass-utility-width/scss/_mixin.scss rename to packages/utility-width/scss/_mixin.scss diff --git a/packages/avalanchesass-utility-width/scss/_variable.scss b/packages/utility-width/scss/_variable.scss similarity index 100% rename from packages/avalanchesass-utility-width/scss/_variable.scss rename to packages/utility-width/scss/_variable.scss diff --git a/packages/avalanchesass-utility-width/scss/index.scss b/packages/utility-width/scss/index.scss similarity index 100% rename from packages/avalanchesass-utility-width/scss/index.scss rename to packages/utility-width/scss/index.scss diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png similarity index 100% rename from packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png rename to packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png similarity index 100% rename from packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png rename to packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png similarity index 100% rename from packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png rename to packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png diff --git a/packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png similarity index 100% rename from packages/avalanchesass-utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png rename to packages/utility-width/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png diff --git a/packages/avalanchesass-utility-width/test/test.hbs b/packages/utility-width/test/test.hbs similarity index 100% rename from packages/avalanchesass-utility-width/test/test.hbs rename to packages/utility-width/test/test.hbs diff --git a/packages/avalanchesass-utility-width/test/test.scss b/packages/utility-width/test/test.scss similarity index 100% rename from packages/avalanchesass-utility-width/test/test.scss rename to packages/utility-width/test/test.scss From 28203e9e527c944db6c5c0120e027f0d6caf0b46 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 25 Nov 2016 22:09:41 +0100 Subject: [PATCH 288/355] Fix dependency versioning fuck up. --- packages/object-grid/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index b27efbc..13e033a 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -5,7 +5,7 @@ "avalanche-package", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.3", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -17,7 +17,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "4.0.0-alpha.1" + "@avalanche/setting-spacings": "^4.0.0-alpha.1" }, "main": "scss/index.scss" } From 2be527da1715330e56a57334f47dd228659c854b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 27 Nov 2016 18:06:44 +0100 Subject: [PATCH 289/355] Rename "variable" file to "settings", fixes #252 --- packages/object-grid/scss/{_variable.scss => _settings.scss} | 0 packages/object-grid/scss/index.scss | 2 +- packages/setting-spacings/scss/_function.scss | 2 +- .../setting-spacings/scss/{_variable.scss => _settings.scss} | 0 packages/utility-width/scss/{_variable.scss => _settings.scss} | 0 packages/utility-width/scss/index.scss | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) rename packages/object-grid/scss/{_variable.scss => _settings.scss} (100%) rename packages/setting-spacings/scss/{_variable.scss => _settings.scss} (100%) rename packages/utility-width/scss/{_variable.scss => _settings.scss} (100%) diff --git a/packages/object-grid/scss/_variable.scss b/packages/object-grid/scss/_settings.scss similarity index 100% rename from packages/object-grid/scss/_variable.scss rename to packages/object-grid/scss/_settings.scss diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 78981cc..b4dc499 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,6 +1,6 @@ @import '~@avalanche/setting-spacings'; -@import 'variable'; +@import 'settings'; @import 'mixin'; .o-grid { diff --git a/packages/setting-spacings/scss/_function.scss b/packages/setting-spacings/scss/_function.scss index a652da6..dea7d81 100644 --- a/packages/setting-spacings/scss/_function.scss +++ b/packages/setting-spacings/scss/_function.scss @@ -1,4 +1,4 @@ -@import 'variable'; +@import 'settings'; //// /// @group Setting: spacings diff --git a/packages/setting-spacings/scss/_variable.scss b/packages/setting-spacings/scss/_settings.scss similarity index 100% rename from packages/setting-spacings/scss/_variable.scss rename to packages/setting-spacings/scss/_settings.scss diff --git a/packages/utility-width/scss/_variable.scss b/packages/utility-width/scss/_settings.scss similarity index 100% rename from packages/utility-width/scss/_variable.scss rename to packages/utility-width/scss/_settings.scss diff --git a/packages/utility-width/scss/index.scss b/packages/utility-width/scss/index.scss index 05817f3..6b98601 100644 --- a/packages/utility-width/scss/index.scss +++ b/packages/utility-width/scss/index.scss @@ -1,4 +1,4 @@ -@import 'variable'; +@import 'settings'; @import 'mixin'; @for $size from 1 through $u-width-base { From 7d2728e1836991ff810d903cb7c6ac7c8e76099f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 27 Nov 2016 18:11:40 +0100 Subject: [PATCH 290/355] Use plural form for "mixin" file naming --- packages/object-grid/README.md | 4 ++-- packages/object-grid/scss/{_mixin.scss => _mixins.scss} | 0 packages/object-grid/scss/index.scss | 2 +- packages/setting-spacings/README.md | 4 ++-- .../setting-spacings/scss/{_function.scss => _functions.scss} | 0 packages/setting-spacings/scss/index.scss | 2 +- packages/utility-width/README.md | 4 ++-- packages/utility-width/scss/{_mixin.scss => _mixins.scss} | 0 packages/utility-width/scss/index.scss | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename packages/object-grid/scss/{_mixin.scss => _mixins.scss} (100%) rename packages/setting-spacings/scss/{_function.scss => _functions.scss} (100%) rename packages/utility-width/scss/{_mixin.scss => _mixins.scss} (100%) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index 62b98a6..c6395c9 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -14,7 +14,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/object-grid'; // Import just the mixin file. -@import '~@avalanche/object-grid/scss/mixin'; +@import '~@avalanche/object-grid/scss/mixins'; ``` ## Demo @@ -88,7 +88,7 @@ $o-grid-vertical-gutter-breakpoints: ( ## Mixins ```scss -@import '~@avalanche/object-grid/scss/mixin'; +@import '~@avalanche/object-grid/scss/mixins'; // Usage. .grid { diff --git a/packages/object-grid/scss/_mixin.scss b/packages/object-grid/scss/_mixins.scss similarity index 100% rename from packages/object-grid/scss/_mixin.scss rename to packages/object-grid/scss/_mixins.scss diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index b4dc499..e7ff549 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,7 +1,7 @@ @import '~@avalanche/setting-spacings'; @import 'settings'; -@import 'mixin'; +@import 'mixins'; .o-grid { @include o-grid(); diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index de46931..ceb7cf9 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -13,8 +13,8 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on // Import the main file. @import '~@avalanche/setting-spacings'; -// Import just the variable file. -@import '~@avalanche/setting-spacings/scss/variable'; +// Import just the setting file. +@import '~@avalanche/setting-spacings/scss/settings'; ``` ## Usage diff --git a/packages/setting-spacings/scss/_function.scss b/packages/setting-spacings/scss/_functions.scss similarity index 100% rename from packages/setting-spacings/scss/_function.scss rename to packages/setting-spacings/scss/_functions.scss diff --git a/packages/setting-spacings/scss/index.scss b/packages/setting-spacings/scss/index.scss index e62700d..606bfb4 100644 --- a/packages/setting-spacings/scss/index.scss +++ b/packages/setting-spacings/scss/index.scss @@ -1 +1 @@ -@import 'function'; +@import 'functions'; diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index 82c2549..4818800 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -14,7 +14,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/utility-width'; // Import just the mixin file. -@import '~@avalanche/utility-width/scss/mixin'; +@import '~@avalanche/utility-width/scss/mixins'; ``` ## Demo @@ -50,7 +50,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Mixins ```scss -@import '~@avalanche/utility-width/scss/mixin'; +@import '~@avalanche/utility-width/scss/mixins'; // Usage. .u-width-1/12 { diff --git a/packages/utility-width/scss/_mixin.scss b/packages/utility-width/scss/_mixins.scss similarity index 100% rename from packages/utility-width/scss/_mixin.scss rename to packages/utility-width/scss/_mixins.scss diff --git a/packages/utility-width/scss/index.scss b/packages/utility-width/scss/index.scss index 6b98601..c7c10bd 100644 --- a/packages/utility-width/scss/index.scss +++ b/packages/utility-width/scss/index.scss @@ -1,5 +1,5 @@ @import 'settings'; -@import 'mixin'; +@import 'mixins'; @for $size from 1 through $u-width-base { .u-width-#{$size}\/#{$u-width-base} { From 5fd9dc24f0c77a1bb2587d4684b42fb6922fee0e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 27 Nov 2016 19:23:46 +0100 Subject: [PATCH 291/355] Update stylelint config and remove empty line between at rules, fixes #254 --- package.json | 2 +- packages/object-grid/scss/index.scss | 1 - yarn.lock | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fcf4f21..48f4a43 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "postcss-cli": "^2.6.0", "sassdoc": "^2.1.20", "stylelint": "^7.3.1", - "stylelint-config-modularis": "1.0.0" + "stylelint-config-modularis": "2.0.1" }, "scripts": { "doc": "sassdoc packages/**/*.scss", diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index e7ff549..16f05c3 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,5 +1,4 @@ @import '~@avalanche/setting-spacings'; - @import 'settings'; @import 'mixins'; diff --git a/yarn.lock b/yarn.lock index 5274d60..c66f8a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3431,9 +3431,9 @@ stylehacks@^2.3.0: text-table "^0.2.0" write-file-stdout "0.0.2" -stylelint-config-modularis@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-modularis/-/stylelint-config-modularis-1.0.0.tgz#cd79e250dd2a688699699ebbd65b3a346fa7d6bb" +stylelint-config-modularis@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stylelint-config-modularis/-/stylelint-config-modularis-2.0.1.tgz#c91cf5b999380dadb7e4e74c7217bc2a635ebdd6" stylelint@^7.3.1: version "7.6.0" From 1dd580b65c44c6e06bb649619dce1f9f75f09c37 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 2 Dec 2016 13:53:08 +0100 Subject: [PATCH 292/355] Fix grid object css output mixin examples --- packages/object-grid/scss/_mixins.scss | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/object-grid/scss/_mixins.scss b/packages/object-grid/scss/_mixins.scss index a450811..02aab4c 100644 --- a/packages/object-grid/scss/_mixins.scss +++ b/packages/object-grid/scss/_mixins.scss @@ -37,10 +37,9 @@ /// @example css - CSS Output /// .element { /// margin-left: -1em; -/// -/// > .o-grid__item { -/// padding-top: 1em; -/// } +/// } +/// .element > .o-grid__item { +/// padding-top: 1em; /// } @mixin o-grid-horizontal-gutter($gutter: 1em, $item-selector: '.o-grid__item') { margin-left: -$gutter; @@ -65,10 +64,9 @@ /// @example css - CSS Output /// .element { /// margin-top: -1em; -/// -/// > .o-grid__item { -/// margin-top: 1em; -/// } +/// } +/// .element > .o-grid__item { +/// margin-top: 1em; /// } @mixin o-grid-vertical-gutter($gutter: 1em, $item-selector: '.o-grid__item') { margin-top: -$gutter; From c0eae1d8e516ac8f236da2f8e6aae39ef305c529 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 2 Dec 2016 21:10:51 +0100 Subject: [PATCH 293/355] Add sassdoc documentation link to the package readme files, fixes #257 --- packages/object-grid/README.md | 2 ++ packages/setting-spacings/README.md | 2 ++ packages/utility-width/README.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index c6395c9..35c2805 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -1,6 +1,8 @@ # @avalanche/object-grid Fluid width, responsive grid system. +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: grid) + ## Install ```bash npm install @avalanche/object-grid --save diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index ceb7cf9..2db40cd 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -1,6 +1,8 @@ # @avalanche/setting-spacings Spacing sizes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#setting: spacings) + ## Install ```bash npm install @avalanche/setting-spacings --save diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index 4818800..4086f7d 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -1,6 +1,8 @@ # @avalanche/utility-width Width classes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: width) + ## Install ```bash npm install @avalanche/utility-width --save From f839ada7b15aec21cee40d8624bb7273765e1bde Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 2 Dec 2016 21:12:35 +0100 Subject: [PATCH 294/355] Use --save-dev for the package installation extamples, fixes #256 --- packages/object-grid/README.md | 2 +- packages/setting-spacings/README.md | 2 +- packages/utility-width/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index 35c2805..d6554a3 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -5,7 +5,7 @@ Fluid width, responsive grid system. ## Install ```bash -npm install @avalanche/object-grid --save +npm install @avalanche/object-grid --save-dev ``` ## Basic usage diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index 2db40cd..1228d25 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -5,7 +5,7 @@ Spacing sizes. ## Install ```bash -npm install @avalanche/setting-spacings --save +npm install @avalanche/setting-spacings --save-dev ``` ## Basic usage diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index 4086f7d..4366c88 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -5,7 +5,7 @@ Width classes. ## Install ```bash -npm install @avalanche/utility-width --save +npm install @avalanche/utility-width --save-dev ``` ## Basic usage From 0a414a12836385496d61c2a5df70d4f50a554918 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 2 Dec 2016 21:28:19 +0100 Subject: [PATCH 295/355] Change the stylelint config to use JS syntax instead of json. Load declaration-block-properties-order stylelint rule from csscomb settings, fixes #255 --- .stylelintrc | 3 --- .stylelintrc.js | 8 ++++++++ 2 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 .stylelintrc create mode 100644 .stylelintrc.js diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index eb2909e..0000000 --- a/.stylelintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "stylelint-config-modularis" -} diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..238672b --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,8 @@ +const declarationBlockPropertiesOrder = require(`./.csscomb.json`)[`sort-order`][0]; + +module.exports = { + extends: `stylelint-config-modularis`, + rules: { + 'declaration-block-properties-order': declarationBlockPropertiesOrder, + }, +}; From 4077125c947745880a2f61b4111eca3353533075 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 2 Dec 2016 21:45:46 +0100 Subject: [PATCH 296/355] Make spacing package settings !default --- packages/setting-spacings/scss/_settings.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/setting-spacings/scss/_settings.scss b/packages/setting-spacings/scss/_settings.scss index 4ff3d3c..205f2a5 100644 --- a/packages/setting-spacings/scss/_settings.scss +++ b/packages/setting-spacings/scss/_settings.scss @@ -13,4 +13,4 @@ $spacings: ( xl: 2em, xxl: 3.5em, xxxl: 6em, -); +) !default; From 8fdeae7773cf7ce5ce29933ca49a158866b745d1 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 06:22:47 +0100 Subject: [PATCH 297/355] Use a "setting-" prefix for variable getter functions, fixes #251 --- packages/object-grid/scss/_settings.scss | 2 +- packages/object-grid/scss/index.scss | 16 ++++++++-------- packages/setting-spacings/README.md | 2 +- packages/setting-spacings/scss/_functions.scss | 4 ++-- packages/setting-spacings/test/test.scss | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/object-grid/scss/_settings.scss b/packages/object-grid/scss/_settings.scss index 1077735..2392405 100644 --- a/packages/object-grid/scss/_settings.scss +++ b/packages/object-grid/scss/_settings.scss @@ -8,7 +8,7 @@ $breakpoints: ( xl: 75em, ); -@function breakpoint($size, $rem: false) { +@function setting-breakpoint($size, $rem: false) { $breakpoint: map-get($breakpoints, $size); @if $rem { $breakpoint: ($breakpoint / 1em) * 1rem; } @return $breakpoint; diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 16f05c3..1a2e8a6 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -6,10 +6,10 @@ @include o-grid(); @if $o-grid-horizontal-gutter-default { - @include o-grid-horizontal-gutter(spacing($o-grid-horizontal-gutter-default)); + @include o-grid-horizontal-gutter(setting-spacing($o-grid-horizontal-gutter-default)); } @if $o-grid-vertical-gutter-default { - @include o-grid-vertical-gutter(spacing($o-grid-vertical-gutter-default)); + @include o-grid-vertical-gutter(setting-spacing($o-grid-vertical-gutter-default)); } } @@ -22,15 +22,15 @@ @warn 'Defining the same size in $o-grid-horizontal-gutter as set for $o-grid-horizontal-gutter-default is redundant, remove "#{$size}" from $o-grid-horizontal-gutter'; } .o-grid--horizontal-gutter-#{$size} { - @include o-grid-horizontal-gutter(spacing($size)); + @include o-grid-horizontal-gutter(setting-spacing($size)); } } @each $size, $breakpoints in $o-grid-horizontal-gutter-breakpoints { @each $breakpoint in $breakpoints { - @media (min-width: breakpoint($breakpoint)) { + @media (min-width: setting-breakpoint($breakpoint)) { .o-grid--horizontal-gutter-#{$size}\@#{$breakpoint} { - @include o-grid-horizontal-gutter(spacing($size)); + @include o-grid-horizontal-gutter(setting-spacing($size)); } } } @@ -41,15 +41,15 @@ @warn 'Defining the same size in $o-grid-vertical-gutter as set for $o-grid-vertical-gutter-default is redundant, remove "#{$size}" from $o-grid-vertical-gutter'; } .o-grid--vertical-gutter-#{$size} { - @include o-grid-vertical-gutter(spacing($size)); + @include o-grid-vertical-gutter(setting-spacing($size)); } } @each $size, $breakpoints in $o-grid-vertical-gutter-breakpoints { @each $breakpoint in $breakpoints { - @media (min-width: breakpoint($breakpoint)) { + @media (min-width: setting-breakpoint($breakpoint)) { .o-grid--vertical-gutter-#{$size}\@#{$breakpoint} { - @include o-grid-vertical-gutter(spacing($size)); + @include o-grid-vertical-gutter(setting-spacing($size)); } } } diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index 1228d25..8adab8c 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -23,7 +23,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ```scss // Function. .element { - margin-top: spacing(m); + margin-top: setting-spacing(m); } // Map. diff --git a/packages/setting-spacings/scss/_functions.scss b/packages/setting-spacings/scss/_functions.scss index dea7d81..60fa5ea 100644 --- a/packages/setting-spacings/scss/_functions.scss +++ b/packages/setting-spacings/scss/_functions.scss @@ -14,14 +14,14 @@ /// /// @example scss - Usage /// .element { -/// margin-top: spacing(m); +/// margin-top: setting-spacing(m); /// } /// /// @example css - CSS Output /// .element { /// margin-top: 1em; /// } -@function spacing($size, $rem: false) { +@function setting-spacing($size, $rem: false) { $spacing: map-get($spacings, $size); @if $rem { $spacing: ($spacing / 1em) * 1rem; } @return $spacing; diff --git a/packages/setting-spacings/test/test.scss b/packages/setting-spacings/test/test.scss index 06748b6..5b50f00 100644 --- a/packages/setting-spacings/test/test.scss +++ b/packages/setting-spacings/test/test.scss @@ -1,5 +1,5 @@ @import '../scss/index'; .test::before { - content: '#{spacing(xs)}, #{spacing(s)}, #{spacing(m)}, #{spacing(l)}, #{spacing(xl)}, #{spacing(xxl)}, #{spacing(xxxl)}'; + content: '#{setting-spacing(xs)}, #{setting-spacing(s)}, #{setting-spacing(m)}, #{setting-spacing(l)}, #{setting-spacing(xl)}, #{setting-spacing(xxl)}, #{setting-spacing(xxxl)}'; } From 33e78f84fd56f5aa8a9cc581eb0ed1aab9639957 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 06:37:01 +0100 Subject: [PATCH 298/355] Add travis-ci config file and integrate the travis build status button into the README, fixes #248 --- .travis.yml | 6 ++++++ README.md | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6e79500 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "node" +install: + - npm install -g yarn + - yarn diff --git a/README.md b/README.md index a1125be..bda55e9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # avalanche +[![Build Status](https://travis-ci.org/avalanchesass/avalanche.svg?branch=dev)](https://travis-ci.org/avalanchesass/avalanche) + avalanche is a modular SASS framework which can be extended with npm packages. The goal is to provide a workflow to manage the complexity of big front-end projects. ## Testing From 01c1711a96f67e92debf86382e1ddfd4a5bc2703 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 06:43:40 +0100 Subject: [PATCH 299/355] Use bash to run test scripts to hopefully fix an error when running on travis-ci --- package.json | 4 ++-- test/scripts/_build-test-parameter.sh | 2 +- test/scripts/build-test-css.sh | 2 +- test/scripts/build-test-html.sh | 2 +- test/test-reference.sh | 2 +- test/test.sh | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 48f4a43..68678f0 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "scripts": { "doc": "sassdoc packages/**/*.scss", "lint": "stylelint packages/**/*.scss", - "test:reference": "sh test/test-reference.sh", - "test": "sh test/test.sh" + "test:reference": "bash test/test-reference.sh", + "test": "bash test/test.sh" } } diff --git a/test/scripts/_build-test-parameter.sh b/test/scripts/_build-test-parameter.sh index 22c1556..b707767 100644 --- a/test/scripts/_build-test-parameter.sh +++ b/test/scripts/_build-test-parameter.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e while [[ $# -gt 1 ]] diff --git a/test/scripts/build-test-css.sh b/test/scripts/build-test-css.sh index c0b3c85..1cedf65 100644 --- a/test/scripts/build-test-css.sh +++ b/test/scripts/build-test-css.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/test/scripts/build-test-html.sh b/test/scripts/build-test-html.sh index 80ccbf5..22646b3 100644 --- a/test/scripts/build-test-html.sh +++ b/test/scripts/build-test-html.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/test/test-reference.sh b/test/test-reference.sh index 2c97494..c944996 100644 --- a/test/test-reference.sh +++ b/test/test-reference.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/test/test.sh b/test/test.sh index b8533f9..38bb502 100644 --- a/test/test.sh +++ b/test/test.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" From 748d2686f4399535baac52b3e84a960debe01192 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 06:53:19 +0100 Subject: [PATCH 300/355] Use a different method to get the current dir in the bash scripts so hopefully travis likes that --- test/scripts/build-test-css.sh | 2 +- test/scripts/build-test-html.sh | 2 +- test/test-reference.sh | 2 +- test/test.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/scripts/build-test-css.sh b/test/scripts/build-test-css.sh index 1cedf65..1bb230d 100644 --- a/test/scripts/build-test-css.sh +++ b/test/scripts/build-test-css.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DIR="$( cd "$( dirname $0 )" && pwd )" source "$DIR/_build-test-parameter.sh" diff --git a/test/scripts/build-test-html.sh b/test/scripts/build-test-html.sh index 22646b3..f181672 100644 --- a/test/scripts/build-test-html.sh +++ b/test/scripts/build-test-html.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DIR="$( cd "$( dirname $0 )" && pwd )" source "$DIR/_build-test-parameter.sh" diff --git a/test/test-reference.sh b/test/test-reference.sh index c944996..06111cf 100644 --- a/test/test-reference.sh +++ b/test/test-reference.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DIR="$( cd "$( dirname $0 )" && pwd )" source "$DIR/scripts/_build-test-parameter.sh" diff --git a/test/test.sh b/test/test.sh index 38bb502..fcda380 100644 --- a/test/test.sh +++ b/test/test.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DIR="$( cd "$( dirname $0 )" && pwd )" source "$DIR/scripts/_build-test-parameter.sh" From aa8d645f1aaaa308217a8ce6b90ea2443b1c5be0 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 06:57:24 +0100 Subject: [PATCH 301/355] =?UTF-8?q?Use=20a=20dot=20(.)=20instead=20of=20"s?= =?UTF-8?q?ource"=20for=20better=20travis=20ci=20compatibility=20?= =?UTF-8?q?=F0=9F=99=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/scripts/build-test-css.sh | 2 +- test/scripts/build-test-html.sh | 2 +- test/test-reference.sh | 2 +- test/test.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/scripts/build-test-css.sh b/test/scripts/build-test-css.sh index 1bb230d..83fe1f5 100644 --- a/test/scripts/build-test-css.sh +++ b/test/scripts/build-test-css.sh @@ -3,6 +3,6 @@ set -e DIR="$( cd "$( dirname $0 )" && pwd )" -source "$DIR/_build-test-parameter.sh" +. "$DIR/_build-test-parameter.sh" ( cd "packages/$PACKAGE" && ../../node_modules/node-sass/bin/node-sass --importer ../../node_modules/node-sass-magic-importer/dist/cli.js "test/test.scss" | ../../node_modules/postcss-cli/bin/postcss -u autoprefixer --autoprefixer.browsers "safari >= 4" -o "test/tmp/test.css" ) diff --git a/test/scripts/build-test-html.sh b/test/scripts/build-test-html.sh index f181672..4e6cbcc 100644 --- a/test/scripts/build-test-html.sh +++ b/test/scripts/build-test-html.sh @@ -3,7 +3,7 @@ set -e DIR="$( cd "$( dirname $0 )" && pwd )" -source "$DIR/_build-test-parameter.sh" +. "$DIR/_build-test-parameter.sh" BODY=$(cat "packages/$PACKAGE/test/test.hbs") echo $(cat test/templates/test.hbs) | node_modules/handlebars-cmd/index.js --body "$BODY" > "packages/$PACKAGE/test/tmp/test.html" diff --git a/test/test-reference.sh b/test/test-reference.sh index 06111cf..7b41280 100644 --- a/test/test-reference.sh +++ b/test/test-reference.sh @@ -3,7 +3,7 @@ set -e DIR="$( cd "$( dirname $0 )" && pwd )" -source "$DIR/scripts/_build-test-parameter.sh" +. "$DIR/scripts/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then diff --git a/test/test.sh b/test/test.sh index fcda380..855d7d6 100644 --- a/test/test.sh +++ b/test/test.sh @@ -3,7 +3,7 @@ set -e DIR="$( cd "$( dirname $0 )" && pwd )" -source "$DIR/scripts/_build-test-parameter.sh" +. "$DIR/scripts/_build-test-parameter.sh" for f in packages/*; do if [ -n "$PACKAGE" ] && [ `basename $f` != "$PACKAGE" ]; then From ab981dc325581d86586b6dfcf7c1e59878275559 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 07:05:50 +0100 Subject: [PATCH 302/355] Try to run the test script from the travis config instead of package.json, travis travis travis travis... --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e79500..91c38fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ -language: node_js +language: bash node_js: - "node" install: - npm install -g yarn - yarn +script: + - bash test/test.sh From 0cd13b82fc6da53586569776a424bf5adef585cf Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 07:07:40 +0100 Subject: [PATCH 303/355] Another commit another travis experiment... --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 91c38fc..a5bac06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ -language: bash +language: node node_js: - "node" install: - npm install -g yarn - yarn script: - - bash test/test.sh + - bash test/test.sh From 167e5c119f0dd569c8255b1a0f392aa973c192c2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 07:09:51 +0100 Subject: [PATCH 304/355] Travis experiment again --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a5bac06..4471e85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -language: node +language: node_js node_js: - "node" install: From 43d43386ef2b471fb9fd34d903dd7e718bc8d32a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 07:13:52 +0100 Subject: [PATCH 305/355] Execute sub test scripts with bash instead of sh, please travis work... --- test/test-reference.sh | 4 ++-- test/test.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test-reference.sh b/test/test-reference.sh index 7b41280..c3b6289 100644 --- a/test/test-reference.sh +++ b/test/test-reference.sh @@ -13,9 +13,9 @@ for f in packages/*; do if [ -d "$f/test" ]; then mkdir -p "$f/test/tmp" # Build HTML - sh "$DIR/scripts/build-test-html.sh" --package $(basename $f) + bash "$DIR/scripts/build-test-html.sh" --package $(basename $f) # Build CSS - sh "$DIR/scripts/build-test-css.sh" --package $(basename $f) + bash "$DIR/scripts/build-test-css.sh" --package $(basename $f) # Create test reference ( cd "$f" && ../../node_modules/backstopjs/cli/index.js reference --configPath=../../backstop.json ) # Cleanup diff --git a/test/test.sh b/test/test.sh index 855d7d6..176830f 100644 --- a/test/test.sh +++ b/test/test.sh @@ -13,9 +13,9 @@ for f in packages/*; do if [ -d "$f/test" ]; then mkdir -p "$f/test/tmp" # Build HTML - sh "$DIR/scripts/build-test-html.sh" --package $(basename $f) + bash "$DIR/scripts/build-test-html.sh" --package $(basename $f) # Build CSS - sh "$DIR/scripts/build-test-css.sh" --package $(basename $f) + bash "$DIR/scripts/build-test-css.sh" --package $(basename $f) # Test ( cd "$f" && ../../node_modules/backstopjs/cli/index.js test --configPath=../../backstop.json ) # Cleanup From 3f489e5c6f26241be2a76980bd7ebdb53c017932 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 11:49:53 +0100 Subject: [PATCH 306/355] Add "avalanche" keyword to package package.json files --- packages/object-grid/package.json | 1 + packages/setting-spacings/package.json | 1 + packages/utility-width/package.json | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 13e033a..6564e6b 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -3,6 +3,7 @@ "description": "Fluid width, responsive grid system", "keywords": [ "avalanche-package", + "avalanche", "sass" ], "version": "4.0.0-alpha.3", diff --git a/packages/setting-spacings/package.json b/packages/setting-spacings/package.json index 070f294..77a61ea 100644 --- a/packages/setting-spacings/package.json +++ b/packages/setting-spacings/package.json @@ -3,6 +3,7 @@ "description": "Spacing sizes", "keywords": [ "avalanche-package", + "avalanche", "sass" ], "version": "4.0.0-alpha.1", diff --git a/packages/utility-width/package.json b/packages/utility-width/package.json index c249dcf..3a892a6 100644 --- a/packages/utility-width/package.json +++ b/packages/utility-width/package.json @@ -3,6 +3,7 @@ "description": "Width classes", "keywords": [ "avalanche-package", + "avalanche", "sass" ], "version": "4.0.0-alpha.1", From b87d3042a55009243e2e23717df90fdc08bfbdf7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 13:49:51 +0100 Subject: [PATCH 307/355] Add CLI package --- packages/cli/README.md | 26 +++++++++ packages/cli/bin/avalanche.js | 43 +++++++++++++++ packages/cli/lib/replace-recursive.js | 13 +++++ packages/cli/package.json | 27 ++++++++++ packages/cli/templates/default/.gitignore | 28 ++++++++++ packages/cli/templates/default/app/index.html | 16 ++++++ packages/cli/templates/default/gulpfile.js | 39 ++++++++++++++ packages/cli/templates/default/package.json | 21 ++++++++ .../default/scss/components/README.md | 5 ++ .../templates/default/scss/generic/README.md | 1 + .../cli/templates/default/scss/index.scss | 54 +++++++++++++++++++ .../templates/default/scss/objects/README.md | 9 ++++ .../templates/default/scss/settings/README.md | 1 + .../templates/default/scss/tools/README.md | 1 + .../default/scss/utilities/README.md | 5 ++ 15 files changed, 289 insertions(+) create mode 100644 packages/cli/README.md create mode 100755 packages/cli/bin/avalanche.js create mode 100644 packages/cli/lib/replace-recursive.js create mode 100644 packages/cli/package.json create mode 100644 packages/cli/templates/default/.gitignore create mode 100644 packages/cli/templates/default/app/index.html create mode 100644 packages/cli/templates/default/gulpfile.js create mode 100644 packages/cli/templates/default/package.json create mode 100644 packages/cli/templates/default/scss/components/README.md create mode 100644 packages/cli/templates/default/scss/generic/README.md create mode 100644 packages/cli/templates/default/scss/index.scss create mode 100644 packages/cli/templates/default/scss/objects/README.md create mode 100644 packages/cli/templates/default/scss/settings/README.md create mode 100644 packages/cli/templates/default/scss/tools/README.md create mode 100644 packages/cli/templates/default/scss/utilities/README.md diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 0000000..ab45bd8 --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,26 @@ +# @avalanche/cli +CLI for the avalanche framework. + +## Install +```bash +npm install @avalanche/cli -g +``` + +## Basic usage +```bash +# Create a new project with the name "Your Project Name". +avalanche "Your Project Name" +# Switch to the newly created directory. +cd your-project-name +# Install dependencies and start the build process. +npm start +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/cli/bin/avalanche.js b/packages/cli/bin/avalanche.js new file mode 100755 index 0000000..3b88fa3 --- /dev/null +++ b/packages/cli/bin/avalanche.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node +const commandLineArgs = require(`command-line-args`); +const ncp = require(`ncp`); +const path = require(`path`); + +const replaceRecursive = require(`../lib/replace-recursive.js`); + +const optionDefinitions = [ + { name: `project-name`, type: String, defaultOption: true }, +]; +const options = commandLineArgs(optionDefinitions); + +const projectName = options[`project-name`]; +if (!projectName) throw new Error(`Provide a project name.`); + +const projectNameCleaned = projectName + .toLowerCase() + .split(` `) + .join(`-`); + +const replacements = [ + { + regex: `PROJECT-NAME-CLEANED`, + replacement: projectNameCleaned, + }, + { + regex: `PROJECT-NAME`, + replacement: projectName, + }, +]; + +const packagePath = path.resolve(__dirname, `../`); +const source = path.join(packagePath, `templates`, `default`); +const destination = path.join(process.cwd(), projectNameCleaned); + +ncp(source, destination, (error) => { + if (error) throw error; + + replaceRecursive(replacements, destination); + + // eslint-disable-next-line no-console + console.info(`Created a new avalanche project "${projectName}" in ${destination}.`); +}); diff --git a/packages/cli/lib/replace-recursive.js b/packages/cli/lib/replace-recursive.js new file mode 100644 index 0000000..e59d29c --- /dev/null +++ b/packages/cli/lib/replace-recursive.js @@ -0,0 +1,13 @@ +const replace = require(`replace`); + +module.exports = (replacements, path) => { + replacements.forEach((replaceDate) => { + replace({ + regex: replaceDate.regex, + replacement: replaceDate.replacement, + paths: [path], + recursive: true, + silent: true, + }); + }); +}; diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 0000000..b3076fe --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,27 @@ +{ + "name": "@avalanche/cli", + "description": "CLI for the avalanche framework", + "keywords": [ + "avalanche-tooling", + "avalanche" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/cli" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "bin": { + "avalanche": "bin/avalanche.js" + }, + "dependencies": { + "command-line-args": "^3.0.3", + "ncp": "^2.0.0", + "replace": "^0.3.0" + } +} diff --git a/packages/cli/templates/default/.gitignore b/packages/cli/templates/default/.gitignore new file mode 100644 index 0000000..f4d6b39 --- /dev/null +++ b/packages/cli/templates/default/.gitignore @@ -0,0 +1,28 @@ +# Numerous always-ignore extensions +*.diff +*.err +*.log +*.orig +*.rej +*.swo +*.swp +*.vi +*.zip +*~ + +# OS or Editor folders +._* +.cache +.DS_Store +.idea +.project +.settings +.tmproj +*.esproj +*.sublime-project +*.sublime-workspace +nbproject +Thumbs.db + +# Folders to ignore +app/css diff --git a/packages/cli/templates/default/app/index.html b/packages/cli/templates/default/app/index.html new file mode 100644 index 0000000..005f602 --- /dev/null +++ b/packages/cli/templates/default/app/index.html @@ -0,0 +1,16 @@ + + + + + + Welcome to avalanche! + + + + + + + +

Welcome to avalanche!

+ + diff --git a/packages/cli/templates/default/gulpfile.js b/packages/cli/templates/default/gulpfile.js new file mode 100644 index 0000000..5295891 --- /dev/null +++ b/packages/cli/templates/default/gulpfile.js @@ -0,0 +1,39 @@ +const autoprefixer = require(`gulp-autoprefixer`); +const browserSync = require(`browser-sync`); +const cleancss = require(`gulp-cleancss`); +const gulp = require(`gulp`); +const nodeSassMagicImporter = require(`node-sass-magic-importer`); +const rename = require(`gulp-rename`); +const sass = require(`gulp-sass`); +const sourcemaps = require(`gulp-sourcemaps`); + +gulp.task(`serve`, () => { + browserSync.init({ + server: { + baseDir: `app`, + }, + }); + + gulp.watch(`scss/**/*.scss`, [`sass`]); + gulp.watch(`app/**/*.html`).on(`change`, browserSync.reload); +}); + +gulp.task(`sass`, () => + gulp.src(`scss/**/*.scss`) + .pipe(sourcemaps.init()) + .pipe(sass({ + importer: nodeSassMagicImporter, + }).on(`error`, sass.logError)) + .pipe(autoprefixer()) + .pipe(sourcemaps.write({ sourceRoot: `/scss` })) + .pipe(gulp.dest(`app/css`)) + .pipe(rename((originalPath) => { + // eslint-disable-next-line no-param-reassign + originalPath.basename += `.min`; + })) + .pipe(cleancss()) + .pipe(gulp.dest(`app/css`)) + .pipe(browserSync.stream()) +); + +gulp.task(`default`, [`serve`]); diff --git a/packages/cli/templates/default/package.json b/packages/cli/templates/default/package.json new file mode 100644 index 0000000..c75ed6b --- /dev/null +++ b/packages/cli/templates/default/package.json @@ -0,0 +1,21 @@ +{ + "name": "PROJECT-NAME-CLEANED", + "description": "", + "version": "0.0.1", + "author": "AUTHOR", + "homepage": "HOMEPAGE", + "license": "LICENSE", + "devDependencies": { + "browser-sync": "^2.18.2", + "gulp": "^3.9.1", + "gulp-autoprefixer": "^3.1.1", + "gulp-cleancss": "^0.2.2", + "gulp-rename": "^1.2.2", + "gulp-sass": "^2.3.2", + "gulp-sourcemaps": "^1.9.1", + "node-sass-magic-importer": "^2.1.3" + }, + "scripts": { + "start": "npm install && gulp" + } +} diff --git a/packages/cli/templates/default/scss/components/README.md b/packages/cli/templates/default/scss/components/README.md new file mode 100644 index 0000000..14f88d5 --- /dev/null +++ b/packages/cli/templates/default/scss/components/README.md @@ -0,0 +1,5 @@ +Place your component styles in this directory. + +Components are concrete, implementation-specific piece of UI. + +[Read more about components](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#component-namespaces-c-) diff --git a/packages/cli/templates/default/scss/generic/README.md b/packages/cli/templates/default/scss/generic/README.md new file mode 100644 index 0000000..b11a950 --- /dev/null +++ b/packages/cli/templates/default/scss/generic/README.md @@ -0,0 +1 @@ +This is the place for resetting and/or normalizing styles, box-sizing definition, etc. diff --git a/packages/cli/templates/default/scss/index.scss b/packages/cli/templates/default/scss/index.scss new file mode 100644 index 0000000..248a3de --- /dev/null +++ b/packages/cli/templates/default/scss/index.scss @@ -0,0 +1,54 @@ +/** + * Settings + * + * - Globally-available settings. + * - Config switches. + * - Brand colors, etc. + */ +@import 'settings/**/*.scss'; + +/** + * Tools + * + * - Globally-available tools. + * - Public mixins. + * - Helper functions. + */ +@import 'tools/**/*.scss'; + +/** + * Generic + * + * - Ground zero styles. + * - Low-specificity, far-reaching. + * - Resets, Normalize.css, etc. + */ +@import 'generic/**/*.scss'; + +/** + * Objects + * + * - OOCSS. + * - Design patterns. + * - No cosmetics. + * - Agnostically named classes only (e.g. .o-uilist {}). + */ +@import 'objects/**/*.scss'; + +/** + * Components + * + * - Designed pieces of UI. + * - Still only using classes. + * - More explicitly named (e.g. .c-products-list {}). + */ +@import 'components/**/*.scss'; + +/** + * Utilities + * + * - Overrides, helpers, utilities. + * - Only affect one piece of the DOM at a time. + * - Usually carry !important. + */ +@import 'utilities/**/*.scss'; diff --git a/packages/cli/templates/default/scss/objects/README.md b/packages/cli/templates/default/scss/objects/README.md new file mode 100644 index 0000000..cc73c64 --- /dev/null +++ b/packages/cli/templates/default/scss/objects/README.md @@ -0,0 +1,9 @@ +Place your object styles in this directory. + +Objects are non-cosmetic styles. They might be used in an open-ended number of instances. + +- Objects are abstract. +- They can be used in any number of places across the project—places you might not have even seen. +- Avoid modifying their styles. + +[Read more about objects](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#object-namespaces-o-) diff --git a/packages/cli/templates/default/scss/settings/README.md b/packages/cli/templates/default/scss/settings/README.md new file mode 100644 index 0000000..cb1cf22 --- /dev/null +++ b/packages/cli/templates/default/scss/settings/README.md @@ -0,0 +1 @@ +Place your **global** settings in this directory. diff --git a/packages/cli/templates/default/scss/tools/README.md b/packages/cli/templates/default/scss/tools/README.md new file mode 100644 index 0000000..aec4d44 --- /dev/null +++ b/packages/cli/templates/default/scss/tools/README.md @@ -0,0 +1 @@ +Place your custom mixins and functions in this directory. diff --git a/packages/cli/templates/default/scss/utilities/README.md b/packages/cli/templates/default/scss/utilities/README.md new file mode 100644 index 0000000..b2883fd --- /dev/null +++ b/packages/cli/templates/default/scss/utilities/README.md @@ -0,0 +1,5 @@ +Place your utility styles in this directory. + +Utility classes are very specific and often provide only one declaration. Utility classes should be used sparingly. They can be reused and are not tied to a specific piece of UI. + +[Read more about utilities](http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/#utility-namespaces-u-) From 07b048b6d0e681b4821368377c9a2bd6d9373709 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 17:42:42 +0100 Subject: [PATCH 308/355] Add breakpoint settings package --- packages/object-grid/package.json | 1 + packages/object-grid/scss/_settings.scss | 18 --------- packages/object-grid/scss/index.scss | 1 + packages/setting-breakpoints/.npmignore | 1 + packages/setting-breakpoints/README.md | 38 ++++++++++++++++++ packages/setting-breakpoints/package.json | 21 ++++++++++ .../setting-breakpoints/scss/_functions.scss | 24 +++++++++++ .../setting-breakpoints/scss/_settings.scss | 13 ++++++ packages/setting-breakpoints/scss/index.scss | 1 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 3573 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 4208 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 5100 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 6234 bytes packages/setting-breakpoints/test/test.hbs | 1 + packages/setting-breakpoints/test/test.scss | 5 +++ packages/setting-spacings/README.md | 2 +- 16 files changed, 107 insertions(+), 19 deletions(-) create mode 100644 packages/setting-breakpoints/.npmignore create mode 100644 packages/setting-breakpoints/README.md create mode 100644 packages/setting-breakpoints/package.json create mode 100644 packages/setting-breakpoints/scss/_functions.scss create mode 100644 packages/setting-breakpoints/scss/_settings.scss create mode 100644 packages/setting-breakpoints/scss/index.scss create mode 100644 packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/setting-breakpoints/test/test.hbs create mode 100644 packages/setting-breakpoints/test/test.scss diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 6564e6b..8ab4e1a 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -18,6 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { + "@avalanche/setting-breakpoints": "^4.0.0-alpha.1", "@avalanche/setting-spacings": "^4.0.0-alpha.1" }, "main": "scss/index.scss" diff --git a/packages/object-grid/scss/_settings.scss b/packages/object-grid/scss/_settings.scss index 2392405..9ddab5c 100644 --- a/packages/object-grid/scss/_settings.scss +++ b/packages/object-grid/scss/_settings.scss @@ -1,21 +1,3 @@ -// @TODO: may not use separate file? -// @TODO: import default variables. - -$breakpoints: ( - s: 30em, - m: 45em, - l: 60em, - xl: 75em, -); - -@function setting-breakpoint($size, $rem: false) { - $breakpoint: map-get($breakpoints, $size); - @if $rem { $breakpoint: ($breakpoint / 1em) * 1rem; } - @return $breakpoint; -} - - - //// /// @group Object: grid /// @author Markus Oberlehner diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 1a2e8a6..649c8ec 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,3 +1,4 @@ +@import '~@avalanche/setting-breakpoints'; @import '~@avalanche/setting-spacings'; @import 'settings'; @import 'mixins'; diff --git a/packages/setting-breakpoints/.npmignore b/packages/setting-breakpoints/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/setting-breakpoints/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/setting-breakpoints/README.md b/packages/setting-breakpoints/README.md new file mode 100644 index 0000000..ef02b12 --- /dev/null +++ b/packages/setting-breakpoints/README.md @@ -0,0 +1,38 @@ +# @avalanche/setting-breakpoints +Breakpoint sizes. + +- [Documentation](https://avalanche.oberlehner.net/documentation/#setting: breakpoints) + +## Install +```bash +npm install @avalanche/setting-breakpoints --save-dev +``` + +## Basic usage +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/setting-breakpoints'; + +// Import just the settings file. +@import '~@avalanche/setting-breakpoints/scss/settings'; +``` + +## Usage +```scss +// Function. +@media (min-width: setting-breakpoint(m)) { } + +// Map. +@media (min-width: map-get($breakpoints, m)) { } +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/setting-breakpoints/package.json b/packages/setting-breakpoints/package.json new file mode 100644 index 0000000..958e14f --- /dev/null +++ b/packages/setting-breakpoints/package.json @@ -0,0 +1,21 @@ +{ + "name": "@avalanche/setting-breakpoints", + "description": "Breakpoint sizes", + "keywords": [ + "avalanche-package", + "avalanche", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/setting-breakpoints" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "main": "scss/index.scss" +} diff --git a/packages/setting-breakpoints/scss/_functions.scss b/packages/setting-breakpoints/scss/_functions.scss new file mode 100644 index 0000000..7e9aa8e --- /dev/null +++ b/packages/setting-breakpoints/scss/_functions.scss @@ -0,0 +1,24 @@ +@import 'settings'; + +//// +/// @group Setting: breakpoints +/// @author Markus Oberlehner +//// + +/// Returns breakpoint size. +/// +/// @param {String} $size +/// Size (s, m, l or xl). +/// @param {Boolean} $rem [false] +/// Return spacing size in rem instead of em. +/// +/// @example scss - Usage +/// @media (min-width: setting-breakpoint(m)) { } +/// +/// @example css - CSS Output +/// @media (min-width: 45em) { } +@function setting-breakpoint($size, $rem: false) { + $breakpoint: map-get($breakpoints, $size); + @if $rem { $breakpoint: ($breakpoint / 1em) * 1rem; } + @return $breakpoint; +} diff --git a/packages/setting-breakpoints/scss/_settings.scss b/packages/setting-breakpoints/scss/_settings.scss new file mode 100644 index 0000000..cf4c4cb --- /dev/null +++ b/packages/setting-breakpoints/scss/_settings.scss @@ -0,0 +1,13 @@ +//// +/// @group Setting: breakpoints +/// @author Markus Oberlehner +//// + +/// Breakpoint sizes. +/// @type Map +$breakpoints: ( + s: 30em, + m: 45em, + l: 60em, + xl: 75em, +) !default; diff --git a/packages/setting-breakpoints/scss/index.scss b/packages/setting-breakpoints/scss/index.scss new file mode 100644 index 0000000..606bfb4 --- /dev/null +++ b/packages/setting-breakpoints/scss/index.scss @@ -0,0 +1 @@ +@import 'functions'; diff --git a/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..e9dc93f5e1ae8016ac62e0c897d41daa0f7939da GIT binary patch literal 3573 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 PS1-_uzHT&^>yQ2k(`a{4 literal 0 HcmV?d00001 diff --git a/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..f140402e0b8c9676628e147881a2db25509093e6 GIT binary patch literal 4208 zcmeH}dobJS8pnUy)9r3s?VhTtx}C0|Xjv2`E-l+e8l+2ABO-0xR$ULGjfm*!mZMu# z;ud!;vT=zmmAEBVEgB)wsHj^MaZ6lE5O>F(ne*SyoIlQAXJ((7cb=JN-kJA#zRxqy z`$@d%43R%__6Ps~@=%BGTmaxe4*^flC08b~Ww`AkO&9{n~GSA$Jx4I{$X% zAaF(bFFydl`6vJNa@bb~BXwVCYAP$M*={YcUD_cK6C1CFNG((x+r_Aa-H*7X${rhw z$nDp!-W%9sY{ea2)RH)c2us011K!u^>}f;pc>Fc0XSGFZO||Dz zSZFq_iv6;2q4VW6Q)+XSP8;m|j}qPEQxm4O1DkpEaCki#49P^B5zMQ9fjv{w#65LU&#j1aR$lEEO~f} zPhX`Ql(@#-TK(T0G&T>jwaDQKK`!anl=117X6m zpnF>##1@4;Y-rfigxPw5cXq5K`?(BwuKYE*tgYPn=`=`rx4qxR0lCop>KxRlb?=tL zX}XBv_p}~qvzZ8bs%mMR4bn|IR?G~T(%RV+M4mWB1WmNs54`WoFBNppF3#V;`}*qX zOL}VwmtQ5|dOd7Sz6m3QBD{~5w2mO?li8{<;>TS{#U*na{CE&ML$Moi%avS8uhi`# zr>Z;g@G!sYUyFN%eFgW4>?ON3S&&npD{}Mj7Cetf+`^ey+T>OSJN5Dc9`JhBCGsfV znbCqIls!~jJ@>?r!l3Bv96apD#l)`C@3~Fqe$EB$)lu{Vf?(c#Ig((P&aoEZ@Tee7 z&<(Ekj*w8jjwe6&59`2F@_S9c4Zp`c1YAylMJbFuy7w(A*eSrP*&LDO=%l5q)-5{% z4XHCruTesq?Mx=vUe0)aLX>j4$}xC4Ok4XnWg@;PvNEVMc}yu>)WZr|6z06`S*w_b zsY`}3hE6A!;4l$qJvOUFsjNtYDoznfQiGp4pt&L%8y?}Ob6c9BBc|*n3$T8*kK|^) zkO9sM41p0(4)piyO1lD&+^FHVP*F6%??WV<-GWWrM>)(=2b>GhL%0ABjb8 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 Y?pikoO^Fdd{DA@TH>VrKYk|N03zo^3B>(^b literal 0 HcmV?d00001 diff --git a/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/setting-breakpoints/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..bc27e343a7cae336af49c7df6d0a4bc3bde5513b GIT binary patch literal 6234 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 literal 0 HcmV?d00001 diff --git a/packages/setting-breakpoints/test/test.hbs b/packages/setting-breakpoints/test/test.hbs new file mode 100644 index 0000000..7b67343 --- /dev/null +++ b/packages/setting-breakpoints/test/test.hbs @@ -0,0 +1 @@ +
diff --git a/packages/setting-breakpoints/test/test.scss b/packages/setting-breakpoints/test/test.scss new file mode 100644 index 0000000..e6f0ec6 --- /dev/null +++ b/packages/setting-breakpoints/test/test.scss @@ -0,0 +1,5 @@ +@import '../scss/index'; + +.test::before { + content: '#{setting-breakpoint(s)}, #{setting-breakpoint(m)}, #{setting-breakpoint(l)}, #{setting-breakpoint(xl)}'; +} diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index 8adab8c..c0bf940 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -15,7 +15,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on // Import the main file. @import '~@avalanche/setting-spacings'; -// Import just the setting file. +// Import just the settings file. @import '~@avalanche/setting-spacings/scss/settings'; ``` From ed5b975474df64d98797f040d7e4ed79402c39bd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 17:49:03 +0100 Subject: [PATCH 309/355] Use the breakpoint setting package inside the width utility package --- packages/utility-width/package.json | 3 +++ packages/utility-width/scss/_settings.scss | 5 ----- packages/utility-width/scss/index.scss | 3 ++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/utility-width/package.json b/packages/utility-width/package.json index 3a892a6..e9aefcd 100644 --- a/packages/utility-width/package.json +++ b/packages/utility-width/package.json @@ -17,5 +17,8 @@ "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" }, + "dependencies": { + "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + }, "main": "scss/index.scss" } diff --git a/packages/utility-width/scss/_settings.scss b/packages/utility-width/scss/_settings.scss index b37b179..de2cbc0 100644 --- a/packages/utility-width/scss/_settings.scss +++ b/packages/utility-width/scss/_settings.scss @@ -1,8 +1,3 @@ -// @TODO: import default variables. -$breakpoints: ( - m: 42em -) !default; - //// /// @group Utility: width /// @author Markus Oberlehner diff --git a/packages/utility-width/scss/index.scss b/packages/utility-width/scss/index.scss index c7c10bd..df323bb 100644 --- a/packages/utility-width/scss/index.scss +++ b/packages/utility-width/scss/index.scss @@ -1,3 +1,4 @@ +@import '~@avalanche/setting-breakpoints'; @import 'settings'; @import 'mixins'; @@ -8,7 +9,7 @@ } @each $breakpoint in $u-width-breakpoints { - @media (min-width: map-get($breakpoints, $breakpoint)) { + @media (min-width: setting-breakpoint($breakpoint)) { @for $size from 1 through $u-width-base { .u-width-#{$size}\/#{$u-width-base}\@#{$breakpoint} { @include u-width($size, $u-width-base); From 1e8b30ac499a782bf7b6be90a3cc9f2a22291f80 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 3 Dec 2016 18:02:43 +0100 Subject: [PATCH 310/355] Update package version numbers --- packages/object-grid/package.json | 4 ++-- packages/setting-spacings/package.json | 2 +- packages/utility-width/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 8ab4e1a..4bde294 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.3", + "version": "4.0.0-alpha.4", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -19,7 +19,7 @@ }, "dependencies": { "@avalanche/setting-breakpoints": "^4.0.0-alpha.1", - "@avalanche/setting-spacings": "^4.0.0-alpha.1" + "@avalanche/setting-spacings": "^4.0.0-alpha.2" }, "main": "scss/index.scss" } diff --git a/packages/setting-spacings/package.json b/packages/setting-spacings/package.json index 77a61ea..29f7363 100644 --- a/packages/setting-spacings/package.json +++ b/packages/setting-spacings/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/utility-width/package.json b/packages/utility-width/package.json index e9aefcd..a7ad04c 100644 --- a/packages/utility-width/package.json +++ b/packages/utility-width/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", From f5352100ece9a20f5885326095ba7ab5292d5507 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Wed, 7 Dec 2016 19:10:22 +0100 Subject: [PATCH 311/355] Add new container object package --- packages/object-container/.npmignore | 1 + packages/object-container/README.md | 64 ++++++++++++++++++ packages/object-container/package.json | 24 +++++++ packages/object-container/scss/_mixins.scss | 32 +++++++++ packages/object-container/scss/_settings.scss | 16 +++++ packages/object-container/scss/index.scss | 16 +++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 9551 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 10550 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 11506 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 12682 bytes packages/object-container/test/test.hbs | 14 ++++ packages/object-container/test/test.scss | 6 ++ 12 files changed, 173 insertions(+) create mode 100644 packages/object-container/.npmignore create mode 100644 packages/object-container/README.md create mode 100644 packages/object-container/package.json create mode 100644 packages/object-container/scss/_mixins.scss create mode 100644 packages/object-container/scss/_settings.scss create mode 100644 packages/object-container/scss/index.scss create mode 100644 packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/object-container/test/test.hbs create mode 100644 packages/object-container/test/test.scss diff --git a/packages/object-container/.npmignore b/packages/object-container/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/object-container/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/object-container/README.md b/packages/object-container/README.md new file mode 100644 index 0000000..aa5bd8d --- /dev/null +++ b/packages/object-container/README.md @@ -0,0 +1,64 @@ +# @avalanche/object-container +Basic container class to limit the max-width of the layout and add some padding. + +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: container) + +## Install +```bash +npm install @avalanche/object-container --save-dev +``` + +## Basic usage +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/object-container'; + +// Import just the mixin file. +@import '~@avalanche/object-container/scss/mixins'; +``` + +## Demo +```html +
+

Lorem Ipsum

+

Contained content.

+
+``` + +### Sizes +Activate size modifier classes via the `$o-container-sizes` map variable. + +```scss +$o-container-sizes: ( + m: 64em, + l: 96em +); +``` + +```html +
+

Lorem Ipsum

+

Contained content.

+
+``` + +## Mixins +```scss +@import '~@avalanche/object-container/scss/mixins'; + +// Usage. +.container { + @include o-container(64em, 1em); +} +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/object-container/package.json b/packages/object-container/package.json new file mode 100644 index 0000000..63ae41e --- /dev/null +++ b/packages/object-container/package.json @@ -0,0 +1,24 @@ +{ + "name": "@avalanche/object-container", + "description": "Basic container class to limit the max-width of the layout and add some padding", + "keywords": [ + "avalanche-package", + "avalanche", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-container" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "dependencies": { + "@avalanche/setting-spacings": "^4.0.0-alpha.2" + }, + "main": "scss/index.scss" +} diff --git a/packages/object-container/scss/_mixins.scss b/packages/object-container/scss/_mixins.scss new file mode 100644 index 0000000..4ddc421 --- /dev/null +++ b/packages/object-container/scss/_mixins.scss @@ -0,0 +1,32 @@ +//// +/// @group Object: container +/// @author Markus Oberlehner +//// + +/// Basic container class to limit the max-width of the layout and add some padding. +/// +/// @example scss - Usage +/// .element { +/// @include o-container(); +/// } +/// +/// @example css - CSS Output +/// .element { +/// margin-right: auto; +/// margin-left: auto; +/// max-width: 64em; +/// padding-right: 1em; +/// padding-left: 1em; +/// } +@mixin o-container($size: 64em, $horizontal-spacing: 1em) { + margin-right: auto; + margin-left: auto; + + @if $size > 0 { + max-width: $size; + } + @if $horizontal-spacing > 0 { + padding-right: $horizontal-spacing; + padding-left: $horizontal-spacing; + } +} diff --git a/packages/object-container/scss/_settings.scss b/packages/object-container/scss/_settings.scss new file mode 100644 index 0000000..c380f6a --- /dev/null +++ b/packages/object-container/scss/_settings.scss @@ -0,0 +1,16 @@ +//// +/// @group Object: container +/// @author Markus Oberlehner +//// + +/// Default container size. +/// @type Number +$o-container-size-default: 64em !default; + +/// Container sizes. +/// @type Map +$o-container-sizes: () !default; + +/// Vertical spacing. +/// @type String +$o-container-vertical-spacing: m !default; diff --git a/packages/object-container/scss/index.scss b/packages/object-container/scss/index.scss new file mode 100644 index 0000000..d4b235f --- /dev/null +++ b/packages/object-container/scss/index.scss @@ -0,0 +1,16 @@ +@import '~@avalanche/setting-spacings'; +@import 'settings'; +@import 'mixins'; + +.o-container { + @include o-container($o-container-size-default, setting-spacing($o-container-vertical-spacing)); +} + +@each $modifier, $size in $o-container-sizes { + @if $size == $o-container-size-default { + @warn 'Size #{$modifier} is the same as $o-container-size-default.'; + } + .o-container--#{$modifier} { + @include o-container($size, setting-spacing($o-container-vertical-spacing)); + } +} diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..bda98d9e3e83a0454b96260cd84ec3ab1b19eb25 GIT binary patch literal 9551 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 bXfGNvrIDM&BP@C{Aq7I-us~E?bBg_c&;4(f literal 0 HcmV?d00001 diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4c9bac593619265f383b44862e2ac0e594f808 GIT binary patch literal 10550 zcmeHtcTiK^*KQg`DWQmh^a!FC4ho73B3jqd|wHIAfg26DuNU#O0V%1 z!51NPLQg~ifzTlVLb=D^{p|enxIw7kd+F6n~cM`h4Y^ z_xxv4-e9KB@SWj0la3I(uHPAa`Q3e=h=xUaw^AT6cPS>kf9w;!o@^1kl^>q_`hNdNlYPgSJs&-VGCdr-&8vE6Q&KT+1(^(?IPu=!aL69ppIPy1Y3Dc zs*}hd`HKl((7vf;$RWFf7ID=F&k4R zW9=s-WBk16vd2~E@0w+%c6KdOrMe%MlwZ_b5ehpcnqt2cqEgMaAwV&vI8xLI#S>wP zTyRBB?oaa(5Tko^ZMMdXqY+FfjcSf7qLH$r`x4b+E=rntpU&`uj+vj~CCK2gWIb+Xu%}s;i3|a-KG9ZNdgtPl5VEeY3 zVsNO!2l(iWQLh~htme%KBvxu94nAt?hl=*~SU~TBm2ihtW<`@2R1QrIConbaM^k|6 zbS=Z7aUEZD($45X{f&F63yahGu+L<98ad;@mTA|58>>Lbt<|kMS*A|vBhysru@Ws_ zCLWm@9qV5@Qz8T+)o?HEQ%eL0YPgBt!ClUORH-ip@5DS=Y0nnE`)pMd!ucSiY6_?F zq8t;$rH&g5eHPE_Cr9V`{GjgSqiR_Gb6P*b?%!|Tj&3hg+wOBPw46X~93MVYLEI9g zI&aAhJ16M0iM1Qp{C1eFepuXk>{x57_iXXjxD{d-O8M)J0>1cYzDG8yTHg4%^8F7S z8UrkR^Y13;$J7{wjds;AXC^HJ*rO_ts?=8Qw$^W3LQ4`xTNIDCDkxwS)VdfKU9k~i zIeyiyTVfW|9B@i;#f6lwgIM*ntzSoabR8)p;-fhgm1g8@XO%kHBiA0+eqc1HO@CFr z^<3ggL;|(vVlDIX%W!zx%U$!o z2JM#kVIr4kX3$h|D_NTB>XWs)k_L4SlF^KjMmePU#V_yw$JP@ zRv8ckg-ay#^_U`T-39y_+>!B!zwfWijfYZL3^8aW;MVhlHhI`MHEwnCmv8!8$2X!L zu+tmy-|Q>>^@?=0o}<^^wv=*Y%=^sgcdTNoc;VFf1Duu*;FnK55YXS|kER?AAFfGL z6gt^a^6=xH+==q8fqW4s2HBz_H$4WrSxs^9T4piQeYdiu#zzAQdd=%oLmK9%mCofLEBG0OQrUhMe>@>|3XKCm3@?q&#!&f)pINlp?Njy=1# zJ3-gdjlR5*x6{T>TTZCI(V5-ZWC2cmM-wrtFpFj7*29NoerkNVqzwIzopUJpyvycC zd%6R?$A;|KITAy*P{-Ypf`p3pq3+Kdgnv@0tvN%g@FykQaNFyx@89(rxmo(lMCrL5 ze=D_HbFigW+08wZFm_sRd+rd@6x;OgZHgd)fwkZbWRb-`EYGylY;9ZvA<%D~j3TpG zW5s7jBJ3?mUkKO=oeZtSQIfU1+hL7NwNiPN_n{I3rTt=THzg6<&#lWvl&x$^bKv$Y zs<~FUzBm8 z;vv{7J_a7VE@7v+?-E3fqev3`a2-Lj-BkmJIVR5~KHv`?xU59T7Ld<{wY`d54T+lN zL8yzY#;wl68s!vC?&hCx)yM~la_^0eY7`t$f|)knsgh)i!^{?AD<)^8*1wpKune5Y z_k72lIfFUJ3#KWlgvpnLl@fF)J#)F@9;!O<+(3k@{qd%1fD0_Ps;|avsCg{>Sfk#{ zAILk!Db1soi$970xJ$H&!?4aZyL)>uH?lP5L`u?a>NqwJwqBJUvMN4mHJa1`A0~KB z8Yyfd7v34B?yq$w+cOWfH;2CP)ndl_VNM_n9$i(D_3%XCxkZ~cM7_nT(M%w8s%Mvd zANRR8ZxGY}1>^)^xvY+Rv(Rn7@JAX3Z|2eR=km)-0m}BoZ@L^5{aD-j|C)pdNPb@Q zaEfPKAdAh^gyE`e91z8{u@F=dAA(#Ds&E75SE{231=yRLO``mu`fLhq2MmXNA&9tC z#wbx--^9oN4xRz7a)Jxpgk=~If|R}U$){zRn3r6+7$OuLCvgRA4t@wyT^(u*sgjK2 zch=?%i+D2}^xF_#4H_>s+5MA4VIerZV1D(Yg*_7-D7s31+7FJD+(?oi+3m=>SrjPC zQknA?BO*qq-SBWv5d#=78^ng2Sk&|(YT?Zx^=9NWSUw_QS)76>Ecljpe0IZ);!mO3 ztY09c5>|YQ|7M54L4shZlITnx{llOo9R`@poG%U`qOsqHqe{3w2SOXK`bFq+bE#Rm z*cZpx=$OJPWj@tAEB-Sci`fgZ+})*8U1vlR+b~AM$6yNElFr**#!7AR^x=cQj)9O^ z$|f%bsd5WLtywNjD_QMN+q5%fF*#c(J!2@MjP2;Al)r3T^|Xrix@>e*M(H64WWE_} zHH}+;p^^~e!<_Yqa1I;Kjoktp5_eWh<%TiC!%d`;X1MWuhV{N+>9qXcKXIXlSvK_R z+56*w9(Z2;qa?y(g7(rLi{@{-9pSzq*NHgtr|MBUP`sS$6%*m{2Nej?5$a>u<}}*T++ly*DrJ`X0=#-2T?z-aN>*N@=Rd!Y(8j0P*EJz`PqSn zNYfku2EUj2L6z}Lihif77cVWgV^|05xUdLA6eH$MUKJvt>j!l&czR zAIi)>wV@nW3RovyZ^5d=bc}l|bPRgib#ygVwF6F!VUNNdCkOLMA&5rCNcIT?pfrs zfQQZXr*D^w)nzBGnoOZ_TJzEk`&lE84U%5XqzyIuyYk(Em;C(n0#hga(8b_is= z?~AyM$*WNH?8pZ}ymLPWPDXajfTecX3ePUr{#7uAt9v63IoKXL{%VM#bETiJ5#YXO zuW+x4t5LIjF~?B)MjiVU!h?W z$2L06#esl2%WqsT4cseN8e-6NRRXp%yUSB0V{9bB70IY*{d#`n)fDUa(@3ys-s&gM zydrgf4(h;ygIf3NvOqNit7!SE&r!@SkJ1m|N&hcKt?LBxqhKNTF2o+PjgeI8W?&r& zvxGd}@ygQo88z9bs7$iCgm3`VVZF8gKE&J{`ClmsHXys~JmH29<8k)S2+$(b!t~zT zKY-PU#&+<2cHa#;TjvVjFmmc%4nn^D*Z&0&rXzMt!=WST?vySM@=?a%vpRw_h2}x- z`S$@1m{k+dt7<#A*aEh8c$NLj0T5iNh;fbIfw(b?6u+9>xP%H0H;1E`QQ8~jJ5A@u znfBN>BsOF>1d+qkW&>OzemBqEt{WgB?oPx44=p)tT*^ly_h2j3CJ$b;Rv97s@ zuiE_x$k7az?A2WfO_l6AJd2D{Wv((=-DBNQ$o@%_i_O;uyhdelIGYr+%U?NjrctVe zh9}&wU9b)`g$*q7fIU24^lvU5u6r>aLgoMMIaeG)EN_adHfvMk!G_H2w}g+AgDXVd zzJj(1q5@ft{J2U*V@g)cdub|Qc+`J{H)>49hlKZOq=@vQMfM)p#ho8Nou&WFTMg$p z`Dm)PL%(-C-}O_xz=on-JpTqmm=;w8I*&B*@KV!VOsL%D`P93Q7QN`z`km0CU(p(@)dy)<#LV2Rcq-~4d4cyLGd``i5g3yrL3|tR-0ba;@!W4A#O*?R@cKmv?T|cb zQrh2tWHDJOVZ|?<20bw)7Yr9`&(!~wwOi?DA(~FBk)DdUqWClJe7df7V%Dp*OzCw2 z4`!_hgUPX@2F?F4k|I_1LK0f(N$@f4-z_Ftg$LF~$6g&RIAlW-M`fuyM5u#?Qy1hrB)4A52y!jK)9w{8en0g6axW@7av(5OnLUG8|I>J@x1%f46?NE*Epss3MU_Y`Gk;T^MUAh+_Bm*Cp z{z(2kp-t$I-nncBj!*IC`Ep*rF5fH%auj_eF?gcUSD?c$xxNBMlO=XAMatDQe_K^1 zA@egPH~!8JdLN@``e={)>bX6q8o&+BJ?b*ZeBEm-u8`KpdxDGT!_$2oO+dXKU79vl z7uUVDkG3S`B$0IRi*n)#KL^)HYi5`!o=>&&`*7|R9y&KR&?RrX6fSQMa`O%8^Kc@C z61&T0&|5lGLp11U{Y`7iEq!pLA~#ak+IlhA34fXjt&}ASAiREV6ZS98h0Tiw4v*a+ z&?ki$k{|p677IN6x`2(2Fw2?c(@qh)T&1Tqi?*PKTqF)nUL}GyVWv~2siZ6bN5c1; z&KuzberXTUPEpP&59>rHu_!4>2KPotxwc+?MjL(i*5;=ot26ZQ+&F%(W;3!u^G}X@ zS`y5BE&c<*E{1TixH~Ivw_dj`x`X6^snJPX!6 z3>9;LVZpj1)8t8Q0w{&S4&BhEhk*VcSU4{v{3}jT&sORWWXgm*3RS?N;V46v#a&Pd zNDY(|zBJoJ;?ZTV6iIB>99&WleZ%4aqK>>f_>)2tGz`Tw*oCY@4kZmiZT9EZ>R76I z_6*N0AGn!b7*flGlFa@&0;&-=MBE|29>7}7Fif4)?L2_~m`H)Air0-G7To%~Tqy1V zi(lsPYS5X!SHfGL6VS%rp#_5n zM`2FZ595@t#{(}g!i49=lB%w$)8B`#36#b@lqN%ZA(bTp-;VejCCXziqOMCTh>2Lm zdP)~$FEcc_uk>F`pmpQKLhLDR%FteYN;07Xr?(G6cpuP4GJOb3OVcaXGl@l8|CSy; zwRwpDC&=(xoM~B%cwa0P(Bpej;jtmofRZ12_(*ssMuu_~fji-<4$AqT^vH_~eo7V7 zpBns7cjL;2dY_maTo%skY6?rRb?VIQ^!K%mvu`GCmTD>Fowy>>=u(Da4)b>v3I+7+ z=f#l)HgWM~>oAJh5+e|!ge@rE+8Rmyn=m($)?7cjs}fJxs17}94dPEUvFad7CT#s( zt3y$@>Hy2%Iuc5A4g!|*b2L!YoF6>xF?I&oZ%IUhxeGstL2lqEG4Ua)8t2)|P<7;kI@sQlv!!)Me&=~CsI+k|cai`7vY?|`_g%ntguiG`Vev0ShVj{mIUtuP?FU(KK z?mnGyrVk{F$TI-I?VXFwKUm<^pJGb_)f1(XUX6O=CP<6k-NhxVx=F}tBFeHdp_A7d zomjF`F0dH^^1ztJycN0aOL*4P63h!JN9LRMcLdS;u9-s$%m<;oS)VkemCm)*s zva?^{UO`4YAD$NT`uH6a6V5`q4eUpBfufgN(pc|-b&M*6ESWxrBoTIGI?H$#xv_JO zOM8zyod)4N@Q;0FBs+Z{z9KuN8njOfJiWwuUR5+>5_L)O6T{L8-&YP<{t+5$XGsR3 z{P97@H?k2HtTdZ!W=W2{~#byd-ELjr%s^kY}saP>bpf_sdr9Rd_*Sz-&_0f099uso>&)AOT=| zjTU{IcQFOvC*+6AIj2ZboJ@3Qx%Yh3bYToDUX3o6`wF(K0VS>PG^io*nQupp1|eG zH%z@i+IDROJT}p%SXJwEZf@Q%G#Bg)Ka@sSGKYh8pjxN2*bbS;m0Q-h=ES?iJ?an5 zDL87oH<(m(PzjP}sRu7W)81VxfSoP!^C}6+gg^;o4Em(|*xr@H*?wo;lyb?#Ki`br z${pzww3<$MQ&AAl9LG7$;cuGaGTUE{k;B#Oxdiop!s*3FP#Pv`RxqAPiXBW2`Ajwxxvr0THilbM@~M+<5d2`aMVlhGUV#Y=_ta9SyJWi~ zXSIc+Q9{Noi>OhxaPV1mclH*H7`C`R=^p>RCOXB7bLSzUO?anDzbKBHSE;Eubz)CR z2yHEk=cOcm-8CSX6J8SxzScxp@s1@51DRv&gkd)zY444^uwMin;jA41ak ze@;kzJ}BDS>tyNoIv*$9f6Bf)nAdN={?Yl4@xunTb~Ql;on(c;{0c~S4uIX{FB25ekY8imrB8b zVj^dSzMCFVewT#092fs1g8WjU#d-*Bn4LN6PVH z>^$Y3xp{dJ){_hRo62*qZ{yC@z1aUP^CUnL{`^9K69&>`JsT(A>YJvBw@XxK${g-I4@SAGv{DUdO4b3{n@DZ^Tq0e=$`px z-EgLGuif30_?xiG#G&T=%_|!kb1eV7`l>?bmhnhYwv!r58NE`|zP(lopZ^#%dNq!8 zHo)-|)iF1oZNteUEPcwS^0Ssy-48aEpLggUSlyvlloZBoz?AV@Qlz)_#WzKA zUgTzv-lRP~)#_=t7>Z-V4e2)5-Su;34d_}uSI+Md_x<`vZ~oxw2&2(}f;^{SvSiuBr!U5dio7UmwfgG6_V2Gtz02 z{>Iq%y9`Dx&GRS+8UuU-vYZn8pvUaWPx_Atpz2XrLkT>Ri=UYWG)Qv5be1(78LNqwuaeQ1ZgeB~BBVVn*!3PriXQKwPRY9IVsUX0x47s_(b`xf53R0FAK z3=_fJrOX15aUsh9_WTP$T&3IXI&2^&?1yU%NCs;W`nvMut1<%Zsezi2nC_VRxgj~% zod&K2#K9c&dUeRgAq!2RJkN#6rcPzj%BI0VZnx+HAINScD)S3Q7j}$*7jQvoa7P}MJqk&? zy_lcgvsk<(N06mNXJe<+uqGdyy&+OXTaY>NuWH3xrKRl!yx?tr#Dn-0)~gXrvnEOe zAy_->VKVCrxL9y;phdtd=G=T@o6acumUKaG5Bb)7_+=rZqMzMG&F6-CyVq#yt+}kr z7BE%VnsK-8xPC_iME*j;9vm##u#^ViqZ!G(`3wo&qh4C1LE+G}VfLXd!WNS96`&vQ zZUE`5*ls@JU5s!+&-T#%y5v@5{B?k_wC_T)!J)Py5SsBkz2v|gH2b3cgjt<;&qrFp zV%33F*8J$b-(45CZ5DR838`N&F{n{ucf}cT$?et(H1)!+ASGd>fAbsPp8}zL2dK7W zaE{g(Z6ggjlOd))f%S}d!W5ZzHI|QCnbW)5`%KtQ@hYjDoj`-TIw z>j=z;ZDS9wT>%f;?*2s0k`KcI!C#@|{GwcJv(twBW9h)Rt0~ugwNu5Aa7}lL#4^n! z^kTAJxaNRa*&Dx&soOd4Qzeq%;!1) zP%AHzSPR!LKpZjs+%iTsSgJGP%F*eXvd$>O!brPo?cz0dJC8aa`G*YG+1_ztDjhZT zcbi-@_;uO7sjs_8Rp@pvHSWdO{p~VLw7PJC?T8x4*`yb;Zd~*@_VKs%eCFKDgF%ZT zCn_{n=ViqG-QBEn;0|+iTc!iYFS|MYPU{ve&Jt)u(N-)av9zs$2h6a3yOT4LDL@$P zG)T_jf+rrA{Lj|J^M+yPRq>PQn-zQ<+ye!8n!?3|mPFhLt`8^H5-tAyZ^DeDHd(^z za@qayv)tvk*o(F@2w#^Np9~3iU0Q_p%*z_UTKW}tEL}A9TC;v3o$&AP-rD}$%#l>6 z>~_7*0WT-85wUBIdpOj|=TUIOD8dO1N{OJ;| zLRz0XBsR^gv^0P@CB~FR%3swMpWT5>dC$v@6%wa!5*~K4A(#CNgjXcKy89s$RlA!t zIBn4_-1>VC0TwIda(vdQKcV-($A4Sk|8onJ(N7-#rIM%pc2XEP2njO2VQyG?9hvYy E091+C@Bjb+ literal 0 HcmV?d00001 diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..12d9f2f13b6a8ca69bc50e61212f79b43aec54d9 GIT binary patch literal 11506 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 Q;e7}9`~S@PDdyb&0AvbP-~a#s literal 0 HcmV?d00001 diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..d35d89039906bc2a54f4029104afd4c65ce695ea GIT binary patch literal 12682 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 literal 0 HcmV?d00001 diff --git a/packages/object-container/test/test.hbs b/packages/object-container/test/test.hbs new file mode 100644 index 0000000..46abb26 --- /dev/null +++ b/packages/object-container/test/test.hbs @@ -0,0 +1,14 @@ +
+

Lorem Ipsum

+

Contained content.

+
+ +
+

Lorem Ipsum

+

Contained content.

+
+ +
+

Lorem Ipsum

+

Contained content.

+
diff --git a/packages/object-container/test/test.scss b/packages/object-container/test/test.scss new file mode 100644 index 0000000..a0cbaba --- /dev/null +++ b/packages/object-container/test/test.scss @@ -0,0 +1,6 @@ +$o-container-sizes: ( + s: 32em, + l: 96em +); + +@import '../scss/index'; From 0733b064e582bd7a5916e50ba0b0ed96381b226f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 07:47:25 +0100 Subject: [PATCH 312/355] Use rem instead of em for conatiner sizing --- packages/object-container/README.md | 6 +++--- packages/object-container/package.json | 2 +- packages/object-container/scss/_mixins.scss | 4 ++-- packages/object-container/scss/_settings.scss | 2 +- packages/object-container/scss/index.scss | 4 ++-- packages/object-container/test/test.scss | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/object-container/README.md b/packages/object-container/README.md index aa5bd8d..b17446f 100644 --- a/packages/object-container/README.md +++ b/packages/object-container/README.md @@ -32,8 +32,8 @@ Activate size modifier classes via the `$o-container-sizes` map variable. ```scss $o-container-sizes: ( - m: 64em, - l: 96em + m: 64rem, + l: 96rem ); ``` @@ -50,7 +50,7 @@ $o-container-sizes: ( // Usage. .container { - @include o-container(64em, 1em); + @include o-container(64rem, 1rem); } ``` diff --git a/packages/object-container/package.json b/packages/object-container/package.json index 63ae41e..c83f205 100644 --- a/packages/object-container/package.json +++ b/packages/object-container/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/object-container/scss/_mixins.scss b/packages/object-container/scss/_mixins.scss index 4ddc421..8090e92 100644 --- a/packages/object-container/scss/_mixins.scss +++ b/packages/object-container/scss/_mixins.scss @@ -14,11 +14,11 @@ /// .element { /// margin-right: auto; /// margin-left: auto; -/// max-width: 64em; +/// max-width: 64rem; /// padding-right: 1em; /// padding-left: 1em; /// } -@mixin o-container($size: 64em, $horizontal-spacing: 1em) { +@mixin o-container($size: 64rem, $horizontal-spacing: 1rem) { margin-right: auto; margin-left: auto; diff --git a/packages/object-container/scss/_settings.scss b/packages/object-container/scss/_settings.scss index c380f6a..951b477 100644 --- a/packages/object-container/scss/_settings.scss +++ b/packages/object-container/scss/_settings.scss @@ -5,7 +5,7 @@ /// Default container size. /// @type Number -$o-container-size-default: 64em !default; +$o-container-size-default: 64rem !default; /// Container sizes. /// @type Map diff --git a/packages/object-container/scss/index.scss b/packages/object-container/scss/index.scss index d4b235f..064e98c 100644 --- a/packages/object-container/scss/index.scss +++ b/packages/object-container/scss/index.scss @@ -3,7 +3,7 @@ @import 'mixins'; .o-container { - @include o-container($o-container-size-default, setting-spacing($o-container-vertical-spacing)); + @include o-container($o-container-size-default, setting-spacing($o-container-vertical-spacing, rem)); } @each $modifier, $size in $o-container-sizes { @@ -11,6 +11,6 @@ @warn 'Size #{$modifier} is the same as $o-container-size-default.'; } .o-container--#{$modifier} { - @include o-container($size, setting-spacing($o-container-vertical-spacing)); + @include o-container($size, setting-spacing($o-container-vertical-spacing, rem)); } } diff --git a/packages/object-container/test/test.scss b/packages/object-container/test/test.scss index a0cbaba..bdc4a02 100644 --- a/packages/object-container/test/test.scss +++ b/packages/object-container/test/test.scss @@ -1,6 +1,6 @@ $o-container-sizes: ( - s: 32em, - l: 96em + s: 32rem, + l: 96rem ); @import '../scss/index'; From d00d9f5d48a8ff20886538136ca4cd8d4c5593f8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 08:30:14 +0100 Subject: [PATCH 313/355] Remove the classname parameter from grid mixins because it makes it impossible to override the selector with selector importing. --- packages/object-grid/scss/_mixins.scss | 58 +++++++++++++++++--------- packages/object-grid/scss/index.scss | 25 +++++++++++ 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/packages/object-grid/scss/_mixins.scss b/packages/object-grid/scss/_mixins.scss index 02aab4c..331dc96 100644 --- a/packages/object-grid/scss/_mixins.scss +++ b/packages/object-grid/scss/_mixins.scss @@ -26,8 +26,6 @@ /// /// @param {Number [unit]} $gutter [1em] /// Gutter spacing size. -/// @param {String} $item-selector ['.o-grid__item'] -/// Grid item selector. /// /// @example scss - Usage /// .element { @@ -38,23 +36,14 @@ /// .element { /// margin-left: -1em; /// } -/// .element > .o-grid__item { -/// padding-top: 1em; -/// } -@mixin o-grid-horizontal-gutter($gutter: 1em, $item-selector: '.o-grid__item') { +@mixin o-grid-horizontal-gutter($gutter: 1em) { margin-left: -$gutter; - - > #{$item-selector} { - padding-left: $gutter; - } } /// Gutter vertical. /// /// @param {Number [unit]} $gutter [1em] /// Gutter spacing size. -/// @param {String} $item-selector ['.o-grid__item'] -/// Grid item selector. /// /// @example scss - Usage /// .element { @@ -65,15 +54,8 @@ /// .element { /// margin-top: -1em; /// } -/// .element > .o-grid__item { -/// margin-top: 1em; -/// } -@mixin o-grid-vertical-gutter($gutter: 1em, $item-selector: '.o-grid__item') { +@mixin o-grid-vertical-gutter($gutter: 1em) { margin-top: -$gutter; - - > #{$item-selector} { - margin-top: $gutter; - } } /// Grid item. @@ -92,3 +74,39 @@ flex-grow: 1; box-sizing: border-box; } + +/// Item gutter horizontal. +/// +/// @param {Number [unit]} $gutter [1em] +/// Gutter spacing size. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid-item-horizontal-gutter(1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// padding-left: 1em; +/// } +@mixin o-grid-item-horizontal-gutter($gutter: 1em) { + padding-left: $gutter; +} + +/// Item gutter vertical. +/// +/// @param {Number [unit]} $gutter [1em] +/// Gutter spacing size. +/// +/// @example scss - Usage +/// .element { +/// @include o-grid-item-vertical-gutter(1em); +/// } +/// +/// @example css - CSS Output +/// .element { +/// margin-top: 1em; +/// } +@mixin o-grid-item-vertical-gutter($gutter: 1em) { + margin-top: $gutter; +} diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 649c8ec..519557b 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -16,6 +16,13 @@ .o-grid__item { @include o-grid-item(); + + @if $o-grid-horizontal-gutter-default { + @include o-grid-item-horizontal-gutter(setting-spacing($o-grid-horizontal-gutter-default)); + } + @if $o-grid-vertical-gutter-default { + @include o-grid-item-vertical-gutter(setting-spacing($o-grid-vertical-gutter-default)); + } } @each $size in $o-grid-horizontal-gutter { @@ -24,6 +31,10 @@ } .o-grid--horizontal-gutter-#{$size} { @include o-grid-horizontal-gutter(setting-spacing($size)); + + > .o-grid__item { + @include o-grid-item-horizontal-gutter(setting-spacing($size)); + } } } @@ -32,6 +43,11 @@ @media (min-width: setting-breakpoint($breakpoint)) { .o-grid--horizontal-gutter-#{$size}\@#{$breakpoint} { @include o-grid-horizontal-gutter(setting-spacing($size)); + + // stylelint-disable-next-line max-nesting-depth + > .o-grid__item { + @include o-grid-item-horizontal-gutter(setting-spacing($size)); + } } } } @@ -43,6 +59,10 @@ } .o-grid--vertical-gutter-#{$size} { @include o-grid-vertical-gutter(setting-spacing($size)); + + > .o-grid__item { + @include o-grid-item-vertical-gutter(setting-spacing($size)); + } } } @@ -51,6 +71,11 @@ @media (min-width: setting-breakpoint($breakpoint)) { .o-grid--vertical-gutter-#{$size}\@#{$breakpoint} { @include o-grid-vertical-gutter(setting-spacing($size)); + + // stylelint-disable-next-line max-nesting-depth + > .o-grid__item { + @include o-grid-item-vertical-gutter(setting-spacing($size)); + } } } } From 56696fcf8f465baef8547d8325156f61ed1d2dbc Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 08:30:39 +0100 Subject: [PATCH 314/355] Bump the grid packages version number --- packages/object-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 4bde294..29484fc 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.4", + "version": "4.0.0-alpha.5", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", From 1ce0e61f785491d9bb951dc8f33b8177faf934f5 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 11:38:22 +0100 Subject: [PATCH 315/355] Simplify the container object package --- packages/object-container/README.md | 5 +-- packages/object-container/package.json | 2 +- packages/object-container/scss/_mixins.scss | 32 +++++++++++------- packages/object-container/scss/_settings.scss | 24 ++++++++----- packages/object-container/scss/index.scss | 25 ++++++++++---- .../708650260_avalanche_0_document_0_s.png | Bin 9551 -> 12597 bytes .../708650260_avalanche_0_document_1_m.png | Bin 10550 -> 13431 bytes .../708650260_avalanche_0_document_2_l.png | Bin 11506 -> 14613 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 12682 -> 15790 bytes packages/object-container/test/test.hbs | 5 +++ packages/object-container/test/test.scss | 5 --- 11 files changed, 64 insertions(+), 34 deletions(-) diff --git a/packages/object-container/README.md b/packages/object-container/README.md index b17446f..db4d89a 100644 --- a/packages/object-container/README.md +++ b/packages/object-container/README.md @@ -28,10 +28,11 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ``` ### Sizes -Activate size modifier classes via the `$o-container-sizes` map variable. +Modify the container max widths via the `$o-container-max-widths` map variable. ```scss -$o-container-sizes: ( +$o-container-max-widths: ( + s: 32rem, m: 64rem, l: 96rem ); diff --git a/packages/object-container/package.json b/packages/object-container/package.json index c83f205..820a577 100644 --- a/packages/object-container/package.json +++ b/packages/object-container/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.2", + "version": "4.0.0-alpha.3", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/object-container/scss/_mixins.scss b/packages/object-container/scss/_mixins.scss index 8090e92..8cc5576 100644 --- a/packages/object-container/scss/_mixins.scss +++ b/packages/object-container/scss/_mixins.scss @@ -5,6 +5,13 @@ /// Basic container class to limit the max-width of the layout and add some padding. /// +/// @param {Number [unit]} $max-width [64rem] +/// Max width. +/// @param {Number [unit]} $spacing-horizontal [1rem] +/// Horizontal spacing. +/// @param {Boolean} $center-horizontal [true] +/// Horizontal centering. +/// /// @example scss - Usage /// .element { /// @include o-container(); @@ -12,21 +19,22 @@ /// /// @example css - CSS Output /// .element { +/// max-width: 64rem; +/// padding-right: 1rem; +/// padding-left: 1rem; /// margin-right: auto; /// margin-left: auto; -/// max-width: 64rem; -/// padding-right: 1em; -/// padding-left: 1em; /// } -@mixin o-container($size: 64rem, $horizontal-spacing: 1rem) { - margin-right: auto; - margin-left: auto; - - @if $size > 0 { - max-width: $size; +@mixin o-container($max-width: 64rem, $spacing-horizontal: 1rem, $center-horizontal: true) { + @if $max-width > 0 { + max-width: $max-width; + } + @if $spacing-horizontal > 0 { + padding-right: $spacing-horizontal; + padding-left: $spacing-horizontal; } - @if $horizontal-spacing > 0 { - padding-right: $horizontal-spacing; - padding-left: $horizontal-spacing; + @if $center-horizontal { + margin-right: auto; + margin-left: auto; } } diff --git a/packages/object-container/scss/_settings.scss b/packages/object-container/scss/_settings.scss index 951b477..1a2cd75 100644 --- a/packages/object-container/scss/_settings.scss +++ b/packages/object-container/scss/_settings.scss @@ -3,14 +3,22 @@ /// @author Markus Oberlehner //// -/// Default container size. -/// @type Number -$o-container-size-default: 64rem !default; - -/// Container sizes. +/// Container max widths. /// @type Map -$o-container-sizes: () !default; +$o-container-max-widths: ( + s: 32rem, + m: 64rem, + l: 96rem, +) !default; + +/// Default container size. +/// @type String +$o-container-default-size: m !default; -/// Vertical spacing. +/// Horizontal spacing. /// @type String -$o-container-vertical-spacing: m !default; +$o-container-spacing-horizontal: m !default; + +/// Horizontal centering. +/// @type Boolean +$o-container-center-horizontal: true !default; diff --git a/packages/object-container/scss/index.scss b/packages/object-container/scss/index.scss index 064e98c..cf0121e 100644 --- a/packages/object-container/scss/index.scss +++ b/packages/object-container/scss/index.scss @@ -3,14 +3,27 @@ @import 'mixins'; .o-container { - @include o-container($o-container-size-default, setting-spacing($o-container-vertical-spacing, rem)); + @include o-container( + map-get($o-container-max-widths, $o-container-default-size), + setting-spacing($o-container-spacing-horizontal, rem), + $o-container-center-horizontal + ); } -@each $modifier, $size in $o-container-sizes { - @if $size == $o-container-size-default { - @warn 'Size #{$modifier} is the same as $o-container-size-default.'; +@if map-has-key($o-container-max-widths, s) { + .o-container--s { + @include o-container(map-get($o-container-max-widths, s), 0, false); } - .o-container--#{$modifier} { - @include o-container($size, setting-spacing($o-container-vertical-spacing, rem)); +} + +@if map-has-key($o-container-max-widths, m) { + .o-container--m { + @include o-container(map-get($o-container-max-widths, m), 0, false); + } +} + +@if map-has-key($o-container-max-widths, l) { + .o-container--l { + @include o-container(map-get($o-container-max-widths, l), 0, false); } } diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index bda98d9e3e83a0454b96260cd84ec3ab1b19eb25..e1971da3212261b3e6ce71b7edd1bf0b738ab1ae 100644 GIT binary patch delta 12077 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 diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png index 2e4c9bac593619265f383b44862e2ac0e594f808..e12cbe56b48362fd1318e89fa8f8a4eb641ec7e3 100644 GIT binary patch literal 13431 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 literal 10550 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 E091+C@Bjb+ diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png index 12d9f2f13b6a8ca69bc50e61212f79b43aec54d9..effd1c06067d719ac872f867e7e4fb9cd14cbc0e 100644 GIT binary patch literal 14613 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 G-hTtC{bN4> literal 11506 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 Q;e7}9`~S@PDdyb&0AvbP-~a#s diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png index d35d89039906bc2a54f4029104afd4c65ce695ea..bd18995288f5b6776a808dd083fb97fd0ac11434 100644 GIT binary patch literal 15790 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 ZWjU$5cMEHA$npk94~HCL9yoRBe*uNHc5wgz literal 12682 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 diff --git a/packages/object-container/test/test.hbs b/packages/object-container/test/test.hbs index 46abb26..bf33a6f 100644 --- a/packages/object-container/test/test.hbs +++ b/packages/object-container/test/test.hbs @@ -8,6 +8,11 @@

Contained content.

+
+

Lorem Ipsum

+

Contained content.

+
+

Lorem Ipsum

Contained content.

diff --git a/packages/object-container/test/test.scss b/packages/object-container/test/test.scss index bdc4a02..313a442 100644 --- a/packages/object-container/test/test.scss +++ b/packages/object-container/test/test.scss @@ -1,6 +1 @@ -$o-container-sizes: ( - s: 32rem, - l: 96rem -); - @import '../scss/index'; From 6f68e985ccd02d7a3fadb16cd5eec8ceea13dddd Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 12:55:12 +0100 Subject: [PATCH 316/355] Simplify the grid object package --- packages/object-grid/README.md | 38 +-- packages/object-grid/package.json | 2 +- packages/object-grid/scss/_mixins.scss | 118 +++----- packages/object-grid/scss/_settings.scss | 31 +- packages/object-grid/scss/index.scss | 272 +++++++++++++----- .../708650260_avalanche_0_document_0_s.png | Bin 11111 -> 28687 bytes .../708650260_avalanche_0_document_1_m.png | Bin 12081 -> 30236 bytes .../708650260_avalanche_0_document_2_l.png | Bin 13194 -> 31352 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 14364 -> 32591 bytes packages/object-grid/test/test.hbs | 64 ++++- packages/object-grid/test/test.scss | 10 - 11 files changed, 315 insertions(+), 220 deletions(-) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index d6554a3..bfa7f11 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -21,6 +21,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Demo ```html +

Default gutter sizes.

Grid item 1
@@ -31,19 +32,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on
Grid item 3
+
+
Grid item 4
+
-``` - -### Gutter -Activate horizontal / vertical gutter modifier classes via the `$o-grid-horizontal-gutter` / `$o-grid-vertical-gutter` map variables. - -```scss -$o-grid-horizontal-gutter: (l); -$o-grid-vertical-gutter: (l); -``` - -```html -
+

X-large gutter size.

+
Grid item 1
@@ -57,22 +51,8 @@ $o-grid-vertical-gutter: (l);
Grid item 4
-``` - -### Gutter breakpoints -To activate gutter breakpoint modifier classes, use the `$o-grid-horizontal-gutter-breakpoints` / `$o-grid-vertical-gutter-breakpoints` map variables. - -```scss -$o-grid-horizontal-gutter-breakpoints: ( - l: (m), -); -$o-grid-vertical-gutter-breakpoints: ( - l: (m), -); -``` - -```html -
+

Default horizontal gutter with x-large vertical gutter size.

+
Grid item 1
@@ -95,8 +75,6 @@ $o-grid-vertical-gutter-breakpoints: ( // Usage. .grid { @include o-grid(); - @include o-grid-horizontal-gutter(1em, '.grid__item'); - @include o-grid-vertical-gutter(1em, '.grid__item'); } .grid__item { diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 29484fc..05fbf56 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.5", + "version": "4.0.0-alpha.6", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/object-grid/scss/_mixins.scss b/packages/object-grid/scss/_mixins.scss index 331dc96..fa876e8 100644 --- a/packages/object-grid/scss/_mixins.scss +++ b/packages/object-grid/scss/_mixins.scss @@ -7,6 +7,13 @@ /// Grid wrapper. /// +/// @param {Number [unit]} $gutter-horizontal [1rem] +/// Horizontal gutter size. +/// @param {Number [unit]} $gutter-vertical [1rem] +/// Vertical gutter size. +/// @param {Boolean} $layout [true] +/// Enable or disable returning layout properties. +/// /// @example scss - Usage /// .element { /// @include o-grid(); @@ -14,52 +21,33 @@ /// /// @example css - CSS Output /// .element { +/// margin-left: -1rem; +/// margin-top: -1rem; /// display: flex; /// flex-wrap: wrap; /// } -@mixin o-grid() { - display: flex; - flex-wrap: wrap; -} - -/// Gutter horizontal. -/// -/// @param {Number [unit]} $gutter [1em] -/// Gutter spacing size. -/// -/// @example scss - Usage -/// .element { -/// @include o-grid-horizontal-gutter(1em); -/// } -/// -/// @example css - CSS Output -/// .element { -/// margin-left: -1em; -/// } -@mixin o-grid-horizontal-gutter($gutter: 1em) { - margin-left: -$gutter; -} - -/// Gutter vertical. -/// -/// @param {Number [unit]} $gutter [1em] -/// Gutter spacing size. -/// -/// @example scss - Usage -/// .element { -/// @include o-grid-vertical-gutter(1em); -/// } -/// -/// @example css - CSS Output -/// .element { -/// margin-top: -1em; -/// } -@mixin o-grid-vertical-gutter($gutter: 1em) { - margin-top: -$gutter; +@mixin o-grid($gutter-horizontal: 1rem, $gutter-vertical: 1rem, $layout: true) { + @if $gutter-horizontal > 0 { + margin-left: -$gutter-horizontal; + } + @if $gutter-vertical > 0 { + margin-top: -$gutter-vertical; + } + @if $layout { + display: flex; + flex-wrap: wrap; + } } /// Grid item. /// +/// @param {Number [unit]} $gutter-horizontal [1rem] +/// Horizontal gutter size. +/// @param {Number [unit]} $gutter-vertical [1rem] +/// Vertical gutter size. +/// @param {Boolean} $layout [true] +/// Enable or disable returning layout properties. +/// /// @example scss - Usage /// .element { /// @include o-grid-item(); @@ -67,46 +55,20 @@ /// /// @example css - CSS Output /// .element { +/// padding-left: 1rem; +/// margin-top: 1rem; /// flex-grow: 1; /// box-sizing: border-box; /// } -@mixin o-grid-item() { - flex-grow: 1; - box-sizing: border-box; -} - -/// Item gutter horizontal. -/// -/// @param {Number [unit]} $gutter [1em] -/// Gutter spacing size. -/// -/// @example scss - Usage -/// .element { -/// @include o-grid-item-horizontal-gutter(1em); -/// } -/// -/// @example css - CSS Output -/// .element { -/// padding-left: 1em; -/// } -@mixin o-grid-item-horizontal-gutter($gutter: 1em) { - padding-left: $gutter; -} - -/// Item gutter vertical. -/// -/// @param {Number [unit]} $gutter [1em] -/// Gutter spacing size. -/// -/// @example scss - Usage -/// .element { -/// @include o-grid-item-vertical-gutter(1em); -/// } -/// -/// @example css - CSS Output -/// .element { -/// margin-top: 1em; -/// } -@mixin o-grid-item-vertical-gutter($gutter: 1em) { - margin-top: $gutter; +@mixin o-grid-item($gutter-horizontal: 1rem, $gutter-vertical: 1rem, $layout: true) { + @if $gutter-horizontal > 0 { + padding-left: $gutter-horizontal; + } + @if $gutter-vertical > 0 { + margin-top: $gutter-vertical; + } + @if $layout { + flex-grow: 1; + box-sizing: border-box; + } } diff --git a/packages/object-grid/scss/_settings.scss b/packages/object-grid/scss/_settings.scss index 9ddab5c..9712965 100644 --- a/packages/object-grid/scss/_settings.scss +++ b/packages/object-grid/scss/_settings.scss @@ -3,33 +3,10 @@ /// @author Markus Oberlehner //// -/// Horizontal gutter default. +/// Default horizontal gutter. /// @type String -$o-grid-horizontal-gutter-default: m !default; +$o-grid-gutter-horizontal-default: m !default; -/// Horizontal gutter sizes. -/// @type Map -$o-grid-horizontal-gutter: () !default; - -/// The key of the associative map defines the gutter size, the value is a map -/// with breakpoint sizes for which horizontal gutter classes should be -/// generated. -/// @type Map -$o-grid-horizontal-gutter-breakpoints: ( - m: (), -) !default; - -/// Vertical gutter default. +/// Default vertical gutter. /// @type String -$o-grid-vertical-gutter-default: m !default; - -/// Vertical gutter sizes. -/// @type Map -$o-grid-vertical-gutter: () !default; - -/// The key of the associative map defines the gutter size, the value is a map -/// with breakpoint sizes for which vertical gutter classes should be generated. -/// @type Map -$o-grid-vertical-gutter-breakpoints: ( - m: (), -) !default; +$o-grid-gutter-vertical-default: m !default; diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 519557b..38efe22 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -4,79 +4,207 @@ @import 'mixins'; .o-grid { - @include o-grid(); - - @if $o-grid-horizontal-gutter-default { - @include o-grid-horizontal-gutter(setting-spacing($o-grid-horizontal-gutter-default)); - } - @if $o-grid-vertical-gutter-default { - @include o-grid-vertical-gutter(setting-spacing($o-grid-vertical-gutter-default)); - } + @include o-grid( + setting-spacing($o-grid-gutter-horizontal-default), + setting-spacing($o-grid-gutter-vertical-default) + ); } .o-grid__item { - @include o-grid-item(); - - @if $o-grid-horizontal-gutter-default { - @include o-grid-item-horizontal-gutter(setting-spacing($o-grid-horizontal-gutter-default)); - } - @if $o-grid-vertical-gutter-default { - @include o-grid-item-vertical-gutter(setting-spacing($o-grid-vertical-gutter-default)); - } -} - -@each $size in $o-grid-horizontal-gutter { - @if $size == $o-grid-horizontal-gutter-default { - @warn 'Defining the same size in $o-grid-horizontal-gutter as set for $o-grid-horizontal-gutter-default is redundant, remove "#{$size}" from $o-grid-horizontal-gutter'; - } - .o-grid--horizontal-gutter-#{$size} { - @include o-grid-horizontal-gutter(setting-spacing($size)); - - > .o-grid__item { - @include o-grid-item-horizontal-gutter(setting-spacing($size)); - } - } -} - -@each $size, $breakpoints in $o-grid-horizontal-gutter-breakpoints { - @each $breakpoint in $breakpoints { - @media (min-width: setting-breakpoint($breakpoint)) { - .o-grid--horizontal-gutter-#{$size}\@#{$breakpoint} { - @include o-grid-horizontal-gutter(setting-spacing($size)); - - // stylelint-disable-next-line max-nesting-depth - > .o-grid__item { - @include o-grid-item-horizontal-gutter(setting-spacing($size)); - } - } - } - } -} - -@each $size in $o-grid-vertical-gutter { - @if $size == $o-grid-vertical-gutter-default { - @warn 'Defining the same size in $o-grid-vertical-gutter as set for $o-grid-vertical-gutter-default is redundant, remove "#{$size}" from $o-grid-vertical-gutter'; - } - .o-grid--vertical-gutter-#{$size} { - @include o-grid-vertical-gutter(setting-spacing($size)); - - > .o-grid__item { - @include o-grid-item-vertical-gutter(setting-spacing($size)); - } - } -} - -@each $size, $breakpoints in $o-grid-vertical-gutter-breakpoints { - @each $breakpoint in $breakpoints { - @media (min-width: setting-breakpoint($breakpoint)) { - .o-grid--vertical-gutter-#{$size}\@#{$breakpoint} { - @include o-grid-vertical-gutter(setting-spacing($size)); - - // stylelint-disable-next-line max-nesting-depth - > .o-grid__item { - @include o-grid-item-vertical-gutter(setting-spacing($size)); - } - } - } - } + @include o-grid-item( + setting-spacing($o-grid-gutter-horizontal-default), + setting-spacing($o-grid-gutter-vertical-default) + ); +} + +.o-grid--s { + @include o-grid( + setting-spacing(s), + setting-spacing(s), + false + ); +} + +.o-grid--s > .o-grid__item { + @include o-grid-item( + setting-spacing(s), + setting-spacing(s), + false + ); +} + +.o-grid--s-horizontal { + @include o-grid(setting-spacing(s), 0, false); +} + +.o-grid--s-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(s), 0, false); +} + +.o-grid--s-vertical { + @include o-grid(0, setting-spacing(s), false); +} + +.o-grid--s-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(s), false); +} + +.o-grid--m { + @include o-grid( + setting-spacing(m), + setting-spacing(m), + false + ); +} + +.o-grid--m > .o-grid__item { + @include o-grid-item( + setting-spacing(m), + setting-spacing(m), + false + ); +} + +.o-grid--m-horizontal { + @include o-grid(setting-spacing(m), 0, false); +} + +.o-grid--m-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(m), 0, false); +} + +.o-grid--m-vertical { + @include o-grid(0, setting-spacing(m), false); +} + +.o-grid--m-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(m), false); +} + +.o-grid--l { + @include o-grid( + setting-spacing(l), + setting-spacing(l), + false + ); +} + +.o-grid--l > .o-grid__item { + @include o-grid-item( + setting-spacing(l), + setting-spacing(l), + false + ); +} + +.o-grid--l-horizontal { + @include o-grid(setting-spacing(l), 0, false); +} + +.o-grid--l-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(l), 0, false); +} + +.o-grid--l-vertical { + @include o-grid(0, setting-spacing(l), false); +} + +.o-grid--l-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(l), false); +} + +.o-grid--xl { + @include o-grid( + setting-spacing(xl), + setting-spacing(xl), + false + ); +} + +.o-grid--xl > .o-grid__item { + @include o-grid-item( + setting-spacing(xl), + setting-spacing(xl), + false + ); +} + +.o-grid--xl-horizontal { + @include o-grid(setting-spacing(xl), 0, false); +} + +.o-grid--xl-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(xl), 0, false); +} + +.o-grid--xl-vertical { + @include o-grid(0, setting-spacing(xl), false); +} + +.o-grid--xl-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(xl), false); +} + +.o-grid--xxl { + @include o-grid( + setting-spacing(xxl), + setting-spacing(xxl), + false + ); +} + +.o-grid--xxl > .o-grid__item { + @include o-grid-item( + setting-spacing(xxl), + setting-spacing(xxl), + false + ); +} + +.o-grid--xxl-horizontal { + @include o-grid(setting-spacing(xxl), 0, false); +} + +.o-grid--xxl-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(xxl), 0, false); +} + +.o-grid--xxl-vertical { + @include o-grid(0, setting-spacing(xxl), false); +} + +.o-grid--xxl-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(xxl), false); +} + +.o-grid--xxxl { + @include o-grid( + setting-spacing(xxxl), + setting-spacing(xxxl), + false + ); +} + +.o-grid--xxxl > .o-grid__item { + @include o-grid-item( + setting-spacing(xxxl), + setting-spacing(xxxl), + false + ); +} + +.o-grid--xxxl-horizontal { + @include o-grid(setting-spacing(xxxl), 0, false); +} + +.o-grid--xxxl-horizontal > .o-grid__item { + @include o-grid-item(setting-spacing(xxxl), 0, false); +} + +.o-grid--xxxl-vertical { + @include o-grid(0, setting-spacing(xxxl), false); +} + +.o-grid--xxxl-vertical > .o-grid__item { + @include o-grid-item(0, setting-spacing(xxxl), false); } diff --git a/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index 60affdd41f551ac9512e88bcf6cfc191dc8b6107..8368613a5707ce33260919d34cbe333552ae13e8 100644 GIT binary patch literal 28687 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 diff --git a/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png index 932e00b99a5b13e8b0ab080de042e5013a5729a7..4ba2a3487443c76a08de2cdd40d6888ff1d83458 100644 GIT binary patch literal 31352 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 CU>?N) literal 13194 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

dmL>Djl_3Bzy-Lc(;0m| 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 VV9>pmy7OuK^G@H@p1XecUjcj{EN%b* literal 14364 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

-
+
Grid item 1
@@ -25,7 +25,67 @@
-
+
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+ +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+ +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+ +
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+ +
Grid item 1
diff --git a/packages/object-grid/test/test.scss b/packages/object-grid/test/test.scss index dc7db7a..313a442 100644 --- a/packages/object-grid/test/test.scss +++ b/packages/object-grid/test/test.scss @@ -1,11 +1 @@ -$o-grid-horizontal-gutter: (l); -$o-grid-horizontal-gutter-breakpoints: ( - l: (m), -); - -$o-grid-vertical-gutter: (l); -$o-grid-vertical-gutter-breakpoints: ( - l: (m), -); - @import '../scss/index'; From 82e73ee6ab69b5b67f509051490e3fb55afc6dd8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 15:10:50 +0100 Subject: [PATCH 317/355] Add selector importing examples to the object packages, fixes #259 --- packages/object-container/README.md | 6 ++++++ packages/object-grid/README.md | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/packages/object-container/README.md b/packages/object-container/README.md index db4d89a..47318b9 100644 --- a/packages/object-container/README.md +++ b/packages/object-container/README.md @@ -17,6 +17,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on // Import just the mixin file. @import '~@avalanche/object-container/scss/mixins'; + +// Import just the classes you need. +@import '{ .o-container, .o-container--s } from ~@avalanche/object-container'; + +// Not a fan of the "o-" prefix? +@import '{ .o-container as .container } from ~@avalanche/object-container'; ``` ## Demo diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index bfa7f11..145f898 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -17,6 +17,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on // Import just the mixin file. @import '~@avalanche/object-grid/scss/mixins'; + +// Import just the classes you need. +@import '{ .o-grid, .o-grid__item } from ~@avalanche/object-grid'; + +// Not a fan of the "o-" prefix? +@import '{ .o-grid as .grid, .o-grid__item as .grid__item } from ~@avalanche/object-grid'; ``` ## Demo From 1c28b5427ffb5c5a679e9da19478db18b6923569 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 15:24:16 +0100 Subject: [PATCH 318/355] Remove breakpoint settings dependency from grid object package --- packages/object-grid/package.json | 1 - packages/object-grid/scss/index.scss | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 05fbf56..8ac4f47 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -18,7 +18,6 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-breakpoints": "^4.0.0-alpha.1", "@avalanche/setting-spacings": "^4.0.0-alpha.2" }, "main": "scss/index.scss" diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 38efe22..a4817d1 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -1,4 +1,3 @@ -@import '~@avalanche/setting-breakpoints'; @import '~@avalanche/setting-spacings'; @import 'settings'; @import 'mixins'; From 071d910aba506f08f4054d718b729768f6a9b8da Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 15:24:52 +0100 Subject: [PATCH 319/355] Simplify the with utility package --- packages/utility-width/README.md | 2 +- packages/utility-width/package.json | 2 +- packages/utility-width/scss/_settings.scss | 12 - packages/utility-width/scss/index.scss | 253 ++++++++++++++++++++- 4 files changed, 244 insertions(+), 25 deletions(-) delete mode 100644 packages/utility-width/scss/_settings.scss diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index 4366c88..cd6decb 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -55,7 +55,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/utility-width/scss/mixins'; // Usage. -.u-width-1/12 { +.width-1\/12 { @include u-width(6, 12); } ``` diff --git a/packages/utility-width/package.json b/packages/utility-width/package.json index a7ad04c..69559d3 100644 --- a/packages/utility-width/package.json +++ b/packages/utility-width/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.2", + "version": "4.0.0-alpha.3", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/utility-width/scss/_settings.scss b/packages/utility-width/scss/_settings.scss deleted file mode 100644 index de2cbc0..0000000 --- a/packages/utility-width/scss/_settings.scss +++ /dev/null @@ -1,12 +0,0 @@ -//// -/// @group Utility: width -/// @author Markus Oberlehner -//// - -/// Width base. -/// @type Number -$u-width-base: 12 !default; - -/// Width breakpoints. -/// @type Map -$u-width-breakpoints: (m) !default; diff --git a/packages/utility-width/scss/index.scss b/packages/utility-width/scss/index.scss index df323bb..580a8a2 100644 --- a/packages/utility-width/scss/index.scss +++ b/packages/utility-width/scss/index.scss @@ -1,19 +1,250 @@ @import '~@avalanche/setting-breakpoints'; -@import 'settings'; @import 'mixins'; -@for $size from 1 through $u-width-base { - .u-width-#{$size}\/#{$u-width-base} { - @include u-width($size, $u-width-base); +.u-width-1\/12 { + @include u-width(1); +} + +.u-width-2\/12 { + @include u-width(2); +} + +.u-width-3\/12 { + @include u-width(3); +} + +.u-width-4\/12 { + @include u-width(4); +} + +.u-width-5\/12 { + @include u-width(5); +} + +.u-width-6\/12 { + @include u-width(6); +} + +.u-width-7\/12 { + @include u-width(7); +} + +.u-width-8\/12 { + @include u-width(8); +} + +.u-width-9\/12 { + @include u-width(9); +} + +.u-width-10\/12 { + @include u-width(10); +} + +.u-width-11\/12 { + @include u-width(11); +} + +.u-width-12\/12 { + @include u-width(12); +} + +@media (min-width: setting-breakpoint(s)) { + .u-width-1\/12\@s { + @include u-width(1); + } + + .u-width-2\/12\@s { + @include u-width(2); + } + + .u-width-3\/12\@s { + @include u-width(3); + } + + .u-width-4\/12\@s { + @include u-width(4); + } + + .u-width-5\/12\@s { + @include u-width(5); + } + + .u-width-6\/12\@s { + @include u-width(6); + } + + .u-width-7\/12\@s { + @include u-width(7); + } + + .u-width-8\/12\@s { + @include u-width(8); + } + + .u-width-9\/12\@s { + @include u-width(9); + } + + .u-width-10\/12\@s { + @include u-width(10); + } + + .u-width-11\/12\@s { + @include u-width(11); + } + + .u-width-12\/12\@s { + @include u-width(12); + } +} + +@media (min-width: setting-breakpoint(m)) { + .u-width-1\/12\@m { + @include u-width(1); + } + + .u-width-2\/12\@m { + @include u-width(2); + } + + .u-width-3\/12\@m { + @include u-width(3); + } + + .u-width-4\/12\@m { + @include u-width(4); + } + + .u-width-5\/12\@m { + @include u-width(5); + } + + .u-width-6\/12\@m { + @include u-width(6); + } + + .u-width-7\/12\@m { + @include u-width(7); + } + + .u-width-8\/12\@m { + @include u-width(8); + } + + .u-width-9\/12\@m { + @include u-width(9); + } + + .u-width-10\/12\@m { + @include u-width(10); + } + + .u-width-11\/12\@m { + @include u-width(11); + } + + .u-width-12\/12\@m { + @include u-width(12); } } -@each $breakpoint in $u-width-breakpoints { - @media (min-width: setting-breakpoint($breakpoint)) { - @for $size from 1 through $u-width-base { - .u-width-#{$size}\/#{$u-width-base}\@#{$breakpoint} { - @include u-width($size, $u-width-base); - } - } +@media (min-width: setting-breakpoint(l)) { + .u-width-1\/12\@xl { + @include u-width(1); + } + + .u-width-2\/12\@xl { + @include u-width(2); + } + + .u-width-3\/12\@xl { + @include u-width(3); + } + + .u-width-4\/12\@xl { + @include u-width(4); + } + + .u-width-5\/12\@xl { + @include u-width(5); + } + + .u-width-6\/12\@xl { + @include u-width(6); + } + + .u-width-7\/12\@xl { + @include u-width(7); + } + + .u-width-8\/12\@xl { + @include u-width(8); + } + + .u-width-9\/12\@xl { + @include u-width(9); + } + + .u-width-10\/12\@xl { + @include u-width(10); + } + + .u-width-11\/12\@xl { + @include u-width(11); + } + + .u-width-12\/12\@xl { + @include u-width(12); + } +} + +@media (min-width: setting-breakpoint(xl)) { + .u-width-1\/12\@xl { + @include u-width(1); + } + + .u-width-2\/12\@xl { + @include u-width(2); + } + + .u-width-3\/12\@xl { + @include u-width(3); + } + + .u-width-4\/12\@xl { + @include u-width(4); + } + + .u-width-5\/12\@xl { + @include u-width(5); + } + + .u-width-6\/12\@xl { + @include u-width(6); + } + + .u-width-7\/12\@xl { + @include u-width(7); + } + + .u-width-8\/12\@xl { + @include u-width(8); + } + + .u-width-9\/12\@xl { + @include u-width(9); + } + + .u-width-10\/12\@xl { + @include u-width(10); + } + + .u-width-11\/12\@xl { + @include u-width(11); + } + + .u-width-12\/12\@xl { + @include u-width(12); } } From 95ca255e0a5128493f761444ecd70b19304e7d10 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 15:59:26 +0100 Subject: [PATCH 320/355] Add selector importing examples to the width utility package --- packages/utility-width/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index cd6decb..c0b5400 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -17,6 +17,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on // Import just the mixin file. @import '~@avalanche/utility-width/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-width-12\/12, .u-width-4\/12\@m } from ~@avalanche/utility-width'; + +// Not a fan of the "u-" prefix? +@import '{ .u-width-12\/12 as .width-12\/12, .u-width-4\/12\@m as .width-4\/12\@m } from ~@avalanche/utility-width'; ``` ## Demo From 5c66044dfecf1dc0f914d0b51d4d353e835441ce Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 8 Dec 2016 19:56:32 +0100 Subject: [PATCH 321/355] Split the grid object demo into three sub sections --- packages/object-grid/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index 145f898..b710c7f 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -26,8 +26,8 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ``` ## Demo +### Default gutter sizes ```html -

Default gutter sizes.

Grid item 1
@@ -42,7 +42,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on
Grid item 4
-

X-large gutter size.

+``` + +### X-large gutter size +```html
Grid item 1
@@ -57,7 +60,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on
Grid item 4
-

Default horizontal gutter with x-large vertical gutter size.

+``` + +### Default horizontal gutter with x-large vertical gutter size +```html
Grid item 1
From 47d515054462dc64fd65121f54e0ff65be02d690 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 9 Dec 2016 17:10:40 +0100 Subject: [PATCH 322/355] Update the box sizing reset generic module for 4.x and add test. --- packages/generic-box-sizing-reset/.gitignore | 3 - packages/generic-box-sizing-reset/.npmignore | 1 + packages/generic-box-sizing-reset/LICENSE | 340 ------------------ packages/generic-box-sizing-reset/README.md | 24 +- .../generic-box-sizing-reset/package.json | 22 +- .../generic-box-sizing-reset/scss/_index.scss | 19 - .../scss/_mixins.scss | 31 ++ .../scss/_style_guide.scss | 8 - .../scss/_variable.scss | 13 - .../generic-box-sizing-reset/scss/index.scss | 3 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 687 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 1319 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 2200 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 3336 bytes .../generic-box-sizing-reset/test/test.hbs | 1 + .../generic-box-sizing-reset/test/test.scss | 1 + 16 files changed, 62 insertions(+), 404 deletions(-) delete mode 100644 packages/generic-box-sizing-reset/.gitignore create mode 100644 packages/generic-box-sizing-reset/.npmignore delete mode 100644 packages/generic-box-sizing-reset/LICENSE delete mode 100644 packages/generic-box-sizing-reset/scss/_index.scss create mode 100644 packages/generic-box-sizing-reset/scss/_mixins.scss delete mode 100644 packages/generic-box-sizing-reset/scss/_style_guide.scss delete mode 100644 packages/generic-box-sizing-reset/scss/_variable.scss create mode 100644 packages/generic-box-sizing-reset/scss/index.scss create mode 100644 packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/generic-box-sizing-reset/test/test.hbs create mode 100644 packages/generic-box-sizing-reset/test/test.scss diff --git a/packages/generic-box-sizing-reset/.gitignore b/packages/generic-box-sizing-reset/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/generic-box-sizing-reset/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/generic-box-sizing-reset/.npmignore b/packages/generic-box-sizing-reset/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/generic-box-sizing-reset/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/generic-box-sizing-reset/LICENSE b/packages/generic-box-sizing-reset/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/generic-box-sizing-reset/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/generic-box-sizing-reset/README.md b/packages/generic-box-sizing-reset/README.md index fb5057e..edbad0d 100644 --- a/packages/generic-box-sizing-reset/README.md +++ b/packages/generic-box-sizing-reset/README.md @@ -1,21 +1,29 @@ -# avalanchesass_base_box_sizing_reset +# @avalanche/generic-box-sizing-reset Box sizing reset. +- [Documentation](https://avalanche.oberlehner.net/documentation/#generic: box-sizing-reset) + ## Install -``` -npm install avalanchesass_base_box_sizing_reset --save +```bash +npm install @avalanche/generic-box-sizing-reset --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_base_box_sizing_reset'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/generic-box-sizing-reset'; + +// Import just the mixin file. +@import '~@avalanche/generic-box-sizing-reset/scss/mixins'; ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json index da875a3..d69d0ad 100644 --- a/packages/generic-box-sizing-reset/package.json +++ b/packages/generic-box-sizing-reset/package.json @@ -1,25 +1,21 @@ { - "name": "avalanchesass_base_box_sizing_reset", + "name": "@avalanche/generic-box-sizing-reset", "description": "Box sizing reset", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.1", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/generic-box-sizing-reset" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_base_box_sizing_reset/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "main": "scss/index.scss" } diff --git a/packages/generic-box-sizing-reset/scss/_index.scss b/packages/generic-box-sizing-reset/scss/_index.scss deleted file mode 100644 index 40fc8b8..0000000 --- a/packages/generic-box-sizing-reset/scss/_index.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import 'avalanchesass_base_box_sizing_reset/style_guide'; -@import 'avalanchesass_base_box_sizing_reset/variable'; - -@if $base-box-sizing-reset { - /* extract base.css */ - /* extract base_box_sizing_reset.css */ - html { - box-sizing: border-box; - } - * { - &, - &::before, - &::after { - box-sizing: inherit; - } - } - /* end extract base_box_sizing_reset.css */ - /* end extract base.css */ -} diff --git a/packages/generic-box-sizing-reset/scss/_mixins.scss b/packages/generic-box-sizing-reset/scss/_mixins.scss new file mode 100644 index 0000000..3fe3ff3 --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/_mixins.scss @@ -0,0 +1,31 @@ +/// Box sizing reset. +/// +/// @group Generic: box-sizing-reset +/// @author Markus Oberlehner +/// +/// @example scss - Usage +/// @include generic-box-sizing-reset(); +/// +/// @example css - CSS Output +/// html { +/// box-sizing: border-box; +/// } +/// +/// *, +/// *::before, +/// *::after { +/// box-sizing: inherit; +/// } +@mixin generic-box-sizing-reset() { + html { + box-sizing: border-box; + } + + * { + &, + &::before, + &::after { + box-sizing: inherit; + } + } +} diff --git a/packages/generic-box-sizing-reset/scss/_style_guide.scss b/packages/generic-box-sizing-reset/scss/_style_guide.scss deleted file mode 100644 index 523c32d..0000000 --- a/packages/generic-box-sizing-reset/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Box sizing reset -name: base_box_sizing_reset -section: Base ---- - -Better box model: [Paul Irish - * { Box-sizing: Border-box } FTW](http://www.paulirish.com/2012/box-sizing-border-box-ftw/) -*/ diff --git a/packages/generic-box-sizing-reset/scss/_variable.scss b/packages/generic-box-sizing-reset/scss/_variable.scss deleted file mode 100644 index 713d9fd..0000000 --- a/packages/generic-box-sizing-reset/scss/_variable.scss +++ /dev/null @@ -1,13 +0,0 @@ -@import 'avalanchesass_base_box_sizing_reset/style_guide'; - -$base-box-sizing-reset: true !default; -/*--- -title: Variable -name: base_box_sizing_reset_variable -section: base_box_sizing_reset ---- - -```css -$base-box-sizing-reset: #{$base-box-sizing-reset}; -``` -*/ diff --git a/packages/generic-box-sizing-reset/scss/index.scss b/packages/generic-box-sizing-reset/scss/index.scss new file mode 100644 index 0000000..3eb90e9 --- /dev/null +++ b/packages/generic-box-sizing-reset/scss/index.scss @@ -0,0 +1,3 @@ +@import 'mixins'; + +@include generic-box-sizing-reset(); diff --git a/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ddbdb1c0c54204d9b196a6b09f64480743ad8613 GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|?d>m{*k-%9;(t#9bfk$L90|U1(2s1Lwnj^u$ zz?A6e;uumf=k3*vf(;HlEF0TT-L;(ZLGpBii1m)bP1%e)1UY#aZAHSpsfNN84L^@EG9tHnWTUYVdQ0CXl!6(XmD^~W^hngz{sE= qKx<`~P97B*4S~@R7%3r;(90d=!(wywVCxo;mpxtmT-G@yGywqgDmZ)q literal 0 HcmV?d00001 diff --git a/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb5a57b3cebe03acf2a3b7ff2d3bb721550a2bd GIT binary patch literal 2200 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz$C-L1{AT3Jzfo@I14-?iy0WWg+Z8+Vb&Z8 z1_ll2Ib$b9y~KApXcZ5 znUVj1#x*>bjpqj{Z!qUb08&CM20)UN2_(b9$iu+k(8K_Akb)xvGXui}g$AJE9s&n| zN>m0yIndrwFd71*Aut*OqaiRF0;3^7NeI+DVS0L!#pbEUmAfEgJYD@<);T3K0RX2e BI|%>) literal 0 HcmV?d00001 diff --git a/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a0e15c795eae85180a08b2351767d9b677004f GIT binary patch literal 3336 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz_gfy4J5Mp+W{cOS>O>_%)r1c48n{Iv*t)J zF!1d1ba4!+nDh3AA)f<-fUD!2n*4K|0Ui|-XI6F3*S)_9sE;uCbGxeC!1%Yc^S`XL zym}s>h66j_zGehzEO0%*1f&#vhcE^5$0!&Lfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c dxDc3U$*^lGiw(QvnwKC)c)I$ztaD0e0svFoO1S_4 literal 0 HcmV?d00001 diff --git a/packages/generic-box-sizing-reset/test/test.hbs b/packages/generic-box-sizing-reset/test/test.hbs new file mode 100644 index 0000000..dc61020 --- /dev/null +++ b/packages/generic-box-sizing-reset/test/test.hbs @@ -0,0 +1 @@ +
diff --git a/packages/generic-box-sizing-reset/test/test.scss b/packages/generic-box-sizing-reset/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/generic-box-sizing-reset/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From abd7fdece76d402ee2e9ff58244519b9c1d99696 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 9 Dec 2016 19:19:30 +0100 Subject: [PATCH 323/355] Optimize the box sizing reset generic packages test code to be in line with other packages --- packages/generic-box-sizing-reset/test/test.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/test/test.hbs b/packages/generic-box-sizing-reset/test/test.hbs index dc61020..bc709f8 100644 --- a/packages/generic-box-sizing-reset/test/test.hbs +++ b/packages/generic-box-sizing-reset/test/test.hbs @@ -1 +1 @@ -
+
From 88820d67519e0b0dbf5d24b6b17491f847aa4090 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sat, 10 Dec 2016 17:28:58 +0100 Subject: [PATCH 324/355] Update the aspect ratio object package for 4.x and add test. --- packages/object-aspect-ratio/.gitignore | 3 - packages/object-aspect-ratio/.npmignore | 1 + packages/object-aspect-ratio/LICENSE | 340 ------------------ packages/object-aspect-ratio/README.md | 79 +++- packages/object-aspect-ratio/package.json | 22 +- packages/object-aspect-ratio/scss/_index.scss | 38 -- packages/object-aspect-ratio/scss/_mixin.scss | 29 -- .../object-aspect-ratio/scss/_mixins.scss | 93 +++++ .../object-aspect-ratio/scss/_settings.scss | 11 + .../scss/_style_guide.scss | 8 - .../object-aspect-ratio/scss/_variable.scss | 23 -- packages/object-aspect-ratio/scss/index.scss | 29 ++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 9483 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 13516 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 18488 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 24706 bytes packages/object-aspect-ratio/test/test.hbs | 23 ++ packages/object-aspect-ratio/test/test.scss | 1 + 18 files changed, 236 insertions(+), 464 deletions(-) delete mode 100644 packages/object-aspect-ratio/.gitignore create mode 100644 packages/object-aspect-ratio/.npmignore delete mode 100644 packages/object-aspect-ratio/LICENSE delete mode 100644 packages/object-aspect-ratio/scss/_index.scss delete mode 100644 packages/object-aspect-ratio/scss/_mixin.scss create mode 100644 packages/object-aspect-ratio/scss/_mixins.scss create mode 100644 packages/object-aspect-ratio/scss/_settings.scss delete mode 100644 packages/object-aspect-ratio/scss/_style_guide.scss delete mode 100644 packages/object-aspect-ratio/scss/_variable.scss create mode 100644 packages/object-aspect-ratio/scss/index.scss create mode 100644 packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/object-aspect-ratio/test/test.hbs create mode 100644 packages/object-aspect-ratio/test/test.scss diff --git a/packages/object-aspect-ratio/.gitignore b/packages/object-aspect-ratio/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/object-aspect-ratio/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/object-aspect-ratio/.npmignore b/packages/object-aspect-ratio/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/object-aspect-ratio/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/object-aspect-ratio/LICENSE b/packages/object-aspect-ratio/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/object-aspect-ratio/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/object-aspect-ratio/README.md b/packages/object-aspect-ratio/README.md index 7b0d734..5efa772 100644 --- a/packages/object-aspect-ratio/README.md +++ b/packages/object-aspect-ratio/README.md @@ -1,24 +1,83 @@ -# avalanchesass_object_aspect_ratio +# @avalanche/object-aspect-ratio Maintain aspect ratio. +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: aspect-ratio) + ## Install -``` -npm install avalanchesass_object_aspect_ratio --save +```bash +npm install @avalanche/object-aspect-ratio --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_object_aspect_ratio'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/object-aspect-ratio'; + +// Import just the mixin file. +@import '~@avalanche/object-aspect-ratio/scss/mixins'; + +// Import just the classes you need. +@import '{ /\.o-aspect-ratio(::before)?$/, .o-aspect-ratio--4\/3::before, .o-aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; + +// Not a fan of the "o-" prefix? +@import '{ /\.o-aspect-ratio(::before)?$/ as .aspect-ratio$1, .o-aspect-ratio__inner as .aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; +``` + +## Demo +```html +
+
+ Default (16/9) +
+
+``` + +### Ratios +```html +
+
+ 4/3 +
+
+
+
+ 16/9 +
+
+
+
+ 21/9 +
+
+``` + +### Settings +Modify the default aspect ratio via the `$o-aspect-ratio-default` map variable. + +```scss +$o-aspect-ratio-default: ( + width: 4, + height: 3, +); +``` + +## Mixins +```scss +@import '~@avalanche/object-aspect-ratio/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_object_aspect_ratio/mixin'; +// Usage. +.element { + @include o-aspect-ratio(16, 9, '.element__inner'); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/object-aspect-ratio/package.json b/packages/object-aspect-ratio/package.json index 81165c4..9c9d386 100644 --- a/packages/object-aspect-ratio/package.json +++ b/packages/object-aspect-ratio/package.json @@ -1,25 +1,21 @@ { - "name": "avalanchesass_object_aspect_ratio", + "name": "@avalanche/object-aspect-ratio", "description": "Maintain aspect ratio", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_object_aspect_ratio", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_aspect_ratio" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-aspect-ratio" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_aspect_ratio/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "main": "scss/index.scss" } diff --git a/packages/object-aspect-ratio/scss/_index.scss b/packages/object-aspect-ratio/scss/_index.scss deleted file mode 100644 index 2dfc5fa..0000000 --- a/packages/object-aspect-ratio/scss/_index.scss +++ /dev/null @@ -1,38 +0,0 @@ -@import 'avalanchesass_object_aspect_ratio/style_guide'; -@import 'avalanchesass_object_aspect_ratio/variable'; -@import 'avalanchesass_object_aspect_ratio/mixin'; - -@if length($o-aspect-ratio-sizes) >= 1 { - /* extract object.css */ - /* extract object_aspect_ratio.css */ - /*--- - title: Example - name: object_aspect_ratio_example - section: object_aspect_ratio - order: 1 - --- - */ - @each $-ratio in $o-aspect-ratio-sizes { - $-width: map-get($-ratio, width); - $-height: map-get($-ratio, height); - /*--- - title: Ratio: #{$-width}/#{$-height} - name: object_aspect_ratio_example_#{$-width}_#{$-height} - section: object_aspect_ratio_example - --- - - ```example:html -
-
- Ratio: #{$-width}/#{$-height} -
-
- ``` - */ - .#{$o-aspect-ratio-namespace}--#{$-width}-#{$-height} { - @include o-aspect-ratio($-width, $-height); - } - } - /* end extract object_aspect_ratio.css */ - /* end extract object.css */ -} diff --git a/packages/object-aspect-ratio/scss/_mixin.scss b/packages/object-aspect-ratio/scss/_mixin.scss deleted file mode 100644 index 9bf3a18..0000000 --- a/packages/object-aspect-ratio/scss/_mixin.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import 'avalanchesass_object_aspect_ratio/style_guide'; - -/*--- -title: Mixin -name: object_aspect_ratio_mixin -section: object_aspect_ratio -order: 2 ---- - -```css -// Aspect ratio. -o-aspect-ratio($-width, $-height[, $-inner-selector: '.#{$o-aspect-ratio-namespace}__inner']) -``` -*/ -@mixin o-aspect-ratio($-width, $-height, $-inner-selector: '.#{$o-aspect-ratio-namespace}__inner') { - position: relative; - &::before { - display: block; - padding-top: ($-height / $-width) * 100%; - content: ''; - } - > #{$-inner-selector} { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - } -} diff --git a/packages/object-aspect-ratio/scss/_mixins.scss b/packages/object-aspect-ratio/scss/_mixins.scss new file mode 100644 index 0000000..1b42598 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_mixins.scss @@ -0,0 +1,93 @@ +//// +/// @group Object: aspect-ratio +/// @author Markus Oberlehner +//// + +/// Aspect ratio before styles. +/// +/// @param {Number} $width [16] +/// Width. +/// @param {Number} $height [9] +/// Height. +/// +/// @example scss - Usage +/// .element::before { +/// @include o-aspect-ratio-before(); +/// } +/// +/// @example css - CSS Output +/// .element::before { +/// display: block; +/// padding-top: 56.25%; +/// content: ''; +/// } +@mixin o-aspect-ratio-before($width: 16, $height: 9) { + display: block; + padding-top: ($height / $width) * 100%; + content: ''; +} + +/// Aspect ratio inner styles. +/// +/// @example scss - Usage +/// .element__inner { +/// @include o-aspect-ratio-inner(); +/// } +/// +/// @example css - CSS Output +/// .element__inner { +/// position: absolute; +/// top: 0; +/// right: 0; +/// bottom: 0; +/// left: 0; +/// } +@mixin o-aspect-ratio-inner() { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +/// Maintain aspect ratio. +/// +/// @param {Number} $width [16] +/// Width. +/// @param {Number} $height [9] +/// Height. +/// @param {String} $inner-selector ['.o-aspect-ratio__inner'] +/// Selector for the aspect ratio inner element. +/// +/// @example scss - Usage +/// .element { +/// @include o-aspect-ratio(16, 9, '.element__inner'); +/// } +/// +/// @example css - CSS Output +/// .element { +/// position: relative; +/// } +/// .element::before { +/// display: block; +/// padding-top: 56.25%; +/// content: ''; +/// } +/// .element__inner { +/// position: absolute; +/// top: 0; +/// right: 0; +/// bottom: 0; +/// left: 0; +/// } +@mixin o-aspect-ratio($width: 16, $height: 9, $inner-selector: '.o-aspect-ratio__inner') { + position: relative; + + &::before { + @include o-aspect-ratio-before($width, $height); + } + + > #{$inner-selector} { + @include o-aspect-ratio-inner(); + } +} diff --git a/packages/object-aspect-ratio/scss/_settings.scss b/packages/object-aspect-ratio/scss/_settings.scss new file mode 100644 index 0000000..4a82816 --- /dev/null +++ b/packages/object-aspect-ratio/scss/_settings.scss @@ -0,0 +1,11 @@ +//// +/// @group Object: aspect-ratio +/// @author Markus Oberlehner +//// + +/// Container max widths. +/// @type Map +$o-aspect-ratio-default: ( + width: 16, + height: 9, +) !default; diff --git a/packages/object-aspect-ratio/scss/_style_guide.scss b/packages/object-aspect-ratio/scss/_style_guide.scss deleted file mode 100644 index 5ad9583..0000000 --- a/packages/object-aspect-ratio/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Aspect ratio -name: object_aspect_ratio -section: Object ---- - -Maintain aspect ratio. -*/ diff --git a/packages/object-aspect-ratio/scss/_variable.scss b/packages/object-aspect-ratio/scss/_variable.scss deleted file mode 100644 index 30be664..0000000 --- a/packages/object-aspect-ratio/scss/_variable.scss +++ /dev/null @@ -1,23 +0,0 @@ -@import 'avalanchesass_object_aspect_ratio/style_guide'; - -$o-aspect-ratio-namespace: '#{map-get($namespace, object)}aspect-ratio' !default; - -$o-aspect-ratio-sizes: ( - ( - width: 16, - height: 9, - ), -) !default; -/*--- -title: Variable -name: object_aspect_ratio_variable -section: object_aspect_ratio -order: 3 ---- - -```css -$o-aspect-ratio-namespace: '#{$o-aspect-ratio-namespace}'; - -$o-aspect-ratio-sizes: (nested-map); -``` -*/ diff --git a/packages/object-aspect-ratio/scss/index.scss b/packages/object-aspect-ratio/scss/index.scss new file mode 100644 index 0000000..c6c499c --- /dev/null +++ b/packages/object-aspect-ratio/scss/index.scss @@ -0,0 +1,29 @@ +@import 'settings'; +@import 'mixins'; + +.o-aspect-ratio { + position: relative; +} + +.o-aspect-ratio::before { + @include o-aspect-ratio-before( + map-get($o-aspect-ratio-default, width), + map-get($o-aspect-ratio-default, height) + ); +} + +.o-aspect-ratio--4\/3::before { + @include o-aspect-ratio-before(4, 3); +} + +.o-aspect-ratio--16\/9::before { + @include o-aspect-ratio-before(16, 9); +} + +.o-aspect-ratio--21\/9::before { + @include o-aspect-ratio-before(21, 9); +} + +.o-aspect-ratio__inner { + @include o-aspect-ratio-inner(); +} diff --git a/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5de5d06adda14d183151a0b6a0799caa3ff1ab GIT binary patch literal 9483 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 DMRL8w literal 0 HcmV?d00001 diff --git a/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1d02bc3dd57128b35d26f96ec6003d7956f325 GIT binary patch literal 13516 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 Q%{D$~0!}~qI`W7A1i*K%;{X5v literal 0 HcmV?d00001 diff --git a/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-aspect-ratio/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..7dde2ae76255e60bc518eb3648b8b9ca10232015 GIT binary patch literal 24706 zcmeHQc~Dbnw!bzi-7QK_>tLfS+6HI`gqE-<1fp##Mv&NJ%OXoqAi-vpJ#0}KWf%}7 z2nd0s6#*AO0R_U6;D$yZVNoC?5R{Oxh9wXPWO+9-uikrAv%GoLf6S}8w<>j0H}|`_ z`Q3AV=X}5Ool5E{XNS#S?)VY_fX%4mKmHK_);|V-FNL3P1dlw(nH>aoUxXcZj{ty8 zTUD=hKtbU*0I&-{{doB2*utqnLiylgB5%(1flsAhTnEGSetlH*R#%s?MbpNw^F1c7 z)HZGy{A{j(Yj`uH@5wXfm7?GA-)`I3etPEX^L;;+TU6-owYreLl^tBg`2I)N!;QsN zF)6O4q;E40x$bUg8}x^{axVhof_Vo?%H~%3ey?^8dt|r!5?L%yLMjSZg{LVjAq>39 zf4z~At=!nQ)gv@CBz^{kF3$2#luHGt&B$VLgtR#qXSs)rKA~?#daZtn?t}xaj!_k`m}quP(2%_JuPRo=uMjM*90q4=k8^6toTt zEQCZqQ{^-ZnboFVhn+9PZ3bqUUp)pcRW~3dQUtPLbSy3EpiCA-ro`G5uZlVzDSQG$ zbf;LOi95rW_gUTRU6yEs6ucoH$rN-ht7$i!i%Obq-Za$9&6P>$ESh?+5y~`4{8h!= z)Ij{QiMT(jlI8)oFwc70?9h8cms_HfbS}T8NVM#6OT?`cw!K&TQokc984JPVo$mAC>Al;;nF&- z^8y@!$WL^?1@qEpxJDE9%R_OK7-DU0t%Ygx@}FYLY8FcsLDEK7w9;oXO!2ESL&nV0 z^q-#h<*ZbCi(gHx_70At=etpwC$Y;7m#2aZm#!<8%BN>+-nZbVc50R?v(=;@XrVCo z!kj)+WcdAJ)l_Nc&(J3w!|1st54V+jctV@^wnvDPnr? z+o9rfrIr_W1+HX-SWaoT_o{WkDyH0e@=B6DveW&8G3Xt3f#HvH+S6xP1vK))!eU8R zfM3}1p|hygnBe1RG&*i$3OxTVHSkDW+)8&(jiEZu*^=Z^i=msm@MXNKWtDb~*^WwH zCfi#3Tgau>`qTFKKTG?ZsRq^5NhCH9&iKnBp7*Y<#`kq)x{m!hwc&QR=uCr$m5GU5 z$)4Mydj@u{1}JjEe17pvR)#K~8W!J8hKab9QNMy^JSFoQ*RZC}JYnD4LNtN#my!DMlX>LhxWTFMsx z^Q?yS5U-qRbzFD6xRtBOEHk&XA>yz^5s7{aDSvs#>Eub_yUB+G;?z}I;VV>wD~~i+ zru>7ogdBTF7P&>f7*PGOzy#lhd(Gm{rRX8%C;NL53m6*7jCV0UWXD)XXK$Cas6aM! z*<$-6mZcXX5P6b_Z6zOcDb>;$%vpXx(IF-FS@xCMc5vxS!yZK%K#T1UEuR6VKEcu! zVhM_MjY(w^TJywR7FJ2xfsg=KX8yK(&XZxoSP2QHwOglN?90sa)P3s>A z@9{<@>=7;6&v6)yA)&j;#+4K3>hB&=jz@KM=_Z%iT0Zn;5Sz>xciM(Xl}u*gyL)F@ zf;nuroYed}F=CkgL_oZYTs6ejjHKDlzgw2OXYsQ>#KX;tU=dQ0T4T-m!O)UDC>By# z=3u{c&CD+{&NQNDM4El_1&T=_t@35(nh1q z@*h@G=n_#np*g?Yt%z^~CKltB4)lUYNegAvg|`o##R>7fB67!K%95~lGQK)K=nts* zR)&jMxT2fl@I$8~(oXD^#=Q7$0}906b1`mlV#Q75t$bR}waGOi7cpB5Sc1u7MwvAx zA2wdU!bBwSes&pZwoPt}*0*+f{k$$Fzz#$i^$BIx=qe9Qe1%tjJVwUc&KntnVyGvsa zsyEORre>w%bUdu1ye%b9FMej?DTX0dt|0lZq>kPBRT}$r+xHAkiW^-iO_E8^pm=YoG#yH1&5Cvh;H0jMnhJ1Y0h!8#zy0aD4ehdJZ7$R=6( zOAp}9YQ{uFmOd@^V^La94c`tQ#9~JBqP%R-^#i>_Sr)dV1m=T@pSl@wSB|-PD&azX^>%DtP%P%q7bhLCdo&Yi4S}frXAKyG}&hH!E&> zaRC-74z*aHSPO=m;=J%UHhjvYoYE90s}lL5Wy16f(c4+cR!s+GPLr}P+rp#F{_`Zo zo3AUjCU>_q*mhIybLSmw!};->Nm7Ztn6WvA-_Xj#vi2~HT$9GOsX62Nt`V|0F=+pQ zw&S8Hq&?;-*>=88w_cE37OMsPx<$q9feC%rA~$mr`9~u>axp{4`?~$d>Epe!VY?&L z8ATR?9_s7OJJ@${)`49&7ejRN=M2^fayi!i!)<${A02kEk%*g5Nv%YuQ3;L4t%*Sd zH}_$El^^|ra4r?x8)?V}18W#QtY;7}xpS2|F+!*O9u+-gf9o=d%uL*wLM(q%Vn)9) zGs7#KbO|{@obp`E;?~gfpFDa~<`QF6>;XSeZ)B%WoBtE~UG7e0m?JTm4Ud!UC>JO? z#wY1}eNhD-NYZ4=HTaNCTvaiWXCpfl63fqsT=b;Sj$vx|H5;eIa0^|@GUrzFn}Lm) z!TNe%yZa*Y z9X*%`z9$yz%`kYB8S|yO)q>yq{!@lq2Jz0kW4GG8uilyfm&DUS>)Nz_0N+%?WAx%|lF@{{9-5T#151ici7N3k4fsq;wJ-U?O|`pe2!0&^oGQ4aI_uB{=tBqu z$PyrTfH(mnMkqQ!Ari_HKqiDhfIxsUV`zE+&5@vqA~aiuBm*!SLLmHI5LCIsZ?nxt zh%0Lbzqhqrtr7449dKzA+8ACTiF`sy@Q({O&x?#Ik&h*2Z#DBvdiLC8dIG_USP$HL z^xw;fX1OlW8d3h^Q64=ubKMJwro|Do@op^tH#OoJZ-I1N7%F3Z~cC1H3b~_D0 zAmcQEuyb3%8Zr|FSJuvCaLvQN^H|AlihMqrUp1xY=;FmG${4j43Le@H)mtb!t$W%} zS#kU0y;TEme;W8~$TAUsevn*_p&c+|6(uCj$E$aHHre+@>c)pQ93+0YOhRXpG9d)Wrv8T&)lOXEL|RSuM*XT2MwMvM$7wz;p{VN?pd(Y zjqosWZ+l_cK{Y`3Em(I0hW;|HHs0)y>$RIrZL->*m70p1r+c61E_`#kBh{&n_@s4y zv5Q}-iIJA7bKsA$!M&BdTMkAJ)eW|c{uuGyD;t2>+~(CHGN?#i^%1a@Sul3(10*M- zao%U+s$Tnq9a^Y~iC-%^)E33vkc?92M&#^+vgfS$1^}R+S`Uh!b-(()YS7ss&&$U= z-nB`Pou<`vi@yBsZBX09)apQ)_}Qx&hVNu_>1t(45B}Okfe>@t{02D#&Rq|*TnyU1 z9*8v_u<0J;kcLE}$fao9g{9w*yWNE4m6XL_uo2g>#mDCvIr?!US-l^o$0xypqC5qj z=Z8&j?G5=wP?;FW{Duku2gqPLFuPPW_9ipmh@M@gF*+c!4%YV!`>Eh`u{OqAD~PD1OXxi5Cn)6KoB5O06~CAK?TCU4JquBh>-6@E3}d2wl3`D z$h|S1RvOxQT0b=2&ARl;6jsvgWpMq1;$F#j2K(wuf_``Qii#p5imYz6bl=l42 zE7&&qi+cekw=--5hr6HraBR+p`m3i_W%@Pmrl0FukzD;!>A58Lx|gmCbIX%lF`lAH z5zl0c<(?1LR$~9Wrsd!J>$=0gO8S3Ymu;z1_JK>ktS!%e4;Ddw(`}eYoj9-7)6)~` znUM?tPe}Rs9WrTznMGFWvrYIpdZuvTj4?c6;O#rUpS^`SQEDV8H7paas0;o5p3PG0 zz^a+P_KqD5KE*59ZBbtVmyF-PyzL+c7vfjPy@m_(59B5G> zl4}u*ez_(dxpQEP)$RD2^8v7jRzYv74bsdbM=~_9teSlQfFf!(anu1IAUa^FR5pA6 zaBFM!C;={yi-VY$yp$=bZdb`Q}y?OkLaR~k`G-$12jXh^4FY#Gac;%fciVCr?)*qwpcj1m;Q`Q zU@#98M|X-{9rRhE!T9jmS$_VJ*R3_72 zt13wuI&JVwyLmy|ToHZ>Nyyb7O!5fverhrqol#U+kRV}bXoa+wIS~6Wj>N;Qm|Hef zd*RE|sb+G?`?i=!5b|`@Rkn1r8!`eUXeZp#V54|)kES1&Q{2;+lfNy3uH z!5e;UOT83JHK1j$>f2xGAjvTN=)TZL4U3X=L4ZO;iN+bC%-@V?rW*u?uqJL}MsKSz z_5~vG8Jo+haXmaiZK6Yss4|(2_ybs}^ZYXiMcBGzhZw(CV;$OP^L}Xs_i>0vMth+f z*cFT3GSg9@R)_N&-|W8s$+wMK!Hf@s7}gAB^+IcnX`h+>;_~nm|Mpb>6VoF{9K$)w z7$MClgHK-UYc}SACD{|I>!_~->ccw({qL0g_w8+Ou568Q?{LC?Z)cX~ z;5-;?X>0igPM0Ry(-sQSHCT2mZvdD<9yxMkd(h8ov@r7^ZG%bXSE^Frss9Ci{GWLT z8VFhhxEk(nk}?Di1db{;|D$mJcyLF{f35|9tmt3PdmtBsTA}o%`-#3?f1lTuN>y`nQ=U zndI9kH08k9B$(L+P^>H~eXjPQP( z4k@#Es}XL?^w7-?q-<$wC)!?C7Qv*lUe;t9q|LlBD%EEapL&S18n+1g&~`a0eG(px z1I1)qhF9s#dLYc;YgGfsg&X=ql0QnE5jmT!6Zd1z5*+k+bOTWHe7GI$T;WNGktqEF zk7YN7GZV4%3(1*&3%O_T7nI2;E$lR?1X3*!1t&RuFkepf(rmkd!XEtfrl90M?1@!= zOVUJ=&B)P5-_JfZu0}8%w6+u-jF&Ce=our%`(q{7jWCT#bE(z>+|Y$KeXqD+BA+Vs zUREBo29@O-pjC#MMx@jPbmea^M_*T3jG$ahl*^nU>^$2D?pD8_qKEP(>_ctTCY+n# zuM}=Y>(UlDuF4tQMj$p*_1lJW88S|(m;3V4(rB)~m?ywt#Wl^V)v{hQzXObJR-z%Q zIYg-`^vBR>UE~DDro&O*^XA0Yhr`vmyEb_-MmsIhgiJsmHu*(AriM(+*q(iv9=!CbiH8(rY$Y@^nvMp4x{W;9NX}@)aj{OXX;7p9_xo^<1eF8UD zT(m+viI~+}btn4!MO<5}sNN}+sBDEsMiR6_-4k6F3Tz1nHeJiMbDx7cG`@X{9&>CU7}d)!<5-P;=<{|oFG^fh7;Ead6MmUpo`W%r%LuUoSNzza z@U~tw*;jafioKA-t(^(z9gO;(htfG`lKm?UuS#)KANvKE`|nc#2nH9-vixiZ95m%+IB2H zwe1{QTcN*et=s3uTDQ;fwQirgYu!H3Fc3Qk5)cH)N4)3B;3N*oQ&~=m=0W z1wnu^1rP)%c>+OzNC5=lHz5Vpb^hKqU2y#c_}N#g{|NZ6a~#yFl_$<&HB33GW2mFf LKUV(WbLBq(=;Amq literal 0 HcmV?d00001 diff --git a/packages/object-aspect-ratio/test/test.hbs b/packages/object-aspect-ratio/test/test.hbs new file mode 100644 index 0000000..81e9633 --- /dev/null +++ b/packages/object-aspect-ratio/test/test.hbs @@ -0,0 +1,23 @@ +
+
+ Default (16/9) +
+
+ +
+
+ 4/3 +
+
+ +
+
+ 16/9 +
+
+ +
+
+ 21/9 +
+
diff --git a/packages/object-aspect-ratio/test/test.scss b/packages/object-aspect-ratio/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/object-aspect-ratio/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From f0ac73cd262e1dc55107e72e679f77103deaab1e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Mon, 12 Dec 2016 20:30:48 +0100 Subject: [PATCH 325/355] Make use of nesting. Nest ::before pseudo selectors inside the base class. With the latest version (3.0.0) of the node-sass-magic-importer, it is easier to import nested selectors. --- packages/object-aspect-ratio/README.md | 4 +-- packages/object-aspect-ratio/scss/index.scss | 30 ++++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/object-aspect-ratio/README.md b/packages/object-aspect-ratio/README.md index 5efa772..5ce3eed 100644 --- a/packages/object-aspect-ratio/README.md +++ b/packages/object-aspect-ratio/README.md @@ -19,10 +19,10 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/object-aspect-ratio/scss/mixins'; // Import just the classes you need. -@import '{ /\.o-aspect-ratio(::before)?$/, .o-aspect-ratio--4\/3::before, .o-aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; +@import '{ .o-aspect-ratio, .o-aspect-ratio--4/3, .o-aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; // Not a fan of the "o-" prefix? -@import '{ /\.o-aspect-ratio(::before)?$/ as .aspect-ratio$1, .o-aspect-ratio__inner as .aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; +@import '{ .o-aspect-ratio as .aspect-ratio, .o-aspect-ratio__inner as .aspect-ratio__inner } from ~@avalanche/object-aspect-ratio'; ``` ## Demo diff --git a/packages/object-aspect-ratio/scss/index.scss b/packages/object-aspect-ratio/scss/index.scss index c6c499c..2eb2924 100644 --- a/packages/object-aspect-ratio/scss/index.scss +++ b/packages/object-aspect-ratio/scss/index.scss @@ -3,25 +3,31 @@ .o-aspect-ratio { position: relative; -} -.o-aspect-ratio::before { - @include o-aspect-ratio-before( - map-get($o-aspect-ratio-default, width), - map-get($o-aspect-ratio-default, height) - ); + &::before { + @include o-aspect-ratio-before( + map-get($o-aspect-ratio-default, width), + map-get($o-aspect-ratio-default, height) + ); + } } -.o-aspect-ratio--4\/3::before { - @include o-aspect-ratio-before(4, 3); +.o-aspect-ratio--4\/3 { + &::before { + @include o-aspect-ratio-before(4, 3); + } } -.o-aspect-ratio--16\/9::before { - @include o-aspect-ratio-before(16, 9); +.o-aspect-ratio--16\/9 { + &::before { + @include o-aspect-ratio-before(16, 9); + } } -.o-aspect-ratio--21\/9::before { - @include o-aspect-ratio-before(21, 9); +.o-aspect-ratio--21\/9 { + &::before { + @include o-aspect-ratio-before(21, 9); + } } .o-aspect-ratio__inner { From 77de59d21ea45205c7e9e92fd59d3795dbbfdd3f Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 13 Dec 2016 13:00:22 +0100 Subject: [PATCH 326/355] Make use of nesting. Nest grid item selectors inside the base class. With the latest version (3.0.0) of the node-sass-magic-importer, it is easier to import nested selectors. --- packages/object-grid/README.md | 2 +- packages/object-grid/scss/index.scss | 168 +++++++++++++-------------- 2 files changed, 85 insertions(+), 85 deletions(-) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index b710c7f..dc31168 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -19,7 +19,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/object-grid/scss/mixins'; // Import just the classes you need. -@import '{ .o-grid, .o-grid__item } from ~@avalanche/object-grid'; +@import '{ .o-grid } from ~@avalanche/object-grid'; // Not a fan of the "o-" prefix? @import '{ .o-grid as .grid, .o-grid__item as .grid__item } from ~@avalanche/object-grid'; diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index a4817d1..4541e5c 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -7,13 +7,13 @@ setting-spacing($o-grid-gutter-horizontal-default), setting-spacing($o-grid-gutter-vertical-default) ); -} -.o-grid__item { - @include o-grid-item( - setting-spacing($o-grid-gutter-horizontal-default), - setting-spacing($o-grid-gutter-vertical-default) - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing($o-grid-gutter-horizontal-default), + setting-spacing($o-grid-gutter-vertical-default) + ); + } } .o-grid--s { @@ -22,30 +22,30 @@ setting-spacing(s), false ); -} -.o-grid--s > .o-grid__item { - @include o-grid-item( - setting-spacing(s), - setting-spacing(s), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(s), + setting-spacing(s), + false + ); + } } .o-grid--s-horizontal { @include o-grid(setting-spacing(s), 0, false); -} -.o-grid--s-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(s), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(s), 0, false); + } } .o-grid--s-vertical { @include o-grid(0, setting-spacing(s), false); -} -.o-grid--s-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(s), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(s), false); + } } .o-grid--m { @@ -54,30 +54,30 @@ setting-spacing(m), false ); -} -.o-grid--m > .o-grid__item { - @include o-grid-item( - setting-spacing(m), - setting-spacing(m), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(m), + setting-spacing(m), + false + ); + } } .o-grid--m-horizontal { @include o-grid(setting-spacing(m), 0, false); -} -.o-grid--m-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(m), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(m), 0, false); + } } .o-grid--m-vertical { @include o-grid(0, setting-spacing(m), false); -} -.o-grid--m-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(m), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(m), false); + } } .o-grid--l { @@ -86,30 +86,30 @@ setting-spacing(l), false ); -} -.o-grid--l > .o-grid__item { - @include o-grid-item( - setting-spacing(l), - setting-spacing(l), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(l), + setting-spacing(l), + false + ); + } } .o-grid--l-horizontal { @include o-grid(setting-spacing(l), 0, false); -} -.o-grid--l-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(l), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(l), 0, false); + } } .o-grid--l-vertical { @include o-grid(0, setting-spacing(l), false); -} -.o-grid--l-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(l), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(l), false); + } } .o-grid--xl { @@ -118,30 +118,30 @@ setting-spacing(xl), false ); -} -.o-grid--xl > .o-grid__item { - @include o-grid-item( - setting-spacing(xl), - setting-spacing(xl), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(xl), + setting-spacing(xl), + false + ); + } } .o-grid--xl-horizontal { @include o-grid(setting-spacing(xl), 0, false); -} -.o-grid--xl-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(xl), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(xl), 0, false); + } } .o-grid--xl-vertical { @include o-grid(0, setting-spacing(xl), false); -} -.o-grid--xl-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(xl), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(xl), false); + } } .o-grid--xxl { @@ -150,30 +150,30 @@ setting-spacing(xxl), false ); -} -.o-grid--xxl > .o-grid__item { - @include o-grid-item( - setting-spacing(xxl), - setting-spacing(xxl), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(xxl), + setting-spacing(xxl), + false + ); + } } .o-grid--xxl-horizontal { @include o-grid(setting-spacing(xxl), 0, false); -} -.o-grid--xxl-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(xxl), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(xxl), 0, false); + } } .o-grid--xxl-vertical { @include o-grid(0, setting-spacing(xxl), false); -} -.o-grid--xxl-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(xxl), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(xxl), false); + } } .o-grid--xxxl { @@ -182,28 +182,28 @@ setting-spacing(xxxl), false ); -} -.o-grid--xxxl > .o-grid__item { - @include o-grid-item( - setting-spacing(xxxl), - setting-spacing(xxxl), - false - ); + > .o-grid__item { + @include o-grid-item( + setting-spacing(xxxl), + setting-spacing(xxxl), + false + ); + } } .o-grid--xxxl-horizontal { @include o-grid(setting-spacing(xxxl), 0, false); -} -.o-grid--xxxl-horizontal > .o-grid__item { - @include o-grid-item(setting-spacing(xxxl), 0, false); + > .o-grid__item { + @include o-grid-item(setting-spacing(xxxl), 0, false); + } } .o-grid--xxxl-vertical { @include o-grid(0, setting-spacing(xxxl), false); -} -.o-grid--xxxl-vertical > .o-grid__item { - @include o-grid-item(0, setting-spacing(xxxl), false); + > .o-grid__item { + @include o-grid-item(0, setting-spacing(xxxl), false); + } } From 8a1c516a8532e0629df4b98b4ecffda0ea824a30 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 13 Dec 2016 13:09:25 +0100 Subject: [PATCH 327/355] Unify the formatting of parameters in the grid index file. --- packages/object-grid/scss/index.scss | 144 ++++++++++++++++++++++----- 1 file changed, 120 insertions(+), 24 deletions(-) diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 4541e5c..5d12109 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -33,18 +33,34 @@ } .o-grid--s-horizontal { - @include o-grid(setting-spacing(s), 0, false); + @include o-grid( + setting-spacing(s), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(s), 0, false); + @include o-grid-item( + setting-spacing(s), + 0, + false + ); } } .o-grid--s-vertical { - @include o-grid(0, setting-spacing(s), false); + @include o-grid( + 0, + setting-spacing(s), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(s), false); + @include o-grid-item( + 0, + setting-spacing(s), + false + ); } } @@ -65,18 +81,34 @@ } .o-grid--m-horizontal { - @include o-grid(setting-spacing(m), 0, false); + @include o-grid( + setting-spacing(m), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(m), 0, false); + @include o-grid-item( + setting-spacing(m), + 0, + false + ); } } .o-grid--m-vertical { - @include o-grid(0, setting-spacing(m), false); + @include o-grid( + 0, + setting-spacing(m), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(m), false); + @include o-grid-item( + 0, + setting-spacing(m), + false + ); } } @@ -97,18 +129,34 @@ } .o-grid--l-horizontal { - @include o-grid(setting-spacing(l), 0, false); + @include o-grid( + setting-spacing(l), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(l), 0, false); + @include o-grid-item( + setting-spacing(l), + 0, + false + ); } } .o-grid--l-vertical { - @include o-grid(0, setting-spacing(l), false); + @include o-grid( + 0, + setting-spacing(l), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(l), false); + @include o-grid-item( + 0, + setting-spacing(l), + false + ); } } @@ -129,18 +177,34 @@ } .o-grid--xl-horizontal { - @include o-grid(setting-spacing(xl), 0, false); + @include o-grid( + setting-spacing(xl), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(xl), 0, false); + @include o-grid-item( + setting-spacing(xl), + 0, + false + ); } } .o-grid--xl-vertical { - @include o-grid(0, setting-spacing(xl), false); + @include o-grid( + 0, + setting-spacing(xl), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(xl), false); + @include o-grid-item( + 0, + setting-spacing(xl), + false + ); } } @@ -161,18 +225,34 @@ } .o-grid--xxl-horizontal { - @include o-grid(setting-spacing(xxl), 0, false); + @include o-grid( + setting-spacing(xxl), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(xxl), 0, false); + @include o-grid-item( + setting-spacing(xxl), + 0, + false + ); } } .o-grid--xxl-vertical { - @include o-grid(0, setting-spacing(xxl), false); + @include o-grid( + 0, + setting-spacing(xxl), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(xxl), false); + @include o-grid-item( + 0, + setting-spacing(xxl), + false + ); } } @@ -193,17 +273,33 @@ } .o-grid--xxxl-horizontal { - @include o-grid(setting-spacing(xxxl), 0, false); + @include o-grid( + setting-spacing(xxxl), + 0, + false + ); > .o-grid__item { - @include o-grid-item(setting-spacing(xxxl), 0, false); + @include o-grid-item( + setting-spacing(xxxl), + 0, + false + ); } } .o-grid--xxxl-vertical { - @include o-grid(0, setting-spacing(xxxl), false); + @include o-grid( + 0, + setting-spacing(xxxl), + false + ); > .o-grid__item { - @include o-grid-item(0, setting-spacing(xxxl), false); + @include o-grid-item( + 0, + setting-spacing(xxxl), + false + ); } } From 0e3fcb2720093f28783cdadde5e0a4a272637769 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 13 Dec 2016 18:42:31 +0100 Subject: [PATCH 328/355] Update the grid object package version number --- packages/object-grid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 8ac4f47..54e260b 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.6", + "version": "4.0.0-alpha.7", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", From 51e1b91481af934014159bf6bdfc2101c1732d6a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 13 Dec 2016 19:22:31 +0100 Subject: [PATCH 329/355] Use the correct selector for the grid object package importing example. --- packages/object-grid/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/object-grid/README.md b/packages/object-grid/README.md index dc31168..94fbeda 100644 --- a/packages/object-grid/README.md +++ b/packages/object-grid/README.md @@ -22,7 +22,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '{ .o-grid } from ~@avalanche/object-grid'; // Not a fan of the "o-" prefix? -@import '{ .o-grid as .grid, .o-grid__item as .grid__item } from ~@avalanche/object-grid'; +@import '{ .o-grid as .grid, > .o-grid__item as > .grid__item } from ~@avalanche/object-grid'; ``` ## Demo From 380d451a07f8577c1fd4c09492521449df8b8870 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 18 Dec 2016 19:02:51 +0100 Subject: [PATCH 330/355] Add xs gutter size to the grid object package. --- packages/object-grid/scss/index.scss | 16 ++++++++++++++++ .../708650260_avalanche_0_document_0_s.png | Bin 28687 -> 33018 bytes .../708650260_avalanche_0_document_1_m.png | Bin 30236 -> 34650 bytes .../708650260_avalanche_0_document_2_l.png | Bin 31352 -> 35953 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 32591 -> 37338 bytes packages/object-grid/test/test.hbs | 15 +++++++++++++++ 6 files changed, 31 insertions(+) diff --git a/packages/object-grid/scss/index.scss b/packages/object-grid/scss/index.scss index 5d12109..a61f02a 100644 --- a/packages/object-grid/scss/index.scss +++ b/packages/object-grid/scss/index.scss @@ -16,6 +16,22 @@ } } +.o-grid--xs { + @include o-grid( + setting-spacing(xs), + setting-spacing(xs), + false + ); + + > .o-grid__item { + @include o-grid-item( + setting-spacing(xs), + setting-spacing(xs), + false + ); + } +} + .o-grid--s { @include o-grid( setting-spacing(s), diff --git a/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index 8368613a5707ce33260919d34cbe333552ae13e8..6fc07eee174ddd9de25a0a7dd949e51391b37293 100644 GIT binary patch literal 33018 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 literal 28687 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 CU>?N) diff --git a/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-grid/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png index 112b3bca9c5db57f5807684238a500e5f7a56b69..15f3d13d1bd79be1e4dc230d834052e7f88335e8 100644 GIT binary patch literal 37338 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 literal 32591 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

dmL>Djl_3Bzy-Lc(;0m| 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 VV9>pmy7OuK^G@H@p1XecUjcj{EN%b* diff --git a/packages/object-grid/test/test.hbs b/packages/object-grid/test/test.hbs index 34d5437..2b364d0 100644 --- a/packages/object-grid/test/test.hbs +++ b/packages/object-grid/test/test.hbs @@ -10,6 +10,21 @@

+
+
+
Grid item 1
+
+
+
Grid item 2
+
+
+
Grid item 3
+
+
+
Grid item 4
+
+
+
Grid item 1
From 6b1285728f85ef1eac1465e8c43dbfd05aa57fb4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Sun, 18 Dec 2016 19:15:56 +0100 Subject: [PATCH 331/355] Update the island object package to v4.x.x standards. --- packages/object-island/.gitignore | 3 - packages/object-island/.npmignore | 1 + packages/object-island/LICENSE | 340 ------------------ packages/object-island/README.md | 56 ++- packages/object-island/package.json | 25 +- packages/object-island/scss/_index.scss | 70 ---- packages/object-island/scss/_mixin.scss | 16 - packages/object-island/scss/_mixins.scss | 22 ++ packages/object-island/scss/_settings.scss | 8 + packages/object-island/scss/_style_guide.scss | 8 - packages/object-island/scss/_variable.scss | 23 -- packages/object-island/scss/index.scss | 35 ++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 21608 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 22775 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 23661 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 24462 bytes packages/object-island/test/test.hbs | 31 ++ packages/object-island/test/test.scss | 1 + 18 files changed, 156 insertions(+), 483 deletions(-) delete mode 100644 packages/object-island/.gitignore create mode 100644 packages/object-island/.npmignore delete mode 100644 packages/object-island/LICENSE delete mode 100644 packages/object-island/scss/_index.scss delete mode 100644 packages/object-island/scss/_mixin.scss create mode 100644 packages/object-island/scss/_mixins.scss create mode 100644 packages/object-island/scss/_settings.scss delete mode 100644 packages/object-island/scss/_style_guide.scss delete mode 100644 packages/object-island/scss/_variable.scss create mode 100644 packages/object-island/scss/index.scss create mode 100644 packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/object-island/test/test.hbs create mode 100644 packages/object-island/test/test.scss diff --git a/packages/object-island/.gitignore b/packages/object-island/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/object-island/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/object-island/.npmignore b/packages/object-island/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/object-island/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/object-island/LICENSE b/packages/object-island/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/object-island/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/object-island/README.md b/packages/object-island/README.md index a97604c..8c31709 100644 --- a/packages/object-island/README.md +++ b/packages/object-island/README.md @@ -1,24 +1,60 @@ -# avalanchesass_object_island +# @avalanche/object-island Box off content. +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: island) + ## Install -``` -npm install avalanchesass_object_island --save +```bash +npm install @avalanche/object-island --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_object_island'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/object-island'; + +// Import just the mixin file. +@import '~@avalanche/object-island/scss/mixins'; + +// Import just the classes you need. +@import '{ .o-island } from ~@avalanche/object-island'; + +// Not a fan of the "o-" prefix? +@import '{ .o-island as .island } from ~@avalanche/object-island'; +``` + +## Demo +### Default spacing size +```html +
+ Boxed off content. +
+``` + +### X-large spacing size +```html +
+ XL boxed off content. +
+``` + +## Mixins +```scss +@import '~@avalanche/object-island/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_object_island/mixin'; +// Usage. +.island { + @include o-island(); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/object-island/package.json b/packages/object-island/package.json index db98782..51c252c 100644 --- a/packages/object-island/package.json +++ b/packages/object-island/package.json @@ -1,25 +1,24 @@ { - "name": "avalanchesass_object_island", + "name": "@avalanche/object-island", "description": "Box off content", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.1", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_object_island", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_island" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-island" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_island/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-spacings": "^4.0.0-alpha.2" + }, + "main": "scss/index.scss" } diff --git a/packages/object-island/scss/_index.scss b/packages/object-island/scss/_index.scss deleted file mode 100644 index 0ec4f06..0000000 --- a/packages/object-island/scss/_index.scss +++ /dev/null @@ -1,70 +0,0 @@ -@import 'avalanchesass_object_island/style_guide'; -@import 'avalanchesass_object_island/variable'; -@import 'avalanchesass_object_island/mixin'; - -/* extract object.css */ -/* extract object_island.css */ -/*--- -title: Example -name: object_island_example -section: object_island -order: 1 ---- -*/ -@each $-size in $o-island-sizes { - $-block-class: '#{$o-island-namespace} '; - $-size-ext: '--#{$-size}'; - $-default-text: ''; - @if $-size == m { - $-block-class: ''; - $-size-ext: ''; - $-size-ext-plain: ''; - @if length($o-island-sizes) > 1 { - $-default-text: ' (default)'; - } - } - /*--- - title: Size: #{$-size}#{$-default-text} - name: object_island_example_size_#{$-size} - section: object_island_example - --- - -```example:html -
- Island -
-``` - */ - .#{$o-island-namespace}#{$-size-ext} { - @include o-island(map-get($spacing, $-size)); - } -} - -@each $-size-and-breakpoints in $o-island-sizes-with-breakpoints { - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); - - @each $-breakpoint in $-breakpoints { - $-size-ext: '--#{$-size}'; - $-default-text: ''; - /*--- - title: Size: #{$-size}@#{$-breakpoint}#{$-default-text} - name: object_island_example_size_#{$-size}_at_#{$-breakpoint} - section: object_island_example - --- - -```example:html -
-Island -
-``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$o-island-namespace}#{$-size-ext}\@#{$-breakpoint} { - @include o-island(map-get($spacing, $-size)); - } - } - } -} -/* end extract object_island.css */ -/* end extract object.css */ diff --git a/packages/object-island/scss/_mixin.scss b/packages/object-island/scss/_mixin.scss deleted file mode 100644 index d18ca4e..0000000 --- a/packages/object-island/scss/_mixin.scss +++ /dev/null @@ -1,16 +0,0 @@ -@import 'avalanchesass_object_island/style_guide'; - -/*--- -title: Mixin -name: object_island_mixin -section: object_island -order: 2 ---- - -```css -o-island([$-spacing: map-get($spacing, m)]) -``` -*/ -@mixin o-island($-spacing: map-get($spacing, m)) { - padding: $-spacing; -} diff --git a/packages/object-island/scss/_mixins.scss b/packages/object-island/scss/_mixins.scss new file mode 100644 index 0000000..28b4422 --- /dev/null +++ b/packages/object-island/scss/_mixins.scss @@ -0,0 +1,22 @@ +//// +/// @group Object: island +/// @author Markus Oberlehner +//// + +/// Box off content. +/// +/// @param {Number [unit]} $spacing [1em] +/// Spacing. +/// +/// @example scss - Usage +/// .element { +/// @include o-island(); +/// } +/// +/// @example css - CSS Output +/// .element { +/// padding: 1em; +/// } +@mixin o-island($spacing: 1em) { + padding: $spacing; +} diff --git a/packages/object-island/scss/_settings.scss b/packages/object-island/scss/_settings.scss new file mode 100644 index 0000000..735c3ac --- /dev/null +++ b/packages/object-island/scss/_settings.scss @@ -0,0 +1,8 @@ +//// +/// @group Object: island +/// @author Markus Oberlehner +//// + +/// Default spacing. +/// @type String +$o-island-spacing-default: m !default; diff --git a/packages/object-island/scss/_style_guide.scss b/packages/object-island/scss/_style_guide.scss deleted file mode 100644 index 7ceb82d..0000000 --- a/packages/object-island/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Island -name: object_island -section: Object ---- - -Box off content - [Harry Roberts - The 'island' object](http://csswizardry.com/2011/10/the-island-object/). -*/ diff --git a/packages/object-island/scss/_variable.scss b/packages/object-island/scss/_variable.scss deleted file mode 100644 index 1470f34..0000000 --- a/packages/object-island/scss/_variable.scss +++ /dev/null @@ -1,23 +0,0 @@ -@import 'avalanchesass_object_island/style_guide'; - -$o-island-namespace: '#{map-get($namespace, object)}island' !default; - -$o-island-sizes: (m) !default; -// The key of the associative map defines the size of the padding, the value is -// a map with breakpoint sizes for which island classes should be generated. -$o-island-sizes-with-breakpoints: ( - m: (), -) !default; -/*--- -title: Variable -name: object_island_variable -section: object_island -order: 3 ---- - -```css -$o-island-namespace: '#{$o-island-namespace}'; -$o-island-sizes: (#{$o-island-sizes}); -$o-island-sizes-with-breakpoints: (nested-map); -``` -*/ diff --git a/packages/object-island/scss/index.scss b/packages/object-island/scss/index.scss new file mode 100644 index 0000000..e0f971b --- /dev/null +++ b/packages/object-island/scss/index.scss @@ -0,0 +1,35 @@ +@import '~@avalanche/setting-spacings'; +@import 'settings'; +@import 'mixins'; + +.o-island { + @include o-island(setting-spacing($o-island-spacing-default)); +} + +.o-island--xs { + @include o-island(setting-spacing(xs)); +} + +.o-island--s { + @include o-island(setting-spacing(s)); +} + +.o-island--m { + @include o-island(setting-spacing(m)); +} + +.o-island--l { + @include o-island(setting-spacing(l)); +} + +.o-island--xl { + @include o-island(setting-spacing(xl)); +} + +.o-island--xxl { + @include o-island(setting-spacing(xxl)); +} + +.o-island--xxxl { + @include o-island(setting-spacing(xxxl)); +} diff --git a/packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..727753b7352d1a77e071e501f2ad72f62c6f4d16 GIT binary patch literal 21608 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 literal 0 HcmV?d00001 diff --git a/packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-island/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..ff6b9a36d86ff4d9f00cb20bbb5efe36cac20f07 GIT binary patch literal 22775 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 G-TwgU7+t&o literal 0 HcmV?d00001 diff --git a/packages/object-island/test/test.hbs b/packages/object-island/test/test.hbs new file mode 100644 index 0000000..df4e03c --- /dev/null +++ b/packages/object-island/test/test.hbs @@ -0,0 +1,31 @@ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
+ +
+ Boxed off content. +
diff --git a/packages/object-island/test/test.scss b/packages/object-island/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/object-island/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From df3ea8b80f63b22552ed6c2b35de3e07bc365f44 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 20 Dec 2016 19:32:11 +0100 Subject: [PATCH 332/355] Update the media object package to v4.x.x standards. --- packages/object-media/.gitignore | 3 - packages/object-media/.npmignore | 1 + packages/object-media/LICENSE | 340 ------------------ packages/object-media/README.md | 74 +++- packages/object-media/package.json | 25 +- packages/object-media/scss/_index.scss | 148 -------- packages/object-media/scss/_mixins.scss | 64 ++++ packages/object-media/scss/_settings.scss | 8 + packages/object-media/scss/_style_guide.scss | 12 - packages/object-media/scss/_variable.scss | 23 -- packages/object-media/scss/index.scss | 43 +++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 86064 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 92650 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 93768 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 88160 bytes packages/object-media/test/test.hbs | 80 +++++ packages/object-media/test/test.scss | 1 + 17 files changed, 275 insertions(+), 547 deletions(-) delete mode 100644 packages/object-media/.gitignore create mode 100644 packages/object-media/.npmignore delete mode 100644 packages/object-media/LICENSE delete mode 100644 packages/object-media/scss/_index.scss create mode 100644 packages/object-media/scss/_mixins.scss create mode 100644 packages/object-media/scss/_settings.scss delete mode 100644 packages/object-media/scss/_style_guide.scss delete mode 100644 packages/object-media/scss/_variable.scss create mode 100644 packages/object-media/scss/index.scss create mode 100644 packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/object-media/test/test.hbs create mode 100644 packages/object-media/test/test.scss diff --git a/packages/object-media/.gitignore b/packages/object-media/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/object-media/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/object-media/.npmignore b/packages/object-media/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/object-media/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/object-media/LICENSE b/packages/object-media/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/object-media/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/object-media/README.md b/packages/object-media/README.md index a3b2bfb..a820a38 100644 --- a/packages/object-media/README.md +++ b/packages/object-media/README.md @@ -1,21 +1,79 @@ -# avalanchesass_object_media +# @avalanche/object-media Media object - image on left/right, text next to it. +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: media) + ## Install -``` -npm install avalanchesass_object_media --save +```bash +npm install @avalanche/object-media --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_object_media'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/object-media'; + +// Import just the mixin file. +@import '~@avalanche/object-media/scss/mixins'; + +// Import just the classes you need. +@import '{ .o-media, .o-media__body } from ~@avalanche/object-media'; + +// Not a fan of the "o-" prefix? +@import '{ .o-media as .media, .o-media__body as .media__body } from ~@avalanche/object-media'; +``` + +## Demo +### Default spacing size +```html +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+``` + +### X-large spacing size +```html +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+``` + +## Mixins +```scss +@import '~@avalanche/object-media/scss/mixins'; + +// Usage. +.media { + @include o-media(); +} + +.media-figure { + @include o-media-figure(); +} + +.media-body { + @include o-media-body(); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT + diff --git a/packages/object-media/package.json b/packages/object-media/package.json index 6cb4cde..45be1bc 100644 --- a/packages/object-media/package.json +++ b/packages/object-media/package.json @@ -1,25 +1,24 @@ { - "name": "avalanchesass_object_media", + "name": "@avalanche/object-media", "description": "Media object - image on left/right, text next to it", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_object_media", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_object_media" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-media" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_object_media/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-spacings": "^4.0.0-alpha.2" + }, + "main": "scss/index.scss" } diff --git a/packages/object-media/scss/_index.scss b/packages/object-media/scss/_index.scss deleted file mode 100644 index f4cb546..0000000 --- a/packages/object-media/scss/_index.scss +++ /dev/null @@ -1,148 +0,0 @@ -@import 'avalanchesass_object_media/style_guide'; -@import 'avalanchesass_object_media/variable'; - -/* extract object.css */ -/* extract object_media.css */ -/*--- -title: Example -name: object_media_example -section: object_media -order: 1 ---- - -```example:html -
-
- -
-
-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam - voluptua. At vero eos et accusam et

-
-
-
-
-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam - voluptua. At vero eos et accusam et

-
-
- -
-
-``` -*/ -.#{$o-media-namespace} { - display: flex; - > :last-child { - margin-left: map-get($spacing, $o-media-default-size); - } -} - -.#{$o-media-namespace}__body { - flex: 1; -} - -.#{$o-media-namespace}__figure { - img, - video { - display: block; - } -} - -@each $-size in $o-media-sizes { - $-block-class: '#{$o-media-namespace} '; - $-size-ext: '--#{$-size}'; - @if $-size == $o-media-default-size { - @warn 'Defining the same size in $o-media-sizes as set for $o-media-default-size is redundant, remove "#{$-size}" from $o-media-sizes'; - } - /*--- - title: Size: #{$-size} - name: object_media_example_size_#{$-size} - section: object_media_example - --- - -```example:html -
-
- -
-
-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam - voluptua. At vero eos et accusam et

-
-
-``` - */ - .#{$o-media-namespace}#{$-size-ext} { - > :last-child { - margin-left: map-get($spacing, $-size); - } - } -} - -@each $-breakpoint in $o-media-stacked-breakpoints { - /*--- - title: Stacked up to breakpoint: #{$-breakpoint} - name: object_media_example_stacked_to_#{$-breakpoint} - section: object_media_example - --- - -```example:html -
-
- -
-
-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam - voluptua. At vero eos et accusam et

-
-
-``` - */ - @media (max-width: map-get($breakpoints-max, $-breakpoint)) { - .#{$o-media-namespace}--stacked2#{$-breakpoint} { - &, - .#{$o-media-namespace}__figure img, - .#{$o-media-namespace}__figure video { - display: initial; - } - > :last-child { - margin-top: map-get($spacing, s); - margin-left: initial; - } - } - } -} - -@if $o-media-collapsed { - /*--- - title: Collapsed - name: object_media_example_collapsed - section: object_media_example - --- - -```example:html -
-
- -
-
-

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy - eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam - voluptua. At vero eos et accusam et

-
-
-``` - */ - .#{$o-media-namespace}--collapsed { - > :last-child { - margin-left: 0; - } - } -} -/* end extract object_media.css */ -/* end extract object.css */ diff --git a/packages/object-media/scss/_mixins.scss b/packages/object-media/scss/_mixins.scss new file mode 100644 index 0000000..4975ad1 --- /dev/null +++ b/packages/object-media/scss/_mixins.scss @@ -0,0 +1,64 @@ +//// +/// Media object - image on left/right, text next to it. +/// +/// @group Object: media +/// @author Markus Oberlehner +//// + +/// Wrapper. +/// +/// @param {Number [unit]} $spacing [1em] +/// Spacing. +/// @param {Boolean} $layout [true] +/// Enable or disable returning layout properties. +/// +/// @example scss - Usage +/// .element { +/// @include o-media(); +/// } +/// +/// @example css - CSS Output +/// .element { +/// display: flex; +/// } +/// .element > :last-child { +/// margin-left: 1em; +/// } +@mixin o-media($spacing: 1em, $layout: true) { + @if $layout { + display: flex; + } + @if $spacing > 0 { + > :last-child { + margin-left: $spacing; + } + } +} + +/// Figure. +/// +/// @example scss - Usage +/// .element { +/// @include o-media-figure(); +/// } +/// +/// @example css - CSS Output +/// .element { } +@mixin o-media-figure() { + // This is currently only a placeholder that may be used later. +} + +/// Body. +/// +/// @example scss - Usage +/// .element { +/// @include o-media-body(); +/// } +/// +/// @example css - CSS Output +/// .element { +/// flex: 1; +/// } +@mixin o-media-body() { + flex: 1; +} diff --git a/packages/object-media/scss/_settings.scss b/packages/object-media/scss/_settings.scss new file mode 100644 index 0000000..f144157 --- /dev/null +++ b/packages/object-media/scss/_settings.scss @@ -0,0 +1,8 @@ +//// +/// @group Object: media +/// @author Markus Oberlehner +//// + +/// Default spacing. +/// @type String +$o-media-spacing-default: m !default; diff --git a/packages/object-media/scss/_style_guide.scss b/packages/object-media/scss/_style_guide.scss deleted file mode 100644 index 05e6097..0000000 --- a/packages/object-media/scss/_style_guide.scss +++ /dev/null @@ -1,12 +0,0 @@ -/*--- -title: Media -name: object_media -section: Object ---- - -Media object - image on left/right, text next to it. -[Nicole Sullivan - The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code) - -**TIP:** You can use this package in combination with the -[align-self utility package](https://github.com/avalanchesass/avalanche_utility_align_self). -*/ diff --git a/packages/object-media/scss/_variable.scss b/packages/object-media/scss/_variable.scss deleted file mode 100644 index bbf08b0..0000000 --- a/packages/object-media/scss/_variable.scss +++ /dev/null @@ -1,23 +0,0 @@ -@import 'avalanchesass_object_media/style_guide'; - -$o-media-namespace: '#{map-get($namespace, object)}media' !default; - -$o-media-default-size: s !default; -$o-media-sizes: () !default; -$o-media-stacked-breakpoints: () !default; -$o-media-collapsed: false !default; -/*--- -title: Variable -name: object_media_variable -section: object_media -order: 2 ---- - -```css -$o-media-namespace: '#{$o-media-namespace}'; -$o-media-default-size: #{$o-media-default-size}; -$o-media-sizes: (#{$o-media-sizes}); -$o-media-stacked-breakpoints: (#{$o-media-stacked-breakpoints}); -$o-media-collapsed: #{$o-media-collapsed}; -``` -*/ diff --git a/packages/object-media/scss/index.scss b/packages/object-media/scss/index.scss new file mode 100644 index 0000000..88508d3 --- /dev/null +++ b/packages/object-media/scss/index.scss @@ -0,0 +1,43 @@ +@import '~@avalanche/setting-spacings'; +@import 'settings'; +@import 'mixins'; + +.o-media { + @include o-media(setting-spacing($o-media-spacing-default)); +} + +.o-media--xs { + @include o-media(setting-spacing(xs)); +} + +.o-media--s { + @include o-media(setting-spacing(s)); +} + +.o-media--m { + @include o-media(setting-spacing(m)); +} + +.o-media--l { + @include o-media(setting-spacing(l)); +} + +.o-media--xl { + @include o-media(setting-spacing(xl)); +} + +.o-media--xxl { + @include o-media(setting-spacing(xxl)); +} + +.o-media--xxxl { + @include o-media(setting-spacing(xxxl)); +} + +.o-media__figure { + @include o-media-figure(); +} + +.o-media__body { + @include o-media-body(); +} diff --git a/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..764a16b89e28eb1c6ff35f5098f2b1bc5c623864 GIT binary patch literal 86064 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 z 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%0D9X(M9Dn*`jN5Ck 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 Ju2Os(@;{?U*dqV{ literal 0 HcmV?d00001 diff --git a/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3ec3fd4160d078a52166c75a8dc8a66bc80256 GIT binary patch literal 92650 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

o8|DP25BxdzangecnF}x&l(+ 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 literal 0 HcmV?d00001 diff --git a/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-media/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..82cbf951dcd50b0f3160920233e4bf723bd080db GIT binary patch literal 93768 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

+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+

U=YywRq67ptRe2}w&WcaqJEm`f5Ojf~ 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 +

+ +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ Placeholder +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
+ +
+
+ Placeholder +
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et. +
+
diff --git a/packages/object-media/test/test.scss b/packages/object-media/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/object-media/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From 5ca4602e98d390a6218804534cc73f3461a7e800 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 22 Dec 2016 18:42:14 +0100 Subject: [PATCH 333/355] Add missing !important to the utility with mixin example output. --- packages/utility-width/scss/_mixins.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-width/scss/_mixins.scss b/packages/utility-width/scss/_mixins.scss index 549ae09..7c08ae8 100644 --- a/packages/utility-width/scss/_mixins.scss +++ b/packages/utility-width/scss/_mixins.scss @@ -15,7 +15,7 @@ /// /// @example css - CSS Output /// .element { -/// width: 50%; +/// width: 50% !important; /// } @mixin u-width($size, $base: 12) { $base-size: (100% / $base); From 210fc6e3cbb5ffdf340949a100c575ca2512dce4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 22 Dec 2016 18:51:40 +0100 Subject: [PATCH 334/355] Add font family setting package --- packages/setting-font-families/.npmignore | 1 + packages/setting-font-families/README.md | 42 ++++++++++++++++++ packages/setting-font-families/package.json | 21 +++++++++ .../scss/_functions.scss | 24 ++++++++++ .../setting-font-families/scss/_settings.scss | 11 +++++ .../setting-font-families/scss/index.scss | 1 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 2878 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 3516 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 4405 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 5548 bytes packages/setting-font-families/test/test.hbs | 1 + packages/setting-font-families/test/test.scss | 5 +++ 12 files changed, 106 insertions(+) create mode 100644 packages/setting-font-families/.npmignore create mode 100644 packages/setting-font-families/README.md create mode 100644 packages/setting-font-families/package.json create mode 100644 packages/setting-font-families/scss/_functions.scss create mode 100644 packages/setting-font-families/scss/_settings.scss create mode 100644 packages/setting-font-families/scss/index.scss create mode 100644 packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/setting-font-families/test/test.hbs create mode 100644 packages/setting-font-families/test/test.scss diff --git a/packages/setting-font-families/.npmignore b/packages/setting-font-families/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/setting-font-families/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/setting-font-families/README.md b/packages/setting-font-families/README.md new file mode 100644 index 0000000..7cb7ce4 --- /dev/null +++ b/packages/setting-font-families/README.md @@ -0,0 +1,42 @@ +# @avalanche/setting-font-families +Font families. + +- [Documentation](https://avalanche.oberlehner.net/documentation/#setting: font-families) + +## Install +```bash +npm install @avalanche/setting-font-families --save-dev +``` + +## Basic usage +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/setting-font-families'; + +// Import just the settings file. +@import '~@avalanche/setting-font-families/scss/settings'; +``` + +## Usage +```scss +// Function. +.element { + font-family: setting-font-family(a); +} + +// Map. +.element { + font-family: map-get($font-families, a); +} +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/setting-font-families/package.json b/packages/setting-font-families/package.json new file mode 100644 index 0000000..05f1584 --- /dev/null +++ b/packages/setting-font-families/package.json @@ -0,0 +1,21 @@ +{ + "name": "@avalanche/setting-font-families", + "description": "Font families", + "keywords": [ + "avalanche-package", + "avalanche", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/setting-font-families" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "main": "scss/index.scss" +} diff --git a/packages/setting-font-families/scss/_functions.scss b/packages/setting-font-families/scss/_functions.scss new file mode 100644 index 0000000..d108a0e --- /dev/null +++ b/packages/setting-font-families/scss/_functions.scss @@ -0,0 +1,24 @@ +@import 'settings'; + +//// +/// @group Setting: font-families +/// @author Markus Oberlehner +//// + +/// Returns font family. +/// +/// @param {String} $font-family +/// Font family (a or b). +/// +/// @example scss - Usage +/// .element { +/// font-family: setting-font-family(a); +/// } +/// +/// @example css - CSS Output +/// .element { +/// font-family: sans-serif; +/// } +@function setting-font-family($font-family) { + @return map-get($font-families, $font-family); +} diff --git a/packages/setting-font-families/scss/_settings.scss b/packages/setting-font-families/scss/_settings.scss new file mode 100644 index 0000000..2190769 --- /dev/null +++ b/packages/setting-font-families/scss/_settings.scss @@ -0,0 +1,11 @@ +//// +/// @group Setting: font-families +/// @author Markus Oberlehner +//// + +/// Font families. +/// @type Map +$font-families: ( + a: sans-serif, + b: serif, +) !default; diff --git a/packages/setting-font-families/scss/index.scss b/packages/setting-font-families/scss/index.scss new file mode 100644 index 0000000..606bfb4 --- /dev/null +++ b/packages/setting-font-families/scss/index.scss @@ -0,0 +1 @@ +@import 'functions'; diff --git a/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..c948744aada2bf8a3266e80b47b0091f674b320c GIT binary patch literal 2878 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 t_#ZOFe-$)-_+6&?|MbmQ-nyZ07{R;)U0q_6- literal 0 HcmV?d00001 diff --git a/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..beefb9999e455be28736c8116adfa9ec6681c60c GIT binary patch literal 3516 zcmeH}X;9O58pr==#jX@-M=WxQZ3D<5Xd+;MKnt>vaM=KI8!NYfP(normu11Na!A4% zk{|`75ep@OAU7-(h#?6i5Uv2qeI;lJM*<|v&c52|n|-lwcBa3XXMQu!JTIQ-GtYdV z?@u?}9F{2206?MeW5uJ)m|@?{(f5~FCtoxGD4qFNC;)iExufEH z@ax}rJ|GCDzl{o9{O;uYv>NPnrMRS?GlhiGLTTC9N+WS3Oj#)Pl<3dhkkR)0e!nyjZ5CPgSs7VP z4b*QPuX6fn*0m)&ZG?2cBVZbx*SXcTyjt%*D{(t^)ZHIn_np0NJAD^d*TaS6j}(CP z@{^f%?+DtGVwU%(0PyP5i$@dQIB`M)0A4)%`Z)0QS=Dd=_~plA$^hVX$}sJF0LM*AfcYz`(2Qv>3YqCktHhHOtg zR@em~T?v0Iu=*X#AKBGlLv$zJLKsCze)now@4-+bf(#;Ux%u?1v*98#|3=r9v6)x9 zHFZ!JhsbHYl=yzem24VVn8gZOHu?f1c7C!|dI6@5+Eh`HE4mI&G4_8F$uTde;uIkpO0tS(jN3nw21xoj z)BM;qTQzFauNFACp5r5KTeDg9ogm9yTD9lJs_{nC-o<{-FsI~>y`vsB+lGgqd*iB( z0FQJUWZD@Jm)oI7yAU+2Bo+_YhB@!Q+cr|_VeEchQEo)Ln z0w_8st$5g&u~928OoLe$e5g2__%L`D`rx+r8j{Y!sDz5Nf>_JrGQq0l_ZV5qZ?>q} zv@}CGlr#Y*xj>+P&id&#oHv_t zxw6tdm|@nmJa`=Fo@!n>k#v784F_`HErQ@$lM{EBjLTh%&YHLeVo_Zp3J5~yFmRtN zp2X3c%H>=9P8;|%EKxYL!;j?#M!Y~h7?iZ%k8?mu?w;2sIWe1>Lr~m8IQC&z+J(Xq zT~k=0kW|q=lib!R>W!M7#$nd5Bhls3EU4$jdY)Noz07X0kdnMkb#LSX5tYU*q;9x5&T(E;pW3Z4kV(g6d zUg}`|lt5Gk(jk{*CR%2iaSJV#5r^D1j+aT;)bm==KYH@{3Dcfo-ZTRHa2 zuK4CJ{9eDL64SC+qa!OTrMEm@Z8LY5t=}R!A&c454Q86`k^vI59^-r*xLoc~{*a`# z;xt9oVW&9e)+E0ry>#Pj4|FY-scf<;K$zSOR%=K-yG}1mD8EmW%t-nObrVm8Jw4*x z-I}hn%Nd8eA=8xLXO(8Ahr&R0LXrta=u=)rh_T+PY*FVU{CCP_Pp8L&3{vLm(NYt3 z7~?nb&zTl4%18w3_2Zdai}LqPU4>Ox8mp7bc5}49qGD^?@pgM=Fmd?D_1_eL2VtM5 zspabGb0v#)E+F3oF74{5u0a4^#Z7(@F52r72S1C6=^U{sSh$|0v&novP9G%UV>_?G z!NmF5I?#Njx@~{SR`eIm3kwONq26Bj&Bda?DT*cBq!nZ#`>+FoPd%453I)s{n6^P( z8*E+Ym07LmuAY2f{7FrpzelnJHpwlAdN)ADV zb(bQ-g)S&mj2|MBn@Z2+(}de;33J(YwuL&RQuKkO0AkT|8t7*8=G0c66zRJji{A-e&zgKWxu*uDtS^D)S0|4|WtK)FP+Es0=oadNV)l?zNdAVKvT%1e58>9*r_{&4y zTN|ayNu38~nj(wiD$h;mLlv~BiMTMuRDmp8OB&TVGg;s&u!kE?w9~$TeZ{2@I{9g8 zQ01O1<|UZK4dsZa)lCa5tILBP#k}&l;|2QSbc)2fj~<~c)a%S zSrmM;+z?C6gKkcgl2Uc4RJEF&>}Z2fJ$(_Uwmw7>5}Eqk>gJ$l5``j;SFCCENTAIw zGi)KH4aK*Z4h$t$b+*w6n95AvUe<&U1| m&&;0${v`1KNuYafFU@`IcKtDfj3aRY0JwwO^*X!TKmHSwFcf(J literal 0 HcmV?d00001 diff --git a/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..1d261023d8eb4e1c2a329d08530cc1de6907e4a4 GIT binary patch literal 4405 zcmeH}dsGrw9>-}MbJkL4w}+XoO-Yik%m*flIjJ*BDmthsK8EsvDZUaF715g3X2(Vw z!55I2n`q=~e4wF(wU$XJl$uX`Gzp9vO5h{$!P5M@=j_=(_P_0(bI({nbW~tp$?}a(%Kr6UY!U(QGgtS zI-dFJ^|e7B0%B2!G=}b3|GTU;4(51)blcMsnBu)MNGFzgZ*`B%bJX?f0Q}UPlj&X_4wA0=nVm(?AZ%4Zm;%A{Du&|w?kpx%DZp1NP z9M2^yOB!>l^b0k+hy}vF$}mI$%- zJE+N&>R~k_%L2FRGs({*{uXw(ZfL9p{4CN;haRc@tPzr{{C@haOQYFgZL`t>vx5Z- zmbXpG{1lX5Xs1KX_)Fq4UwlwI|DZPgoz-n?M=`{AKb=`!5y?1Ck33GV?M%|A9bMp! zA}(hXMMgPonZs%WAT#Af;y(NI)!I6yO}^W4E7fZBi$~KFll~Vxv!G-rTH`ZtoS_dQ z&YKb9 zRKB(@!b;z%E;(1D*Wid_@eLd>u`sW^*pfF;uOjC`pcO4ob|&5r9D-zC3SLBT`FK5a zB+W*Wnxk4zt7N;V99~u>zw2==RUP5^5P#kfDKVYV(xx{)aNU?Kk*GbMocCd-8J$inUa9OSc^>1xd2#`M5;h3Vx*yJ;t|v8cOtg5Sw7mDj$aNLl zl6Fxs+JtW)}?e0dOg zj$~;OPU!;nTouK@YDx5Rkimc+h=_4jNmv8|u?sI3R!doLYP*L5dt?>ZEa^x=jhqQ} zvZqln$vjT21qt|kclUZAqMW@N*oEJ#_!cWwF5YfU$N4QYyb+x)enyaz1NZJ_{eytt zl?!&~el9Mj*Jh;0Tl*mt7-U2kHK_jZX)0D!WxN}oQAT2dttGFPX;4>icUkyCjuS6= zoW_q>gDs}cv922(&9u2Enx42id!ub^vCxCbL^72cZK$%-eu;^R@%r)eAEjW9tv@$e z?^>z^{y25Ct@ULEs2o+U41$dcORjT^b3RPvl_D<3bfoE+vfizVze{FLOswz_+fS9z z@z-tYZVtZ^-Vv9TwYRrNW3XX2Yl#-QOJ_-et%+}g%p9cLQrt8#$Uq?LH0LVUSoSb9 zTK+_^%;UJ=Teq;m0{){DurfY8)NU(n#llWuFU4j0(o`F=-FyI417VBA(ADM!A#Q9Q)1hQE~QcDCIcSjX*7vnJBkM$f@*5T;&;rtHYU{U^! zUe-z%*S@(yQ2iQLv;A8%dffpXHI?HhpnWG1A64K`-2OHJI_Fsd5QMd@8X%tJQVf@Q zFHPzdo>W||d~JQCc@th#v>VlWg3Cn-j?JX=UaMonYMi*Ko{mTtu>wSyp z)b*_!eCCYPSVaKXaLDD%FT1Mi_ zXflV&c4CwM0#=4xIHp>lyS3k$w*=L*E)#>M0!-+nkr#N%&xL2Rp0NWJ&r4?jt8oDa;CkC-%#yT3{#9ODi zg?Vfj*iZ-KTq7Q@2=VhQSV|HowUP!Ouqi*Ooa}lRTHtv_+p?Znr~|eLU+B3N+J=@+ zHYEI>6Go=3P;!1>^b^^^%p<~vUJA(^&P;pBXzdR1udKvrL)G#;GC#-G)yY{ht}u(u zxNfMgfB|9Qb$C1bmmsF=)|y%^?xXYFF3%Ko zU(tNH=%ZH`7ehEF?@!4{49EWQO|m6skM&=ydVKqRD3OV2m{TXG<;{F;*=C*&f*E>| z$~>I=F+ae3m1&4Nn(XxdyiobK>PEfIr}l}!Cjy@cd?N6P!2d6S$C_(-eC4I){dLH$ Pj}&0vz&)DWF8%N?qL}>& literal 0 HcmV?d00001 diff --git a/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/setting-font-families/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..7dee28ca44a9d9d6fef5d469295f7eb4f685f6b1 GIT binary patch literal 5548 zcmeH}X;2f^7JyT&(u!c)hqi#gv?d@JU;x=6X~7Bs3>uUe7NbQ-fj}^kMIc78z!MZS zK!7BKQV1Aikxh(}#8yDUzNaKWLL@85er-n?JjnLFn$=iGbFcjult zchADzG!Ez-0000QF!xgk0N~Rn0KlH&&-SZU>egN=#phA(C;|YW{ts3E1VE*K0{|Sp z1UvP^`8fLG7#dq3xw8L#>gVL2e}Er~bKxiTBbe7uyLIemro*2Onfm?WcFJO&s;;)b zMCVB`$^^r-=twqtseg`xrDmOh_tL#y)qnovS=DbvjHI`ItNT~At{uSpcTvNeL*`oc z@$=MUCV;MIQSu}I(GnKl5 zSF+2M?u@zIZsZrL`Noao%9sIwM_~uRDp^k5qplRU%1dAFQOaM-jsLgX^B5aO(eFj~ zybEG(gn`}KB}cU@n${Z$VJ631?`T6_m1G@rHO|ev`p7Z{viB3E2lNXEDhm59zt&@+ z{R=ZN-loYWp^D~cwzN;JE;7RS1ayG0{NeD=TO*?go{jDJ^Z7smTr-+kALgo0j0&9d z6flb>+hiV}Dvyft4U8|^8-T51@vP4DkWN0XX1|?k_&sBKL3@n+uvlaz9H3S=ZPkG7 z(6`NahOxF|jKT_*_aZ+%r+yfBril*wt~GE@A7+_TG`>`i#k$uN*$3*;5XZF;$Fpl6JK0F{Fef2- zl$4*+m?_z5$=THL8>5lfO3(& z`4hubg}ts&^XmMB;^XRiiE)sO2lR0bL^ZOl3Wbi@3Ptfqtara~BUZcnH!t2YS|-@L zS6lDTtjZpA7BQi*%q$0+5QT1?`G#QQwuXhx)V%m0-6qOf8L2+9o<1)l{zY6Q_nND3 zq(OUg^W~=jf$;ehM2rRzD!y566|vbNix+WZsnTsc#YkH*-sePkS9A26M^jxu7W-SY zaV}wJ1=u0wbMf|p=q;}!+w^eqJq&WPd?8>XxyjPvq3a=%rJBQ1S7l|Y)iR!>i1Ejm z6iezO9qE~apknC8O$KqAHo_~T_XY8jfXJOS%F!h;Z3yNo=9#~G<&Alz(Lk71J^G`N znWmRi#)cTkCpb&Im}cnl8c2Fs){n_2d~&A*)f^N4`P%n$z`e4GIQ-x_&95D%Yz~q4jHMHb^JE6;;lin z7Pa%+se+YL$khBzhzA-eRlp=9-Y{+yNgYvu-jh(F~N1lME|2THMFk#GWmU=tbE_2w$R3#T|u_OPku zn6;D^u-CYbwcsFaxi1LCaX=dKKVFAyjf{4FgJHyLsCRDtPKq%u9@?UBuGO`&SQ&k{}~78xon4! zrxv7{)q}kEF0B+W3=e+2!UA7>Q1MJsbP&RIBGupYH$me(x6`Cky=_oKPx8^tp{)tM z*rv_*t1MRMg@YVi-4t)Op#~T&8+F#LTdThx;Pb(tVxQ8X_v*8B=}R5xC}a3*2qRTf z|I7{PUKFF`!!oI(QD5|M8y2HK`tU+Je8H^!t|`)}Ae1+N4T29>z>p-8TrTey2nrS4 z)Y`Cf_-7nYwPJ}lTNr2IC`A>N&~cER$$UMpoZ$ug)dwFQ8u`eZ(U^s7S$Fo8iD32a zsMRsU*ROlxe%-{%pox<>5UZr2czy82!1&qDAoDZbj$%i9bK3e*Gu7j#x3Ed-6G^rM z%aZPUAXKzy`s5JEI3VBCh(rh8m_t7&Jc~tg2W=iqUEE(d$A8mC%ZG3$=2n3Gs~I=T z$oDic*E1}_$E{>{KNEK$^>w{!!Le8|T>`_89A>X(HUeROf}yftq&H(B()-%b7;3w% z07bF2REWz$>>$I-Jrf3s9)9=$Ce9aE(g-@?Th-a0k`bG8g;2?NtJ=AK6AEJzTy<=s zOBx%Ex|lhkFMbMN@{4{e)^n^pOKZ!7_t?u3?fD~@RTV%~jpO>h;b8TwzKj55m{(9} zsL&ACGudT3lhW!~=Kx~|5r&~FcSajH#xPI>ZL?pnmRx^xg0%k>Q#Ev#x+c&GcCMRH8m|6iaG*$;>W8bb?(4l*Ev>UDDXk0k z3<8l5%N2PRF%u+ Gq<;a(?G!Em literal 0 HcmV?d00001 diff --git a/packages/setting-font-families/test/test.hbs b/packages/setting-font-families/test/test.hbs new file mode 100644 index 0000000..7b67343 --- /dev/null +++ b/packages/setting-font-families/test/test.hbs @@ -0,0 +1 @@ +
diff --git a/packages/setting-font-families/test/test.scss b/packages/setting-font-families/test/test.scss new file mode 100644 index 0000000..88c9212 --- /dev/null +++ b/packages/setting-font-families/test/test.scss @@ -0,0 +1,5 @@ +@import '../scss/index'; + +.test::before { + content: '#{setting-font-family(a)}, #{setting-font-family(b)}'; +} From 9f9c659dfae82ce44501c88225e003450bb9f734 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Thu, 22 Dec 2016 19:29:55 +0100 Subject: [PATCH 335/355] Update the font family utility package to v4.x.x standards. --- packages/utility-font-family/.gitignore | 3 - packages/utility-font-family/.npmignore | 1 + packages/utility-font-family/LICENSE | 340 ------------------ packages/utility-font-family/README.md | 47 ++- packages/utility-font-family/package.json | 26 +- packages/utility-font-family/scss/_index.scss | 31 -- packages/utility-font-family/scss/_mixin.scss | 17 - .../utility-font-family/scss/_mixins.scss | 20 ++ .../scss/_style_guide.scss | 8 - .../utility-font-family/scss/_variable.scss | 18 - packages/utility-font-family/scss/index.scss | 10 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 3185 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 3832 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 4709 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 5867 bytes packages/utility-font-family/test/test.hbs | 2 + packages/utility-font-family/test/test.scss | 1 + 17 files changed, 83 insertions(+), 441 deletions(-) delete mode 100644 packages/utility-font-family/.gitignore create mode 100644 packages/utility-font-family/.npmignore delete mode 100644 packages/utility-font-family/LICENSE delete mode 100644 packages/utility-font-family/scss/_index.scss delete mode 100644 packages/utility-font-family/scss/_mixin.scss create mode 100644 packages/utility-font-family/scss/_mixins.scss delete mode 100644 packages/utility-font-family/scss/_style_guide.scss delete mode 100644 packages/utility-font-family/scss/_variable.scss create mode 100644 packages/utility-font-family/scss/index.scss create mode 100644 packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-font-family/test/test.hbs create mode 100644 packages/utility-font-family/test/test.scss diff --git a/packages/utility-font-family/.gitignore b/packages/utility-font-family/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/utility-font-family/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/utility-font-family/.npmignore b/packages/utility-font-family/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/packages/utility-font-family/.npmignore @@ -0,0 +1 @@ +test diff --git a/packages/utility-font-family/LICENSE b/packages/utility-font-family/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-font-family/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-font-family/README.md b/packages/utility-font-family/README.md index 87f0b51..252561f 100644 --- a/packages/utility-font-family/README.md +++ b/packages/utility-font-family/README.md @@ -1,24 +1,51 @@ -# avalanchesass_utility_font_family +# @avalanche/utility-font-family Font family utility classes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: font-family) + ## Install -``` -npm install avalanchesass_utility_font_family --save +```bash +npm install @avalanche/utility-font-family --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_font_family'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-font-family'; + +// Import just the mixin file. +@import '~@avalanche/utility-font-family/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-font-family-b } from ~@avalanche/utility-font-family'; + +// Not a fan of the "u-" prefix? +@import '{ .u-font-family-b as .font-family-b } from ~@avalanche/utility-font-family'; +``` + +## Demo +```html +

Font Family A

+

Font Family B

+``` + +## Mixins +```scss +@import '~@avalanche/utility-font-family/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_utility_font_family/mixin'; +// Usage. +.font-family-a { + @include u-font-family(); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-font-family/package.json b/packages/utility-font-family/package.json index d0319d7..4caa5ef 100644 --- a/packages/utility-font-family/package.json +++ b/packages/utility-font-family/package.json @@ -1,26 +1,24 @@ { - "name": "avalanchesass_utility_font_family", + "name": "@avalanche/utility-font-family", "description": "Font family utility classes", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_font_family", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_font_family" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-font-family" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_font_family/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-font-families": "^4.0.0-alpha.1" + }, + "main": "scss/index.scss" } - diff --git a/packages/utility-font-family/scss/_index.scss b/packages/utility-font-family/scss/_index.scss deleted file mode 100644 index 0ece001..0000000 --- a/packages/utility-font-family/scss/_index.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'avalanchesass_utility_font_family/style_guide'; -@import 'avalanchesass_utility_font_family/variable'; -@import 'avalanchesass_utility_font_family/mixin'; - -/* extract utility.css */ -/* extract utility_font_family.css */ -/*--- -title: Example -name: utility_font_family_example -section: utility_font_family -order: 1 ---- -*/ -@each $-font-family in $u-font-family-font-families { - /*--- - title: Font family: #{$-font-family} - name: utility_font_family_example_#{$-font-family} - section: utility_font_family_example - --- -```example:html -
- Font family: #{$-font-family} -
-``` - */ - .#{$u-font-family-namespace}-#{$-font-family} { - @include u-font-family($-font-family); - } -} -/* end extract utility_font_family.css */ -/* end extract utility.css */ diff --git a/packages/utility-font-family/scss/_mixin.scss b/packages/utility-font-family/scss/_mixin.scss deleted file mode 100644 index 1c023d7..0000000 --- a/packages/utility-font-family/scss/_mixin.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import 'avalanchesass_utility_font_family/style_guide'; - -/*--- -title: Mixin -name: utility_font_family_mixin -section: utility_font_family -order: 2 ---- - -```css -// Set font family. -u-font-family($-font-family) -``` -*/ -@mixin u-font-family($-font-family) { - font-family: unquote(map-get-deep($fonts, $-font-family, family)) !important; -} diff --git a/packages/utility-font-family/scss/_mixins.scss b/packages/utility-font-family/scss/_mixins.scss new file mode 100644 index 0000000..72e3189 --- /dev/null +++ b/packages/utility-font-family/scss/_mixins.scss @@ -0,0 +1,20 @@ +/// Font family. +/// +/// @group Utility: font-family +/// @author Markus Oberlehner +/// +/// @param {String} $font-family +/// Font family. +/// +/// @example scss - Usage +/// .element { +/// @include u-font-family(); +/// } +/// +/// @example css - CSS Output +/// .element { +/// font-family: sans-serif !important; +/// } +@mixin u-font-family($font-family: sans-serif) { + font-family: $font-family !important; +} diff --git a/packages/utility-font-family/scss/_style_guide.scss b/packages/utility-font-family/scss/_style_guide.scss deleted file mode 100644 index 403a43f..0000000 --- a/packages/utility-font-family/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Font family -name: utility_font_family -section: Utility ---- - -Font family utility classes. -*/ diff --git a/packages/utility-font-family/scss/_variable.scss b/packages/utility-font-family/scss/_variable.scss deleted file mode 100644 index bd4efd7..0000000 --- a/packages/utility-font-family/scss/_variable.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import 'avalanchesass_utility_font_family/style_guide'; - -$u-font-family-namespace: '#{map-get($namespace, utility)}font-family' !default; - -$u-font-family-font-families: (b) !default; -/*--- -title: Variable -name: utility_font_family_variable -section: utility_font_family -order: 3 ---- - -```css -$u-font-family-namespace: '#{$u-font-family-namespace}'; - -$u-font-family-font-families: #{$u-font-family-font-families}; -``` -*/ diff --git a/packages/utility-font-family/scss/index.scss b/packages/utility-font-family/scss/index.scss new file mode 100644 index 0000000..ae03d51 --- /dev/null +++ b/packages/utility-font-family/scss/index.scss @@ -0,0 +1,10 @@ +@import '~@avalanche/setting-font-families'; +@import 'mixins'; + +.u-font-family-a { + @include u-font-family(setting-font-family(a)); +} + +.u-font-family-b { + @include u-font-family(setting-font-family(b)); +} diff --git a/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..823c62765e389065a4595d6041934aa2ab28af40 GIT binary patch literal 3185 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 literal 0 HcmV?d00001 diff --git a/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9ef9cd5746db336b51c1f5f6984345a72a89df GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/utility-font-family/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..d30ace32d7c0a886de252398346d3b824cda45d4 GIT binary patch literal 5867 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 be`9%Font Family A

+

Font Family B

diff --git a/packages/utility-font-family/test/test.scss b/packages/utility-font-family/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/utility-font-family/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From b7b9aad74cc47336c7768a07144c3291ba5907c6 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 14:56:49 +0100 Subject: [PATCH 336/355] Change .element selectors to .selector (fixes #265). Unify example selectors. --- packages/object-aspect-ratio/README.md | 4 ++-- packages/object-aspect-ratio/scss/_mixins.scss | 18 +++++++++--------- packages/object-container/scss/_mixins.scss | 4 ++-- packages/object-grid/scss/_mixins.scss | 8 ++++---- packages/object-island/scss/_mixins.scss | 4 ++-- packages/object-media/scss/_mixins.scss | 14 +++++++------- packages/setting-font-families/README.md | 4 ++-- .../setting-font-families/scss/_functions.scss | 4 ++-- packages/setting-spacings/README.md | 4 ++-- packages/setting-spacings/scss/_functions.scss | 4 ++-- packages/utility-font-family/scss/_mixins.scss | 4 ++-- packages/utility-width/scss/_mixins.scss | 4 ++-- 12 files changed, 38 insertions(+), 38 deletions(-) diff --git a/packages/object-aspect-ratio/README.md b/packages/object-aspect-ratio/README.md index 5ce3eed..b630574 100644 --- a/packages/object-aspect-ratio/README.md +++ b/packages/object-aspect-ratio/README.md @@ -68,8 +68,8 @@ $o-aspect-ratio-default: ( @import '~@avalanche/object-aspect-ratio/scss/mixins'; // Usage. -.element { - @include o-aspect-ratio(16, 9, '.element__inner'); +.aspect-ratio { + @include o-aspect-ratio(16, 9, '.aspect-ratio__inner'); } ``` diff --git a/packages/object-aspect-ratio/scss/_mixins.scss b/packages/object-aspect-ratio/scss/_mixins.scss index 1b42598..4f2f65c 100644 --- a/packages/object-aspect-ratio/scss/_mixins.scss +++ b/packages/object-aspect-ratio/scss/_mixins.scss @@ -11,12 +11,12 @@ /// Height. /// /// @example scss - Usage -/// .element::before { +/// .selector::before { /// @include o-aspect-ratio-before(); /// } /// /// @example css - CSS Output -/// .element::before { +/// .selector::before { /// display: block; /// padding-top: 56.25%; /// content: ''; @@ -30,12 +30,12 @@ /// Aspect ratio inner styles. /// /// @example scss - Usage -/// .element__inner { +/// .selector__inner { /// @include o-aspect-ratio-inner(); /// } /// /// @example css - CSS Output -/// .element__inner { +/// .selector__inner { /// position: absolute; /// top: 0; /// right: 0; @@ -60,20 +60,20 @@ /// Selector for the aspect ratio inner element. /// /// @example scss - Usage -/// .element { -/// @include o-aspect-ratio(16, 9, '.element__inner'); +/// .selector { +/// @include o-aspect-ratio(16, 9, '.selector__inner'); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// position: relative; /// } -/// .element::before { +/// .selector::before { /// display: block; /// padding-top: 56.25%; /// content: ''; /// } -/// .element__inner { +/// .selector__inner { /// position: absolute; /// top: 0; /// right: 0; diff --git a/packages/object-container/scss/_mixins.scss b/packages/object-container/scss/_mixins.scss index 8cc5576..f0e0fc9 100644 --- a/packages/object-container/scss/_mixins.scss +++ b/packages/object-container/scss/_mixins.scss @@ -13,12 +13,12 @@ /// Horizontal centering. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-container(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// max-width: 64rem; /// padding-right: 1rem; /// padding-left: 1rem; diff --git a/packages/object-grid/scss/_mixins.scss b/packages/object-grid/scss/_mixins.scss index fa876e8..6e4c0f2 100644 --- a/packages/object-grid/scss/_mixins.scss +++ b/packages/object-grid/scss/_mixins.scss @@ -15,12 +15,12 @@ /// Enable or disable returning layout properties. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-grid(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// margin-left: -1rem; /// margin-top: -1rem; /// display: flex; @@ -49,12 +49,12 @@ /// Enable or disable returning layout properties. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-grid-item(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// padding-left: 1rem; /// margin-top: 1rem; /// flex-grow: 1; diff --git a/packages/object-island/scss/_mixins.scss b/packages/object-island/scss/_mixins.scss index 28b4422..1743704 100644 --- a/packages/object-island/scss/_mixins.scss +++ b/packages/object-island/scss/_mixins.scss @@ -9,12 +9,12 @@ /// Spacing. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-island(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// padding: 1em; /// } @mixin o-island($spacing: 1em) { diff --git a/packages/object-media/scss/_mixins.scss b/packages/object-media/scss/_mixins.scss index 4975ad1..fe2d05f 100644 --- a/packages/object-media/scss/_mixins.scss +++ b/packages/object-media/scss/_mixins.scss @@ -13,15 +13,15 @@ /// Enable or disable returning layout properties. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-media(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// display: flex; /// } -/// .element > :last-child { +/// .selector > :last-child { /// margin-left: 1em; /// } @mixin o-media($spacing: 1em, $layout: true) { @@ -38,12 +38,12 @@ /// Figure. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-media-figure(); /// } /// /// @example css - CSS Output -/// .element { } +/// .selector { } @mixin o-media-figure() { // This is currently only a placeholder that may be used later. } @@ -51,12 +51,12 @@ /// Body. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include o-media-body(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// flex: 1; /// } @mixin o-media-body() { diff --git a/packages/setting-font-families/README.md b/packages/setting-font-families/README.md index 7cb7ce4..0313bd6 100644 --- a/packages/setting-font-families/README.md +++ b/packages/setting-font-families/README.md @@ -22,12 +22,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Usage ```scss // Function. -.element { +.selector { font-family: setting-font-family(a); } // Map. -.element { +.selector { font-family: map-get($font-families, a); } ``` diff --git a/packages/setting-font-families/scss/_functions.scss b/packages/setting-font-families/scss/_functions.scss index d108a0e..ed4f47f 100644 --- a/packages/setting-font-families/scss/_functions.scss +++ b/packages/setting-font-families/scss/_functions.scss @@ -11,12 +11,12 @@ /// Font family (a or b). /// /// @example scss - Usage -/// .element { +/// .selector { /// font-family: setting-font-family(a); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// font-family: sans-serif; /// } @function setting-font-family($font-family) { diff --git a/packages/setting-spacings/README.md b/packages/setting-spacings/README.md index c0bf940..56a7c6d 100644 --- a/packages/setting-spacings/README.md +++ b/packages/setting-spacings/README.md @@ -22,12 +22,12 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Usage ```scss // Function. -.element { +.selector { margin-top: setting-spacing(m); } // Map. -.element { +.selector { margin-top: map-get($spacings, m); } ``` diff --git a/packages/setting-spacings/scss/_functions.scss b/packages/setting-spacings/scss/_functions.scss index 60fa5ea..311ca62 100644 --- a/packages/setting-spacings/scss/_functions.scss +++ b/packages/setting-spacings/scss/_functions.scss @@ -13,12 +13,12 @@ /// Return spacing size in rem instead of em. /// /// @example scss - Usage -/// .element { +/// .selector { /// margin-top: setting-spacing(m); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// margin-top: 1em; /// } @function setting-spacing($size, $rem: false) { diff --git a/packages/utility-font-family/scss/_mixins.scss b/packages/utility-font-family/scss/_mixins.scss index 72e3189..37c747e 100644 --- a/packages/utility-font-family/scss/_mixins.scss +++ b/packages/utility-font-family/scss/_mixins.scss @@ -7,12 +7,12 @@ /// Font family. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include u-font-family(); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// font-family: sans-serif !important; /// } @mixin u-font-family($font-family: sans-serif) { diff --git a/packages/utility-width/scss/_mixins.scss b/packages/utility-width/scss/_mixins.scss index 7c08ae8..f0a35ed 100644 --- a/packages/utility-width/scss/_mixins.scss +++ b/packages/utility-width/scss/_mixins.scss @@ -9,12 +9,12 @@ /// Width base. /// /// @example scss - Usage -/// .element { +/// .selector { /// @include u-width(6, 12); /// } /// /// @example css - CSS Output -/// .element { +/// .selector { /// width: 50% !important; /// } @mixin u-width($size, $base: 12) { From d09e467f9fc06f0ae5dd768606b06d9bc92ca01e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 15:01:33 +0100 Subject: [PATCH 337/355] Use lighter gray and inline styles for the box sizing reset generic package. --- .../708650260_avalanche_0_document_0_s.png | Bin 687 -> 695 bytes .../708650260_avalanche_0_document_1_m.png | Bin 1319 -> 1326 bytes .../708650260_avalanche_0_document_2_l.png | Bin 2200 -> 2208 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 3336 -> 3344 bytes .../generic-box-sizing-reset/test/test.hbs | 2 +- .../generic-box-sizing-reset/test/test.scss | 6 ++++++ 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index ddbdb1c0c54204d9b196a6b09f64480743ad8613..2c8a6dc2928f741c80ea79223b8124ee8b0d4528 100644 GIT binary patch delta 116 zcmZ3_x}9}`rAMZxi(^Q|oVQmu3N{!Buoy02{vN-?yFqBqMxJSp`19;;K4w4#`<}(f zp0Rvy-uCCJMDovMhHu4JnHdt?Cw3-G>=EAhX&K`rMmF&q*O>23WN}D$da)U#+tbz0 JWt~$(69CTnD);~Z delta 123 zcmdnax}J4{Wk8~*i(^Q|oVQmu3N|?KuxxBUb=Pvr2g%b7BGx+!H)S(2pn&}1H+*T& zs*+BGpFQ*KIK!Xwk^Bq|_Cg5^92^D=EG!ZXOcNUuHZw8KW1K9&C@6kl`CSQq7Mu5} RCl7&)@pScbS?83{1OS*hDOmsj diff --git a/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/generic-box-sizing-reset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png index dc53a0dc24bbefc2351963ae46cc09f9ec4ddd64..04a2a068c632cf201ca113a6c206f4a600efa3c6 100644 GIT binary patch delta 108 zcmV-y0F(cx3a$!}IV9joL_t(|obA@J4S+BZ1VNw!_g|z-fD)_?0D)%W4^AKLwgHn7 z0Tmi>hkbQ0=RBVn@>gSw<&OaX_>SZ40RRB-C6T^Tk()oW69M}J7H|P@qy#|d@B?4~ O00004ITuVi5;9A?Y04vApsQ{ zu)=9L;h-JZhs5_z;_&P4*&pwFAIU!0(L_t(|obA`K4S+xl1VNy3cMcVxj{u3Ci5;Ar?Y04vK>-~a zclOo6%$#ow`Ky^({ulrNfae`w4*&oFfH#r2jFGn&vqJ$!2a#|G7kuOb<;es*O>_%)r1c48n{Iv*t)J zFz_7mba4!+nDh3=LcsC0()ze7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z e5TJ7i6j(95^k#90|8>>{WV5HMpUXO@geCy%;z!K@ literal 3336 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz_gfy4J5Mp+W{cOS>O>_%)r1c48n{Iv*t)J zF!1d1ba4!+nDh3AA)f<-fUD!2n*4K|0Ui|-XI6F3*S)_9sE;uCbGxeC!1%Yc^S`XL zym}s>h66j_zGehzEO0%*1f&#vhcE^5$0!&Lfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c dxDc3U$*^lGiw(QvnwKC)c)I$ztaD0e0svFoO1S_4 diff --git a/packages/generic-box-sizing-reset/test/test.hbs b/packages/generic-box-sizing-reset/test/test.hbs index bc709f8..7c89b54 100644 --- a/packages/generic-box-sizing-reset/test/test.hbs +++ b/packages/generic-box-sizing-reset/test/test.hbs @@ -1 +1 @@ -
+
diff --git a/packages/generic-box-sizing-reset/test/test.scss b/packages/generic-box-sizing-reset/test/test.scss index 313a442..9b98159 100644 --- a/packages/generic-box-sizing-reset/test/test.scss +++ b/packages/generic-box-sizing-reset/test/test.scss @@ -1 +1,7 @@ @import '../scss/index'; + +div { + padding: 16px; + width: 80px; + background: #efefef; +} From 090b41a6f677edbc51c44747e75435a0d0de3012 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 15:08:45 +0100 Subject: [PATCH 338/355] Use a background color for container object package tests. --- .../708650260_avalanche_0_document_0_s.png | Bin 12597 -> 20434 bytes .../708650260_avalanche_0_document_1_m.png | Bin 13431 -> 21509 bytes .../708650260_avalanche_0_document_2_l.png | Bin 14613 -> 22801 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 15790 -> 24220 bytes packages/object-container/test/test.scss | 4 ++++ 5 files changed, 4 insertions(+) diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png index e1971da3212261b3e6ce71b7edd1bf0b738ab1ae..bce59d7e77a36e127270111cc466f76b8ac38d12 100644 GIT binary patch literal 20434 zcmceeg;QHy)b4{j6e(^+ix+n&h2m1&-Q8V+yHngsDNx+qHMkaccZcBQ=Kb#6|KOW@ zW-@zDGIM6! zs5GEw(RlwI&FX}RyNm+{n_Ixh%-q2TIP6Tb+>7}rg(Ff;gn0aP{f4lckazepPyGS= zf9rTUd0a6=8rZ!S9hVfBkdUaNx2S(|iP%APn>#f^GZ4x+{HQjioTqY7SuOS zzdr|z%5$zJmv5>KjgD?FKBzpWQZQjB*>0jE)da1UlkXOEIpm!C?}ArONrgJQ@M4TD zbe-+LT+yp1TwiCe^R4fK$~t@ml@@1;C#&Fr_MBi*LPU4*m?vy2=j}XmrshAvUT5bG)~fyD z=#WK4Ma5~62I~b&O>j_gQf|O_`1Zta9Tpim{);FNE>98VS#X8VX^;E)RSZzE&*Xhn zOK+v8&*LMHc;LNMSNrv&$E9Vu(6u{^DBroQh@|4j7i z!RzH!qQ=PZ7QjuyQ`1)QL3+#meD|DiZyzT1OW%Z@*9msG;6p7WG5rTs(1@D+{;tx_ z-^xIV4@zUMq|bvWI4HP-o*H#eQcA{bTmi?*(&3##?U3_v%w*5gPBqpy4BrRR9YaNW z0PbdGg+)XmjO|cxW#W|hSe|&!6;hOuvH5*JbMtFjdPLf-&7q-7ojrx46vs2a$@Yvs z#`r_i^%@Dbe5U(`ABFA-6Xm}#PPWGpl677Vj=qTphpnXF#$e%kip!`ED6^(ldkJ~J ze@{zKpKiAjU^-K|Ij`~Ds#WH)i3(6rEymkY2d0SSsPpI*x(?emQEVwmwJq(O^dDdD z8f`jsXF zaUO;mSk{yL%(Gn~U0_~5m$HaaSY!|Tp{80~X|^Mqy7;TU_!$qK7#ZWOJ}HW=NgaU2 z{)RoqnoS1iGNgLuV(RZ)vXp{9LQG(N0PlM5_(6;HsJ#+RWc3SNlVk8fg~04Ccrueb z-f^t;o|VdlEW2HIS~aal70BSH-5QZ^uPax%>$u!G3;XqtFH)+mFAQ~R+>7<5$P>j) zl3KLYC8z0jOi@<%>gw0?CQIvvVqSON`RR|rqmo!4m$BHdyFujfXQg8+Ylj{)mfHQj zrowy+TAbiVYap%D{`!c>K!>&&CsdTy55#j7{B{>v#tPo)29LjCI81L`|xzRShV zOC(9em>ewS=HzBWRj84P-MB*?o@L&|Qgfcm>3B}MqW*A~zg?+m4JfFyA{mrFOhg7^ z7m6z{)lvtEYnPJIzK@vuGE=#%x1PXx9p!Hf`{eTi-wqevfF;V=|+s8XMHi53HRRh@UP7t$vXas9i)x6MRS>ZXKv3g%F&yDsRgi1jk_bT zh-RoGWTUT zNjck^^ig*eIn?##Ju~e1=kAw1T z=oeNo!|xyM8O$yn>V17!ZJzG=C*}v04AtJD+5(MVWN$MZ&7Hmx_EU7mwxM|RwvKYn z88aXcQw)n?n^o!gU7-SY>L zcrpt0Fm>$$%Vymxa}lz!x^U`F(ZafEWOg>%!P7{s$`9kEJ$1?b!VVfA4fSmB3r%fV zbXPc$W=4z8_gk`8=PGNe_tJig4w>l;MYoGs%&(w4TYEZPU8GcaDqeB^j1O6RE5GOS z-&I--U>;~ftwh9yN-4AMa4tDfDL(z=(2#D6$FmZ^xS^gzW}{QGYcU-@CWqfMDFZsQ zj!tOf6(eSlgd!ka5ShYpFU2Tu+cn=vt0rSrE{4-$7#IFIf}!m5;Lk`L;`hY*d_UOm z?`sAYxlXAMOJ0Qd%5Lqcu+*U;Vh04;Bi)$z#Zi&t4X4b32pN=t&A0+x3f%xl zHULYjSpDKRJunpOu$Y#L>IQ)!u$p^>@U8k?buxNSab=|=)HL023;K~J!Fq7l5DlU} zo`yiJR$YEAX_Q1ySGJQrCjd~EDYxc|Q= zUru3i*^@ciI0!E!>Ug1PdK?-^f|r9fAapM#Z*y?`z9;V(2T8(yp@sg%t&uk;J(E|e5Mgw z*p4czIY%TA8#bqx5nh&DP$=XF!QW6)puLM-I`!OM)>Yc(`j&FU+A zZ#csz&pJIbAaFS5C%~Ie3oQZUILUiLA|7^;m~FGX25d-yU*8#5bh1C|BnFV&c>iT& zH)Ulv4p^vyvXUg&38g)CC*v zSn02)67l8OYBg#?FN_zl_7_3AD`!(Oqmb0 zr&!Bd)Nu<=3s;o;NmdRv)P4g3p88B$TH1_swH-M81N{KIzAhe(47PiBODTw!{+uvo z)DO1%Cb#@?TJ;v6Io>z=Q_mjNIDa|%4}Z$0<^6RbAKxh`si<%>uL1Atmy@tH4K0x< zI|PBzD>@aD$iBHh)wz}L?f};Xe8TbB)|<7Ms|$rR3b#*ukHr4HloxT_5_XC@&DAtJ zp7n*56s9u|*JNw(U)SdhIz-Ej#d`YRbl28gzx4F|< zmtEv*z>MKR*GVWlyVS zf6K&U+&1g#8`AV>A-tFsfsM5hZy4pJ>vc&kTd%_iU$Q#r8 z0$eOf**ER<(`<{@2f1U!%jMZI|)xd?f@jE{(^DA9?G4XA!{}iT#7x0mk5S>0#zl%|C;;YaA3*?l@?tu1R%UjP*?Tu=w8ThG`rY7-;04u}u`2E@!BG{Sbt-N9N z#QTbXgxTP-wH3k~-8sef_T&94L-AOH{qL?U4t%SROC&^uOLEpWZJ}j){@P1xlwj2dEnx(?uu&G~G*Dk&(mcyt}SF=G+OYm|Lzp;Ba~&I;Vdj zyzeXyFjrXYIhkl9Q-H_Go$oyzC{uw;C5_FEe=Pj6>j+mXPe_f z6jxq2(_+ICOxky~i@}7+VIQ6%y(SkVzQM3k-F%;TT}-@TvL@5V+tbk;os17)6?tI9 z#@Jf6>F;{y3x9&-wF%n>ioB22Z_H4C>v*oiI`e((nwNI*LKY<|;30M~)eI(>Wy%ZR z@JDi7RWx{7yo0ULeD_7#*x+g6ehIoo@0uMn;-eNq&x8m}m6V>{+#Ik_0-y40agf_= zwQ85YJ312R+7EKE+3Zx?0ehbXn5IWoYzTs!kS_~ZUjrfO`lMvzPg}-y^`(=jceNKy z9~-;`tV-Dm%AOLu8*cKf$s_PZUg{A6IS;GL%L{`u@%XZ`i>mJ_5b0i;x30T|v1|i2 zdqpheWYTq;!Wt)(yq-0oL3xQiorlH|%t+8KFe5(tcZfb8G4E{d?Qr?c$$GF}Tdzwg?Md+AVNxd0*)l(mw9R zN)t{UAZ7`?9XBu7#CJC2M+ZZ*(pM$8{wj(e`)B0komKN=8!H^&q;l0NJ^dZJF9kXi zX5Co!I={WQxi*2O&{}n`vb)gn^A^n0to>@ ziX$;lo&(?fv469_!_k;!5~E6n2A4(!QQmaS9e2PaQB+5nBdNzK>(?wpIt8^KSoL6n zSM`h7E^h7T{F=aEKint@jzY3@Ce|VTUz9+1&E zxd=m-!u;%7!~EqFTsJ!d5L!38%k6K+*wvS1%R}Vc&M@%egQ`W=a+=;-F^7f*W_MTm zZ1t;FRHWXE1z#Y>n!!CG*1h|#-6cu$qQT+T@qLjNI_GM%ZAg%4sZVUe=Go9Oxv0ke z{Hk|baV!b929)@OX}2Nd_B8(fP$FtNm!+|jx58$4=T0A0;)9})Nn~eF!?i^ToLu=Y zS=rR-P6N3FC%!m?9?rCNM`L0vN=|I!lg!8JLD6B}u5)-$NylD~*Mm#g`o&V+@Lq-g za%xJ3NkYO5apH>f%1w59b7m-rx_agi3)YCma6~*oSZw#CZpJj(Yc+2_4mm@TjaW+Z z#;c|lreF7E>3S}mFE{W~WO|@VzY#A!@8iX#2_&c+w0cM%jPR0$^mn-?Xx=>RD{Qqb zg(HZP4a+DL+rgq=HQ~!zYrwa^GP(zNUAS5}({>4i$d1eY5E#bn(sH-{da3j)awBq*QWl6;lrobT2 zyH{!Bs4FQ6+o8)7E&>{xb8;ODR-3kvxPRc!&2fOfuL2YpT;J61N~`w<)v4=G^aT z1{w?=dL%G8=sOj4+r+uz2K8?Mpup@Pz9xktkOJw&WA~ox2O#kkxw<_?dg$1}(^bP6 z`vL#`ypzdkiD1jV)KcHor*B@TIeWnotEOl>s0 z{A#zVV?zcUyGX?cP^}C8U0XpTEVWxxdI66>5)=NYNciRxp&2sIzpif}+B6Hx6>@i$ zwwH!ieNf}^;Y-uCfG5Vfb23xXUpNqHju9Cn#w0)OtsTm$1u4BS1u+ok#m#^{7znw3|#j41#0kIqnI5Nhuq?R{;e-F*%F zqw>S38Z?)pdN?bD9$4%3F|RpZIdAocFSYOn^*?h=7=Nzz7p+~s;o5%8I?0kJ3PO2< zW#}rbH&*owh`(>PtVG^uxDbuqC>ytYy4k5cPXgyVapeT$3WnKKiu7c9SuxiXa!q!jVp z+6{Hx|J1cS=x{sv20k~HBMTA6JTp%fdY70y;)~z5)>9ZP6CfXzJ^y^I#JXwqv7hviUFWE5tjaKgn920szk&NaD`QyhwCV8kYDzhJem+@&I-+|OOWsckrJs@!y zb=cuh0Cj@N>i7io8X4jAD0RI0FlT<;+{z~q<5*{Q&e&?Yd{lmIT3F2&GpsoRomgp- zv+j@qOUoxgp5N)MeO%_D9sy!7bkvC?@m&^Wj7+5!9r+fUMH5L!ASe>#;SdW1I0dAA z<1L?@+7vcv32O(fQ-kL^t^=ae|J`bsWv%AS3>3>e>uHBu~6A;jNvJr{j)#*UNnd%X}5Jnvoe z_pfLc9&P?6Y#0!f5g94JtnQ6Kdh6}7s-* zjv{EaG+MEvIcWWCS9~wv6%54*GFTCKrq6-vstD6` zx#H5!;BR4gcU)kx7W7=Z1O8=Z8TzOd*tyVq?G|`x(0gD0VY3~3NC~bX@rIq459Ob!5;_GirLrn~= zdNq@}B5VjBcmsk(pXme>%z;vfo)cI{s1iXmV%2Ebo#A9s8?@YFnVA&uE&@FG^5NI? z3Vw?52~-8nt0KHjuZ~ycKYW;R-t=2I95{7PZ2mqL2Nm`7f;FX@4^)*;x4c0`?Px_s z$Aikt6mqW}PaZzj-dppFBlh#bwL|-NOuKMm4((DR3i=ia%FE1Dh78a;xYjE2y-GvJ zHDHVWC;(SWoe3bZxW%zM&5_WOQIet#eeu5D zKg0SUewjy;CXaIgj7sM$DGgzBULv8A2~MF`GS7AOInsxn88}RspTQ^1O*$j%Rn!qO z__lrRFMV6zbvCtpvNr1fAjsLY`gEL94)X;zX)>;2X+@Hflo}gtN7&mrXW{Cr_jCW) z4(&49>Kb>^k{#_5Z(Du7AdcOT#y(A=^fY9L$t-U2ShWK;R*Y&qMij`>-a)M&iX(&b zNwlPnZd)9^i;S}15*8X*1LzQ974*gEoijtREUMGue)KaP_tHOK2}CQFr44BwdTiof z{jgF8hh$Ee@*ic?YQ=Iy?FQ!4I|W8eHYHZ4Jd~9`6b@?0-?j|O)x2Gah1)D}zJuVP zzc?q9Q(KpOB?K+9P()(-NAtq5#gzGoE9bMvzl;^5sKV{*!ECq3T4~&*$8SWbVUm&F z3=9TR12$nsiU?_`q!-ThWsf^5^@L=)w#&15{E-?w_H3Z_wLFI~f7)ieH+H%?4vn>Y z_VNYAX{Gj%5YK$GPS@c40yomV3&Tp#F$r)5Z2GB5-HJN{Dy8UNxc_KB^Y zKqrS?Jdbi(R9^WzL$Soq>8psGw>{i1%sXI?)6nt`&`^I(S4qtb;y_=(z&kCz1s&)B44{3>OJj)3?1 zE*dnRvkM2br0uV;Y*5Y6c7%V&O~-!pyJj|OF!?QZUz!FMydLUHTopp^`JYVWLV`+K z4y6AXTt2D*VxWyu7=#*Vc}V)>|LaMRHrAFIl_VD_9dTR|>3UiutwlT0u}`5GV#o|p z1*QBKyzJJS?-F}i+_q2^^srmeT>A$~Ic4Qq&znrrGA7j2HI=nGQnu{4&E#YKQ+XKe zQ@u(AsZ(G)sy_GXX^pPr=jR;sK`-F*g$aiAzEw-bN3_aeX`K_gw&r*VO)_kXbk@Q1U8SG#@9hV2P+E|#!^7Gn2gmTLZCut~KEdS37@P||@%QEAjuf*bH z_sd6_4pxFWjU4C={00E|{nO-!L92vwoH1%PAzfGh(UvtiZOjav0+(7UI@$jAOY>EL z4P$}jfI&Cf)P@ggNx?;h2cWo!*BE|M$#q$^3=%zL>=G1Dx4>_BFxUFT{E5m%KkFJm zF4RFGYNS0kK&`R+2zR47v#=sD6MVM{?GCF)5xGVY)h`b%@UWo-N<Q& z6}7?FFUyZa=fdM8qI=Z*u@e^Sng1azlNv)fy;+-rQ%?kC^7XCo>1^m%v(&)Tgw$=*5h+v~NDU>sVB~8!pf0OjjU? zQa#M#Wc9iF3Ic$Z3&XKUSC;{v_<==(-{n7a1JwR4m~ekvI{i~o7WKOXDH3b&*m+I< zCEk6hiJaCtYYNo6c!Y-N>{#*1#C5jKpBB42o6P==Fs3Wva*Gadk_X;-)5bu9CBN9* zImiovK|~Da(?gmpdkdB35V~W9)Xym-(jaclxmxn?pVJUt&osOfZi@OPwz(X+zHwJa zz?d|sr_N?Q5L)gy$DenlI4nw%yZOLG-Z%efn;a32K#Ib`*j}%vTW?K@dLg~%XQ*81 zeFG_CQ=ry%3Pt+L!F9(fK=}5gd|Rt4!cC+Cz5Eh~ibQg_c~)SfWL`SYk}UaKN=a*6 zdPuffyUQ}tAZ*aq*$K3ED@1>q)70@y#aD2#%jjM|fwiSps%nHaa$Ey}T_PIS&7HIO%pFSEOvN!Aq^Z`Z9mdraf0{ET(57`U8BwP zJ&*G5hD!&;@(}y-XqeCC0bJ`%V|VvY^mGUx%7~M#VCWnPKOr?= zmbQLMi8d%~yxXg%L+&AA^JVjRemv$za;$rsjnC;*>#%q97JN?k(FUH8hWY zGt56m9e+BOqk}{N*w5sUJ=1as2_{496=td#wAqoWsf zguPBE3`~tUJt-YOmbjs&0K88}&}`Q=uYh9jY47=w6c(W@OveA6j=Z$8^9}}v@@a7B z8}#{i5aq+MmV4*80P=C0d4;ywg9^zzt{t7x0)dg+<9gBoh&`V8Y_JCkUhjQ558k)4 z4BTE;Y`I@;rwnA{h%`G4jkq0Umi51WC@JSPwT(^tNK5*>^-aL7{e`HjWh~L*w67y- z75#%7*--X1=?6nOZb790`z%mzVwXLs+w4Yutr@c)-YVG?M z(AXSwhyOH`IX(JKx!9)S;c@4B-KrU71(?zx0pEkz#~}~@&b8t0t_}0<HxIpt4w1q|OAjJiZcH~fT zFD&TT!Uyj|Oz80z z$Y}YXb?#ni0A5JL7C8B1(|PLp;=g$8|Fg;!=EwSpIq;lA-~?@X76a2Ua;WY&AUP^> zxN*vk2k0;awb~fsVMIKB34rN;^+Im9K$S_E#9>6N zTa`_TAM!dAog4)(IR~Gr*!oJiU7ye4*p(TKLYyD@{V5ayZ!cS#CYk8GMbDXi5(eRE zSKQ7A^htkXS&8in(D~DoW=j@7c1$t{p4sbz?1#AG&!2xhMn}r;m7)FDL#z%Sfz=X~ z`uv}s!RvwIv;Vz=qp*u-8RpvS6{~&*YQ0N3jas&QUyFTv9@ohKWqK=M@EDhrP2g|3 zwlO6lD0Otk($L+N&oMXNw0FXrT3hGxc;ERmU>^kax~=f`!`N+s%RpX#t4S<G_Q z2Y~I9EV<7a3bAH-9C^yXDwx?(qKC_8hL0l|6cUF)xUm9?&+i&IhWC32qVqT}D{{K4 zZ~_v%V7&@&h=^h{FD(jvoe0OMU}b{G@zRH)F+^`~0ClVrCrO@9==P-lndlzvPiZ5L zkE&0PDSS3el-L7vH>42(&cPCW64$w@cJDK)OK5S1K6uH-Y*QCN!TONBbsx4=Ibi>W zaKvN!97@lCCsXVZXTx_hAFB-isWXr-l|=9z zq0m!d$=}ahICnl?7h&Q#$oizs6GG~?hhqux&|uhILEbX^V3~@sctm=Wb&m8nm&DrC z^6d2d!nf2+Qe6@R8@MOswVo@%q3GG3T^}9O(tPE3sUOte1#pxTKFylLty*YXZwT-W zWSMaATX%Q{KVJP~gA0gRUC&hye<`A?WBl~ZDJB7H!x6qYW}IP7`akm;na?*+EpRz% z4UZ<=uy8$nUOdYcGp6D4SM?i4e9lQh9UxdgyVm{;eip4QtAe_t#^*B!&_LNl(d#Sc6HWfU-)bl%Jxvb)%?3}&_o@f8!FOR=# z>2xiQ*j;sT=!}Wf107u8-~FV$`e%r0sBy7vxw@co`l#zs-2nJ-ydk!~V9+CNz8kR8 ztn?n?N0Umm@-nXVXi|D`3Fi6Hey&Yid91Lm!0i_Ht8S*hc8!C2+Ur*YweLwC&qJ&J zo%Vv$l@?Y!_d=|2z=|P?p7(<*VGPsqOM?9#cv_`1LiL*S&a80`)K(%OO^38BOx&f# zv%TCMw}OZSS3s^2Pj1~a%qT^VRK`Md$VQVI4C^bLmzN`ueqaoU9W1}1#1cu&V;9?7YqTiEvdRk1t7_)f!IWGtN^ z!9Jk@5?Z)@ce=))W_u4aIUsHtgt7mVE#~&su$_&pp&{~a1HsSrTC3FU{@tg~W1ft3 zpmssg{LQDV9$c}v6c{o8(Sw*r=x5`h9+!x=X9-=ZAkaWz@!bdYi^(Q<_Y8d384MXO z$!UKS*%{itNd^oz-||*6eaavtsn2E}%(UbLSC*^^a2^(^64W_D{hfqo&PHtId)M?X zk|1YvrCl3Fjrr>z8a7fr6 zw0Q(BpJf;y3VYBQnw@r+vU9*&rdJ^n8ecsG7nQ9H#N;$Z52S=b`$c6pyYgA(x+ex_ zwEa?OZ8b;8#v~2nC`kMVwI#Y_p%YV#i(Taa+w@{A*J5{$e=KI8Zn#B5{X!J9=5)uc zs;(_#zW>Jc!fGEcA!-4|gGnf`@PW7Wcx~G50q+;s{VZ$37v#112XPOo9e?tgspi%W zV!?Z9LN3ObLsAlZjBcr{ebGD2t#LiYB6HfW8Il1-n)<^dLS@uP8)jvglHUp`QlpO&F$@+=GbD3<0J%brX{Qs?vsxW z35YGD50p(`=sL{-U9qZ`(Y6?rt`MH8)meM`D!<2QJN5sr==8p2{m8|3m|eJ8pQ&<7$RjvDLIYB1ht(KkG^sI&0-E@89)%Qxan@2{;pnIM04D2U&qZBG3b zmT3~rEGb(K?8%B1SL}G%SUN?cCYrHY9%zfc6ISbQ>AuE&o#9>fW_}UmXt53Ws!54T zgW{vVbjE$gcf(qWGCKZBnK)NlYs3*NYQ5v?;)jP4w+e2p-3NvkhRvEL9bNXNI%hAd zXo?T=VlX3MHgyZMapy-2Y|8QGNJv%uU zoqQ6hOo#)oe#uTZ(mkZg2;8`@GFq{MfGodkip3j z@@72EnG?UniKG(&R>U`L9mSemB74m4T;rf7T#9Gq-w+W-PK3tB(>^6iWjm}XR;IoYwEFDxa3|cVtcFp9zttA<8HZjr%Nd&(W z7=E&KQ_SDVHA2TRHh6uqUEU`KaGO=lFh^N}#%mZRyLYzsy|U#^q$L1*kNbpz&2xvFDVKtv*PQo;7&1q%)QV z9v5qJ>(ZE^oIlqdezXEww9{C|ye|DR5JDv+Ewu&IeL zapQ)h;~nG%aO&4%-8yF|Lwb+UH9pW0Mo;KHL7UVQS&ab2@E7NWRV@{*ar>g8H4j~O zxp9lKvhvT&8!}E!#2j=(U9u#pO|l(xxk)1cLCv2=tjy-;Q%Z`i+y8aBGg1NZ&w9)Z zofMk9XBR|U@@O=FAf zY~58bnI|~qUAI*^@0~NEX$;b1teF%gBrHBb-OMNDIe}pdLCsb*y6o{6jGy%tERVk6 zE4msJm&u05-(0=vdWmwUPIH=6Z-!Yq3Wv@8@YE0l%*|$hfjul~J!6;$e&7Al`c(?| zGzZF?*Zk5xK$ZA}7XXWVBY~o(!g>e0-1!yesocue{i`s$nc8Nj z!+)h3m}$ZfxSv(g4~7ynvq42z6lp|3EtRG`$}OAEfBuYqM?bn;l8IW5ozMtg z)(ajZK%^u-D=D<6=W+eGK{ya>pf@?OBwKbxYF{{NH)O}7dVWThT^{}=Z-VJd_C&@6 z?LWcx;f~MfzWPh!7HL0!8X2fWVQFP}KGmYUtY{f`{aef>doy)cc;KV?*71HRD^k^7`WmXGPAap10wTkCUfJaA$k zt#p8~mlPt>`uumT?^%oe0QQwKS?dYkSk7xckjJJ>vn@52Kqp|}S@*O4;a*;U$UsE+ z)rEG-#oF+IfBbXKPmS}fchizctgs~m@`28xAj6?zAn8qE=bEO5crEo;Ara|a6^cn> z68oTmKW_%$;d;_FHB2r3EsU!*Lv{Hv2muw9p*tsOk8=3yF;iu`Yz!Sg&-kW;dr)H% z{h|&`4ey1iFTcbJSqHI>#M>rc4eY`YIhePi*kep`H0YL^pvUU>(JCE4o)=&FM`FT^ zADqTkdowFya$+;y6(=dDN^MgTJ$YTiyn&YTSa`%)U}}F!ylT4*_i8qA5VCl`a&l1m z(sqc+9H`^yc&k(5S%>?`C;PMViYIT#d~cKbAmFFEXqLmO`SbHDE-Q0({PYiHz@F;d zUXM+sS*`IisQ2Yn3E3p9zI$M9`*4T;(}Uc*%!@tO$3)f(@(V_$0k>8qWoY1ihk{15 zmfJiRzy?YOPwjuH{A7y z=GSV=n#}YcyI{B&(5O;T^73Ixa?iH|Lm{J$q8HHR+vT0j!FTV%{mm-^QoiZYpb)IO z&tQ@6JMkyDq72r#rl@C|QLSI33^dv!H|l$3nlphu8$&uG8FoGu~RVV^FoUJfm2bdBzadEJ<3=ckIgLzJ)#3n7OXU) za9e^g1TeRBLO|ommk#gapTt59>59J^E!m2OVwpDBYO@~rg3uBC_Y;K$K6di(N>=U3fNm8*UBZh0xioiUY>Ue4XGeFuV$euR>N`nC)Dh8k1@~^~;q3P1FeGARvKVTd1GTMcOz#~3D(VU?I}kmX z8TBppCe?X7n<54{Z8%z5>Jmr^>U?I+7TS zf_1&cLL z#CK;B4OqLbenm_89@*VI5D|YDQZpNDPca#j7ksI7|#w;%|h*A z0d`hSZV%k+A?Td~a(?+d8&^|d_7Hx#^BMRC3PF`V0 z>}!*5KH=aaj8V8rjk#SGfM>aRWPtVo<|Rv^V*M&#OIIV2lM324A+b8SE7{a3=LgRQ zFrq@U609%=dV9dv)Oz0vaGM63uk9EznY&8k#(nEs*Xf;z>|!h6ufu&^w+9i~eVE-b zVg#>*>9U*X2o$2PSn_0x@|s$*1hPeki~A9F2O7T%Iq2!hcUix(k7)he#sXs9c7-+a z@wU(<$tOw^eTidPRQM1h_HOlkL;|+ZI#{+uFCg}6St*luQ@$5IPHEt`Umq;$jRFnM zNUVomRSV%^VDRhpC!WsTMApl*5`v8Gmc&;ky@{O2?=nQF9Phrgk&>!-c%S{gOVGK@ z|4-Xcv)2r!BA@y{>(~Fd`Tw`}sY0)lsce{i7U(7P9C?*`r$8{IAajvfVePv{WwV+1mgfC*OHf zp?`~U^_`Au2EMr=C5!1M?BjM!RTzlxe@@s%0_sUhd|$OvH60I+vp5|7{b#EqusFtd zgI$dNmh&E~V5<}5Yt!vFvzSYhcS6f$Zc)>iG#wc7%5R$jO;)8N4q}j*Gp_ytvdwx+ zdj>YvtlY9{e#tbJDRL(Kg9!yysH7VjR{Niy{X$`q5$ugW==K$0QSEcIQ^JHpC{3I#QEv`Ouxa zEOz72nLb+7ZG4$0{yKIHZ?w~%I)CQGWi+8x^YO;pYS}ds_ni`(xuPNR3dA`)a4E2-Qm!@+52%$dS2MD6xg)fqlk}Xdg7(yys z<6V~EU14l0F(352*BMncJYp0dVWEerMcLiB(f7vR&?2q5Q+`uS+x)29Y2C-cab2RBDGd){d zu18uW?RgEotwLl%AT^zM?F`^=rGi4A-A;;m{$W;>Nm0!$c(^vLZqx9{)EqZ7%+Ic< zp2U_{k=x*``;`<#Q!D?N`9&YI>JA)6mPxCX!9cw6Uf-vBBkxigdAjv|Jb5VmKzWTx z?kTz*yS{$WRI$@{k^6c~zqnh&2AbQDR?s~OFK;v!CG(80t)GbVoSqnlVbhPZ4TAKZ zlaDj@zxgp~r+%QTnH$q}Yzkcce!#Nk#24s!#T_0Ds)ZErx}RCuE!E5JWVEg=a7nTZRllK91Y4R; zmuF4X^SaWEi2@6;U8N}{vO0@C=@<(qI!izTLT zkdyZOel3;3UJ8$7=w{h-7{wt)&Y$y&Y}~*_IV$$a_v5R{Cc({OF)DX8aycTBOWbvolt=q^vtOBMfoMaJBXjNpnJzpC-TF`P9KmP#}r1G z`u}IpJ4cG8uX13PkZ`cz^#e#rwbxs~^De&b-xZC*UbI)!bPBD#DG2b!0096jyZ`;~0AC)7N9{)~&k(1fv*Cu70()uWSgXByn;K#`Ftu49LwJ|3X{FR= zP11fL3xky8)Wo$Yw-`h*qT|YglU?3^n=;-BG#KkCkVIuS*?fyT1IKnmUfv;08a$JG z>^gZz!r?7F>3|TC2j)yYnu};$9cR0JMk_gQyWDO}!270haJ%A|XZz}Y+cErwyL^(G zV-}3OJXg|CCK#EU-w2|jYR(}M38W8rmR)!#8cQn@rBBH$k%y5q7y*WBE8hboQLRq$ zDZOrJ3g$q|Eob%tncg24Gxi1^`F3}^M^Ue~MtFxkO*{_I4~~^Qm2-$_K0efXJa?Tw znOzk0aH|+^SKXyUk)Zi&rI*H6Oaa@^9MvWMMtHY{`k~)|`E7pPKNi+Tie|Lkn`v#; zkKb%dL?=i|-UhTKHk2G50g8$fTFLJXukmL~k>f7m)}zSh!F}K4B`JAHJMGmp)s@v7 zqj)a&2e*gY_XOFqM{y|uIqixC+3JU>no2|$+r31Kk^T+#n-U`@k^wjdTRfHx^v!#v zF)?36sHk{g84J$ zO|%SpCLnvD)CSV)n{1`!W6ZrO665T1b_XoXw{6`2h~S39Fz43aW;9L0cRK}kTRF@8 zAKdKkI^f`PFN3fd6?yRbBm*n)e?;(36afLDw0=K(&3-IEiN<1kODnM;J}ncs`08dC zH|e`oX5{e8;yv1y_vRMbRl+=!2uek3*1pE4YTKr>w(3nM=NQHZjBEIO#AwTKb!^V3 zK(~zeu_h{Sd1dzmRKyjosn^ld~0vyHP=VSbX#P6#wk3u`2y$R2*s&lT^1t zzm!}%!e#)ZetX(cljPFLDlL`Q7v~;-B*{Na=o*PU zpV#@E_viioiocjCU)?+t^`a!Oa}Up_f2cf*W+PT}fW9|)9RvP}MPtq%G0!f13>@v+ zpkAH-$}k-~X0K4YjC(aQo@VUHnBoLaAQw|ew>t2?SMR8PAwC*Ga5a7z!sbdzhzYOT z{GCsaW;MOFV_#fwsmrCHq}M6+$i|roJ6KJ(+47~nKjOnIC2sWkUw0H&*KduCah1B` z`ZE;yxz#{4B>%S2b7nt73_QDG@Lkfxp3c%Ev5KN?_+i(S9OH3)a42iMGg%T(Xxuk? zPi%f>%bbK@hSrgn=sYlQr9qv4Nisj2yt=iI=HO0|Nd!h<`fzOGjz=z$ONa9B z6I+d}ma&p|{i?3_M6wU7TIBu~3V*V^ntsHDdgrYo{dJbpLwSFTq5OV||LCI^w0kB) zei$3~kI-~Al^%PaQqrc(J8;Udx7-`A?v=}vBNJU(b1>(2RbM8xh!W2VV#I9$+dys+ zj~>$bKW0w4+6kMK{N-#!1M)Aq1b&rcUH?P?$7jOHo9H% z=0!aP1L(8imWuqmx$Icil29X-oyHv#xvh&$WmL^9eGdy-XN%`-PFX<^Pz{uCn+qBA zxGJiqN+o&0+aSR+{@~9$_xtI^Z0>@Uk0#ErM%wBsn?|&aQs^2ZfM_Q0&|5yoq2M4X zo>4#lmL4yY+yuXaJT6*OBA>5QfJ=j52^ZgmgpyU`S1X#Zm6w*eLPcmBm+-HhvX*#a zUi$d29fc}ZuFOC2n75eU+*7P9rXuCyv{_jg!E%kpzU=z?d_2wL-n9Th2_wJ{$q*EF z{xq0nYQ8fM1hdNq55K(LH}hNFRnmysDGR*&Px$Fl`=-R%m@Rc?=Ybjj zzc)=g446cnq^BBMQV)1Xh)YA%U*6i~^SV)c>MO!#+)~^r$d*${uQYIu5zZrwpK^5w ze8Bd-x7Qq7{dCM3GS)E0|9VT>w@o-*aCOEMR_%z_B};{ za!m>hB6~P<>qfQ-i7j#AocSG4)_}}z+l*i5<3|W zcEQq}8x9v*R4^t0j|^eKrrm>V8oW=3F^!0i5s;xv9FkE*Na2dSs5o?O!52rYJqBrN z-k5!2D=uj0=SP15nA7&B3{*lP$^~>J=z~hHj!os4SD&-k2Izb2bhBbC7wgtdX{M=N zvqx=Jqi~zWf0sn`5))_Bt3v^46w!Zy=8g6HZ^z*Nu`#IuLG{M1s=uHc+l9E%l;+V> zB>1Q-0j{q4d1xTW-3vzM)>n>n{%Thvr|^ViL0&5S_eVv3YCyUc;G~H?E9nf5a(?3#ue|!W>|k z!y6(Jq+-PtKRZaSh4tg)&_DsCEq-{4aAjrNvF+fA4doZQ^!wutzeHeyTYbr)qe4|T z6ocD9JnA^MZkP-vGclAu>$?$zMy}Erq@>aZp`gWuqcskI$Nl6UKDwAUKH&h>_`F=) zihI3OgXYOiR9d0(;V9#_Gl8$3x?TA32h#ZxcV}B0`hEXBLO$oy2yb!_+8!J!zx@U z^v@YZd5I1#+cFIZhP=6~b!Adf;VyhN+UFxh&PjEl%3IOA2?ge!m<%Wq69~I?yr=xT zjXYGg;Z_Z(6d_X&#@A)fuh8hnrchcuL^^q{px!~MfW67h`MvS zox{+mw4S#wdaLA7dpzMda$#?n*x#SH%r{j+F^8$SQzO%iPqVX9p6?I{KZT$SUpW)}n_ zMN|h-F9Bw7lB{*xZ3R)b<^oFpluyyS=O%ujJ@rtY(kb+*msf7J3{Y4p0+|AKb7=i? zKEin`nRd2#FRS)3^QdiyAc?-*mo6V|ZCTzg4S#ba=Pf(#loj@;;A3V<;x+_lq(R;c zu=0Lpf&P^`iqVxQ0dPzG$8_RE+5&ZO)N}2%UKz1txdx7EitSP>uygupfc$j_Uq)2y zA8tfNK%Mlz$kt;OVL{L9Ry5KynQ0xse+pw%jPq8yK;mn@IzS*Id;xQ8s0+Tp)|xxJHytV zY%Tq-95D;+09qj_EV6)B!`b}5=Dm(|T6RBquZsZ|m|tc$Kc|WU#E}iW=IOyS0p*2E zg?lBVR0?Pq6u==`+?VCo{aehLl#zh|F#F=-AsO0kHa5MK1zgs-xsMO7T(A1Gcp7K# zb^>E!wu%V(lOD`^)i^CAfxx?PA>+(cCPSPKq%wnh<37vPReFdrBWu{sTA zk=DNpBn3={l+><$HhtLLKL0>LjUp?yH_||ikC^e}AfCj;Gg(IQoP51D_*3u>GVCKe znMu_Xnx2K})X{!xkYIJFziaQ_J@V;$&DYIY!m|!T13>tmP1qhsa9vA35aV!!XXw`a zua~E+aOnfl66dJQLW#g|s&`rw4n-B>6M&OW^a;U9uHeJ5z>ILEI>OS!nyPt6bwRun zNJWY+ZiEa(C-fNl#|j9&ah?mCZV7Yq0hi#mHC4@iePK+~RO$E~!Uq^I2qFh^`PO6e zhU>gcP^6k`n4*QujxcI1L9^_`GgdbAPTd2O`Wyw?(pfL-Oo?uWCF1QnY!Z{DmYLv> z8zEWrUN(99I6!quD~Zh*gbIlfUYD4>X$wLx%1?Dof`T3JgXrJeKNA=#>qV%H4+)?} zay*0UZPo6Vp!_#s)=(s%CDx|?{C>&)HWg6GDH7tCZ03U4bvq%GXaq!r&!sU|;vZzh ziQO#PMOR>(=S^2>wZd-;mjHy30&4H`b*LJfs`1*wfEs> zD>04tmVfkRVjusS8%kC9t19stSdk}9=Fe#*OTPyLjBzXwO;0<5r0IM%`+1AT^2C@5 zOutB)wyy9w$VoUpNh_USP?pXE_nW_-?kQJ}ZL0y}-%o2tsl^@+!cQPTIcH> z+5}W_F(g*dj1qPy!AiOmOTRUE7#Y*4R9pxZ2>nHCHwHufO3Q2kCAl7EG;VD+9T<6bwAPVP(j`yluQu*It zu{*9-jh5dvciQ7zbGhpQ;wT@1dZysPk#wPv8uFs>+}Ut+7u(m;^ZHwswbZ9<)yN~x zx>1;$LE2Ay&E=q?=Y(EoeAIH#&S$q<{|1;;7tF7r^$j2_DTOJF$44>ASqGSZ#`wLyx&g`h%kG}JrSK7>Z@hIfKTHU0+g z+l3Qv!jwdZBw7;XgFXX3N(_mkDA#jm*7HjN(5^D!XynU9rX_gl)`~it%Ii;g?qiyM z6b@!~5h8VWB-b2KMc`|YlGui{%-RIN4zs_gX<3`;j{6rs;Md?X1@2=-M$6Y}RK`t} zMMhGbDi4LLC)O9G3c`uiexqtNVME+@Z4&+=!CNw@0R*4vVh#mS)$zu0*} z@}-m>YLYQn%XbXCbjl0z6M^_GoV6jX7QfW+m#R{=tNWW$uXr)rPmxN9CWFU#M!PpD zmg|0yi}x+jG}BxvH$&@GnnWhf_`Bnth@V-5?dDdeGx;WyMGy?tKA`PVq}f;p%4ONH0?BPj!u%Pa>BEvuRi;DL7OD^pPP5^NZWTQmG#j=Jt2OFd{F3F$F9q^5^pfQjjP87nf7WsEEFx?~!*r#-6gH&@+<0UyZAcn;w-;8IU4mSE$_dr_H0_WZwKLLr0@?9O z@0|d~VX|SWb*gg1d8yD^$f7aDMZ1H;!^_iOG2?3n#dJ;koV&G$m#RMd<35H7&qC~@ z&l7x!7Bii3820P+?$bTqV%K@8i53|cokoc6c@?QkdA>(Of2>657GyWcSv@Ag@(hy7 zfra0WY4~Xmt9$2=-=HYRA1TLDBANGt`?utl7(?cIO8lrBoC$KmK`I0HG23^Os)8S# z?2p^>R#qCqZFY<%-<8WJWQ`YLwugeRCZC5RYv=Qgz20+zf`wx(T*XEwa7mwiIH!w# z$Kr7+N_?kUEbsjurYT5^dC{FNzz7|AZ{s$vdX9f^&oA>kw>NzOk4BOFj{{{EwsH&Z zn6j{yHc@vzHVW-OVp;A^D|vap5Zp3OP)X#>v!lGo^gyrf6aGlya_FEsTmR5_aoIh% zG7s*4QK`5t!O44>Q8R$gn1Fic_%K1PDSW|<)G5$HLnF6=16*JpwleV9PhQEkZ1qvA zL@yCUfxH8_C4M62>r^sj=Np=vd8}WLc3_E8et&gJlL}LrWGJPL@B>bNoEXNi)Qc&e zND%5W@EP_MfloUyi!%;JkX_+W(n$SOjH-n4$sS#RE z^sEi(Bj1NfF6V=B8w$>5+}(*<{d=dkdfY{01n&r>RlFOoe0@1#MwY|pjLl(O?q-IpBIt!a3Uv~Qf z(&SG^dyS8&jy+Cb$QR9JwzG%^vQS4i3fU4`Ot!l^ zD*OJzcIhZje*E|wj4pWO@JwYlFn3|Hqr1ClAVKa}Gl3(7z9b5{ux=4W&$<(TC9tPO zoWnE@r-@XD^t1b4+33T^ZpvC`3n5;tl$5VM2W5#MjC^258F$4!FPTHvDOL^BN|3X2 z9>aFSG28(3v_kJcEoJ{MfX07Hq3uzv02aIR7h6VlHq?**+o3Y`G1s?4auJ)*AjmxU zc-qRu32NeAyEp_hfxZES_9hYX1pea4nBM`jX(Gr?Sz%5FaNnr+S?4V)TKcgL!Bc)h z0^=|dY(nV^Qra5p2&@(2zgNQ*hgBa%Xa*HiTY)y`OAkfh%TA0e39rz)o+({q;ExFT z#~}hDi8c)qs&;qb9=&YmZSjR{khX&84xbrLNIm zD=?rKq4KxL+KCo^uViLpSsL+F%ZQ>g)7qhi_k*w21C9KruA1U)md(WHeuTH!7|`iM z+=$1@6?e5Rl{W7OjkFT@FWM!J6B%`tlTSh0%Hzjj2$GuIjSR6?}sprw0r?TpJDib;spg#q79})1d_nL1w_QFQc|y=dPR8-W+~v`Qn)qxMCQ5M#4+F$i37 zu^r_Gs%eTxMU5Ym%)`Y&en$8hX#R~05g!@TGb@^VCM%x?Z0)TNZrH?^64#P-H0^Tx zk^C$_ImXm(2$Eqik-7=@QVDHg1DP7|GX9mK* z>D~L>Zz2xMMi|D{95L+6HGn*zjazq zey&v8TT60)Z9%4^3*kB7cG^(k6(6-xGp%H|5kP;XX6!R=QWS3g!`G-OkG*`PwcF~~ zmp_K_@28{hMlrgQ!q*4g0BsEWFB3o<^K!OPE{`Tu92|2mr9&agSMTRK^X*EAo%N($ z^Tu|bwB z`HsyzJieS*$?iAvFJgBs2BoY$H$^>9$(yl%EbM$NuVC9821s_~PI4ga9wapcH}F3z z9T~#Zuk>p;^96~!;24TU?Ws0r`0OO%6>|LGQwL#YNMuS*t1acfT47G4`*M{hk-|Un z3sU^_t8PW3a%dEk?QJO=@BVEe^|kY`RYuOlHhGIbec%7i=$DH-)dPhUD2@D-k-K9& zpc+w|4-qW(b45bE&E??o@_<7&`yLXc$aJo){ycpC5m0MpT`TJ5f`4fAORaj~$e+qz zZ?=%>LU84TU6`P)YS0P~dk5wNZV=KAFS&%Bo=r(pOB<~#q53df z|C(rob|*?PmLV~t4|Cbll|*7~Iw?NcL?d4qNBuI)Dnew1(>_^eQxT$)+ z4AQ4f+yUl6jP9%!uFRX9dLEVppKi7J;M$^j_E5I^GNkcPNuw8*V_Iu&(OGJ2(1&8v zr2Rq3@bOH&3C^RLD%d-)D(~n?X|p;@_tej0>{Y}OtJKT?AKd)!z1YHOr=;;6${NTj z*w8cO1loX#LaFzu$fVngBNf@Ed8|}Y&eBAZ(Fm9PXlToyG}5F=-Y%|FiMr6F1G!rY zsKoI#uwvg1sFPAdtMDBekbOD;JceL)IsLkF3VMN=#D&vOdkB*og^ilRm$(sGf0z25 z&X>58rwz0%)zi%Z!uN&Y-0I7>P{c!HLWg);fCqphSBOCv6+v-=F7ifbg4@*QZ9rm1 zRTEG~6VZ-kMP4X-^a#ilGy>`ZD-G4C|CvLf1jA15P^A359ig;K%vj6>ZUId|Bw;jT zl?{ju8rlpRHgf`<^6Z|wTVM58qKL2e3vTc}`Z*-OUZ@O_k*LvRwaUmmkO4+eF(4i` zWOnv}rxRVVbhPFCf%lTmb0$LbOg$0hf>G<@vMQYT>SeB_1-Zy`>nP}%9?^SKax~fO z!8g_J#!$0xvqin_m;+eBril9)Q4kIiK;xV%Yo|e1Azz}JA=z$o9HoK7wXM;0#yDkG zbo2Jbg4#VlYs=IzUg#oUOL^SBVnPiuY78mvM)ISU*6*u4R0c;svD2p5r01p8u;R5% z+lXXZ()pBrQ3a~;3Eb>wBtA~VzM515os6kTtUDAp{-mDI*y@sKTeW-4L{&tsmFuHT z=}kE(*jvs6liVXHo%u0K^~!r5%RseyH_|_MPCb98M+<;#S)~Rp^3@Xr&$pbf7e3of z=zdLy5h!xfkJr{6)9ux1HfL4~ncSzm;n;u!k`@fxG5{r4y0(;?Is`$RwuWons>UtRSnI~?eI-O;?(vAQo5Wgm zyJeY+pY_1~RCZKzsUjyMvrdz=wj{cFj9XB~(3Mg}qSS(NA* zXa^aY57CkPUF(6Oqm;H`^rx2RSNTe3>rJAt$~I~3C|L7Rg*W~yEb%(X`685Y^!|31 z=R8L-Wnr68)Z`_eXWN-y1Ywp(3l4o;U(nT28Hw(rn=N_UWxXLSJZ&U1Jd?}G)R{vw zmTBz4aF`jK{;EHy@0&+M2{oFO7&VS^NswNOde&APakeg%GBHs~CQV|*!Er9w!1@U6 z#7#YhDBFRv^c^l!d_oUWXZc!jKmE6-eeX{t`c2cIuYUHtd5n=oG(VJu;M^SPjg%L@ z!n=z@f9nKaJ4bjhY`6kI#sPwjw$u5r)s;=gz@gV&;6y!6Jt5w5{Zl= zxS~pA$u}6`&rtK9_K$3sz<$n0S)07i98GOIRh*TbIG#C`B zdK6Ds<Rym9?yRR84rK%M*% z_*A>+_=ycMOSiei1onelK;PUiB+KrCQeU(V(S~@j zHl2%mTY@xM*d%3K0_oBMer z@2TpLFVVr-dCs+)lf>Vhs7^K3iQ7J`(4xYe=w7FW79DMM+qlEiCe>Z(RAQt`L=dz& zRReDnz66YoAIO3X(-g{-gvAUp*&3s1+Jhiut!Yec%SXXodQF>w0FIpa_@C)o|96+z zzp?;nz|P5L_T*nT`UeKk%Bj!K^Pr@p=jY@i=E=Xy@&1pCd1`u)ZE|4rIf@$f+-XF* zyo1Z1>5oqBAXOiDnp!X?OVTUUvPV-Sp7tIk)w%<7B$GdkdhG~Q4p9c>1+Oo*PBAmF zPbKNh7W~HYtBpeMfr7Wq!pWVsY&;F@8z7|EN9GoUjyC^VO>`z8j(aoNAea0*+JVtd z8GN!6teJ15p}~a`MbKJ5z(((s%Of#=1jW?hb@#vpnIEsIDB- zyel9E!S~;ju}pcQEFj2lQt_oQeW7yhs7`rTe^wh5DYW2@4Twpe6p9l_dGc=t9zeO5 zNXq8Rk9ewfl7}F*W259{=~@ci1W#G~5n0DZgg>zzsGMI%udq=z20QLBpum{oQV%28 z$g}H^3-)9_72fp|{=u)G#D&k=zt5m@yC5RUfb<3%WiWdcKI=P083j{|HZq718ru8q zJN0cKAwHH3&46wj-(w1XvR#cDARmhf%+oB9DuQ5rr(^WR6I8^vG9OJ4BFN=-{W<`G zWb2?T`W3zlQkY4*#><+Z+U4=%_Moc>%*#OmHgpNMpTh%rkmZ~%(1{>jN_4QHl*@Ly zz{3>LX-(PXk@qOr%LB-qyr$}mqWas|(LwKfere+swN#o7Iz)k>l36QQT7QK%u|5E9 zBXgAW@?0|E84uv_F`ook;<%s{{_%jK56^ZMDasP`s$p6FwL2^^fom42#bk{1q3u}I#{OhYRc0be3RV8wS91{LK&kO| zU#Y-DqUdphyHiPk<@!^5Vp@r`hqBn5F_~4_Io}JIxwGc?#9KR4EB;GVN06I5p$JA7 zAWlf{R@s`(F{WrwM`^S7Ipk_J-`)sHcxwT!x#v}5dsKI~4PWk|CHNpn&oE64uxdtu zSJ}D_n}r}w1*WW0ZRMCr{6T}u`1o2^f|Hqh%XCfbAV#9&+xU@1Vzc)@$fYS5kXN)t zglQ{~v&YWH-2D}OyBE?sVcYBWt6dc4V4 zlPNO6nF@-OVW9zQ=?%_TL;kT7u8Vq?GZCT1;xTN}rz|o_tNp-;A~&z5I@adauZk=u z$MgAY&hqNs;8b{+N`{AZbjGBssl@|+lRo!b>kObN*6JS}2{l_I%*%7*sBv@Eb4<-r z6ndn5Yr!f?b6c2T`MGL}wV~cmNGzaWawS{^+H%`xggW}oegqxMZV_+kd`bHtC`C*x z%IBd`4av`VMg*QdIENT+8jA51out*(V9qZ(mJy5n76+T!c7wgCarpg`WjFO+fgiK| z*NOYNkGk(IqOq40{_yiFdKTGAuWTqsSr8Af+)e+_#w>WLhn;#H*XPR_4 zo=SD8eJRu07d2*Zx-sYb!4hry2XBo(3r;{<^Kma|9h{EskdzJ`U%7me1H;F>?5JA0WF}wB|rOnO*$_3#wNo( z-o8k9S}%Z=GwA}`J*3Ev@=C$eU);3P=snA!tc6K-hu# ze~$L5K&=GIsa_aR+WY8tw?gg9xZ@8 z7u#J-w^vngvL{yvH(}^*?gnKig$As_>zIX*v6;_L$ODc5neh=tpayV9iKE<6cu=0( z6yHN52#>H0F$ALb;zX0@6lt(yK%jN9b<*1PFgUp3q=Rz{R&$q-1zj+NUN+o|S+M|+ zkIsfEQiL~F-vy2EptEmI@!z=D-+#tIa0j$e$r#+gK$v13z zkw87H08f8!WP{KsAs_(0GHzHLcHUgOtv?n{w8f@)IW$mB`O?l8*pui80XBW<%3_e+ zFc=Dvv>zC$cC9|sX^S>&*h(BzU7NDgo)%l+!2q@)SH65%%~h3ph!pS+X| zNNXL()^OPjDIR1XD3m^5095f+IVr_XK~!qo0AMnpA^b%i|2inW6r97s?6j%Up`2Y_NdK z(f6l#V%^|vN+*;QCd)N?m=DH$8C-w8{j_G|0|74V4;h4$4i0O-*YHssdk2ohH+Yd< zgx0et0b!eYSAs9IJU+Gj4D>_L=9_DxecDe-avXSbyOYe#=~(Y;W`C!=hy{bH57m%k zL4W4zg_&!i$=PGpuT`@#VR;Is#w2%^hKz$}i<0B@%~h`N^yq-OF>ZS51VP*EqD;UR z!SE)#^a~_EW2_=JAbO{L!eLQ<#5~MfVid{X|L~8jfw8Lqw@Cg?QAC0AtzHz<-KK0e zJgH%)10cxF^fpO4SX~AxQ6X$#?b__@C)!$P_`}w;-?7yiR2Py_F(!Ez zL36Cd6ZY9fTE%nW7EL=&#XT`QGi+35vnzwNhHJJ>o_lsev&JEh&x~{n8=UD5pIN-9U69LG< zIQFzE?MFK<4%z!QHq6MRDIK}GPG7uo=w2MrP|$_UaafR4b|2@yLxn0xaI$y@4{DTl z@#LX87RM2qrBjTlJ54Em=e-e0PW(O#iB@I_-EsRR*cMZ-iKRMeiRY}X_I?nA*UG<~ zHwjF0U+Wb)v&P zq++z?0#!pmaxzYL_S?7T#kMx`Zz=Zm zZ?BjrOfGT5ZPt=3LEF!d9Cwi}Xc-YmPZ`YrQhn5U!1hD!KH$ybt_{n{%pO<5f zuqyaa6s^j=l@kwVpA8`xNP7I9?c28DOxKy zIiDrdXLTczFI0OMv9$GcWh~DVG5AjplA3j4WI}E1xv>Akc8QG|;p%vla(%dAFk@wH zxs)SsJx?87Wv%UtyQ{hcULIV^jlghyzdbR5QA8>lRqZU?&ir6^Y%cW; z*Yx**fm7|$MIL&JxuMPPV=GmNN&hzv&y5e;J;Dr2LT=K#6VBK72?gEW2l!ik+fWDk z_S{qD;ek`v-0Rh}688_O6W6q6<=R~`W8w09v;W#}7lrxrZAEV_!W#KT4epJ^ys^rj z)uR~3DXf_b&t!#Ot`1@^Wk+KdIM-wvEU13eiyr0ngXTKq^mx+wd(qM7$=G>(wp;;EvtTvjW&gY z8k(#%AqtL_a^^@kRQU_&az3Tz-=XoKHQ8=CLmDQo**GcMy&;NAsYJ+k$rHy%MMsy?O<=Rw+K7f^`%<+z-F*Au< zSdV<)p4bYX<_Q(q5&(6+*_O9y?Rrdn^OZ^O&cB&>YwT&yoM2(~b_-gMm?{W?~?uR+4aZaOYL@b)OvtV8|v(c8g zsXau5gW7dRx5{cN=7CwVvdnufROObC6CQhcm9cmO;2A%`gWMt7@VNnVEp|wvx$4IL zGt0@y*vaSX=V2~Sn6k?P3iK$B{=%9t^L(BMag+q4^jNiuRA+~iXCiLFDjA$={}_$} z@6kn5vUmu_F7IF>JJV>?zRm1$J>u?I4~#oJvn=juk=&)bb@cgBJ8ou(p#BHfuz2ek&SUDIO9R<>QZbAGVTpcrHk4hST= z$QT#Ru^`pD|E>U8W+_fphg)SX?3gPEFbm>7io)5Ps%!z!0mkusju~7xERM-q7>5ye z&SvV@*AEKgfkVL5rR^OFIhXW9lRo^r z2DN2JkN7y4m#Y@4;w{z#1D(BF@26T(FMQAOjq`wKgCl~erwr0Olk`BH*))HGif+4Y zKSTRVvrKmy4Q^-_(I~i=FY~Z^{UsnM1{pG*dZtrN8(?8rClj@8m^A*(rLC_-gVz9i zPuqa_rTnfSQ~7ek>q9D(7v|Y-2iVlHd&1rp0$BgddkM4L>jc)ukA15;`9oNCE1yn! zVP>YAnb}%Rhyj}U;Q6;rYfx?dvyQ)LPEAwHe9au(KzeNHok~JtQwL*egU{Sl?3Su!ZJSFKbvip@!heH6-lJzVl!<8qy*X74wQF zXQFWcO=pf{AiQ*b<&WF~?KvmLA?%&8Z&tfY7%=a%WWW_!j(pbU0%vJuRCRx@{;DH) z!K*;)qmH7yZKOB#iq_q>ZL(#8f76s&Bauf=z1dr#JoSvt3qm3fIB&bEPh3;pMKY5kc_DzXgXH zA3+=;{KYehBpQE%U=yZYV?sC~dwq@D$&w%su#v4gKa_C;kx@tt&A?K9q>jG*g;dCJ zp;j6q>Q7lGB`XlBPLVjBsnofZ=Pe zR0?+2l?%FEd4d4Y3tL!OY3H7f{gjBmb)u0M`eYh<>Jz-FMzAU#_M^&jNAAvMq^5$d z%dGv}<&F1sk}p zy~Ze<5ZyK%6LQz`=*g}KiwbzPctczB%-Nx?c0nZ*|VL$=wxD%+P?3vobYa^ zZ#)v@!Cd{%mmX>OMl3mw9f=x}L9n+@Qw)tt-B1U)6aVoH9Ko!TFuA>X&Ftk9fpL1a z)zxmCTV8hAkYL>(Cb^TjK5aYsW$+^6olg=h3Vp0A;^`@1{zhmQ1apa!k+Bxy>%VJl`~#}z*(FaS~OAf+aWqU(FKW= zAd{!>Y6n47qXFmgqa8EDcr~Ni?aaIe1j9`zU;?YF7!<+TWXm-&KuK)&yS5yCWl+30 z>%o+%09`~-%hw@cgX8`xGPoQr=R15*h% zOk1^_^R3bpOnT)(A>6#~EH3Gls4iBiA9nm2{c_(brv$Y%u~}V3Ij#BXs2uM`F-^+2 zk40n1v%D|iD29eD9YPTx1^ffN1OhSNy~7+reA9!G!>@B)Tu%bTxxHQ{i&O`aC;v|B z&Sg$<^#BJe+Sy#V<*LA=ex>@ylq>#V@1IiOuk{G7dmGW~GQyK3t6G%2S^E(R^-4#~ z!k}zKR`uWgLAhwedzDFq|6-XNUY|+U7DOuDp$5zJr!1KKToxRnPSSA>-dCLoi!mw+ zds6V&$RI9sR8N(^tN66)7Zb&bu9;$BxJ7+e?hPsUMw%tFm+wHfOBF>YW4pkq!d`Gi zz`Ajx!s_l44vN`c^WgZ1T^>$;UI~T_-HhHrBw*QGV>2ua|d)r^GqIH%puZ94xgqelr zQM)*G@s)q*6px;qIKQRZW0vPQ^{kKK+BI=*I@@{easrm2axlK&S#!O(KNJ%PA8Yv0 zw-H16dAtbEf#`S_>hnBokyW@QCAcftuXr}aLo{nmTffS1>o&yQKKI}=lZhlMea@~S z=e)~XVJvF@{-#kB=*qOdBWblraUMn^e12Z7TC6lX7!q_0ao7A)HN!(cB4}&U>CJQDQIkMje18#s?O5okL%lu?osOXlh$b^ zM03d5lSd$2zp?3pkrqEE3 zVNyG1XCwkM<>gXlXcwTAG^OFKp1k#xmpFZTyn@o>|-wV1*OML z?GrE*c($Bhq(uNbaZWc3ApEH2bu)ID>`iRbN>cb9Q+yO6sN_oFn<0j19UKP*9?CoV zHB1xu3@`v?_PCI3#qPKsMVB|h;%e3LCWjz8R6$!tp$LL^PzW+A>#skw$H4{;-I1R6 zGIbK&#YmSNc^lov6=g%GjDgEGdnR!;x^ksnZ&9^pyP>!#I%zKQXt30*F1^jA?MBdH{WXW8F)b0FqO_*2 z!lpT-j=jn*~B?LX%cy&NO8C=r$LUPo3{#GbeC^cD|?<{(DsSxLhyzakR4-_oDrrC{wC5E^Z(_Ll-72(<& zCB0UJo#+S>I9n!plqJ}-q}^EDroVi2lZ*57yoH*@6pn1O&nABl9$z|C&E`zBQ|dqC zxjAQAI`YBWQKn#q{#1N4cK*hxh@45Ak{cU%M}&~tQ=eTnvX!95=lsF~B{`5we5P5| zzkMQ+%S6MxFq&3!Lv~Wi33b*jbLo=+vRX@r4QwNdk4`Q&rw-h8CPEvh1$9lg?3Xs5rAl2iRcrD>tGNQ)sE>_<3;(UBb&r-^p(khpnn| zO?L0}s^Yd^7&Yr)O9oJyZE;?raK+x+AiN>PL(~Y1d`RU3m24VsM=`gfLQ{&|hVeZH zOyj?pnAy;)WnPul6?2+u>#@nX-af)WvC4KPSB`Au9|mpf&mEuz zN-h>3Qe24ZNhnLm$fG`D;Es9B>BKAB{}Sd8f^!>u4vK8a(J(Vntd(CTVhFo}qm6A` zEG3m3;dT@kw++{LV3z)kNp381i6MeM+F-l1PHkO^!HwA!;4g^=o?EKsLx?pf;uIb7~~q9BTD2Fu;mDsuxI@FJ2rmK2d9m3lPY(57A=z z?WaGdHa$pR=ucl-rt&TEK85{G8EJ zpM-O4O#&%CDaZ!?io;;>*wftE!pWFghhkCb{|y}f-*{>)dd)P!oj;hu^{tuwKL`-~ MkqNBkp;PSt0k)D_nE(I) diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png index e12cbe56b48362fd1318e89fa8f8a4eb641ec7e3..a52fcb1a7a6083561e4408748dbc22ddaff67645 100644 GIT binary patch literal 21509 zcmeIabyOT**CyI{f?IG&AV6?;5AG0xy99T4m*ByJHWHlR?(XjHH15(k)4cE8d;hw# z)~uQN=36trTE*(-^g31N>|Oh*XFq3Gg(=EQpdb<;0ssIMDM`_9008s^005Qv4j$4n zPt&&s`FL+9so@9!AYr}zK>xbcvE;k z7(je1_W5hf$O0)JoJ$2RVSd7VcCF?oNJBRbnxUgK|2iv|Fhhyog))#`iv?=XL0*6| z3^f;0DdhLpDAQ~$^ebyq&ZWUcFP!v?Ph7ru7KtVwbRh~P-s?ZIPZoK2a(gB7ZMhzN ze17r!`5(KipQ?u!vVIPinM%2?pAsYh;mfYr@uW13kxXoP>{fVTM@XKP+LyM9A z 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 diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png index effd1c06067d719ac872f867e7e4fb9cd14cbc0e..9cbaf5e0a98df0955210705ad0f4b0f42f354649 100644 GIT binary patch literal 22801 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 G-hTtC{bN4> diff --git a/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-container/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png index bd18995288f5b6776a808dd083fb97fd0ac11434..7ae07eb856a91f6bb1d07f8a067498d5e237f600 100644 GIT binary patch literal 24220 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 ZWjU$5cMEHA$npk94~HCL9yoRBe*uNHc5wgz diff --git a/packages/object-container/test/test.scss b/packages/object-container/test/test.scss index 313a442..5d574f8 100644 --- a/packages/object-container/test/test.scss +++ b/packages/object-container/test/test.scss @@ -1 +1,5 @@ @import '../scss/index'; + +.o-container { + background: #efefef; +} From 5fd40542064c691e0c7385268638f3650d09f1a2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 15:19:23 +0100 Subject: [PATCH 339/355] Unify test code. Remove inline styles from test markup, fixes #264 --- packages/object-aspect-ratio/test/test.hbs | 8 +- packages/object-aspect-ratio/test/test.scss | 9 ++ packages/object-grid/test/test.hbs | 118 +++++++++--------- packages/object-grid/test/test.scss | 13 ++ packages/object-island/test/test.hbs | 16 +-- packages/object-island/test/test.scss | 4 + packages/setting-breakpoints/test/test.hbs | 2 +- packages/setting-breakpoints/test/test.scss | 9 +- packages/setting-font-families/test/test.hbs | 2 +- packages/setting-font-families/test/test.scss | 9 +- packages/setting-spacings/test/test.hbs | 2 +- packages/setting-spacings/test/test.scss | 9 +- packages/utility-width/test/test.hbs | 53 ++++---- packages/utility-width/test/test.scss | 6 + 14 files changed, 152 insertions(+), 108 deletions(-) diff --git a/packages/object-aspect-ratio/test/test.hbs b/packages/object-aspect-ratio/test/test.hbs index 81e9633..ce8c310 100644 --- a/packages/object-aspect-ratio/test/test.hbs +++ b/packages/object-aspect-ratio/test/test.hbs @@ -1,22 +1,22 @@ -
+
Default (16/9)
-
+
4/3
-
+
16/9
-
+
21/9
diff --git a/packages/object-aspect-ratio/test/test.scss b/packages/object-aspect-ratio/test/test.scss index 313a442..25ab92c 100644 --- a/packages/object-aspect-ratio/test/test.scss +++ b/packages/object-aspect-ratio/test/test.scss @@ -1 +1,10 @@ @import '../scss/index'; + +.o-aspect-ratio { + background: #efefef; + text-align: center; + + + .o-aspect-ratio { + margin-top: 16px; + } +} diff --git a/packages/object-grid/test/test.hbs b/packages/object-grid/test/test.hbs index 2b364d0..0728ab1 100644 --- a/packages/object-grid/test/test.hbs +++ b/packages/object-grid/test/test.hbs @@ -1,116 +1,116 @@
-
Grid item 1
+
Grid item 1
-
Grid item 2
+
Grid item 2
-
Grid item 3
+
Grid item 3
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
-
-
Grid item 1
+
+
Grid item 1
-
-
Grid item 2
+
+
Grid item 2
-
-
Grid item 3
+
+
Grid item 3
-
-
Grid item 4
+
+
Grid item 4
diff --git a/packages/object-grid/test/test.scss b/packages/object-grid/test/test.scss index 313a442..58b9824 100644 --- a/packages/object-grid/test/test.scss +++ b/packages/object-grid/test/test.scss @@ -1 +1,14 @@ @import '../scss/index'; + +.o-grid__item { + > div { + padding: 1em; + background: #efefef; + } +} + +[class*='o-grid--'] { + > .o-grid__item { + width: 50%; + } +} diff --git a/packages/object-island/test/test.hbs b/packages/object-island/test/test.hbs index df4e03c..545cd28 100644 --- a/packages/object-island/test/test.hbs +++ b/packages/object-island/test/test.hbs @@ -1,31 +1,31 @@ -
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
-
+
Boxed off content.
diff --git a/packages/object-island/test/test.scss b/packages/object-island/test/test.scss index 313a442..0118941 100644 --- a/packages/object-island/test/test.scss +++ b/packages/object-island/test/test.scss @@ -1 +1,5 @@ @import '../scss/index'; + +.o-island { + background: #efefef; +} diff --git a/packages/setting-breakpoints/test/test.hbs b/packages/setting-breakpoints/test/test.hbs index 7b67343..7c89b54 100644 --- a/packages/setting-breakpoints/test/test.hbs +++ b/packages/setting-breakpoints/test/test.hbs @@ -1 +1 @@ -
+
diff --git a/packages/setting-breakpoints/test/test.scss b/packages/setting-breakpoints/test/test.scss index e6f0ec6..df7ad18 100644 --- a/packages/setting-breakpoints/test/test.scss +++ b/packages/setting-breakpoints/test/test.scss @@ -1,5 +1,10 @@ @import '../scss/index'; -.test::before { - content: '#{setting-breakpoint(s)}, #{setting-breakpoint(m)}, #{setting-breakpoint(l)}, #{setting-breakpoint(xl)}'; +div { + padding: 1em; + background: #efefef; + + &::before { + content: '#{setting-breakpoint(s)}, #{setting-breakpoint(m)}, #{setting-breakpoint(l)}, #{setting-breakpoint(xl)}'; + } } diff --git a/packages/setting-font-families/test/test.hbs b/packages/setting-font-families/test/test.hbs index 7b67343..7c89b54 100644 --- a/packages/setting-font-families/test/test.hbs +++ b/packages/setting-font-families/test/test.hbs @@ -1 +1 @@ -
+
diff --git a/packages/setting-font-families/test/test.scss b/packages/setting-font-families/test/test.scss index 88c9212..04ef539 100644 --- a/packages/setting-font-families/test/test.scss +++ b/packages/setting-font-families/test/test.scss @@ -1,5 +1,10 @@ @import '../scss/index'; -.test::before { - content: '#{setting-font-family(a)}, #{setting-font-family(b)}'; +div { + padding: 1em; + background: #efefef; + + &::before { + content: '#{setting-font-family(a)}, #{setting-font-family(b)}'; + } } diff --git a/packages/setting-spacings/test/test.hbs b/packages/setting-spacings/test/test.hbs index 7b67343..7c89b54 100644 --- a/packages/setting-spacings/test/test.hbs +++ b/packages/setting-spacings/test/test.hbs @@ -1 +1 @@ -
+
diff --git a/packages/setting-spacings/test/test.scss b/packages/setting-spacings/test/test.scss index 5b50f00..590a9b2 100644 --- a/packages/setting-spacings/test/test.scss +++ b/packages/setting-spacings/test/test.scss @@ -1,5 +1,10 @@ @import '../scss/index'; -.test::before { - content: '#{setting-spacing(xs)}, #{setting-spacing(s)}, #{setting-spacing(m)}, #{setting-spacing(l)}, #{setting-spacing(xl)}, #{setting-spacing(xxl)}, #{setting-spacing(xxxl)}'; +div { + padding: 1em; + background: #efefef; + + &::before { + content: '#{setting-spacing(xs)}, #{setting-spacing(s)}, #{setting-spacing(m)}, #{setting-spacing(l)}, #{setting-spacing(xl)}, #{setting-spacing(xxl)}, #{setting-spacing(xxxl)}'; + } } diff --git a/packages/utility-width/test/test.hbs b/packages/utility-width/test/test.hbs index e95cc09..a4ef221 100644 --- a/packages/utility-width/test/test.hbs +++ b/packages/utility-width/test/test.hbs @@ -1,29 +1,26 @@ -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
-
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
+ +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
diff --git a/packages/utility-width/test/test.scss b/packages/utility-width/test/test.scss index 313a442..f2b460d 100644 --- a/packages/utility-width/test/test.scss +++ b/packages/utility-width/test/test.scss @@ -1 +1,7 @@ @import '../scss/index'; + +div { + padding: 1em; + background: #efefef; + text-align: center; +} From fb4dacc272894b003ffd83487b1e7cc9f6dfb930 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 16:44:18 +0100 Subject: [PATCH 340/355] Fix the width utility package README mixin example code. --- packages/utility-width/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utility-width/README.md b/packages/utility-width/README.md index c0b5400..263862f 100644 --- a/packages/utility-width/README.md +++ b/packages/utility-width/README.md @@ -61,7 +61,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on @import '~@avalanche/utility-width/scss/mixins'; // Usage. -.width-1\/12 { +.width-6\/12 { @include u-width(6, 12); } ``` From d7a01244f6e64c0c5e7e9413d058bd2e136f8b44 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 16:46:47 +0100 Subject: [PATCH 341/355] Whitespace --- packages/utility-width/test/test.hbs | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/utility-width/test/test.hbs b/packages/utility-width/test/test.hbs index a4ef221..c15baf9 100644 --- a/packages/utility-width/test/test.hbs +++ b/packages/utility-width/test/test.hbs @@ -11,7 +11,6 @@
11
12
-
1
2
3
From fde6773f23b3114489813af707bbfb502dbede44 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 23 Dec 2016 16:53:44 +0100 Subject: [PATCH 342/355] Update the offset utility package to v4.x.x standards. --- .../utility-offset/{.gitignore => .npmignore} | 0 packages/utility-offset/LICENSE | 340 ------------------ packages/utility-offset/README.md | 72 +++- packages/utility-offset/package.json | 25 +- packages/utility-offset/scss/_index.scss | 38 -- packages/utility-offset/scss/_mixin.scss | 17 - packages/utility-offset/scss/_mixins.scss | 23 ++ .../utility-offset/scss/_style_guide.scss | 8 - packages/utility-offset/scss/_variable.scss | 19 - packages/utility-offset/scss/index.scss | 250 +++++++++++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 11788 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 12984 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 14097 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 15284 bytes packages/utility-offset/test/test.hbs | 25 ++ packages/utility-offset/test/test.scss | 7 + 16 files changed, 379 insertions(+), 445 deletions(-) rename packages/utility-offset/{.gitignore => .npmignore} (100%) delete mode 100644 packages/utility-offset/LICENSE delete mode 100644 packages/utility-offset/scss/_index.scss delete mode 100644 packages/utility-offset/scss/_mixin.scss create mode 100644 packages/utility-offset/scss/_mixins.scss delete mode 100644 packages/utility-offset/scss/_style_guide.scss delete mode 100644 packages/utility-offset/scss/_variable.scss create mode 100644 packages/utility-offset/scss/index.scss create mode 100644 packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-offset/test/test.hbs create mode 100644 packages/utility-offset/test/test.scss diff --git a/packages/utility-offset/.gitignore b/packages/utility-offset/.npmignore similarity index 100% rename from packages/utility-offset/.gitignore rename to packages/utility-offset/.npmignore diff --git a/packages/utility-offset/LICENSE b/packages/utility-offset/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-offset/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-offset/README.md b/packages/utility-offset/README.md index 1568c68..3b3bc7c 100644 --- a/packages/utility-offset/README.md +++ b/packages/utility-offset/README.md @@ -1,24 +1,76 @@ -# avalanchesass_utility_offset +# @avalanche/utility-offset Offset classes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: offset) + ## Install -``` -npm install avalanchesass_utility_offset --save +```bash +npm install @avalanche/utility-offset --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_offset'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-offset'; + +// Import just the mixin file. +@import '~@avalanche/utility-offset/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-offset-4\/12, .u-offset-4\/12\@m } from ~@avalanche/utility-offset'; + +// Not a fan of the "u-" prefix? +@import '{ .u-offset-4\/12 as .offset-4\/12, .u-offset-4\/12\@m as .offset-4\/12\@m } from ~@avalanche/utility-offset'; +``` + +## Demo +```html +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+``` + +```html +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+``` + +## Mixins +```scss +@import '~@avalanche/utility-offset/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_utility_offset/mixin'; +// Usage. +.offset-6\/12 { + @include u-offset(6, 12); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-offset/package.json b/packages/utility-offset/package.json index be68cf8..45dc6d9 100644 --- a/packages/utility-offset/package.json +++ b/packages/utility-offset/package.json @@ -1,25 +1,24 @@ { - "name": "avalanchesass_utility_offset", + "name": "@avalanche/utility-offset", "description": "Offset classes", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_offset", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_offset" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-offset" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_offset/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + }, + "main": "scss/index.scss" } diff --git a/packages/utility-offset/scss/_index.scss b/packages/utility-offset/scss/_index.scss deleted file mode 100644 index 95d9af1..0000000 --- a/packages/utility-offset/scss/_index.scss +++ /dev/null @@ -1,38 +0,0 @@ -@import 'avalanchesass_utility_offset/style_guide'; -@import 'avalanchesass_utility_offset/variable'; -@import 'avalanchesass_utility_offset/mixin'; - -/* extract utility.css */ -/* extract utility_offset.css */ -/*--- -title: Example -name: utility_offset_example -section: utility_offset -order: 1 ---- - -```example:html -
-
Offset 6
-
Offset 8
-
Offset 4
-
-``` -*/ -@for $-size from 1 through $u-offset-item-count { - .#{$u-offset-namespace}-#{$-size} { - @include u-offset($-size, $u-offset-item-count); - } -} - -@each $-breakpoint in $u-offset-breakpoints { - @media (min-width: map-get($breakpoints, $-breakpoint)) { - @for $-size from 1 through $u-offset-item-count { - .#{$u-offset-namespace}-#{$-size}\@#{$-breakpoint} { - @include u-offset($-size, $u-offset-item-count); - } - } - } -} -/* end extract utility_offset.css */ -/* end extract utility.css */ diff --git a/packages/utility-offset/scss/_mixin.scss b/packages/utility-offset/scss/_mixin.scss deleted file mode 100644 index ce6c3bf..0000000 --- a/packages/utility-offset/scss/_mixin.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import 'avalanchesass_utility_offset/style_guide'; - -/*--- -title: Mixin -name: utility_offset_mixin -section: utility_offset -order: 2 ---- - -```css -u-offset($-size[, $-item-count: 12]) -``` -*/ -@mixin u-offset($-size, $-item-count: 12) { - $-base-size: (100% / $-item-count); - margin-left: ($-base-size * $-size) !important; -} diff --git a/packages/utility-offset/scss/_mixins.scss b/packages/utility-offset/scss/_mixins.scss new file mode 100644 index 0000000..2fd03fe --- /dev/null +++ b/packages/utility-offset/scss/_mixins.scss @@ -0,0 +1,23 @@ +/// Offset helper. +/// +/// @group Utility: offset +/// @author Markus Oberlehner +/// +/// @param {Number} $size +/// Offset divisor. +/// @param {Number} $base [12] +/// Offset base. +/// +/// @example scss - Usage +/// .selector { +/// @include u-offset(6, 12); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// margin-left: 50% !important; +/// } +@mixin u-offset($size, $base: 12) { + $base-size: (100% / $base); + margin-left: ($base-size * $size) !important; +} diff --git a/packages/utility-offset/scss/_style_guide.scss b/packages/utility-offset/scss/_style_guide.scss deleted file mode 100644 index 4963c43..0000000 --- a/packages/utility-offset/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Offset -name: utility_offset -section: Utility ---- - -Offset classes. -*/ diff --git a/packages/utility-offset/scss/_variable.scss b/packages/utility-offset/scss/_variable.scss deleted file mode 100644 index b60d9c6..0000000 --- a/packages/utility-offset/scss/_variable.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import 'avalanchesass_utility_offset/style_guide'; - -$u-offset-namespace: '#{map-get($namespace, utility)}offset' !default; - -$u-offset-item-count: 12 !default; -$u-offset-breakpoints: (m) !default; -/*--- -title: Variable -name: utility_offset_variable -section: utility_offset -order: 3 ---- - -```css -$u-offset-namespace: '#{$u-offset-namespace}'; -$u-offset-item-count: #{$u-offset-item-count}; -$u-offset-breakpoints: (#{$u-offset-breakpoints}); -``` -*/ diff --git a/packages/utility-offset/scss/index.scss b/packages/utility-offset/scss/index.scss new file mode 100644 index 0000000..5aff291 --- /dev/null +++ b/packages/utility-offset/scss/index.scss @@ -0,0 +1,250 @@ +@import '~@avalanche/setting-breakpoints'; +@import 'mixins'; + +.u-offset-1\/12 { + @include u-offset(1); +} + +.u-offset-2\/12 { + @include u-offset(2); +} + +.u-offset-3\/12 { + @include u-offset(3); +} + +.u-offset-4\/12 { + @include u-offset(4); +} + +.u-offset-5\/12 { + @include u-offset(5); +} + +.u-offset-6\/12 { + @include u-offset(6); +} + +.u-offset-7\/12 { + @include u-offset(7); +} + +.u-offset-8\/12 { + @include u-offset(8); +} + +.u-offset-9\/12 { + @include u-offset(9); +} + +.u-offset-10\/12 { + @include u-offset(10); +} + +.u-offset-11\/12 { + @include u-offset(11); +} + +.u-offset-12\/12 { + @include u-offset(12); +} + +@media (min-width: setting-breakpoint(s)) { + .u-offset-1\/12\@s { + @include u-offset(1); + } + + .u-offset-2\/12\@s { + @include u-offset(2); + } + + .u-offset-3\/12\@s { + @include u-offset(3); + } + + .u-offset-4\/12\@s { + @include u-offset(4); + } + + .u-offset-5\/12\@s { + @include u-offset(5); + } + + .u-offset-6\/12\@s { + @include u-offset(6); + } + + .u-offset-7\/12\@s { + @include u-offset(7); + } + + .u-offset-8\/12\@s { + @include u-offset(8); + } + + .u-offset-9\/12\@s { + @include u-offset(9); + } + + .u-offset-10\/12\@s { + @include u-offset(10); + } + + .u-offset-11\/12\@s { + @include u-offset(11); + } + + .u-offset-12\/12\@s { + @include u-offset(12); + } +} + +@media (min-width: setting-breakpoint(m)) { + .u-offset-1\/12\@m { + @include u-offset(1); + } + + .u-offset-2\/12\@m { + @include u-offset(2); + } + + .u-offset-3\/12\@m { + @include u-offset(3); + } + + .u-offset-4\/12\@m { + @include u-offset(4); + } + + .u-offset-5\/12\@m { + @include u-offset(5); + } + + .u-offset-6\/12\@m { + @include u-offset(6); + } + + .u-offset-7\/12\@m { + @include u-offset(7); + } + + .u-offset-8\/12\@m { + @include u-offset(8); + } + + .u-offset-9\/12\@m { + @include u-offset(9); + } + + .u-offset-10\/12\@m { + @include u-offset(10); + } + + .u-offset-11\/12\@m { + @include u-offset(11); + } + + .u-offset-12\/12\@m { + @include u-offset(12); + } +} + +@media (min-width: setting-breakpoint(l)) { + .u-offset-1\/12\@xl { + @include u-offset(1); + } + + .u-offset-2\/12\@xl { + @include u-offset(2); + } + + .u-offset-3\/12\@xl { + @include u-offset(3); + } + + .u-offset-4\/12\@xl { + @include u-offset(4); + } + + .u-offset-5\/12\@xl { + @include u-offset(5); + } + + .u-offset-6\/12\@xl { + @include u-offset(6); + } + + .u-offset-7\/12\@xl { + @include u-offset(7); + } + + .u-offset-8\/12\@xl { + @include u-offset(8); + } + + .u-offset-9\/12\@xl { + @include u-offset(9); + } + + .u-offset-10\/12\@xl { + @include u-offset(10); + } + + .u-offset-11\/12\@xl { + @include u-offset(11); + } + + .u-offset-12\/12\@xl { + @include u-offset(12); + } +} + +@media (min-width: setting-breakpoint(xl)) { + .u-offset-1\/12\@xl { + @include u-offset(1); + } + + .u-offset-2\/12\@xl { + @include u-offset(2); + } + + .u-offset-3\/12\@xl { + @include u-offset(3); + } + + .u-offset-4\/12\@xl { + @include u-offset(4); + } + + .u-offset-5\/12\@xl { + @include u-offset(5); + } + + .u-offset-6\/12\@xl { + @include u-offset(6); + } + + .u-offset-7\/12\@xl { + @include u-offset(7); + } + + .u-offset-8\/12\@xl { + @include u-offset(8); + } + + .u-offset-9\/12\@xl { + @include u-offset(9); + } + + .u-offset-10\/12\@xl { + @include u-offset(10); + } + + .u-offset-11\/12\@xl { + @include u-offset(11); + } + + .u-offset-12\/12\@xl { + @include u-offset(12); + } +} diff --git a/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5babc5e1645e92b944e89c1501c849dd3755de3c GIT binary patch literal 11788 zcmd5?2{@bix)0jwbdj0U#Zela+B#KqthEFkGu2elGg`D&bS!CWZDNfO>Zse>qN21x zg3&UDT5FexYDBnn-OyBtj(jqcdk_?wz^ko@wv%9M9w7`+M^FfA9Z&-{10n zch1>a@7{4>2M7e(4Lkkyw;+(z3JA32{`PIa%BR&==7Ard1fIT#1c7$$+4ztd3$V{$f7Kv- zuc643o&ME2hD0flqeEfurK(X0{l;$KB8e#mElFy*!IQk$EMfip4eBpAL~}h)b{qgZduL1wjTa2ogTq0SD9V>*pOBd0KNz zb{HofMPDB~PeAkB={C_`+s(Me#|)q#=d|D1!TcFFw7Fcdr!=@hb4iEzK(%)DM}bkp zmM~3V#R{K^4s;6{(o0sw)nEeV%uN_v^%3QPPF{3d&XB*GFG>bfl;>Dj>Dzpz=|dj( zcOvvGha)w8vVMs4hPMrL<9g+#Hp9Vve4ZG+Fhqg!R~ijh5FV6=QK zq|(r9jT?BoI-o5PI*#M$6L<8P$H=BvaD#3O%|nz5C_u9uM#g zoyQFgftWVtkya;Xq9)LZ81Kti&zbRlwz6TuWI^LfVMC@TvSP{I7P%Fy@7=-{A8&C@ zioiaWtPUQ>sygMD6#VVn-^nrw3WIf8G6CkDkzX*)AMQ$+ZFhIb&E8%;6{Gn|Xx*}O zK7@^{Kb1j{_92jEoc>M~<|-&=b$GBP$CQymxp^E}rsMLXc3Y2ey3Owi zIbz$N&Gp|L&@c7Uc{@)w(Cb?DfPBU|3_=KkJQV7T+6QI$y4K5g|o0QQ=yi#G6U-btYqt?s=)gSQ@%~T<%3* z)c&Hw)l;ys{m{5zDtkEN)#6I~X+mbCwnwZj_*Pr97Ro(R@ePi-vfQOwqEFo7m`awJ z)Y6Kypg4!rpx_5T3(I~$6up1adBdDBXGMuZru!~?~ zLT{-E=8=q|n7TX)dZ92LF;LnTdgCHTp@E$8^~e`_1C+72Cy(dX6_lm|P`i0A&crZl zE?I#bZ6%i5g7Lvry)e*`(<4&Zhhk)-Z*75qcKqefFJ$kw1xMTTzHhT5XS!}wruo%q z{`vd;w5O4S??U#|Ifg{(Gz~6j{>7MQl-G2XlK9nEbQ|}J(%?YKe&ouY2)z`~>=KSv zsacF{&DU@_jCQ;(RyDkGRIBtaz{(cGI~@NWD|v2TJSP%xki&jx1i+6I97l723a4?xk)&f*juhvT#dr@Nk1lLmK27c4*l zFbNPbNIqtmA>NTQjE(aOhTqh+PNaG>ugL1&cUpQ^h(~i(LMJ?AY{9v}F*|!Xw7f!U z8?i_vjaF@U(g!D@An;VwzDhXxPIw?89z8=2nRIo*4GfBlGZpQx=ji-Js(-nM8|> z49JW0vTsL*zL&k$$@O!i?g`zkrpIhux@%jK1MKSBo3&y)tWWnlAJiwQ+s!PS(_Cj& zRq7GMYC2Nk6EpHr6UmhL*(D=3mrjRa8I)#5gs-_ZMC@d)-QuOj1r`1<|D&q$L#yhf zyxtpL>=j?}5Q8zJoEECBGyi>j+l%_C+Vexy@3fDp*>KueC$F-HE^@B$NEA8u)MfCl zyhhGv57_&mf6%`FCA#ze9vdAWRG9ysSOkVYyY$pcac;+l^$wuck6gRyuMSt&&?9#G zp?2*4EG+sf7B#b#bnvOKB1sFg;^vJQm9^FR{tLwn2ne8al#21Jj{GD$FW$%=T)iZ1 zmp=5)sZY!-rQnIA{eonfe8f9(R~|cXYv5go`_s!|CW0h;HHFtt8@U4Go1!o~^9c33 zw)5Zrt$0MLuLfr!9B*&nS1Uyzbd|+zcQOeuUBn@FR>YBkbiB2dOOs5|O{Qc{fZa?A zwgw4%r$T2Ur%RQc$YLsG`G+Va02?-#`>}8>MOB&P-!^S+$WDv}tHE4duNgi2&pcpb zpGn4_cPnC)Ys4xFwu@(w$ZL1b8es@fp^}PGr;l}WafO5^^-Wys2fk3m1+qFw>hbhb~ zRyG>@ff(=)9C_Obl&g`?ds^Uga+8Gsk^UG!vtnImT!yi}^t8`jR2z=|k#p1K`wgN! zvO{kTGfBv2Rm_u{&{Hyz7teGHLYdT+F1irj?{^(_@F4(oD__#tq>T71TnAoR5k2l4 zx_a$ZlGw{%nCiD%dmR7fSNkU0qxi#)=Fp`;7NK5G#y075Sodb*hI2v3N=)$@%J$~M z3}tzN!Pg^F&V6Im>PVBzi#iy}tgv!(#i%jrh(aw?f=1G9!ZZK|RxMba6%IwT=+-P2 z*52A~1`3#tuVxFP&_8g#Xt0t7lLuB={TkSuNPk)hpi0P>r|sC37Pj7M$q>QqE?N#! z^ZkmFDD_E2&7)m%t6_utu05eOt*M)WhWp6bK7z{ETBwhU=OAaBx3m10c}AAlk5%XH zsX-OTjULv7{20$qZ2+ElM*Kf~QPb#aGmFZpQgtLxISbx;IPYs#bc2S>|Ov z`d%V8P1Mvp?%80^BEsNE4o*w4G5`-*xK$hwB0EoKJiI#10 zteKrDwLV8EwJmxf^e|RB!4atOPKO~z0ITyXVkC6FwUdPxb~89;`stqDx-=bqVzD;x zkonr}7$X>B`GSR6xj`s;)E$cxEjO(3h=;i#Ue8Fda>qIBoe~M#h}1MUsEkpe%-x$& zx)ylRPa13);0I~zw}WQ-C`-_Wl_8$}iH>~8EG-#MdN7(-y^rOA0L@1yQHb(G$Fv(V zpYSHrJ7PHjDC&Xg?v@F3*KSbZV~f~~$jXizH}8IM7ypGtUISVWsHWk4`gBG-b@XA} zuD|ucG}F1+CXaLT{AcQI^N(zy~Eb3p7E8aXRA3EoaAC;-8(o`LOcJm za;pVY7YDR+?OBEc0~&m!-aJ^pc+yRU3o0^Znk>(!_)?xW)-6@a#OBrtMu#XpVT2RR z>p=slUjdb!yKRwVw9d~tXru}wtFJGjy{ot_!;a)W+?!t%FSgkT8aVdmB5 z$CIH08d0LbwbcWcg1s0(8v<#Ugw#itadsCz8MxTqW;0J?Www$0A`qx4OV<-?=Kv+( zyYJ_!j5a95xF64;cigGRXym6TiH6pv56?Y(4iNml(zwhTffIuE0?j{&YhTY@6mPVe zbUNNNrCBg%Q&agwPZ!@4c8X@7lU-8fAW2b}fTI z|BqBc(@rzXFQ-4}7Ab{QPkoe*{vH)JSabC9dtTA}Q^|d}d;rzqgX#hzZ`{19joi62 zJcI6Z49JUvm)m>pG&3r%`^aHDMqBKI;ku;!RKI}$3f^O&0_Z;}NFR+QAWEw}cxvpL z`9l?JIWKieZ)AXZ?IUZ8N=@s0zSp||0u4!{O}5U_8K!8ry#CYUTOrZQ1(*|V=_gV( zl%Xqo@=e%TtuhW2jikZkQL(B*D@is{71t_Ru+}Ri@~&)TQRS2B6MTGu1q|z3AJqnA zQngD~m#RI~827Rl$0q=}D+aWi!a*ui z_pp;D)BI#QY@LcO+#yMy-2S3K|xzXjyY ze-j~p+Oh*}(tc3jllL1heb4Maf-lzTF=WSv;xR@5g+e{9KaL*<&r$NOVD86--V_tx zgyAGm&>D}* zJT45i|0CK&2w$hq>MdPwEL@rgTqjF#5Il=2&IowDQVZl5;mR5UQHP|knT5L_&bmoQ zAAaA8iyr^X`~Eer^PdTb4IBk=sg-~*Y{Q3c{fGzlFWa*JY^(owuebAds_TYvT>R=& z&`5XX$B{bm!H)+x`cNrnKuJL2y?RdqIV^^(6bZ1D`;C%X4Aw^Z8&2z}}6KcMc;@~#rzT08n} zhn$q-9kSKUAx3_Mgq5Kir43Urhxd~*Gx@2N=Z5}2p7ev!{`d4kd~i-iTy1T;)-glq zmW>#`?68HVUwLZFFgME_1?Zy(EzH}*wnQ3bJCai#m#^2rju8zuSualPN%CZ#)3pfJ zuO|f_9?Gkhf>r_)(Q^K5Hhy;Z0rX|GbHylE++S@<4kbHFS(g&R{?-fSu8#16=g zfrVO&_OkwQf-0xc+~}SvrI+J#V{hrvEs!0Gzhe$ZUjQtaA{DmsL7D>t51%^#sM<~s z;KaXXi@NS5&{$Nl{O;VM%kO&iInn+uv7CK(x- zFMKtpJS2KmwjgW&qJP-(O7Td}vs$HLz4SY(Yt;3qIRe@Mwn)5l#|7#6T5&eJbhjok z8_?%237?ZELs?UVK@;;-t;<-U&?rlxqk!R{a3RdO0uWH;yXC_`&asX=8URW2aofTF zy~h4G3!-QzzP*F$9pazE`J8<8Ga&y*+jALRZ_`KdrWMGrh)YHmk2rSp!f4k$VL$ke zGVTqnTKZ!UN9lA2V?@g}#GErkVy|bbBZE3Sl2iIp_z=m|t1v!pnECW_e1#;ZUhl!< z^-vpIdl{5(^BJ8D7u(5WduIe)gAeBsvR?NLI_a8q@(zp;ul?j}7s>3@OHp7}Yvu~f zQhi}*E@Z24Y4Bw5q9}{>06cs=4Vb}XwZ4HTdY5r7TH4os1D=Ml(R0M>$C7CGCMXQH zuHhSC05pWS3t35y!3z`IlmRaQnEycbggL|0(nwjJ$4p&_R@bG$fOl+>e#MkOF-2$7 zZOczY9u9@1Q<@ysHe`#XJ%EXE!FfsW>8Z#75y@*RML6aJo~*k1aK5zfDQ}l6kUstz zcjeQtBmq1y8<;ncy~@8GF)Hr+H2d>)8HJu;=gH8C5EL>j4#WC!d{8?(kw7&)cY%m{W^I!|j>*6$ zjtfV$gh@u`$#BRp9+>|qx$oO;)Dm7zzf7W9~@Mw;?6Zc%-cZpHo*;6AIlkf4?gT2|_i`_OAFjtCzq?b~=Rrz7; zYr`VmEr6fjG`J0V$Qbhs@g2wzR-0m4Qm$jdeGTNL9{z39^ziSpx)9r#38&dTA@)2Z zk)BNaND^^I2M|mL8Dqq|Lg6Gh@&`_wCHNDw2fbNOt(qCDc`7;q^@gxTn*U#^RWaU< zQiaWWVb0d8+lpb`S;q{BTc!+XBU0|WF9A0HMZm z(s=4PonSE#n!ql}fNbUUY@i&p>I6>38eTD9EThm`7{1(VXTFkbx>y#I7cWIr<(?bt zDO<>FOQ@Z%Xv8U2`6U!Lua4}8p6@eG0X~I2>q(=I`ubHO1i21Cw|8v%1;MiAO>p?A zFLfdXrs4bv72KnAd+bcaj4uf>aISeETJZfQ1&WCe_FSDHDy)mfDVU?5Wq&Hu00xO0UmT=VGU)z*~V3V)Z4i9j0 z^kd?mQ!VN&p7wPZi+Dj;&ydAHJ|u&d94|>tYC8!SdU4BFQdQZADSj8A+h&xqIvPz) zGuE3I<$A;Ap?mvhkFlPATmFFL3)vg;!*@?Yy8vtFNHL)6);IDS5BLxNZasRseQfY7 z^{kyY>VQ_)8t~#k`Nq2dIRm`C+3^6Z-Ko{nC=amK9Jn3OrYwGlb6Gh_zZ>oP77)ML z{U+fdq6#6etKc34eHbZVVq@|&q@WtWvEy<}UPexk3o`34&p5{9qku1Q^p6Z&X%uyz z*cp@wAoApLe|O|bt>t8 z{Hc^o({v0HUB>_#>L+GRO^Gxy5)}n1dvW#F{oKfTR zGW{6UT$t;1f4Nd%s=8zCWm!gwDy{K^BsZ3c`N9Df#gdu#@qSMXrj^ABW{Z>wUL@EP zF(y*^OMqht2XuX`;3y zumNa~C+F&dR`b%*%lFmQ1@virYbd)Q-|K zfK}TUy9vL#C#F^p{^-m>a)F6VU#vK07r#WLn=SWIt&=~X{=aF-|9rOF7w5m9#nP=V zedJGfh`#VSP>F-M@!HzTFFZmat@%{}ZFzkpGbr&5?^t%r7Rb@*Oj^w4`8EUVyhRZ* zA5jI(h_|+9^O>l__ziBY#y#g8DmKNP>1GO=Rbm-mnmq^-Ys()P+{zo?)HwA2-I=wt z_jBfKoefzVyRl0O<>9{==+B5avQ#1=t&LL74%Sw5*^(oEc4p804`X(Nmp$p2vj1oTJKy(B9aN<9tvDIvq9`7Q7K>rALWj5>>1+LRmKO{H4xoSRBQyv6E+# z{Sc_``s0!zfayB{)^gwALR>7&d$E6Mj&9`ze0sO5plg>JZee4I(E^jOH%Ol>M3yFMp&85u>FtFnyr+XUh%hjsI@2LH9yAoN$@u3-nHi$G-!TYMP3tj7A8a^u8rTP}f}`5#AR(>ZobhnNI} z9^Q#WUUUx2SR$tbD1PqO#)f2Sa7?&o!*8v^ymMfXB7H&zBhBt66m3DlMsgle+bJ`W z*#$F%@6lTRJ04Lu@w`I#;tiB?#r|<5-xo+3#O#Ym;fq+Bp@IC=XEE{LZM*H?_M)I< zlAo+vB3h}Xl!#ru%hd!?b7`9?M3Aw<8S^8;L;QR5rJ(?o?2fBGQT2!;fvYog(3TE04%-< zvq(DSC`J67Tk5}yrP64U?s=F-6HiSEBsbJ4r_E7Ati0P&&_lo;r;Uc;EP52ZD=Bgn z({>umTxZ&o_+})%RHj9cww3H0?U^N^L0)Nt18y(BSmMD~z&W zds5^4X>qfahppW09Nw=})(qD#Yl9?>FJ2B4Nw!*QEd?1nZRIn$lhbn%s5; z?X=;Mq5)1r{u22ufGoesuK6*uQof%r3KSR~>}|&?)*-ZK+1skADBChk&A>e)J0Sn5 z@Yg!6J^7@x0c&i-B9$g%upL07Q7A#S&*TqYeL92shr3F?1myGCP(Ej-QJ8lx%Vy(6 zl1d$oeA9<$$PZV4i7P0O^D`;?e_>J|cvGvZfI~e?^}Om2j6&`f*2y|UrNLW+<@1oD zCMe_CG`O6bMExBvZFo*16K!Dg`*liJ7+$iBnj29GU%X>o9&iMgWs-iy?L@M_Lu?FT zW6CwMcwjU3=E=E6fHkdY5#|4`(2Y80O=YjZtJGkx%%dX3SLx1#)w_+a+hB$zVwY@d zmnJKi{P5ybB5nO@A`v1`g-Mocud2etU8&}!EI@~;#9prU8tIU&)0rG#V{^*z3cfe? zcJA@-YBmWGcP*Hu4u!LdyYliu4{?D0>@~*ddyH3v&xo=nJ+zrQNVd;*_Gw%y`raFrkJnxgCts?wuQ6d+%SRT_Awlx-=j_8{6YEfC-Pn zTf9!xva`P;q!pJNftX%7U*!v9v6&*b1Xj;X!M&qqMGBjsveOJybW(Hc@W*^X4-o6W gelL3C_w0Nzrh6-*Jx}XV`^Giw8@sQIzjD9zUjR5&`2YX_ literal 0 HcmV?d00001 diff --git a/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..930159c26ee8e7ddcb4c8d8410d07fd870ebf15c GIT binary patch literal 12984 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 NV<(Rm9r66@{{jRDDvbaD literal 0 HcmV?d00001 diff --git a/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-offset/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..df600490f7afff1de928c60ac3ccd7cd07bc6a72 GIT binary patch literal 14097 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 YZ?oB!v9`x8(Af@OyBw_CkNxZa0|48z<^TWy literal 0 HcmV?d00001 diff --git a/packages/utility-offset/test/test.hbs b/packages/utility-offset/test/test.hbs new file mode 100644 index 0000000..432bdad --- /dev/null +++ b/packages/utility-offset/test/test.hbs @@ -0,0 +1,25 @@ +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ +
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
diff --git a/packages/utility-offset/test/test.scss b/packages/utility-offset/test/test.scss new file mode 100644 index 0000000..f2b460d --- /dev/null +++ b/packages/utility-offset/test/test.scss @@ -0,0 +1,7 @@ +@import '../scss/index'; + +div { + padding: 1em; + background: #efefef; + text-align: center; +} From 642320829036965eca8ce7a849bb4c1cd6a1f3b3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 10:39:52 +0100 Subject: [PATCH 343/355] Fix offset package npmignore file and @l breakpoint selector. --- packages/utility-offset/.npmignore | 4 +--- packages/utility-offset/scss/index.scss | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/packages/utility-offset/.npmignore b/packages/utility-offset/.npmignore index 42ffb40..9daeafb 100644 --- a/packages/utility-offset/.npmignore +++ b/packages/utility-offset/.npmignore @@ -1,3 +1 @@ -.DS_Store - -node_modules +test diff --git a/packages/utility-offset/scss/index.scss b/packages/utility-offset/scss/index.scss index 5aff291..ea533a1 100644 --- a/packages/utility-offset/scss/index.scss +++ b/packages/utility-offset/scss/index.scss @@ -150,51 +150,51 @@ } @media (min-width: setting-breakpoint(l)) { - .u-offset-1\/12\@xl { + .u-offset-1\/12\@l { @include u-offset(1); } - .u-offset-2\/12\@xl { + .u-offset-2\/12\@l { @include u-offset(2); } - .u-offset-3\/12\@xl { + .u-offset-3\/12\@l { @include u-offset(3); } - .u-offset-4\/12\@xl { + .u-offset-4\/12\@l { @include u-offset(4); } - .u-offset-5\/12\@xl { + .u-offset-5\/12\@l { @include u-offset(5); } - .u-offset-6\/12\@xl { + .u-offset-6\/12\@l { @include u-offset(6); } - .u-offset-7\/12\@xl { + .u-offset-7\/12\@l { @include u-offset(7); } - .u-offset-8\/12\@xl { + .u-offset-8\/12\@l { @include u-offset(8); } - .u-offset-9\/12\@xl { + .u-offset-9\/12\@l { @include u-offset(9); } - .u-offset-10\/12\@xl { + .u-offset-10\/12\@l { @include u-offset(10); } - .u-offset-11\/12\@xl { + .u-offset-11\/12\@l { @include u-offset(11); } - .u-offset-12\/12\@xl { + .u-offset-12\/12\@l { @include u-offset(12); } } From 6c04e6479166a1c3c56a7380d46f66a71bd8a2c8 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 10:57:05 +0100 Subject: [PATCH 344/355] Update the order utility package to v4.x.x standards. --- packages/utility-order/.gitignore | 3 - packages/utility-order/.npmignore | 3 + packages/utility-order/LICENSE | 340 ------------------ packages/utility-order/README.md | 67 +++- packages/utility-order/package.json | 26 +- packages/utility-order/scss/_index.scss | 48 --- packages/utility-order/scss/_mixin.scss | 31 -- packages/utility-order/scss/_mixins.scss | 56 +++ packages/utility-order/scss/_style_guide.scss | 8 - packages/utility-order/scss/_variable.scss | 19 - packages/utility-order/scss/index.scss | 202 +++++++++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 14867 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 15799 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 16898 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 18320 bytes packages/utility-order/test/test.hbs | 59 +++ packages/utility-order/test/test.scss | 10 + 17 files changed, 400 insertions(+), 472 deletions(-) delete mode 100644 packages/utility-order/.gitignore create mode 100644 packages/utility-order/.npmignore delete mode 100644 packages/utility-order/LICENSE delete mode 100644 packages/utility-order/scss/_index.scss delete mode 100644 packages/utility-order/scss/_mixin.scss create mode 100644 packages/utility-order/scss/_mixins.scss delete mode 100644 packages/utility-order/scss/_style_guide.scss delete mode 100644 packages/utility-order/scss/_variable.scss create mode 100644 packages/utility-order/scss/index.scss create mode 100644 packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-order/test/test.hbs create mode 100644 packages/utility-order/test/test.scss diff --git a/packages/utility-order/.gitignore b/packages/utility-order/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/utility-order/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/utility-order/.npmignore b/packages/utility-order/.npmignore new file mode 100644 index 0000000..3d77ab5 --- /dev/null +++ b/packages/utility-order/.npmignore @@ -0,0 +1,3 @@ +backstop_data +node_modules +test diff --git a/packages/utility-order/LICENSE b/packages/utility-order/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-order/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-order/README.md b/packages/utility-order/README.md index f88aef9..68305b7 100644 --- a/packages/utility-order/README.md +++ b/packages/utility-order/README.md @@ -1,24 +1,71 @@ -# avalanchesass_utility_order +# @avalanche/utility-order Reorder flex items. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: order) + ## Install -``` -npm install avalanchesass_utility_order --save +```bash +npm install @avalanche/utility-order --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_order'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-order'; + +// Import just the mixin file. +@import '~@avalanche/utility-order/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-order-1\@m, .u-order-last\@m } from ~@avalanche/utility-order'; + +// Not a fan of the "u-" prefix? +@import '{ .u-order-1\@m as .order-1\@m, .u-order-last\@m as .order-last\@m } from ~@avalanche/utility-order'; +``` + +## Demo +```html +
+
last
+
10
+
9
+
8
+
7
+
6
+
5
+
4
+
3
+
2
+
1
+
first
+
+``` + +## Mixins +```scss +@import '~@avalanche/utility-order/scss/mixins'; + +// Usage. +.order-5 { + @include u-order(5); +} + +.order-first { + @include u-order-first(); +} -/* Import just the mixin file. */ -@import 'avalanchesass_utility_order/mixin'; +.order-last { + @include u-order-first(); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-order/package.json b/packages/utility-order/package.json index 88c00d4..50717e2 100644 --- a/packages/utility-order/package.json +++ b/packages/utility-order/package.json @@ -1,25 +1,25 @@ { - "name": "avalanchesass_utility_order", + "name": "@avalanche/utility-order", "description": "Reorder flex items", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_order", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_order" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-order" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_order/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + }, + "main": "scss/index.scss" } + diff --git a/packages/utility-order/scss/_index.scss b/packages/utility-order/scss/_index.scss deleted file mode 100644 index a8da959..0000000 --- a/packages/utility-order/scss/_index.scss +++ /dev/null @@ -1,48 +0,0 @@ -@import 'avalanchesass_utility_order/style_guide'; -@import 'avalanchesass_utility_order/variable'; -@import 'avalanchesass_utility_order/mixin'; - -/* extract utility.css */ -/* extract utility_order.css */ -/*--- -title: Example -name: utility_order_example -section: utility_order -order: 1 ---- - -```example:html -
-
Item 1
-
Item 2
-
Item 3
-
Item 4
-
Item 5
-
Item 6
-
Item 7
-
-``` -*/ -@each $-breakpoint in $u-order-breakpoints { - @for $-i from 1 through $u-order-max-elements { - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$u-order-namespace}-#{$-i}\@#{$-breakpoint} { - @include u-order($-i); - } - } - } - - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$u-order-namespace}-first\@#{$-breakpoint} { - @include u-order-first(); - } - } - - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$u-order-namespace}-last\@#{$-breakpoint} { - @include u-order-last(); - } - } -} -/* end extract utility_order.css */ -/* end extract utility.css */ diff --git a/packages/utility-order/scss/_mixin.scss b/packages/utility-order/scss/_mixin.scss deleted file mode 100644 index 3e8b5d4..0000000 --- a/packages/utility-order/scss/_mixin.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'avalanchesass_utility_order/style_guide'; - -/*--- -title: Mixin -name: utility_order_mixin -section: utility_order -order: 2 ---- - -```css -// Display as Nth element. -u-order([$-n: 1[, $-max-elements: 4]]) - -// Display as first element. -u-order-first() - -// Display as last element. -u-order-last() -``` -*/ -@mixin u-order($-n: 1, $-max-elements: 4) { - order: $-n - $-max-elements !important; -} - -@mixin u-order-first() { - order: -9999 !important; -} - -@mixin u-order-last() { - order: 9999 !important; -} diff --git a/packages/utility-order/scss/_mixins.scss b/packages/utility-order/scss/_mixins.scss new file mode 100644 index 0000000..2cee4b8 --- /dev/null +++ b/packages/utility-order/scss/_mixins.scss @@ -0,0 +1,56 @@ +//// +/// Order helper. +/// +/// @group Utility: order +/// @author Markus Oberlehner +//// + +/// Order n. +/// +/// @param {Number} $n [1] +/// Number. +/// @param {Number} $max-elements [10] +/// Max order elements. +/// +/// @example scss - Usage +/// .selector { +/// @include u-order(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// order: -9 !important; +/// } +@mixin u-order($n: 1, $max-elements: 10) { + order: $n - $max-elements !important; +} + +/// Order first. +/// +/// @example scss - Usage +/// .selector { +/// @include u-order-first(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// order: -9999 !important; +/// } +@mixin u-order-first() { + order: -9999 !important; +} + +/// Order last. +/// +/// @example scss - Usage +/// .selector { +/// @include u-order-last(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// order: 9999 !important; +/// } +@mixin u-order-last() { + order: 9999 !important; +} diff --git a/packages/utility-order/scss/_style_guide.scss b/packages/utility-order/scss/_style_guide.scss deleted file mode 100644 index 0f145c2..0000000 --- a/packages/utility-order/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Order -name: utility_order -section: Utility ---- - -Reorder flex items. -*/ diff --git a/packages/utility-order/scss/_variable.scss b/packages/utility-order/scss/_variable.scss deleted file mode 100644 index cc68344..0000000 --- a/packages/utility-order/scss/_variable.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import 'avalanchesass_utility_order/style_guide'; - -$u-order-namespace: '#{map-get($namespace, utility)}order' !default; - -$u-order-max-elements: 4 !default; -$u-order-breakpoints: (m) !default; -/*--- -title: Variable -name: utility_order_variable -section: utility_order -order: 3 ---- - -```css -$u-order-namespace: '#{$u-order-namespace}'; -$u-order-max-elements: #{$u-order-max-elements}; -$u-order-breakpoints: #{$u-order-breakpoints}; -``` -*/ diff --git a/packages/utility-order/scss/index.scss b/packages/utility-order/scss/index.scss new file mode 100644 index 0000000..030c3fe --- /dev/null +++ b/packages/utility-order/scss/index.scss @@ -0,0 +1,202 @@ +@import '~@avalanche/setting-breakpoints'; +@import 'mixins'; + +@media (min-width: setting-breakpoint(s)) { + .u-order-1\@s { + @include u-order(1); + } + + .u-order-2\@s { + @include u-order(2); + } + + .u-order-3\@s { + @include u-order(3); + } + + .u-order-4\@s { + @include u-order(4); + } + + .u-order-5\@s { + @include u-order(5); + } + + .u-order-6\@s { + @include u-order(6); + } + + .u-order-7\@s { + @include u-order(7); + } + + .u-order-8\@s { + @include u-order(8); + } + + .u-order-9\@s { + @include u-order(9); + } + + .u-order-10\@s { + @include u-order(10); + } + + .u-order-first\@s { + @include u-order-first(); + } + + .u-order-last\@s { + @include u-order-last(); + } +} + +@media (min-width: setting-breakpoint(m)) { + .u-order-1\@m { + @include u-order(1); + } + + .u-order-2\@m { + @include u-order(2); + } + + .u-order-3\@m { + @include u-order(3); + } + + .u-order-4\@m { + @include u-order(4); + } + + .u-order-5\@m { + @include u-order(5); + } + + .u-order-6\@m { + @include u-order(6); + } + + .u-order-7\@m { + @include u-order(7); + } + + .u-order-8\@m { + @include u-order(8); + } + + .u-order-9\@m { + @include u-order(9); + } + + .u-order-10\@m { + @include u-order(10); + } + + .u-order-first\@m { + @include u-order-first(); + } + + .u-order-last\@m { + @include u-order-last(); + } +} + +@media (min-width: setting-breakpoint(l)) { + .u-order-1\@l { + @include u-order(1); + } + + .u-order-2\@l { + @include u-order(2); + } + + .u-order-3\@l { + @include u-order(3); + } + + .u-order-4\@l { + @include u-order(4); + } + + .u-order-5\@l { + @include u-order(5); + } + + .u-order-6\@l { + @include u-order(6); + } + + .u-order-7\@l { + @include u-order(7); + } + + .u-order-8\@l { + @include u-order(8); + } + + .u-order-9\@l { + @include u-order(9); + } + + .u-order-10\@l { + @include u-order(10); + } + + .u-order-first\@l { + @include u-order-first(); + } + + .u-order-last\@l { + @include u-order-last(); + } +} + +@media (min-width: setting-breakpoint(xl)) { + .u-order-1\@xl { + @include u-order(1); + } + + .u-order-2\@xl { + @include u-order(2); + } + + .u-order-3\@xl { + @include u-order(3); + } + + .u-order-4\@xl { + @include u-order(4); + } + + .u-order-5\@xl { + @include u-order(5); + } + + .u-order-6\@xl { + @include u-order(6); + } + + .u-order-7\@xl { + @include u-order(7); + } + + .u-order-8\@xl { + @include u-order(8); + } + + .u-order-9\@xl { + @include u-order(9); + } + + .u-order-10\@xl { + @include u-order(10); + } + + .u-order-first\@xl { + @include u-order-first(); + } + + .u-order-last\@xl { + @include u-order-last(); + } +} diff --git a/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5455bd264d4f58368cf0bda81ed78a5ea33f42ad GIT binary patch literal 14867 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 b5%8C;pm`&5h*J^pdrMhKC5dt|qrm?Mmb4)+ literal 0 HcmV?d00001 diff --git a/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..7201e6033d830d157548c0ee9cd7a0fd424fcecc GIT binary patch literal 16898 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 literal 0 HcmV?d00001 diff --git a/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/utility-order/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..b28388995ccfab43abc87c0ce78ca2d69f5c88b1 GIT binary patch literal 18320 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 E0a0(y5dZ)H literal 0 HcmV?d00001 diff --git a/packages/utility-order/test/test.hbs b/packages/utility-order/test/test.hbs new file mode 100644 index 0000000..2b43872 --- /dev/null +++ b/packages/utility-order/test/test.hbs @@ -0,0 +1,59 @@ +
+
last
+
10
+
9
+
8
+
7
+
6
+
5
+
4
+
3
+
2
+
1
+
first
+
+ +
+
last
+
10
+
9
+
8
+
7
+
6
+
5
+
4
+
3
+
2
+
1
+
first
+
+ +
+
last
+
10
+
9
+
8
+
7
+
6
+
5
+
4
+
3
+
2
+
1
+
first
+
+ +
+
last
+
10
+
9
+
8
+
7
+
6
+
5
+
4
+
3
+
2
+
1
+
first
+
diff --git a/packages/utility-order/test/test.scss b/packages/utility-order/test/test.scss new file mode 100644 index 0000000..67ded2d --- /dev/null +++ b/packages/utility-order/test/test.scss @@ -0,0 +1,10 @@ +@import '../scss/index'; + +body > div { + display: flex; + + > div { + padding: 1em; + background: #efefef; + } +} From 0bcf7325e047ed1fcdc8c343aadca358a9487cd2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 10:57:51 +0100 Subject: [PATCH 345/355] Add backstop_data and node_modules directories to the packages npmignore list. --- packages/generic-box-sizing-reset/.npmignore | 2 ++ packages/object-aspect-ratio/.npmignore | 2 ++ packages/object-container/.npmignore | 2 ++ packages/object-grid/.npmignore | 2 ++ packages/object-island/.npmignore | 2 ++ packages/object-media/.npmignore | 2 ++ packages/setting-breakpoints/.npmignore | 2 ++ packages/setting-font-families/.npmignore | 2 ++ packages/setting-spacings/.npmignore | 2 ++ packages/utility-font-family/.npmignore | 2 ++ packages/utility-offset/.npmignore | 2 ++ packages/utility-width/.npmignore | 2 ++ 12 files changed, 24 insertions(+) diff --git a/packages/generic-box-sizing-reset/.npmignore b/packages/generic-box-sizing-reset/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/generic-box-sizing-reset/.npmignore +++ b/packages/generic-box-sizing-reset/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/object-aspect-ratio/.npmignore b/packages/object-aspect-ratio/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/object-aspect-ratio/.npmignore +++ b/packages/object-aspect-ratio/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/object-container/.npmignore b/packages/object-container/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/object-container/.npmignore +++ b/packages/object-container/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/object-grid/.npmignore b/packages/object-grid/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/object-grid/.npmignore +++ b/packages/object-grid/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/object-island/.npmignore b/packages/object-island/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/object-island/.npmignore +++ b/packages/object-island/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/object-media/.npmignore b/packages/object-media/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/object-media/.npmignore +++ b/packages/object-media/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/setting-breakpoints/.npmignore b/packages/setting-breakpoints/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/setting-breakpoints/.npmignore +++ b/packages/setting-breakpoints/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/setting-font-families/.npmignore b/packages/setting-font-families/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/setting-font-families/.npmignore +++ b/packages/setting-font-families/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/setting-spacings/.npmignore b/packages/setting-spacings/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/setting-spacings/.npmignore +++ b/packages/setting-spacings/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/utility-font-family/.npmignore b/packages/utility-font-family/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/utility-font-family/.npmignore +++ b/packages/utility-font-family/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/utility-offset/.npmignore b/packages/utility-offset/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/utility-offset/.npmignore +++ b/packages/utility-offset/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test diff --git a/packages/utility-width/.npmignore b/packages/utility-width/.npmignore index 9daeafb..3d77ab5 100644 --- a/packages/utility-width/.npmignore +++ b/packages/utility-width/.npmignore @@ -1 +1,3 @@ +backstop_data +node_modules test From ed6d615736b83d1c43e770967c509dd05b5f24e2 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 11:45:01 +0100 Subject: [PATCH 346/355] Add horizontal spacing object package. --- packages/object-horizontal-spacing/.npmignore | 3 + packages/object-horizontal-spacing/README.md | 62 ++++++++++++++++++ .../object-horizontal-spacing/package.json | 24 +++++++ .../scss/_mixins.scss | 24 +++++++ .../scss/_settings.scss | 8 +++ .../object-horizontal-spacing/scss/index.scss | 35 ++++++++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 29598 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 31054 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 31916 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 33465 bytes .../object-horizontal-spacing/test/test.hbs | 39 +++++++++++ .../object-horizontal-spacing/test/test.scss | 5 ++ 12 files changed, 200 insertions(+) create mode 100644 packages/object-horizontal-spacing/.npmignore create mode 100644 packages/object-horizontal-spacing/README.md create mode 100644 packages/object-horizontal-spacing/package.json create mode 100644 packages/object-horizontal-spacing/scss/_mixins.scss create mode 100644 packages/object-horizontal-spacing/scss/_settings.scss create mode 100644 packages/object-horizontal-spacing/scss/index.scss create mode 100644 packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/object-horizontal-spacing/test/test.hbs create mode 100644 packages/object-horizontal-spacing/test/test.scss diff --git a/packages/object-horizontal-spacing/.npmignore b/packages/object-horizontal-spacing/.npmignore new file mode 100644 index 0000000..3d77ab5 --- /dev/null +++ b/packages/object-horizontal-spacing/.npmignore @@ -0,0 +1,3 @@ +backstop_data +node_modules +test diff --git a/packages/object-horizontal-spacing/README.md b/packages/object-horizontal-spacing/README.md new file mode 100644 index 0000000..c54d5e6 --- /dev/null +++ b/packages/object-horizontal-spacing/README.md @@ -0,0 +1,62 @@ +# @avalanche/object-horizontal-spacing +Add horizontal spacing to all child elements. + +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: horizontal-spacing) + +## Install +```bash +npm install @avalanche/object-horizontal-spacing --save-dev +``` + +## Basic usage +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/object-horizontal-spacing'; + +// Import just the mixin file. +@import '~@avalanche/object-horizontal-spacing/scss/mixins'; + +// Import just the classes you need. +@import '{ .o-horizontal-spacing, .o-horizontal-spacing--s } from ~@avalanche/object-horizontal-spacing'; + +// Not a fan of the "o-" prefix? +@import '{ .o-horizontal-spacing as .horizontal-spacing } from ~@avalanche/object-horizontal-spacing'; +``` + +## Demo +### Default spacing size +```html +
+
Lorem Ipsum
+
Dolor sit amet.
+
+``` + +### X-large spacing size +```html +
+
Lorem Ipsum
+
Dolor sit amet.
+
+``` + +## Mixins +```scss +@import '~@avalanche/object-horizontal-spacing/scss/mixins'; + +// Usage. +.horizontal-spacing { + @include o-horizontal-spacing(); +} +``` + +## About +### Author +Markus Oberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner + +### License +MIT diff --git a/packages/object-horizontal-spacing/package.json b/packages/object-horizontal-spacing/package.json new file mode 100644 index 0000000..b25e0b3 --- /dev/null +++ b/packages/object-horizontal-spacing/package.json @@ -0,0 +1,24 @@ +{ + "name": "@avalanche/object-horizontal-spacing", + "description": "Add horizontal spacing to all child elements", + "keywords": [ + "avalanche-package", + "avalanche", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-horizontal-spacing" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "dependencies": { + "@avalanche/setting-spacings": "^4.0.0-alpha.2" + }, + "main": "scss/index.scss" +} diff --git a/packages/object-horizontal-spacing/scss/_mixins.scss b/packages/object-horizontal-spacing/scss/_mixins.scss new file mode 100644 index 0000000..ca3a8c2 --- /dev/null +++ b/packages/object-horizontal-spacing/scss/_mixins.scss @@ -0,0 +1,24 @@ +//// +/// @group Object: horizontal-spacing +/// @author Markus Oberlehner +//// + +/// Add horizontal spacing to all child elements. +/// +/// @param {Number [unit]} $spacing [1em] +/// Spacing. +/// +/// @example scss - Usage +/// .selector { +/// @include o-horizontal-spacing(); +/// } +/// +/// @example css - CSS Output +/// .selector > * + * { +/// margin-top: 1em; +/// } +@mixin o-horizontal-spacing($spacing: 1em) { + > * + * { + margin-top: $spacing; + } +} diff --git a/packages/object-horizontal-spacing/scss/_settings.scss b/packages/object-horizontal-spacing/scss/_settings.scss new file mode 100644 index 0000000..2cbaa98 --- /dev/null +++ b/packages/object-horizontal-spacing/scss/_settings.scss @@ -0,0 +1,8 @@ +//// +/// @group Object: horizontal-spacing +/// @author Markus Oberlehner +//// + +/// Default spacing size. +/// @type String +$o-horizontal-spacing-default-size: m !default; diff --git a/packages/object-horizontal-spacing/scss/index.scss b/packages/object-horizontal-spacing/scss/index.scss new file mode 100644 index 0000000..8140d9d --- /dev/null +++ b/packages/object-horizontal-spacing/scss/index.scss @@ -0,0 +1,35 @@ +@import '~@avalanche/setting-spacings'; +@import 'settings'; +@import 'mixins'; + +.o-horizontal-spacing { + @include o-horizontal-spacing(setting-spacing($o-horizontal-spacing-default-size)); +} + +.o-horizontal-spacing--xs { + @include o-horizontal-spacing(setting-spacing(xs)); +} + +.o-horizontal-spacing--s { + @include o-horizontal-spacing(setting-spacing(s)); +} + +.o-horizontal-spacing--m { + @include o-horizontal-spacing(setting-spacing(m)); +} + +.o-horizontal-spacing--l { + @include o-horizontal-spacing(setting-spacing(l)); +} + +.o-horizontal-spacing--xl { + @include o-horizontal-spacing(setting-spacing(xl)); +} + +.o-horizontal-spacing--xxl { + @include o-horizontal-spacing(setting-spacing(xxl)); +} + +.o-horizontal-spacing--xxxl { + @include o-horizontal-spacing(setting-spacing(xxxl)); +} diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..b334d7e6e735bdaccd7806dbb96f0db72328302d GIT binary patch literal 29598 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

2xE^q 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 S=752lAYDzk#y2&q@P7eUd=R<- literal 0 HcmV?d00001 diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9952c3bf9841fe40418dc0908ace9b78011c5a GIT binary patch literal 31054 zcmd?QWl&sEw=LSZ1rM%46Wr^Y-@BsjFfRw1PvRlUClDBO7P0P#6&Yg`zNn9GwRhrUvcr-F+ zUmU%B@pxc{6J53w6$e&rFN0hj!91L^e80tSAT;L(#-b9MAgrm4bfhX&b1`%D5}0{x z^B~o!0wUtN%Mp57ThEg38@(>cy(m$5G<}D=kIyVO4N%-v-wzJnz0=X=&K`XT@YQX+ zY!$!@{XaPR6HoDEGFezz&wSN#F)$%V+*G?YmmVACi?57!+ww-05m&mIZ}_zGfaR3Ocq5$enw%Y#jWfU;@P{_xfWv2`jkb_=d1InYfp>UHrCdA98 z{?K&DmE9B^m^S@gxk-XAvb-${IV7;LR^BpvC}r3-cmo3+_48VaEx4lT6b%+C6yB@a zgU-Hwe|Im#qOW3O4;_Q_NOstWOG$Y`%DRCY17&<=I&{In%q};%h5dqu4j)mDJHK1J zkiNPISdsV=PY5>}!eD zza_Nd^cL&g?emFLe7(q3IArMkmS7Pmo*@ORX8q!AJy4!UUgngbp&pdz{DHeem0urO zF+xt>fP~r%;+j3#fUjo&IT!Gb&?fVF&j-ca{h0)rK7CdNFk6JwtgK*QK+v=V=NA>d z!ThDNCU#$fEF`dc1PS($N8*F=uDbu-Lb~w~=ZwR8jRG+s8s?NXiACg9G9y0L z6aDoVz+#ob(;`0DV9IX*5thFiee?hc?PlY4Izg0~k4@R-pY48ve6%{phQCIcL;!Bq9 ziNoIL-e5I6!ymVg{VtDwrxJKLrz_&Fgv8Qsq<|);hqKQ^u;rDKKulo>U9;rivY+uK-&JSiGs8BYFmZu2raOeq5(aPPMMqlOmnXvb2! z+tM2^Ox!=<>TO~b0QXR?)~c!S&js4$6_|l_t8Y-( z2bcQ#ozM-QauPB}=pHB3zHy^F{9+)JT)hzR8=T{|DRT~V93+!ZIY z4y27sLL3(4gH^Zm^hoPxV5)?J3I@9Om@!UVNVpMUqI~}2&Os=+ual+NvJlV$&5X%p zTy1OsW?%-6w$Ut9{YlhL>0p_#tVEN|k0_}y=ys0Nx8_JSRb5bWdu?`yrCEty==H9< ztNC%A8Oj{^C!86hwHGezH9p`Chu7Jcn1;p1l&Q(vFWuMJAERe%tG4QG8#};+yhcAS zcbzLzb4Wj!am-aep)Zq*gFd}JuuZlPLJ_YQ{?PzpnYxD19i%G3u@L1SQ&8|wS z!t1b}n;CI(Ug{1{WiF5C0XdtitOBXGU&qeAG+MpD`+j2VxofEBgJIZ#vKs-B{X8+} z1X!UatKB+o0Z+PGdgO#h?&rM6*W^9KlgS>-f4TXMWQ|+t1ijul!$g%Pa9SUhe5MtX zQk+4f;ce0s`*~Q5BmHgjPvvU3B;r1E4#QTTqb-#T8kuD@G!TiYmF+$$)_0#;Jhd}} zb2{owNR_WT7|Y!uD={y)8_OQT)!+4J_%ylb5h~s2FBBmC#K~!f{>E zbGjY&Z$d-PuByL$*~}ToqsBbk%zxB@g|ai@a!pP~;SY(1yDzk#t>h(688+3v6k-`X0tA@<}dZ_k4AzRG-5q{>AHiP%sl&AZpXyz=K{Fa-_s46EVdp!%x(f zNwlcbKa%LSKfK_(DUF&P4=p^Ngh!xyGdxdS4xw@$>GD zM1Faq3)p=q?PBd+Ay_x7LA?zKJY2p5f{stN^}|qoJ#pOAGen6wiEZdY^qFI-@05HK zvyd~I1b^`J3D1JQ%Icw%HA^5G7(R5EmiU!EVnX+2?=168Y(4Y7I@%_(*0>7r`BF~- z+=NogF{PAZ1DhLlzr#}jy_`?Vbm_%;dZ_fq@aKjQ9BzBOUdMPoR!(y8b%HYSzHv5c zh02AY9-h$}i}%zWO0T4R2K1^LzW~bjImOOFVXS2%Ye-4S z#RfY*i#N9QmR3JJO@SgKEyQtVYgH%aS`aG!VB+UGTD?m|y~_K2uwlQ&RjWFwqzCAj zf$7E))&$*%bifO^eNVt!ejrnCZWTvhvCSB?mwE&KuK?XKLu zE}tw{W@mxcS?-PL{?yp3F?f+BN)yF%awELv^X7d>8QQj(`NNkag5pasiPg7W$~boG zUAa(b*2D4-KI9!jnGt_*1rcI`5Q(DWb#@I3BR#jFAKpxyd|0k@r#Ins#2bm1)aL7Y z4Tt?jiLa<{g(7NAeQ4<6AAc{fpQ({@4*IMIh`ZKt3sE}IqJm}~!+-@vp`bW5 zTud4l@l&p-q#-wRDqv>FN7=PpL+j@jd9kxd9g14MG)5$v0YgB(C|}6!v~X;R^jo1O zn(st5vh%s}N90xp58l*FkJp;>?{*ioQ9|G9J$!`e`ouT4Dy1WM&cF{NOtJBfyg#h} z5^iAgN5QDmfJbJbABio!XrsMPaX{@e)cn3S&`ROr6rFoCYsYs(#j91Gue2)`zsFmN zi~Hlgy5SMlE7&x^KO2T^=vlZfJS$JtxXl3pMATa=22D*Foz3pd8$B>?$Ds8qf3Pu1 z>$0#k+V!~V9u>z}|I<&@iNPg}xry;Ee;ckJT{g;ZXVwe+;u&doNjS#&E-6gvBz`%4 zv^Y~3tv4YXt>*8(j2{92LvO#~Fl@3`H>4#PK^n7?yT`j@o-nHf`YG4-6527f;ZE@w z7Tpnyd@&%%El zzG}$yf|~tY5h^V#EbQfh54*4Poj_&=#YQi26=UyDW^#GpTLVW+R8_6x9nCn3*X2cO zw_(HBJ|T)cRThUnn@)3?8$)o1p_I1>4JK`Lm`p}%o;h&nt<`L7W>2R9R=1&<1~)ri zY^c~r8+C>0E!n?bl|9Ib@(=a(L}lQ1addj+|3Rk~70Q0PCk}J0>BC?_F;8CR zTdCtIn%R>MfpS~$oV?t^ZVi*nYtz=%q${ko*n-eZUBTmROtfTge_YjwyZ66c*7~IM z>d|+0H0J*o=#YYMj}OFnX!2}!BNy}P0o`ftRNyp(j;NeS;E#Z|h0CV0@c z*P7dii}#lWiFA!;ch~Lx!Y_N^FRO#R{Qk(fLsKBy*%$yPdXEdG3FSm+A51&$7o(~G zho(ltpUHlN@5=WC)tQ@F=ssi`Zpjm-Q&r?{`0jpz(1G{x(B`rVWU4Cx2lIWe_uK4y z7ctkvXbNIib~F%ur6@*B6Jp4cyx75ej2|Og?Q0bqzsxCJfBqN$>CvTl^ZzGm>0>I; zGjsmP`&N~!vKUaIg6&qA)!E7B+JpiiBI(onVQBSkDnT&m}8!>8>!Mg5rps3@rW-qG2+sS(pz8`kPE6{WBxB6+c z9z};Xd1eBb70=CgIqSoS*Ky;HC1*)0J&Wf7lz3C=V%vp5Kp-j*yt1lZA2U4B$3Br_ zU~=%6Hcye4(vDf}(5_j0A0dl>nTV;!X&3BuGhFWICWERs>AG)VHSH>bO29<)Fel5J z!6rWLJ1eCP)75_lV>{rA&vF*7OlRoL#NV);q@gcAa_VoCEmYxKmTYV;B}U2;7c?{j zPS5ri#^;*(@%&KnW*Z&)yFo0)iK3kHK!xO9LT5p)#Ryn)IHRsB-7%$7ZWvqp zspTF1;O%!=NU>~s`(oYBVGTjArRZX;|)kI z0J&CARz_V;E{z`Jk^$hh5ayg7K3uE0hXK@O%zf5RZl|8e^B%i?O+9#cq}t9)a+`?Gx!x<|DQb5M;= z;kfkgxv>TLevN>KtfR&AH3g>Pe?CQ$bRYY>s#P>)`t^P{o2A^}2zxf}bB$G2WRjlp}Gbx%G0}bWR6r?-WSPZz> zVQ$d5d&qcylW=NNiclVKx)j>|<^!Fk8oKsbzH+rDKj|A-0uAz~3`tUC@iYv&LiZ>- zX3g1#OKJ=L=I+j^s}0E%??ggF-0ynypvUazRqb)MXvH}3QQ2R)1-=)tUp@|SYbo>Bz&k&>E1sinpcFnr_c0^fUusOm)VG47S=|wLj-tLLa z6Tj--n0?1Su^KOC%YJ2AkM3G@LN9i6YstF{Y5<{u4kItNGoW1cAh z(2ak3oN0AsuRQjVxb?Dq+oZhuh@Nnb5WrjYck@1%6Zg`NyWdsM`zW4o?H%V0a*7*I}Mp!faBn*G!o z3auZoR4o1U_T8Uza!AUzR>*7a1?AO14O~nQ)FMhF;u!$gkC-xJVD4na(LQGc0fY4f z%%Z)YML_hJ6AJ$RGlRwS@UwFm5p1Kc!D+zpt&UW!4)aH0$BG-$Ao3>ya z{Fp2qpy;ZGG?7Ok3E|q$IMPMYyEmZ{y>45x6PNda88DF_Z&nXxVTA4|KfQUXe>><7 z*JJ*YtaAx}VyJKY_45s>*RrB!h*4x4d-td%(J36lT+4;S@#4yG2Nu!uHQhPa$1tEJ za9$a$LzmRzqTrd19|s8X74>urs5n7PZN=4gkHP5dz78B#htj&EgpC#)ZE?>Zd;+~X zT0c(hk7E1By|ye<5T3O~Q31;WA|$gr>Y@+VEXS|CduO>iSAgFw-RFt=F#q=!ySodM9c2MFTFv)$kuM;2m~E_`>BX~HWrCx ziPwfl&{XsI(KAD+yst;j6tCR)k#eMDvJyNHWJ5cEV$Ep$qsl5^=QyZE%=KKlWhkA5 zP1et%OgGS9mfY#A-YlMKG;6cY??@FTmMXQ`e|wvfgB$d@q61O(r#wF>PVqGw7*E~p zZ=qp$dcu+%vVQ1WJPi`F+1MGfBOk5+L zZq2wb`s*WYF3>)YMo#>H!uo*%$!xczVe>r1+#3O8;5#1eT?_Hsc;+VG6zyu%~U;PVm7YZdDx#jXs+i z9`FI8y`O|)vE%ko;s?YOvUlRIc$A=c7ga-@*B({jY@T4MryA_1v$ogBY_s@BUwVsg zy)xZ2L*B85Kjd56I!;!0&r`py0v%Bwd$9W2{v6gm6&6{YRXG5-q<^<{xq?0hxnJn^ zMj)Ino^&6;m<`~1wFG`6KFlrsBW0cw_aH-*pWFnlD##6iS+EujS@`w7tVaQgT1$S6 z*Zhb3uGnwen9n~y*Lm{U;EhviApt-En%?q>rck4D?Z;>Sd>~S&O&hYm2q#GAENmNkt{pSybf-#Bv z(W-}b{5@rmHOI&~CErDTCRqcq+Y|c+?;gH;uniY>Y);!Y+3XZ4Eb=b?k?BJ4jlBup zM%QqEw}G|HW8hzhH%T4dmNDJ@3C)3xjs0@tP7@vU$&2TsSZ~xvW35OTJ)sQy_nn)Q zgeA3$qcs#_uWJLgupYrN-@3K1^4< zFBywx90pCQVWe zFVDJtlH0Q&Gd9zCYzv%R8p5@LJz=7C4_bQ5KQ8C}H=)Vcx+VTc>iOZy*Ng@Kd+~Re zgFq5u24+8f=AU<@BJK8`oQ!6!XWRWU&5J&}j_S)#0{d$ty|TV&Cpo=+Nq!i*;kD7(rEZA*qCzvNFuh zHG%k-Ygl1x`*Y5Do~I$N@baxY(EAc=Lp3Paask*KRFFXq3LQf^u;H340v=FNh+- zP}~5jghj_u%xDg7C-aBQ_PITW>3G(bn&W&1@`M938dl%H01g@Gpsk+&(gI`_8rk#? zk&B17p1>skcQ;_PVfXsp3&o}a{yE!mS z5ZZn)_{zy>C|CuCh7#j)On|SP7PuI*p{0P;(*9^hyUq|Fn2o*)${@8k}(x-nIk3wHNp0uV7(xNQCB`5Qp$`RCenI1=)a*fD*f zJw~Ek!ofWJn`)?4W}Zk}a@6hQG5jAnyj4Q+eAi&iuy1A~!SC4Fp7$=3!cLx@I00FP zv@WImmmn^~(FL&%?3*|je{~*GH#}g6S;7P_jl2W&?e0cc#B>(mw5?m$hwR5d>SbmNLRgpCI*u8RA z{G@W3?^^K}QMLunu?`E3`i^n8>FO#^cGEbjiO?+BUD zLDMvTvH~yG+)p~wrWz$P5cJ_UY8jQhP~lmXxQq?)>i%JQ#=e;?-EVC!&owr zuq)qhWc$EdmGvbxHP4)2RlcXCE$E+(jp|7mvEGY7<&M`{Y;QH{bKiA^8PD@)7+fze zp$hFAjh8L!s``~9$~Q7crOrTubp|Uwfy1Q!8aK;|Amu;gX3_fC@%W(Os^(R`mo)1^ zX*EX!_%7Mv9v+rdrmD_h%n7l8%5mc~4I72O;dWETyhkAKJO~5*;yj`aHfK$ezE$X! z5RdA07U*%%FLzd^QHuyP>VE8SIhg5e5VTLzy7Ng*=s_iZz2bb!Wy&M=nu6~h$viPR zqio)U7!GDJ%qoQ}S(_$w4SEk0THEb`DCh zU>{dK=lX=K@hyZGdOFe^u-T=i+PhcN3|5!mMswmr_1D;Shhoa8G6k7jMS890E+Ru} zSU5KR)P1akQ7Pqmp6)mW1Mzi%T{{qvDm)ERFOW|HBQ$W8qmv29Y3yMX3K@7tWA7;75sgyJtnJ1(xnH0zq*>}`#T?^3&eV9L> z#(p(A!ZM1zo1f@Cv4U~DM-o}E?qmi+|#5D@lSgT*MQF~=qq6xAf{wssxE4P}1t{cE6^UXwOa z^WSr!*nZ@+hDaXQ+lu>lDaY-!vR-T=oGr>YJ8Ne;c?cf`B0ZH@b$x`)4I{@sW79VB z0iEdaqp~*z^~}G2AMDfbvh_KCo~eM|7zd+-Ao9srd}6NoMA^*oCouheHq==^emSvc znyzoGlOO92sTYYS;JvSL=y$SY!;j@T_(v~Q5zDJOZz3Zx_Ll=kwWJU1BhNs=w;DDu zt*hisAc2w0ho+C}hFvSVV#_qNm=dTG>A&C24pQ1YPwM?FfZjQdF-KRxxF&fwF%v+4 zf+>r+8MuTSs$wf$_TfqT@s;pOj)Xy{aR#)%eunwdB}4q%kKdTUD5VV?WkfL7vH zR~UlAuZPO_@HS9=5BS+1u3}TozPb>0_viN~Dx46WIWrjRspi?49(ACsp38FpYdm%V z;8rCj2A1oZY+gznOSZO@?|$`WTb?7W|IULhFU@x79sR-M?HhR667|y>75?bDyPH8b z&mqbswtZyM`U3-NrsNj~-0_)-LF?dGTD)IZ1$8e=N3p=Ix#McO(gCved$AD!G7I;) zAJ~xDv(K0f9St`;$pf%_C9mL#*r4(~3*>hCWCt^SW3YFx>gxv%*ApXsyHgW+T)7%5 zj;P%IOM_&UUFA*}TPo`M<#h{_-NB!NkywVOtXN`^jG0JpWaBsI5*~3YmMo#-sS>!y z7QMc1Z=)e|;rka(7Va=9zKW_Kf-t?7MJPkNm{pjHrD46L*m-U)F0^#BtYcIC0odCO zILd>`OH0>;3$!$@c?W3PWUa3j?B0DbUv7k`83o8xdeU!C&HZ4sz!R-xk}RKhepL62 zb{M_u49+#i^H8VT$ZBX8=(_X_2U#ym&qXf=fvK?YMo(X-XO-p8D_D=CG%1C*L09Yh5P6gGtbbU|gmHw$F%| z#38cmz8DclyNp^pm<_=(-+SH)NQ&#J$p$gA|0u6$>rv=veMiTw#WIxDhNgcFN~#Q% zz+!>ciFpx(zL>s4scvxKzneZhi8x6R_0kxG{;M;asv81ihC3PAMaPi~GY}i+3JEht5W4r}i-)XR76BKPWLD+HP10wm@k^ ztGop;`-^VnjVu;#+1+x`XBpau98yLJw{*0I}y!l**0iJNntPo*x^ zjGE{?XL~21fae*Xk@iyz1ui$mnHWBqQK8s=H$+573N~+Hwuark3+*ahGdlf{1>`uU zjFqCCQeVGX9=wtH3BJd!Vern~iW^RLIkv(93zfLT%C}*;Xr3hXrdQ+>E%R?vU%ypL zTdEaQabeWuLTeY7x&zG~GZnDdEf2b#0kR%4-Mm*B<^sw=vGIZ4)hawls2q;I7G0N) zAk}N`tzNFE4s9Ox~Qb4Qr_+VYx@6YREgee5>qtSxyLCA0RF z4Lzv(PV3zv%(@~s?J)xcRsz1QP4esWo6!BkW#mi^P7E`&`rM3mkGcwD zV7s@j;NElu&Fmv6KwWz^SB%2Gu;t?u`sNno4!1>c-vx>@ZqXNcOm# zo;1RsLR~RCR;oM9XdSD7`2!&udk-O(v00^k3T)-9#`N$I9F^f0d7|kAmyg(gy=upC z_+J^ZA8#CzpB785e1%lZJEwyGiTw;XIWwNxu8<<=p~Cp`2#Qa7Fy-ABGaPxyYVubs}$sU3HOsw;owW@U1h2fN8G)v78 z#Us))meyx3I%2f_d7i=#Y(`v71ks=PID~?X8izZNJ9%U852ZL(bElO2yHq3;c4T>j zNfdnjPR-3MNx`W<(&P=3ODwb0L!WEK7twe>l5j@PR%ACTW9wytoPMQ z-qTtp(DGg?gT(CAtmYCvuzFJUtm%qtl|zXP_4Mdb(eVIARyI=68;q_{7&zVjq4&|d z+RYQ`UUPN{HKZ|p&M<0qX^X17BK-$#V-b}5+_ov2O&d0lmw!Z)Ex&Gh=^LD}YeB|_yA=bTL^RCuKmqcmBf9H^B?}2T(0|!!78%BjxzD zJvO?yJR9OLRiFFkHk^`>5Ho)#<)-=TB4qRBlF}CLG=?=R1;lbD0kEB`@Ue}YtFUZ0 zh7BN{581hb4S8_zI*|H-m-2Ebnh}KQDz{(9xieF<*)r6$9mwsAI$M8G%MeU>0CWdY zQ)2g7FfjwXn(tkmx$H*a^t<3{%e4QCzR(LPWXb$o?+2#dd2NgI-1j(oPx?6qpWPMYq(Wh~w+n7Pb$w&Ys|->!6+S5_19JR*MR-t^vW zU7(5yL#7Yr1e*5N+R>x0`-41y%$v_)d>$L{%#E*gxx8$}{E`M6i+FXB(ic+WB^ack z54>Sg;O9p+{-UZEgrn#W(t$tl&$(gY&xN|@U+LXIST}0sBis^Uy}$TRnR!8xOi`n) z&*I5Dg4q$GjlB%Ix7Wma<4&euP=J@AWgiTGwsmZ@*$`6UGd3V^hV#5f|2sVdsGNjO zb?Q#mzO|Q0!sud6$?tLlZt6i06223@Ui1lnQqiRVOk<^G-}3s@w1qEEqWwjYg+&S7 z0DhOl*`-eHEv{=4@8I);hkiy|b$f*Ac$(mOx_;%49g28;fwZ$nFvyRC( z_c|1~TbrA235cpH@h4Ily(`zm9V3WlL5D!}C0p_|j#v|o$HYX~vs;b$0T*>#oNu9h zAJbtYdPFI*+RYm~;r_--l^Tfn!#^1jk4>|xLL&(;V@EH+Mq^K!X-GfCqDCEoWHwO8C zt7xsKf#M;2gAqwn_Q#qPIv2`N&5GwQn1O4R{hpwdM7Ea%3yT!&@$0R9E7ZT zZP({?@(I*-2q8^qU`}oq^svu@3lYV)EbfU|kJMsk$IgE)mp5yeUb_@c`tVndGZ4fZ z={`wj1Fc_C8$k|Wg>UxU(c~w_aYhSa=C^mok6G}av+lFzQmUSjA%~A82l5GR=;9ss zlJXpAL!_sc9sv>Xq3mPo{!7O>{RVy3<@!K)h?vJ?{?~iQvE7JxL{~?pXQlwZIyR!F z!NH)cPkqo&%0Nis6%9g6AxztW924~qWJ}24TE5w@5M+sc(g;f)BncRfMiTJNVfxGl z$?lnc_OmBY+vT2dR^+yJgO*9;F0(=F*wu&!l@xSK^D0{0gInDsbT-H+ECEzjgT0HYE9Tb^sc z=jVQmPl8N6j=I9E^DicNEgenx_yq4JTM)AAzD=*;Z=Ae21JA>IbqKqjcxCY3fSfA+ zZY^n+lc$I#jOI%GRFNz(|5(^2tpGQ&L^e*EMSjRDl3xy|woLhzrSeIiUA0~H8PR`Z z)X6Su&+&!i)zKV-N_XjqeecT)=9b{J()K?LaRrQvKRJ=8L)j^z<9W0ax?O*Oul(bX z1C63TP`+xegfu4e=|PGP&82D-ezwTHvOEH^%4^+!gfpU|m4`YlCM83%J`}7@h@?uf z)^fk>I2q0~=ZL$wQkLXgO8KNZeRoFiCZ!dr_MFieCPAq%DZxoe%37;Vy!OLDZAo^l@L15LiY&2yd-RU6{ zK=mBEkIH2XEqf!MJ`$6f#QQ=@J9gmUkTBOnPw*1TPVaJP?P#zdbq=kClKSf~ZMDJE zz%DMcS&{j|G~^Aoep>O2J~?*3Hs5h7)c~0Gj#0m93Ytoa#xAGf4sm#x9h|;e7bON>X2rKgu|wK z16H1?4spWtKAJ4|*k4-HOQ0y6`)q9-fKY2%;4K)dpEDw65s@9(C-N0lVu0zgLb;dU z$=^G8@8<2vY;$52NdtQ_`=f&l#aw7K#oYodO75ZTx)PayEP%wiDE~ z*F1lt-xLvbK}uTQ14yaAu*>u#dzsaaai(C4M(@{dGF=1W71DD}hVEoW5$_Up%~Yb( zkNtTXgkz+Puo67cH5Jt}@Quh0@cyK1TdSYK?@Q8tc*0VZiJTTX)CUst)SiyvPEPu-I zUwfBjeVSKB=AM-0Pab!Mfw3uSd>>%!I6kq{VB9jI+>Ta=zY( zep0cdBX6+WoP4$p#dpJdcHgd11*dmHPL1$jUhIrTXukRUCwOn`xa99{7A~UkH7>ev zt1~5`fh6opv@~;4kGQG@%E^X|>e~Xd#i|&yc~V0UsU3}f=-s~E9fq#g{PozMEP;L6 z>)8vG*cLi2l{bV}7HPu!KNS6T2RHC@W(~_p7`-bO zP?p{wHTv0@i}RqRP+8oA;0Jz09Obj!kzhj5eHpry=Mm2`NFRo!+AY6BaIHb`hvpG) znyX#o*PiRSwP$B@z+b?6`L{bz1CmjVCvYzW40m^Tzj$Yb8LeSt%ge_(7@^H2y=1pM z#DpC*U+_P-T1I_2ie_h8So}<5t{UOpF+7mdJ8LIV`mr;aO2{!`KB=JT}r8D zWuo-w7Xahx(mElf(s(KFFIO^QJ?4q#FzbOUX=Iywj@4z z$^bb}jqwZN{xVg@CO?xs$-01zkcJo)8?A5FB}Z`PI4+gkJuh=!Ju>)O-c{u*Qb;jD zzmRE3%>1l%x>$95QtM(ZtrDda8kJ?33fI_@do2m2^g3kQWLIW`d#3@Nt4qAkMA1kB z>4u~y`&8w7-gK>5ch_ZgMsFi<)Q3F-Lb@NKMmXI+3=F3bB+Znlis(bdawkdg;d{-0 zMPf#Xg-z8av?^Xn$5ZV!f{mFm{5#UovGxO`tx}3c%uq$;W`m>04cDX?l z3DV=WP0=f*(EwWDg(F$Ec3tY9Ud;T0kir-J`0j0d1aVy>=U>USNu-JcT(u;@66keR zt>*Dbr4G|cWcllBT^y=n`1`+d85?FLJ;Hq-_5__cIHlAkgu{>d`lF%Z=Ihf@sjRfHD*F8S@Z z#4`cER009#J|n*A`QN#qCFBf9mf<74sbFbyA%=Pnsu?YkuV0nl&#Y3TyKr#erqbD* zCHc$`#q-KGSjEZ271`>>#2DKZk+pU4R*Jum`2PHOkc?t@_I57lXj@QY7^TJRx@)nr zL13Rx9j^HqN&swvaw|@%z}bQql5>K6bG$mY-CXQgeH8R%gJ+s zP^aIC)JCHmm`b)WeOn-y3r?XMgB^eLm{gS=RAY!~(B5Wi&Hqg?-@~cW~ zIjrB}JTA8~z{>d*J{|IsMz*3Sp>Pb~MRUCv%XCU_&TAy9_tYYCN|cy&+Fh7j9Fy7W z&36ZVR<4P8zSczc_urQ0;-U^yn-Nk&=quK`TYlCiyR?6h{|y3di5C~G^=6^>WThZN5HzbQGJss$ZFifwC!b3arojWcqWcqSAN}>dVF7bEagb?qI|UcPDI$ z!o)u&yVpx|&3DCjvlQPqDN7mzhj&~RPo3~_U}#7hnd$xe^o)*`z5mhzKo9~R8Ck@b zUE}AqoX@>d(S(e4V}aXqAyvqmNtU zO_?rQ!An1qK&M$ec7a{U)JAe`LBb@&K$IaR~k;aq?F%^~OiaE5>;?^+#KzK6b zkDoMN2Vd-D1_uGbD8X@LSI#JwDC6Y{b7p&Z|Gez@1=r!vjG`Vh==yn=V? z@~0~R!)Q};Ctfkt^T(nYH6_)m`^CyafBD7`yw@F`Lx`D6T@WQNWK@iQerN)d;?RXG zoKf#Kl|HLW-zAB|>q#jp!44!1Pu9jT0Ofsr1lEX>^mKcma7tRzpL8DPKBqN>9L{1M z&#U*zu&aIOXe<1n$<;G=ldc5O^1k+}m_xcdVP?8b)~_eC@!cChytE{S?8o8F$P1y$ zhBeM;vdwqxN-$JKMqj(Wbgr@B@M_^p!5B-SUXC||E+V(DLi{{%nJ%eAdhc|DQ~9o`;)I6|UHf zerN(TA6-I8;c zr0{Aw4weFpUs4WGN3`Hr7I;ZKjD{HMuY55OJg^cM-_@hqN~* zyx!G<XF3Zu!Y0qXN z)EFHqGX?E8Gk>!B(e1wx!ARlE+cGLB)`eF)ktC~FcV?=~!_oPPC>&-5-FVOHm$B0V zhG#aR5yc5c&lVEy@A`7RP4(qN&v3FPZy2p(rp*7<-d99N5pG+@AP|Lkh!P?0#2w-; zM2Ne)y8v-_cNgOBA@1((?k?T^SKv+V?2Yc5{5`6*dR49J{$!th&OZC&mt=E4Kw<#) znj_^*it(WY%?dkVBOl&4X{c%bh9n4A3XV7EtUb+narj7Jn{77r?%ajbRUl9u;*O7_ zXW{@)G!v^`tjAI>AFh*0dT zq|l*p>T&X|j8|WCXIEo=F2OlD{%I)@W_I*LnvSTHPdjdlg0!|lu((_19oC(Xy#kFL2?QO#cG+zxkn ziTFgY3iv6htvW`#KmPWC8Wx5&mxSn4h1~a3VSfRL|#J1*lUL7Cv5@KEu z-|T=g2qSso`qC#a!_ z*fM$n`P+-)8#4EBh1&Xr+Y{T~$K*z1`>A6)XW?Ux`H`>AB8eYN3Y@mA{3&zHKum7o z{w62h(RB4vlXAEPmL^WUH}3aNPoBf{2OctRnMspj((i)MDa4r-dp6p4!md`F zQU_CL>@6uSL`2+2J-%P44pmMr95wJ`jBpZ(jSIhw5wy!$=_tn z(#S9S{stcP9q2)2VKE+#SnCRB&5Lnxj#|G4DUE=Cw6oLN-k1!|fV1kzyQ-G-RjjSe zJ)`sLJsx!kdvtDc=K)9v>mDA!5K~jXt_}8)e#BQM`2_`#HT5J8UZ&oXg3*di5IF|+ zHiHK=E}$yqbTq;hj+(5mArWSa+1MUNdi4rhT~mKG$iV3GjUTp39z!qXcPUqQZDVr}6jW0HhR$`Iad}YBc659=^a{amO zuYPrXJ3b@>J6U^XH2fv zJuizvx!hkyvq~%PlfI7EtVXOb#=o3)6cs+_9mZ?OxG>QlQ!waqP7?<8?L=~NhPA(2 zh=B!i%}7OJ^Zb30JAk7ZQ+w&oOZ?&1(}E6`b-JLO?7HCM%t6~TC;GH75ZLug4}^}b6? zWB7rB&FUF}GU2>!eebuqg*5F+CXO^jD{X#%dcr(}|1qbXl>~mFtET+(($%5R7Xf-QFGB8kW%N+d2D~p_YvtHl3Zn^jxzH9p&tU(9fvv6xiIW$ zUTxa*Lz67uPJDSx!Q%i2ogm5Z%bH8$MsAC?19I#7Js6u+VLrfp2w3wDo~qw`_#C+s zf+-@xVg_=>jVGm~bNA1rD#}hNxlfC;jkGasV#|3Z`Q2x5WWD&`UU)9QAK=Gkrs&g7 z17U0`daIxc=;^2W!>-^TSbS=7qA^7E4*wIYfnDtIk>y2xHcaKUtD-uRkUS&8*|EtwF8dc<6wc9CP zo6>~?kH4pBUZ8vF3tmy_>U)MqPj$OXX_=rY?peteVoC2I?D^Pz z-+Q-BeNplFQ{D56CrY=<80iZxf1~n3)04dkx+5Rjfp`YFq0`i!@Q6a4SZSCRd%g|2v$GchFdu*=aj_fvfb!@xT5fyvm^+k_N{on{uA5rIx>F<@Xv;w&sA(8|kv%TU5q>MvVCjePqXw`s9wr-Nb2N?l>R1fe}8 zg>75(eAkn63?+X@p9pJF%ut^D{p%#glytr48UBtcyueuc)0<`sx8SW82XH-ObYN<% z`o>$3#?|``!;SGgz(OSxatqiQYyv{y7ow#$?IO)B zpLGC!=418CZ&ukGMF8*;&pR9Q*v!gUhqiTpKw$-0s7u!>yyszbKWM1LBg$XB?j1wK z)aCIs;BExm>b(jK7NpS-GIf1Q1)FJhrr5#^LeL*WwRgGGW}2=^2|JP~lDe);gl{3w zcw}x3ID}SBcXst-P!@l-|5jd}UutmEsILf{=77q;2eh#!z2|BUD0jpJ9<7!uTx&y1 zO5`)S|KW0=AhRO&k}eFXEjl;&gF_PocT#mLk{tLso@CYg5IZCY=;SI$clkInrWb*w^>-R{QZ@N^^=>et4DT)X!x%i0o|7O=>77B`|I#ha55|Icdj1P*HB_$0vFYdOubl9j|&5lf009h@2?~&^ExL?3H@2 zzeFK>Jgmx&r6m$&Z!_3^WW5HXAt0{dWPFSm5BR81ovyb&oun}|aKOSM#5O(U>H;s< z-5DicXH9ABu1MN=>9)`gl3|->n^b*Wlo1X@WgHd1;Rmg@dnmYEH`yTx8l|T?CbW`* z;%|xIltDdDRP?mn_drDI08(Fs0=dzXh|Xb*5YU2gywRcky*fjz#l~^Hz#(Mkf>x?b z&NbWd>d^gQra8RSdIX(1XRhns#P2po5Mq>TGU`SujR91ZXNFC`#xt4GVQcQB#{Pnb zFBWIXyBA{}qrsHs?DaOQ#}y=SK$c}>NFTG}@QF1+Nx4>ABP|XlzXI4W;M<7$C+Fk_cI!Ug z^0D>`t$qw1LZ^+j)o$;vY+1O&;CFg@UAL^sZz#;M=*lMmcc{VN%wwVu}^AA?~wBI-#z)=iL+G~8bZGWCO34<0(+aw`}R2o1JUVX z6Laar$}LfZnZ=a}y)GZK9G$0BU&j!ro8tEWwvHlj{gIFH?W{Q0r*ZjVu}H(cw`p*s zv7`B@B-coBYb?VPCQwerp4%q)x^np@(e6J=3ew*6Q%XH}AZNvaWXV@Vr^? zHii!t+#jew@E=Utb$IuWOWO6(aNKU2uaU2>#1u)KLF>-@r;<#Ze6Mpk*f`xghlgMN zZFU`$!*y1{?li!@h?tx7%8j`7m)LBUJlna!}!>sgle z3H=}OgUDpjF#_-1)sAp}FOA5r+dH!I%q>RYF({05?%H`dtQpyPr;{9_5)waNl~>i$ zy%lKLWoiTI#Fi`dn&5JAd!_#Txwbnh_NL#?U=CtnE{Z_8wSKO9+H%4E4a=HLob~6_ zQxNSrDliczClLa=tdpa#5yqutWg+eL%(iZNp(?Uzx;;;ll=S`D_b|*-q0)AT!_2`X zdDf=F!4{vo29j_Q5a{cgdRx#3hPU4%Xf~BeaY<_l3R)p1S@wxgWP^qD>^axW;o|Ab#=L=2l$$!Dft zZHYA@q4sFElr9xU#u-^iuDl@Nytm*KN*P2-Duv{{yZbhvXnscgQM!an)-9CuWaL|4 z_OXSP?%sl{e(iPG2wQ$`fN5bMTA0$i5dR=0BH}dZsKPR0tS|+49UPpTEM^f}EOO-~ znMa`O^(6uyjRwTo6B#<1J5~~eI0kMG$*aAnQx|#C-A)7_-R)9y)|RDZsfCwLxxDJR zU{cqIhde#(R*WR@L=)2q^T9vG(NgsBaa_YDva}Y}+{DP2=ACc|d6x$tv&GfwdcUiC zB?bqePN`z*7UqQ4ZR?R9P=QYhAj1>WWSY|OR84op?&gEUGhMrmZ+m@w!`&9O)&}i= z%3ewJX(_a)8+_vbqQ7LNEG={S$GpHtf$-2X)$Wsc>$$s8zgE^?^3(b~8;ZA+-Kka} zH{H8|dybT#9P+_^P^T&_}p_&`@dX#Kvr#u>%diKeaY z3>1BN@-(mZTIdkhwJGZIlFp)p9+m{(18i!>9;*o1aW~%czM|OL!zj%=wdP0e2>%LN zcD_rq@UBUiEhfqQx$67bSf>2P^xebhIYyRa#$M%NgqB_fW{b1ZsUqQnO8#GV;2i%+ zprG$zhOFYSbvun)Rp1!iRwp{4SJuYv6ZQwmISlA`2x&Uo+6r>Yy-!d^M)%_c5f`fF zG!d(gG&XilsXL{Kpqk74FFKg)scB@-(1S4XZgt^1G@~fdvOUHnz8WDC1ASmLF?kg) zmWe}Uz9vsZzYx5K;D01*sF}e#@U#AwF?L-F#DJCII(-4vz7J@7z0$!ve}umuj;9-T z?_)?Y1Z;PyzAGZM*sMmew1DG}(o0ya7c_i(@CfzpZQkEmJfaolNOy;L_bQ^dF7rKs zilJC&E&rw<2;tmdTA!cEc+5+$LQ0={hdkhPOkyvNUA2uMa2)|w8ocbijTOnFltg0W z`#2os6fT=@DkJ#+ObhSwbEfHf{nCtovRuGBQajfgZQkwK^MVm-ILYz5W@oo~Mqk2B z^-7;jW+onp@M3bL2NcZfEg>F&KhldH;jy9+%Ja~H9#fVOk0M4qW;8b`S!`l0Nk?-< z-f3A$c%+Sbol@I1*Za1ZDgD_CZS$#tG}@cqKqkDM>xrtn09;1s)7{H~4Bx~#xgh0m zqC7|l#`nVx%G)AshY7z3P^^Z}*WSW8zqBr3`0kFSvu_-#b-ubflH{E^V(X=aF>sxp7*LoBwn~q2$ zTJlqiV>#-x(BGr!v@@9}?5%2+oz3^H8UidW#i0hxZmYK9=Nj6}{KS2-snv+U=3XA& z1iX!~|1zwjmY30oR_mvhmcvSfx?@?^iuPX_04&*E5tN_ddt5T7f_t4zvoIe^rlkq1 zNq}E&wd4L|?>XLe!cDcd5{LJ@*dNcG3nxTH-m_2BV?VE4Tls%V>NQb=*-j)#%(_7R z_P)g1$B_LUmFDu1^TIVo-wOnU^;+O>8oXDNkT;yR}3tTh9QY~sa-M_ z785z@?;o6E$KmfU3Fi<0XzzqQl5cSSSDUaEXWzgh5Nsk>M?E+o_;pXY1-} ztWKx=h0-AilkM`YCJD}7z!zhcB^Dl_!rBT;w;)1ojhOT{-SrY4>NBsC&vt(|EByjYwcu zr;qusR%ZW89QgmF>ioa|ZF6J-vUwt6(uU=e7N#QpqGH;=4}h__Hns!?rff6~699E~ zun^7s%<>Svf({fE&hpC{0izwNZWA$iO?ZL+UCa0(S7{UI2`UdH$n_Q=Hq{H2Qw8P)l3-`@o@nU;b;Z141p2^Y(0JQU@ng?IUX7(KTWrW*e#^d{B84 ztlKfNg1S^Y>K|}D$i=1Klc}>QF7Z{Zb38me{IXW{a>a!IR&i@}>wIGT)%29GN?)|W zT%UkpL?aIllAmv~fML95Eu(q#sr7qF195#VO4P7KLQ^DAgt0j-61rkICji zBKqIDvw!8(BIWuH!wsA|nbGKd23pPXxf)GZlobSqZuPR`=roQw9o)9x)K*eXsD|2b zNEv2FAVsE0*ygq-4XU!PfL5k^?e0`7OJahG-Y1vn@11hGYDL_MIse!{ULys<7&{U~ z0}eS`mY|P`7R?DZ93oF*MiUUkmk|2Jl32IU0NEBw0bkPiVDlJSU65%?O_9##N|v1oLcrgudq6&AeJ9^Pr@KzUg6V|E`N>pZD1%R;4;zYW*~XMTro`>rDADlFP;yrS{2)j}(hqiw z*!-=t`pKB4u(nRYUX(N9g{mZ2Skqqbg)w$#_9!U=!=-%q#v5?g@$Z*he&1rsmQ=5k zt%){ruA57yC*_^WK^b}5i6Pgg{3J2H-eLp1ICCPM(09%!mU(Xir+GU1uhzC$%)cf) zodJ8vBxYSM;6T;a?iFIGS>dHky3_LzNtAVQ@e>1@?y0G9{%R)b%p)!b!}dH&4Z-J! zV=Yh=e|0@RZJW9%%DsRNO>)Dtu++2P4cB^ev>V360{Q^Oe<~AA{s$CcrPqV>iv;if zvNa=}n~7g&KzsX(**;K&!fIpU`%0LF`Zd>xx2L0sr7=DR5IqE16c${aqhtpDB+ao{ zlN-Iw7qQ#9sq%hGvnaI8twd7bC-|5qZL6b>8oSaTBI|J3Z4G8jmGz; z^fBa4QA0KG0tlfG9_wqMA8#~-!po?VxmBN;z@K1{KtHh8A~RW@pRvW)e=b+(otg~L z)x$)B^vl>etT8(*&K&l`n5x%jA%gh(;@|8P8={HI?zOuS?bp&$lh&M=?W1I`{N`6# zN47G2(=g>{t*ka$7IcN*0BNC=gg$DW8NaPIzOLbct!M6c4`R@aUBkmqCYGL|v$H>A zR}xWE2h!Xg(ehq$Bu!VRLj=U25W#4uDB1J1)dX%fE-sY%49}+KA3v0!yqio6cv+g0 zSBkFMkbVcD!G|-{1&*Iw^Fc6>wdZBjnZ;LnQ(OtTtY$z@$E<3Da&e z!EVE9qJphOM%DMMb6b-KMZLUE?-0*oER5ubU|u4rLv;h6(VoVMJ&}QEa^9%ya$dnw z7gAmUC4Gjli!Wb}PV*~~K5^GgGDoVfk#JwaNmCWBDv3h_cEz=djklqWaVhq`&T}f_ zBl*1<{7-Q2vdVUy)-ewB8@Ff}l(be&)lRMT5meoc31;3CKl6Rr8)0Vyo1JzgO;z7r zDn6oq9{1{W8(&cI?jvKoK6XC9+uw`I7dn0HJR4t0(6jSE60^0iyZw=rgqY4ZMt&5R z#e7;u|6_oDlc+ooBt~?C9M|ofu`a3I0$O(c%K!9!z&Qp z>-%tz%y$75cJ{^I;-7>TISHsl0tOeY; zvyG*bJErE`E6xL7BMEjkK{AZ~fG2QN^u#RtsPmF7wRPEWZCW=T?!j+kube(O zx;Q*BG74Xk+nQM>wfdBtj=e)Om$F(?cCFmxpCdcZ`)woJU>@OVA|8S3J#9mCK)>fQ zqVMt4NvT~DI>GGV^vnSd-#(HS^)7O!zYH=k8;&8@+qu!T?7C%LNV_T)ZT7n04*mN& z5ik*R^Dt2Y);^OmU}Pqxr-Qw%4L7g5amv%Vx`OW# zV=PGd$FQ(qU}#u4hPhHiCk>EdG&yJ{IV89I__2(|ynuxJrDfm%F*!ML9ciecvLW)J z%Rsz9w(9a&LjVX0gIZ=Vv_^luFl@=P?|+&3YWPb{18}JV-sgI6^gpT!s+0odGT%f1 z@Y?gDc5>2kkUTw-J{0@0@9G%PCGS)V0BqIEZEW?032&azF)hq+vzr_vLF%g_h$VS3 z-(r=Sg;H08v^K2`O;KN>xg6R7$zL?_d+~}i)UFV;SO?6V9VeLFW43I6W8ix_-@h4f z4KtRL)Jg;HxCzD$fUtA)mcfD=ogx5CBt4n#)%#rITvb9M#i21G@S0iQbGp}Pi8ec~ z=6a`&H|c}89kIM*X_fEkX!Qw>JesITBF^dX2s(-)fQZ*A%8u#RIHHRwMd88=3(J2- ztFL;^4)9VerNmLEmUI@03Yih3}CF&|q7z)}gQHk;^ zssG4{5?BuOh)gOzFUdlZa*D*8l2H^K&IE5~V+D%?Mvl-zpq`ba; z%rW$x>B)3Q+OLD!ii2DH9yazB?TrP&kV+~6Sw`@fGHfGOTyzA8JTklN*(iJFw}-5%&y(oX6Ys*c*@gfo zW5ud`43~`-Qezho-5jrq`D#@oOb9zq_xT3N>B2R+f@n%0HYBv*lUt+b?UNF;k?P{# zoC)unYdE(DpxJmVc>202#J=Xn5;b>G>Fl0h{3Q}MkWZxsV&L7Kc!L1DHZP#o-YtCRK@f5-AZb0RRH zN%o0)y~5u@EigirYVT!Q-&vE}#;>&NXh zFs3$WmQk)hzLzVQ7~4gqOouhnY(e(!{EaAD1{o8afrzV-OK?cfe!aq90fY66X4y@& zW&h4{V1S*IT;@!b;o=7^h)!EaF&lpKC@6w}{CiVCXWv=Qevb@W&k;^?Yj%EZhG=~$ zY!#V$n}A{V-m*#K+3fg=4eHWjG*s-&v0)!wxvjS*Vhoh9QVrkp-19w{%gqk{UrIQ2 zX`6gzrDJ7jF|mZ_Px{xj{9S)7082)ie`XhZUf0hlyg~Y`QdLPM-qQ5CiHk#PW$^BH z?=drA$yuSTnTB0W37P%Yff1`b`!T%veq2(!z4U+N0w$z!!Y4vF27iFs^o0rpYRHOM zp{Zf+tm=R&JOh9Lyb!8>RAzOXf7n&ISG3o77SEG!bV*6uV3QC>n=~wLWTdQMBPjS6 z73AdJ0lhiVL_q5?K)Vl$)hGoRIwgNy?O>IZ(d%G)~S{LlG{h4 zvDij$5@H-h^&2g#Gj;(Kj&AU3Rbk&&v6#_$uC`I3Ox%v42BLz@HC|Zvs#Sc8-(mwt=$jU5L_ROb9WUo-irA2R+6sO-Ji8Uq)TOABA1AJc%o;}>4>>Hk7b{l6!+ z|A(6I|NoLNJzoE%0VosqNtXzVOdizATbK+*iim7en*yfi!Pp`&S2fePY2E;(ljk7i ziju}O-^%N33Q0%ycgO*aoLGC@ITZBem%<;c7QVFb$P860su=PCw}M;&X+C5x9wa-} zT!7?L+$wu9cuf<^%Rjua;@u-RWyMxTlgB*Kr$=}m?{PSEO;`-C5J8;a~76SmDN0Sw7B3Tx(1WvB;~M2>ksMaGXm3WN2ZneQc{ zlS%F&Co9@g>U+3-7iTqoneUU_Y-3)@XEA*=4A;mKk^D9M*);_tNT4<`Z@}-MX+0#8 z&QL5fI?7g;{CzAnq2#M1BNHJLKW;&V9;q)OZqsjf>7}U|O0{UdeP)=}R4Ad?w~rWS>rdt!yZ= zHxH;|1#TRz*GPS*JT@LU8GS)BhaG0M3QqH~WY9Wj1Sk`3^I-+7VzM!KB{LG9j7=s! zWLe4#C;>6d1+XPuLpCsCy^KGgTMT8?!Z?g-0_eC=-o1KeeZ{ft70(?YBQ(0<$YsNk zrutiXx$T{JN2n+#wn@*)^*eloO~?E@Rpqs>w1inRTd7OcmBfAAXxAHwtwb`;=pw^# z(GKyJUD*CX;d_;8X>cS1to(mHx?MR=0grCU4P^}|p~iT|w}kZBgLm&eqau=?U4C&r z7X7B|H7x1)3q_SWt3>td3@5Gao#Rc8?-aD4ZC%r zp7d2nE3Y^&!$0f27dKk>*Hmw)fgpK$Ef+tqO{^(#^Z66bN&r+LA6NJIkkWiSEv4XG z1nM}^inxivugbQsIACh70QAsy?(T9tHOB0p_{-j*C!&uW@}?BaN|G0B*yy8fqjgGO zYcg_tZ63?uS{qQnVP*4VOk1BDMc_|2b3%1>&w`vTq1|ufNzOq2#=&%VPaH4a1>5b% zzRDZ-$7AI-71&PotkosNcvUB#+h?Wu)~yk%mLJTvXJU||W$$bm*gEREh8F51GBe`K zj$E`4vnEjHk6iRK6M#gOZxaEoe(ooJ==D26SafbttwmWG1ln6WFYq(!F1L|7r3Vi| zt{NL=bVB`S4}V%(ZCLjkD+HgSB!|I)YbgYGR{~zo03VMg(wynov+Vr5r0dJq97@#z zcGfH-Fa%SR>z{Q2AeF1q#; zInz4-t3luF^F!~C0+&UUU*+fE=r>#gJ2bD);Uad1>#_J6381br4wlzTHGCG9O@}5K zr|Ll54L)8ODRj#0*!FD!Gz^|6%G4|;WVOQuQdnkg6s{+@92&cs4TEDp7C!dDsP4|C z#0k?!HoGjRP$|@xU47JnG$D&cNm%B#f#W9O*XGa;OI8-D z12x|caPs^m5z)S^>)Qh>lsXL`Z#ulH(P8E46g8WPsu^FzhPGK@RS8^|GZ<<9qO2~) z!r$|~@W!P03=9oNARqC<0cj=CM0D)lK*O{=orH)Pz2%gl8pDycg8Of#oMWdngQ-2A zRl@&vzi&r5ssMfcb9BWTQTX{2D=-2pmDFuqcue4ft_bF)JS&*nGz(1|mzH$ejz727 zjXsPU6A$>N_ImiR{hICc_Nkb&aX4l@cc;qXsG)ie?9r$W*C2XQLxYROgyWsMd*N`0 zUsR^}+4<8VvlGd90bCIR1aLlHD85|*&Wg*spKoBmb4n1*D%wW_J>_o@2`hj;M7chj4du(M&R zSi|gWUZfyhBR3}oYnJH+Asu;MldImfB&a{utuiJqf!OLE2Wt^65{wvzdLBrDc9wd# z@I}+vQ+p5nZa?#Wd8T_L?)ThCGx*wngpsz=K+d?V&WInqL4;gLBjvzr?=dDOoLf-o zgj5G9nI!}QpZ>4seoAHDl`Hy?(mH2b;KU~GxEa~%ImMB(%~uRtVz+#=_mf0J_R3shx&v-A{w=`c8>S>m#1+&o~La%X)A1k zjRjn1cDqmKFxBK~du0CVRK+IH&4}2qMXI9P#)mM%>lo6k_Z*j(mJe#sRal~YxtP&; z_3l@8?nB=aXY}5xiJ0Tzz>?`VTFde|uB36$XKV`uK>L(D zel`y0y!TrQ;`ea(z+NFWp4YF3`m}f0KIB_QDfi_rkMGu^Ex0)o1{Rexrl6wy(&z7f z(pjbU+c`8!1u-)zHTC(fRVpj0fI|_;O@cQrI7%^-7N_g+}*Wtg1fuB+mJ`{|IE~{ zsi~={nOjA{y?r>k?_OuGy-o*zk`qTkBtQfJ04S0YqKW_jR2u*QNdyo3@`PI(?D6so z!B#@u0RTY4`tt(;NJ+y30LTE6q8~oHrX4JTWKy@ApP#pHt?i1UQ+O^@l(s@55IMln z^m2ux{%Irmo&w^+6#5o}W1=bg+GWEC+_L!M->I`c#!qH{`swb;_Mrx%82-@LNyr1T z_;wU_oW;gkDr z%h5h0#{cuHKBiUUz^|{bPf#~fSoHN$>9FL~ zx2@aTJxoa+wgmH{Q?gCPlYlLAvui?c6iLZQOujcG)OHR(QIp=A_BgrXA)8V=gTcR; z%MD%PR?1TC>gK=Eh`26N0S}z{tPF*c+!LXKIwLyAB;}Q3Qg1@Zp_I$br7|k zHuyRFH*P2&QFOD{=Ns)NP^0(++kd0&?H~nwDK6Y{A+%~!&s`?n7zo(h;DSz0Bg)!x z7F@E2vubA#gS#`kyu>)Gt*C{IxTq={BIvFKOMb9JqmsY;{mF#lw}NaTC_mahaO7z2@pU0HW3VYJsxJlhVeqWq4kTmQG*tZ_e*e&OT$v z3ycDU)GITOjugnFy%nFYu-{tR-Z{-RLMGq#|Gryeepg~{B9Eb0`1VE$s=NEmffFtS zCy#uKpQ#5cN2Fj3{_~zquBkfWucy3Hh_d4wmdK;I50lZ}8vR8=aE}yrxy(i)JK_(v z41xJ4sYDLTP65Leb?rQuSek#=3k9bTr|l6EpPE9uA4frq*Z}Z zpEe*?pBqgq2zn(#mT>zn2_+R)MvQDD$Ixhrt2`QlNY_1O#<)jNFj-F@T08N{YB9%& z@s8pA$n82j6N2-okv?cO*IjN|w|i$pQiCoOASmcY&zYLI4Oz6xCO%#AujS;IcPk%h z_cI|s#|Lr@nv8E)p> zE0mBynkv{piwPE#=KksuHs2KuH0yGW zkE(M24N`63i`(Au?QXmI-5AQj{=w#N)Okz6A4~4ehgQZV_JnW|g5sM)j~j`cOsg=6|B=$bh)VMj}-f2ftJ4Y*3jRClkxvfwn7R&N>+Aa;X6;hm+PUy}FtKNDvE=||X zZ~plW`WIhXnqr5G)FvY*_vFS6MZL~SE${$8wHU?-G8+)5T4$A$myNA{hZ}0goyDl@ znH~HvCWe{@?8|Z?{FZ~fp(cZ?9Zwkzl&7nP82AW7g@rJj*Ji*PEkntgQexNs>YXYm zLt$2w)u1ijW>LYV8k@DdJn`2jOqOh%AqOVs_Y<}mHFO}3h{>qJ*NDZMnbcAT=)S&o z^3lq3a5qZi7^{ya2X_>jzr&DtnZgmrL+17uD7-Ud{!x>k9&PK{=O5s{ zU!FQ-X$N%kemLl-)BVY+3o~p$(=u&1ZOr#N>{}xZ2EemT_o(WQ;3sII*;Oo0mRpF` zSi_5nM`GU|9x0@AJ2yD>ex#|UQUST=Qv$#gp^D0l;wE>iuSaU?&!+H7tMX_jcW?s9 zLTSEeRLN2~p?1LQ6zVon$@=O9Vfc97n}p$&Z)_-OjkfK;dD9iIT*t4Qp)t)xj(+L# zJim)qZjwpx(`Jt2%8-9Zj)^q3;XEi% z30mSBZr5SH8eHyNEdY~BLL$sb)vTZhRb65Xn!p{lcf~y8{lS%&qnK~cc(YF`S}>6qJzc|{jA{^? zn}*QxExrCQx$#fDuRE#@L=~quJA#kXl?R7`RzoP*+XU@jvQ`7+ihN4z69<}?kp-TS zMbvirHrgT85c!F0n4s>y900?&C2-*^eToAU?;G(WMR!WyY5f*AKSKrx9$vQ#IW2l<%49#i`_Ohv6<+#00ahL;+Whwb z`t)|Yf*M?<$r+)BChrK9L%qg4-#~KsM?MKY{GV1fq}Wz#i-`@cyVK7iJUA}s@HFKc zn|8cWkGGnALwz4kRsS2)#+>>hz>|sC?l863A-w+jlF%92u8kqeEFjq?NH(!YbfEd!2W#iNp>F74t-1)*l^iSJB2aBR=e)-zj+Fds zFJmJBP9GGU?q^SWE*8XqrI%7Ttw%=K+fuje@J?}C{+zJQIS)o6T53^PdVp0!gXi6x z5p?c&qE4OgyT8_DF3>oJx@Hr;23NK?vb+#uO-P#QQ_OCoT3KcU^>A7d?Z8t>I5yD~ zn>*y3*0!62qdzD0+=n$GsP(aMS>9r0E*v_8_yI# zo6KK&jfB(VHp5Terw%bP3}%||{_bfSs9;wdi3mZ4X_S&{(dhn%Iz;t37ZAoMkMDsF zEN_l}{(%2U>~RvFJ*_GS`{FmDk2G*`w(QrF^Di#8gjL;m%BBQFXk+h|JRhmr#GE!& z^g?d(9q$9_<4x;)j`iqSzw3!}SQF~Cz>GJYc3_d_qP^@SGd8!8YbVFON4?wn&_LqY z@J&x5u;PJk4Wp?opbIy5I1y2r4xw*Kqk|~<6CZ6r+cBrGN*Ij`D&L&fA7X;8d_TgGO>mUltkBR=*-4+|}x%cMrSqN21iQH0mB zOKk2mZVKc3w+gGg9YVHIwgwv+-4|7Vhheb+jFE;l{v>nHxgL4IpKN^Yh96o z3SuKGE`5YH^^Q&Va_e(zQu6c8oahIo`m3V5@B-7$O;5CXn?lkY>yu8%5X-+xHo_Ak z96_91>9XAq8>9APAQF0xbgP+V&p`fSZ$Mf+*!4(~ciE2n1jgjfWsLidh}V*utWW6h z*;rm2p7y6hQ4n#ecQ}15wxG2bO{9V51}WvM<(rvQ-WK4ylmiAgHa0Q^hucmilF;&U z`x-bRwLs4>&zbIR11Y8%e|kR-E_lVns&=rJM<%hXtg zwIYKHwOW3uQFgrFpNUKD?68jMTHl^!VaJII0|PB)B!;D6vHvqHbwg`40M4t8)o0)! zwG}p?#JuhudTHYSSK9~%93L)sZRbIg^8@+5rxKX^eQ(78*ru87Nh{9zd@It%QRCoO zG)1Y%{#X{+Om%PtV_O?$U$v%G#VWrbFWC|bkh`OJ1PTt1jlB;2EWeB{RL{6r-Ue(q z)adj^sv!b7yB3G80j;s4^tG~-nj#w?W|_PacYy;NurZfmO)6_D@k9+uUY;}!`3>CM zDUfKQ)vF|*a(teHJ$*L9g-pVzh@L-U zRz}ha_cTX9h;LBH1Is!n{ZUrnY9ws`gavO{<{%?Oy;1#r+ zU>X|(8Vl%p)ip+@v;W0)#F^S|xON>_?1U7Io|R@SUQ7-w)124D*xU}0FR>N>h$dh8J{g$;U>f25%3H z!^#@|(FRfs`zR-Ox00L`3zv+DtR`u1SZxCps}2`7uRx z=$qR<&GOkMK3qMNMD7OXe=YYjyaUK}_B4j)-Gc5oo2|W2W`^Mi35j@&SLNe}Pxf6rq zvD#~Wl|0|an^2Rt0VU9gJetaQqP3o`DRYqXjLAL1 z1>gEQ3M%YC-RuNF3dZ*{vyA^Q?5+plylONE1l&TQZy#emWde*U)u6u2q1{8UPTkLw*Bzxxb2&Z z?yz^{D~x93uPyTG%+}rOPT+>^X>?0%?N6b<{EgTy>W`NH2A|&+;9o+&Y7Q8U*Dco+ z1I*uWRvio5=ar5ylKu1-lA<|2K&bsK2>rh*SoanJh=Yh3LRC8c#m>+0!`ie3@Nc7{ zFJU4m*8+s_0;^-B9thR4hhbmWrAZhjG$R)+O+q{S&eu&(cHnavD&! zR94ZENH=nevM|4Zy=j$Z6&mh1%3E`>;w?+%=Xe>hxI_0kj;A$7GsFv?Fu=w0yQ58F}iFfod))alZqHRB5GgS9W$3N_n#nQ!q)^i0h-j&n+s zAX^LYS{CI}K>SWwNPkBgTKfu*IGlJ$Uw})PKaB%^IRi@sHq;f{qP=ZXjSpSiT(>{=U2lirL*;c2dZ{*SfL8)iqDL6Hifh%r zZkPC|dtE}%@C9I_)uO0t4X=_P&s*$JuiVQ`pGZ(u`JW^(C4Q?^z}NtO7DwuF@_s?1 zPIzcV|8G3eo9d_JYPn5AKnQp{x{PcWkih2B@)*{GPam3C{*TDLG03JTdQbmUy!PfC zY|>>)K5jYJx@4tAowQq$9?ZPkkwgu%gDduly2Rt=bMB%x(SwH$CchD-r5W+X6WY?S zt2OE#aUpV^VGEj!9A@-2NWDQ10BBnPKu1bwa?`k}#`KO>4%~Y1gV~YPKP&62$JOd} z{5U73=~`mv!}k&l(3fw`jhP!u{`^Etl^8p}a`i%Ee`O`C55=SJt(RX3-Ib2*x7S~L z@sP)gK7f0#YS-vo!&s=DNvzuuXXr>NT+cp|Ft8L~EdQklRLcqqg`Rg?GmLGxEG?|R z1E=9%m}X{20~pVtX04+~lapIhybh`Dw`e$RiaV>W4*0*t4Z&u7;tfDOC`*o}h2~fCG`&}xt%p-Ah8pj605Kp55TQjcY_BJ;Wy5=FjiX1nG@;DtZYvYq zQsYO8;k1kT^ZbDE8l^;Tjb2gZYf5H5_qT`L!>&p_Yd_EiRj1IEE7W6sve%eZKoWHq& zwoG?xObMVOT!~B!Pa98OjLO|ge{WT@4lT!A4L`1OC!g{CX_Zdn(Yrvp_GIalEU0Fi z>E4a3Pp>)jYzh!0|1}sdB3ARjxIE1Lh|MZ+kVo^{a#60ku=_++o>%!oVC%cDqxH8CMenB0U&AYWZX14_V@@e1Z?pKptc@)7-T#@~jrxy7FC1~dGv?Q}yKOCsTjOimsb zZbSdLZ}k5jC4wL&m zZ(#t_W`=K70G5Eo)T=koG@S&;f|xu ztNH4C6IM%cxSx}8Y7gZn7jbQPq4lzg&gc&uRTZ^ZY*_O}(T_#sJiTobtU8yuL}ypM z=L*xl!lkckFXxlN;UGS}4Lc-q-kbHo$ zIyAk7mpd=Xzr-k6bM>eHLuS<23(8ZU$7%9hAH>Vlh+nxFHhb{B#tO)<&4bY{_&Wl; z`n{z&bPki?&1m{_8!=Rje?Iddm`pRf*jq!`Zk6Btf0HyEj+XMAcA~Bl0X4 z{ycZWZ#DJ{ZWqM}Z4-8{;co5qxo=TEP}6{a)h|ZYE_~2DL0Gny=t14PK5IAiy=Aaq)0!GIs-$of67Ot~|qf?6JiQ~)x$mC(-=&>uf8Kt@T~ zfuX>_sj-ge^lQj%_QxU`dWWjj8X~gPR8v@1knd091Rf>uT~V@JSe)k~N_L*>_TqW1 z(6_xc#+gON1!d(A!(;9()c+!~y_a!-%z4Z((WPA zR6dvKg%=pb)C+Ob*fYZ1{Du_#azgpl;(cJtAL$zgl9WaPxRwk445ZENZ{hw?PU~XE@$dFJRJ{3lWO} z@3xDVd@XBf1OO*yP&+4|j>uE1;eD9S0cpCJX@?37GIO%v3;(rjA_?KTC(JV`CNCQ$(G^Uy)eIyp zS8u&cQ5t*;O4?dhzD(x^z8u8yv-4RbY}-MKH1MhoT^u%tOy;H24CGc+ zfTujYC+XQdOg&`uvSx3-L@TeIL=#fj)W2Hv3iO{8_z9R|)5y5<@OCdtX>o+Q=kegK z>g1f4|5clz?V*`mxX|OfKBC~}AoxOBB4xB`ObyyL1`+9H_kA?WBF$^WY~TeRTCa9z z?H>Dp=dP8srqhp#i(+KGh`**A*OAWj5g&WmeEery{YgVxg(eH#kSwvWu^^pcpFY>H zU^GELCoaPQ-MKS`m)miraU-k#ZUe31F9W!wX5_6^(NHvUXFH3q2JfJ_amGKYQb|${ z$4XhX*(-eL6ZJcPSEeRIi6t49YoYZw@yO6;0O9%ur(L7>OJBQ*y2eR5NWR3ln!cXT zU*DwQ43;Iiq^zS7WBiR@@u*SCY_a6(t95KB8O2{gJjF?fx?XOQLj86vLIJVZ`y*k# z#s&MvlX*g*7^+V123_86S;Fbg072UX-dp#8*if2(iO{?er)Su|VdI9F+DqJ9{Om@FAVLorrpJxJ2Y&FPtG^c zq%z(@Hye2TP9X8`{s zAG)ks@8uLO1-yi-HC&Dga0sxed^3lrQbf*!&S(^NWEkzs^AUMnA7TZ?*e1HI0zBX$ zS_-rdm`D>n(1_4bSL|lWd5MySOkSo0Q-}@6;6<2}*eQE#%SxnBz z4l=L99m=Ld`OmLkgiWX7F+zSdF^sNI=vH3Pm9rl_Sjsn^UlYXN7)C;H+u1g)dJtZ+ z9;cMe_vi1fpAs@w;AFg6q)@y*C*rJJ>aG$lbip4n=G@#+ulCt>bPlEMU9AmXvm^kA zKrItehP9bLdYV0t(?|4Ss13GpoiRK!&Uys)0>#~ot8lqk1t2j;?R0og8N7VaaRG)) zP&d5S5T9;mSUQ&(!S*luC7vf^G_N1`ctpfh3zcZCrD-+MK&)1xEjXv}8xfI%#Yf6( zl7m&-G_)FJfpsD80-C%wPEh$pD!6a8uc|Dpt|eDSmwUC{=lMNu{heaKj!iu z5$r@);X!jN10)Eefl~*31PFNL*15;JAqe#fS2v%mdnhpOED&)oqEq;w+T=YRDa-9n zdaWxI^(w5kPsLj}U4D#;E^Uv$9e1=K;pR^4(Ph!QBcGwGjYg7@&C9dYO_I}}*AY=2 z5onV#wM{EH?EcKb8O2nZnWfA-b7c1Y2fVN#8m4^Um-%_PkEyQLIZQftm(NiV-Neux zk_>Kc3#dk*Clz}K`%e$A>Zf{V6)r%gw7Ay2$-b815x-|QEcDXaqBN$hAJ_63RIP)< zl$OQP;x%N{gUH>ynh2-R*1Z0B4(q7>vET~yT@#Zvd!sAkKB?VS_DH%sV_Hpm!{Dee zbwLA-+vr&8$Jkp z&vBe>R!K}_>z@BHsb&mx27QU9I=XkQq}>p39RbH(#qTmZ0woE%uN_wl3-lzH>9S2* zFklWfo^VJsV>g}O2h!>84TN{ z?7_#Xt+$7M1B%;#c`wV1>oaG5*tV|bXD|XZeAtK=MOv8L3S7l>spibco4pV;uGPm) z6V%Jd^3J z(u=xs#~p5{^t{*9G%ZDXSfjal)OMX0BjXOduhFu0n5gWXoBfMQ$e`-p+mWg|D^S5v zi|hPb0HJZbu6|x)%$lEDs3eu2E2;h3xqqc4;Zw`oe$?x6olQ!wmhrlpy0P(^bQI`&3pJnukKaf&aj77p8uxF-Ay+42kv6UZdbg|` zip9(!SyLreLAR>3i%hVTtSR9YSEjyvAt}IglQqL*Y}iE$)zdfmDcvzb0F0W7Ai?(O z9yB|S0U5GGw671&)m`sr?2b$w?aP|MxrKWLMTwMI%NFw5UubU>FSLI_oe2XG~=b#9t+B5+TlC%2~7|uN(5D zz}o+BF7{0Fe<`MVp{~Pq5{WBk`R4iZtX@Qk?(jnU98! z#{PTh>%6`xC^qtueVvC7IglNzaount@dZAmY-fgm3szmRZ<~%ViJW;eYFNo+ng@J4 z^}(xVG~UJkQ&DOjs`oLl8M|Sx*TXWd?^N=Rutfq~>$3ifn9R-F?+59`C@$ithU(BU z=bTTaOsimTBGN#g4Lln+x7g63che^7oS!Kk+Qsitlt`m zRL0(qAA@4wvr<%^6)85cpC8XbrnJ~OjpbPT6zN1I41S+THv@D!+9bqLinp&$dUoiW z=IoMwm;THS<0R17?~M?1+aAP@8u{^rOG_=alfE2F?iT*9^OF@)5WtRW3$GWz(sjvc z#c-bT41#*$y1uMz=96c5{)F(UFcDl_%n~Jk%ziq2Cp@!qv0vo^!*(A3R*2mU=FxLHF3xk0^{vJ8BSJwa%LNxz)K1yUw3gP8(Z1NK&o~g?-e)S7oXjIIYMsUr zCEEX5W|Ky2Q^Fm~=X5vs6D619!=S-IU|rbEDRckk#XIoJk_jr%b!~TbP+MQ;DVj8G zh)<7wIIwG{D=3))OZRb`0ML{pw>R&OzhmB^Qx^0yujRwAvB9S3iPZ`=sjM*p^@uH^ z>vL_aY7svI`VGuFZZYrWU7;Wa!i!>%Z}rl!m`}nE6_2TDhvW!b%h5#L5S(PV(&L}ZE~U#fg<`- z@B5gov`(O>Dog_B`8NO*vP@EhkHE$F-;3>LE=bHIvLHCVsg}&Oh9gHC<9N%xeX;|F z&c`;nBiCaO`v0Li==tv`1QU)=a$4HMxjn2*kD-j`4MtHTzUI?dLZnoWVOmBCwS^MX zOX^olv*lH{Lj<&o5kKZcm&WfcPhx7IlO(sx_-qc95Q-@EM-=1RZ9twZVenpi-S2Nc zQSy(jr3`*bSWFs~b70Kx_`$=Tu~55j6CasfDW2;^I1unABRr`D-7=hde9&4J@ox$v zlf1AB?Icf>yrYo$8PBK3(CWrNnouk1)p2Vv7Ye}K#WLVujX%!4v!1IXVS4bbTycqvwIV&IT2rwqALXV+}c9&Tpim0Ls& zTM*N_3XF-t#bg1xQdESa{3*-p{_Z(KDrT_&Kpo@UqmqS*Xb$+lW8}>VEo;qCI@pXg{V0kCSLsk!Fp4yWP5^FLX_2fN2EIdBq*x z?wU#j!p*2_40+`5$F-Hx1=`fcZt2P|?)*KX^OB=|1>69X9!P=+E-04I)3WeBK>wCU z2c;Zhk_Ity)ng#1-}GUdWzCD`{N3y^1sQJ_h$l5)~;}keHqV@vWlsMUahe=*0&rLRI{>?fE$*n=1$}a~)pfRiB zE!zowzU))H9Os$y52ku%eqB5xHpMG#4{*yI#f;3{t_$jl; z4$>lcWrub(!|R1os0!~&zS(3E{AJNaN?>q&L{opQhZZzo3C&aRZf1>g@7JcQ1J&0% z*CPI?r@{+&+as^ch+ayJXV!|x;yOeUim>4HAk8w!ntm{RhG#S!k_`Q$%U{yrP0=3R zZ_r(->Fhkpd}-qfOf8{k=f~Vtn@j^k>Q98UCy9yVBMMQ{=7COHP(Oaul%jLvH{{o zi)U?)OLLpR;dqsvlk5cNSSQ8@tLZj@v@Siha!cdTI`#`tvt-8m}Wy^VO=u3F8PHHib$4J|wh`Crnf6fUDSpjbrE+@EDsA6J zJbT^iN*6W!IqB1S^fNvdi-O4Z@%doUN+xYP{rL2_fJ3aBcNl0{@#Aw<$tN%Bl-~JY z!yjT7&4)=4-ppI^y${bZ;Nti)eU&ewJ{zK>_&FRCZjCn1DPSDui>Sm@6$}kw8hrJh zr3SEy(#niGnKCp4m6ghg4P~fEJKQePT?ZLEs5Si@s4BQPEdm9o zzP8-7F~M9e1>HBg)ylR)e6=<>R427bjD>@)J3ao{M&?i9;P90l%aGDXc_4AfW*gEe z=Z+xw*`D$GDlF>DvN*r&{X$Mla3 zf$&`$rwtrQyhGsN;}JqSqwHKiEx@- zt8lD$OQKw#6qZH2s-oKN=6^8<1lJtCzcigz9Yz+E6Tzgr?xNLW;%aeb<85;Dvb5kV zJ93NKklFJ%N(TF)b0~8`(MS>xWazs6I6IRYbyP))ZEG0f_#Ei7G6_ArXXAJOSn3Vm?elPA^Yu;omvPZr9JFLVW%8>kheAMMa_JsHi)8th37|axBj0OE)a$qImwy zvdI20ZB}#mLQA#2Nn`ekE|IS%*g)Se zfU@P`U07H`822d_c=@vf3M-);%6#(+30BOXB|QxB1zQ~GX9eXkst<$U1+U5GH8BCA zg(PdM9vz+(I6urzWbPH_;7CjyXaPpRifz)Fr37dxGg6+xEenuHkt-Gg9exsz#1~&s z)Sp>+M~{cB^M0KP+b20CqR;@O1Yb&2LBgQNF!)zx8l!#NFGOhWb~WFWj2)_ zCyO6~B3ig2nMgE8wR>HfIlAL#DJUp{bg~&w8yH zKf7b;cb5LCYqLr^1j)xOEO#gWnbt~oQP^k%gN>#Kc$ePn zNE2IiP`r9wDAKl{=3SpCU%D(M`N*QABr@R*{NQQvRiv|&m2E~uT8XPq6p0tL6DlZm z_S5?h<5#r%{isUb%ldot!pJp~zhl%av-$c!4+qP@l(g@aKhl5l&dus7BlcO>lti*4 zUer#Go%J|p5W9xt&0obnTtbiEzTMNjsxUY3!`0zMh_kgBF^psVa26oQBD;k+N&jcX zH0Y$UeZaR@8PxETXCt-7+wkHRt?ey}NnZ-LgJW|R&M(~obf}a&2Sj?FO+mY$=19u7 zz$fHlVt@Aa_#d11t=X2_5H*RAKQsa}3-XFA33=(HebEm`1V3K(u$i|ygJqs^pV{~e z^@us1Z@2-@{A1wsS}T)nDE{}V*br717kNN0^EZ^Bw(CG@gra9mG-dAx$nfG7|H2A! zw+-E7_y4R#+Qbaf);vsC7EmZ4v2@S}NuC)3iPiM}iiak*@<*wW6$Ze!Z6EpB15--6 zoggrbr&|7yR9K#K!mK&ZuS$i(X;5gfNZP%DN-q`xF~pAv_f+Tcu3w}yv? zD2Dx&+XzY5&gW}bZNdv=0$(z_rbBa>D*=_mX^$FAEXl$j!8ibaGZ1dk{7nQCjvi&wS46(~i-@W~x2- zfZ!9U)#zRlK3kS7PDU!xW4147A$M?tL7v%^*>`>cGN2oJfNx;9pReGWu3l+OyBrK1 zdBTRb8wVrpS`@9{JKf7W-Cn#;-r)dYvyslUa5Tk zj3nf#6xSf4O|<)kvdNk^=h`c}Rn7odDq7Xo~<-j|G}RBDIpdh4Qu zTf`5=a^oO2tnRXxoClJE?F}PY-9Lr?sO+Mk0`HdR-R-|j42d|aqAP-71hwD)rU*7h z7H*e-U`yg*ybI3v0$v_X*1iSrL1i!gkI&G?$6chvQ){NzxClz<>iTFMJjOmJQbi`B zJDxa;c^tR{`!h>iGVZ`|rJVPjd$~X3C;_Z##xL`ubziG}U*zCiW~@+`k(z|&nuL;u z`PtDJ!1pS1!A5J>@J92LBmix}_uH1%Z5o%!-|77AC09&Gi$p0_G_%TJD_)JHLcXpR zagyA<0+JVy8T9b~83J`tt)c{f!PPS}5k;n<4wG(0RBE|(4_A5a6QtpyR8z}7ukrEC zv~w*hLGkyq1kKxC>E(u^zbiuXe?WyC$0SKvwyQl-{aNL&QaH7qpQ$7JK>;2*F55I1h<;u)=Olo^l!_3UbgP%6z(c!i90=7LNap7xj zecO^3Q;=K#SnCBzh3Gw?RXiK)b{9+v`TOMeTg=Y&W7`jZKFqEih(Yu9<{Aj2-gy{h z6{vIPPP>!W**5gl*Nk(36O#T@Xvt&gio5O4UzE*QIEZca9MBqn?&2zu|9hI9rUyv) z^XVq^{~3?k0sr;A9|871{8E%-0sL2`y&r_ye^p@p|5AmkIOK_uebR=}men3(_sMUT z{Mtg^Ka)JxI3^5n<3-#!fB@@n^MsICnO7eFG&=E?48s zoLCiu)Hr*rjWp=bSh8L6URLON-udL6`&B&Tr}Ae>on-fb(d{5$({(HROj)ArzVx?l z5A{K~DUQrX0{+Me$TGg;Geq4Yj!|aC`X4c49EGMMvR5v@IjU|}yg%jy?d}k`=N10h zd}KeL;c!5^@Q^F==-uR?%-jhJ5rQb<#5LNTI_B{H+3#L3StEDhb0xFR07c4QIYmN7Iox=P0~ z9kL@i3c<>_^$<01qU>Q8N)g$d#v=V1oWKhYOHqZIhx^$2-$qS4Wk3g-zRZMC0T4qZ zZM-w5-7$4@4CH%2R4PUOB+bQv?fR68!=+n0?`uyM!V>K!W(8k+HLDWaOEaF?V@Bmz3d- z;*;q})r-DX0#{RJKmhq8-19JEWN0yoRBuSvRK#TEW!sC>!u=#n;u|Ua%N(k^t#5qx z?R=h`Jl33=G-xa;{J*vLl~HYVQJcXEZLvZN#c2udu0dK_q&O5UQk>%MR)JDHxP=#Ych}-lytqqn z2o@xn(7xZyn)xw*=9@L^TWk0g?pirFXPB^;7D#s zR5_c#G|`5JsPLPG8AukcB)+3Bo;;tyGP$+~?%md1!o1`zDFzVmDt)a@KMf?v!}CBe9p2dZ`SW{#zli;Y7zou;+h4`; zU^*xSy_Zx^dd1ue;ty`*Jj$kz{>Oacy!ot;>(Y*`b>lJ+x5bsawidS%*{|9Iqt2*j z8+k=`9u7+#OhI+k5)0a!&fC(%y!%Z#Qak>JT!-LR0H>kb$Ur~T@8TypAiu?e)t@)! z%I|J|dAP~;8jse6*n0HZqbXI4wmsaR6zc&QWl{=VYSME$v|`;>8$VIfeAcNM+1mu` zhB}L{(l_Ei0^++QQUy1z7v`4FI4l$p-nA5hU89bPnWeg6Q{#hnv<^)RV$({-6WA6D8 z)6N$dBhA;|3;`V$tuprhG?#+iRigxA@>=%bkP21W{)&(!?A*Lj_%(|6to1;?p`;Rr zK_tYlGI^S=rF#13_e0;bGQZ8O*_#Lc2os_Z{I%fg7rfG&u0KDJ7MKLqRQ*|kgq1Rq zdPM8iz^`;`k6GNP(g(>beu zSMPd6{!avf_DVGqD4WeHv~Z(19mdzz(3TQG+$0`PRZCT3QJ)tN$H?im`e6%%Bm#c? zp83!vJ8TevZdhEfHoH}8@cfZ)D zD1Nb+iyRj}=1O^uM%xt)LbhMj0#)R1eti@$yrD4unIfyw-##hz>hbNDKWnYiVRW2H z=AHo;^3kd8+@f=*4I~kw^v5Yz)bsK< zy?pt`om)IjHZOv~|*>I=qn&<)9#KmyMeentV z?Bu1fq`<|37rO&pU+FfbJEdO61LGPPfow!KX6+= zNeB5+Xq9+v0>3)}7eCJ%>1m@Ov5{Px;Qq1C{&Ymt8(>CRsE-}BtBlS7PjB6F1A>kzEQ@Q zI6|PhT$%8mn7H|PPVS$t-rm$%VGqHaw}DnXTKNX|>ws#%%mj#y)LrsP<;VNCvWvE7U7#C1yRfs|9(HX&s*7%GmmQWo2Q^>vT}a?cm|u;awS^5A(YSs5<-GLqg*l%Txj zDb5tntp>=wyOlF4%S{iymu6>d@ox3u-TSZlx8QR zArr?kD^KDlRK186j?pT}Cuek*;E{j2PHJg`Me`vJG(d+O_!pn@ydw@!H@W?Uu6-_b zYOYK|2-kR;xRO&bBg~zK=Sy!L3c$fMu((=|QPCZk0!&Q!Y{Un9I;N;4^hgt%#leBrJ z4<81#vi}-s+yl8O7;WsbkE%7p+HAJ4#JQZg-0keB9jS}am#zrYmutg4tu@Se?u*UV z)A0b#RM#yOXJ-?|d>+;l&@wvd@g@`b(0!oSDt~H;F}9Wt+wdR|9Q|PE`Vhos+j9Th zWe+;a83rVzr~efdLn+qsX0e5V&qbc(_Y`phSwj=5UWuBRz=Cb7QWh+t z+bhzTDo;<2_N}z-oq@kel18!6N9~NtX6gss72M;{rv)xQ`cHtqRF2a#lx8y}&orp= z0THL?H#g=G^34z$Agxz`-Ya<33rFMqsiZ7G`dywbU@awcl4^HNR)%iXb)LE9DD)|W zQ8NM$`ADdTMtLMP(JS1feXuR1(dd9Ipd+2vX{1qoRP0WjM-mlh8%8oR6*h)ezUmV_ zXQjS9Bvk3Ey(a%bOQEe*YQ!I9BO*KVi%VuLok1KYTgJo75)AvfQm6JOLj@hE-$7|a z?dp$ZN>l?GIGoNDsX+3XrZgCli*jS3R5l^gTtYDE_s%o~ zHhKi6vV6Wt+RfgzHTyL+E>nvm5%HLSocA}gu3gp(?3hn5%4(8d{nN(XlN*FNHo&rDv+iNW zyDX8IhAlSPm{Qr2HapEySYO)|K4ys(SGO=AV{kof_8+V8KY0R_nh;*^xAJ(DFeQmKz9QuWA(O^ZqeeYAx!{!%}{ZO$-kI}am;$EbQcbuKc zKN?|XicxYlCV%t@-E^Gn6ho{251bs&WP2KrVDzLIe){;)!)I(9SCBge#|||uCqGY5 ziy)S=uaYb1tYX{5^^)bo1ehcH)23JV>4)sgD0-Ao6zC;rWJ39tFd!%xKl(YffAHhK zZbLub2j{Fw$DB`UJ2K*=V`^}9(*IP1X8rMeW~wOQ5A;1-g4K?q{Qh_RK-SL2@nni}z`RHB8{PE(V>`w!b%e7yW z$EwPn2K=~FK1Cg-Vd4_qt1Za1j-VDBUBg#wOM}MZ<)!fbnH|q;l7LOm1g$IMk`TY> z0lc`_QXP=DU1i&s(u|+jm#i!x1(}&&qWa(N2fs_G%YX4}un+qmU~|0BDKisWhK(Kw zqYRkO@>zO9vrsRX)P_+)B7NokAZOXyJB{)~0em-VQxmxhDxNHvdRKKkPQ^CGhqsvw zR&zv~?e_Y=Y93B84O8!{NU37k(LpSAe7HQbL z+V8g(_vCX2R|hKDy{L$r2jBtTcv~${WmQ&$Ml?Q0T?Xm*JCn;!%xfzOQD%q{F+4BL zmB7mGm2;_4)2Ghh=9Xia?Qq?zi@{8GBO#99N1?p-f>k;Vna;0tsDWuKJUFdrd6PC| zt?4Rc>Ggf}HDoG}v|IDOob-PrXQit;N)@t>fH`QT9uFsNuG+B5wGi^=goIp#n9}xlN1eeH;7$AQjS#pZuEfA} zkln=v-tnX)X`I5T3@wPeGZJ#kvG_$!2@P&-_hPK|aX?|y&Cbo1=A$JIl^?apnzX|W z#WQ?dE-w$#klYf=U1jczLGjkAxTPPky=l6AJTPrt~|LicpijX_pfj zrTBW@v5;oR$PfpWt(R72q+4Gn;^uo-LQ7|u{-R! z1z00QD0nbX(Q^6m@CoTDj?dFq?XT@E;l7IE+ir^oi|FEQ?{R4}sx0#waQhdoGdo*3V+SOjz)*7_d z`6}#BV$fxi%@*KCN8#9I9lE7N;{SQ{Ye0wL@mdOzL-Mv?G(ddlJ?qv;X~XJU01q-L zjUuJ)k&*eK!^$vs#YzuS>gi5IZ#~EJbs1I!<5=f@4eDG9BpF^jrWj^Ke@;`}so zBpJxJPu>2oglZ&CulJ;zw_{COe#hXvip%lm_D%_BSRU|7XH*~YWfkW%K=J^j2Tw`r zzT8_z*e%&k*aI?Bw7sW$=QlUd(CluTn7H~@`W7fxhq|9XG@3d!gUvTc>KC-WU2FR= z*aD&h&RwcvR#PHYn_tXqPa|^Og-uRn7N&S)p{?R>OCKbc_U~BHP-<0ALS>aP;F8-Q zWaqKYjWk}JCQ%czVRm`cSD6R;#+LODJkf1_^I*k>lETyND=wMZx}2BZy7UjhF+7dQ zOBEV+U^zly_ua=#TT#Wk+4DHwuE>d~uLB_NM~Q>sWobkB_69Wb$#})y)Ii~wYl!!j zBdxUJ)Ns3;T5sjHmO*}VvpV16R41_9&KWQ61+52vVAVARl{de)!}a7)(`{JmYu9Q> z6^+Bz)G{v`t~dz zah9XtyZ(XxLX&W}sXyyf$_0-s^D~NwF<(AO=VfA>rjMT+wPWKulBfmu*H@=SlV-== zHU9=7gg=PrrC#cHtS;GCnrFj@?-pHBf1g+EmmgSyx;x2=avasm!v<-Kgh)=(p{msKYru}9zFO%I$Zx4 z%P2QD7jdd7q7)u^y4ycdTyKu|6AS)WLNfVe?4c6G;H_%@27Af(RJlB1Zjho>2VBz~ z;!X#JilGNSo{3Y+>0@Q0MGoCz*7qGePNt;U<{Ly2(xc$Rrm{Io<);dUlBhz(o@Wtr zb1MEH+}hi0@;6DJT{rOx%|ov4PsIQTT^#sdllt0BfU=0*PRuVIv+1XcRIrN~-#U5f z5MuG7LnE#s$aIE#Su+>_yRIczU`vjki8F*-HWqS1ooR1o zWpzL4aqmtr+vgf%PZT3MlYfRyO3pq@tWxiB+>-R~<3E)?;e)?vYu~ZGtPoA(RoV`R zC?l>;$ZOx()p4jJk&JFZgmk|3fswLjlux1IZTHpZ7pesoi35hJ+!N_eVT z)C`o&j70cE1!B@HF+c+yB_L()^)Es$d40B5Kq3aUMfqL%e`~fp?`m_*rl+_5<0yt*`EO36Dkc3=cOa_UhEsBv3gN!WtSS z!e#Q+U&q#AxEH_1Clz_dIwQJ{+gHs6o+|#T1`RY;cEv8cCtm*`{9?;r4J4spRz9VX zxDkwCVBE2>%-e}@yU>bzRhd$GleLhRRV>WhF9nEsC7VfnG#{GIJUOrJ$zMj3$vXS?i`!5FE4w_Ft_Wu zX3Bi&(?T8a1LL8HDE4!jqmS2yM|5&H5fZPhdsl`$%q-yuPUd;ffP);#{P@+pU1rw# zo`?Z8TIm~@vT933*j(8n_XP51o5CoIw#=}EAAW#-=IyaZ83A`d(Z2>o}S=NfXwqmBM{hYPeSJUswy)Nd}~nuWJ#v7ZQL4y(z{hm_YJeT8nO6k=^6V6*k44;$<_cRiX+Eb8~QkMYRjRO~K2 zQJz=gGshsJc7NEF{fff^1Y4_;zIxBz(7o?fty@e@b|wGpN@6+0mMt#}!X}xN zZ)wrSFcydg((yuwP0B_nv99(drqBtOpXMB@kjjXVKP;P9g8CX}AB$Bu*<5M0b0a*Q zwz?;+DKQKXi<4N^qX1k)YP2&-d3g((4n{-8*;ig-QmRw>vCm#D6&RkZxCaNks-2oq z!JKVxbiyhMG@X!Y3ko7mFod4m$M(meV>a+g8R?HH|> zc@}m-$lmvB=FF_NyXi$^;LeUJ5&g|`kA0;d2Kz?us)IU`7z>kcJdEbOXkTYS2fNo6 zt4hquN^*)0-Q22y0H%_;(NYS7_0nVp1{AN`vi0Z)-mlN^Vxe6AH;-#RFXuMpI3Gc> z#X?YV6dhd9SQv~#x3Hyu^49>qB~wq)@4~qS_<`RwHKi;ldRbH8h>m@+m5k}d*n@+i zT20lTHH)@kZ&~x3H#Nmi$LlzX{#^xBP4a(u0w-oFbG4YTmTMVpw`UpPpX@Yoa*9s3 z8&;Yh^c18JIcIKAwY%_Gn@>i|F{94gc%BMM+p5}xLffUd(6fiRd0J`?N>WKK$;1;X zDulE#BT+Qu;RHh!*?c3%j>~wlJqd9ogg_`8G=lp5gYA!26W&kcW*Y%ZYvMbej$I$!+qKQ8d->o;@>A58*OUt zB(+vN3)Qg8&vqH!opp}6qjJGx7q2%|g?K!_3dFb&lmQT8ej-M^R*;&XSZ*9#+@3 z@++kLaue}P*nZBZX&ln`Ge!(HWec~Xs-~k7(QOgeGWY-o7kfrIfZCbB0fd5usvtMZ z|8@;e`GUACj1V^nbqK^B*%=FAMZK6^ez$)3JT6?{W%4J^gD?9~dB}uh@>0*I&Q+Yv zXs!+i{ySz`kWyw*-0mq(c!(TNKYpoRTN?0JbycE6aR|&8TM3UQLxhNdGK3KKLC8;U zIgF%!po}g>$Qu^u?p~${*tZwO!3$HypU@^t^4;#%aZU|xTKkI97mL=W3OT`z+ERg^ zcVmCd+{8yQ{z|%_Z;+h#wvtQOswC}rRIG!dtO0w~$Qs=e%J~tZ_yld8ldKq%iCf7`A+EH=DmG>AlhCrA~Xj66g1uoUyiK%^($$`vJ1cUyc3%Vy@x@0 z$lmx$wN}8Ts?I(j??Gd}DOds>8uG;NY{MN&t>E;i&(QgC$b~*YV{uVtS+Gv+IQO$! z^8ml+jaFYMrz~tncsdlHj&Y{m)xW_=QIsAj2pmA%@lM{Su$+B6R*a<*-V*IUdae&AW3H zsg=a|_D{l;)xrwnm}2%jg@GQQd*v0e4+ADH;xp-TY`}!rWhmzH$5LHxcei0YLG&p2 z=>Ed*=Jx-VhiPm}cE z#m$e?wzg}md$aZ@6;h?CM958>@1;h#B8ET;j<%IjvzP8s7D`Ee#@9z|Q(k#Qo z5n844)^}ZO`_z1T_PTqRV%ANs|JHyf>9K{w-`h83bG8pAq*XaNHKzMkJOF$;njKgk zLdjYqFWg~vDSj9@i`{co;!7Ni1UL@s%Wndu9>{EM;aD*A$O4MuIa8KLuy*Co`H7I5 zx`zj3sC-xC%YQbH3AXVX#Op2uTL#HuB-TpfrQ|QqD_~pbr{+h74^gUPq1w`384Ghf=YIHM}e zI#0a|;4MQy9vU4d9iiH|d++d0_F)*2<5MZ7#x_r7ootM^0-;dnR>TPXdR(BIT@l;o z5T(rY;@opt&JtJdOmD;OBEtsHi`I^GWTJHDm#YlFK3r8#eeRhzyV^zvHh*SGe^rE4 z+E&)UbGDs4;#^0Cj-#r2PG(n9oN2SD6DpSz9I{NE!;Cie0}t33saDYzJe{Wc)|;Zi z*Sc%SP43P9r=zu{;TH@ydId|>2~zR}za7F3v(S=nAV%|e#FIZWt8qup>OayD)GhT7 z#kW@djjRGxVwoNiK_B5?`o-|m4ci|c<*s*^Mw$iN%IuLH7MLLLm!IYdp7F+mJm2suTZnoW(Uds(@oK zs;9WR>B4k>W8p2T$Nv%p(@>fIcPNSLKj-0*=Ksq3>qKP|T*XLGG_nyy?9pLjUE5*P z`%~G}V;xuQFCQGXKLDY`ty!cz<-(*;A^atw zFYCK^f9Z+D@up9TpAA;cpFAyTFn=iTMX?#ZsGEPr&>3WSKh}WNzq$BO0~*C@qQ}?| zgT7#Xd2&IyJBXj46d5BlF7FC_rEiVxJ%G9%cb4}8H22Qc)I8Bi=&iavQ9%DHX7Jh+ zigV`Tno2f8$>3+2c#;ueBhf*-=`AA5eu1Tyg<`E`^AMT4n-DjRo>3I!y1SSgxqtfJ zc*?aZiz1~*$!@+-O9Gw@IK5ounhFjIP~A0t@-mt$dRJ3TtMETCY~`Eso}0De$OE(C zMGS>-g)w!c>RfB%w>}7+sZyBZnW#5ZiNR`Cuj@!FIABKj&WSVKpe+u3{V_K;DF4pk z^VKv?aFC&iX?bvbt{pgp#Emit8(*+0!}4?Pf$DS|RqkzT*Q6FocCaXezT&s6Cm4A( z+vdn8EM@Up^o@IURa@ax@S=@Ajm6U)`=Xr9@B=Z?$_kNu63hn^MwVQE!s#4`aRVFw^Z!otmT`@xYX5z~HOd~>+QG)IXU z-!*LSodYx|Wq-{Iw_kY>Od!2zr1!-@5(23O*}vd*l4 zn?^kPi@9|FAG_gZlYR#gNeE7anU`jV$S1^!Ghp8S%d(USeQpP;?07xN zB8vz(!c!#DM$%Ik-dvdpjnMI!VwekFm)rZD0S0F51b)GTmoa`o%q|&_-Gn7Ur>Lt+X~dP$5a}su1bBzE5lmGimB;1 zm8A5UCi9Hw9Z0?R^qB>Df8OomI7zqfm&wYv>`~dd`(B-K!#+OS0*^>%PM;P0H4@*F zKU^{UIhAM?_xLSmif16f5am!>N{UP>c2R(!c=vXlt;rJk`y^cFK&O%98v6Ff7HPu6 zDE0iq23=VE@H6e^6N4apQpcP4GO*a3WcAgynDA29Fz<|({wsoadVfpFP9MfeS2ise zXUVdt3_sr08E%;XzR-o4jWj00i2*bXZs#8;sy^~YN{UB?O-%bwr~W>nlNR@sh}niB zyET&GPh4~^>dfp*tvlR>_mW7{@0bbKawAE{XS91yln+dec0H4eA=}xLN&s6tgAKFdsM`e<#UH^7s}3i5m65Ty_i^^j`okZEhndBMr%HD}u-im2pH`N% z2EFWiFdfILjR#D@ALr*AioVJVAwY*dflw!J_;6p9{3T~J@^IV>ka=lU?+~zugoG{- zCRax|Cl2%iGZi~m{?o)i+Xet^~Fkh79^~*Kn39YU=|E_}a|KthYLAhd*P4}lHIxCBC;@Irq`KW^YIc9gD~2cV&TXbpE`Z;#dR3l$(}Eo{Qt)t3 zMPVuCz%B~&G)3bJ3Mj^1mcH)R=td~gD=OwpTA%a9`*jeb-g0Q9Wd3-i=$NoLi9CfQ zyT;0H)%(ywH@Wmeful5I^-OJ(0;~olQueS@fD(P2*Jerc(~G&n0syW64f025h=Ba? zZJM@|5}@3ux~LizwSOcdCIHZ0<202Z*_J-lTR00_+k>A+en?NfvRWEpJk7g&?}R|N zMD=n->5&uw0{~FLK}WrcG2j(pJL=N^|H}Wj*#Bn3tb!h{gp93*DNUA*S;mlwi>3Bk z^HZYs&C$Cmtm9xeiE6e@CwOOBt(i_+4(At>7-wpmYJc^)fz5?EgZ?Tyd&AkG?Hz|B z-vYLh>`PJN8B;OTmzUB}4-c~CsNdck*@G(j#3?sN2}ZO=S7;Gf90e`+tBeK}*ZZo9 zG-C54JT88W+zFjU4mAS%&+)VbP8xKz;U7efc89>xq5UMm|L1$ftt z;cOVE`ox+yYy-krscmxLqU=<4!yrxriOKWlk8>xlpkW zVvNa#jCBOsc;?fk>0MWOtIG^*I!#|jLfiv%AJn?!l$3x5=jPSy_6Al=!E+vkcfL^F zX$bpN$fS(>_SXE-s3mxbpWSM2XZU9+hBCfHLg__qbxmE~2adcfZ`vB*dB~X9OdUPd zK^j!zcY5gs)cHfLpL-8uP*qOV-H@=>XhW}OeVeFl9)kLSDn*T|jIqG1w^DBc6iYda z_!c{O0Hr7$hWn!?*}mDZ7HkwpvILd~oAQ+@Pfs9!Wft!u953+OqOT5b&mKtBSz^lTjsQQ0*lz93oyR(EgI@Mp8BjE4@=&bs1AO!og4vDa~QaYXM zu1E@g?k7;>bz#=k@fyCBfp9T@iA>9OGX-+C9@p$skPn9d!yhAsrt}FI-s8ZNBUT`*MeKjl%Er$YXk@Z4lR`d??k0x%5zd z6dB`!RXA#E->aEbQ7+l;XnE zl)*scq@f}RCDJ^YKHOZ8J=rK`c-xttx>!*W`;8_gVrV@4ag|ZWH+TwP_F0PD-fq)4 zc;l)cNPxlT-I6Z@#O_wQ$bOtCLVJZ4e!760m@QP0yOTl8PhE zdogan^n#n%qemmKvRj$lDi4dGo?R>5dM+Ae9;At2u35+DK10+@4O5FK+K&_%?dI8s zEd*?)5Go83YzD zZVG_2GmFtFgH)c5OEkHaM%V7Wx#k@6kj6fD-ndHh(J`Mp-u~BvbCn+N?MKK!Nm}x1 zBBIMdK|`qDal78i8&_arza=B5D=`*p%A&4LGhAz{Y&Ku3uj8a{0*;wzg4B0wpbn7w zPk!g}1YGdb42_uV^UG5`nzSVWo>N_?ZD>&uY@AO*4zZot?|C{o9~F@f8ysi1EdY8t zm&PzHCf${_Mk)GNFw7TC73(`%`&|t=P#Z2e&2Gm`@|G9S71a`KhLHB~EFCN8#=BY6 zzV+RHIZv(xve;91=NR?9<^#@MrQ%t0q-YnS*P`EH2t!$c@~l z3X4g5vB;T#L6LWgL8G3^lMaR!BCTiRN$H~!qm$OoUL{XawsIEi1wckBqL0F}Azlo< zGQ7WL(k|kk%_f*`Zr#m((1{v9xHN}>H~L0yCPanqd^WF-VNfzfks0@FW{aj1#@@UH z!R4ijPa@hg{`6USg-1C@V(HoZ)>_L+8y*aX=}UfHIk__qFIysQMy0_&-OCg$tih); z>LM1+6*Ei8h^>tf_3hI|%7qGM-|ZHHdc?H%b>KkIf((Qp(aQ(2G&K6st?w%OVQa_B9TX8`r?*;t8Z(;bVc)>M<@ zpPC!kr@Hz?5@FNi&@8&7&|5+^F<8r*!rSbxZ_W`*je0TGsf$)5&}yW|)|$7{?KM6S zzA!fhU#d-;=(Ro=DrJ8MI|$Y?yB?iLb!~FXKFBHCKpac~<;>32J+CWjZ(U`)y@Hi! z+Q9n3kdeib9N@WF9fH6KIWh)(SGjk*wBS3z3boXU{v_hOvlC;Lwn=jzXI48k+?Ixm z>H)TQ#&4cVZYNxzB-QU2FUjhWm8TzpI8(X zNxd6kVN~iVpJWSMpq^6K*M*bzoYV(D4~Z#&Vq$uox}X){ zNk+y~w=S8=75N9KyE7$TvfYQKE4s<-0cE?^QK(J2awmTun*N{sedt7D+^rt Q+>ayoMoGH#mC@(_1{W)pg8%>k literal 0 HcmV?d00001 diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..729c96bc09a961273f7c2954e1d237491af384dd GIT binary patch literal 33465 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 +

Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
+ +
+
Lorem Ipsum
+
Dolor sit amet.
+
diff --git a/packages/object-horizontal-spacing/test/test.scss b/packages/object-horizontal-spacing/test/test.scss new file mode 100644 index 0000000..9a33649 --- /dev/null +++ b/packages/object-horizontal-spacing/test/test.scss @@ -0,0 +1,5 @@ +@import '../scss/index'; + +.o-horizontal-spacing { + background: #efefef; +} From 4f6b9b07809b18689a3ef4e0c07e521c1822fb9a Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 14:04:55 +0100 Subject: [PATCH 347/355] Update the spacing utility package to v4.x.x standards. --- packages/utility-spacing/.gitignore | 3 - packages/utility-spacing/.npmignore | 3 + packages/utility-spacing/LICENSE | 340 ------------------ packages/utility-spacing/README.md | 50 ++- packages/utility-spacing/package.json | 27 +- packages/utility-spacing/scss/_index.scss | 120 ------- packages/utility-spacing/scss/_mixin.scss | 26 -- packages/utility-spacing/scss/_mixins.scss | 24 ++ .../utility-spacing/scss/_style_guide.scss | 8 - packages/utility-spacing/scss/_variable.scss | 33 -- packages/utility-spacing/scss/index.scss | 114 ++++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 38876 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 41535 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 43368 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 45435 bytes packages/utility-spacing/test/test.hbs | 31 ++ packages/utility-spacing/test/test.scss | 6 + 17 files changed, 232 insertions(+), 553 deletions(-) delete mode 100644 packages/utility-spacing/.gitignore create mode 100644 packages/utility-spacing/.npmignore delete mode 100644 packages/utility-spacing/LICENSE delete mode 100644 packages/utility-spacing/scss/_index.scss delete mode 100644 packages/utility-spacing/scss/_mixin.scss create mode 100644 packages/utility-spacing/scss/_mixins.scss delete mode 100644 packages/utility-spacing/scss/_style_guide.scss delete mode 100644 packages/utility-spacing/scss/_variable.scss create mode 100644 packages/utility-spacing/scss/index.scss create mode 100644 packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-spacing/test/test.hbs create mode 100644 packages/utility-spacing/test/test.scss diff --git a/packages/utility-spacing/.gitignore b/packages/utility-spacing/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/utility-spacing/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/utility-spacing/.npmignore b/packages/utility-spacing/.npmignore new file mode 100644 index 0000000..3d77ab5 --- /dev/null +++ b/packages/utility-spacing/.npmignore @@ -0,0 +1,3 @@ +backstop_data +node_modules +test diff --git a/packages/utility-spacing/LICENSE b/packages/utility-spacing/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-spacing/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-spacing/README.md b/packages/utility-spacing/README.md index d454f33..319c46c 100644 --- a/packages/utility-spacing/README.md +++ b/packages/utility-spacing/README.md @@ -1,24 +1,54 @@ -# avalanchesass_utility_spacing +# @avalanche/utility-spacing Spacing utility classes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: spacing) + ## Install -``` -npm install avalanchesass_utility_spacing --save +```bash +npm install @avalanche/utility-spacing --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_spacing'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-spacing'; + +// Import just the mixin file. +@import '~@avalanche/utility-spacing/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-spacing-top-m, .u-spacing-top-l } from ~@avalanche/utility-spacing'; + +// Not a fan of the "u-" prefix? +@import '{ .u-spacing-top-m as .spacing-top-m } from ~@avalanche/utility-spacing'; +``` + +## Demo +```html +
Top m
+
Top xl
+
Right m
+
Bottom m
+
Left m
+``` + +## Mixins +```scss +@import '~@avalanche/utility-spacing/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_utility_spacing/mixin'; +// Usage. +.spacing-top { + @include u-spacing(1em, top); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json index d6aa815..a3f3388 100644 --- a/packages/utility-spacing/package.json +++ b/packages/utility-spacing/package.json @@ -1,25 +1,26 @@ { - "name": "avalanchesass_utility_spacing", + "name": "@avalanche/utility-spacing", "description": "Spacing utility classes", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.3", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_spacing", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_spacing" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-spacing" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_spacing/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-spacings": "^4.0.0-alpha.2" + }, + "main": "scss/index.scss" } + + diff --git a/packages/utility-spacing/scss/_index.scss b/packages/utility-spacing/scss/_index.scss deleted file mode 100644 index dc4af9f..0000000 --- a/packages/utility-spacing/scss/_index.scss +++ /dev/null @@ -1,120 +0,0 @@ -@import 'avalanchesass_utility_spacing/style_guide'; -@import 'avalanchesass_utility_spacing/variable'; -@import 'avalanchesass_utility_spacing/mixin'; - -/* extract utility.css */ -/* extract utility_spacing.css */ -/*--- -title: Example -name: utility_spacing_example -section: utility_spacing -order: 1 ---- -*/ -@if length($u-spacing-top-sizes) >= 1 or length($u-spacing-top-sizes-with-breakpoints) >= 1 { - /*--- - title: Spacing top - name: utility_spacing_example_top - section: utility_spacing_example - --- - */ -} -@if length($u-spacing-top-sizes) >= 1 { - @each $-size in $u-spacing-top-sizes { - /*--- - title: Spacing top: #{$-size} - name: utility_spacing_example_top_#{$-size} - section: utility_spacing_example_top - --- -```example:html -
- Spacing top: #{$-size} -
-``` - */ - .#{$u-spacing-namespace}-top-#{$-size} { - @include u-spacing-top($-size); - } - } -} -@each $-size-and-breakpoints in $u-spacing-top-sizes-with-breakpoints { - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); - - @each $-breakpoint in $-breakpoints { - /*--- - title: Spacing top: #{$-size}@#{$-breakpoint} - name: utility_spacing_example_top_#{$-size}_at_#{$-breakpoint} - section: utility_spacing_example_top - --- - -```example:html -
- Spacing top: #{$-size}@#{$-breakpoint} -
-``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$u-spacing-namespace}-top-#{$-size}\@#{$-breakpoint} { - @include u-spacing-top($-size); - } - } - } -} - -@if length($u-spacing-wrap-sizes) >= 1 or length($u-spacing-wrap-sizes-with-breakpoints) >= 1 { - /*--- - title: Spacing wrap - name: utility_spacing_example_wrap - section: utility_spacing_example - --- - */ -} -@if length($u-spacing-wrap-sizes) >= 1 { - @each $-size in $u-spacing-wrap-sizes { - /*--- - title: Spacing wrap: #{$-size} - name: utility_spacing_example_top_#{$-size} - section: utility_spacing_example_top - --- -```example:html -
-
Spacing item 1
-
Spacing item 2
-
Spacing item 3
-
-``` - */ - .#{$u-spacing-namespace}-wrap-#{$-size} { - @include u-spacing-wrap($-size); - } - } -} -@each $-size-and-breakpoints in $u-spacing-wrap-sizes-with-breakpoints { - $-size: nth($-size-and-breakpoints, 1); - $-breakpoints: nth($-size-and-breakpoints, 2); - - @each $-breakpoint in $-breakpoints { - /*--- - title: Spacing wrap: #{$-size}@#{$-breakpoint} - name: utility_spacing_example_wrap_#{$-size}_at_#{$-breakpoint} - section: utility_spacing_example_wrap - --- - -```example:html -
-
Spacing item 1
-
Spacing item 2
-
Spacing item 3
-
-``` - */ - @media (min-width: map-get($breakpoints, $-breakpoint)) { - .#{$u-spacing-namespace}-wrap-#{$-size}\@#{$-breakpoint} { - @include u-spacing-wrap($-size); - } - } - } -} -/* end extract utility_spacing.css */ -/* end extract utility.css */ diff --git a/packages/utility-spacing/scss/_mixin.scss b/packages/utility-spacing/scss/_mixin.scss deleted file mode 100644 index 94386bba..0000000 --- a/packages/utility-spacing/scss/_mixin.scss +++ /dev/null @@ -1,26 +0,0 @@ -@import 'avalanchesass_utility_spacing/style_guide'; - -/*--- -title: Mixin -name: utility_spacing_mixin -section: utility_spacing -order: 2 ---- - -```css -// Spacing top. -u-spacing-top([$-spacing: m]) - -// Spacing wrap. -u-spacing-wrap([$-spacing: m]) -``` -*/ -@mixin u-spacing-top($-spacing: m) { - margin-top: map-get($spacing, $-spacing) !important; -} - -@mixin u-spacing-wrap($-spacing: m) { - > :not(:first-child) { - margin-top: map-get($spacing, $-spacing) !important; - } -} diff --git a/packages/utility-spacing/scss/_mixins.scss b/packages/utility-spacing/scss/_mixins.scss new file mode 100644 index 0000000..e3b983e --- /dev/null +++ b/packages/utility-spacing/scss/_mixins.scss @@ -0,0 +1,24 @@ +//// +/// @group Utility: spacing +/// @author Markus Oberlehner +//// + +/// Spacing helper. +/// +/// @param {Number [unit]} $spacing [1em] +/// Spacing. +/// @param {String} $direction [top] +/// Spacing direction. +/// +/// @example scss - Usage +/// .selector { +/// @include u-spacing(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// margin-top: 1em; +/// } +@mixin u-spacing($spacing: 1em, $direction: top) { + margin-#{$direction}: $spacing !important; +} diff --git a/packages/utility-spacing/scss/_style_guide.scss b/packages/utility-spacing/scss/_style_guide.scss deleted file mode 100644 index 892b20f..0000000 --- a/packages/utility-spacing/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Spacing -name: utility_spacing -section: Utility ---- - -Spacing utility classes. -*/ diff --git a/packages/utility-spacing/scss/_variable.scss b/packages/utility-spacing/scss/_variable.scss deleted file mode 100644 index a567793..0000000 --- a/packages/utility-spacing/scss/_variable.scss +++ /dev/null @@ -1,33 +0,0 @@ -@import 'avalanchesass_utility_spacing/style_guide'; - -$u-spacing-namespace: '#{map-get($namespace, utility)}spacing' !default; - -$u-spacing-top-sizes: (m) !default; -// Spacing top sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which spacing top classes should be generated. -$u-spacing-top-sizes-with-breakpoints: ( - m: (), -) !default; -$u-spacing-wrap-sizes: () !default; -// Wrap spacing sizes at defined breakpoints. -// The key of the associative map defines the spacing size, the value is a map -// with breakpoint sizes for which spacing wrap classes should be generated. -$u-spacing-wrap-sizes-with-breakpoints: ( - m: (), -) !default; -/*--- -title: Variable -name: utility_spacing_variable -section: utility_spacing -order: 3 ---- - -```css -$u-spacing-namespace: '#{$u-spacing-namespace}'; -$u-spacing-top-sizes: (#{$u-spacing-top-sizes}); -$u-spacing-top-sizes-with-breakpoints: (nested-map); -$u-spacing-wrap-sizes: (#{$u-spacing-wrap-sizes}); -$u-spacing-wrap-sizes-with-breakpoints: (nested-map); -``` -*/ diff --git a/packages/utility-spacing/scss/index.scss b/packages/utility-spacing/scss/index.scss new file mode 100644 index 0000000..e96b415 --- /dev/null +++ b/packages/utility-spacing/scss/index.scss @@ -0,0 +1,114 @@ +@import '~@avalanche/setting-spacings'; +@import 'mixins'; + +.u-spacing-top-xs { + @include u-spacing(setting-spacing(xs)); +} + +.u-spacing-top-s { + @include u-spacing(setting-spacing(s)); +} + +.u-spacing-top-m { + @include u-spacing(setting-spacing(m)); +} + +.u-spacing-top-l { + @include u-spacing(setting-spacing(l)); +} + +.u-spacing-top-xl { + @include u-spacing(setting-spacing(xl)); +} + +.u-spacing-top-xxl { + @include u-spacing(setting-spacing(xxl)); +} + +.u-spacing-top-xxxl { + @include u-spacing(setting-spacing(xxxl)); +} + +.u-spacing-right-xs { + @include u-spacing(setting-spacing(xs), right); +} + +.u-spacing-right-s { + @include u-spacing(setting-spacing(s), right); +} + +.u-spacing-right-m { + @include u-spacing(setting-spacing(m), right); +} + +.u-spacing-right-l { + @include u-spacing(setting-spacing(l), right); +} + +.u-spacing-right-xl { + @include u-spacing(setting-spacing(xl), right); +} + +.u-spacing-right-xxl { + @include u-spacing(setting-spacing(xxl), right); +} + +.u-spacing-right-xxxl { + @include u-spacing(setting-spacing(xxxl), right); +} + +.u-spacing-bottom-xs { + @include u-spacing(setting-spacing(xs), bottom); +} + +.u-spacing-bottom-s { + @include u-spacing(setting-spacing(s), bottom); +} + +.u-spacing-bottom-m { + @include u-spacing(setting-spacing(m), bottom); +} + +.u-spacing-bottom-l { + @include u-spacing(setting-spacing(l), bottom); +} + +.u-spacing-bottom-xl { + @include u-spacing(setting-spacing(xl), bottom); +} + +.u-spacing-bottom-xxl { + @include u-spacing(setting-spacing(xxl), bottom); +} + +.u-spacing-bottom-xxxl { + @include u-spacing(setting-spacing(xxxl), bottom); +} + +.u-spacing-left-xs { + @include u-spacing(setting-spacing(xs), left); +} + +.u-spacing-left-s { + @include u-spacing(setting-spacing(s), left); +} + +.u-spacing-left-m { + @include u-spacing(setting-spacing(m), left); +} + +.u-spacing-left-l { + @include u-spacing(setting-spacing(l), left); +} + +.u-spacing-left-xl { + @include u-spacing(setting-spacing(xl), left); +} + +.u-spacing-left-xxl { + @include u-spacing(setting-spacing(xxl), left); +} + +.u-spacing-left-xxxl { + @include u-spacing(setting-spacing(xxxl), left); +} diff --git a/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..30e799075939a97d1db353e2045982266ccfc8ff GIT binary patch literal 38876 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 GRosVN;7pP0 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
a;lI~gv(%`H5DkHro+YA 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 WWa@65Spo?7krb5^$$$L(<^KV=y`A0w literal 0 HcmV?d00001 diff --git a/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..d1987c99c2a87df66e1f575e812896696d65f481 GIT binary patch literal 41535 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 nBlP-wCg1`7BCMl2I!pC+0q}c|NOrInE?iT literal 0 HcmV?d00001 diff --git a/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..06265934b40fcde8cb047007140a35362e3d2182 GIT binary patch literal 43368 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 P--MpG|Bn2v&yW8Lc2Znl literal 0 HcmV?d00001 diff --git a/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/utility-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..8635bd61c45ce3504ccb1c07349527b6bd1922b8 GIT binary patch literal 45435 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 xs
+
Top s
+
Top m
+
Top l
+
Top xl
+
Top xxl
+
Top xxxl
+ +
Right xs
+
Right s
+
Right m
+
Right l
+
Right xl
+
Right xxl
+
Right xxxl
+ +
Bottom xs
+
Bottom s
+
Bottom m
+
Bottom l
+
Bottom xl
+
Bottom xxl
+
Bottom xxxl
+ +
Left xs
+
Left s
+
Left m
+
Left l
+
Left xl
+
Left xxl
+
Left xxxl
diff --git a/packages/utility-spacing/test/test.scss b/packages/utility-spacing/test/test.scss new file mode 100644 index 0000000..b7d54df --- /dev/null +++ b/packages/utility-spacing/test/test.scss @@ -0,0 +1,6 @@ +@import '../scss/index'; + +div { + padding: 1em; + background: #efefef; +} From c5c89f7e507e02b539ade6d0907a6ed8d3c991d4 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 14:30:21 +0100 Subject: [PATCH 348/355] Update the text-align utility package to v4.x.x standards. --- packages/utility-text-align/.gitignore | 3 - packages/utility-text-align/.npmignore | 2 + packages/utility-text-align/LICENSE | 340 ------------------ packages/utility-text-align/README.md | 48 ++- packages/utility-text-align/package.json | 25 +- packages/utility-text-align/scss/_index.scss | 62 ---- packages/utility-text-align/scss/_mixin.scss | 17 - packages/utility-text-align/scss/_mixins.scss | 22 ++ .../utility-text-align/scss/_style_guide.scss | 8 - .../utility-text-align/scss/_variable.scss | 14 - packages/utility-text-align/scss/index.scss | 70 ++++ .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 17168 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 18206 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 18951 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 19675 bytes packages/utility-text-align/test/test.hbs | 19 + packages/utility-text-align/test/test.scss | 6 + 17 files changed, 169 insertions(+), 467 deletions(-) delete mode 100644 packages/utility-text-align/.gitignore create mode 100644 packages/utility-text-align/.npmignore delete mode 100644 packages/utility-text-align/LICENSE delete mode 100644 packages/utility-text-align/scss/_index.scss delete mode 100644 packages/utility-text-align/scss/_mixin.scss create mode 100644 packages/utility-text-align/scss/_mixins.scss delete mode 100644 packages/utility-text-align/scss/_style_guide.scss delete mode 100644 packages/utility-text-align/scss/_variable.scss create mode 100644 packages/utility-text-align/scss/index.scss create mode 100644 packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-text-align/test/test.hbs create mode 100644 packages/utility-text-align/test/test.scss diff --git a/packages/utility-text-align/.gitignore b/packages/utility-text-align/.gitignore deleted file mode 100644 index 42ffb40..0000000 --- a/packages/utility-text-align/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store - -node_modules diff --git a/packages/utility-text-align/.npmignore b/packages/utility-text-align/.npmignore new file mode 100644 index 0000000..9c17000 --- /dev/null +++ b/packages/utility-text-align/.npmignore @@ -0,0 +1,2 @@ +backstop_data +test diff --git a/packages/utility-text-align/LICENSE b/packages/utility-text-align/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-text-align/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-text-align/README.md b/packages/utility-text-align/README.md index 26d9611..2991695 100644 --- a/packages/utility-text-align/README.md +++ b/packages/utility-text-align/README.md @@ -1,24 +1,52 @@ -# avalanchesass_utility_text_align +# @avalanche/utility-text-align Text align utility classes. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: text-align) + ## Install -``` -npm install avalanchesass_utility_text_align --save +```bash +npm install @avalanche/utility-text-align --save-dev ``` ## Basic usage -```css -/* Import the main file. */ -@import 'avalanchesass_utility_text_align'; +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-text-align'; + +// Import just the mixin file. +@import '~@avalanche/utility-text-align/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-text-align-right, .u-text-align-center\@m } from ~@avalanche/utility-text-align'; + +// Not a fan of the "u-" prefix? +@import '{ .u-text-align-right as .text-align-right } from ~@avalanche/utility-text-align'; +``` + +## Demo +```html +
Left
+
Center
+
Right
+``` + +## Mixins +```scss +@import '~@avalanche/utility-text-align/scss/mixins'; -/* Import just the mixin file. */ -@import 'avalanchesass_utility_text_align/mixin'; +// Usage. +.text-align-right { + @include u-text-align(right); +} ``` ## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-text-align/package.json b/packages/utility-text-align/package.json index 5fc346b..8b45edb 100644 --- a/packages/utility-text-align/package.json +++ b/packages/utility-text-align/package.json @@ -1,25 +1,24 @@ { - "name": "avalanchesass_utility_text_align", + "name": "@avalanche/utility-text-align", "description": "Text align utility classes", "keywords": [ - "avalanchesass-package", - "eyeglass-module", + "avalanche-package", + "avalanche", "sass" ], - "version": "3.0.0", + "version": "4.0.0-alpha.1", "author": "Markus Oberlehner", - "homepage": "https://github.com/avalanchesass/avalanche_utility_text_align", - "license": "GPL v2", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche_utility_text_align" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-text-align" }, "bugs": { - "url": "https://github.com/avalanchesass/avalanche_utility_text_align/issues" + "url": "https://github.com/avalanchesass/avalanche/issues" }, - "eyeglass": { - "sassDir": "scss", - "exports": false, - "needs": "^0.8.2" - } + "dependencies": { + "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + }, + "main": "scss/index.scss" } diff --git a/packages/utility-text-align/scss/_index.scss b/packages/utility-text-align/scss/_index.scss deleted file mode 100644 index aac4c95..0000000 --- a/packages/utility-text-align/scss/_index.scss +++ /dev/null @@ -1,62 +0,0 @@ -@import 'avalanchesass_utility_text_align/style_guide'; -@import 'avalanchesass_utility_text_align/variable'; -@import 'avalanchesass_utility_text_align/mixin'; - -/* extract utility.css */ -/* extract utility_text_align.css */ -/*--- -title: Example -name: utility_text_align_example -section: utility_text_align -order: 1 ---- -*/ -/*--- -title: Text align: right -name: utility_text_align_example_right -section: utility_text_align_example ---- - -```example:html -
- Lorem Ipsum -
-``` -*/ -.#{$u-text-align-namespace}-right { - @include u-text-align(right); -} - -/*--- -title: Text align: left -name: utility_text_align_example_left -section: utility_text_align_example ---- - -```example:html -
- Lorem Ipsum -
-``` -*/ -.#{$u-text-align-namespace}-left { - @include u-text-align(left); -} - -/*--- -title: Text align: center -name: utility_text_align_example_center -section: utility_text_align_example ---- - -```example:html -
- Lorem Ipsum -
-``` -*/ -.#{$u-text-align-namespace}-center { - @include u-text-align(center); -} -/* end extract utility_text_align.css */ -/* end extract utility.css */ diff --git a/packages/utility-text-align/scss/_mixin.scss b/packages/utility-text-align/scss/_mixin.scss deleted file mode 100644 index d27c207..0000000 --- a/packages/utility-text-align/scss/_mixin.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import 'avalanchesass_utility_text_align/style_guide'; - -/*--- -title: Mixin -name: utility_text_align_mixin -section: utility_text_align -order: 2 ---- - -```css -// Text align. -@mixin u-text-align([$-align: right]) -``` -*/ -@mixin u-text-align($-align: right) { - text-align: $-align !important; -} diff --git a/packages/utility-text-align/scss/_mixins.scss b/packages/utility-text-align/scss/_mixins.scss new file mode 100644 index 0000000..129d2ff --- /dev/null +++ b/packages/utility-text-align/scss/_mixins.scss @@ -0,0 +1,22 @@ +//// +/// @group Utility: text-align +/// @author Markus Oberlehner +//// + +/// Text align helper. +/// +/// @param {String} $alignment +/// Text alignment. +/// +/// @example scss - Usage +/// .selector { +/// @include u-text-align(right); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// text-align: right; +/// } +@mixin u-text-align($alignment) { + text-align: $alignment !important; +} diff --git a/packages/utility-text-align/scss/_style_guide.scss b/packages/utility-text-align/scss/_style_guide.scss deleted file mode 100644 index 99c33fc..0000000 --- a/packages/utility-text-align/scss/_style_guide.scss +++ /dev/null @@ -1,8 +0,0 @@ -/*--- -title: Text align -name: utility_text_align -section: Utility ---- - -Text align utility classes. -*/ diff --git a/packages/utility-text-align/scss/_variable.scss b/packages/utility-text-align/scss/_variable.scss deleted file mode 100644 index 8d64b5d..0000000 --- a/packages/utility-text-align/scss/_variable.scss +++ /dev/null @@ -1,14 +0,0 @@ -@import 'avalanchesass_utility_text_align/style_guide'; - -$u-text-align-namespace: '#{map-get($namespace, utility)}text-align' !default; -/*--- -title: Variable -name: utility_text_align_variable -section: utility_text_align -order: 3 ---- - -```css -$u-text-align-namespace: '#{$u-text-align-namespace}'; -``` -*/ diff --git a/packages/utility-text-align/scss/index.scss b/packages/utility-text-align/scss/index.scss new file mode 100644 index 0000000..c258e70 --- /dev/null +++ b/packages/utility-text-align/scss/index.scss @@ -0,0 +1,70 @@ +@import '~@avalanche/setting-breakpoints'; +@import 'mixins'; + +.u-text-align-left { + @include u-text-align(left); +} + +.u-text-align-center { + @include u-text-align(center); +} + +.u-text-align-right { + @include u-text-align(right); +} + +@media (min-width: setting-breakpoint(s)) { + .u-text-align-left\@s { + @include u-text-align(left); + } + + .u-text-align-center\@s { + @include u-text-align(center); + } + + .u-text-align-right\@s { + @include u-text-align(right); + } +} + +@media (min-width: setting-breakpoint(m)) { + .u-text-align-left\@m { + @include u-text-align(left); + } + + .u-text-align-center\@m { + @include u-text-align(center); + } + + .u-text-align-right\@m { + @include u-text-align(right); + } +} + +@media (min-width: setting-breakpoint(l)) { + .u-text-align-left\@l { + @include u-text-align(left); + } + + .u-text-align-center\@l { + @include u-text-align(center); + } + + .u-text-align-right\@l { + @include u-text-align(right); + } +} + +@media (min-width: setting-breakpoint(xl)) { + .u-text-align-left\@xl { + @include u-text-align(left); + } + + .u-text-align-center\@xl { + @include u-text-align(center); + } + + .u-text-align-right\@xl { + @include u-text-align(right); + } +} diff --git a/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7bcb4dac925232de50f6faf16c88e4a9ec2ec6 GIT binary patch literal 17168 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 literal 0 HcmV?d00001 diff --git a/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..0e31865b6cbb804b15805558f70b9d650cedacc7 GIT binary patch literal 18206 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 P1CkPx7cF?J|LOk$sf>g5 literal 0 HcmV?d00001 diff --git a/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-text-align/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc72b0c956b311163cd126e1f7f0454efb69722 GIT binary patch literal 18951 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 k;En5`7(muAcfJRlGRlob5Nbuf2Zw-{2B?M*si- literal 0 HcmV?d00001 diff --git a/packages/utility-text-align/test/test.hbs b/packages/utility-text-align/test/test.hbs new file mode 100644 index 0000000..fd72130 --- /dev/null +++ b/packages/utility-text-align/test/test.hbs @@ -0,0 +1,19 @@ +
Left
+
Center
+
Right
+ +
Left
+
Center
+
Right
+ +
Left
+
Center
+
Right
+ +
Left
+
Center
+
Right
+ +
Left
+
Center
+
Right
diff --git a/packages/utility-text-align/test/test.scss b/packages/utility-text-align/test/test.scss new file mode 100644 index 0000000..b7d54df --- /dev/null +++ b/packages/utility-text-align/test/test.scss @@ -0,0 +1,6 @@ +@import '../scss/index'; + +div { + padding: 1em; + background: #efefef; +} From a58806569400b58695d69f53b7c59ad8da05a84b Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 14:31:00 +0100 Subject: [PATCH 349/355] Remove redundant node_modules dir from package npmignore files. --- packages/generic-box-sizing-reset/.npmignore | 1 - packages/object-aspect-ratio/.npmignore | 1 - packages/object-container/.npmignore | 1 - packages/object-grid/.npmignore | 1 - packages/object-horizontal-spacing/.npmignore | 1 - packages/object-island/.npmignore | 1 - packages/object-media/.npmignore | 1 - packages/setting-breakpoints/.npmignore | 1 - packages/setting-font-families/.npmignore | 1 - packages/setting-spacings/.npmignore | 1 - packages/utility-font-family/.npmignore | 1 - packages/utility-offset/.npmignore | 1 - packages/utility-order/.npmignore | 1 - packages/utility-spacing/.npmignore | 1 - packages/utility-width/.npmignore | 1 - 15 files changed, 15 deletions(-) diff --git a/packages/generic-box-sizing-reset/.npmignore b/packages/generic-box-sizing-reset/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/generic-box-sizing-reset/.npmignore +++ b/packages/generic-box-sizing-reset/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-aspect-ratio/.npmignore b/packages/object-aspect-ratio/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-aspect-ratio/.npmignore +++ b/packages/object-aspect-ratio/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-container/.npmignore b/packages/object-container/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-container/.npmignore +++ b/packages/object-container/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-grid/.npmignore b/packages/object-grid/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-grid/.npmignore +++ b/packages/object-grid/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-horizontal-spacing/.npmignore b/packages/object-horizontal-spacing/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-horizontal-spacing/.npmignore +++ b/packages/object-horizontal-spacing/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-island/.npmignore b/packages/object-island/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-island/.npmignore +++ b/packages/object-island/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/object-media/.npmignore b/packages/object-media/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/object-media/.npmignore +++ b/packages/object-media/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/setting-breakpoints/.npmignore b/packages/setting-breakpoints/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/setting-breakpoints/.npmignore +++ b/packages/setting-breakpoints/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/setting-font-families/.npmignore b/packages/setting-font-families/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/setting-font-families/.npmignore +++ b/packages/setting-font-families/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/setting-spacings/.npmignore b/packages/setting-spacings/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/setting-spacings/.npmignore +++ b/packages/setting-spacings/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/utility-font-family/.npmignore b/packages/utility-font-family/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/utility-font-family/.npmignore +++ b/packages/utility-font-family/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/utility-offset/.npmignore b/packages/utility-offset/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/utility-offset/.npmignore +++ b/packages/utility-offset/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/utility-order/.npmignore b/packages/utility-order/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/utility-order/.npmignore +++ b/packages/utility-order/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/utility-spacing/.npmignore b/packages/utility-spacing/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/utility-spacing/.npmignore +++ b/packages/utility-spacing/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test diff --git a/packages/utility-width/.npmignore b/packages/utility-width/.npmignore index 3d77ab5..9c17000 100644 --- a/packages/utility-width/.npmignore +++ b/packages/utility-width/.npmignore @@ -1,3 +1,2 @@ backstop_data -node_modules test From e4319ba5bdf1cf1a4f472c596916e0576bad0d55 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 14:56:44 +0100 Subject: [PATCH 350/355] Fix the naming of the vertical spacing object package (was horizontal spacing). --- .../scss/_settings.scss | 8 ---- .../object-horizontal-spacing/scss/index.scss | 35 ------------------ .../.npmignore | 0 .../README.md | 26 ++++++------- .../package.json | 6 +-- .../scss/_mixins.scss | 8 ++-- .../scss/_settings.scss | 8 ++++ .../object-vertical-spacing/scss/index.scss | 35 ++++++++++++++++++ .../708650260_avalanche_0_document_0_s.png | Bin .../708650260_avalanche_0_document_1_m.png | Bin .../708650260_avalanche_0_document_2_l.png | Bin .../708650260_avalanche_0_document_3_xl.png | Bin .../test/test.hbs | 16 ++++---- .../test/test.scss | 2 +- 14 files changed, 72 insertions(+), 72 deletions(-) delete mode 100644 packages/object-horizontal-spacing/scss/_settings.scss delete mode 100644 packages/object-horizontal-spacing/scss/index.scss rename packages/{object-horizontal-spacing => object-vertical-spacing}/.npmignore (100%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/README.md (55%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/package.json (76%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/scss/_mixins.scss (62%) create mode 100644 packages/object-vertical-spacing/scss/_settings.scss create mode 100644 packages/object-vertical-spacing/scss/index.scss rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png (100%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png (100%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png (100%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png (100%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/test.hbs (52%) rename packages/{object-horizontal-spacing => object-vertical-spacing}/test/test.scss (68%) diff --git a/packages/object-horizontal-spacing/scss/_settings.scss b/packages/object-horizontal-spacing/scss/_settings.scss deleted file mode 100644 index 2cbaa98..0000000 --- a/packages/object-horizontal-spacing/scss/_settings.scss +++ /dev/null @@ -1,8 +0,0 @@ -//// -/// @group Object: horizontal-spacing -/// @author Markus Oberlehner -//// - -/// Default spacing size. -/// @type String -$o-horizontal-spacing-default-size: m !default; diff --git a/packages/object-horizontal-spacing/scss/index.scss b/packages/object-horizontal-spacing/scss/index.scss deleted file mode 100644 index 8140d9d..0000000 --- a/packages/object-horizontal-spacing/scss/index.scss +++ /dev/null @@ -1,35 +0,0 @@ -@import '~@avalanche/setting-spacings'; -@import 'settings'; -@import 'mixins'; - -.o-horizontal-spacing { - @include o-horizontal-spacing(setting-spacing($o-horizontal-spacing-default-size)); -} - -.o-horizontal-spacing--xs { - @include o-horizontal-spacing(setting-spacing(xs)); -} - -.o-horizontal-spacing--s { - @include o-horizontal-spacing(setting-spacing(s)); -} - -.o-horizontal-spacing--m { - @include o-horizontal-spacing(setting-spacing(m)); -} - -.o-horizontal-spacing--l { - @include o-horizontal-spacing(setting-spacing(l)); -} - -.o-horizontal-spacing--xl { - @include o-horizontal-spacing(setting-spacing(xl)); -} - -.o-horizontal-spacing--xxl { - @include o-horizontal-spacing(setting-spacing(xxl)); -} - -.o-horizontal-spacing--xxxl { - @include o-horizontal-spacing(setting-spacing(xxxl)); -} diff --git a/packages/object-horizontal-spacing/.npmignore b/packages/object-vertical-spacing/.npmignore similarity index 100% rename from packages/object-horizontal-spacing/.npmignore rename to packages/object-vertical-spacing/.npmignore diff --git a/packages/object-horizontal-spacing/README.md b/packages/object-vertical-spacing/README.md similarity index 55% rename from packages/object-horizontal-spacing/README.md rename to packages/object-vertical-spacing/README.md index c54d5e6..3e41adc 100644 --- a/packages/object-horizontal-spacing/README.md +++ b/packages/object-vertical-spacing/README.md @@ -1,11 +1,11 @@ -# @avalanche/object-horizontal-spacing -Add horizontal spacing to all child elements. +# @avalanche/object-vertical-spacing +Add vertical spacing to all child elements. -- [Documentation](https://avalanche.oberlehner.net/documentation/#object: horizontal-spacing) +- [Documentation](https://avalanche.oberlehner.net/documentation/#object: vertical-spacing) ## Install ```bash -npm install @avalanche/object-horizontal-spacing --save-dev +npm install @avalanche/object-vertical-spacing --save-dev ``` ## Basic usage @@ -13,22 +13,22 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ```scss // Import the main file. -@import '~@avalanche/object-horizontal-spacing'; +@import '~@avalanche/object-vertical-spacing'; // Import just the mixin file. -@import '~@avalanche/object-horizontal-spacing/scss/mixins'; +@import '~@avalanche/object-vertical-spacing/scss/mixins'; // Import just the classes you need. -@import '{ .o-horizontal-spacing, .o-horizontal-spacing--s } from ~@avalanche/object-horizontal-spacing'; +@import '{ .o-vertical-spacing, .o-vertical-spacing--s } from ~@avalanche/object-vertical-spacing'; // Not a fan of the "o-" prefix? -@import '{ .o-horizontal-spacing as .horizontal-spacing } from ~@avalanche/object-horizontal-spacing'; +@import '{ .o-vertical-spacing as .vertical-spacing } from ~@avalanche/object-vertical-spacing'; ``` ## Demo ### Default spacing size ```html -
+
Lorem Ipsum
Dolor sit amet.
@@ -36,7 +36,7 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ### X-large spacing size ```html -
+
Lorem Ipsum
Dolor sit amet.
@@ -44,11 +44,11 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Mixins ```scss -@import '~@avalanche/object-horizontal-spacing/scss/mixins'; +@import '~@avalanche/object-vertical-spacing/scss/mixins'; // Usage. -.horizontal-spacing { - @include o-horizontal-spacing(); +.vertical-spacing { + @include o-vertical-spacing(); } ``` diff --git a/packages/object-horizontal-spacing/package.json b/packages/object-vertical-spacing/package.json similarity index 76% rename from packages/object-horizontal-spacing/package.json rename to packages/object-vertical-spacing/package.json index b25e0b3..15ea49c 100644 --- a/packages/object-horizontal-spacing/package.json +++ b/packages/object-vertical-spacing/package.json @@ -1,6 +1,6 @@ { - "name": "@avalanche/object-horizontal-spacing", - "description": "Add horizontal spacing to all child elements", + "name": "@avalanche/object-vertical-spacing", + "description": "Add vertical spacing to all child elements", "keywords": [ "avalanche-package", "avalanche", @@ -12,7 +12,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-horizontal-spacing" + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/object-vertical-spacing" }, "bugs": { "url": "https://github.com/avalanchesass/avalanche/issues" diff --git a/packages/object-horizontal-spacing/scss/_mixins.scss b/packages/object-vertical-spacing/scss/_mixins.scss similarity index 62% rename from packages/object-horizontal-spacing/scss/_mixins.scss rename to packages/object-vertical-spacing/scss/_mixins.scss index ca3a8c2..dd1b6a8 100644 --- a/packages/object-horizontal-spacing/scss/_mixins.scss +++ b/packages/object-vertical-spacing/scss/_mixins.scss @@ -1,23 +1,23 @@ //// -/// @group Object: horizontal-spacing +/// @group Object: vertical-spacing /// @author Markus Oberlehner //// -/// Add horizontal spacing to all child elements. +/// Add vertical spacing to all child elements. /// /// @param {Number [unit]} $spacing [1em] /// Spacing. /// /// @example scss - Usage /// .selector { -/// @include o-horizontal-spacing(); +/// @include o-vertical-spacing(); /// } /// /// @example css - CSS Output /// .selector > * + * { /// margin-top: 1em; /// } -@mixin o-horizontal-spacing($spacing: 1em) { +@mixin o-vertical-spacing($spacing: 1em) { > * + * { margin-top: $spacing; } diff --git a/packages/object-vertical-spacing/scss/_settings.scss b/packages/object-vertical-spacing/scss/_settings.scss new file mode 100644 index 0000000..ddc3634 --- /dev/null +++ b/packages/object-vertical-spacing/scss/_settings.scss @@ -0,0 +1,8 @@ +//// +/// @group Object: vertical-spacing +/// @author Markus Oberlehner +//// + +/// Default spacing size. +/// @type String +$o-vertical-spacing-default-size: m !default; diff --git a/packages/object-vertical-spacing/scss/index.scss b/packages/object-vertical-spacing/scss/index.scss new file mode 100644 index 0000000..a58d8fc --- /dev/null +++ b/packages/object-vertical-spacing/scss/index.scss @@ -0,0 +1,35 @@ +@import '~@avalanche/setting-spacings'; +@import 'settings'; +@import 'mixins'; + +.o-vertical-spacing { + @include o-vertical-spacing(setting-spacing($o-vertical-spacing-default-size)); +} + +.o-vertical-spacing--xs { + @include o-vertical-spacing(setting-spacing(xs)); +} + +.o-vertical-spacing--s { + @include o-vertical-spacing(setting-spacing(s)); +} + +.o-vertical-spacing--m { + @include o-vertical-spacing(setting-spacing(m)); +} + +.o-vertical-spacing--l { + @include o-vertical-spacing(setting-spacing(l)); +} + +.o-vertical-spacing--xl { + @include o-vertical-spacing(setting-spacing(xl)); +} + +.o-vertical-spacing--xxl { + @include o-vertical-spacing(setting-spacing(xxl)); +} + +.o-vertical-spacing--xxxl { + @include o-vertical-spacing(setting-spacing(xxxl)); +} diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png similarity index 100% rename from packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png rename to packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png similarity index 100% rename from packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png rename to packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png similarity index 100% rename from packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png rename to packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png diff --git a/packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png similarity index 100% rename from packages/object-horizontal-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png rename to packages/object-vertical-spacing/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png diff --git a/packages/object-horizontal-spacing/test/test.hbs b/packages/object-vertical-spacing/test/test.hbs similarity index 52% rename from packages/object-horizontal-spacing/test/test.hbs rename to packages/object-vertical-spacing/test/test.hbs index b0e32b5..95c1e7c 100644 --- a/packages/object-horizontal-spacing/test/test.hbs +++ b/packages/object-vertical-spacing/test/test.hbs @@ -1,39 +1,39 @@ -
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
-
+
Lorem Ipsum
Dolor sit amet.
diff --git a/packages/object-horizontal-spacing/test/test.scss b/packages/object-vertical-spacing/test/test.scss similarity index 68% rename from packages/object-horizontal-spacing/test/test.scss rename to packages/object-vertical-spacing/test/test.scss index 9a33649..ed2409b 100644 --- a/packages/object-horizontal-spacing/test/test.scss +++ b/packages/object-vertical-spacing/test/test.scss @@ -1,5 +1,5 @@ @import '../scss/index'; -.o-horizontal-spacing { +.o-vertical-spacing { background: #efefef; } From 972b0fd35e115e74715fa49a657d14981f1ccc9d Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 15:19:35 +0100 Subject: [PATCH 351/355] Update the visibility utility package to v4.x.x standards. --- packages/utility-visibility/.gitignore | 3 - packages/utility-visibility/.npmignore | 2 + packages/utility-visibility/LICENSE | 340 ------------------ packages/utility-visibility/README.md | 57 ++- packages/utility-visibility/bower.json | 21 -- packages/utility-visibility/package.json | 21 ++ packages/utility-visibility/scss/_mixins.scss | 91 +++++ .../utility-visibility/scss/_visibility.scss | 84 ----- packages/utility-visibility/scss/index.scss | 13 + .../708650260_avalanche_0_document_0_s.png | Bin 0 -> 603 bytes .../708650260_avalanche_0_document_1_m.png | Bin 0 -> 1231 bytes .../708650260_avalanche_0_document_2_l.png | Bin 0 -> 2111 bytes .../708650260_avalanche_0_document_3_xl.png | Bin 0 -> 3241 bytes packages/utility-visibility/test/test.hbs | 3 + packages/utility-visibility/test/test.scss | 1 + 15 files changed, 183 insertions(+), 453 deletions(-) delete mode 100644 packages/utility-visibility/.gitignore create mode 100644 packages/utility-visibility/.npmignore delete mode 100644 packages/utility-visibility/LICENSE delete mode 100644 packages/utility-visibility/bower.json create mode 100644 packages/utility-visibility/package.json create mode 100644 packages/utility-visibility/scss/_mixins.scss delete mode 100644 packages/utility-visibility/scss/_visibility.scss create mode 100644 packages/utility-visibility/scss/index.scss create mode 100644 packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png create mode 100644 packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png create mode 100644 packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png create mode 100644 packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png create mode 100644 packages/utility-visibility/test/test.hbs create mode 100644 packages/utility-visibility/test/test.scss diff --git a/packages/utility-visibility/.gitignore b/packages/utility-visibility/.gitignore deleted file mode 100644 index 22ddb57..0000000 --- a/packages/utility-visibility/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -.sass-cache -bower_components diff --git a/packages/utility-visibility/.npmignore b/packages/utility-visibility/.npmignore new file mode 100644 index 0000000..9c17000 --- /dev/null +++ b/packages/utility-visibility/.npmignore @@ -0,0 +1,2 @@ +backstop_data +test diff --git a/packages/utility-visibility/LICENSE b/packages/utility-visibility/LICENSE deleted file mode 100644 index f1f9389..0000000 --- a/packages/utility-visibility/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., [http://fsf.org/] - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/packages/utility-visibility/README.md b/packages/utility-visibility/README.md index 13ba891..3e6e12e 100644 --- a/packages/utility-visibility/README.md +++ b/packages/utility-visibility/README.md @@ -1,10 +1,57 @@ -# avalanche: Utility visibility -CSS visibility utilities -https://github.com/avalanchesass/avalanche_utility_visibility +# @avalanche/utility-visibility +Classes to hide content with accessibility in mind. +- [Documentation](https://avalanche.oberlehner.net/documentation/#utility: visibility) + +## Install +```bash +npm install @avalanche/utility-visibility --save-dev +``` + +## Basic usage +This package requires that [node-sass](https://github.com/sass/node-sass) (or one of the grunt, gulp, etc. equivalents) in combination with the [node-sass-magic-importer](https://github.com/maoberlehner/node-sass-magic-importer) custom importer is used. + +```scss +// Import the main file. +@import '~@avalanche/utility-visibility'; + +// Import just the mixin file. +@import '~@avalanche/utility-visibility/scss/mixins'; + +// Import just the classes you need. +@import '{ .u-visibility-hidden } from ~@avalanche/utility-visibility'; + +// Not a fan of the "u-" prefix? +@import '{ .u-visibility-hidden as .visibility-hidden } from ~@avalanche/utility-visibility'; +``` + +## Demo +```html + +
Hidden
+ + +
Visually hidden
+ + +
Invisible
+``` + +## Mixins +```scss +@import '~@avalanche/utility-visibility/scss/mixins'; + +// Usage. +.visibility-hidden { + @include u-visibility-hidden(); +} +``` + +## About ### Author Markus Oberlehner -Twitter: https://twitter.com/MaOberlehner +Twitter: https://twitter.com/MaOberlehner +PayPal.me: https://paypal.me/maoberlehner ### License -GPL v2 (http://www.gnu.org/licenses/gpl-2.0.html) +MIT diff --git a/packages/utility-visibility/bower.json b/packages/utility-visibility/bower.json deleted file mode 100644 index 555b6f0..0000000 --- a/packages/utility-visibility/bower.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "avalanche: Utility visibility", - "version": "2.0.2", - "homepage": "https://github.com/avalanchesass/avalanche_utility_visibility", - "authors": [ - "Markus Oberlehner" - ], - "description": "CSS visibility utilities", - "keywords": [ - "SASS", - "CSS" - ], - "license": "GPL v2", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/packages/utility-visibility/package.json b/packages/utility-visibility/package.json new file mode 100644 index 0000000..a565ecb --- /dev/null +++ b/packages/utility-visibility/package.json @@ -0,0 +1,21 @@ +{ + "name": "@avalanche/utility-visibility", + "description": "Classes to hide content with accessibility in mind", + "keywords": [ + "avalanche-package", + "avalanche", + "sass" + ], + "version": "4.0.0-alpha.1", + "author": "Markus Oberlehner", + "homepage": "https://avalanche.oberlehner.net/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/avalanchesass/avalanche/tree/master/packages/utility-visibility" + }, + "bugs": { + "url": "https://github.com/avalanchesass/avalanche/issues" + }, + "main": "scss/index.scss" +} diff --git a/packages/utility-visibility/scss/_mixins.scss b/packages/utility-visibility/scss/_mixins.scss new file mode 100644 index 0000000..549c06a --- /dev/null +++ b/packages/utility-visibility/scss/_mixins.scss @@ -0,0 +1,91 @@ +//// +/// Classes to hide content with accessibility in mind. +/// +/// @group Utility: visibility +/// @author Markus Oberlehner +//// + +/// Hide from both screenreaders and browsers. +/// +/// @example scss - Usage +/// .selector { +/// @include u-visibility-hidden(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// display: none !important; +/// visibility: hidden !important; +/// } +@mixin u-visibility-hidden() { + display: none !important; + visibility: hidden !important; +} + +/// Hide only visually, but have it available for screenreaders. +/// +/// @example scss - Usage +/// .selector { +/// @include u-visibility-visuallyhidden(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// position: absolute; +/// overflow: hidden; +/// clip: rect(0 0 0 0); +/// margin: -1px; +/// padding: 0; +/// width: 1px; +/// height: 1px; +/// border: 0; +/// white-space: nowrap; +/// } +/// +/// .selector.is-focusable:active, +/// .selector.is-focusable:focus { +/// position: static; +/// overflow: visible; +/// clip: auto; +/// margin: 0; +/// width: auto; +/// height: auto; +/// white-space: inherit; +/// } +@mixin u-visibility-visuallyhidden() { + position: absolute; + overflow: hidden; + clip: rect(0 0 0 0); + margin: -1px; + padding: 0; + width: 1px; + height: 1px; + border: 0; + white-space: nowrap; + + &.is-focusable:active, + &.is-focusable:focus { + position: static; + overflow: visible; + clip: auto; + margin: 0; + width: auto; + height: auto; + white-space: inherit; + } +} + +/// Hide visually and from screenreaders, but maintain layout. +/// +/// @example scss - Usage +/// .selector { +/// @include u-visibility-invisible(); +/// } +/// +/// @example css - CSS Output +/// .selector { +/// visibility: hidden !important; +/// } +@mixin u-visibility-invisible() { + visibility: hidden !important; +} diff --git a/packages/utility-visibility/scss/_visibility.scss b/packages/utility-visibility/scss/_visibility.scss deleted file mode 100644 index 7066ede..0000000 --- a/packages/utility-visibility/scss/_visibility.scss +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Visibility - * - * Classes to hide content with accessibility in mind - * - * @level X.X. - */ -/** - * hidden - * - * Hide from both screenreaders and browsers: [h5bp.com/u](http://h5bp.com/u) - * - * @level X.X.X. - * @markup - *
- * Nobody can see me - *
- */ -@mixin u-hidden() { - display: none !important; - visibility: hidden !important; -} - -.u-hidden { - @include u-hidden(); -} - - - -/** - * visuallyhidden - * - * Hide only visually, but have it available for screenreaders: [h5bp.com/v](http://h5bp.com/v) - * - * @level X.X.X. - * @markup - *
- * Only screenreader users will notice me - *
- */ -@mixin u-visuallyhidden() { - position: absolute; - overflow: hidden; - clip: rect(0 0 0 0); - margin: -1px; - padding: 0; - width: 1px; - height: 1px; - border: 0; - &.is-focusable:active, - &.is-focusable:focus { - position: static; - overflow: visible; - clip: auto; - margin: 0; - width: auto; - height: auto; - } -} - -.u-visuallyhidden { - @include u-visuallyhidden(); -} - - - -/** - * invisible - * - * Hide visually and from screenreaders, but maintain layout - * - * @level X.X.X. - * @markup - *
- * Nobody can see my contents but im still here, somehow - *
- */ -@mixin u-invisible() { - visibility: hidden !important; -} - -.u-invisible { - @include u-invisible(); -} diff --git a/packages/utility-visibility/scss/index.scss b/packages/utility-visibility/scss/index.scss new file mode 100644 index 0000000..4fd7324 --- /dev/null +++ b/packages/utility-visibility/scss/index.scss @@ -0,0 +1,13 @@ +@import 'mixins'; + +.u-visibility-hidden { + @include u-visibility-hidden(); +} + +.u-visibility-visuallyhidden { + @include u-visibility-visuallyhidden(); +} + +.u-visibility-invisible { + @include u-visibility-invisible(); +} diff --git a/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png b/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_0_s.png new file mode 100644 index 0000000000000000000000000000000000000000..c6641d1ad4155d46377bfae71382f2940d38a55f GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|?d>m{*k-%9;(t#9bfk$L90|U1(2s1Lwnj^u$ zz{Kn6;uumf=j}m5Mxc^I3%>g2a@j8cGDpFP3xNlzugV!1c^uj0L0bP0l+XkK Dq4yUz literal 0 HcmV?d00001 diff --git a/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png b/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_1_m.png new file mode 100644 index 0000000000000000000000000000000000000000..7c86a17c1509adc08689bdd1280cfa6eea8cc32b GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0y~yV7kD-z&MqI4JdM5>)1UY#aZAHSmdKI;Vst08XPC*#H0l literal 0 HcmV?d00001 diff --git a/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png b/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_2_l.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0d326bd905634a228817ba70bc13bb84770dd9 GIT binary patch literal 2111 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz$C-L1{AT3Jzfo@I14-?iy0WWg+Z8+Vb&Z8 z1_t(zo-U3d6?5JmG-L!SIke!be=ev00w8k~jE2By2#kinXb6mkz-R~zmk?-J&ba(7 V1Eac8<0_DsJYD@<);T3K0RStQ83_OY literal 0 HcmV?d00001 diff --git a/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png b/packages/utility-visibility/test/backstopjs/bitmaps_reference/708650260_avalanche_0_document_3_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..888af53663be10fcb0537f18c2276e4ff9429518 GIT binary patch literal 3241 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz_gfy4J5Mp+W{cOS>O>_%)r1c48n{Iv*t)J zFz`fsx;TbZ%z1l|kr$}s(1P#&xqRjefXq=a8UmvsFd71*Aut*OqaiRF0;3@?8Umvs fFd70xhrm1D(nAc4`Uhq=fV6nJ`njxgN@xNA?6VnF literal 0 HcmV?d00001 diff --git a/packages/utility-visibility/test/test.hbs b/packages/utility-visibility/test/test.hbs new file mode 100644 index 0000000..683931b --- /dev/null +++ b/packages/utility-visibility/test/test.hbs @@ -0,0 +1,3 @@ +
Hidden
+
Visually hidden
+
Invisible
diff --git a/packages/utility-visibility/test/test.scss b/packages/utility-visibility/test/test.scss new file mode 100644 index 0000000..313a442 --- /dev/null +++ b/packages/utility-visibility/test/test.scss @@ -0,0 +1 @@ +@import '../scss/index'; From aeb1bb2e4d171822459f34ddb487e1042c9280c3 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 15:38:17 +0100 Subject: [PATCH 352/355] Remove HTML comments from the visibility utility package because they break website generation. --- packages/utility-visibility/README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/utility-visibility/README.md b/packages/utility-visibility/README.md index 3e6e12e..d7ffcef 100644 --- a/packages/utility-visibility/README.md +++ b/packages/utility-visibility/README.md @@ -27,14 +27,9 @@ This package requires that [node-sass](https://github.com/sass/node-sass) (or on ## Demo ```html - -
Hidden
- - -
Visually hidden
- - -
Invisible
+
Hide from both screenreaders and browsers.
+
Hide only visually, but have it available for screenreaders.
+
Hide visually and from screenreaders, but maintain layout.
``` ## Mixins From c4300b54aa961a9c7b26aeaee55de1c7c2cbd765 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 18:24:26 +0100 Subject: [PATCH 353/355] Use the master branch for the travis build status link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bda55e9..d4fd1fb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # avalanche -[![Build Status](https://travis-ci.org/avalanchesass/avalanche.svg?branch=dev)](https://travis-ci.org/avalanchesass/avalanche) +[![Build Status](https://travis-ci.org/avalanchesass/avalanche.svg?branch=master)](https://travis-ci.org/avalanchesass/avalanche) avalanche is a modular SASS framework which can be extended with npm packages. The goal is to provide a workflow to manage the complexity of big front-end projects. From 1ea19cc4dd1d4a0f16b4b0902d41c0d4ac89c7d7 Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 18:27:07 +0100 Subject: [PATCH 354/355] Update the README with text from the website. --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d4fd1fb..72635a5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,19 @@ # avalanche [![Build Status](https://travis-ci.org/avalanchesass/avalanche.svg?branch=master)](https://travis-ci.org/avalanchesass/avalanche) -avalanche is a modular SASS framework which can be extended with npm packages. The goal is to provide a workflow to manage the complexity of big front-end projects. +avalanche establishes the foundation for a package based CSS workflow. Heavy weight CSS toolkits often stay in your way when creating unique looking experiences or they lead to a rather bland design. But you don't have to reinvent the wheel for every new project either. avalanche provides building blocks for you to handpick and integrate into your workflow. + +## Get started +avalanche comes with a CLI to kickstart new projects: + +```bash +# Install the avalanche CLI. +npm install @avalanche/cli -g +# Create a new project with the name "Your Project Name". +avalanche "Your Project Name" +``` + +avalanche is flexible in the way you can use it – it is also very easy to integrate avalanche packages into your existing project. [Learn more about how to use avalanche](https://avalanche.oberlehner.net/get-started/). ## Testing - Test all packages at once: `npm test` From 776f2f35b73761a77ebbd84a4e38a796cb80f73e Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Tue, 27 Dec 2016 18:36:38 +0100 Subject: [PATCH 355/355] Update package npm versions. --- packages/generic-box-sizing-reset/package.json | 2 +- packages/object-aspect-ratio/package.json | 2 +- packages/object-container/package.json | 4 ++-- packages/object-grid/package.json | 4 ++-- packages/object-island/package.json | 4 ++-- packages/object-media/package.json | 4 ++-- packages/object-vertical-spacing/package.json | 2 +- packages/setting-breakpoints/package.json | 2 +- packages/setting-font-families/package.json | 2 +- packages/setting-spacings/package.json | 2 +- packages/utility-font-family/package.json | 4 ++-- packages/utility-offset/package.json | 2 +- packages/utility-order/package.json | 2 +- packages/utility-spacing/package.json | 2 +- packages/utility-text-align/package.json | 2 +- packages/utility-width/package.json | 4 ++-- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/generic-box-sizing-reset/package.json b/packages/generic-box-sizing-reset/package.json index d69d0ad..637c0af 100644 --- a/packages/generic-box-sizing-reset/package.json +++ b/packages/generic-box-sizing-reset/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/object-aspect-ratio/package.json b/packages/object-aspect-ratio/package.json index 9c9d386..61058dc 100644 --- a/packages/object-aspect-ratio/package.json +++ b/packages/object-aspect-ratio/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/object-container/package.json b/packages/object-container/package.json index 820a577..ee1d24b 100644 --- a/packages/object-container/package.json +++ b/packages/object-container/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.3", + "version": "4.0.0-alpha.4", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/object-grid/package.json b/packages/object-grid/package.json index 54e260b..84da508 100644 --- a/packages/object-grid/package.json +++ b/packages/object-grid/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.7", + "version": "4.0.0-alpha.8", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/object-island/package.json b/packages/object-island/package.json index 51c252c..c8a4405 100644 --- a/packages/object-island/package.json +++ b/packages/object-island/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/object-media/package.json b/packages/object-media/package.json index 45be1bc..3ee4b5f 100644 --- a/packages/object-media/package.json +++ b/packages/object-media/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/object-vertical-spacing/package.json b/packages/object-vertical-spacing/package.json index 15ea49c..7829d1b 100644 --- a/packages/object-vertical-spacing/package.json +++ b/packages/object-vertical-spacing/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/setting-breakpoints/package.json b/packages/setting-breakpoints/package.json index 958e14f..6114cf3 100644 --- a/packages/setting-breakpoints/package.json +++ b/packages/setting-breakpoints/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/setting-font-families/package.json b/packages/setting-font-families/package.json index 05f1584..c218854 100644 --- a/packages/setting-font-families/package.json +++ b/packages/setting-font-families/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.1", + "version": "4.0.0-alpha.2", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/setting-spacings/package.json b/packages/setting-spacings/package.json index 29f7363..07c5aa9 100644 --- a/packages/setting-spacings/package.json +++ b/packages/setting-spacings/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.2", + "version": "4.0.0-alpha.3", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", diff --git a/packages/utility-font-family/package.json b/packages/utility-font-family/package.json index 4caa5ef..77f9ef8 100644 --- a/packages/utility-font-family/package.json +++ b/packages/utility-font-family/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.2", + "version": "4.0.0-alpha.3", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-font-families": "^4.0.0-alpha.1" + "@avalanche/setting-font-families": "^4.0.0-alpha.2" }, "main": "scss/index.scss" } diff --git a/packages/utility-offset/package.json b/packages/utility-offset/package.json index 45dc6d9..77bbba8 100644 --- a/packages/utility-offset/package.json +++ b/packages/utility-offset/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + "@avalanche/setting-breakpoints": "^4.0.0-alpha.2" }, "main": "scss/index.scss" } diff --git a/packages/utility-order/package.json b/packages/utility-order/package.json index 50717e2..f8c7eec 100644 --- a/packages/utility-order/package.json +++ b/packages/utility-order/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + "@avalanche/setting-breakpoints": "^4.0.0-alpha.2" }, "main": "scss/index.scss" } diff --git a/packages/utility-spacing/package.json b/packages/utility-spacing/package.json index a3f3388..37ef3f8 100644 --- a/packages/utility-spacing/package.json +++ b/packages/utility-spacing/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-spacings": "^4.0.0-alpha.2" + "@avalanche/setting-spacings": "^4.0.0-alpha.3" }, "main": "scss/index.scss" } diff --git a/packages/utility-text-align/package.json b/packages/utility-text-align/package.json index 8b45edb..f43dfb3 100644 --- a/packages/utility-text-align/package.json +++ b/packages/utility-text-align/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + "@avalanche/setting-breakpoints": "^4.0.0-alpha.2" }, "main": "scss/index.scss" } diff --git a/packages/utility-width/package.json b/packages/utility-width/package.json index 69559d3..f0d8075 100644 --- a/packages/utility-width/package.json +++ b/packages/utility-width/package.json @@ -6,7 +6,7 @@ "avalanche", "sass" ], - "version": "4.0.0-alpha.3", + "version": "4.0.0-alpha.4", "author": "Markus Oberlehner", "homepage": "https://avalanche.oberlehner.net/", "license": "MIT", @@ -18,7 +18,7 @@ "url": "https://github.com/avalanchesass/avalanche/issues" }, "dependencies": { - "@avalanche/setting-breakpoints": "^4.0.0-alpha.1" + "@avalanche/setting-breakpoints": "^4.0.0-alpha.2" }, "main": "scss/index.scss" }