├── .bowerrc ├── .editorconfig ├── .gitignore ├── .sass-lint.yml ├── README.md ├── bower.json ├── config.yml ├── gulpfile.js ├── index.html ├── js ├── other-script.js └── script.js ├── logo.svg ├── package.json ├── pattern-lab ├── .gitignore ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── config │ ├── .gitkeep │ └── config.yml ├── core │ ├── console │ ├── server │ │ └── router.php │ └── src │ │ └── PatternLab │ │ └── Installer.php └── source │ ├── .gitkeep │ ├── _annotations │ └── annotations.js │ ├── _data │ ├── data.json │ └── listitems.json │ ├── _layouts │ └── .gitkeep │ ├── _macros │ ├── .gitkeep │ └── forms.twig │ ├── _meta │ ├── _00-head.twig │ └── _01-foot.twig │ ├── _patterns │ ├── 00-atoms │ │ ├── 01-global │ │ │ ├── 00-colors.twig │ │ │ └── 02-animations.twig │ │ ├── 02-text │ │ │ ├── 00-headings.twig │ │ │ ├── 01-fonts.twig │ │ │ ├── 01-paragraph.twig │ │ │ ├── 02-blockquote.twig │ │ │ ├── 03-inline-elements.twig │ │ │ ├── 04-time.twig │ │ │ └── 06-hr.twig │ │ ├── 03-lists │ │ │ ├── 00-unordered.twig │ │ │ ├── 01-ordered.twig │ │ │ └── 02-definition.twig │ │ ├── 04-images │ │ │ ├── 00-logo.twig │ │ │ ├── 01-landscape-4x3.twig │ │ │ ├── 02-landscape-16x9.twig │ │ │ ├── 03-square.twig │ │ │ ├── 04-avatar.twig │ │ │ ├── 06-loading-icon.twig │ │ │ └── 07-favicon.twig │ │ ├── 05-forms │ │ │ ├── 00-text-fields.twig │ │ │ ├── 01-select-menu.twig │ │ │ ├── 02-checkbox.twig │ │ │ ├── 03-radio-buttons.twig │ │ │ └── 04-html5-inputs.twig │ │ └── 06-buttons │ │ │ └── 00-buttons.twig │ └── 01-molecules │ │ └── blocks │ │ ├── branding.twig │ │ └── branding.yaml │ ├── _twig-components │ ├── filters │ │ ├── .gitkeep │ │ ├── clean_class.filter.php │ │ ├── clean_id.filter.php │ │ ├── format_date.filter.php │ │ ├── placeholder.filter.php │ │ ├── safe_join.filter.php │ │ ├── t.filter.php │ │ └── without.filter.php │ ├── functions │ │ ├── .gitkeep │ │ ├── link.function.php │ │ └── path.function.php │ ├── tags │ │ ├── .gitkeep │ │ └── trans.tag.php │ └── tests │ │ └── .gitkeep │ └── favicon.ico ├── patternlab.info.yml ├── patternlab.libraries.yml ├── patternlab.theme ├── screenshot.png ├── scss ├── 00-config │ ├── _breakpoints.scss │ ├── _colors.scss │ ├── _fonts.scss │ ├── _settings.scss │ ├── _utilities.scss │ └── _z-index.scss ├── 10-base │ ├── _grids.scss │ └── _typography.scss ├── 20-vendor │ └── readme.md ├── 30-global │ ├── _header.scss │ ├── _html-elements.scss │ └── _view.scss ├── 40-components │ ├── _btn.scss │ ├── _demo-block.scss │ ├── _menu.scss │ ├── _node-teaser.scss │ ├── _primary-nav.scss │ └── _search-form.scss ├── 50-templates │ ├── _grid.scss │ ├── _layout--content.scss │ └── _layout--frontpage.scss ├── 60-pages │ ├── _about-us-overrides.scss │ └── _styleguide-specific.scss └── style.scss └── templates └── block--system-branding-block.html.twig /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Unix-style newlines with a newline ending every file 2 | [*] 3 | indent_style = space 4 | indent_size = 2 5 | insert_final_newline = true 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled files 2 | dist/ 3 | 4 | # OS generated files 5 | .DS_Store 6 | .DS_Store? 7 | 8 | # Dependencies 9 | bower_components 10 | node_modules 11 | 12 | # Generated files 13 | *.sass-cache/ 14 | 15 | #IDE plugins 16 | .idea 17 | atlassian-ide-plugin.xml 18 | -------------------------------------------------------------------------------- /.sass-lint.yml: -------------------------------------------------------------------------------- 1 | # docs: https://github.com/sasstools/sass-lint 2 | # rules: https://github.com/sasstools/sass-lint/tree/master/docs/rules 3 | # Get the default of this file which will contain any new rules: https://github.com/sasstools/sass-lint/blob/master/docs/sass-lint.yml 4 | 5 | files: 6 | include: 'scss/**/*.scss' 7 | ignore: 8 | - 'scss/**/*tmp*.*' 9 | - 'scss/00-config/_icons.scss' 10 | options: 11 | formatter: stylish 12 | merge-default-rules: false 13 | rules: 14 | indentation: 15 | - 1 16 | - size: 2 17 | mixins-before-declarations: 1 18 | nesting-depth: 19 | - 1 20 | - max-depth: 4 21 | no-css-comments: 0 22 | no-duplicate-properties: 23 | - 1 24 | - 25 | exclude: 26 | - src 27 | no-empty-rulesets: 1 28 | no-extends: 1 29 | no-ids: 2 30 | no-important: 2 31 | no-misspelled-properties: 32 | - 1 33 | no-vendor-prefixes: 2 34 | placeholder-in-extend: 2 35 | quotes: 36 | - 1 37 | - style: double 38 | space-after-colon: 39 | - 1 40 | - include: true 41 | space-after-comma: 1 42 | space-before-bang: 43 | - 1 44 | - include: true 45 | space-before-brace: 46 | - 1 47 | - include: true 48 | space-before-colon: 1 49 | space-between-parens: 50 | - 1 51 | - include: false 52 | trailing-semicolon: 1 53 | url-quotes: 1 54 | zero-unit: 1 55 | 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pattern Lab Theme 2 | 3 | # Setup 4 | 5 | npm install 6 | cd pattern-lab 7 | composer install 8 | 9 | Additionally, the [`components` Drupal module](https://www.drupal.org/project/components) must be enabled: 10 | 11 | drush dl components 12 | drush en components -y 13 | 14 | ## Commands 15 | 16 | Compile the site: 17 | 18 | npm run compile 19 | 20 | Start up watches and local server: 21 | 22 | npm run start 23 | 24 | Run Tests: 25 | 26 | npm run test 27 | 28 | ## Configuration 29 | 30 | It's almost all done in `config.yml`. End all paths with a `/` please (i.e. `path/to/dir/`). The local `gulpfile.js` passes the `config` object to [`p2-theme-core`](https://github.com/phase2/p2-theme-core) - which can be viewed at `node_modules/p2-theme-core/` (most stuff in `lib/`). 31 | 32 | Documentation for many of the features are found in `node_modules/p2-theme-core/docs/` – those are [hosted here](http://p2-theme-core.readthedocs.org) too. 33 | 34 | ### Linting Config 35 | 36 | - Scss: edit `.sass-lint.yml` - [rule docs](https://github.com/sasstools/sass-lint/tree/master/docs/rules) 37 | 38 | ## More control 39 | 40 | The `npm run` commands above basically trigger gulp without having to install a global dependency. For fine grained control of tasks, install gulp globally with `npm install --global gulp` and then run `gulp help` for a list of all available tasks. 41 | 42 | Add anything to `gulpfile.js` that you want! Also, you can copy any file from `node_modules/p2-theme-core/lib/` into your repo and use it as a starting point (may need to install packages from `p2-theme-core` too.) 43 | 44 | Many of the features can be turned off, for example if we didn't want all the JS features like linting and concatenation, just toggle `enabled` under `js` in `config.yml`. So you'd just open `config.yml` and change this: 45 | 46 | ```diff 47 | js: 48 | - enabled: true 49 | + enabled: false 50 | ``` 51 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "patternlab", 3 | "version": "0.0.0", 4 | "description": "Components for PL work via Bower", 5 | "private": true, 6 | "ignore": [ 7 | "**/.*", 8 | "node_modules", 9 | "bower_components", 10 | "public/bower_components", 11 | "test", 12 | "tests" 13 | ], 14 | "dependencies": { 15 | "lodash": "~3.6.0", 16 | "modernizr": "~2.8.3" 17 | }, 18 | "devDependencies": { 19 | "drupal": "http://cgit.drupalcode.org/drupal/plain/misc/drupal.js?h=7.x", 20 | "jquery": "~1.10.2" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /config.yml: -------------------------------------------------------------------------------- 1 | css: 2 | enabled: true 3 | src: 4 | - scss/**/*.scss 5 | dest: dist/ 6 | flattenDestOutput: true 7 | lint: 8 | enabled: true 9 | failOnError: true 10 | sourceComments: false 11 | sourceMapEmbed: false 12 | outputStyle: expanded 13 | autoPrefixerBrowsers: 14 | - last 2 versions 15 | - IE >= 9 16 | includePaths: 17 | - ./node_modules 18 | sassdoc: 19 | enabled: false 20 | dest: dist/sassdoc 21 | verbose: false 22 | theme: default 23 | sort: 24 | - file 25 | - group 26 | - line> 27 | js: 28 | enabled: true 29 | src: 30 | - js/**/*.js 31 | dest: dist/ 32 | destName: all.min.js 33 | sourceMapEmbed: false 34 | uglify: false 35 | babel: false 36 | eslint: 37 | enabled: true 38 | src: 39 | - js/**/*.js 40 | - gulpfile.js 41 | patternLab: 42 | enabled: true 43 | src: 44 | root: pattern-lab/ 45 | source: pattern-lab/source/ 46 | injectFiles: null 47 | injectBower: true 48 | browserSync: 49 | enabled: true 50 | port: 3050 51 | watchFiles: null 52 | baseDir: ./ 53 | startPath: pattern-lab/public 54 | openBrowserAtStart: false 55 | browser: 56 | - Google Chrome 57 | tunnel: false 58 | reloadDelay: 50 59 | reloadDebounce: 750 60 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var gulp = require('gulp-help')(require('gulp')); 3 | var yaml = require('js-yaml'); 4 | var fs = require('fs'); 5 | var config = yaml.safeLoad(fs.readFileSync('./config.yml', 'utf8')); 6 | var tasks = { 7 | compile: [], 8 | watch: [], 9 | validate: [], 10 | clean: [], 11 | default: [] 12 | }; 13 | 14 | require('p2-theme-core')(gulp, config, tasks); 15 | 16 | gulp.task('compile', tasks.compile); 17 | gulp.task('clean', tasks.clean); 18 | gulp.task('validate', tasks.validate); 19 | gulp.task('watch', tasks.watch); 20 | tasks.default.push('watch'); 21 | gulp.task('default', tasks.default); 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /js/other-script.js: -------------------------------------------------------------------------------- 1 | /* global Drupal */ 2 | (function ($, Drupal) { 3 | 'use strict'; 4 | 5 | // A demo Drupal behavior 6 | Drupal.behaviors.otherCustomBehavior = { 7 | attach: function (context, settings) { 8 | // $('body', context).prepend('Demo drupal behavior in js/other-script.js'); 9 | // console.log('Drupal behavior from js/script.js'); 10 | } 11 | }; 12 | 13 | })(jQuery, Drupal); 14 | 15 | -------------------------------------------------------------------------------- /js/script.js: -------------------------------------------------------------------------------- 1 | /* global Drupal */ 2 | (function ($, Drupal) { 3 | 'use strict'; 4 | 5 | // A demo Drupal behavior 6 | Drupal.behaviors.customBehavior = { 7 | attach: function (context, settings) { 8 | // $('body', context).prepend('Demo drupal behavior in js/script.js'); 9 | // console.log('Drupal behavior from js/script.js'); 10 | } 11 | }; 12 | 13 | })(jQuery, Drupal); 14 | 15 | -------------------------------------------------------------------------------- /logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Slice 1 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "patternlab", 3 | "version": "1.0.0", 4 | "description": "A Drupal theme whose Twig templates are integrated with Pattern Lab.", 5 | "main": "gulpfile.js", 6 | "scripts": { 7 | "start": "gulp clean && gulp compile && gulp", 8 | "compile": "gulp clean && gulp compile", 9 | "test": "gulp validate", 10 | "postinstall": "find node_modules/ -name \"*.info\" -type f -delete && bower install --allow-root" 11 | }, 12 | "dependencies": {}, 13 | "devDependencies": { 14 | "babel-preset-es2015": "^6.6.0", 15 | "bourbon": "^4.2.7", 16 | "bower": "^1.7.9", 17 | "breakpoint-sass": "^2.7.0", 18 | "gulp": "^3.9.1", 19 | "gulp-help": "^1.6.1", 20 | "js-yaml": "^3.6.0", 21 | "lodash.merge": "^4.3.5", 22 | "normalize.scss": "^0.1.0", 23 | "p2-theme-core": "^7.0.1", 24 | "semver": "^5.1.0", 25 | "singularitygs": "^1.7.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /pattern-lab/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | export/* 4 | packages/* 5 | public/* 6 | vendor/* 7 | source/styleguide/* -------------------------------------------------------------------------------- /pattern-lab/LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /pattern-lab/README.md: -------------------------------------------------------------------------------- 1 | # Pattern Lab Twig Standard Edition for Drupal 2 | 3 | The Standard Edition for Drupal gives developers and designers a clean and stable base from which to develop a Drupal compatible pattern library. 4 | 5 | ## Prerequistes 6 | 7 | - [`composer`](https://getcomposer.org) 8 | 9 | ## First Time Install 10 | 11 | 1. Run `composer create-project pattern-lab/edition-drupal-standard FOLDERNAME` (Assuming you wanted it in a directory called `FOLDERNAME`). 12 | 1. Select a starterkit from menu. If asked about replacing files, do it. 13 | 1. Commit any new files if generated. 14 | 1. Run `composer update` to grab new goodies until [issue #1](https://github.com/pattern-lab/edition-php-drupal-standard/issues/1) is resolved. 15 | 1. Commit the updates. 16 | 17 | ## Using It 18 | 19 | After installing and committing, others cloning the repo need to run `composer install` to install dependencies. 20 | 21 | ## Helpful Commands 22 | 23 | These are some helpful commands you can use on the command line for working with Pattern Lab. 24 | 25 | ### Generate Pattern Lab 26 | 27 | To generate the front-end for Pattern Lab type: 28 | 29 | php core/console --generate 30 | 31 | ### Start a server to view Pattern Lab 32 | 33 | You can use PHP's built-in web server to review your Pattern Lab project in a browser. In a separate window type: 34 | 35 | php core/console --server 36 | 37 | Then open [http://localhost:8080](http://localhost:8080) in your browser. 38 | 39 | ### Install a StarterKit 40 | 41 | To install a near-empty StarterKit as a starting point for your project type: 42 | 43 | php core/console --starterkit --init 44 | 45 | To install a specific StarterKit from GitHub type: 46 | 47 | php core/console --starterkit --install 48 | 49 | ### Updating Pattern Lab 50 | 51 | composer update 52 | 53 | ## Other Documentation 54 | 55 | These are crucial pieces that contains documentation that is good to understand: 56 | 57 | - [`pattern-lab/patternengine-twig`](https://github.com/pattern-lab/patternengine-php-twig) 58 | - [`aleksip/plugin-data-transform`](https://github.com/aleksip/plugin-data-transform) 59 | - [Twig templating language](http://twig.sensiolabs.org/documentation) 60 | -------------------------------------------------------------------------------- /pattern-lab/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pattern-lab/edition-drupal-standard", 3 | "description": "Standard Edition of Pattern Lab for Drupal.", 4 | "keywords": ["pattern lab", "drupal"], 5 | "homepage": "http://patternlab.io", 6 | "license": "GPL-2.0+", 7 | "type": "project", 8 | "authors": [ 9 | { 10 | "name": "Dave Olsen", 11 | "email": "dmolsen@gmail.com", 12 | "homepage": "http://dmolsen.com", 13 | "role": "Lead Developer" 14 | } 15 | ], 16 | "support": { 17 | "issues": "https://github.com/pattern-lab/edition-drupal-standard/issues", 18 | "wiki": "http://patternlab.io/docs/", 19 | "source": "https://github.com/pattern-lab/edition-drupal-standard/releases" 20 | }, 21 | "autoload": { 22 | "psr-0": { 23 | "PatternLab": "core/src/" 24 | } 25 | }, 26 | "minimum-stability": "dev", 27 | "prefer-stable": true, 28 | "require": { 29 | "php": ">=5.3.6", 30 | "pattern-lab/core": "0.*", 31 | "pattern-lab/patternengine-twig": "~0.7", 32 | "pattern-lab/styleguidekit-twig-default": "0.*", 33 | "pattern-lab/drupal-twig-components": "^0.1.1" 34 | }, 35 | "require-dev": { 36 | "aleksip/plugin-data-transform": "dev-master" 37 | }, 38 | "scripts": { 39 | "post-create-project-cmd": [ 40 | "PatternLab\\Installer::postCreateProjectCmd" 41 | ], 42 | "post-package-install": [ 43 | "PatternLab\\Installer::postPackageInstall" 44 | ], 45 | "post-package-update": [ 46 | "PatternLab\\Installer::postPackageUpdate" 47 | ], 48 | "pre-install-cmd": [ 49 | "PatternLab\\Installer::preInstallCmd" 50 | ], 51 | "pre-package-uninstall": [ 52 | "PatternLab\\Installer::prePackageUninstall" 53 | ] 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /pattern-lab/composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "dd21679938e425b57c68c5fab88b2be0", 8 | "content-hash": "5542f49cb7ae6e27182b969aa662a693", 9 | "packages": [ 10 | { 11 | "name": "alchemy/zippy", 12 | "version": "0.2.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/alchemy-fr/Zippy.git", 16 | "reference": "16285231eb37587c6c32b86fa483c35853cd7515" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/alchemy-fr/Zippy/zipball/16285231eb37587c6c32b86fa483c35853cd7515", 21 | "reference": "16285231eb37587c6c32b86fa483c35853cd7515", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "doctrine/collections": "~1.0", 26 | "guzzle/guzzle": "~3.0", 27 | "php": ">=5.3.3", 28 | "pimple/pimple": "~1.0", 29 | "symfony/filesystem": "~2.0", 30 | "symfony/process": "~2.0" 31 | }, 32 | "require-dev": { 33 | "ext-zip": "*", 34 | "phpunit/phpunit": "~3.7", 35 | "sami/sami": "dev-master@dev", 36 | "symfony/finder": "~2.0" 37 | }, 38 | "suggest": { 39 | "ext-zip": "To use the ZipExtensionAdapter" 40 | }, 41 | "type": "library", 42 | "extra": { 43 | "branch-alias": { 44 | "dev-master": "0.2.x-dev" 45 | } 46 | }, 47 | "autoload": { 48 | "psr-0": { 49 | "Alchemy": "src" 50 | } 51 | }, 52 | "notification-url": "https://packagist.org/downloads/", 53 | "license": [ 54 | "MIT" 55 | ], 56 | "authors": [ 57 | { 58 | "name": "Alchemy", 59 | "email": "dev.team@alchemy.fr", 60 | "homepage": "http://www.alchemy.fr/" 61 | } 62 | ], 63 | "description": "Zippy, the archive manager companion", 64 | "keywords": [ 65 | "bzip", 66 | "compression", 67 | "tar", 68 | "zip" 69 | ], 70 | "time": "2014-12-10 15:03:17" 71 | }, 72 | { 73 | "name": "doctrine/collections", 74 | "version": "v1.3.0", 75 | "source": { 76 | "type": "git", 77 | "url": "https://github.com/doctrine/collections.git", 78 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" 79 | }, 80 | "dist": { 81 | "type": "zip", 82 | "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 83 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 84 | "shasum": "" 85 | }, 86 | "require": { 87 | "php": ">=5.3.2" 88 | }, 89 | "require-dev": { 90 | "phpunit/phpunit": "~4.0" 91 | }, 92 | "type": "library", 93 | "extra": { 94 | "branch-alias": { 95 | "dev-master": "1.2.x-dev" 96 | } 97 | }, 98 | "autoload": { 99 | "psr-0": { 100 | "Doctrine\\Common\\Collections\\": "lib/" 101 | } 102 | }, 103 | "notification-url": "https://packagist.org/downloads/", 104 | "license": [ 105 | "MIT" 106 | ], 107 | "authors": [ 108 | { 109 | "name": "Roman Borschel", 110 | "email": "roman@code-factory.org" 111 | }, 112 | { 113 | "name": "Benjamin Eberlei", 114 | "email": "kontakt@beberlei.de" 115 | }, 116 | { 117 | "name": "Guilherme Blanco", 118 | "email": "guilhermeblanco@gmail.com" 119 | }, 120 | { 121 | "name": "Jonathan Wage", 122 | "email": "jonwage@gmail.com" 123 | }, 124 | { 125 | "name": "Johannes Schmitt", 126 | "email": "schmittjoh@gmail.com" 127 | } 128 | ], 129 | "description": "Collections Abstraction library", 130 | "homepage": "http://www.doctrine-project.org", 131 | "keywords": [ 132 | "array", 133 | "collections", 134 | "iterator" 135 | ], 136 | "time": "2015-04-14 22:21:58" 137 | }, 138 | { 139 | "name": "guzzle/guzzle", 140 | "version": "v3.9.3", 141 | "source": { 142 | "type": "git", 143 | "url": "https://github.com/guzzle/guzzle3.git", 144 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" 145 | }, 146 | "dist": { 147 | "type": "zip", 148 | "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", 149 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", 150 | "shasum": "" 151 | }, 152 | "require": { 153 | "ext-curl": "*", 154 | "php": ">=5.3.3", 155 | "symfony/event-dispatcher": "~2.1" 156 | }, 157 | "replace": { 158 | "guzzle/batch": "self.version", 159 | "guzzle/cache": "self.version", 160 | "guzzle/common": "self.version", 161 | "guzzle/http": "self.version", 162 | "guzzle/inflection": "self.version", 163 | "guzzle/iterator": "self.version", 164 | "guzzle/log": "self.version", 165 | "guzzle/parser": "self.version", 166 | "guzzle/plugin": "self.version", 167 | "guzzle/plugin-async": "self.version", 168 | "guzzle/plugin-backoff": "self.version", 169 | "guzzle/plugin-cache": "self.version", 170 | "guzzle/plugin-cookie": "self.version", 171 | "guzzle/plugin-curlauth": "self.version", 172 | "guzzle/plugin-error-response": "self.version", 173 | "guzzle/plugin-history": "self.version", 174 | "guzzle/plugin-log": "self.version", 175 | "guzzle/plugin-md5": "self.version", 176 | "guzzle/plugin-mock": "self.version", 177 | "guzzle/plugin-oauth": "self.version", 178 | "guzzle/service": "self.version", 179 | "guzzle/stream": "self.version" 180 | }, 181 | "require-dev": { 182 | "doctrine/cache": "~1.3", 183 | "monolog/monolog": "~1.0", 184 | "phpunit/phpunit": "3.7.*", 185 | "psr/log": "~1.0", 186 | "symfony/class-loader": "~2.1", 187 | "zendframework/zend-cache": "2.*,<2.3", 188 | "zendframework/zend-log": "2.*,<2.3" 189 | }, 190 | "suggest": { 191 | "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." 192 | }, 193 | "type": "library", 194 | "extra": { 195 | "branch-alias": { 196 | "dev-master": "3.9-dev" 197 | } 198 | }, 199 | "autoload": { 200 | "psr-0": { 201 | "Guzzle": "src/", 202 | "Guzzle\\Tests": "tests/" 203 | } 204 | }, 205 | "notification-url": "https://packagist.org/downloads/", 206 | "license": [ 207 | "MIT" 208 | ], 209 | "authors": [ 210 | { 211 | "name": "Michael Dowling", 212 | "email": "mtdowling@gmail.com", 213 | "homepage": "https://github.com/mtdowling" 214 | }, 215 | { 216 | "name": "Guzzle Community", 217 | "homepage": "https://github.com/guzzle/guzzle/contributors" 218 | } 219 | ], 220 | "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", 221 | "homepage": "http://guzzlephp.org/", 222 | "keywords": [ 223 | "client", 224 | "curl", 225 | "framework", 226 | "http", 227 | "http client", 228 | "rest", 229 | "web service" 230 | ], 231 | "time": "2015-03-18 18:23:50" 232 | }, 233 | { 234 | "name": "kevinlebrun/colors.php", 235 | "version": "0.4.1", 236 | "source": { 237 | "type": "git", 238 | "url": "https://github.com/kevinlebrun/colors.php.git", 239 | "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a" 240 | }, 241 | "dist": { 242 | "type": "zip", 243 | "url": "https://api.github.com/repos/kevinlebrun/colors.php/zipball/d132f36d06e48ea080855af19b4bcb1fb615224a", 244 | "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a", 245 | "shasum": "" 246 | }, 247 | "require": { 248 | "php": ">=5.3.0" 249 | }, 250 | "require-dev": { 251 | "phpunit/phpunit": "3.7.*", 252 | "satooshi/php-coveralls": "dev-master", 253 | "squizlabs/php_codesniffer": "1.*" 254 | }, 255 | "type": "library", 256 | "autoload": { 257 | "psr-0": { 258 | "Colors": "src/" 259 | } 260 | }, 261 | "notification-url": "https://packagist.org/downloads/", 262 | "license": [ 263 | "MIT" 264 | ], 265 | "authors": [ 266 | { 267 | "name": "Kevin Le Brun", 268 | "email": "lebrun.k@gmail.com", 269 | "homepage": "http://kevinlebrun.fr", 270 | "role": "developer" 271 | } 272 | ], 273 | "description": "Colors for PHP CLI scripts", 274 | "homepage": "https://github.com/kevinlebrun/colors.php", 275 | "keywords": [ 276 | "cli", 277 | "color", 278 | "colors", 279 | "console", 280 | "shell" 281 | ], 282 | "time": "2014-12-23 01:23:37" 283 | }, 284 | { 285 | "name": "michelf/php-markdown", 286 | "version": "1.5.0", 287 | "source": { 288 | "type": "git", 289 | "url": "https://github.com/michelf/php-markdown.git", 290 | "reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9" 291 | }, 292 | "dist": { 293 | "type": "zip", 294 | "url": "https://api.github.com/repos/michelf/php-markdown/zipball/e1aabe18173231ebcefc90e615565742fc1c7fd9", 295 | "reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9", 296 | "shasum": "" 297 | }, 298 | "require": { 299 | "php": ">=5.3.0" 300 | }, 301 | "type": "library", 302 | "extra": { 303 | "branch-alias": { 304 | "dev-lib": "1.4.x-dev" 305 | } 306 | }, 307 | "autoload": { 308 | "psr-0": { 309 | "Michelf": "" 310 | } 311 | }, 312 | "notification-url": "https://packagist.org/downloads/", 313 | "license": [ 314 | "BSD-3-Clause" 315 | ], 316 | "authors": [ 317 | { 318 | "name": "John Gruber", 319 | "homepage": "http://daringfireball.net/" 320 | }, 321 | { 322 | "name": "Michel Fortin", 323 | "email": "michel.fortin@michelf.ca", 324 | "homepage": "https://michelf.ca/", 325 | "role": "Developer" 326 | } 327 | ], 328 | "description": "PHP Markdown", 329 | "homepage": "https://michelf.ca/projects/php-markdown/", 330 | "keywords": [ 331 | "markdown" 332 | ], 333 | "time": "2015-03-01 12:03:08" 334 | }, 335 | { 336 | "name": "pattern-lab/core", 337 | "version": "v0.7.2", 338 | "source": { 339 | "type": "git", 340 | "url": "https://github.com/pattern-lab/patternlab-php-core.git", 341 | "reference": "25c71af708d996d1e2b09490b380b3418918d58f" 342 | }, 343 | "dist": { 344 | "type": "zip", 345 | "url": "https://api.github.com/repos/pattern-lab/patternlab-php-core/zipball/25c71af708d996d1e2b09490b380b3418918d58f", 346 | "reference": "25c71af708d996d1e2b09490b380b3418918d58f", 347 | "shasum": "" 348 | }, 349 | "require": { 350 | "alchemy/zippy": "0.2.1", 351 | "kevinlebrun/colors.php": "0.4.1", 352 | "michelf/php-markdown": "1.5.0", 353 | "pattern-lab/unified-asset-installer": "~0.5", 354 | "php": ">=5.3.6", 355 | "seld/jsonlint": "1.3.1", 356 | "symfony/event-dispatcher": "2.6.4", 357 | "symfony/filesystem": "2.6.4", 358 | "symfony/finder": "2.6.4", 359 | "symfony/yaml": "2.6.4" 360 | }, 361 | "type": "library", 362 | "autoload": { 363 | "psr-0": { 364 | "PatternLab": "src/" 365 | } 366 | }, 367 | "notification-url": "https://packagist.org/downloads/", 368 | "license": [ 369 | "MIT" 370 | ], 371 | "authors": [ 372 | { 373 | "name": "Dave Olsen", 374 | "email": "dmolsen@gmail.com", 375 | "homepage": "http://dmolsen.com", 376 | "role": "Lead Developer" 377 | }, 378 | { 379 | "name": "Brad Frost", 380 | "homepage": "http://bradfrostweb.com", 381 | "role": "Creator" 382 | } 383 | ], 384 | "description": "The core functionality for Pattern Lab.", 385 | "homepage": "http://patternlab.io", 386 | "keywords": [ 387 | "atomic", 388 | "atomic design", 389 | "pattern lab", 390 | "style guide", 391 | "styleguide" 392 | ], 393 | "time": "2016-04-29 19:24:16" 394 | }, 395 | { 396 | "name": "pattern-lab/drupal-twig-components", 397 | "version": "v0.1.3", 398 | "source": { 399 | "type": "git", 400 | "url": "https://github.com/pattern-lab/plugin-drupal-twig-components.git", 401 | "reference": "e249d8d141d08830ebfa8b893a74aaae7146263f" 402 | }, 403 | "dist": { 404 | "type": "zip", 405 | "url": "https://api.github.com/repos/pattern-lab/plugin-drupal-twig-components/zipball/e249d8d141d08830ebfa8b893a74aaae7146263f", 406 | "reference": "e249d8d141d08830ebfa8b893a74aaae7146263f", 407 | "shasum": "" 408 | }, 409 | "type": "patternlab-plugin", 410 | "extra": { 411 | "patternlab": { 412 | "dist": { 413 | "sourceDir": [ 414 | { 415 | "filters/*": "_twig-components/filters/*" 416 | }, 417 | { 418 | "functions/*": "_twig-components/functions/*" 419 | }, 420 | { 421 | "tags/*": "_twig-components/tags/*" 422 | }, 423 | { 424 | "tests/*": "_twig-components/tests/*" 425 | } 426 | ] 427 | } 428 | } 429 | }, 430 | "notification-url": "https://packagist.org/downloads/", 431 | "license": [ 432 | "MIT" 433 | ], 434 | "authors": [ 435 | { 436 | "name": "Dave Olsen", 437 | "email": "dmolsen@gmail.com", 438 | "homepage": "http://dmolsen.com", 439 | "role": "Lead Developer" 440 | } 441 | ], 442 | "description": "A collection of Twig components to be used with Drupal- and Twig-related StarterKits.", 443 | "homepage": "http://patternlab.io", 444 | "keywords": [ 445 | "drupal", 446 | "pattern lab", 447 | "twig" 448 | ], 449 | "time": "2016-04-29 21:04:30" 450 | }, 451 | { 452 | "name": "pattern-lab/patternengine-twig", 453 | "version": "v0.7.4", 454 | "source": { 455 | "type": "git", 456 | "url": "https://github.com/pattern-lab/patternengine-php-twig.git", 457 | "reference": "a97d76ce38c50b3f0d1c6580ef7e11bec4476030" 458 | }, 459 | "dist": { 460 | "type": "zip", 461 | "url": "https://api.github.com/repos/pattern-lab/patternengine-php-twig/zipball/a97d76ce38c50b3f0d1c6580ef7e11bec4476030", 462 | "reference": "a97d76ce38c50b3f0d1c6580ef7e11bec4476030", 463 | "shasum": "" 464 | }, 465 | "require": { 466 | "pattern-lab/core": "0.*", 467 | "php": ">=5.3.6", 468 | "twig/twig": "1.*" 469 | }, 470 | "type": "patternlab-patternengine", 471 | "extra": { 472 | "patternlab": { 473 | "config": { 474 | "lineageMatch": "{%([ ]+)?include( |\\()["\\']([A-Za-z0-9-_]+)["\\'](\\))?(.*)%}", 475 | "lineageMatchKey": 3, 476 | "patternExtension": "twig", 477 | "twigDebug": false, 478 | "twigAutoescape": "html", 479 | "twigDefaultDateFormat": "", 480 | "twigDefaultIntervalFormat": "", 481 | "twigMacroExt": "macro.twig", 482 | "twigFilterExt": "filter.php", 483 | "twigFunctionExt": "function.php", 484 | "twigTagExt": "tag.php", 485 | "twigTestExt": "test.php" 486 | } 487 | } 488 | }, 489 | "autoload": { 490 | "psr-0": { 491 | "PatternLab\\PatternEngine\\Twig": "src/" 492 | } 493 | }, 494 | "notification-url": "https://packagist.org/downloads/", 495 | "license": [ 496 | "MIT" 497 | ], 498 | "authors": [ 499 | { 500 | "name": "Dave Olsen", 501 | "email": "dmolsen@gmail.com", 502 | "homepage": "http://dmolsen.com", 503 | "role": "Lead Developer" 504 | } 505 | ], 506 | "description": "Twig-based PatternEngine for Pattern Lab.", 507 | "homepage": "http://patternlab.io", 508 | "keywords": [ 509 | "pattern engine", 510 | "pattern lab", 511 | "twig" 512 | ], 513 | "time": "2016-05-06 01:18:23" 514 | }, 515 | { 516 | "name": "pattern-lab/styleguidekit-assets-default", 517 | "version": "v0.6.5", 518 | "source": { 519 | "type": "git", 520 | "url": "https://github.com/pattern-lab/styleguidekit-assets-default.git", 521 | "reference": "12908757a15fddcbcbdf277433614cfae2db6bf7" 522 | }, 523 | "dist": { 524 | "type": "zip", 525 | "url": "https://api.github.com/repos/pattern-lab/styleguidekit-assets-default/zipball/12908757a15fddcbcbdf277433614cfae2db6bf7", 526 | "reference": "12908757a15fddcbcbdf277433614cfae2db6bf7", 527 | "shasum": "" 528 | }, 529 | "require": { 530 | "pattern-lab/core": "0.*" 531 | }, 532 | "type": "patternlab-styleguidekit", 533 | "extra": { 534 | "patternlab": { 535 | "dist": { 536 | "publicDir": [ 537 | { 538 | "bower_components/*": "styleguide/bower_components/*" 539 | }, 540 | { 541 | "css/patternlab/*": "styleguide/css/*" 542 | }, 543 | { 544 | "fonts/*": "styleguide/fonts/*" 545 | }, 546 | { 547 | "html/index.html": "index.html" 548 | }, 549 | { 550 | "images/*": "styleguide/images/*" 551 | }, 552 | { 553 | "js/*": "styleguide/js/*" 554 | } 555 | ], 556 | "sourceDir": [ 557 | { 558 | "css/custom/*": "styleguide/css/*" 559 | } 560 | ] 561 | }, 562 | "config": { 563 | "ishMinimum": "240", 564 | "ishMaximum": "2600", 565 | "ishControlsHide": [ 566 | "hay" 567 | ] 568 | } 569 | } 570 | }, 571 | "notification-url": "https://packagist.org/downloads/", 572 | "license": [ 573 | "MIT" 574 | ], 575 | "authors": [ 576 | { 577 | "name": "Dave Olsen", 578 | "email": "dmolsen@gmail.com", 579 | "homepage": "http://dmolsen.com", 580 | "role": "Lead Developer" 581 | }, 582 | { 583 | "name": "Brad Frost", 584 | "homepage": "http://bradfrostweb.com", 585 | "role": "Creator" 586 | } 587 | ], 588 | "description": "The assets for the default StyleguideKit for Pattern Lab. Contains styles and mark-up for Pattern Lab's front-end.", 589 | "homepage": "http://patternlab.io", 590 | "keywords": [ 591 | "mustache", 592 | "pattern lab", 593 | "styleguide" 594 | ], 595 | "time": "2015-03-07 19:29:06" 596 | }, 597 | { 598 | "name": "pattern-lab/styleguidekit-twig-default", 599 | "version": "v0.6.5", 600 | "source": { 601 | "type": "git", 602 | "url": "https://github.com/pattern-lab/styleguidekit-twig-default.git", 603 | "reference": "3a3aef3c7570869e21e9882f15d1af13e6155bbd" 604 | }, 605 | "dist": { 606 | "type": "zip", 607 | "url": "https://api.github.com/repos/pattern-lab/styleguidekit-twig-default/zipball/3a3aef3c7570869e21e9882f15d1af13e6155bbd", 608 | "reference": "3a3aef3c7570869e21e9882f15d1af13e6155bbd", 609 | "shasum": "" 610 | }, 611 | "require": { 612 | "pattern-lab/core": "0.*", 613 | "pattern-lab/patternengine-twig": "0.*", 614 | "pattern-lab/styleguidekit-assets-default": "0.*", 615 | "twig/twig": "1.*" 616 | }, 617 | "type": "patternlab-styleguidekit", 618 | "notification-url": "https://packagist.org/downloads/", 619 | "license": [ 620 | "MIT" 621 | ], 622 | "authors": [ 623 | { 624 | "name": "Dave Olsen", 625 | "email": "dmolsen@gmail.com", 626 | "homepage": "http://dmolsen.com", 627 | "role": "Lead Developer" 628 | }, 629 | { 630 | "name": "Brad Frost", 631 | "homepage": "http://bradfrostweb.com", 632 | "role": "Creator" 633 | } 634 | ], 635 | "description": "The default Twig-based StyleguideKit for Pattern Lab. Contains styles and mark-up for Pattern Lab's front-end.", 636 | "homepage": "http://patternlab.io", 637 | "keywords": [ 638 | "pattern lab", 639 | "styleguide", 640 | "twig" 641 | ], 642 | "time": "2015-03-07 22:24:36" 643 | }, 644 | { 645 | "name": "pattern-lab/unified-asset-installer", 646 | "version": "v0.5.6", 647 | "source": { 648 | "type": "git", 649 | "url": "https://github.com/pattern-lab/unified-asset-installer.git", 650 | "reference": "ff77fa7032b310400bddc23583ca86d62afd117f" 651 | }, 652 | "dist": { 653 | "type": "zip", 654 | "url": "https://api.github.com/repos/pattern-lab/unified-asset-installer/zipball/ff77fa7032b310400bddc23583ca86d62afd117f", 655 | "reference": "ff77fa7032b310400bddc23583ca86d62afd117f", 656 | "shasum": "" 657 | }, 658 | "require": { 659 | "composer-plugin-api": "^1.0", 660 | "php": ">=5.3.6" 661 | }, 662 | "type": "composer-installer", 663 | "extra": { 664 | "class": "\\PatternLab\\Composer\\UnifiedAssetInstaller" 665 | }, 666 | "autoload": { 667 | "psr-0": { 668 | "PatternLab\\Composer": "src/" 669 | } 670 | }, 671 | "notification-url": "https://packagist.org/downloads/", 672 | "license": [ 673 | "MIT" 674 | ], 675 | "authors": [ 676 | { 677 | "name": "Dave Olsen", 678 | "email": "dmolsen@gmail.com", 679 | "homepage": "http://dmolsen.com", 680 | "role": "Lead Developer" 681 | } 682 | ], 683 | "description": "Manages the installation of Pattern Lab-related assets like StarterKits, PatternEngines, and Plug-ins.", 684 | "homepage": "http://patternlab.io", 685 | "keywords": [ 686 | "assets", 687 | "installer", 688 | "pattern lab", 689 | "plugins" 690 | ], 691 | "time": "2016-05-12 00:32:50" 692 | }, 693 | { 694 | "name": "pimple/pimple", 695 | "version": "v1.1.1", 696 | "source": { 697 | "type": "git", 698 | "url": "https://github.com/silexphp/Pimple.git", 699 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" 700 | }, 701 | "dist": { 702 | "type": "zip", 703 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", 704 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", 705 | "shasum": "" 706 | }, 707 | "require": { 708 | "php": ">=5.3.0" 709 | }, 710 | "type": "library", 711 | "extra": { 712 | "branch-alias": { 713 | "dev-master": "1.1.x-dev" 714 | } 715 | }, 716 | "autoload": { 717 | "psr-0": { 718 | "Pimple": "lib/" 719 | } 720 | }, 721 | "notification-url": "https://packagist.org/downloads/", 722 | "license": [ 723 | "MIT" 724 | ], 725 | "authors": [ 726 | { 727 | "name": "Fabien Potencier", 728 | "email": "fabien@symfony.com" 729 | } 730 | ], 731 | "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", 732 | "homepage": "http://pimple.sensiolabs.org", 733 | "keywords": [ 734 | "container", 735 | "dependency injection" 736 | ], 737 | "time": "2013-11-22 08:30:29" 738 | }, 739 | { 740 | "name": "seld/jsonlint", 741 | "version": "1.3.1", 742 | "source": { 743 | "type": "git", 744 | "url": "https://github.com/Seldaek/jsonlint.git", 745 | "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4" 746 | }, 747 | "dist": { 748 | "type": "zip", 749 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", 750 | "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", 751 | "shasum": "" 752 | }, 753 | "require": { 754 | "php": ">=5.3.0" 755 | }, 756 | "bin": [ 757 | "bin/jsonlint" 758 | ], 759 | "type": "library", 760 | "autoload": { 761 | "psr-4": { 762 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 763 | } 764 | }, 765 | "notification-url": "https://packagist.org/downloads/", 766 | "license": [ 767 | "MIT" 768 | ], 769 | "authors": [ 770 | { 771 | "name": "Jordi Boggiano", 772 | "email": "j.boggiano@seld.be", 773 | "homepage": "http://seld.be" 774 | } 775 | ], 776 | "description": "JSON Linter", 777 | "keywords": [ 778 | "json", 779 | "linter", 780 | "parser", 781 | "validator" 782 | ], 783 | "time": "2015-01-04 21:18:15" 784 | }, 785 | { 786 | "name": "symfony/event-dispatcher", 787 | "version": "v2.6.4", 788 | "target-dir": "Symfony/Component/EventDispatcher", 789 | "source": { 790 | "type": "git", 791 | "url": "https://github.com/symfony/event-dispatcher.git", 792 | "reference": "f75989f3ab2743a82fe0b03ded2598a2b1546813" 793 | }, 794 | "dist": { 795 | "type": "zip", 796 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f75989f3ab2743a82fe0b03ded2598a2b1546813", 797 | "reference": "f75989f3ab2743a82fe0b03ded2598a2b1546813", 798 | "shasum": "" 799 | }, 800 | "require": { 801 | "php": ">=5.3.3" 802 | }, 803 | "require-dev": { 804 | "psr/log": "~1.0", 805 | "symfony/config": "~2.0,>=2.0.5", 806 | "symfony/dependency-injection": "~2.6", 807 | "symfony/expression-language": "~2.6", 808 | "symfony/stopwatch": "~2.3" 809 | }, 810 | "suggest": { 811 | "symfony/dependency-injection": "", 812 | "symfony/http-kernel": "" 813 | }, 814 | "type": "library", 815 | "extra": { 816 | "branch-alias": { 817 | "dev-master": "2.6-dev" 818 | } 819 | }, 820 | "autoload": { 821 | "psr-0": { 822 | "Symfony\\Component\\EventDispatcher\\": "" 823 | } 824 | }, 825 | "notification-url": "https://packagist.org/downloads/", 826 | "license": [ 827 | "MIT" 828 | ], 829 | "authors": [ 830 | { 831 | "name": "Symfony Community", 832 | "homepage": "http://symfony.com/contributors" 833 | }, 834 | { 835 | "name": "Fabien Potencier", 836 | "email": "fabien@symfony.com" 837 | } 838 | ], 839 | "description": "Symfony EventDispatcher Component", 840 | "homepage": "http://symfony.com", 841 | "time": "2015-02-01 16:10:57" 842 | }, 843 | { 844 | "name": "symfony/filesystem", 845 | "version": "v2.6.4", 846 | "target-dir": "Symfony/Component/Filesystem", 847 | "source": { 848 | "type": "git", 849 | "url": "https://github.com/symfony/filesystem.git", 850 | "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7" 851 | }, 852 | "dist": { 853 | "type": "zip", 854 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/a1f566d1f92e142fa1593f4555d6d89e3044a9b7", 855 | "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7", 856 | "shasum": "" 857 | }, 858 | "require": { 859 | "php": ">=5.3.3" 860 | }, 861 | "type": "library", 862 | "extra": { 863 | "branch-alias": { 864 | "dev-master": "2.6-dev" 865 | } 866 | }, 867 | "autoload": { 868 | "psr-0": { 869 | "Symfony\\Component\\Filesystem\\": "" 870 | } 871 | }, 872 | "notification-url": "https://packagist.org/downloads/", 873 | "license": [ 874 | "MIT" 875 | ], 876 | "authors": [ 877 | { 878 | "name": "Symfony Community", 879 | "homepage": "http://symfony.com/contributors" 880 | }, 881 | { 882 | "name": "Fabien Potencier", 883 | "email": "fabien@symfony.com" 884 | } 885 | ], 886 | "description": "Symfony Filesystem Component", 887 | "homepage": "http://symfony.com", 888 | "time": "2015-01-03 21:13:09" 889 | }, 890 | { 891 | "name": "symfony/finder", 892 | "version": "v2.6.4", 893 | "target-dir": "Symfony/Component/Finder", 894 | "source": { 895 | "type": "git", 896 | "url": "https://github.com/symfony/Finder.git", 897 | "reference": "16513333bca64186c01609961a2bb1b95b5e1355" 898 | }, 899 | "dist": { 900 | "type": "zip", 901 | "url": "https://api.github.com/repos/symfony/Finder/zipball/16513333bca64186c01609961a2bb1b95b5e1355", 902 | "reference": "16513333bca64186c01609961a2bb1b95b5e1355", 903 | "shasum": "" 904 | }, 905 | "require": { 906 | "php": ">=5.3.3" 907 | }, 908 | "type": "library", 909 | "extra": { 910 | "branch-alias": { 911 | "dev-master": "2.6-dev" 912 | } 913 | }, 914 | "autoload": { 915 | "psr-0": { 916 | "Symfony\\Component\\Finder\\": "" 917 | } 918 | }, 919 | "notification-url": "https://packagist.org/downloads/", 920 | "license": [ 921 | "MIT" 922 | ], 923 | "authors": [ 924 | { 925 | "name": "Symfony Community", 926 | "homepage": "http://symfony.com/contributors" 927 | }, 928 | { 929 | "name": "Fabien Potencier", 930 | "email": "fabien@symfony.com" 931 | } 932 | ], 933 | "description": "Symfony Finder Component", 934 | "homepage": "http://symfony.com", 935 | "time": "2015-01-03 08:01:59" 936 | }, 937 | { 938 | "name": "symfony/process", 939 | "version": "v2.8.6", 940 | "source": { 941 | "type": "git", 942 | "url": "https://github.com/symfony/process.git", 943 | "reference": "1276bd9be89be039748cf753a2137f4ef149cd74" 944 | }, 945 | "dist": { 946 | "type": "zip", 947 | "url": "https://api.github.com/repos/symfony/process/zipball/1276bd9be89be039748cf753a2137f4ef149cd74", 948 | "reference": "1276bd9be89be039748cf753a2137f4ef149cd74", 949 | "shasum": "" 950 | }, 951 | "require": { 952 | "php": ">=5.3.9" 953 | }, 954 | "type": "library", 955 | "extra": { 956 | "branch-alias": { 957 | "dev-master": "2.8-dev" 958 | } 959 | }, 960 | "autoload": { 961 | "psr-4": { 962 | "Symfony\\Component\\Process\\": "" 963 | }, 964 | "exclude-from-classmap": [ 965 | "/Tests/" 966 | ] 967 | }, 968 | "notification-url": "https://packagist.org/downloads/", 969 | "license": [ 970 | "MIT" 971 | ], 972 | "authors": [ 973 | { 974 | "name": "Fabien Potencier", 975 | "email": "fabien@symfony.com" 976 | }, 977 | { 978 | "name": "Symfony Community", 979 | "homepage": "https://symfony.com/contributors" 980 | } 981 | ], 982 | "description": "Symfony Process Component", 983 | "homepage": "https://symfony.com", 984 | "time": "2016-04-14 15:22:22" 985 | }, 986 | { 987 | "name": "symfony/yaml", 988 | "version": "v2.6.4", 989 | "target-dir": "Symfony/Component/Yaml", 990 | "source": { 991 | "type": "git", 992 | "url": "https://github.com/symfony/Yaml.git", 993 | "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8" 994 | }, 995 | "dist": { 996 | "type": "zip", 997 | "url": "https://api.github.com/repos/symfony/Yaml/zipball/60ed7751671113cf1ee7d7778e691642c2e9acd8", 998 | "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8", 999 | "shasum": "" 1000 | }, 1001 | "require": { 1002 | "php": ">=5.3.3" 1003 | }, 1004 | "type": "library", 1005 | "extra": { 1006 | "branch-alias": { 1007 | "dev-master": "2.6-dev" 1008 | } 1009 | }, 1010 | "autoload": { 1011 | "psr-0": { 1012 | "Symfony\\Component\\Yaml\\": "" 1013 | } 1014 | }, 1015 | "notification-url": "https://packagist.org/downloads/", 1016 | "license": [ 1017 | "MIT" 1018 | ], 1019 | "authors": [ 1020 | { 1021 | "name": "Symfony Community", 1022 | "homepage": "http://symfony.com/contributors" 1023 | }, 1024 | { 1025 | "name": "Fabien Potencier", 1026 | "email": "fabien@symfony.com" 1027 | } 1028 | ], 1029 | "description": "Symfony Yaml Component", 1030 | "homepage": "http://symfony.com", 1031 | "time": "2015-01-25 04:39:26" 1032 | }, 1033 | { 1034 | "name": "twig/twig", 1035 | "version": "v1.24.0", 1036 | "source": { 1037 | "type": "git", 1038 | "url": "https://github.com/twigphp/Twig.git", 1039 | "reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8" 1040 | }, 1041 | "dist": { 1042 | "type": "zip", 1043 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8", 1044 | "reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8", 1045 | "shasum": "" 1046 | }, 1047 | "require": { 1048 | "php": ">=5.2.7" 1049 | }, 1050 | "require-dev": { 1051 | "symfony/debug": "~2.7", 1052 | "symfony/phpunit-bridge": "~2.7" 1053 | }, 1054 | "type": "library", 1055 | "extra": { 1056 | "branch-alias": { 1057 | "dev-master": "1.24-dev" 1058 | } 1059 | }, 1060 | "autoload": { 1061 | "psr-0": { 1062 | "Twig_": "lib/" 1063 | } 1064 | }, 1065 | "notification-url": "https://packagist.org/downloads/", 1066 | "license": [ 1067 | "BSD-3-Clause" 1068 | ], 1069 | "authors": [ 1070 | { 1071 | "name": "Fabien Potencier", 1072 | "email": "fabien@symfony.com", 1073 | "homepage": "http://fabien.potencier.org", 1074 | "role": "Lead Developer" 1075 | }, 1076 | { 1077 | "name": "Armin Ronacher", 1078 | "email": "armin.ronacher@active-4.com", 1079 | "role": "Project Founder" 1080 | }, 1081 | { 1082 | "name": "Twig Team", 1083 | "homepage": "http://twig.sensiolabs.org/contributors", 1084 | "role": "Contributors" 1085 | } 1086 | ], 1087 | "description": "Twig, the flexible, fast, and secure template language for PHP", 1088 | "homepage": "http://twig.sensiolabs.org", 1089 | "keywords": [ 1090 | "templating" 1091 | ], 1092 | "time": "2016-01-25 21:22:18" 1093 | } 1094 | ], 1095 | "packages-dev": [ 1096 | { 1097 | "name": "aleksip/plugin-data-transform", 1098 | "version": "dev-master", 1099 | "source": { 1100 | "type": "git", 1101 | "url": "https://github.com/aleksip/plugin-data-transform.git", 1102 | "reference": "527b5cec2cc44fb9d6f300003beff26cbb81127f" 1103 | }, 1104 | "dist": { 1105 | "type": "zip", 1106 | "url": "https://api.github.com/repos/aleksip/plugin-data-transform/zipball/527b5cec2cc44fb9d6f300003beff26cbb81127f", 1107 | "reference": "527b5cec2cc44fb9d6f300003beff26cbb81127f", 1108 | "shasum": "" 1109 | }, 1110 | "require": { 1111 | "pattern-lab/patternengine-twig": "0.*", 1112 | "php": ">=5.5.9" 1113 | }, 1114 | "type": "patternlab-plugin", 1115 | "autoload": { 1116 | "psr-0": { 1117 | "aleksip\\DataTransformPlugin\\": "src/", 1118 | "Drupal\\Component\\Render\\": "src/", 1119 | "Drupal\\Component\\Utility\\": "src/", 1120 | "Drupal\\Core\\Template\\": "src/" 1121 | } 1122 | }, 1123 | "notification-url": "https://packagist.org/downloads/", 1124 | "license": [ 1125 | "GPL-2.0+" 1126 | ], 1127 | "authors": [ 1128 | { 1129 | "name": "Aleksi Peebles" 1130 | } 1131 | ], 1132 | "description": "Data Transform Plugin for Pattern Lab PHP", 1133 | "homepage": "https://github.com/aleksip/plugin-data-transform", 1134 | "keywords": [ 1135 | "drupal", 1136 | "pattern lab", 1137 | "plugin" 1138 | ], 1139 | "time": "2016-05-11 14:38:38" 1140 | } 1141 | ], 1142 | "aliases": [], 1143 | "minimum-stability": "dev", 1144 | "stability-flags": { 1145 | "aleksip/plugin-data-transform": 20 1146 | }, 1147 | "prefer-stable": true, 1148 | "prefer-lowest": false, 1149 | "platform": { 1150 | "php": ">=5.3.6" 1151 | }, 1152 | "platform-dev": [] 1153 | } 1154 | -------------------------------------------------------------------------------- /pattern-lab/config/.gitkeep: -------------------------------------------------------------------------------- 1 | After you generate Pattern Lab for the first time your configuration file will be placed here. -------------------------------------------------------------------------------- /pattern-lab/config/config.yml: -------------------------------------------------------------------------------- 1 | v: 2.0.0-DP1 2 | overrideConfig: false 3 | ie: 4 | - DS_Store 5 | - less 6 | - scss 7 | id: 8 | - scss 9 | - .svn 10 | - .sass-cache 11 | cleanPublic: 'true' 12 | patternStates: 13 | - inprogress 14 | - inreview 15 | - complete 16 | styleGuideExcludes: '' 17 | cacheBusterOn: 'true' 18 | exportDir: export 19 | packagesDir: packages 20 | publicDir: public 21 | sourceDir: source 22 | ishMinimum: '240' 23 | ishMaximum: '2600' 24 | ishControlsHide: 25 | - hay 26 | lineageMatch: '{%([ ]+)?include( |\()["\']([A-Za-z0-9-_]+)["\'](\))?(.*)%}' 27 | lineageMatchKey: 3 28 | patternExtension: twig 29 | twigDebug: false 30 | twigAutoescape: false 31 | twigDefaultDateFormat: '' 32 | twigDefaultIntervalFormat: '' 33 | twigMacroExt: macro.twig 34 | twigFilterExt: filter.php 35 | twigFunctionExt: function.php 36 | twigTagExt: tag.php 37 | twigTestExt: test.php 38 | styleguideKit: pattern-lab/styleguidekit-twig-default 39 | -------------------------------------------------------------------------------- /pattern-lab/core/console: -------------------------------------------------------------------------------- 1 | dispatch("config.configLoadEnd"); 44 | 45 | // run the console 46 | Console::run(); 47 | -------------------------------------------------------------------------------- /pattern-lab/core/server/router.php: -------------------------------------------------------------------------------- 1 |

