@ng-brutalism/ui 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,11 +7,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.0] — 2026-06-02
11
+
12
+ `v0.2.0` introduces a stronger composition system for building brutalist Angular UIs. The new layout grammar — Surface, Section, Stack, Cluster, and Split — lets you compose full card layouts, multi-column pages, and recipe UIs entirely from library primitives with consistent token-driven spacing, border, shadow, and typography.
13
+
14
+ ### Added
15
+
16
+ **Composition system**
17
+
18
+ - `NbSurface` — base brutalist panel directive. Token-driven tone, radius, border, shadow, padding, size, layout, edge, clip, and typography inputs.
19
+ - `NbSection` — inner region primitive for Surface. Owns padding, divider side, divider style, layout (default / center / between), align, and flush.
20
+ - `NbStack` — vertical rhythm primitive. Gap, align, justify, and separator inputs.
21
+ - `NbCluster` — horizontal/wrapping rhythm primitive. Gap, padding, align, justify, wrap, and separator inputs.
22
+ - `NbSplit` — two-column main-and-aside primitive. Ratio, gap, padding, collapse (responsive breakpoint), align, and separator inputs.
23
+ - `NbMediaFrame` — framed media primitive with aspect ratio locking. Ratios: `auto`, `1/1`, `3/4`, `4/3`, `3/2`, `16/9`, `21/9`.
24
+ - `NbText` — inline and block text primitive.
25
+ - `NbDisplay` — large headline primitive.
26
+ - `NbTitle`, `NbTypography` — typography composition primitives.
27
+ - `NbStat` — statistic display primitive.
28
+ - `NbRating` — star rating primitive.
29
+ - `NbProgress` — progress bar primitive.
30
+ - `NbStatusDot` — status indicator primitive with size and radius inputs.
31
+ - `NbCallout` — inline callout/emphasis primitive.
32
+ - `NbMediaItem` — icon + label pair primitive.
33
+ - `NbAvatar`, `NbAvatarGroup` — avatar and avatar stack primitives.
34
+ - `NbChip`, `NbChipGroup` — tag/badge primitive with tone, padding, and group layout.
35
+ - `NbIconButton` — icon-only button primitive.
36
+ - `NbSticker` — decorative burst/shape primitive.
37
+ - `NbHalftone` — decorative halftone pattern primitive.
38
+ - `NbSeparator` — divider line primitive.
39
+
40
+ **Recipes**
41
+
42
+ - Travel Card — media, sticker, display, split, cluster composition recipe.
43
+ - Podcast Card — audio episode card composition recipe.
44
+ - Open to Work Card — professional profile card composition recipe.
45
+
46
+ **Shared token vocabulary**
47
+
48
+ - Unified `NbBorderStrength`, `NbShadow`, `NbRadius`, `NbSpacing`, `NbPadding`, `NbToneToken` across all composition primitives.
49
+ - `NbTypographyFont` — font role contract used by `NbTypography` and `NbSurface`.
50
+ - `NbMediaFrameRatio` — now includes `'3/4'` portrait ratio.
51
+
10
52
  ### Breaking Changes (pre-publish, still 0.x)
11
53
 
12
54
  - **Class names**: `Component`/`Directive` suffix dropped. `NbCardComponent` → `NbCard`, `NbButtonDirective` → `NbButton`, `NbSelectComponent` → `NbSelect`, `NbAccordionComponent` → `NbAccordion`, etc.
13
55
  - **`defaultValue` removed from `<nb-accordion>`**: use `[value]="..."` for one-way initial value or `[(value)]` for two-way binding.
14
56
  - **`defaultValue` and `defaultOpen` removed from `<nb-select>`**: use `[value]` / `[(value)]` and `[open]` / `[(open)]` respectively.
57
+ - **`NbSection` `border` input renamed to `divider`**: `border="bottom"` → `divider="bottom"`. Separates the region-border concept from the outline-strength `border` input used everywhere else.
15
58
 
16
59
  ### Internal
17
60
 
@@ -43,6 +86,7 @@ Initial public release.
43
86
  ### Added
44
87
 
45
88
  **Form controls**
89
+
46
90
  - `NbButton`
47
91
  - `NbCheckbox`
48
92
  - `NbInput`
@@ -53,6 +97,7 @@ Initial public release.
53
97
  - `NbTextarea`
54
98
 
55
99
  **Layout & content**
100
+
56
101
  - `NbAccordion`
57
102
  - `NbAvatar`
58
103
  - `NbBadge`
@@ -62,9 +107,11 @@ Initial public release.
62
107
  - `NbTitle`
63
108
 
64
109
  **Overlays**
