@egose/shadcn-theme-ng 0.1.0 → 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/README.md +1 -1
- package/accordion/README.md +405 -2
- package/alert/README.md +372 -2
- package/alert-dialog/README.md +471 -5
- package/aspect-ratio/README.md +272 -5
- package/autocomplete/README.md +502 -2
- package/avatar/README.md +357 -5
- package/badge/README.md +318 -2
- package/basic-alert/README.md +353 -2
- package/breadcrumb/README.md +406 -5
- package/button/README.md +482 -2
- package/button/fesm2022/button.mjs +85 -107
- package/button/types/button.d.ts +5 -8
- package/button-group/README.md +318 -5
- package/calendar/README.md +357 -2
- package/card/README.md +331 -5
- package/carousel/README.md +333 -5
- package/carousel/fesm2022/carousel.mjs +4 -1
- package/checkbox/README.md +320 -2
- package/collapsible/README.md +332 -5
- package/combobox/README.md +507 -5
- package/combobox/fesm2022/combobox.mjs +4 -1
- package/command/README.md +435 -5
- package/confirmation-dialog/README.md +301 -2
- package/context-menu/README.md +366 -5
- package/date-picker/README.md +465 -2
- package/date-picker/fesm2022/date-picker.mjs +2 -2
- package/dialog/README.md +448 -2
- package/drawer/README.md +395 -5
- package/dropdown-menu/README.md +417 -5
- package/empty/README.md +329 -5
- package/field/README.md +385 -5
- package/form-checkbox/README.md +312 -2
- package/form-date-picker/README.md +322 -2
- package/form-field/README.md +356 -2
- package/form-field-simple/README.md +340 -2
- package/form-searchable-multiselect/README.md +361 -2
- package/form-select/README.md +350 -2
- package/form-text-input/README.md +371 -2
- package/form-textarea/README.md +347 -2
- package/hover-card/README.md +256 -5
- package/icon/README.md +239 -2
- package/input/README.md +269 -2
- package/input-group/README.md +335 -5
- package/input-group/fesm2022/input-group.mjs +3 -3
- package/input-otp/README.md +375 -5
- package/item/README.md +385 -5
- package/item/fesm2022/item.mjs +3 -3
- package/kbd/README.md +291 -5
- package/label/README.md +272 -2
- package/layout-simple/README.md +193 -2
- package/layout-simple/fesm2022/layout-simple.mjs +472 -236
- package/layout-simple/types/layout-simple.d.ts +174 -137
- package/menu/README.md +417 -2
- package/menubar/README.md +343 -5
- package/native-select/README.md +323 -5
- package/navigation-menu/README.md +369 -5
- package/package.json +1 -1
- package/pagination/README.md +388 -5
- package/popover/README.md +331 -2
- package/progress/README.md +311 -5
- package/radio-group/README.md +364 -2
- package/radio-group/fesm2022/radio-group.mjs +5 -1
- package/radio-group/types/radio-group.d.ts +1 -1
- package/resizable/README.md +269 -5
- package/scroll-area/README.md +233 -5
- package/searchable-multiselect/README.md +323 -2
- package/select/README.md +437 -2
- package/separator/README.md +222 -2
- package/sheet/README.md +311 -2
- package/sidebar/README.md +457 -5
- package/skeleton/README.md +217 -5
- package/slider/README.md +273 -5
- package/slider/fesm2022/slider.mjs +3 -3
- package/sonner/README.md +346 -2
- package/spinner/README.md +284 -2
- package/switch/README.md +310 -2
- package/table/README.md +423 -5
- package/tabs/README.md +411 -2
- package/tabs/fesm2022/tabs.mjs +2 -2
- package/textarea/README.md +282 -5
- package/toggle/README.md +270 -5
- package/toggle-group/README.md +340 -5
- package/tooltip/README.md +269 -2
- package/typography/README.md +271 -5
- package/typography/types/typography.d.ts +8 -8
- package/utils/README.md +303 -2
package/card/README.md
CHANGED
|
@@ -1,11 +1,337 @@
|
|
|
1
|
-
# Card
|
|
1
|
+
# Card (`@egose/shadcn-theme-ng/card`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A shadcn/ui-style content card — the Angular port of shadcn/ui `Card`. Seven thin attribute/element directives (`HlmCard`, `HlmCardHeader`, `HlmCardTitle`, `HlmCardDescription`, `HlmCardAction`, `HlmCardContent`, `HlmCardFooter`) compose a rounded, ringed, theme-aware container with a `--card-spacing` rhythm token and a `size: 'sm' | 'default'` density switch. There is no headless primitive and no JavaScript behavior: every directive only attaches `data-slot` attributes and Tailwind classes via the shared `classes()` helper.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Ships as `@egose/shadcn-theme-ng/card` and `@egose/shadcn-theme-ng-tw/card` (the `tw:`-prefixed variant). See the [package README](../../README.md) for install, peer dependencies, and Tailwind setup. Do not publish this project directory independently — it is consumed via the published subpath only.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Installation
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# Plain Tailwind (no prefix):
|
|
11
|
+
npm install @egose/shadcn-theme-ng
|
|
12
|
+
|
|
13
|
+
# Or the tw:-prefixed variant:
|
|
14
|
+
npm install @egose/shadcn-theme-ng-tw
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Peers are listed in the [package README](../../README.md). This subpath declares `@angular/common`, `@angular/core`, and `@spartan-ng/brain` as peers (see `projects/card/package.json`).
|
|
18
|
+
|
|
19
|
+
## Imports
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import {
|
|
23
|
+
HlmCard,
|
|
24
|
+
HlmCardHeader,
|
|
25
|
+
HlmCardTitle,
|
|
26
|
+
HlmCardDescription,
|
|
27
|
+
HlmCardAction,
|
|
28
|
+
HlmCardContent,
|
|
29
|
+
HlmCardFooter,
|
|
30
|
+
HlmCardImports,
|
|
31
|
+
HlmCardModule,
|
|
32
|
+
} from '@egose/shadcn-theme-ng/card';
|
|
33
|
+
// tw variant:
|
|
34
|
+
// import { ... } from '@egose/shadcn-theme-ng-tw/card';
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Standalone:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { Component } from '@angular/core';
|
|
41
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
42
|
+
|
|
43
|
+
@Component({
|
|
44
|
+
selector: 'app-demo',
|
|
45
|
+
standalone: true,
|
|
46
|
+
imports: [...HlmCardImports],
|
|
47
|
+
template: `...`,
|
|
48
|
+
})
|
|
49
|
+
export class DemoComponent {}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
NgModule:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { NgModule } from '@angular/core';
|
|
56
|
+
import { HlmCardModule } from '@egose/shadcn-theme-ng/card';
|
|
57
|
+
|
|
58
|
+
@NgModule({ imports: [HlmCardModule] })
|
|
59
|
+
export class DemoModule {}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> `HlmCardConfig` / `provideHlmCardConfig` / `injectHlmCardConfig` exist in `lib/hlm-card.token.ts` but are **not** re-exported from `public-api.ts` — the only public density API is the `size` input on `HlmCard`.
|
|
63
|
+
|
|
64
|
+
## Anatomy / Structure
|
|
65
|
+
|
|
66
|
+
```html
|
|
67
|
+
<hlm-card size="default">
|
|
68
|
+
<hlm-card-header>
|
|
69
|
+
<h3 hlmCardTitle>Title</h3>
|
|
70
|
+
<p hlmCardDescription>Description</p>
|
|
71
|
+
<div hlmCardAction><!-- header action (button, badge, switch) --></div>
|
|
72
|
+
</hlm-card-header>
|
|
73
|
+
<div hlmCardContent><!-- body --></div>
|
|
74
|
+
<hlm-card-footer><!-- footer actions --></hlm-card-footer>
|
|
75
|
+
</hlm-card>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
All-attribute form also works (`<div hlmCard>`, `<div hlmCardHeader>`, …). Real selectors:
|
|
79
|
+
|
|
80
|
+
| Class | Selectors | `data-slot` |
|
|
81
|
+
| -------------------- | ------------------------------------ | ---------------------- |
|
|
82
|
+
| `HlmCard` | `[hlmCard]`, `hlm-card` | `card` (+ `data-size`) |
|
|
83
|
+
| `HlmCardHeader` | `[hlmCardHeader]`, `hlm-card-header` | `card-header` |
|
|
84
|
+
| `HlmCardTitle` | `[hlmCardTitle]` | `card-title` |
|
|
85
|
+
| `HlmCardDescription` | `[hlmCardDescription]` | `card-description` |
|
|
86
|
+
| `HlmCardAction` | `[hlmCardAction]` | `card-action` |
|
|
87
|
+
| `HlmCardContent` | `[hlmCardContent]` | `card-content` |
|
|
88
|
+
| `HlmCardFooter` | `[hlmCardFooter]`, `hlm-card-footer` | `card-footer` |
|
|
89
|
+
|
|
90
|
+
Header auto-switches to a two-column grid when a `card-action` child is present (`has-data-[slot=card-action]`); images placed first/last get top/bottom rounding and collapse the top padding.
|
|
91
|
+
|
|
92
|
+
## API reference
|
|
93
|
+
|
|
94
|
+
### `HlmCard`
|
|
95
|
+
|
|
96
|
+
| Input | Type | Default | Description |
|
|
97
|
+
| ------ | ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
98
|
+
| `size` | `'sm' \| 'default'` | `'default'` | Density. `'sm'` shrinks `--card-spacing` from `--spacing(6)` to `--spacing(4)` and shrinks `card-title` via `group-data-[size=sm]/card`. Reflected as `data-size`. |
|
|
99
|
+
|
|
100
|
+
No outputs or methods.
|
|
101
|
+
|
|
102
|
+
### Header / body / footer directives
|
|
103
|
+
|
|
104
|
+
All six are thin wrappers with no inputs, outputs, or methods:
|
|
105
|
+
|
|
106
|
+
| Directive | Notes |
|
|
107
|
+
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
+
| `HlmCardHeader` | Grid container; `group/card-header`, `@container/card-header`. Add `border-b` class to get bottom padding rhythm (`[.border-b]:pb-(--card-spacing)`). |
|
|
109
|
+
| `HlmCardTitle` | `text-base font-medium`; auto-shrinks under `data-[size=sm]` cards. Apply to any heading element. |
|
|
110
|
+
| `HlmCardDescription` | Muted `text-sm` paragraph. |
|
|
111
|
+
| `HlmCardAction` | Grid-placed (`col-start-2 row-span-2`) top-right action slot. |
|
|
112
|
+
| `HlmCardContent` | Horizontal `--card-spacing` padding; calendars/popovers render transparent inside it by convention. |
|
|
113
|
+
| `HlmCardFooter` | Flex row; add `border-t` class to get top padding rhythm (`[.border-t]:pt-(--card-spacing)`). |
|
|
114
|
+
|
|
115
|
+
## Examples
|
|
116
|
+
|
|
117
|
+
### 1. Basic card
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
import { Component } from '@angular/core';
|
|
121
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
122
|
+
import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
|
|
123
|
+
|
|
124
|
+
@Component({
|
|
125
|
+
selector: 'app-basic-card',
|
|
126
|
+
standalone: true,
|
|
127
|
+
imports: [...HlmCardImports, ...HlmButtonImports],
|
|
128
|
+
template: `
|
|
129
|
+
<div hlmCard class="w-96">
|
|
130
|
+
<div hlmCardHeader>
|
|
131
|
+
<h3 hlmCardTitle>Notifications</h3>
|
|
132
|
+
<p hlmCardDescription>You have 3 unread messages.</p>
|
|
133
|
+
</div>
|
|
134
|
+
<div hlmCardContent>
|
|
135
|
+
<p class="text-sm">Push notifications, mentions, and replies live here.</p>
|
|
136
|
+
</div>
|
|
137
|
+
<hlm-card-footer>
|
|
138
|
+
<button hlmBtn variant="outline">Settings</button>
|
|
139
|
+
</hlm-card-footer>
|
|
140
|
+
</div>
|
|
141
|
+
`,
|
|
142
|
+
})
|
|
143
|
+
export class BasicCardComponent {}
|
|
11
144
|
```
|
|
145
|
+
|
|
146
|
+
> The footer example above assumes `HlmButtonImports` is also imported for `hlmBtn`.
|
|
147
|
+
|
|
148
|
+
### 2. Density sizes (`default` vs `sm`)
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
import { Component } from '@angular/core';
|
|
152
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
153
|
+
|
|
154
|
+
@Component({
|
|
155
|
+
selector: 'app-density-cards',
|
|
156
|
+
standalone: true,
|
|
157
|
+
imports: [...HlmCardImports],
|
|
158
|
+
template: `
|
|
159
|
+
<div class="flex gap-4">
|
|
160
|
+
<hlm-card size="default" class="w-72">
|
|
161
|
+
<hlm-card-header>
|
|
162
|
+
<h3 hlmCardTitle>Default density</h3>
|
|
163
|
+
<p hlmCardDescription>--card-spacing: spacing(6)</p>
|
|
164
|
+
</hlm-card-header>
|
|
165
|
+
<div hlmCardContent>Roomy padding for dashboards.</div>
|
|
166
|
+
</hlm-card>
|
|
167
|
+
<hlm-card size="sm" class="w-72">
|
|
168
|
+
<hlm-card-header>
|
|
169
|
+
<h3 hlmCardTitle>Compact density</h3>
|
|
170
|
+
<p hlmCardDescription>--card-spacing: spacing(4)</p>
|
|
171
|
+
</hlm-card-header>
|
|
172
|
+
<div hlmCardContent>Tight padding for lists and sidebars.</div>
|
|
173
|
+
</hlm-card>
|
|
174
|
+
</div>
|
|
175
|
+
`,
|
|
176
|
+
})
|
|
177
|
+
export class DensityCardsComponent {}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 3. Header action slot
|
|
181
|
+
|
|
182
|
+
`hlmCardAction` docks to the top-right of the header grid automatically.
|
|
183
|
+
|
|
184
|
+
```ts
|
|
185
|
+
import { Component } from '@angular/core';
|
|
186
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
187
|
+
import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
|
|
188
|
+
|
|
189
|
+
@Component({
|
|
190
|
+
selector: 'app-action-card',
|
|
191
|
+
standalone: true,
|
|
192
|
+
imports: [...HlmCardImports, ...HlmButtonImports],
|
|
193
|
+
template: `
|
|
194
|
+
<hlm-card class="w-96">
|
|
195
|
+
<hlm-card-header>
|
|
196
|
+
<h3 hlmCardTitle>Team plan</h3>
|
|
197
|
+
<p hlmCardDescription>Billed monthly, cancel anytime.</p>
|
|
198
|
+
<button hlmBtn size="sm" hlmCardAction>Upgrade</button>
|
|
199
|
+
</hlm-card-header>
|
|
200
|
+
<div hlmCardContent>
|
|
201
|
+
<p class="text-3xl font-semibold">$29<span class="text-sm font-normal">/mo</span></p>
|
|
202
|
+
</div>
|
|
203
|
+
</hlm-card>
|
|
204
|
+
`,
|
|
205
|
+
})
|
|
206
|
+
export class ActionCardComponent {}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### 4. Bordered header/footer rhythm
|
|
210
|
+
|
|
211
|
+
Padding for divided cards is opt-in: add `border-b` / `border-t` and the matching padding appears.
|
|
212
|
+
|
|
213
|
+
```ts
|
|
214
|
+
import { Component } from '@angular/core';
|
|
215
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
216
|
+
import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
|
|
217
|
+
|
|
218
|
+
@Component({
|
|
219
|
+
selector: 'app-divided-card',
|
|
220
|
+
standalone: true,
|
|
221
|
+
imports: [...HlmCardImports, ...HlmButtonImports],
|
|
222
|
+
template: `
|
|
223
|
+
<hlm-card class="w-96">
|
|
224
|
+
<hlm-card-header class="border-b">
|
|
225
|
+
<h3 hlmCardTitle>Audit log</h3>
|
|
226
|
+
<p hlmCardDescription>Last 7 days across all projects.</p>
|
|
227
|
+
</hlm-card-header>
|
|
228
|
+
<div hlmCardContent class="pt-4">
|
|
229
|
+
<ul class="space-y-2 text-sm">
|
|
230
|
+
<li>Deploy succeeded — main @ 14:02</li>
|
|
231
|
+
<li>Invite accepted — ada@example.com</li>
|
|
232
|
+
<li>Token rotated — CI</li>
|
|
233
|
+
</ul>
|
|
234
|
+
</div>
|
|
235
|
+
<hlm-card-footer class="border-t justify-end gap-2">
|
|
236
|
+
<button hlmBtn variant="ghost">Export</button>
|
|
237
|
+
<button hlmBtn variant="outline">View all</button>
|
|
238
|
+
</hlm-card-footer>
|
|
239
|
+
</div>
|
|
240
|
+
`,
|
|
241
|
+
})
|
|
242
|
+
export class DividedCardComponent {}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
> Requires `HlmButtonImports` for `hlmBtn`.
|
|
246
|
+
|
|
247
|
+
### 5. Image card (rounded media edges)
|
|
248
|
+
|
|
249
|
+
A leading `<img>` collapses the card's top padding and inherits the top radius; a trailing image inherits the bottom radius.
|
|
250
|
+
|
|
251
|
+
```ts
|
|
252
|
+
import { Component } from '@angular/core';
|
|
253
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
254
|
+
|
|
255
|
+
@Component({
|
|
256
|
+
selector: 'app-media-card',
|
|
257
|
+
standalone: true,
|
|
258
|
+
imports: [...HlmCardImports],
|
|
259
|
+
template: `
|
|
260
|
+
<hlm-card class="w-80 overflow-hidden">
|
|
261
|
+
<img src="https://picsum.photos/640/360" alt="Random landscape" class="h-40 w-full object-cover" />
|
|
262
|
+
<hlm-card-header>
|
|
263
|
+
<h3 hlmCardTitle>Lakeview cabin</h3>
|
|
264
|
+
<p hlmCardDescription>Entire home · 4 guests · 2 beds</p>
|
|
265
|
+
</hlm-card-header>
|
|
266
|
+
<div hlmCardContent>
|
|
267
|
+
<p class="text-sm">Morning fog, evening loons. Kayaks included.</p>
|
|
268
|
+
</div>
|
|
269
|
+
</hlm-card>
|
|
270
|
+
`,
|
|
271
|
+
})
|
|
272
|
+
export class MediaCardComponent {}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 6. Composed card: form + calendar + footer actions
|
|
276
|
+
|
|
277
|
+
Cards are the standard host for heavier compositions; inner calendars/popovers already render transparent.
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
import { Component, signal } from '@angular/core';
|
|
281
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
282
|
+
import { HlmCardImports } from '@egose/shadcn-theme-ng/card';
|
|
283
|
+
import { HlmCalendarImports } from '@egose/shadcn-theme-ng/calendar';
|
|
284
|
+
import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
|
|
285
|
+
import { HlmInput } from '@egose/shadcn-theme-ng/input';
|
|
286
|
+
import { provideNativeDateAdapter } from '@spartan-ng/brain/date-time';
|
|
287
|
+
|
|
288
|
+
@Component({
|
|
289
|
+
selector: 'app-composed-card',
|
|
290
|
+
standalone: true,
|
|
291
|
+
imports: [ReactiveFormsModule, ...HlmCardImports, ...HlmCalendarImports, ...HlmButtonImports, HlmInput],
|
|
292
|
+
providers: [provideNativeDateAdapter()],
|
|
293
|
+
template: `
|
|
294
|
+
<hlm-card class="w-[26rem]">
|
|
295
|
+
<hlm-card-header>
|
|
296
|
+
<h3 hlmCardTitle>Book a room</h3>
|
|
297
|
+
<p hlmCardDescription>Name the trip, then pick the day.</p>
|
|
298
|
+
</hlm-card-header>
|
|
299
|
+
<div hlmCardContent class="space-y-4">
|
|
300
|
+
<input hlmInput placeholder="Trip name" [formControl]="name" />
|
|
301
|
+
<hlm-calendar [date]="date()" (dateChange)="date.set($event)" />
|
|
302
|
+
</div>
|
|
303
|
+
<hlm-card-footer class="justify-end gap-2">
|
|
304
|
+
<button hlmBtn variant="ghost" (click)="reset()">Reset</button>
|
|
305
|
+
<button hlmBtn [disabled]="!name.value || !date()">Book</button>
|
|
306
|
+
</hlm-card-footer>
|
|
307
|
+
</div>
|
|
308
|
+
`,
|
|
309
|
+
})
|
|
310
|
+
export class ComposedCardComponent {
|
|
311
|
+
readonly name = new FormControl('');
|
|
312
|
+
readonly date = signal<Date | undefined>(undefined);
|
|
313
|
+
reset() {
|
|
314
|
+
this.name.reset('');
|
|
315
|
+
this.date.set(undefined);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## Accessibility notes
|
|
321
|
+
|
|
322
|
+
- Cards are generic containers with no landmark semantics — use real headings (`h2`/`h3` + `hlmCardTitle`) inside `hlmCardHeader` so assistive tech gets an outline.
|
|
323
|
+
- Do not nest interactive elements inside `hlmCardAction` incorrectly (e.g. a `<button>` inside an `<a>` card) — keep one interactive root or use stretched-link patterns deliberately.
|
|
324
|
+
- `hlmCardDescription` is a plain paragraph; wire it to form controls with `aria-describedby` yourself when the card describes a field.
|
|
325
|
+
- Color contrast comes from `bg-card` / `text-card-foreground` / `text-muted-foreground` theme tokens — verify custom `class` overrides preserve contrast.
|
|
326
|
+
|
|
327
|
+
## Theming / CSS variables
|
|
328
|
+
|
|
329
|
+
- `--card-spacing` (default `--spacing(6)`, `'sm'` → `--spacing(4)`): gap, vertical padding, and horizontal padding rhythm. Override per card: `<hlm-card class="[--card-spacing:--spacing(8)]">`.
|
|
330
|
+
- Surface tokens: `bg-card`, `text-card-foreground`, `ring-foreground/10`, `shadow-xs`, `rounded-xl`. Dark mode follows the shared theme.
|
|
331
|
+
|
|
332
|
+
## Related subpaths
|
|
333
|
+
|
|
334
|
+
- `@egose/shadcn-theme-ng/button` — footer/header actions (`hlmBtn`).
|
|
335
|
+
- `@egose/shadcn-theme-ng/badge` — status pills commonly placed in `hlmCardAction`.
|
|
336
|
+
- `@egose/shadcn-theme-ng/calendar` — transparent inside `card-content` by design.
|
|
337
|
+
- `@egose/shadcn-theme-ng/input` / `label` — form rows inside `hlmCardContent`.
|