Further reading: Optimizing Web Experiences for High Resolution Screens

" 12 | }, 13 | { 14 | "el": "#nav", 15 | "title" : "Navigation", 16 | "comment": "

Navigation for adaptive web experiences can be tricky. Top navigations are typical on desktop sites, but mobile screen sizes don't give us the luxury of space. We're dealing with this situation by creating a simple menu anchor that toggles the main navigation on small screens. This is just one method. Bagcheck and Contents Magazine add an anchor in the header that jumps users to the navigation which is placed in the footer. This solution works well because it doesn't require any Javascript in order to work. Other methods exist too. For example, ESPN's mobile navigation overlays the main content of the page.

The nav is only hidden when a certain level of javascript is supported in order to ensure that users with little/poor javascript support can still access the navigation. Once the screen size is large enough to accommodate the nav, we show the main navigation links and hide the menu anchor.

See also: Responsive Navigation Patterns

" 17 | }, 18 | { 19 | "el": ".search-form", 20 | "title" : "Search", 21 | "comment": "

Search is an incredibly important priority, especially for mobile. It is a great idea to give users the ability to jump directly to what they are looking for without forcing them to wade through your site's navigation. Check out the Burton and Yelp mobile sites for great examples of experiences that prioritize search.

We're also using the HTML5 search input type, which is great for mobile devices that can bring up the appropriate virtual keyboard for many smartphones. And like the main header navigation, we're hiding the search form on small screens to save space. Clicking the search anchor toggles the form.

