@a.nemreen/dga-ui 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 +400 -0
- package/fesm2022/a.nemreen-dga-ui.mjs +9855 -0
- package/index.d.ts +5 -0
- package/lib/content/code/dga-code.d.ts +8 -0
- package/lib/content/list/dga-description-list.d.ts +13 -0
- package/lib/content/list/dga-list.d.ts +7 -0
- package/lib/content/metric/dga-metric.d.ts +17 -0
- package/lib/content/number/dga-number.d.ts +36 -0
- package/lib/content/persona/dga-persona.d.ts +11 -0
- package/lib/content/quote/dga-quote.d.ts +7 -0
- package/lib/data/carousel/dga-carousel.d.ts +79 -0
- package/lib/data/chart/dga-chart.d.ts +153 -0
- package/lib/data/export/dga-export-toolbar.d.ts +19 -0
- package/lib/data/export/dga-export.d.ts +26 -0
- package/lib/data/table/dga-table.d.ts +50 -0
- package/lib/domain/saudi-cities/dga-saudi-cities.d.ts +16 -0
- package/lib/feedback/a11y/dga-skip-link.d.ts +11 -0
- package/lib/feedback/accessibility/dga-accessibility.d.ts +133 -0
- package/lib/feedback/accessibility/dga-accessibility.service.d.ts +78 -0
- package/lib/feedback/alert/dga-alert.d.ts +27 -0
- package/lib/feedback/cookies/dga-cookies.d.ts +64 -0
- package/lib/feedback/copy/dga-copy.d.ts +43 -0
- package/lib/feedback/empty/dga-empty.d.ts +11 -0
- package/lib/feedback/feedback/dga-feedback.d.ts +30 -0
- package/lib/feedback/page-feedback/dga-page-feedback.d.ts +72 -0
- package/lib/feedback/rating/dga-rating.d.ts +17 -0
- package/lib/feedback/share/dga-share.d.ts +39 -0
- package/lib/forms/autocomplete/dga-autocomplete.d.ts +19 -0
- package/lib/forms/checkbox/dga-checkbox.d.ts +9 -0
- package/lib/forms/chip-input/dga-chip-input.d.ts +20 -0
- package/lib/forms/date-picker/dga-date-calendar.d.ts +44 -0
- package/lib/forms/date-picker/dga-date-picker.d.ts +152 -0
- package/lib/forms/field/dga-field.d.ts +22 -0
- package/lib/forms/form/dga-form-control.d.ts +50 -0
- package/lib/forms/form/form-control.styles.d.ts +16 -0
- package/lib/forms/input/dga-input.d.ts +13 -0
- package/lib/forms/label/dga-label.d.ts +8 -0
- package/lib/forms/multiselect/dga-multiselect.d.ts +20 -0
- package/lib/forms/number-input/dga-number-input.d.ts +25 -0
- package/lib/forms/otp/dga-otp.d.ts +19 -0
- package/lib/forms/phone-input/dga-phone-input.d.ts +33 -0
- package/lib/forms/radio/dga-radio.d.ts +9 -0
- package/lib/forms/select/dga-native-select.d.ts +15 -0
- package/lib/forms/select/dga-select.d.ts +65 -0
- package/lib/forms/slider/dga-slider.d.ts +7 -0
- package/lib/forms/switch/dga-switch.d.ts +14 -0
- package/lib/forms/upload/dga-upload.d.ts +32 -0
- package/lib/layout/card/dga-card-media.d.ts +13 -0
- package/lib/layout/card/dga-card.d.ts +89 -0
- package/lib/layout/clamp/dga-clamp.d.ts +11 -0
- package/lib/layout/expandable/dga-expandable.d.ts +14 -0
- package/lib/layout/grid/dga-grid.d.ts +10 -0
- package/lib/layout/section/dga-section.d.ts +22 -0
- package/lib/navigation/accordion/dga-accordion-item.d.ts +12 -0
- package/lib/navigation/accordion/dga-accordion.d.ts +10 -0
- package/lib/navigation/breadcrumb/dga-breadcrumb.d.ts +13 -0
- package/lib/navigation/filter-bar/dga-filter-bar.d.ts +18 -0
- package/lib/navigation/pagination/dga-pagination.d.ts +14 -0
- package/lib/navigation/scroll-top/dga-scroll-top.d.ts +35 -0
- package/lib/navigation/side-nav/dga-side-nav.d.ts +21 -0
- package/lib/navigation/stepper/dga-stepper.d.ts +15 -0
- package/lib/navigation/tabs/dga-tab.d.ts +12 -0
- package/lib/navigation/tabs/dga-tabs.d.ts +14 -0
- package/lib/navigation/toc/dga-toc.d.ts +16 -0
- package/lib/navigation/toolbar/dga-toolbar.d.ts +7 -0
- package/lib/overlays/dialog/dga-dialog.d.ts +28 -0
- package/lib/overlays/drawer/dga-drawer.d.ts +28 -0
- package/lib/overlays/image-popup/dga-image-popup.d.ts +65 -0
- package/lib/overlays/menu/dga-menu.d.ts +50 -0
- package/lib/overlays/modal/dga-modal.d.ts +44 -0
- package/lib/overlays/toast/dga-toast-outlet.d.ts +11 -0
- package/lib/overlays/toast/dga-toast.d.ts +24 -0
- package/lib/overlays/toast/dga-toast.service.d.ts +39 -0
- package/lib/overlays/tooltip/dga-tooltip.d.ts +60 -0
- package/lib/primitives/avatar/dga-avatar.d.ts +13 -0
- package/lib/primitives/badge/dga-badge.d.ts +10 -0
- package/lib/primitives/button/dga-button.d.ts +20 -0
- package/lib/primitives/chip/dga-chip.d.ts +11 -0
- package/lib/primitives/divider/dga-divider.d.ts +10 -0
- package/lib/primitives/icon/dga-icon-badge.d.ts +14 -0
- package/lib/primitives/icon/dga-icon-font.service.d.ts +14 -0
- package/lib/primitives/icon/dga-icon-registry.d.ts +9 -0
- package/lib/primitives/icon/dga-icon.d.ts +40 -0
- package/lib/primitives/link/dga-link.d.ts +10 -0
- package/lib/primitives/progress/dga-progress.d.ts +25 -0
- package/lib/primitives/skeleton/dga-skeleton.d.ts +30 -0
- package/lib/primitives/spinner/dga-spinner.d.ts +12 -0
- package/lib/shell/footer/dga-footer.d.ts +60 -0
- package/lib/shell/header/dga-header.d.ts +343 -0
- package/lib/shell/hero/dga-hero.d.ts +128 -0
- package/lib/shell/logo-tile/dga-logo-tile.d.ts +11 -0
- package/lib/shell/preloader/dga-preloader.d.ts +55 -0
- package/lib/shell/side-info/dga-side-info.d.ts +19 -0
- package/lib/shell/top-bar/dga-top-bar.d.ts +63 -0
- package/lib/shell/top-bar/sa-flag.d.ts +2 -0
- package/lib/utils/cx.d.ts +2 -0
- package/lib/utils/locale.d.ts +2 -0
- package/package.json +61 -0
- package/public-api.d.ts +91 -0
package/README.md
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
# `@a.nemreen/dga-ui`
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@a.nemreen/dga-ui)
|
|
4
|
+
[](https://github.com/nemreen/dga-angular/blob/main/LICENSE)
|
|
5
|
+
[](https://angular.dev)
|
|
6
|
+
[](https://tailwindcss.com)
|
|
7
|
+
|
|
8
|
+
Standalone Angular UI components for the DGA design system — forms, overlays, navigation, portal shell, and layout. Styled with Tailwind utilities mapped to [`@a.nemreen/dga-tokens`](https://www.npmjs.com/package/@a.nemreen/dga-tokens).
|
|
9
|
+
|
|
10
|
+
> Version **0.1.x** until public API freeze.
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Standalone Angular 19 components (no NgModules)
|
|
15
|
+
- RTL-first / Arabic-ready (logical CSS + locale-aware chrome)
|
|
16
|
+
- Forms: input, select, checkbox, radio, switch, OTP, upload, date picker, …
|
|
17
|
+
- Overlays: dialog, modal, drawer, toast, menu, tooltip
|
|
18
|
+
- Shell: header, top bar, hero, footer, preloader
|
|
19
|
+
- Feedback & a11y: alert, cookies, accessibility panel, skip link
|
|
20
|
+
- Layout: card, section, grid, clamp, expandable
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @a.nemreen/dga-ui @a.nemreen/dga-tokens @platformscode/icons
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Peers:** `@angular/core` / `@angular/common` / `@angular/platform-browser` ^19, `@a.nemreen/dga-tokens` ^0.1, `@platformscode/icons` ^0.0.11.
|
|
29
|
+
|
|
30
|
+
## Library layout
|
|
31
|
+
|
|
32
|
+
Sources live under `src/lib/<domain>/<component>/`. Place new work in the matching domain — do not add new top-level peers under `lib/`.
|
|
33
|
+
|
|
34
|
+
| Domain | Use for |
|
|
35
|
+
|--------|---------|
|
|
36
|
+
| `primitives/` | Visual atoms (button, icon, badge, …) |
|
|
37
|
+
| `forms/` | Inputs, selects, field chrome |
|
|
38
|
+
| `overlays/` | Floating UI (dialog, toast, menu, …) |
|
|
39
|
+
| `feedback/` | Status and user-response UI (alert, cookies, a11y, …) |
|
|
40
|
+
| `navigation/` | Wayfinding (tabs, breadcrumb, side-nav, …) |
|
|
41
|
+
| `layout/` | Structure wrappers (card, section, grid, …) |
|
|
42
|
+
| `shell/` | Page chrome (header, footer, hero, …) |
|
|
43
|
+
| `content/` | Content presentation (list, quote, metric, …) |
|
|
44
|
+
| `data/` | Tables, charts, export |
|
|
45
|
+
| `domain/` | Locale/region data helpers (not UI) |
|
|
46
|
+
| `utils/` | Internal helpers only (not exported) |
|
|
47
|
+
|
|
48
|
+
Consumers always import from `@a.nemreen/dga-ui` — do not deep-import library paths.
|
|
49
|
+
|
|
50
|
+
## Setup
|
|
51
|
+
|
|
52
|
+
```css
|
|
53
|
+
@import 'tailwindcss';
|
|
54
|
+
@import '@a.nemreen/dga-tokens/styles.css';
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Load Arabic Google Fonts (IBM Plex default; see `@a.nemreen/dga-tokens` README / `DgaFontService`).
|
|
58
|
+
|
|
59
|
+
Scan library sources so Tailwind keeps component utilities (path may vary):
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
@source "../node_modules/@a.nemreen/dga-ui/**/*.{mjs,js}";
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import {
|
|
67
|
+
DgaButton,
|
|
68
|
+
DgaInput,
|
|
69
|
+
DgaLabel,
|
|
70
|
+
DgaBadge,
|
|
71
|
+
DgaAlert,
|
|
72
|
+
DgaCheckbox,
|
|
73
|
+
DgaRadio,
|
|
74
|
+
DgaSelect,
|
|
75
|
+
DgaNativeSelect,
|
|
76
|
+
DgaField,
|
|
77
|
+
DgaSpinner,
|
|
78
|
+
DgaDialog,
|
|
79
|
+
DgaToast,
|
|
80
|
+
DgaCard,
|
|
81
|
+
DgaDivider,
|
|
82
|
+
DgaIcon,
|
|
83
|
+
} from '@a.nemreen/dga-ui';
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Components
|
|
87
|
+
|
|
88
|
+
### Icon
|
|
89
|
+
|
|
90
|
+
Two layers:
|
|
91
|
+
|
|
92
|
+
1. **Chrome** — curated inline SVG via `name` (paints with the first frame; use in buttons, fields, menus).
|
|
93
|
+
2. **Content** — HugeIcons Stroke Rounded font via `glyph` (opt into `@a.nemreen/dga-tokens/styles/icon-font.css`).
|
|
94
|
+
|
|
95
|
+
```html
|
|
96
|
+
<!-- Chrome (always available) -->
|
|
97
|
+
<dga-icon name="search" size="sm" />
|
|
98
|
+
<dga-icon name="arrowNext" size="sm" label="التالي" />
|
|
99
|
+
|
|
100
|
+
<!-- Content (requires icon-font.css) -->
|
|
101
|
+
<dga-icon glyph="search-01" size="xl" />
|
|
102
|
+
<dga-icon glyph="notification-02" size="xl" tone="primary" />
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Use `arrowNext` / `arrowPrev` for forward/back — they mirror under `dir="rtl"`. Prefer literal `arrowLeft` / `arrowRight` only when you mean that physical direction.
|
|
106
|
+
|
|
107
|
+
Sizes (px): `2xs` 10 · `xs` 14 · `sm` 16 · `md` 18 · `lg` 20 · `xl` 24 · `2xl` 28 · `3xl` 32.
|
|
108
|
+
|
|
109
|
+
Full SVG catalog remains available from [@platformscode/icons](https://www.npmjs.com/package/@platformscode/icons) when you need a glyph outside the curated `name` list.
|
|
110
|
+
|
|
111
|
+
### Scroll to top
|
|
112
|
+
|
|
113
|
+
Floating control that appears after the page scrolls past a threshold. Mount once at the app root; it stacks above `dga-accessibility` by default.
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<dga-scroll-top position="end" [threshold]="320" />
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Button
|
|
120
|
+
|
|
121
|
+
```html
|
|
122
|
+
<button dgaButton type="button">حفظ</button>
|
|
123
|
+
<button dgaButton variant="outline" size="sm">إلغاء</button>
|
|
124
|
+
<button dgaButton variant="danger" disabled>حذف</button>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Input + Label + Field
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<label dgaLabel dgaRequired for="email">البريد</label>
|
|
131
|
+
<input dgaInput id="email" type="email" />
|
|
132
|
+
<textarea dgaInput rows="3"></textarea>
|
|
133
|
+
|
|
134
|
+
<dga-field label="البريد" controlId="email" required hint="لن نشارك بريدك.">
|
|
135
|
+
<input dgaInput id="email" type="email" />
|
|
136
|
+
</dga-field>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Select
|
|
140
|
+
|
|
141
|
+
Configurable select (search, multi, always-open):
|
|
142
|
+
|
|
143
|
+
```html
|
|
144
|
+
<dga-select [options]="cities" [(value)]="city" />
|
|
145
|
+
<dga-select searchable [options]="cities" [(value)]="city" />
|
|
146
|
+
<dga-select multiple [options]="cities" [(value)]="cities" />
|
|
147
|
+
<dga-select multiple searchable [options]="cities" [(value)]="cities" />
|
|
148
|
+
<dga-select openMode="always" [options]="cities" [(value)]="city" />
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Native `<select>` styling for simple forms:
|
|
152
|
+
|
|
153
|
+
```html
|
|
154
|
+
<select dgaSelect>
|
|
155
|
+
<option value="riyadh">الرياض</option>
|
|
156
|
+
</select>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Checkbox + Radio
|
|
160
|
+
|
|
161
|
+
```html
|
|
162
|
+
<label>
|
|
163
|
+
<input dgaCheckbox type="checkbox" />
|
|
164
|
+
أوافق
|
|
165
|
+
</label>
|
|
166
|
+
|
|
167
|
+
<label>
|
|
168
|
+
<input dgaRadio type="radio" name="plan" value="basic" />
|
|
169
|
+
أساسية
|
|
170
|
+
</label>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Badge
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<dga-badge variant="success">مكتمل</dga-badge>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Alert
|
|
180
|
+
|
|
181
|
+
```html
|
|
182
|
+
<dga-alert variant="warning" title="تنبيه">تحقق من البيانات.</dga-alert>
|
|
183
|
+
<dga-alert dismissible (dismissed)="onDismiss()">يمكن إغلاقه</dga-alert>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Spinner
|
|
187
|
+
|
|
188
|
+
```html
|
|
189
|
+
<dga-spinner />
|
|
190
|
+
<dga-spinner size="lg" tone="neutral" />
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Preloader (optional first-load)
|
|
194
|
+
|
|
195
|
+
Full-screen brand overlay; auto-hides when the document is ready and `minDuration` elapses. Omit the tag if you do not want it.
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<dga-preloader
|
|
199
|
+
brand="بوابة الخدمات"
|
|
200
|
+
label="جاري التحميل"
|
|
201
|
+
[minDuration]="1000"
|
|
202
|
+
[once]="true"
|
|
203
|
+
persist="local"
|
|
204
|
+
/>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
- `once` + `persist="local"` - show only on the visitor’s first visit
|
|
208
|
+
- `persist="session"` - once per tab session
|
|
209
|
+
- `persist="none"` or `[once]="false"` - every load
|
|
210
|
+
- Optional `logoSrc` replaces the default geometric mark
|
|
211
|
+
- `(closed)` fires after the exit animation
|
|
212
|
+
|
|
213
|
+
```ts
|
|
214
|
+
import { DgaPreloader } from '@a.nemreen/dga-ui';
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Dialog
|
|
218
|
+
|
|
219
|
+
```html
|
|
220
|
+
<dga-dialog [(open)]="open" title="تأكيد">
|
|
221
|
+
<p>هل أنت متأكد؟</p>
|
|
222
|
+
<div dgaDialogActions>
|
|
223
|
+
<button dgaButton variant="ghost" (click)="open = false">إلغاء</button>
|
|
224
|
+
<button dgaButton (click)="confirm()">تأكيد</button>
|
|
225
|
+
</div>
|
|
226
|
+
</dga-dialog>
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Modal
|
|
230
|
+
|
|
231
|
+
```html
|
|
232
|
+
<dga-modal
|
|
233
|
+
[(open)]="open"
|
|
234
|
+
title="تفاصيل الطلب"
|
|
235
|
+
description="راجع البيانات قبل المتابعة"
|
|
236
|
+
size="lg"
|
|
237
|
+
animation="scale"
|
|
238
|
+
>
|
|
239
|
+
<p>محتوى النافذة المنبثقة.</p>
|
|
240
|
+
<div dgaModalActions>
|
|
241
|
+
<button dgaButton variant="ghost" (click)="open = false">إلغاء</button>
|
|
242
|
+
<button dgaButton (click)="confirm()">تأكيد</button>
|
|
243
|
+
</div>
|
|
244
|
+
</dga-modal>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Toast
|
|
248
|
+
|
|
249
|
+
```html
|
|
250
|
+
<dga-toast [(open)]="show" variant="success" title="تم">حُفظ السجل.</dga-toast>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Tooltip / Switch / Progress / Nav (Wave I)
|
|
254
|
+
|
|
255
|
+
```html
|
|
256
|
+
<dga-switch [(checked)]="on" label="الإشعارات" />
|
|
257
|
+
<a dgaLink href="#">رابط</a>
|
|
258
|
+
<dga-progress [value]="60" />
|
|
259
|
+
<dga-skeleton />
|
|
260
|
+
<dga-skeleton [lines]="3" animation="shimmer" />
|
|
261
|
+
<dga-skeleton shape="circle" size="lg" />
|
|
262
|
+
<dga-tooltip title="مساعدة" text="وصف مختصر">
|
|
263
|
+
<button dgaButton size="sm">؟</button>
|
|
264
|
+
</dga-tooltip>
|
|
265
|
+
|
|
266
|
+
<dga-breadcrumb [items]="[{ label: 'الرئيسية', href: '#' }, { label: 'الحالي' }]" />
|
|
267
|
+
<dga-tabs [(selected)]="tab">
|
|
268
|
+
<dga-tab value="a" label="أ">...</dga-tab>
|
|
269
|
+
</dga-tabs>
|
|
270
|
+
<dga-accordion>
|
|
271
|
+
<dga-accordion-item title="سؤال">جواب</dga-accordion-item>
|
|
272
|
+
</dga-accordion>
|
|
273
|
+
<dga-pagination [(page)]="page" [totalPages]="10" />
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Layout recipes
|
|
277
|
+
|
|
278
|
+
Prefer DGA spacing tokens (`gap-md`, `p-xl`, `py-3xl`) over raw pixel values. For page width, use `max-w-(--container-*)` - plain `max-w-5xl` binds to the spacing scale in Tailwind v4.
|
|
279
|
+
|
|
280
|
+
### Stack (column)
|
|
281
|
+
|
|
282
|
+
```html
|
|
283
|
+
<div class="flex flex-col gap-md">
|
|
284
|
+
<p>صف واحد</p>
|
|
285
|
+
<p>صف آخر</p>
|
|
286
|
+
</div>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Inline row
|
|
290
|
+
|
|
291
|
+
```html
|
|
292
|
+
<div class="flex flex-wrap items-center gap-md">
|
|
293
|
+
<button dgaButton>حفظ</button>
|
|
294
|
+
<button dgaButton variant="ghost">إلغاء</button>
|
|
295
|
+
</div>
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Split (space between)
|
|
299
|
+
|
|
300
|
+
```html
|
|
301
|
+
<div class="flex items-center justify-between gap-xl">
|
|
302
|
+
<h2 class="text-display-sm">العنوان</h2>
|
|
303
|
+
<div class="flex gap-sm">…</div>
|
|
304
|
+
</div>
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Responsive grid
|
|
308
|
+
|
|
309
|
+
```html
|
|
310
|
+
<div class="grid grid-cols-1 gap-lg md:grid-cols-2 lg:grid-cols-3">
|
|
311
|
+
<dga-card title="أ">…</dga-card>
|
|
312
|
+
<dga-card title="ب">…</dga-card>
|
|
313
|
+
<dga-card title="ج">…</dga-card>
|
|
314
|
+
</div>
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Or use the thin wrapper:
|
|
318
|
+
|
|
319
|
+
```html
|
|
320
|
+
<dga-grid [cols]="3" gap="lg">
|
|
321
|
+
<dga-card title="أ">…</dga-card>
|
|
322
|
+
<dga-card title="ب">…</dga-card>
|
|
323
|
+
<dga-card title="ج">…</dga-card>
|
|
324
|
+
</dga-grid>
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Contained section
|
|
328
|
+
|
|
329
|
+
```html
|
|
330
|
+
<dga-section title="القسم" subtitle="وصف قصير" contained>
|
|
331
|
+
محتوى القسم
|
|
332
|
+
</dga-section>
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Portal home shell (consumable across apps)
|
|
336
|
+
|
|
337
|
+
Compose the official home template with library primitives only - no page-local CSS required:
|
|
338
|
+
|
|
339
|
+
```html
|
|
340
|
+
<dga-top-bar registrationId="00000000000" />
|
|
341
|
+
|
|
342
|
+
<dga-header
|
|
343
|
+
appearance="portal"
|
|
344
|
+
mobileNav="sheet"
|
|
345
|
+
brand="شعار المنصة"
|
|
346
|
+
brandSlogan="بوابة الجهة"
|
|
347
|
+
brandHref="/"
|
|
348
|
+
[items]="navItems"
|
|
349
|
+
[actions]="headerActions"
|
|
350
|
+
(actionClick)="onAction($event)"
|
|
351
|
+
/>
|
|
352
|
+
<!-- mobileNav: sheet | fullscreen | push -->
|
|
353
|
+
|
|
354
|
+
<dga-hero appearance="portal" [slides]="heroSlides" [(activeIndex)]="i" />
|
|
355
|
+
|
|
356
|
+
<dga-section
|
|
357
|
+
width="wide"
|
|
358
|
+
tone="surface"
|
|
359
|
+
title="قسم من نحن"
|
|
360
|
+
subtitle="…"
|
|
361
|
+
>
|
|
362
|
+
<button dgaSectionActions dgaButton variant="outline">إجراء ثانوي</button>
|
|
363
|
+
<dga-grid [cols]="4" gap="xl">
|
|
364
|
+
<dga-metric appearance="stat" value="1.5M" label="شخص">
|
|
365
|
+
<dga-icon-badge dgaMetricIcon>
|
|
366
|
+
<dga-icon name="user" tone="primary" />
|
|
367
|
+
</dga-icon-badge>
|
|
368
|
+
</dga-metric>
|
|
369
|
+
</dga-grid>
|
|
370
|
+
</dga-section>
|
|
371
|
+
|
|
372
|
+
<dga-card title="عنوان البطاقة" description="نص إضافي">
|
|
373
|
+
<dga-icon-badge dgaCardLead>
|
|
374
|
+
<dga-icon name="home" tone="primary" />
|
|
375
|
+
</dga-icon-badge>
|
|
376
|
+
<div dgaCardActions>
|
|
377
|
+
<button dgaButton variant="outline" size="sm">اجراء ثانوي</button>
|
|
378
|
+
<button dgaButton size="sm">اجراء</button>
|
|
379
|
+
</div>
|
|
380
|
+
</dga-card>
|
|
381
|
+
|
|
382
|
+
<dga-card>
|
|
383
|
+
<dga-card-media dgaCardMedia alt="خبر" />
|
|
384
|
+
…
|
|
385
|
+
</dga-card>
|
|
386
|
+
|
|
387
|
+
<dga-logo-tile label="شريك" />
|
|
388
|
+
<dga-footer [columns]="footerColumns" copyright="…" />
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Portal tokens (layout sizes): `--size-hero-portal` (491px), `--size-header-portal` (72px), `--size-icon-badge` (40px), `--size-dot` (16px).
|
|
392
|
+
|
|
393
|
+
### Content + sticky aside
|
|
394
|
+
|
|
395
|
+
```html
|
|
396
|
+
<div class="mx-auto grid max-w-(--container-7xl) gap-3xl px-xl md:grid-cols-[1fr_auto]">
|
|
397
|
+
<main class="min-w-0">…</main>
|
|
398
|
+
<dga-side-info title="في هذه الصفحة" [items]="tocItems" />
|
|
399
|
+
</div>
|
|
400
|
+
```
|