├── pattern-lab ├── config │ ├── listeners.json │ ├── patternengines.json │ ├── .gitkeep │ └── config.yml ├── source │ ├── _annotations │ │ └── annotations.js │ ├── _layouts │ │ └── .gitkeep │ ├── _macros │ │ └── .gitkeep │ ├── _twig-components │ │ ├── tags │ │ │ └── .gitkeep │ │ ├── tests │ │ │ └── .gitkeep │ │ ├── filters │ │ │ └── .gitkeep │ │ └── functions │ │ │ └── .gitkeep │ ├── _patterns │ │ └── 01-atoms │ │ │ ├── 01-intro │ │ │ └── 00-intro.twig │ │ │ └── 02-buttons │ │ │ ├── button-default.twig │ │ │ ├── button-primary.twig │ │ │ ├── _button.twig │ │ │ └── _button.scss │ ├── _data │ │ └── data.json │ ├── _meta │ │ ├── _01-foot.twig │ │ └── _00-head.twig │ └── pattern-scaffolding.css ├── core │ ├── server │ │ └── router.php │ ├── console │ └── src │ │ └── PatternLab │ │ └── Installer.php ├── composer.json └── composer.lock ├── scss └── simple_theme.scss ├── .gitignore ├── simple_theme.libraries.yml ├── .editorconfig ├── simple_theme.info.yml ├── templates └── some-random-drupal-template-file.html.twig ├── package.json ├── readme.md └── gulpfile.js /pattern-lab/config/listeners.json: -------------------------------------------------------------------------------- 1 | { "listeners": [ ] } -------------------------------------------------------------------------------- /pattern-lab/source/_annotations/annotations.js: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /pattern-lab/source/_layouts/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_macros/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/tags/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/tests/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /scss/simple_theme.scss: -------------------------------------------------------------------------------- 1 | @import "../pattern-lab/source/**/*.scss"; 2 | -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/filters/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /pattern-lab/source/_twig-components/functions/.gitkeep: -------------------------------------------------------------------------------- 1 | keeping this directory -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | pattern-lab/vendor 3 | pattern-lab/public 4 | dist 5 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-atoms/01-intro/00-intro.twig: -------------------------------------------------------------------------------- 1 |

Welcome!