" 22 | }, 23 | { 24 | "el": ".article-header h1", 25 | "title" : "Article Header", 26 | "comment": "

The article header should be no more than 140 characters.

" 27 | }, 28 | { 29 | "el": ".block-hero", 30 | "title" : "Hero", 31 | "comment": "

The hero area highlights one major story using a large image and a captivating headline.

" 32 | } 33 | ] 34 | }; -------------------------------------------------------------------------------- /pattern-lab/source/_data/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "title" : "Pattern Lab", 3 | "htmlClass": "pl", 4 | "bodyClass": "body", 5 | "img": { 6 | "landscape_4x3": { 7 | "src": "../../images/fpo_4x3.png", 8 | "alt": "4x3 Image" 9 | }, 10 | "landscape_16x9": { 11 | "src": "../../images/fpo_16x9.png", 12 | "alt": "16x9 Image" 13 | }, 14 | "square": { 15 | "src": "../../images/fpo_square.png", 16 | "alt": "Square Thumbnail" 17 | }, 18 | "avatar" : { 19 | "src" : "../../images/fpo_avatar.png", 20 | "alt" : "Person Name" 21 | }, 22 | "rectangle": { 23 | "src": "http://placeimg.com/400/300/tech", 24 | "alt": "Rectangle" 25 | } 26 | }, 27 | "headline" : { 28 | "short" : "Lorem ipsum dolor sit (37 characters)", 29 | "medium" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. (72 characters)" 30 | }, 31 | "excerpt" : { 32 | "short" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam", 33 | "medium" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", 34 | "long" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 35 | }, 36 | "description" : "So, setting about it as methodically as men might smoke out a wasps' nest, the Martians spread this strange stifling vapour over the Londonward country. The horns of the crescent slowly moved apart, until at last they formed a line from Hanwell to Coombe and Malden. All night through their destructive tubes advanced.", 37 | "url" : "#", 38 | "name" : { 39 | "first": "Lacy", 40 | "firsti": "L", 41 | "middle": "Tommie", 42 | "middlei": "T", 43 | "last": "Way", 44 | "lasti": "W" 45 | }, 46 | "year" : { 47 | "long": "2013", 48 | "short": "13" 49 | }, 50 | "month" : { 51 | "long": "February", 52 | "short": "Feb", 53 | "digit": "02" 54 | }, 55 | "dayofweek" : { 56 | "long": "Monday", 57 | "short": "Mon" 58 | }, 59 | "day" : { 60 | "long": "10", 61 | "short": "10", 62 | "ordinal": "th" 63 | }, 64 | "hour" : { 65 | "long": "01", 66 | "short": "1", 67 | "military": "13", 68 | "ampm": "pm" 69 | }, 70 | "minute" : { 71 | "long": "20", 72 | "short": "20" 73 | }, 74 | "seconds" : "31", 75 | "author" : { 76 | "first_name": "Author", 77 | "last_name": "Name" 78 | }, 79 | "hero": true, 80 | "emergency" : false, 81 | "touts" : [ 82 | { }, 83 | { }, 84 | { } 85 | ], 86 | "latest_posts" : [ 87 | { }, 88 | { }, 89 | { }, 90 | { }, 91 | { } 92 | ] 93 | } -------------------------------------------------------------------------------- /pattern-lab/source/_data/listitems.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": { 3 | "title": "Nullizzle shizznit velizzle, hizzle, suscipit own yo', gravida vizzle, arcu.", 4 | "img": { 5 | "avatar": { 6 | "src": "http://placeimg.com/100/100/people", 7 | "alt": "Avatar" 8 | }, 9 | "square": { 10 | "src": "http://placeimg.com/300/300/nature", 11 | "alt": "Square" 12 | }, 13 | "rectangle": { 14 | "src": "http://placeimg.com/400/300/tech", 15 | "alt": "Rectangle" 16 | }, 17 | "landscape-4x3": { 18 | "src": "http://placeimg.com/400/300/tech", 19 | "alt": "4x3 Image" 20 | }, 21 | "landscape-16x9": { 22 | "src": "http://placeimg.com/640/360/tech", 23 | "alt": "16x9 Image" 24 | } 25 | }, 26 | "headline": { 27 | "short": "Lorizzle pimpin' dolizzle sit amet I", 28 | "medium": "Rizzle adipiscing elizzle. Nullam sapien velizzle, shit volutpizzle, my" 29 | }, 30 | "excerpt": { 31 | "short": "Shizz fo shizzle mah nizzle fo rizzle, mah home g-dizzle, gravida vizzle, arcu. Pellentesque crunk tortizzle. Sed erizzle. Black izzle sheezy telliv.", 32 | "medium": "Izzle crazy tempizzle sizzle. We gonna chung gangsta get down get down fo shizzle turpizzle. Away break it down black. Pellentesque bling bling rhoncus fo shizzle. In hac the bizzle platea dictumst. Black dapibizzle. Crackalackin.", 33 | "long": "Curabitizzle fo shizzle diam quizzle nisi nizzle mollizzle. Suspendisse boofron. Morbi odio. Sure pizzle. Crazy orci. Shut the shizzle up maurizzle get down get down, check out this a, go to hizzle sit amizzle, malesuada izzle, pede. Pellentesque gravida. Vestibulizzle check it out mi, volutpat izzle, shiz sed, shiznit sempizzle, da bomb. Funky fresh in ipsum. Da bomb volutpat felis vizzle daahng dawg. Crizzle quis dope izzle fo shizzle my ni." 34 | }, 35 | "description": "Fizzle crazy tortor. Sed rizzle. Ass pimpin' dolor dapibizzle turpis tempizzle fo shizzle my nizzle. Maurizzle pellentesque its fo rizzle izzle turpis. Get down get down we gonna chung nizzle. Shizzlin dizzle eleifend rhoncizzle break it down. In yo ghetto platea dictumst. Bling bling dapibizzle. Curabitur break yo neck, yall fo, pretizzle eu, go to hizzle dope, own yo' vitae, nunc. Bizzle suscipizzle. Ass semper velit sizzle fo.", 36 | "url": "http://lorizzle.nl/", 37 | "name": { 38 | "first": "Junius", 39 | "firsti": "J", 40 | "middle": "Marius", 41 | "middlei": "M", 42 | "last": "Koolen", 43 | "lasti": "K" 44 | }, 45 | "year": { 46 | "long": "2013", 47 | "short": "13" 48 | }, 49 | "month": { 50 | "long": "January", 51 | "short": "Jan", 52 | "digit": "01" 53 | }, 54 | "dayofweek": { 55 | "long": "Sunday", 56 | "short": "Sun" 57 | }, 58 | "day": { 59 | "long": "01", 60 | "short": "1", 61 | "ordinal": "st" 62 | }, 63 | "hour": { 64 | "long": "06", 65 | "short": "6", 66 | "military": "06", 67 | "ampm": "am" 68 | }, 69 | "minute": { 70 | "long": "20", 71 | "short": "20" 72 | }, 73 | "seconds": "31" 74 | }, 75 | "2": { 76 | "title": "Veggies sunt bona vobis, proinde vos postulo", 77 | "img": { 78 | "avatar": { 79 | "src": "http://placeimg.com/100/100/nature", 80 | "alt": "Avatar" 81 | }, 82 | "square": { 83 | "src": "http://placeimg.com/300/300/tech", 84 | "alt": "Square" 85 | }, 86 | "rectangle": { 87 | "src": "http://placeimg.com/400/300/people", 88 | "alt": "Rectangle" 89 | }, 90 | "landscape-4x3": { 91 | "src": "http://placeimg.com/400/300/people", 92 | "alt": "4x3 Image" 93 | }, 94 | "landscape-16x9": { 95 | "src": "http://placeimg.com/640/360/people", 96 | "alt": "16x9 Image" 97 | } 98 | }, 99 | "headline": { 100 | "short": "Veggies sunt bona vobis, proinde vos", 101 | "medium": "Postulo esse magis azuki bean burdock brussels sprout quandong komatsun" 102 | }, 103 | "excerpt": { 104 | "short": "A fava bean collard greens endive tomatillo lotus root okra winter purslane zucchini parsley spinach artichoke. Brussels sprout pea turnip catsear.", 105 | "medium": "Bush tomato gumbo potato garbanzo ricebean burdock daikon coriander kale quandong. Bok choy celery leek avocado shallot horseradish aubergine parsley. Bok choy bell pepper kale celery desert raisin kakadu plum bok choy bunya nuts.", 106 | "long": "Spinach tigernut. Corn cucumber grape black-eyed pea asparagus spinach avocado dulse bunya nuts epazote celery desert raisin celtuce burdock plantain yarrow napa cabbage. Plantain okra seakale endive tigernut pea sprouts asparagus corn chard peanut beet greens groundnut radicchio carrot coriander gumbo gram celtuce. Jícama nori bamboo shoot collard greens okra radicchio tomato. Catsear mustard corn tigernut celery kale water spinach bok choy." 107 | }, 108 | "description": "Mung bean squash sorrel taro coriander collard greens gumbo bitterleaf tomato. Taro water chestnut celtuce turnip yarrow celery endive scallion black-eyed pea onion. Aubergine dulse turnip greens mustard salsify garlic soybean parsley bitterleaf desert raisin courgette.", 109 | "url": "http://veggieipsum.com", 110 | "name": { 111 | "first": "Siguror", 112 | "firsti": "S", 113 | "middle": "Aron", 114 | "middlei": "A", 115 | "last": "Hanigan", 116 | "lasti": "H" 117 | }, 118 | "year": { 119 | "long": "2013", 120 | "short": "13" 121 | }, 122 | "month": { 123 | "long": "February", 124 | "short": "Feb", 125 | "digit": "02" 126 | }, 127 | "dayofweek": { 128 | "long": "Monday", 129 | "short": "Mon" 130 | }, 131 | "day": { 132 | "long": "10", 133 | "short": "10", 134 | "ordinal": "th" 135 | }, 136 | "hour": { 137 | "long": "01", 138 | "short": "1", 139 | "military": "13", 140 | "ampm": "pm" 141 | }, 142 | "minute": { 143 | "long": "20", 144 | "short": "20" 145 | }, 146 | "seconds": "31" 147 | }, 148 | "3": { 149 | "title": "Bacon ipsum dolor sit amet turducken strip steak beef ribs shank", 150 | "img": { 151 | "avatar": { 152 | "src": "http://placeimg.com/100/100/tech", 153 | "alt": "Avatar" 154 | }, 155 | "square": { 156 | "src": "http://placeimg.com/300/300/people", 157 | "alt": "Square" 158 | }, 159 | "rectangle": { 160 | "src": "http://placeimg.com/400/300/nature", 161 | "alt": "Rectangle" 162 | }, 163 | "landscape-4x3": { 164 | "src": "http://placeimg.com/400/300/nature", 165 | "alt": "4x3 Image" 166 | }, 167 | "landscape-16x9": { 168 | "src": "http://placeimg.com/640/360/nature", 169 | "alt": "16x9 Image" 170 | } 171 | }, 172 | "headline": { 173 | "short": "Bacon ipsum dolor sit amet spare rib", 174 | "medium": "Tongue pancetta short ribs bacon. Kielbasa ball tip cow bresaola, capic" 175 | }, 176 | "excerpt": { 177 | "short": "Tail jerky rump shoulder t-bone meatball meatloaf salami. Filet mignon shank t-bone venison, ham hock ribeye drumstick bresaola kielbasa. Frankfurter.", 178 | "medium": "Doner biltong turducken leberkas. Rump swine pork loin ribeye ball tip meatloaf, pork chop ground round pig pancetta cow biltong brisket. Beef corned beef beef ribs, bacon pork belly sausage meatball boudin doner ham hock. Swine gro.", 179 | "long": "Und round meatball, bacon pig leberkas corned beef tongue shoulder. Drumstick pork loin prosciutto ball tip shank pancetta spare ribs jowl pastrami. Frankfurter boudin filet mignon ribeye. Pig hamburger strip steak ham turducken prosciutto bresaola ground round pancetta frankfurter jowl. Frankfurter tongue brisket tenderloin, beef ribs pastrami biltong tail bresaola flank. Biltong pork chop beef boudin hamburger bacon. Capicola bresaola sausage." 180 | }, 181 | "description": "Boudin sausage jerky pastrami ground round salami biltong. Sausage fatback strip steak doner pork loin, pork belly drumstick ham short loin hamburger shankle. Short ribs sirloin rump tri-tip beef biltong. Meatball pig salami, jowl pork loin fatback short loin drumstick andouille.", 182 | "url": "http://baconipsum.com/", 183 | "name": { 184 | "first": "Teun", 185 | "firsti": "T", 186 | "middle": "Jodocus", 187 | "middlei": "J", 188 | "last": "Richard", 189 | "lasti": "R" 190 | }, 191 | "year": { 192 | "long": "2013", 193 | "short": "13" 194 | }, 195 | "month": { 196 | "long": "March", 197 | "short": "Mar", 198 | "digit": "03" 199 | }, 200 | "dayofweek": { 201 | "long": "Tuesday", 202 | "short": "Tue" 203 | }, 204 | "day": { 205 | "long": "22", 206 | "short": "22", 207 | "ordinal": "nd" 208 | }, 209 | "hour": { 210 | "long": "04", 211 | "short": "4", 212 | "military": "16", 213 | "ampm": "pm" 214 | }, 215 | "minute": { 216 | "long": "45", 217 | "short": "45" 218 | }, 219 | "seconds": "11" 220 | }, 221 | "4": { 222 | "title": "Whatever swag accusamus occupy, gentrify butcher tote bag", 223 | "img": { 224 | "avatar": { 225 | "src": "http://placeimg.com/100/100/animals", 226 | "alt": "Avatar" 227 | }, 228 | "square": { 229 | "src": "http://placeimg.com/300/300/arch", 230 | "alt": "Square" 231 | }, 232 | "rectangle": { 233 | "src": "http://placeimg.com/400/300/people/grayscale", 234 | "alt": "Rectangle" 235 | }, 236 | "landscape-4x3": { 237 | "src": "http://placeimg.com/400/300/people/greyscale", 238 | "alt": "4x3 Image" 239 | }, 240 | "landscape-16x9": { 241 | "src": "http://placeimg.com/640/360/people/greyscale", 242 | "alt": "16x9 Image" 243 | } 244 | }, 245 | "headline": { 246 | "short": "Nesciunt sunt cillum keytar Pitchfork", 247 | "medium": "Tote bag mixtape PBR Helvetica scenester forage four loko. Irure Tonx" 248 | }, 249 | "excerpt": { 250 | "short": "Golf quis +1, Wes Anderson church-key lo-fi keffiyeh selvage culpa authentic Brooklyn fap chambray. Id synth yr, 3 wolf moon locavore +1 mixtape do.", 251 | "medium": "Sed single-origin coffee anim eu. Bicycle rights Neutra Truffaut pop-up. Paleo hella irure meh Banksy, Wes Anderson typewriter VHS jean shorts yr. Eiusmod officia banjo Thundercats, odio laborum magna deep v cornhole nostrud kitsch.", 252 | "long": "Tattooed Williamsburg. Jean shorts proident kogi laboris. Non tote bag pariatur elit slow-carb, Vice irure eu Echo Park ea aliqua chillwave. Cornhole Etsy quinoa Pinterest cardigan. Excepteur quis forage, Blue Bottle keffiyeh velit hoodie direct trade typewriter Etsy. Fingerstache squid non, sriracha drinking vinegar Shoreditch pork belly. Paleo sartorial mollit 3 wolf moon chambray whatever, sed tote bag small batch freegan. Master cleanse." 253 | }, 254 | "description": "Fanny pack ullamco et veniam semiotics. Shoreditch PBR reprehenderit cliche, magna Tonx aesthetic. Narwhal photo booth DIY aute post-ironic anim. Vice cliche brunch est before they sold out fap, street art Odd Future fashion axe messenger bag nihil Tonx tattooed. Nihil hashtag incididunt, do eu art party Banksy jean shorts four loko typewriter.", 255 | "url": "http://hipsteripsum.me/", 256 | "name": { 257 | "first": "Duane", 258 | "firsti": "D", 259 | "middle": "Edvin", 260 | "middlei": "E", 261 | "last": "Wilms", 262 | "lasti": "W" 263 | }, 264 | "year": { 265 | "long": "2013", 266 | "short": "13" 267 | }, 268 | "month": { 269 | "long": "April", 270 | "short": "Apr", 271 | "digit": "04" 272 | }, 273 | "dayofweek": { 274 | "long": "Wednesday", 275 | "short": "Wed" 276 | }, 277 | "day": { 278 | "long": "13", 279 | "short": "13", 280 | "ordinal": "th" 281 | }, 282 | "hour": { 283 | "long": "10", 284 | "short": "10", 285 | "military": "10", 286 | "ampm": "am" 287 | }, 288 | "minute": { 289 | "long": "14", 290 | "short": "14" 291 | }, 292 | "seconds": "52" 293 | }, 294 | "5": { 295 | "title": "Marshall McLuhan Colbert bump backpack journalist vast wasteland Romenesko CPM", 296 | "img": { 297 | "avatar": { 298 | "src": "http://placeimg.com/100/100/people/grayscale", 299 | "alt": "Avatar" 300 | }, 301 | "square": { 302 | "src": "http://placeimg.com/300/300/animals", 303 | "alt": "Square" 304 | }, 305 | "rectangle": { 306 | "src": "http://placeimg.com/400/300/arch", 307 | "alt": "Rectangle" 308 | }, 309 | "landscape-4x3": { 310 | "src": "http://placeimg.com/400/300/arch", 311 | "alt": "4x3 Image" 312 | }, 313 | "landscape-16x9": { 314 | "src": "http://placeimg.com/640/360/arch", 315 | "alt": "16x9 Image" 316 | } 317 | }, 318 | "headline": { 319 | "short": "Blog meme masthead DocumentCloud Fou", 320 | "medium": "Square tabloid Andy Carvin stupid commenters, Nick Denton mathewi semip" 321 | }, 322 | "excerpt": { 323 | "short": "I love the Weather & Opera section Groupon copyright in the slot, Journal Register open newsroom analytics future totally blowing up on Twitter AOL.", 324 | "medium": "CTR mthomps Flipboard do what you do best and link to the rest Buttry media bias Journal Register RT, newspaper strike do what you do best and link to the rest semipermeable learnings cognitive surplus mathewi, Encyclo Google News.", 325 | "long": "Pulse mathewi Project Thunderdome digital first. HuffPo social media optimization try PR dying the notion of the public monetization data visualization audience atomization overcome community, libel lawyer twitterati should isn't a business model fair use innovation Facebook AOL, Walter Cronkite died for your sins horse-race coverage crowdfunding Patch but what's the business model rubber cement horse-race coverage. Lucius Nieman content farm." 326 | }, 327 | "description": "Like button audience atomization overcome Colbert bump Free Darko inverted pyramid we will make them pay, digital circulation strategy Like button totally blowing up on Twitter church of the savvy. Pictures of Goats section open source discuss Frontline analog thinking filters paidContent.", 328 | "url": "http://www.niemanlab.org/journo-ipsum/", 329 | "name": { 330 | "first": "Frans", 331 | "firsti": "F", 332 | "middle": "Fabius", 333 | "middlei": "F", 334 | "last": "Keegan", 335 | "lasti": "K" 336 | }, 337 | "year": { 338 | "long": "2013", 339 | "short": "13" 340 | }, 341 | "month": { 342 | "long": "May", 343 | "short": "May", 344 | "digit": "05" 345 | }, 346 | "dayofweek": { 347 | "long": "Thursday", 348 | "short": "Thu" 349 | }, 350 | "day": { 351 | "long": "26", 352 | "short": "26", 353 | "ordinal": "th" 354 | }, 355 | "hour": { 356 | "long": "06", 357 | "short": "6", 358 | "military": "18", 359 | "ampm": "pm" 360 | }, 361 | "minute": { 362 | "long": "37", 363 | "short": "37" 364 | }, 365 | "seconds": "24" 366 | }, 367 | "6": { 368 | "title": "Thunder, thunder, thundercats, Ho!", 369 | "img": { 370 | "avatar": { 371 | "src": "http://placeimg.com/100/100/arch", 372 | "alt": "Avatar" 373 | }, 374 | "square": { 375 | "src": "http://placeimg.com/300/300/animals", 376 | "alt": "Square" 377 | }, 378 | "rectangle": { 379 | "src": "http://placeimg.com/400/300/people/grayscale", 380 | "alt": "Rectangle" 381 | }, 382 | "landscape-4x3": { 383 | "src": "http://placeimg.com/400/300/people/grayscale", 384 | "alt": "4x3 Image" 385 | }, 386 | "landscape-16x9": { 387 | "src": "http://placeimg.com/640/360/people/grayscale", 388 | "alt": "16x9 Image" 389 | } 390 | }, 391 | "headline": { 392 | "short": "Hong Kong Phooey, number one super g", 393 | "medium": "Hong Kong Phooey, quicker than the human eye. He's got style, a groovy" 394 | }, 395 | "excerpt": { 396 | "short": "Style, and a car that just won't stop. When the going gets tough, he's really rough, with a Hong Kong Phooey chop (Hi-Ya!). Hong Kong Phooey, number.", 397 | "medium": "One super guy. Hong Kong Phooey, quicker than the human eye. Hong Kong Phooey, he's fan-riffic! One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one.", 398 | "long": "It's a pretty story. Sharing everything with fun, that's the way to be. One for all and all for one, Muskehounds are always ready. One for all and all for one, helping everybody. One for all and all for one, can sound pretty corny. If you've got a problem chum, think how it could be. This is my boss, Jonathan Hart, a self-made millionaire, he's quite a guy. This is Mrs H., she's gorgeous, she's one lady who knows how to take care of herself." 399 | }, 400 | "description": "Beats all you've ever saw, been in trouble with the law since the day they was born. Straight'nin' the curve, flat'nin' the hills. Someday the mountain might get 'em, but the law never will. Makin' their way, the only way they know how, that's just a little bit more than the law will allow. Just good ol' boys, wouldn't change if they could, fightin' the system like a true modern day Robin Hood.", 401 | "url": "http://www.malevole.com/mv/misc/text/", 402 | "name": { 403 | "first": "Fergus", 404 | "firsti": "F", 405 | "middle": "Jon", 406 | "middlei": "J", 407 | "last": "Althuis", 408 | "lasti": "A" 409 | }, 410 | "year": { 411 | "long": "2013", 412 | "short": "13" 413 | }, 414 | "month": { 415 | "long": "June", 416 | "short": "Jun", 417 | "digit": "06" 418 | }, 419 | "dayofweek": { 420 | "long": "Friday", 421 | "short": "Fri" 422 | }, 423 | "day": { 424 | "long": "08", 425 | "short": "8", 426 | "ordinal": "th" 427 | }, 428 | "hour": { 429 | "long": "11", 430 | "short": "11", 431 | "military": "23", 432 | "ampm": "pm" 433 | }, 434 | "minute": { 435 | "long": "37", 436 | "short": "37" 437 | }, 438 | "seconds": "33" 439 | }, 440 | "7": { 441 | "title": "Yeah, I like animals better than people sometimes", 442 | "img": { 443 | "avatar": { 444 | "src": "http://placeimg.com/100/100/any", 445 | "alt": "Avatar" 446 | }, 447 | "square": { 448 | "src": "http://placeimg.com/300/300/any", 449 | "alt": "Square" 450 | }, 451 | "rectangle": { 452 | "src": "http://placeimg.com/400/300/any", 453 | "alt": "Rectangle" 454 | }, 455 | "landscape-4x3": { 456 | "src": "http://placeimg.com/400/300/any", 457 | "alt": "4x3 Image" 458 | }, 459 | "landscape-16x9": { 460 | "src": "http://placeimg.com/640/360/any", 461 | "alt": "16x9 Image" 462 | } 463 | }, 464 | "headline": { 465 | "short": "Now that we know who you are, I know", 466 | "medium": "Who I am. I'm not a mistake! It all makes sense! In a comic, you know" 467 | }, 468 | "excerpt": { 469 | "short": "How you can tell who the arch-villain's going to be? He's the exact opposite of the hero. And most times they're friends, like you and me! I should've known way back when... You know why, David? Because of the kids. They called me.", 470 | "medium": "The lysine contingency - it's intended to prevent the spread of the animals is case they ever got off the island. Dr. Wu inserted a gene that makes a single faulty enzyme in protein metabolism. The animals can't manufacture the amin.", 471 | "long": "Do you see any Teletubbies in here? Do you see a slender plastic tag clipped to my shirt with my name printed on it? Do you see a little Asian child with a blank expression on his face sitting outside on a mechanical helicopter that shakes when you put quarters in it? No? Well, that's what you see at a toy store. And you must think you're in a toy store, because you're here shopping for an infant named Jeb. Acid lysine. Unless they're." 472 | }, 473 | "description": "Especially dogs. Dogs are the best. Every time you come home, they act like they haven't seen you in a year. And the good thing about dogs... is they got different dogs for different people. Like pit bulls. The dog of dogs. Pit bull can be the right man's best friend... or the wrong man's worst enemy. You going to give me a dog for a pet, give me a pit bull.", 474 | "url": "http://slipsum.com/lite/", 475 | "name": { 476 | "first": "Bertil", 477 | "firsti": "B", 478 | "middle": "Pier", 479 | "middlei": "P", 480 | "last": "Aaij", 481 | "lasti": "A" 482 | }, 483 | "year": { 484 | "long": "2013", 485 | "short": "13" 486 | }, 487 | "month": { 488 | "long": "July", 489 | "short": "Jul", 490 | "digit": "07" 491 | }, 492 | "dayofweek": { 493 | "long": "Saturday", 494 | "short": "Sat" 495 | }, 496 | "day": { 497 | "long": "22", 498 | "short": "22", 499 | "ordinal": "nd" 500 | }, 501 | "hour": { 502 | "long": "11", 503 | "short": "11", 504 | "military": "11", 505 | "ampm": "am" 506 | }, 507 | "minute": { 508 | "long": "12", 509 | "short": "12" 510 | }, 511 | "seconds": "47" 512 | }, 513 | "8": { 514 | "title": "Webtwo ipsum dolor sit amet, eskobo chumby doostang bebo", 515 | "img": { 516 | "avatar": { 517 | "src": "http://placeimg.com/100/100/any/grayscale", 518 | "alt": "Avatar" 519 | }, 520 | "square": { 521 | "src": "http://placeimg.com/300/300/any/grayscale", 522 | "alt": "Square" 523 | }, 524 | "rectangle": { 525 | "src": "http://placeimg.com/400/300/any/grayscale", 526 | "alt": "Rectangle" 527 | }, 528 | "landscape-4x3": { 529 | "src": "http://placeimg.com/400/300/any/grayscale", 530 | "alt": "4x3 Image" 531 | }, 532 | "landscape-16x9": { 533 | "src": "http://placeimg.com/640/360/any/grayscale", 534 | "alt": "16x9 Image" 535 | } 536 | }, 537 | "headline": { 538 | "short": "Webtwo ipsum dolor sit amet, eskobo", 539 | "medium": "Chumby doostang bebo. Wakoopa oooj geni zoho loopt eskobo sifteo chart" 540 | }, 541 | "excerpt": { 542 | "short": "Dropio, chumby waze dopplr plugg oooj yammer jibjab imvu yuntaa knewton, mobly trulia airbnb bitly chegg tivo empressr knewton. Plickers spock voxy.", 543 | "medium": "Zooomr kippt voxy zinch appjet napster trulia, zappos wufoo zapier spotify mzinga jaiku fleck, disqus lijit voxy voki yoono. Dogster elgg jibjab xobni kazaa bebo udemy sifteo kiko, elgg knewton skype mog octopart zoodles kazaa udem.", 544 | "long": "Appjet spock handango empressr lijit palantir weebly dropio jibjab revver kaboodle spotify orkut mobly chegg akismet, handango ebay woopra revver joukuu kosmix unigo oooooc wufoo zanga kno zinch spock knewton. Balihoo greplin bebo squidoo skype kaboodle meebo disqus joost gooru, zlio tumblr edmodo palantir eskobo shopify kiko gsnap. Greplin balihoo chartly plugg imeem diigo trulia plickers qeyno wikia akismet, palantir grockit prezi jabber zo." 545 | }, 546 | "description": "Wufoo diigo grockit sifteo divvyshot, unigo zooomr revver. Edmodo appjet joyent skype bubbli jajah zoodles joukuu xobni hojoki edmodo appjet, mozy mzinga akismet yuntaa joost yuntaa geni tivo insala yoono chumby, grockit sococo loopt zanga etsy cloudera koofers empressr jiglu blippy. Omgpop lanyrd joukuu sococo zimbra airbnb movity jibjab, foodzie.", 547 | "url": "http://web20ipsum.com", 548 | "name": { 549 | "first": "Freyr", 550 | "firsti": "F", 551 | "middle": "Ninian", 552 | "middlei": "N", 553 | "last": "Hines", 554 | "lasti": "H" 555 | }, 556 | "year": { 557 | "long": "2013", 558 | "short": "13" 559 | }, 560 | "month": { 561 | "long": "August", 562 | "short": "Aug", 563 | "digit": "08" 564 | }, 565 | "dayofweek": { 566 | "long": "Sunday", 567 | "short": "Sun" 568 | }, 569 | "day": { 570 | "long": "31", 571 | "short": "31", 572 | "ordinal": "st" 573 | }, 574 | "hour": { 575 | "long": "03", 576 | "short": "3", 577 | "military": "15", 578 | "ampm": "pm" 579 | }, 580 | "minute": { 581 | "long": "42", 582 | "short": "42" 583 | }, 584 | "seconds": "21" 585 | }, 586 | "9": { 587 | "title": "Rebel Mission to Ord Mantell", 588 | "img": { 589 | "avatar": { 590 | "src": "http://placeimg.com/100/100/any/sepia", 591 | "alt": "Avatar" 592 | }, 593 | "square": { 594 | "src": "http://placeimg.com/300/300/any/sepia", 595 | "alt": "Square" 596 | }, 597 | "rectangle": { 598 | "src": "http://placeimg.com/400/300/any/sepia", 599 | "alt": "Rectangle" 600 | }, 601 | "landscape-4x3": { 602 | "src": "http://placeimg.com/400/300/any/sepia", 603 | "alt": "4x3 Image" 604 | }, 605 | "landscape-16x9": { 606 | "src": "http://placeimg.com/640/360/any/sepia", 607 | "alt": "16x9 Image" 608 | } 609 | }, 610 | "headline": { 611 | "short": "All right. Well, take care of yourself, Han", 612 | "medium": "You don't believe in the Force, do you? The Force is strong with this one" 613 | }, 614 | "excerpt": { 615 | "short": "I'm trying not to, kid. I find your lack of faith disturbing. You are a part of the Rebel Alliance and a traitor! Take her away! I want to come with.", 616 | "medium": "I'm surprised you had the courage to take the responsibility yourself. Don't be too proud of this technological terror you've constructed. The ability to destroy a planet is insignificant next to the power of the Force. You don't be.", 617 | "long": "A tremor in the Force. The last time I felt it was in the presence of my old master. You don't believe in the Force, do you? I have traced the Rebel spies to her. Now she is my only link to finding their secret base. A tremor in the Force. The last time I felt it was in the presence of my old master. I'm trying not to, kid. The more you tighten your grip, Tarkin, the more star systems will slip through your fingers. There's nothing for me here." 618 | }, 619 | "description": "I find your lack of faith disturbing. A tremor in the Force. The last time I felt it was in the presence of my old master. Don't act so surprised, Your Highness. You weren't on any mercy mission this time. Several transmissions were beamed to this ship by Rebel spies. I want to know what happened to the plans they sent you. The plans you refer to will soon be back in our hands.", 620 | "url": "http://chrisvalleskey.com/fillerama/", 621 | "name": { 622 | "first": "Jacobus", 623 | "firsti": "J", 624 | "middle": "Domitianus", 625 | "middlei": "D", 626 | "last": "Sneiders", 627 | "lasti": "S" 628 | }, 629 | "year": { 630 | "long": "2013", 631 | "short": "13" 632 | }, 633 | "month": { 634 | "long": "September", 635 | "short": "Sep", 636 | "digit": "09" 637 | }, 638 | "dayofweek": { 639 | "long": "Monday", 640 | "short": "Mon" 641 | }, 642 | "day": { 643 | "long": "04", 644 | "short": "4", 645 | "ordinal": "th" 646 | }, 647 | "hour": { 648 | "long": "09", 649 | "short": "9", 650 | "military": "09", 651 | "ampm": "am" 652 | }, 653 | "minute": { 654 | "long": "04", 655 | "short": "4" 656 | }, 657 | "seconds": "37" 658 | }, 659 | "10": { 660 | "title": "Help, help, I'm being repressed!", 661 | "img": { 662 | "avatar": { 663 | "src": "http://placeimg.com/100/100/tech/grayscale", 664 | "alt": "Avatar" 665 | }, 666 | "square": { 667 | "src": "http://placeimg.com/300/300/nature/grayscale", 668 | "alt": "Square" 669 | }, 670 | "rectangle": { 671 | "src": "http://placeimg.com/400/300/arch/grayscale", 672 | "alt": "Rectangle" 673 | }, 674 | "landscape-4x3": { 675 | "src": "http://placeimg.com/400/300/arch/grayscale", 676 | "alt": "4x3 Image" 677 | }, 678 | "landscape-16x9": { 679 | "src": "http://placeimg.com/640/360/arch/grayscale", 680 | "alt": "16x9 Image" 681 | } 682 | }, 683 | "headline": { 684 | "short": "The swallow may fly south with the sun", 685 | "medium": "On second thoughts, let's not go there. It is a silly place. You don't" 686 | }, 687 | "excerpt": { 688 | "short": "The swallow may fly south with the sun, and the house martin or the plover may seek warmer climes in winter, yet these are not strangers to our land.", 689 | "medium": "The Knights Who Say Ni demand a sacrifice! Found them? In Mercia?! The coconut's tropical! Where'd you get the coconuts? Why do you think that she is a witch? I am your king. You don't vote for kings. But you are dressed as one. Oh, ow!", 690 | "long": "Well, I didn't vote for you. Burn her! Be quiet! He hasn't got shit all over him. Where'd you get the coconuts? The swallow may fly south with the sun, and the house martin or the plover may seek warmer climes in winter, yet these are not strangers to our land. No! Yes, yes. A bit. But she's got a wart. Shut up! Will you shut up?! I have to push the pram a lot. Now, look here, my good man. Frighten us, English pig-dogs! Go and boil your bottoms." 691 | }, 692 | "description": "The Knights Who Say Ni demand a sacrifice! …Are you suggesting that coconuts migrate? Knights of Ni, we are but simple travelers who seek the enchanter who lives beyond these woods. You don't frighten us, English pig-dogs! Go and boil your bottoms, sons of a silly person! I blow my nose at you, so-called Ah-thoor Keeng, you and all your silly English K-n-n-n-n-n-n-n-niggits!", 693 | "url": "http://chrisvalleskey.com/fillerama/", 694 | "name": { 695 | "first": "Plinius", 696 | "firsti": "P", 697 | "middle": "Varinius", 698 | "middlei": "V", 699 | "last": "Sloane", 700 | "lasti": "S" 701 | }, 702 | "year": { 703 | "long": "2013", 704 | "short": "13" 705 | }, 706 | "month": { 707 | "long": "October", 708 | "short": "Oct", 709 | "digit": "10" 710 | }, 711 | "dayofweek": { 712 | "long": "Tuesday", 713 | "short": "Tue" 714 | }, 715 | "day": { 716 | "long": "25", 717 | "short": "25", 718 | "ordinal": "th" 719 | }, 720 | "hour": { 721 | "long": "03", 722 | "short": "3", 723 | "military": "03", 724 | "ampm": "am" 725 | }, 726 | "minute": { 727 | "long": "51", 728 | "short": "51" 729 | }, 730 | "second": "19" 731 | }, 732 | "11": { 733 | "title": "Danish danish candy canes bonbon cheesecake danish marzipan", 734 | "img": { 735 | "avatar": { 736 | "src": "http://placeimg.com/100/100/tech/sepia", 737 | "alt": "Avatar" 738 | }, 739 | "square": { 740 | "src": "http://placeimg.com/300/300/animals/sepia", 741 | "alt": "Square" 742 | }, 743 | "rectangle": { 744 | "src": "http://placeimg.com/400/300/arch/sepia", 745 | "alt": "Rectangle" 746 | }, 747 | "landscape-4x3": { 748 | "src": "http://placeimg.com/400/300/arch/sepia", 749 | "alt": "4x3 Image" 750 | }, 751 | "landscape-16x9": { 752 | "src": "http://placeimg.com/640/360/arch/sepia", 753 | "alt": "16x9 Image" 754 | } 755 | }, 756 | "headline": { 757 | "short": "Carrot cake fruitcake dessert apple", 758 | "medium": "Pie powder lemon drops sesame snaps cake brownie. Biscuit ice cream gin" 759 | }, 760 | "excerpt": { 761 | "short": "Bread cotton candy marzipan. Baker too go gingerbread topping cupcake donut. Fruitcake marzipan bear claw tart toffee candy cheesecake. Lemon drops.", 762 | "medium": "Cupcake chupa chups pudding gummies. Unerdwear.com cupcake candy soufflé sesame snaps macaroon sesame snaps. Tart dragée muffin. Sweet roll gummi bears caramels fruitcake candy cake. Cotton candy carrot cake tart cotton candy. Jelly.", 763 | "long": "Gingerbread candy icing pastry cake bonbon fruitcake donut. Powder liquorice dessert tart croissant cake. Dessert chocolate cake sweet roll candy candy sesame snaps tiramisu ice cream. Candy candy canes marzipan biscuit cupcake pie pudding. Donut cotton candy muffin. Pastry bear claw icing halvah. Gingerbread cotton candy sweet roll toffee chocolate jujubes. Wafer jujubes danish ice cream lemon drops wafer. Sesame snaps cupcake gummies browni." 764 | }, 765 | "description": "Sugar plum wafer soufflé ice cream. Wafer topping biscuit pie gummi bears topping. Gummies toffee powder applicake oat cake cookie. Bear claw candy tootsie roll fruitcake danish applicake candy canes macaroon. Liquorice tiramisu danish cotton candy gummies. Tiramisu dessert gummi bears macaroon sweet roll jelly-o gummi bears marzipan.", 766 | "url": "http://cupcakeipsum.com/", 767 | "name": { 768 | "first": "Matthias", 769 | "firsti": "M", 770 | "middle": "Brady", 771 | "middlei": "B", 772 | "last": "Macguinness", 773 | "lasti": "M" 774 | }, 775 | "year": { 776 | "long": "2013", 777 | "short": "13" 778 | }, 779 | "month": { 780 | "long": "November", 781 | "short": "Nov", 782 | "digit": "11" 783 | }, 784 | "dayofweek": { 785 | "long": "Wednesday", 786 | "short": "Wed" 787 | }, 788 | "day": { 789 | "long": "19", 790 | "short": "19", 791 | "ordinal": "th" 792 | }, 793 | "hour": { 794 | "long": "11", 795 | "short": "11", 796 | "military": "23", 797 | "ampm": "pm" 798 | }, 799 | "minute": { 800 | "long": "55", 801 | "short": "55" 802 | }, 803 | "seconds": "12" 804 | }, 805 | "12": { 806 | "title": "Cottage cheese brie lancashire. Boursin when the cheese comes out.", 807 | "img": { 808 | "avatar": { 809 | "src": "http://placeimg.com/100/100/people/sepia", 810 | "alt": "Avatar" 811 | }, 812 | "square": { 813 | "src": "http://placeimg.com/300/300/people/sepia", 814 | "alt": "Square" 815 | }, 816 | "rectangle": { 817 | "src": "http://placeimg.com/400/300/people/sepia", 818 | "alt": "Rectangle" 819 | }, 820 | "landscape-4x3": { 821 | "src": "http://placeimg.com/400/300/people/sepia", 822 | "alt": "4x3 Image" 823 | }, 824 | "landscape-16x9": { 825 | "src": "http://placeimg.com/640/360/people/sepia", 826 | "alt": "16x9 Image" 827 | } 828 | }, 829 | "headline": { 830 | "short": "Cauliflower cheese cream cheese baby", 831 | "medium": "Lancashire cheesy feet rubber cheese cheese and wine gouda the big chee" 832 | }, 833 | "excerpt": { 834 | "short": "Queso fromage. Taleggio boursin bavarian bergkase cream cheese when the cheese comes out everybody's happy port-salut halloumi pecorino. Caerphilly cut the cheese manchego camembert de normandie goat melted cheese cheese and biscuit.", 835 | "medium": "Pecorino queso lancashire. Manchego lancashire cheesy feet emmental babybel cheese strings dolcelatte bavarian bergkase. Ricotta cheese slices cheesy grin cow cheesecake smelly cheese mascarpone lancashire. Cow say cheese babybel do.", 836 | "long": "Cheesy grin macaroni cheese airedale. Fromage frais airedale cheese and wine brie cow swiss swiss mozzarella. Emmental cheese triangles edam rubber cheese pepper jack ricotta airedale airedale. Brie parmesan smelly cheese cheese strings stinking bishop cheese strings taleggio. Bocconcini blue castello gouda. Everyone loves caerphilly rubber cheese halloumi smelly cheese melted cheese melted cheese bavarian bergkase. Rubber cheese ricotta emm." 837 | }, 838 | "description": "Queso caerphilly cheesecake. Parmesan chalk and cheese port-salut port-salut babybel cottage cheese cheesy grin pepper jack. Croque monsieur paneer st. agur blue cheese emmental airedale monterey jack bavarian bergkase cheese triangles. Halloumi parmesan.", 839 | "url": "http://www.cheeseipsum.co.uk/", 840 | "name": { 841 | "first": "Aquila", 842 | "firsti": "A", 843 | "middle": "Gaius", 844 | "middlei": "G", 845 | "last": "Achterkamp", 846 | "lasti": "A" 847 | }, 848 | "year": { 849 | "long": "2013", 850 | "short": "13" 851 | }, 852 | "month": { 853 | "long": "December", 854 | "short": "Dec", 855 | "digit": "12" 856 | }, 857 | "dayofweek": { 858 | "long": "Thursday", 859 | "short": "Thu" 860 | }, 861 | "day": { 862 | "long": "28", 863 | "short": "28", 864 | "ordinal": "th" 865 | }, 866 | "hour": { 867 | "long": "08", 868 | "short": "8", 869 | "military": "08", 870 | "ampm": "am" 871 | }, 872 | "minute": { 873 | "long": "34", 874 | "short": "34" 875 | }, 876 | "seconds": "56" 877 | } 878 | } -------------------------------------------------------------------------------- /pattern-lab/source/_layouts/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_macros/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_macros/forms.twig: -------------------------------------------------------------------------------- 1 | {% macro input(name, type, classes, label, placeholder, value, size, required) %} 2 | {% set show_label = label|default(true) %} 3 |
4 | {% if show_label %} 5 | {% endif %} 9 |
10 | {% endmacro %} 11 | 12 | {% macro textarea(label, placeholder, rows, classes) %} 13 | {% set show_label = label|default(true) %} 14 |
15 | {% if show_label %} 16 | {% endif %} 20 |
21 | {% endmacro %} 22 | -------------------------------------------------------------------------------- /pattern-lab/source/_meta/_00-head.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ title }} 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{ patternLabHead | raw }} 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /pattern-lab/source/_meta/_01-foot.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ patternLabFoot | raw }} 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/01-global/00-colors.twig: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 | 4 | #ff0000 5 |
  • 6 |
  • 7 | 8 | #00ff00 9 |
  • 10 |
  • 11 | 12 | #0000ff 13 |
  • 14 |
  • 15 | 16 | #ffff00 17 |
  • 18 |
  • 19 | 20 | #00ffff 21 |
  • 22 |
  • 23 | 24 | #ff00ff 25 |
  • 26 |
  • 27 | 28 | #ffffff 29 |
  • 30 |
  • 31 | 32 | #808080 33 |
  • 34 |
  • 35 | 36 | #000000 37 |
  • 38 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/01-global/02-animations.twig: -------------------------------------------------------------------------------- 1 |
