@lumaui/angular 0.1.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/README.md +165 -0
- package/package.json +46 -0
- package/src/index.ts +9 -0
- package/src/lib/button/button.directive.spec.ts +1350 -0
- package/src/lib/button/button.directive.ts +34 -0
- package/src/lib/button/button.docs.md +209 -0
- package/src/lib/button/index.ts +3 -0
- package/src/lib/card/card-content.directive.ts +13 -0
- package/src/lib/card/card-description.directive.ts +19 -0
- package/src/lib/card/card-directives.spec.ts +309 -0
- package/src/lib/card/card-header.directive.ts +12 -0
- package/src/lib/card/card-title.directive.ts +16 -0
- package/src/lib/card/card.component.html +5 -0
- package/src/lib/card/card.component.spec.ts +379 -0
- package/src/lib/card/card.component.ts +33 -0
- package/src/lib/card/card.docs.md +452 -0
- package/src/lib/card/index.ts +19 -0
- package/src/test-setup.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# @lumaui/angular
|
|
2
|
+
|
|
3
|
+
Angular components for **Luma UI** - a Neo-Minimal design system built with calm, intentional simplicity.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Neo-Minimal design philosophy
|
|
8
|
+
- Dark theme support out of the box
|
|
9
|
+
- Type-safe variants with class-variance-authority
|
|
10
|
+
- Angular 19+ standalone components
|
|
11
|
+
- Tailwind CSS v4 compatible
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @lumaui/angular @lumaui/tokens
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Peer Dependencies
|
|
20
|
+
|
|
21
|
+
These are automatically installed with Angular projects:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install class-variance-authority
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Setup
|
|
28
|
+
|
|
29
|
+
### 1. Import Styles
|
|
30
|
+
|
|
31
|
+
Add to your `styles.css`:
|
|
32
|
+
|
|
33
|
+
```css
|
|
34
|
+
@import '@lumaui/tokens/styles.css';
|
|
35
|
+
|
|
36
|
+
/* Optional: Dark theme support */
|
|
37
|
+
@import '@lumaui/tokens/styles/dark.css';
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. Configure Tailwind (Required)
|
|
41
|
+
|
|
42
|
+
Add the library to your Tailwind content paths in `tailwind.config.js`:
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
export default {
|
|
46
|
+
content: ['./src/**/*.{html,ts}', './node_modules/@lumaui/**/*.{js,ts,mjs}'],
|
|
47
|
+
};
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Usage
|
|
51
|
+
|
|
52
|
+
### Button
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { ButtonDirective } from '@lumaui/angular';
|
|
56
|
+
|
|
57
|
+
@Component({
|
|
58
|
+
imports: [ButtonDirective],
|
|
59
|
+
template: `
|
|
60
|
+
<button lumaButton lmVariant="primary" lmSize="md">Click me</button>
|
|
61
|
+
`,
|
|
62
|
+
})
|
|
63
|
+
export class MyComponent {}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Variants:** `primary` | `outline` | `ghost` | `danger`
|
|
67
|
+
|
|
68
|
+
**Sizes:** `sm` | `md` | `lg` | `full`
|
|
69
|
+
|
|
70
|
+
**Inputs:**
|
|
71
|
+
|
|
72
|
+
| Input | Type | Default | Description |
|
|
73
|
+
| ------------ | ----------------------------------------------- | ----------- | --------------------- |
|
|
74
|
+
| `lmVariant` | `'primary' \| 'outline' \| 'ghost' \| 'danger'` | `'primary'` | Visual style variant |
|
|
75
|
+
| `lmSize` | `'sm' \| 'md' \| 'lg' \| 'full'` | `'md'` | Size variant |
|
|
76
|
+
| `lmDisabled` | `boolean` | `false` | Disabled state |
|
|
77
|
+
| `lmType` | `'button' \| 'submit' \| 'reset'` | `'button'` | Button type attribute |
|
|
78
|
+
|
|
79
|
+
### Card
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import {
|
|
83
|
+
CardComponent,
|
|
84
|
+
CardHeaderDirective,
|
|
85
|
+
CardTitleDirective,
|
|
86
|
+
CardDescriptionDirective,
|
|
87
|
+
CardContentDirective,
|
|
88
|
+
} from '@lumaui/angular';
|
|
89
|
+
|
|
90
|
+
@Component({
|
|
91
|
+
imports: [
|
|
92
|
+
CardComponent,
|
|
93
|
+
CardHeaderDirective,
|
|
94
|
+
CardTitleDirective,
|
|
95
|
+
CardDescriptionDirective,
|
|
96
|
+
CardContentDirective,
|
|
97
|
+
],
|
|
98
|
+
template: `
|
|
99
|
+
<luma-card lmVariant="default">
|
|
100
|
+
<div lumaCardHeader>
|
|
101
|
+
<h3 lumaCardTitle lmSize="large">Card Title</h3>
|
|
102
|
+
<p lumaCardDescription>Optional description</p>
|
|
103
|
+
</div>
|
|
104
|
+
<div lumaCardContent>Your content here</div>
|
|
105
|
+
</luma-card>
|
|
106
|
+
`,
|
|
107
|
+
})
|
|
108
|
+
export class MyComponent {}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Card Variants:** `default` | `shadow` | `nested` | `preview`
|
|
112
|
+
|
|
113
|
+
## Components Reference
|
|
114
|
+
|
|
115
|
+
| Component | Selector | Description |
|
|
116
|
+
| -------------------------- | ------------------------------------- | -------------------- |
|
|
117
|
+
| `ButtonDirective` | `button[lumaButton]`, `a[lumaButton]` | Styled button/link |
|
|
118
|
+
| `CardComponent` | `luma-card` | Card container |
|
|
119
|
+
| `CardHeaderDirective` | `[lumaCardHeader]` | Card header section |
|
|
120
|
+
| `CardTitleDirective` | `[lumaCardTitle]` | Card title |
|
|
121
|
+
| `CardDescriptionDirective` | `[lumaCardDescription]` | Card description |
|
|
122
|
+
| `CardContentDirective` | `[lumaCardContent]` | Card content section |
|
|
123
|
+
|
|
124
|
+
## Dark Theme
|
|
125
|
+
|
|
126
|
+
Toggle dark theme by adding the `dark` class to your document:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// Enable dark theme
|
|
130
|
+
document.documentElement.classList.add('dark');
|
|
131
|
+
|
|
132
|
+
// Disable dark theme
|
|
133
|
+
document.documentElement.classList.remove('dark');
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Input Naming Convention
|
|
137
|
+
|
|
138
|
+
All Luma inputs use the `lm` prefix to avoid conflicts with native HTML attributes:
|
|
139
|
+
|
|
140
|
+
| Input | Type | Default | Description |
|
|
141
|
+
| ------------ | ------- | ---------- | --------------------- |
|
|
142
|
+
| `lmVariant` | string | varies | Visual style variant |
|
|
143
|
+
| `lmSize` | string | `'md'` | Size variant |
|
|
144
|
+
| `lmDisabled` | boolean | `false` | Disabled state |
|
|
145
|
+
| `lmType` | string | `'button'` | Button type attribute |
|
|
146
|
+
|
|
147
|
+
## Design Philosophy
|
|
148
|
+
|
|
149
|
+
Luma follows **Neo-Minimalism** principles:
|
|
150
|
+
|
|
151
|
+
- **Visual Silence** - Elements don't compete for attention
|
|
152
|
+
- **Functional Whitespace** - Space creates hierarchy
|
|
153
|
+
- **Calm Interactions** - Gentle, natural feedback
|
|
154
|
+
- **Silent Accessibility** - Accessibility is inherent, not an afterthought
|
|
155
|
+
|
|
156
|
+
## Browser Support
|
|
157
|
+
|
|
158
|
+
- Chrome (latest)
|
|
159
|
+
- Firefox (latest)
|
|
160
|
+
- Safari (latest)
|
|
161
|
+
- Edge (latest)
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
MIT
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lumaui/angular",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Angular components for Luma UI - Neo-Minimal design system",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./src/index.ts",
|
|
10
|
+
"./button": "./src/lib/button/index.ts",
|
|
11
|
+
"./card": "./src/lib/card/index.ts"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"src/",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"peerDependencies": {
|
|
18
|
+
"@angular/common": ">=19.0.0",
|
|
19
|
+
"@angular/core": ">=19.0.0",
|
|
20
|
+
"@lumaui/core": "^0.1.0",
|
|
21
|
+
"class-variance-authority": "^0.7.1"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"angular",
|
|
28
|
+
"components",
|
|
29
|
+
"design-system",
|
|
30
|
+
"neo-minimal",
|
|
31
|
+
"luma",
|
|
32
|
+
"lumaui",
|
|
33
|
+
"tailwind"
|
|
34
|
+
],
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/pureartisan/lumo.git",
|
|
38
|
+
"directory": "packages/angular"
|
|
39
|
+
},
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"author": "Luma UI Team",
|
|
42
|
+
"homepage": "https://github.com/pureartisan/lumo#readme",
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://github.com/pureartisan/lumo/issues"
|
|
45
|
+
}
|
|
46
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Button exports
|
|
2
|
+
export * from './lib/button/button.directive';
|
|
3
|
+
|
|
4
|
+
// Card exports
|
|
5
|
+
export * from './lib/card/card.component';
|
|
6
|
+
export * from './lib/card/card-title.directive';
|
|
7
|
+
export * from './lib/card/card-description.directive';
|
|
8
|
+
export * from './lib/card/card-header.directive';
|
|
9
|
+
export * from './lib/card/card-content.directive';
|