README
Apto Angular 5 UI
Quick links
Getting started
Step 1: Install Apto-UI
NPM
npm install --save apto-ui
Yarn
yarn add apto-ui
Step 2: Import the component modules
import { AptoButtonComponentModule } from 'apto-ui';
@NgModule({
...
imports: [
AptoButtonComponentModule
],
...
})
export class SuperAwesomeAppModule { }
SUIT CSS Naming Conventions
Components
The CSS responsible for component-specific styling.
Syntax: <ComponentName>[-descendentName][--modifierName]
This has several benefits when reading and writing HTML and CSS:
- It helps to distinguish between the classes for the root of the component, descendent elements, and modifications.
- It keeps the specificity of selectors low.
- It helps to decouple presentation semantics from document semantics.
ComponentName
The component's name must be written in pascal case. Nothing else in the HTML/CSS uses pascal case.
.MyComponent { /* … */ }
<article class="MyComponent">
…
</article>
ComponentName--modifierName
A component modifier is a class that modifies the presentation of the base component in some form (e.g., for a certain configuration of the component). Modifier names must be written in camel case and be separated from the component name by two hyphens. The class should be included in the HTML in addition to the base component class.
/* Core button */
.Button { /* … */ }
/* Default button style */
.Button--default { /* … */ }
<button class="Button Button--default" type="button">…</button>
ComponentName-descendentName
A component descendent is a class that is attached to a descendent node of a component. It's responsible for applying presentation directly to the descendent on behalf of a particular component. Descendent names must be written in camel case.
<article class="Tweet">
<header class="Tweet-header">
<img class="Tweet-avatar" src="{{src}}" alt="{{alt}}">
…
</header>
<div class="Tweet-bodyText">
…
</div>
</article>
ComponentName.is-stateOfComponent
Use is-stateName
to reflect changes to a component's state. The state name
must be camel case. Never style these classes directly; they should always be
used as an adjoining class.
This means that the same state names can be used in multiple contexts, but every component must define its own styles for the state (as they are scoped to the component).
.Tweet { /* … */ }
.Tweet.is-expanded { /* … */ }
<article class="Tweet is-expanded">
…
</article>