Fade: Duration: 0.3s Easing: ease-out (Hover to see effect)
2 | 3 |
Movement: Duration: 0.8s Easing: ease-in-out; (Hover to see effect)
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/00-headings.twig: -------------------------------------------------------------------------------- 1 |

Heading Level 1

2 |

Heading Level 2

3 |

Heading Level 3

4 |

Heading Level 4

5 |
Heading Level 5
6 |
Heading Level 6
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/01-fonts.twig: -------------------------------------------------------------------------------- 1 |

Primary font: "HelveticaNeue", "Helvetica", "Arial", sans-serif;

2 |

Primary font italic: "HelveticaNeue", "Helvetica", "Arial", sans-serif;

3 |

Primary font bold: "HelveticaNeue", "Helvetica", "Arial", sans-serif;

4 |

Secondary font: Georgia, Times, "Times New Roman", serif;

5 |

Secondary font italic: Georgia, Times, "Times New Roman", serif;

6 |

Secondary font bold; Georgia, Times, "Times New Roman", serif;

-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/01-paragraph.twig: -------------------------------------------------------------------------------- 1 |

A paragraph (from the Greek paragraphos, "to write beside" or "written beside") is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose.

-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/02-blockquote.twig: -------------------------------------------------------------------------------- 1 |
2 |