2 | -------------------------------------------------------------------------------- /pattern-lab/source/_data/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "text": "Lorem ipsum dolor sit amet" 3 | } 4 | -------------------------------------------------------------------------------- /pattern-lab/config/patternengines.json: -------------------------------------------------------------------------------- 1 | {"patternengines":["\\PatternLab\\PatternEngine\\Twig\\PatternEngineRule"]} -------------------------------------------------------------------------------- /pattern-lab/config/.gitkeep: -------------------------------------------------------------------------------- 1 | After you generate Pattern Lab for the first time your configuration file will be placed here. -------------------------------------------------------------------------------- /simple_theme.libraries.yml: -------------------------------------------------------------------------------- 1 | core: 2 | css: 3 | theme: 4 | dist/simple_theme.css: 5 | preprocess: true 6 | -------------------------------------------------------------------------------- /pattern-lab/source/_meta/_01-foot.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ patternLabFoot | raw }} 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-atoms/02-buttons/button-default.twig: -------------------------------------------------------------------------------- 1 | {% include '@atoms/02-buttons/_button.twig' with { 2 | text: 'Default Button', 3 | } %} 4 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-atoms/02-buttons/button-primary.twig: -------------------------------------------------------------------------------- 1 | {% include '@atoms/02-buttons/_button.twig' with { 2 | primary: true, 3 | text: 'Primary Button', 4 | } %} 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Unix-style newlines with a newline ending every file 2 | [*] 3 | indent_style = space 4 | indent_size = 2 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-atoms/02-buttons/_button.twig: -------------------------------------------------------------------------------- 1 | {% set classes = [ 2 | 'button', 3 | primary ? 'button--primary', 4 | ] %} 5 | 6 | {{ text }} 7 | -------------------------------------------------------------------------------- /simple_theme.info.yml: -------------------------------------------------------------------------------- 1 | name: simple_theme 2 | type: theme 3 | description: A theme 4 | base theme: stable 5 | core: 8.x 6 | libraries: 7 | - simple_theme/core 8 | regions: 9 | content: Content 10 | component-libraries: 11 | atoms: 12 | paths: 13 | - pattern-lab/source/_patterns/01-atoms 14 | -------------------------------------------------------------------------------- /templates/some-random-drupal-template-file.html.twig: -------------------------------------------------------------------------------- 1 | {# Including from `pattern-lab/source/_patterns/01-atoms/02-buttons/_button.twig` #} 2 | {# `@atoms` is configured in `simple_theme.info.yml` #} 3 | {% include '@atoms/02-buttons/_button.twig' with { 4 | primary: true, 5 | text: content.field_primary_button.value, 6 | } %} 7 | -------------------------------------------------------------------------------- /pattern-lab/source/_patterns/01-atoms/02-buttons/_button.scss: -------------------------------------------------------------------------------- 1 | .button { 2 | border: solid 1px hsl(0, 0%, 80%); 3 | padding: 5px 10px; 4 | display: inline-block; 5 | color: black; 6 | text-decoration: none; 7 | border-radius: 3px; 8 | &:hover { 9 | text-decoration: underline; 10 | } 11 | &--primary { 12 | color: white; 13 | background: hsl(194, 82%, 32%); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple_theme", 3 | "description": "simple_theme theme", 4 | "version": "0.1.0", 5 | "private": true, 6 | "scripts": { 7 | "start": "gulp", 8 | "compile": "NODE_ENV=production gulp compile", 9 | "test": "gulp validate", 10 | "postinstall": "cd pattern-lab && composer install --no-interaction" 11 | }, 12 | "dependencies": { 13 | "@theme-tools/plugin-browser-sync": "^0.4.0", 14 | "@theme-tools/plugin-pattern-lab-php": "^0.4.2", 15 | "@theme-tools/plugin-sass": "^0.4.0", 16 | "gulp": "github:gulpjs/gulp#4.0" 17 | }, 18 | "devDependencies": {} 19 | } 20 | -------------------------------------------------------------------------------- /pattern-lab/source/_meta/_00-head.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ title }} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {{ patternLabHead | raw }} 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Simple Theme for Drupal with Pattern Lab 2 | 3 | ## Prerequisites 4 | 5 | - Node v6+ 6 | - Php v5.4+ 7 | - `composer` installed 8 | 9 | ## Setup 10 | 11 | ```bash 12 | npm install 13 | ``` 14 | 15 | Please ensure the Drupal module [Component Libraries](http://drupal.org/project/components) is installed. 16 | 17 | ## Commands 18 | 19 | Compile everything, kick off file watches, and then a local server: 20 | 21 | ```bash 22 | npm start 23 | ``` 24 | 25 | Compile everything: 26 | 27 | ```bash 28 | npm run compile 29 | ``` 30 | 31 | Test everything: 32 | 33 | ```bash 34 | npm test 35 | ``` 36 | 37 | *Note: tests must be enabled, and most are off by default* 38 | 39 | ## Orientation 40 | 41 | - `pattern-lab/` 42 | - `source/` 43 | - `_patterns/` - Everything shown in Pattern Lab: contains Atoms, Molecules, etc folders. 44 | - `_data/` - Global data available to Pattern Lab 45 | - `templates/` - Drupal template files that can include stuff from the above `_patterns/` folder 46 | 47 | -------------------------------------------------------------------------------- /pattern-lab/core/server/router.php: -------------------------------------------------------------------------------- 1 | dispatch("config.configLoadEnd"); 44 | 45 | // run the console 46 | Console::run(); 47 | -------------------------------------------------------------------------------- /pattern-lab/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "drupal-pattern-lab/simple_theme", 3 | "description": "A simple Drupal theme with Pattern Lab", 4 | "keywords": ["pattern lab", "drupal"], 5 | "homepage": "http://drupal-pattern-lab.github.io", 6 | "license": "MIT", 7 | "type": "project", 8 | "authors": [ 9 | { 10 | "name": "Evan Lovely", 11 | "homepage": "http://evanlovely.com" 12 | } 13 | ], 14 | "autoload": { 15 | "psr-0": { 16 | "PatternLab": "core/src/" 17 | } 18 | }, 19 | "require": { 20 | "php": ">=5.4", 21 | "pattern-lab/core": "^2.0.0", 22 | "pattern-lab/patternengine-twig": "^2.0.0", 23 | "pattern-lab/styleguidekit-assets-default": "^3.0.0", 24 | "pattern-lab/styleguidekit-twig-default": "^3.0.0" 25 | }, 26 | "scripts": { 27 | "post-install-cmd": [ 28 | "PatternLab\\Installer::postInstallCmd" 29 | ], 30 | "post-update-cmd": [ 31 | "PatternLab\\Installer::postUpdateCmd" 32 | ], 33 | "post-root-package-install": [ 34 | "PatternLab\\Installer::setProjectInstall", 35 | "PatternLab\\Installer::getSuggestedStarterKits", 36 | "PatternLab\\Installer::getConfigOverrides" 37 | ], 38 | "post-package-install": [ 39 | "PatternLab\\Installer::postPackageInstall" 40 | ], 41 | "post-package-update": [ 42 | "PatternLab\\Installer::postPackageUpdate" 43 | ], 44 | "pre-package-uninstall": [ 45 | "PatternLab\\Installer::prePackageUninstall" 46 | ] 47 | }, 48 | "extra": { 49 | "patternlab": { 50 | "starterKitSuggestions": [], 51 | "config": { 52 | "overrideConfig": false 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /pattern-lab/core/src/PatternLab/Installer.php: -------------------------------------------------------------------------------- 1 | false, "packagesRemove" => false, "suggestedStarterKits" => array(), "configOverrides" => array(), "patternLabPackages" => array()); 22 | 23 | /** 24 | * Get any config overrides that may exist for the edition 25 | * @param {Object} a script event object from composer 26 | */ 27 | public static function getConfigOverrides(Event $event) { 28 | 29 | $extra = $event->getComposer()->getPackage()->getExtra(); 30 | if (isset($extra["patternlab"]) && isset($extra["patternlab"]["config"]) && is_array($extra["patternlab"]["config"])) { 31 | self::$installerInfo["configOverrides"] = $extra["patternlab"]["config"]; 32 | } 33 | 34 | } 35 | 36 | /** 37 | * Get the package info from each patternlab-* package's composer.json 38 | * @param {String} the type of event fired during the composer install 39 | * @param {Object} a script event object from composer 40 | */ 41 | public static function getPackageInfo($type, $event) { 42 | 43 | $package = ($type == "update") ? $event->getOperation()->getTargetPackage() : $event->getOperation()->getPackage(); 44 | $packageType = $package->getType(); 45 | $packageExtra = $package->getExtra(); 46 | $packageInfo = array(); 47 | 48 | // make sure we're only evaluating pattern lab packages 49 | if (strpos($packageType,"patternlab-") !== false) { 50 | 51 | $packageInfo["name"] = $package->getName(); 52 | $packageInfo["type"] = $packageType; 53 | $packageInfo["pathBase"] = $event->getComposer()->getInstallationManager()->getInstallPath($package); 54 | $packageInfo["pathDist"] = $packageInfo["pathBase"].DIRECTORY_SEPARATOR."dist".DIRECTORY_SEPARATOR; 55 | $packageInfo["extra"] = (isset($packageExtra["patternlab"])) ? $packageExtra["patternlab"] : array(); 56 | 57 | self::$installerInfo["packages"][] = $packageInfo; 58 | 59 | } 60 | 61 | } 62 | 63 | /** 64 | * Get the suggested starter kits from the root package composer.json 65 | * @param {Object} a script event object from composer 66 | */ 67 | public static function getSuggestedStarterKits(Event $event) { 68 | 69 | $extra = $event->getComposer()->getPackage()->getExtra(); 70 | if (isset($extra["patternlab"]) && isset($extra["patternlab"]["starterKitSuggestions"]) && is_array($extra["patternlab"]["starterKitSuggestions"])) { 71 | self::$installerInfo["suggestedStarterKits"] = $extra["patternlab"]["starterKitSuggestions"]; 72 | } 73 | 74 | } 75 | 76 | /** 77 | * Run the centralized postInstallCmd 78 | * @param {Object} a script event object from composer 79 | */ 80 | public static function postInstallCmd(Event $event) { 81 | 82 | InstallerUtil::postInstallCmd(self::$installerInfo, $event); 83 | 84 | } 85 | 86 | /** 87 | * Run the centralized postUpdateCmd 88 | * @param {Object} a script event object from composer 89 | */ 90 | public static function postUpdateCmd(Event $event) { 91 | 92 | InstallerUtil::postUpdateCmd(self::$installerInfo, $event); 93 | 94 | } 95 | 96 | /** 97 | * Clean-up when a package is removed 98 | * @param {Object} a script event object from composer 99 | */ 100 | public static function postPackageInstall(PackageEvent $event) { 101 | 102 | self::getPackageInfo("install", $event); 103 | 104 | } 105 | 106 | /** 107 | * Clean-up when a package is removed 108 | * @param {Object} a script event object from composer 109 | */ 110 | public static function postPackageUpdate(PackageEvent $event) { 111 | 112 | self::getPackageInfo("update", $event); 113 | 114 | } 115 | 116 | /** 117 | * Clean-up when a package is removed 118 | * @param {Object} a script event object from composer 119 | */ 120 | public static function prePackageUninstall(PackageEvent $event) { 121 | 122 | // make sure the postUpdateCmd doesnt actually do anything 123 | self::setPackagesRemove(); 124 | 125 | // get the basic package info 126 | $package = $event->getOperation()->getPackage(); 127 | $packageType = $package->getType(); 128 | $packageInfo = array(); 129 | 130 | // make sure we're only evaluating pattern lab packages. remove attributes related to them. 131 | if (strpos($packageType,"patternlab-") !== false) { 132 | 133 | $packageInfo["name"] = $package->getName(); 134 | $packageInfo["type"] = $packageType; 135 | $packageInfo["pathBase"] = $event->getComposer()->getInstallationManager()->getInstallPath($package); 136 | 137 | InstallerUtil::packageRemove($packageInfo); 138 | 139 | } 140 | 141 | } 142 | 143 | /** 144 | * Set the packages remove boolean to true 145 | */ 146 | public static function setPackagesRemove() { 147 | 148 | self::$installerInfo["packagesRemove"] = true; 149 | 150 | } 151 | 152 | /** 153 | * Set the project install boolean to true 154 | * @param {Object} a script event object from composer 155 | */ 156 | public static function setProjectInstall(Event $event) { 157 | 158 | self::$installerInfo["projectInstall"] = true; 159 | 160 | } 161 | 162 | } 163 | -------------------------------------------------------------------------------- /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 | "content-hash": "ea253157e42a037e6002b6d27bd17c75", 8 | "packages": [ 9 | { 10 | "name": "alchemy/zippy", 11 | "version": "0.3.5", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/alchemy-fr/Zippy.git", 15 | "reference": "92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/alchemy-fr/Zippy/zipball/92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a", 20 | "reference": "92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "doctrine/collections": "~1.0", 25 | "ext-mbstring": "*", 26 | "php": ">=5.3.3", 27 | "symfony/filesystem": "^2.0.5|^3.0", 28 | "symfony/process": "^2.1|^3.0" 29 | }, 30 | "require-dev": { 31 | "ext-zip": "*", 32 | "guzzle/guzzle": "~3.0", 33 | "phpunit/phpunit": "^4.0|^5.0", 34 | "symfony/finder": "^2.0.5|^3.0" 35 | }, 36 | "suggest": { 37 | "ext-zip": "To use the ZipExtensionAdapter", 38 | "guzzle/guzzle": "To use the GuzzleTeleporter" 39 | }, 40 | "type": "library", 41 | "extra": { 42 | "branch-alias": { 43 | "dev-master": "0.2.x-dev" 44 | } 45 | }, 46 | "autoload": { 47 | "psr-4": { 48 | "Alchemy\\Zippy\\": "src/" 49 | } 50 | }, 51 | "notification-url": "https://packagist.org/downloads/", 52 | "license": [ 53 | "MIT" 54 | ], 55 | "authors": [ 56 | { 57 | "name": "Alchemy", 58 | "email": "dev.team@alchemy.fr", 59 | "homepage": "http://www.alchemy.fr/" 60 | } 61 | ], 62 | "description": "Zippy, the archive manager companion", 63 | "keywords": [ 64 | "bzip", 65 | "compression", 66 | "tar", 67 | "zip" 68 | ], 69 | "time": "2016-02-15T22:46:40+00:00" 70 | }, 71 | { 72 | "name": "doctrine/collections", 73 | "version": "v1.4.0", 74 | "source": { 75 | "type": "git", 76 | "url": "https://github.com/doctrine/collections.git", 77 | "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" 78 | }, 79 | "dist": { 80 | "type": "zip", 81 | "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", 82 | "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", 83 | "shasum": "" 84 | }, 85 | "require": { 86 | "php": "^5.6 || ^7.0" 87 | }, 88 | "require-dev": { 89 | "doctrine/coding-standard": "~0.1@dev", 90 | "phpunit/phpunit": "^5.7" 91 | }, 92 | "type": "library", 93 | "extra": { 94 | "branch-alias": { 95 | "dev-master": "1.3.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": "2017-01-03T10:49:41+00:00" 137 | }, 138 | { 139 | "name": "kevinlebrun/colors.php", 140 | "version": "1.0.2", 141 | "source": { 142 | "type": "git", 143 | "url": "https://github.com/kevinlebrun/colors.php.git", 144 | "reference": "6d7140aeedef46c97c2324f09b752c599ef17dac" 145 | }, 146 | "dist": { 147 | "type": "zip", 148 | "url": "https://api.github.com/repos/kevinlebrun/colors.php/zipball/6d7140aeedef46c97c2324f09b752c599ef17dac", 149 | "reference": "6d7140aeedef46c97c2324f09b752c599ef17dac", 150 | "shasum": "" 151 | }, 152 | "require": { 153 | "php": ">=5.3.0" 154 | }, 155 | "require-dev": { 156 | "phpunit/phpunit": "3.7.*", 157 | "satooshi/php-coveralls": "1.0.*", 158 | "squizlabs/php_codesniffer": "1.*" 159 | }, 160 | "type": "library", 161 | "autoload": { 162 | "psr-0": { 163 | "Colors": "src/" 164 | } 165 | }, 166 | "notification-url": "https://packagist.org/downloads/", 167 | "license": [ 168 | "MIT" 169 | ], 170 | "authors": [ 171 | { 172 | "name": "Kevin Le Brun", 173 | "email": "lebrun.k@gmail.com", 174 | "homepage": "http://kevinlebrun.fr", 175 | "role": "developer" 176 | } 177 | ], 178 | "description": "Colors for PHP CLI scripts", 179 | "homepage": "https://github.com/kevinlebrun/colors.php", 180 | "keywords": [ 181 | "cli", 182 | "color", 183 | "colors", 184 | "console", 185 | "shell" 186 | ], 187 | "time": "2016-04-12T20:58:34+00:00" 188 | }, 189 | { 190 | "name": "michelf/php-markdown", 191 | "version": "1.7.0", 192 | "source": { 193 | "type": "git", 194 | "url": "https://github.com/michelf/php-markdown.git", 195 | "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220" 196 | }, 197 | "dist": { 198 | "type": "zip", 199 | "url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220", 200 | "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220", 201 | "shasum": "" 202 | }, 203 | "require": { 204 | "php": ">=5.3.0" 205 | }, 206 | "type": "library", 207 | "extra": { 208 | "branch-alias": { 209 | "dev-lib": "1.4.x-dev" 210 | } 211 | }, 212 | "autoload": { 213 | "psr-0": { 214 | "Michelf": "" 215 | } 216 | }, 217 | "notification-url": "https://packagist.org/downloads/", 218 | "license": [ 219 | "BSD-3-Clause" 220 | ], 221 | "authors": [ 222 | { 223 | "name": "Michel Fortin", 224 | "email": "michel.fortin@michelf.ca", 225 | "homepage": "https://michelf.ca/", 226 | "role": "Developer" 227 | }, 228 | { 229 | "name": "John Gruber", 230 | "homepage": "https://daringfireball.net/" 231 | } 232 | ], 233 | "description": "PHP Markdown", 234 | "homepage": "https://michelf.ca/projects/php-markdown/", 235 | "keywords": [ 236 | "markdown" 237 | ], 238 | "time": "2016-10-29T18:58:20+00:00" 239 | }, 240 | { 241 | "name": "pattern-lab/core", 242 | "version": "v2.8.0", 243 | "source": { 244 | "type": "git", 245 | "url": "https://github.com/drupal-pattern-lab/patternlab-php-core.git", 246 | "reference": "1fa44ec8595a1d877d5f9191e90df31d9c3973cc" 247 | }, 248 | "dist": { 249 | "type": "zip", 250 | "url": "https://api.github.com/repos/drupal-pattern-lab/patternlab-php-core/zipball/1fa44ec8595a1d877d5f9191e90df31d9c3973cc", 251 | "reference": "1fa44ec8595a1d877d5f9191e90df31d9c3973cc", 252 | "shasum": "" 253 | }, 254 | "require": { 255 | "alchemy/zippy": "^0.3", 256 | "kevinlebrun/colors.php": "^1.0", 257 | "michelf/php-markdown": "^1.6", 258 | "php": ">=5.4", 259 | "seld/jsonlint": "^1.0", 260 | "shudrum/array-finder": "^1.0", 261 | "symfony/event-dispatcher": "^3.0", 262 | "symfony/filesystem": "^3.0", 263 | "symfony/finder": "^3.0", 264 | "symfony/process": "^3.1", 265 | "symfony/yaml": "^3.0" 266 | }, 267 | "type": "library", 268 | "autoload": { 269 | "psr-0": { 270 | "PatternLab": "src/" 271 | } 272 | }, 273 | "license": [ 274 | "MIT" 275 | ], 276 | "authors": [ 277 | { 278 | "name": "Dave Olsen", 279 | "email": "dmolsen@gmail.com", 280 | "homepage": "http://dmolsen.com", 281 | "role": "Lead Developer" 282 | }, 283 | { 284 | "name": "Brad Frost", 285 | "homepage": "http://bradfrostweb.com", 286 | "role": "Creator" 287 | } 288 | ], 289 | "description": "The core functionality for Pattern Lab.", 290 | "homepage": "http://patternlab.io", 291 | "keywords": [ 292 | "atomic", 293 | "atomic design", 294 | "pattern lab", 295 | "style guide", 296 | "styleguide" 297 | ], 298 | "support": { 299 | "issues": "https://github.com/drupal-pattern-lab/patternlab-php-core/issues", 300 | "wiki": "http://patternlab.io/docs/", 301 | "source": "https://github.com/drupal-pattern-lab/patternlab-php-core/releases" 302 | }, 303 | "time": "2017-07-12T01:36:51+00:00" 304 | }, 305 | { 306 | "name": "pattern-lab/patternengine-twig", 307 | "version": "v2.2.3", 308 | "source": { 309 | "type": "git", 310 | "url": "https://github.com/drupal-pattern-lab/patternengine-php-twig.git", 311 | "reference": "f3254de28b9f0a0a1e1015070209a1e06908a829" 312 | }, 313 | "dist": { 314 | "type": "zip", 315 | "url": "https://api.github.com/repos/drupal-pattern-lab/patternengine-php-twig/zipball/f3254de28b9f0a0a1e1015070209a1e06908a829", 316 | "reference": "f3254de28b9f0a0a1e1015070209a1e06908a829", 317 | "shasum": "" 318 | }, 319 | "require": { 320 | "pattern-lab/core": "^2.0.0", 321 | "twig/twig": "~1.0" 322 | }, 323 | "type": "patternlab-patternengine", 324 | "extra": { 325 | "patternlab": { 326 | "config": { 327 | "lineageMatch": "{%([ ]+)?(?:include|extends|embed)( |\\()["\\']([\\/.@A-Za-z0-9-_]+)["\\']([\\s\\S+]*?)%}", 328 | "lineageMatchKey": 3, 329 | "patternExtension": "twig", 330 | "twigDebug": false, 331 | "twigAutoescape": "html", 332 | "twigDefaultDateFormat": "", 333 | "twigDefaultIntervalFormat": "", 334 | "twigMacroExt": "macro.twig", 335 | "twigFilterExt": "filter.php", 336 | "twigFunctionExt": "function.php", 337 | "twigTagExt": "tag.php", 338 | "twigTestExt": "test.php" 339 | } 340 | } 341 | }, 342 | "autoload": { 343 | "psr-0": { 344 | "PatternLab\\PatternEngine\\Twig": "src/" 345 | } 346 | }, 347 | "license": [ 348 | "MIT" 349 | ], 350 | "authors": [ 351 | { 352 | "name": "Dave Olsen", 353 | "email": "dmolsen@gmail.com", 354 | "homepage": "http://dmolsen.com", 355 | "role": "Lead Developer" 356 | } 357 | ], 358 | "description": "Twig-based PatternEngine for Pattern Lab.", 359 | "homepage": "http://patternlab.io", 360 | "keywords": [ 361 | "pattern engine", 362 | "pattern lab", 363 | "twig" 364 | ], 365 | "support": { 366 | "issues": "https://github.com/drupal-pattern-lab/patternengine-php-twig/issues", 367 | "wiki": "http://patternlab.io/docs/", 368 | "source": "https://github.com/drupal-pattern-lab/patternengine-php-twig/releases" 369 | }, 370 | "time": "2017-05-25T23:13:15+00:00" 371 | }, 372 | { 373 | "name": "pattern-lab/styleguidekit-assets-default", 374 | "version": "v3.4.2", 375 | "source": { 376 | "type": "git", 377 | "url": "https://github.com/drupal-pattern-lab/styleguidekit-assets-default.git", 378 | "reference": "9452f6e032766a0675c2e446d65e6054d2a08a97" 379 | }, 380 | "dist": { 381 | "type": "zip", 382 | "url": "https://api.github.com/repos/drupal-pattern-lab/styleguidekit-assets-default/zipball/9452f6e032766a0675c2e446d65e6054d2a08a97", 383 | "reference": "9452f6e032766a0675c2e446d65e6054d2a08a97", 384 | "shasum": "" 385 | }, 386 | "type": "patternlab-styleguidekit", 387 | "extra": { 388 | "patternlab": { 389 | "dist": { 390 | "publicDir": [ 391 | { 392 | "*": "*" 393 | } 394 | ] 395 | }, 396 | "config": { 397 | "ishMinimum": "240", 398 | "ishMaximum": "2600", 399 | "ishControlsHide": [ 400 | "hay" 401 | ] 402 | } 403 | } 404 | }, 405 | "license": [ 406 | "MIT" 407 | ], 408 | "authors": [ 409 | { 410 | "name": "Dave Olsen", 411 | "email": "dmolsen@gmail.com", 412 | "homepage": "http://dmolsen.com", 413 | "role": "Lead Developer" 414 | }, 415 | { 416 | "name": "Brad Frost", 417 | "homepage": "http://bradfrostweb.com", 418 | "role": "Creator" 419 | } 420 | ], 421 | "description": "The assets for the default StyleguideKit for Pattern Lab. Contains styles and mark-up for Pattern Lab's front-end.", 422 | "homepage": "http://patternlab.io", 423 | "keywords": [ 424 | "mustache", 425 | "pattern lab", 426 | "styleguide" 427 | ], 428 | "support": { 429 | "issues": "https://github.com/pattern-lab/styleguidekit-assets-default/issues", 430 | "wiki": "http://patternlab.io/docs/", 431 | "source": "https://github.com/pattern-lab/styleguidekit-assets-default/releases" 432 | }, 433 | "time": "2017-05-25T23:00:23+00:00" 434 | }, 435 | { 436 | "name": "pattern-lab/styleguidekit-twig-default", 437 | "version": "v3.0.2", 438 | "source": { 439 | "type": "git", 440 | "url": "https://github.com/drupal-pattern-lab/styleguidekit-twig-default.git", 441 | "reference": "caac6d307814cef521cfeff74e860bb639638041" 442 | }, 443 | "dist": { 444 | "type": "zip", 445 | "url": "https://api.github.com/repos/drupal-pattern-lab/styleguidekit-twig-default/zipball/caac6d307814cef521cfeff74e860bb639638041", 446 | "reference": "caac6d307814cef521cfeff74e860bb639638041", 447 | "shasum": "" 448 | }, 449 | "require": { 450 | "pattern-lab/styleguidekit-assets-default": "^3.0.0" 451 | }, 452 | "type": "patternlab-styleguidekit", 453 | "license": [ 454 | "MIT" 455 | ], 456 | "authors": [ 457 | { 458 | "name": "Dave Olsen", 459 | "email": "dmolsen@gmail.com", 460 | "homepage": "http://dmolsen.com", 461 | "role": "Lead Developer" 462 | }, 463 | { 464 | "name": "Brad Frost", 465 | "homepage": "http://bradfrostweb.com", 466 | "role": "Creator" 467 | } 468 | ], 469 | "description": "The default Twig-based StyleguideKit for Pattern Lab. Contains styles and mark-up for Pattern Lab's front-end.", 470 | "homepage": "http://patternlab.io", 471 | "keywords": [ 472 | "pattern lab", 473 | "styleguide", 474 | "twig" 475 | ], 476 | "support": { 477 | "issues": "https://github.com/pattern-lab/styleguidekit-twig-default/issues", 478 | "wiki": "http://patternlab.io/docs/", 479 | "source": "https://github.com/pattern-lab/styleguidekit-twig-default/releases" 480 | }, 481 | "time": "2017-05-25T23:01:29+00:00" 482 | }, 483 | { 484 | "name": "seld/jsonlint", 485 | "version": "1.6.1", 486 | "source": { 487 | "type": "git", 488 | "url": "https://github.com/Seldaek/jsonlint.git", 489 | "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" 490 | }, 491 | "dist": { 492 | "type": "zip", 493 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", 494 | "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", 495 | "shasum": "" 496 | }, 497 | "require": { 498 | "php": "^5.3 || ^7.0" 499 | }, 500 | "require-dev": { 501 | "phpunit/phpunit": "^4.5" 502 | }, 503 | "bin": [ 504 | "bin/jsonlint" 505 | ], 506 | "type": "library", 507 | "autoload": { 508 | "psr-4": { 509 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 510 | } 511 | }, 512 | "notification-url": "https://packagist.org/downloads/", 513 | "license": [ 514 | "MIT" 515 | ], 516 | "authors": [ 517 | { 518 | "name": "Jordi Boggiano", 519 | "email": "j.boggiano@seld.be", 520 | "homepage": "http://seld.be" 521 | } 522 | ], 523 | "description": "JSON Linter", 524 | "keywords": [ 525 | "json", 526 | "linter", 527 | "parser", 528 | "validator" 529 | ], 530 | "time": "2017-06-18T15:11:04+00:00" 531 | }, 532 | { 533 | "name": "shudrum/array-finder", 534 | "version": "v1.1.0", 535 | "source": { 536 | "type": "git", 537 | "url": "https://github.com/Shudrum/ArrayFinder.git", 538 | "reference": "42380f01017371b7a1e8e02b0bf12cb534e454d7" 539 | }, 540 | "dist": { 541 | "type": "zip", 542 | "url": "https://api.github.com/repos/Shudrum/ArrayFinder/zipball/42380f01017371b7a1e8e02b0bf12cb534e454d7", 543 | "reference": "42380f01017371b7a1e8e02b0bf12cb534e454d7", 544 | "shasum": "" 545 | }, 546 | "require": { 547 | "php": ">=5.4" 548 | }, 549 | "type": "library", 550 | "autoload": { 551 | "psr-4": { 552 | "Shudrum\\Component\\ArrayFinder\\": "" 553 | }, 554 | "exclude-from-classmap": [ 555 | "/Tests/" 556 | ] 557 | }, 558 | "notification-url": "https://packagist.org/downloads/", 559 | "license": [ 560 | "MIT" 561 | ], 562 | "authors": [ 563 | { 564 | "name": "Julien Martin", 565 | "email": "martin.julien82@gmail.com" 566 | } 567 | ], 568 | "description": "ArrayFinder component", 569 | "homepage": "https://github.com/Shudrum/ArrayFinder", 570 | "time": "2016-02-01T12:23:32+00:00" 571 | }, 572 | { 573 | "name": "symfony/event-dispatcher", 574 | "version": "v3.3.4", 575 | "source": { 576 | "type": "git", 577 | "url": "https://github.com/symfony/event-dispatcher.git", 578 | "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" 579 | }, 580 | "dist": { 581 | "type": "zip", 582 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", 583 | "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", 584 | "shasum": "" 585 | }, 586 | "require": { 587 | "php": ">=5.5.9" 588 | }, 589 | "conflict": { 590 | "symfony/dependency-injection": "<3.3" 591 | }, 592 | "require-dev": { 593 | "psr/log": "~1.0", 594 | "symfony/config": "~2.8|~3.0", 595 | "symfony/dependency-injection": "~3.3", 596 | "symfony/expression-language": "~2.8|~3.0", 597 | "symfony/stopwatch": "~2.8|~3.0" 598 | }, 599 | "suggest": { 600 | "symfony/dependency-injection": "", 601 | "symfony/http-kernel": "" 602 | }, 603 | "type": "library", 604 | "extra": { 605 | "branch-alias": { 606 | "dev-master": "3.3-dev" 607 | } 608 | }, 609 | "autoload": { 610 | "psr-4": { 611 | "Symfony\\Component\\EventDispatcher\\": "" 612 | }, 613 | "exclude-from-classmap": [ 614 | "/Tests/" 615 | ] 616 | }, 617 | "notification-url": "https://packagist.org/downloads/", 618 | "license": [ 619 | "MIT" 620 | ], 621 | "authors": [ 622 | { 623 | "name": "Fabien Potencier", 624 | "email": "fabien@symfony.com" 625 | }, 626 | { 627 | "name": "Symfony Community", 628 | "homepage": "https://symfony.com/contributors" 629 | } 630 | ], 631 | "description": "Symfony EventDispatcher Component", 632 | "homepage": "https://symfony.com", 633 | "time": "2017-06-09T14:53:08+00:00" 634 | }, 635 | { 636 | "name": "symfony/filesystem", 637 | "version": "v3.3.4", 638 | "source": { 639 | "type": "git", 640 | "url": "https://github.com/symfony/filesystem.git", 641 | "reference": "311fa718389efbd8b627c272b9324a62437018cc" 642 | }, 643 | "dist": { 644 | "type": "zip", 645 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/311fa718389efbd8b627c272b9324a62437018cc", 646 | "reference": "311fa718389efbd8b627c272b9324a62437018cc", 647 | "shasum": "" 648 | }, 649 | "require": { 650 | "php": ">=5.5.9" 651 | }, 652 | "type": "library", 653 | "extra": { 654 | "branch-alias": { 655 | "dev-master": "3.3-dev" 656 | } 657 | }, 658 | "autoload": { 659 | "psr-4": { 660 | "Symfony\\Component\\Filesystem\\": "" 661 | }, 662 | "exclude-from-classmap": [ 663 | "/Tests/" 664 | ] 665 | }, 666 | "notification-url": "https://packagist.org/downloads/", 667 | "license": [ 668 | "MIT" 669 | ], 670 | "authors": [ 671 | { 672 | "name": "Fabien Potencier", 673 | "email": "fabien@symfony.com" 674 | }, 675 | { 676 | "name": "Symfony Community", 677 | "homepage": "https://symfony.com/contributors" 678 | } 679 | ], 680 | "description": "Symfony Filesystem Component", 681 | "homepage": "https://symfony.com", 682 | "time": "2017-06-24T09:29:48+00:00" 683 | }, 684 | { 685 | "name": "symfony/finder", 686 | "version": "v3.3.4", 687 | "source": { 688 | "type": "git", 689 | "url": "https://github.com/symfony/finder.git", 690 | "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" 691 | }, 692 | "dist": { 693 | "type": "zip", 694 | "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", 695 | "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", 696 | "shasum": "" 697 | }, 698 | "require": { 699 | "php": ">=5.5.9" 700 | }, 701 | "type": "library", 702 | "extra": { 703 | "branch-alias": { 704 | "dev-master": "3.3-dev" 705 | } 706 | }, 707 | "autoload": { 708 | "psr-4": { 709 | "Symfony\\Component\\Finder\\": "" 710 | }, 711 | "exclude-from-classmap": [ 712 | "/Tests/" 713 | ] 714 | }, 715 | "notification-url": "https://packagist.org/downloads/", 716 | "license": [ 717 | "MIT" 718 | ], 719 | "authors": [ 720 | { 721 | "name": "Fabien Potencier", 722 | "email": "fabien@symfony.com" 723 | }, 724 | { 725 | "name": "Symfony Community", 726 | "homepage": "https://symfony.com/contributors" 727 | } 728 | ], 729 | "description": "Symfony Finder Component", 730 | "homepage": "https://symfony.com", 731 | "time": "2017-06-01T21:01:25+00:00" 732 | }, 733 | { 734 | "name": "symfony/process", 735 | "version": "v3.3.4", 736 | "source": { 737 | "type": "git", 738 | "url": "https://github.com/symfony/process.git", 739 | "reference": "5ab8949b682b1bf9d4511a228b5e045c96758c30" 740 | }, 741 | "dist": { 742 | "type": "zip", 743 | "url": "https://api.github.com/repos/symfony/process/zipball/5ab8949b682b1bf9d4511a228b5e045c96758c30", 744 | "reference": "5ab8949b682b1bf9d4511a228b5e045c96758c30", 745 | "shasum": "" 746 | }, 747 | "require": { 748 | "php": ">=5.5.9" 749 | }, 750 | "type": "library", 751 | "extra": { 752 | "branch-alias": { 753 | "dev-master": "3.3-dev" 754 | } 755 | }, 756 | "autoload": { 757 | "psr-4": { 758 | "Symfony\\Component\\Process\\": "" 759 | }, 760 | "exclude-from-classmap": [ 761 | "/Tests/" 762 | ] 763 | }, 764 | "notification-url": "https://packagist.org/downloads/", 765 | "license": [ 766 | "MIT" 767 | ], 768 | "authors": [ 769 | { 770 | "name": "Fabien Potencier", 771 | "email": "fabien@symfony.com" 772 | }, 773 | { 774 | "name": "Symfony Community", 775 | "homepage": "https://symfony.com/contributors" 776 | } 777 | ], 778 | "description": "Symfony Process Component", 779 | "homepage": "https://symfony.com", 780 | "time": "2017-07-03T08:12:02+00:00" 781 | }, 782 | { 783 | "name": "symfony/yaml", 784 | "version": "v3.3.4", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/symfony/yaml.git", 788 | "reference": "1f93a8d19b8241617f5074a123e282575b821df8" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/symfony/yaml/zipball/1f93a8d19b8241617f5074a123e282575b821df8", 793 | "reference": "1f93a8d19b8241617f5074a123e282575b821df8", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "php": ">=5.5.9" 798 | }, 799 | "require-dev": { 800 | "symfony/console": "~2.8|~3.0" 801 | }, 802 | "suggest": { 803 | "symfony/console": "For validating YAML files using the lint command" 804 | }, 805 | "type": "library", 806 | "extra": { 807 | "branch-alias": { 808 | "dev-master": "3.3-dev" 809 | } 810 | }, 811 | "autoload": { 812 | "psr-4": { 813 | "Symfony\\Component\\Yaml\\": "" 814 | }, 815 | "exclude-from-classmap": [ 816 | "/Tests/" 817 | ] 818 | }, 819 | "notification-url": "https://packagist.org/downloads/", 820 | "license": [ 821 | "MIT" 822 | ], 823 | "authors": [ 824 | { 825 | "name": "Fabien Potencier", 826 | "email": "fabien@symfony.com" 827 | }, 828 | { 829 | "name": "Symfony Community", 830 | "homepage": "https://symfony.com/contributors" 831 | } 832 | ], 833 | "description": "Symfony Yaml Component", 834 | "homepage": "https://symfony.com", 835 | "time": "2017-06-15T12:58:50+00:00" 836 | }, 837 | { 838 | "name": "twig/twig", 839 | "version": "v1.34.4", 840 | "source": { 841 | "type": "git", 842 | "url": "https://github.com/twigphp/Twig.git", 843 | "reference": "f878bab48edb66ad9c6ed626bf817f60c6c096ee" 844 | }, 845 | "dist": { 846 | "type": "zip", 847 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/f878bab48edb66ad9c6ed626bf817f60c6c096ee", 848 | "reference": "f878bab48edb66ad9c6ed626bf817f60c6c096ee", 849 | "shasum": "" 850 | }, 851 | "require": { 852 | "php": ">=5.3.3" 853 | }, 854 | "require-dev": { 855 | "psr/container": "^1.0", 856 | "symfony/debug": "~2.7", 857 | "symfony/phpunit-bridge": "~3.3@dev" 858 | }, 859 | "type": "library", 860 | "extra": { 861 | "branch-alias": { 862 | "dev-master": "1.34-dev" 863 | } 864 | }, 865 | "autoload": { 866 | "psr-0": { 867 | "Twig_": "lib/" 868 | }, 869 | "psr-4": { 870 | "Twig\\": "src/" 871 | } 872 | }, 873 | "notification-url": "https://packagist.org/downloads/", 874 | "license": [ 875 | "BSD-3-Clause" 876 | ], 877 | "authors": [ 878 | { 879 | "name": "Fabien Potencier", 880 | "email": "fabien@symfony.com", 881 | "homepage": "http://fabien.potencier.org", 882 | "role": "Lead Developer" 883 | }, 884 | { 885 | "name": "Armin Ronacher", 886 | "email": "armin.ronacher@active-4.com", 887 | "role": "Project Founder" 888 | }, 889 | { 890 | "name": "Twig Team", 891 | "homepage": "http://twig.sensiolabs.org/contributors", 892 | "role": "Contributors" 893 | } 894 | ], 895 | "description": "Twig, the flexible, fast, and secure template language for PHP", 896 | "homepage": "http://twig.sensiolabs.org", 897 | "keywords": [ 898 | "templating" 899 | ], 900 | "time": "2017-07-04T13:19:31+00:00" 901 | } 902 | ], 903 | "packages-dev": [], 904 | "aliases": [], 905 | "minimum-stability": "stable", 906 | "stability-flags": [], 907 | "prefer-stable": false, 908 | "prefer-lowest": false, 909 | "platform": { 910 | "php": ">=5.4" 911 | }, 912 | "platform-dev": [] 913 | } 914 | --------------------------------------------------------------------------------