110
+
65
111
  - `NbDialog`
66
112
 
67
113
  **Foundation**
114
+
68
115
  - MIT license, Angular 21 + Tailwind v4 peer dependencies
69
116
  - `styles.css` single-import entrypoint (default theme)
70
117
  - `theme.css` token-only entrypoint for advanced theming
@@ -72,4 +119,5 @@ Initial public release.
72
119
  - CSS custom properties as the primary theming surface
73
120
 
74
121
  **Notes**
122
+
75
123
  - Pre-1.0: minor versions may include breaking changes while APIs settle.
package/README.md CHANGED
@@ -1,10 +1,11 @@
1
- # ng-brutalism — Neo-brutalist Angular UI Component Library
1
+ # ng-brutalism — Neo-brutalist Angular UI Primitive Library
2
2
 
3
3
  Build loud. Stay sharp.
4
4
 
5
- ng-brutalism is a neo-brutalist Angular UI component library token-driven,
6
- signals-first, zoneless, with directive APIs, keyboard-ready interactions, and
7
- Tailwind v4 ergonomics from the first import.
5
+ ng-brutalism is a neo-brutalist Angular UI primitive library and composition
6
+ system for building loud, token-driven Angular interfaces with directive-first
7
+ APIs, signals, zoneless-friendly patterns, Tailwind CSS v4, chunky borders,
8
+ offset shadows, and punchy colors.
8
9
 
9
10
  If you like shadcn/ui or daisyUI, but for Angular and built around brutalism.
10
11
 