A block quotation (also known as a long quotation or extract) is a quotation in a written document, that is set off from the main text as a paragraph, or block of text, and typically distinguished visually using indentation and a different typeface or smaller size quotation.

3 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/03-inline-elements.twig: -------------------------------------------------------------------------------- 1 |
2 |

This is a text link

3 | 4 |

Strong is used to indicate strong importance

5 | 6 |

This text has added emphasis

7 | 8 |

The b element is stylistically different text from normal text, without any special importance

9 | 10 |

The i element is text that is set off from the normal text

11 | 12 |

The u element is text with an unarticulated, though explicitly rendered, non-textual annotation

13 | 14 |

This text is deleted and This text is inserted

15 | 16 |

This text has a strikethrough

17 | 18 |

Superscript®

19 | 20 |

Subscript for things like H2O

21 | 22 |

This small text is small for for fine print, etc.

23 | 24 |

Abbreviation: HTML

25 | 26 |

Keybord input: Cmd

27 | 28 |

This text is a short inline quotation

29 | 30 |

This is a citation 31 | 32 |

The dfn element indicates a definition.

33 | 34 |

The mark element indicates a highlight

35 | 36 |

This is what inline code looks like.

37 | 38 |

This is sample output from a computer program

39 | 40 |

The variarble element, such as x = y

