
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
@doghouse/uikit
Advanced tools
The Doghouse UiKit is a SASS framework consisting of many tools and styles to make styling websites easier and more consistent. It tries not to impose too much, more just providing some sane defaults and lots of mixins that assist in common tasks.
Version 2.x
of UiKit is intended to compile without Compass or Ruby, so it can be compiled with
Node Sass which is much faster and a lot easier to setup dev environments.
The preferred install method for version 2 is via npm
.
Version 1.x
requires Ruby/Compass and is generally installed with composer or git sub-module.
You can add the UiKit to your project via 3 methods.
Usage instructions assume you use this method.
npm install --save @doghouse/uikit
Add doghouse packages repo (if not already in your composer.json
)
composer config repositories.doghouse composer https://packages.doghouse.agency/
Add the UiKit package
composer require doghouse/uikit:${version}
Where ${version}
is the git tag.
Simply clone or download this repo into your project.
Dependencies should be as light as possible as this is reused many time.
The easiest way to get started for a new project is to copy the boilerplate dir into your
mytheme/styles/scss
folder and start tweaking to your needs. The boilerplate contains an ideal folder structure
and some sample files that include some KSS comments to encourage you to continue through development.
Otherwise, simply import duk
into your theme, optionally toggle if base styles are included (recommended) and
ensure dependencies are added beforehand. Eg:
// Requires breakpoint-sass
@import "~breakpoint-sass/stylesheets/breakpoint";
// Set this to false if you do not want styles included (ie. just use mixins and functions).
$duk-include-styles: true;
// Override/extend any other settings in "scss/_settings.scss"
// Import duk.
@import "~@doghouse/duk/scss/duk";
The above assumes you are using webpack
to build and the ~
will automatically expand to node_modules/
path.
You can just include UiKit settings and tools into your SASS/theme and it will add no markup (0KB). You can then just use the mixins as required.
The recommended approach is to include the base generated UiKit styles (~50KB minified) as it provides an excellent starting point for new projects with sane resets and defaults. See the styleguide for what you get.
To toggle the inclusion of the base generated styles, set $duk-include-styles
to true
or false
.
Almost all settings are in SASS maps so the can be easily merged and iterated over to dynamically create modifiers and styles.
map-merge
is used to extend the defaults. This means defining or changing settings will not remove other defaults in
the same map.
Eg scss/_settings.scss
uses a lot of this:
$duk-base-some-settings: () !default;
$duk-base-some-settings: map-merge(( ... ), $duk-base-some-settings);
More specific example, if you wanted a new button modifier .button--fulro
, you would just add the following to your
settings (that get included before @import "duk")
:
$duk-button-colors: ( 'fulro': #f42534 );
And your your new button class would be automatically created. The same is true for most of the variables/maps in the
settings.scss
.
Highly recommend you use the Doghouse webpack project to get you started.
For a more lightweight CSS only solution, see package.json
and webpack.config.js
in the root of this repo.
This UiKit produces a living style guide via the KSS Syntax so you can easily browse
the tools available. The compiled style guide builds to the styleguide
directory in the root of this repo.
Or just read the Readme.
You can rebuild the style guide with 2 commands as configuration is stored in kss-config.json.
npm install
npm run build
Read this readme about using icons and icon helpers. Due to path inclusion issues, you will probably
need to update $duk-icon-font-path
to resolve correctly to a public path. This may be used in conjunction with a
webpack helper.
Something like:
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
...
plugins: [
new CopyWebpackPlugin([{
from: path.resolve(process.cwd(), 'node_modules/@doghouse/uikit/icons/*'),
to: path.resolve(process.cwd(), 'docroot/themes/custom/my_theme')
}], {})
]
}
TODO: Validate above or come up with a better solution.
npm run build
twice to get the css into the style guide.npm run build
This is caused by not using 'dart-sass' (package sass
). You are probably using 'node-sass' instead.
To fix this run the following on your project:
npm uninstall node-sass --save && npm install sass --save-dev
Node sass package is deprecated and should be removed from your project. It is replaced with sass which is a JS only implementation of SASS.
Help make this even better, fix some code, add a feature and do a PR today! If you note an issue while working on a project, don't simply workaround in your own code, feed it back upstream into this package.
Original UiKit created by Jorege Castro. Version 2.x rebuild by Jeremy Graham. With loads of contributions from Doghouse staff along the way.
FAQs
Dohouse UiKit (duk)
We found that @doghouse/uikit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.