@@ -17,7 +18,15 @@ If you like shadcn/ui or daisyUI, but for Angular and built around brutalism.
17
18
  [npm](https://www.npmjs.com/package/@ng-brutalism/ui) ·
18
19
  [GitHub](https://github.com/khangtrannn/ng-brutalism)
19
20
 
20
- ![ng-brutalism Angular component library demo buttons, cards, dialogs in neo-brutalist style](https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/introduction.gif)
21
+ ![ng-brutalism v0.2.0 composable brutalist primitives for bold Angular interfaces](https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/compositions/v0.2.0.png)
22
+
23
+ ## What's new in v0.2.0
24
+
25
+ v0.2.0 ships a full composition system. The new layout grammar — **Surface, Section, Stack, Cluster, and Split** — lets you compose complete card layouts, multi-column pages, and recipe UIs entirely from library primitives with consistent token-driven spacing, border, shadow, and typography.
26
+
27
+ New primitives: `NbSurface`, `NbSection`, `NbStack`, `NbCluster`, `NbSplit`, `NbMediaFrame`, `NbText`, `NbDisplay`, `NbStat`, `NbRating`, `NbProgress`, `NbStatusDot`, `NbCallout`, `NbMediaItem`, `NbAvatarGroup`, `NbChip`, `NbChipGroup`, `NbIconButton`, `NbSticker`, `NbHalftone`, `NbSeparator` — plus three ready-made composition recipes.
28
+
29
+ See the [full changelog](https://github.com/khangtrannn/ng-brutalism/blob/main/CHANGELOG.md) for details and migration notes.
21
30
 
22
31
  ## Install
23
32
 
@@ -92,29 +101,38 @@ bootstrapApplication(App, {
92
101
  });
93
102
  ```
94
103
 
95
- ## Components
96
-
97
- | Component | Description | Docs |
98
- | --- | --- | --- |
99
- | Accordion | Vertically stacked, collapsible content panels with single or multi-expand modes. | [Docs](https://ngbrutalism.khangtran.dev/components/accordion) |
100
- | Avatar | Compact avatar with image and fallback support. | [Docs](https://ngbrutalism.khangtran.dev/components/avatar) |
101
- | Badge | Inline status pill with multiple variants. | [Docs](https://ngbrutalism.khangtran.dev/components/badge) |
102
- | Button | Directive-driven button with size, variant, and shadow controls. | [Docs](https://ngbrutalism.khangtran.dev/components/button) |
103
- | Card | Container with header, title, description, content, actions, and footer slots. | [Docs](https://ngbrutalism.khangtran.dev/components/card) |
104
- | Checkbox | Form checkbox with size variants and signal-friendly bindings. | [Docs](https://ngbrutalism.khangtran.dev/components/checkbox) |
105
- | Dialog | Modal dialog with title, description, content, actions, and close slots. | [Docs](https://ngbrutalism.khangtran.dev/components/dialog) |
106
- | Image Card | Image-led card with caption overlay for portfolios and galleries. | [Docs](https://ngbrutalism.khangtran.dev/components/image-card) |
107
- | Input | Single-line text input with size variants. | [Docs](https://ngbrutalism.khangtran.dev/components/input) |
108
- | Input Group | Input wrapper with prefix and suffix slots for icons, addons, or units. | [Docs](https://ngbrutalism.khangtran.dev/components/input-group) |
109
- | Label | Accessible label tied to form controls. | [Docs](https://ngbrutalism.khangtran.dev/components/label) |
110
- | Marquee | Looping horizontal scroller for logos, tags, or announcements. | [Docs](https://ngbrutalism.khangtran.dev/components/marquee) |
111
- | Select | Native or custom dropdown select with option templating. | [Docs](https://ngbrutalism.khangtran.dev/components/select) |
112
- | Textarea | Multi-line text input with size variants. | [Docs](https://ngbrutalism.khangtran.dev/components/textarea) |
113
- | Title | Typographic heading primitive with brutalist defaults. | [Docs](https://ngbrutalism.khangtran.dev/components/title) |
114
-
115
- ## What it looks like
116
-
117
- ![ng-brutalism component showcase — accordion, badge, button, card, checkbox, dialog, input, select rendered in brutalist design](https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/showcase-portfolio.png)
104
+ ## Primitive System
105
+
106
+ ng-brutalism is a composition system, not just a component list. Use primitives
107
+ like `nbSurface`, `nbSection`, `nbSplit`, `nbStack`, and `nbCluster` as the
108
+ layout grammar. Add emphasis with `nbChip`, `nbCallout`, `nbSticker`, and
109
+ `nbStatusDot`. Finish with typography, media, forms, and action primitives.
110
+
111
+ Inputs are for common design decisions. CSS variables are for local art
112
+ direction. Classes are for layout escape hatches.
113
+
114
+ | Group | Primitives |
115
+ | --- | --- |
116
+ | Foundation | Tokens, theme provider, CSS variables, `nbClass` |
117
+ | Layout | Stack, Cluster, Split, Section, Separator |
118
+ | Surfaces | Surface, Card, Image Card, Media Frame |
119
+ | Typography | Text, Display, Title |
120
+ | Emphasis | Badge, Chip, Callout, Sticker, Status Dot, Rating, Progress, Halftone |
121
+ | Actions | Button, Icon Button, Button Trailing Icon |
122
+ | Media | Avatar, Avatar Group, Icon, Media Item, Stat |
123
+ | Forms | Input, Input Group, Textarea, Checkbox, Select, Label |
124
+ | Overlays / Interaction | Accordion, Dialog, Marquee |
125
+ | Recipes | Travel Card, Podcast Card, Open to Work Card |
126
+
127
+ ## Compositions
128
+
129
+ Three ready-made recipes ship with v0.2.0, each assembled entirely from library primitives:
130
+
131
+ <p>
132
+ <img src="https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/compositions/personal-profile.png" width="32%" alt="Open to Work Card — personal profile composition built from Surface, Split, Chip, and MediaFrame primitives" />
133
+ <img src="https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/compositions/podcast-promo.png" width="32%" alt="Podcast Card — audio episode composition built from Surface, Section, Badge, and Avatar primitives" />
134
+ <img src="https://raw.githubusercontent.com/khangtrannn/ng-brutalism/main/docs/assets/compositions/travel-campaign.png" width="32%" alt="Travel Card — campaign-style composition built from Surface, MediaFrame, Display, and Sticker primitives" />
135
+ </p>
118
136
 
119
137
  ## Documentation
120
138
 
@@ -141,6 +159,12 @@ All visual tokens are exposed as CSS custom properties (`--nb-*`). A subset of t
141
159
  **Is ng-brutalism ready for production?**
142
160
  It is pre-1.0. Component APIs are usable today, but minor versions may include breaking changes while the library settles.
143
161
 
162
+ ## Migrating from v0.1.x
163
+
164
+ v0.2.0 contains breaking changes. The `Component`/`Directive` suffix was dropped from all exported names: `NbCardComponent` → `NbCard`, `NbButtonDirective` → `NbButton`, `NbSelectComponent` → `NbSelect`, etc. The `defaultValue` / `defaultOpen` inputs on `<nb-accordion>` and `<nb-select>` were removed in favour of `[value]` / `[(value)]` bindings. `NbSection`'s `border` input was renamed to `divider`.
165
+
166
+ See the [full changelog](https://github.com/khangtrannn/ng-brutalism/blob/main/CHANGELOG.md) for the complete list.
167
+
144
168
  ## Author
145
169
 
146
170
  Created by [Khang Tran](https://github.com/khangtrannn). MIT licensed. Source code is available on GitHub.