41 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/04-time.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/02-text/06-hr.twig: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/03-lists/00-unordered.twig: -------------------------------------------------------------------------------- 1 |
2 |
    3 |
  • This is a list item in an unordered list
  • 4 |
  • An unordered list is a list in which the sequence of items is not important. Sometimes, an unordered list is a bulleted list. And this is a long list item in an unordered list that can wrap onto a new line.
  • 5 |
  • 6 | Lists can be nested inside of each other 7 |
      8 |
    • This is a nested list item
    • 9 |
    • This is another nested list item in an unordered list
    • 10 |
    11 |
  • 12 |
  • This is the last list item
  • 13 |
14 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/03-lists/01-ordered.twig: -------------------------------------------------------------------------------- 1 |
2 |
    3 |
  1. This is a list item in an ordered list
  2. 4 |
  3. An ordered list is a list in which the sequence of items is important. An ordered list does not necessarily contain sequence characters.
  4. 5 |
  5. 6 | Lists can be nested inside of each other 7 |
      8 |
    1. This is a nested list item
    2. 9 |
    3. This is another nested list item in an ordered list
    4. 10 |
    11 |
  6. 12 |
  7. This is the last list item
  8. 13 |
14 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/03-lists/02-definition.twig: -------------------------------------------------------------------------------- 1 |
2 |
Definition List
3 |
A number of connected items or names written or printed consecutively, typically one below the other.
4 |
This is a term.
5 |
This is the definition of that term, which both live in a dl.
6 |
Here is another term.
7 |
And it gets a definition too, which is this line.
8 |
Here is term that shares a definition with the term below.
9 |
And it gets a definition too, which is this line.
10 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/00-logo.twig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/01-landscape-4x3.twig: -------------------------------------------------------------------------------- 1 | {{ img.landscape_4x3.alt }} -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/02-landscape-16x9.twig: -------------------------------------------------------------------------------- 1 | {{ img.landscape_16x9.alt }} -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/03-square.twig: -------------------------------------------------------------------------------- 1 | {{ img.square.alt }} -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/04-avatar.twig: -------------------------------------------------------------------------------- 1 | Avatar -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/06-loading-icon.twig: -------------------------------------------------------------------------------- 1 | Loading -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/04-images/07-favicon.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/05-forms/00-text-fields.twig: -------------------------------------------------------------------------------- 1 | {% import "forms.twig" as forms %} 2 |
3 | {{ forms.input('Text Input') }} 4 | {{ forms.input('Password', 'password') }} 5 | {{ forms.input('Web Address', 'url') }} 6 | {{ forms.input('Email', 'email') }} 7 | {{ forms.input('Search', 'search') }} 8 | {{ forms.input('Number', 'number') }} 9 | {{ forms.input('Number', 'number') }} 10 | {{ forms.textarea('Textarea', 'Enter your message here') }} 11 | {{ forms.input('Error Input', 'text', 'error') }} 12 | {{ forms.input('Valid Input', 'text', 'valid') }} 13 |
14 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/05-forms/01-select-menu.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 11 |
12 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/05-forms/02-checkbox.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 | Checkbox * 4 |
    5 |
  • 6 |
  • 7 |
  • 8 |
9 |
10 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/05-forms/03-radio-buttons.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 | Radio 4 |
    5 |
  • 6 |
  • 7 |
  • 8 |
9 |
10 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/05-forms/04-html5-inputs.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
-------------------------------------------------------------------------------- /pattern-lab/source/_patterns/00-atoms/06-buttons/00-buttons.twig: -------------------------------------------------------------------------------- 1 |

Button

2 |

Alternate Button

3 |

Disabled Button

4 |

Text Button

5 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-molecules/blocks/branding.twig: -------------------------------------------------------------------------------- 1 | 20 | 21 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-molecules/blocks/branding.yaml: -------------------------------------------------------------------------------- 1 | site_logo: ../../../../logo.svg 2 | site_title: Site Title 3 | site_slogan: Site Slogan 4 | -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/filters/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/filters/clean_class.filter.php: -------------------------------------------------------------------------------- 1 | ' . $title . ''; 9 | } else { 10 | return '' . $title . ''; 11 | } 12 | }, 13 | array('is_safe' => array('html')) 14 | ); 15 | -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/functions/path.function.php: -------------------------------------------------------------------------------- 1 | ') { 5 | return '/'; 6 | } else { 7 | return $string; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/tags/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/tags/trans.tag.php: -------------------------------------------------------------------------------- 1 | $count, 18 | 'body' => $body, 19 | 'plural' => $plural, 20 | 'options' => $options, 21 | ), array(), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * {@inheritdoc} 26 | */ 27 | public function compile(\Twig_Compiler $compiler) { 28 | $compiler->addDebugInfo($this); 29 | 30 | $options = $this->getNode('options'); 31 | 32 | list($singular, $tokens) = $this->compileString($this->getNode('body')); 33 | 34 | $compiler->write('echo '); 35 | 36 | // Write the singular text parameter. 37 | $compiler->subcompile($singular); 38 | 39 | // End writing. 40 | $compiler->raw(";\n"); 41 | } 42 | 43 | /** 44 | * Extracts the text and tokens for the "trans" tag. 45 | * 46 | * @param \Twig_Node $body 47 | * The node to compile. 48 | * 49 | * @return array 50 | * Returns an array containing the two following parameters: 51 | * - string $text 52 | * The extracted text. 53 | * - array $tokens 54 | * The extracted tokens as new \Twig_Node_Expression_Name instances. 55 | */ 56 | protected function compileString(\Twig_Node $body) { 57 | if ($body instanceof \Twig_Node_Expression_Name || $body instanceof \Twig_Node_Expression_Constant || $body instanceof \Twig_Node_Expression_TempName) { 58 | return array($body, array()); 59 | } 60 | 61 | $tokens = array(); 62 | if (count($body)) { 63 | $text = ''; 64 | 65 | foreach ($body as $node) { 66 | if (get_class($node) === 'Twig_Node' && $node->getNode(0) instanceof \Twig_Node_SetTemp) { 67 | $node = $node->getNode(1); 68 | } 69 | 70 | if ($node instanceof \Twig_Node_Print) { 71 | $n = $node->getNode('expr'); 72 | while ($n instanceof \Twig_Node_Expression_Filter) { 73 | $n = $n->getNode('node'); 74 | } 75 | 76 | $args = $n; 77 | 78 | // Support TwigExtension->renderVar() function in chain. 79 | if ($args instanceof \Twig_Node_Expression_Function) { 80 | $args = $n->getNode('arguments')->getNode(0); 81 | } 82 | 83 | // Detect if a token implements one of the filters reserved for 84 | // modifying the prefix of a token. The default prefix used for 85 | // translations is "@". This escapes the printed token and makes them 86 | // safe for templates. 87 | // @see TwigExtension::getFilters() 88 | $argPrefix = '@'; 89 | while ($args instanceof \Twig_Node_Expression_Filter) { 90 | switch ($args->getNode('filter')->getAttribute('value')) { 91 | case 'placeholder': 92 | $argPrefix = '%'; 93 | break; 94 | } 95 | $args = $args->getNode('node'); 96 | } 97 | if ($args instanceof \Twig_Node_Expression_GetAttr) { 98 | $argName = array(); 99 | // Reuse the incoming expression. 100 | $expr = $args; 101 | // Assemble a valid argument name by walking through the expression. 102 | $argName[] = $args->getNode('attribute')->getAttribute('value'); 103 | while ($args->hasNode('node')) { 104 | $args = $args->getNode('node'); 105 | if ($args instanceof \Twig_Node_Expression_Name) { 106 | $argName[] = $args->getAttribute('name'); 107 | } 108 | else { 109 | $argName[] = $args->getNode('attribute')->getAttribute('value'); 110 | } 111 | } 112 | $argName = array_reverse($argName); 113 | $argName = implode('.', $argName); 114 | } 115 | else { 116 | $argName = $n->getAttribute('name'); 117 | if (!is_null($args)) { 118 | $argName = $args->getAttribute('name'); 119 | } 120 | $expr = new \Twig_Node_Expression_Name($argName, $n->getLine()); 121 | } 122 | $placeholder = sprintf('%s%s', $argPrefix, $argName); 123 | $text .= $placeholder; 124 | $expr->setAttribute('placeholder', $placeholder); 125 | $tokens[] = $expr; 126 | } 127 | else { 128 | $text .= $node->getAttribute('data'); 129 | } 130 | } 131 | } 132 | else { 133 | $text = $body->getAttribute('data'); 134 | } 135 | 136 | return array(new \Twig_Node(array(new \Twig_Node_Expression_Constant(trim($text), $body->getLine()))), $tokens); 137 | } 138 | 139 | } 140 | 141 | } 142 | 143 | // these files are loaded three times and we can't re-set a class 144 | if (!class_exists("Project_trans_TokenParser")) { 145 | 146 | class Project_trans_TokenParser extends Twig_TokenParser { 147 | 148 | /** 149 | * {@inheritdoc} 150 | */ 151 | public function parse(Twig_Token $token) { 152 | $lineno = $token->getLine(); 153 | $stream = $this->parser->getStream(); 154 | $body = NULL; 155 | $options = NULL; 156 | $count = NULL; 157 | $plural = NULL; 158 | 159 | if (!$stream->test(\Twig_Token::BLOCK_END_TYPE) && $stream->test(\Twig_Token::STRING_TYPE)) { 160 | $body = $this->parser->getExpressionParser()->parseExpression(); 161 | } 162 | if (!$stream->test(\Twig_Token::BLOCK_END_TYPE) && $stream->test(\Twig_Token::NAME_TYPE, 'with')) { 163 | $stream->next(); 164 | $options = $this->parser->getExpressionParser()->parseExpression(); 165 | } 166 | if (!$body) { 167 | $stream->expect(\Twig_Token::BLOCK_END_TYPE); 168 | $body = $this->parser->subparse(array($this, 'decideForFork')); 169 | if ('plural' === $stream->next()->getValue()) { 170 | $count = $this->parser->getExpressionParser()->parseExpression(); 171 | $stream->expect(\Twig_Token::BLOCK_END_TYPE); 172 | $plural = $this->parser->subparse(array($this, 'decideForEnd'), TRUE); 173 | } 174 | } 175 | 176 | $stream->expect(\Twig_Token::BLOCK_END_TYPE); 177 | 178 | $this->checkTransString($body, $lineno); 179 | 180 | $node = new Project_trans_Node($body, $plural, $count, $options, $lineno, $this->getTag()); 181 | 182 | return $node; 183 | } 184 | 185 | /** 186 | * Detect a 'plural' switch or the end of a 'trans' tag. 187 | */ 188 | public function decideForFork($token) { 189 | return $token->test(array('plural', 'endtrans')); 190 | } 191 | 192 | /** 193 | * Detect the end of a 'trans' tag. 194 | */ 195 | public function decideForEnd($token) { 196 | return $token->test('endtrans'); 197 | } 198 | 199 | /** 200 | * {@inheritdoc} 201 | */ 202 | public function getTag() { 203 | return 'trans'; 204 | } 205 | 206 | /** 207 | * Ensure that any nodes that are parsed are only of allowed types. 208 | * 209 | * @param \Twig_Node $body 210 | * The expression to check. 211 | * @param integer $lineno 212 | * The source line. 213 | * 214 | * @throws \Twig_Error_Syntax 215 | */ 216 | protected function checkTransString(\Twig_Node $body, $lineno) { 217 | foreach ($body as $node) { 218 | if ( 219 | $node instanceof \Twig_Node_Text 220 | || 221 | ($node instanceof \Twig_Node_Print && $node->getNode('expr') instanceof \Twig_Node_Expression_Name) 222 | || 223 | ($node instanceof \Twig_Node_Print && $node->getNode('expr') instanceof \Twig_Node_Expression_GetAttr) 224 | || 225 | ($node instanceof \Twig_Node_Print && $node->getNode('expr') instanceof \Twig_Node_Expression_Filter) 226 | ) { 227 | continue; 228 | } 229 | throw new \Twig_Error_Syntax(sprintf('The text to be translated with "trans" can only contain references to simple variables'), $lineno); 230 | } 231 | } 232 | 233 | } 234 | 235 | } 236 | -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/tests/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phase2/pattern-lab-drupal-theme/db0b91ae19a56aae74571e53cca7d668b469a5c2/pattern-lab/source/favicon.ico -------------------------------------------------------------------------------- /patternlab.info.yml: -------------------------------------------------------------------------------- 1 | name: patternlab 2 | description: A Drupal theme whose Twig templates are integrated with Pattern Lab. 3 | type: theme 4 | screenshot: screenshot.png 5 | base theme: classy 6 | core: 8.x 7 | # Defines libraries group in which we can add css/js. 8 | libraries: 9 | - patternlab/global-styling 10 | # Regions 11 | regions: 12 | header: Header 13 | featured: Featured 14 | content: Content 15 | sidebar_first: First sidebar 16 | sidebar_second: Second sidebar 17 | footer: Footer 18 | 19 | # For compatibility with Pattern Lab templates; this list must 20 | # always be the folders immediately under the `$sourceDir` patterns folder 21 | # `$sourceDir` = defined in `pattern-lab/config/config.yml` under `sourceDir 22 | # patterns folder = `$sourceDir` + `_patterns/` 23 | component-libraries: 24 | atoms: 25 | paths: 26 | - pattern-lab/source/_patterns/00-atoms 27 | molecules: 28 | paths: 29 | - pattern-lab/source/_patterns/01-molecules 30 | organisms: 31 | paths: 32 | - pattern-lab/source/_patterns/02-organisms 33 | templates: 34 | paths: 35 | - pattern-lab/source/_patterns/03-templates 36 | pages: 37 | paths: 38 | - pattern-lab/source/_patterns/04-pages 39 | -------------------------------------------------------------------------------- /patternlab.libraries.yml: -------------------------------------------------------------------------------- 1 | global-styling: 2 | css: 3 | theme: 4 | dist/style.css: {} 5 | js: 6 | dist/all.min.js: {} 7 | dependencies: 8 | - core/jquery 9 | -------------------------------------------------------------------------------- /patternlab.theme: -------------------------------------------------------------------------------- 1 | .menu { 4 | @include clearfix(); 5 | ul { 6 | margin-left: $spacing; 7 | } 8 | >li { 9 | @include breakpoint($bp--medium-up) { 10 | float: left; 11 | margin-left: ($spacing / 2); 12 | &:first-child { 13 | margin-left: 0; 14 | } 15 | ul { 16 | display: none; 17 | } 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /scss/40-components/_search-form.scss: -------------------------------------------------------------------------------- 1 | .search-form { 2 | fieldset { 3 | border: none; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /scss/50-templates/_grid.scss: -------------------------------------------------------------------------------- 1 | .g-2up { 2 | .gi { 3 | @include breakpoint($bp--small-up) { 4 | &:nth-child(2n+1) { 5 | @include grid-span(6, 1); 6 | clear: both; 7 | } 8 | &:nth-child(2n+2) { 9 | @include grid-span(6, 7); 10 | } 11 | } 12 | } 13 | } 14 | 15 | .g-3up { 16 | .gi { 17 | @include breakpoint($bp--small-up) { 18 | &:nth-child(3n+1) { 19 | @include grid-span(4, 1); 20 | clear: both; 21 | } 22 | &:nth-child(3n+2) { 23 | @include grid-span(4, 5); 24 | } 25 | &:nth-child(3n+3) { 26 | @include grid-span(4, 9); 27 | } 28 | } 29 | } 30 | } 31 | 32 | .g-4up { 33 | .gi { 34 | @include breakpoint($bp--small-up) { 35 | &:nth-child(4n+1) { 36 | @include grid-span(3, 1); 37 | clear: both; 38 | } 39 | &:nth-child(4n+2) { 40 | @include grid-span(3, 4); 41 | } 42 | &:nth-child(4n+3) { 43 | @include grid-span(3, 7); 44 | } 45 | &:nth-child(4n+4) { 46 | @include grid-span(3, 10); 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /scss/50-templates/_layout--content.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phase2/pattern-lab-drupal-theme/db0b91ae19a56aae74571e53cca7d668b469a5c2/scss/50-templates/_layout--content.scss -------------------------------------------------------------------------------- /scss/50-templates/_layout--frontpage.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phase2/pattern-lab-drupal-theme/db0b91ae19a56aae74571e53cca7d668b469a5c2/scss/50-templates/_layout--frontpage.scss -------------------------------------------------------------------------------- /scss/60-pages/_about-us-overrides.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phase2/pattern-lab-drupal-theme/db0b91ae19a56aae74571e53cca7d668b469a5c2/scss/60-pages/_about-us-overrides.scss -------------------------------------------------------------------------------- /scss/60-pages/_styleguide-specific.scss: -------------------------------------------------------------------------------- 1 | /*------------------------------------*\ 2 | $PATTERN LAB-SPECIFIC STYLES 3 | \*------------------------------------*/ 4 | /** 5 | * This stylesheet is for styles you want to include only when the interface is being viewed within Pattern Lab. 6 | * This is helpful for displaying demo styles for grids, animations, color swatches, etc 7 | * It's also helpful for overriding context-specific styles like fixed or absolutely positioned elements 8 | * These styles will not be your production CSS. 9 | */ 10 | 11 | pre { 12 | margin-top: 0; 13 | } 14 | 15 | // Style Guide color swatches 16 | .sg-colors { 17 | overflow: hidden; 18 | margin: 5px; 19 | padding: 0; 20 | > li { 21 | overflow: hidden; 22 | border: 1px solid #ccc; 23 | padding: 0.3em; 24 | margin: 0 0 10px; 25 | box-sizing: border-box; 26 | font-size: 12px; 27 | .sg-swatch { 28 | display: block; 29 | height: 25px; 30 | //float: left; 31 | //width: 100%; 32 | outline: dotted 1px hsl(0, 0%, 50%); 33 | } 34 | .sg-info { 35 | line-height: 1; 36 | //float: right; 37 | //width: 66%; 38 | } 39 | @media all and (min-width: 400px) { 40 | float: left; 41 | width: 49%; 42 | margin-right: 1%; 43 | .sg-swatch { 44 | //height: 100px; 45 | } 46 | } 47 | @media all and (min-width: 700px) { 48 | width: 24%; 49 | &:nth-child(4n+1) { 50 | clear: both; 51 | } 52 | } 53 | } 54 | } 55 | 56 | .sg-breakpoints { 57 | ul { 58 | margin: 0; 59 | padding: 0; 60 | } 61 | li { 62 | list-style-type: none; 63 | margin: 0; 64 | padding: 0; 65 | } 66 | .breakpoints { 67 | > li { 68 | position: absolute; 69 | border-left: solid 3px hsl(0, 0%, 35%); 70 | height: 100%; 71 | // > .icon--arrow--right-medium { 72 | // font-size: 18px; 73 | // margin-top: 100px; 74 | // } 75 | > .label { 76 | // @include transform(rotate(90deg)); 77 | // @include transform-origin(bottom left); 78 | display: block; 79 | // position: absolute; 80 | // bottom: 20px; 81 | background: hsl(0, 0%, 35%); 82 | padding: 3px; 83 | color: white; 84 | } 85 | &:hover { 86 | border-left-color: hsla(0, 0%, 35%, 0.3); 87 | // scss-lint:disable NestingDepth 88 | > .label { 89 | opacity: 0; 90 | } 91 | // scss-lint:enable NestingDepth 92 | } 93 | } 94 | } 95 | .device_widths { 96 | padding-top: 20px; 97 | > li { 98 | border-bottom: solid 3px hsl(0, 0%, 80%); 99 | text-align: right; 100 | margin-bottom: 15px; 101 | padding-right: 15px; 102 | border-right: solid 3px hsl(0, 0%, 80%); 103 | } 104 | } 105 | } 106 | 107 | .sg-font-sizes { 108 | thead { 109 | font-weight: bold; 110 | text-transform: uppercase; 111 | border-bottom: 2px solid black; 112 | } 113 | th, 114 | td { 115 | text-align: left; 116 | white-space: nowrap; 117 | line-height: 1.5em; 118 | &:first-child { 119 | padding-right: 12px; 120 | } 121 | } 122 | } 123 | 124 | .demo__block { 125 | height: 200px; 126 | background-color: rgba($color--gray, 0.5); 127 | } 128 | 129 | // Icons 130 | .icons-container { 131 | max-width: 1140px; 132 | margin: 0 auto; 133 | padding: 25px; 134 | } 135 | .icons-demo { 136 | margin-bottom: 40px; 137 | @media all and (min-width: 600px) { 138 | column-count: 3; 139 | column-gap: 20px; 140 | } 141 | @media all and (min-width: 800px) { 142 | column-count: 5; 143 | } 144 | } 145 | .icons__item, 146 | .icons__item i { 147 | line-height: 2em; 148 | cursor: pointer; 149 | overflow: hidden; 150 | } 151 | .icons__item:hover { 152 | color: #3c90be; 153 | } 154 | .icons__item i { 155 | display: inline-block; 156 | width: 32px; 157 | text-align: center; 158 | &:hover i { 159 | transform: scale(1.5); 160 | } 161 | } 162 | .icons-demo__footer { 163 | margin-top: 40px; 164 | font-size: 14px; 165 | color: #999; 166 | } 167 | //.demo-random-icon { 168 | // @include icon("facebook"); 169 | //} 170 | //.demo-text-replace-icon { 171 | // @include icon("twitter", $text-replace: true); 172 | // height: 16px; 173 | // width: 16px; 174 | //} 175 | 176 | .demo .g .gi { 177 | text-align: center; 178 | outline: dotted 1px #ccc; 179 | } 180 | -------------------------------------------------------------------------------- /scss/style.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Stylesheet: Main Stylesheet 3 | * 4 | */ 5 | 6 | // Start libs 7 | 8 | @import "normalize.scss/normalize.scss"; 9 | 10 | // Grid system, https://github.com/at-import/Singularity 11 | @import "singularitygs/stylesheets/singularitygs"; 12 | 13 | // A cleaner way to do breakpoints/media queries, http://breakpoint-sass.com/ 14 | @import "breakpoint-sass/stylesheets/breakpoint"; 15 | 16 | // Helpful mixins, http://bourbon.io/docs/ 17 | @import "bourbon/app/assets/stylesheets/bourbon"; 18 | 19 | // End libs 20 | 21 | @import "**/*.scss"; 22 | -------------------------------------------------------------------------------- /templates/block--system-branding-block.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "block.html.twig" %} 2 | {# 3 | /** 4 | * @file 5 | * Theme override for a branding block. 6 | * 7 | * Each branding element variable (logo, name, slogan) is only available if 8 | * enabled in the block configuration. 9 | * 10 | * Available variables: 11 | * - site_logo: Logo for site as defined in Appearance or theme settings. 12 | * - site_name: Name for site as defined in Site information settings. 13 | * - site_slogan: Slogan for site as defined in Site information settings. 14 | */ 15 | #} 16 | 17 | {% block content %} 18 | {% include "@molecules/blocks/branding.twig" 19 | with { 20 | "url": path(''), 21 | "site_title": site_name, 22 | "site_logo": site_logo, 23 | "site_slogan": site_slogan 24 | } 25 | %} 26 | {% endblock %} 27 | --------------------------------------------------------------------------------