sdga-ui 1.0.6 → 1.0.7
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 +4 -4
- package/css/dga-ui.css +4146 -1040
- package/css/dga-ui.css.map +1 -1
- package/demo-angular/package-lock.json +41 -41
- package/demo-angular/package.json +8 -8
- package/demo-angular/public/404.html +35 -0
- package/demo-angular/public/i18n/ar.json +47 -0
- package/demo-angular/public/i18n/en.json +47 -0
- package/demo-angular/src/app/app.routes.ts +12 -4
- package/demo-angular/src/app/app.ts +8 -2
- package/demo-angular/src/app/views/alerts/alerts.component.html +10 -10
- package/demo-angular/src/app/views/alerts/alerts.component.ts +10 -10
- package/demo-angular/src/app/views/buttons/buttons.component.html +23 -23
- package/demo-angular/src/app/views/buttons/buttons.component.ts +14 -14
- package/demo-angular/src/app/views/cards/cards.component.html +6 -6
- package/demo-angular/src/app/views/cards/cards.component.ts +10 -10
- package/demo-angular/src/app/views/contexts/contexts.component.html +204 -0
- package/demo-angular/src/app/views/contexts/contexts.component.ts +10 -0
- package/demo-angular/src/app/views/footer/footer.html +282 -0
- package/demo-angular/src/app/views/footer/footer.scss +0 -0
- package/demo-angular/src/app/views/footer/footer.spec.ts +23 -0
- package/demo-angular/src/app/views/footer/footer.ts +142 -0
- package/demo-angular/src/app/views/header/header.html +1 -0
- package/demo-angular/src/app/views/header/header.scss +0 -0
- package/demo-angular/src/app/views/header/header.spec.ts +23 -0
- package/demo-angular/src/app/views/header/header.ts +11 -0
- package/demo-angular/src/app/views/home/home.component.html +0 -5
- package/demo-angular/src/app/views/links/links.component.html +2 -2
- package/demo-angular/src/app/views/toasts/toasts.component.html +7 -7
- package/demo-angular/src/app/views/toasts/toasts.component.ts +7 -7
- package/demo-angular/src/index.html +15 -1
- package/package.json +2 -2
- package/sdga-ui/README.md +45 -0
- package/sdga-ui/content/docs/components/alerts.mdx +475 -0
- package/sdga-ui/content/docs/index.mdx +239 -0
- package/sdga-ui/next.config.mjs +10 -0
- package/sdga-ui/package-lock.json +5851 -0
- package/sdga-ui/package.json +32 -0
- package/sdga-ui/postcss.config.mjs +5 -0
- package/sdga-ui/source.config.ts +27 -0
- package/sdga-ui/src/app/(home)/layout.tsx +6 -0
- package/sdga-ui/src/app/(home)/page.tsx +202 -0
- package/sdga-ui/src/app/api/search/route.ts +7 -0
- package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +54 -0
- package/sdga-ui/src/app/docs/layout.tsx +11 -0
- package/sdga-ui/src/app/global.css +3 -0
- package/sdga-ui/src/app/layout.tsx +25 -0
- package/sdga-ui/src/app/llms-full.txt/route.ts +10 -0
- package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +34 -0
- package/sdga-ui/src/app/sdga-scoped.css +7 -0
- package/sdga-ui/src/components/sdga-preview.tsx +105 -0
- package/sdga-ui/src/lib/layout.shared.tsx +9 -0
- package/sdga-ui/src/lib/source.ts +27 -0
- package/sdga-ui/src/mdx-components.tsx +9 -0
- package/sdga-ui/tsconfig.json +46 -0
- package/theme/_variables.scss +7 -5
- package/theme/components/_buttons.scss +105 -0
- package/theme/config/_base.scss +10 -0
- package/theme/config/_contexts.scss +471 -0
- package/theme/customizations/_alerts.scss +100 -112
- package/theme/customizations/_badges.scss +15 -0
- package/theme/customizations/_buttons.scss +288 -146
- package/theme/customizations/_cards.scss +52 -0
- package/theme/customizations/_contexts.scss +432 -0
- package/theme/customizations/_footer.scss +83 -0
- package/theme/customizations/_links.scss +55 -39
- package/theme/customizations/_toasts.scss +79 -100
- package/theme/dga-ui.scss +2 -0
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +0 -14
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +0 -91
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +0 -23
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<footer class="dga-footer on-primary">
|
|
2
|
+
<div class="container-fluid">
|
|
3
|
+
<!-- Main Footer Content -->
|
|
4
|
+
<div class="row dga-list-group-container">
|
|
5
|
+
<!-- Footer Link Groups (5 columns) -->
|
|
6
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
7
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
8
|
+
<ul class="list-unstyled">
|
|
9
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
10
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
11
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
12
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
13
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
14
|
+
</ul>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
18
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
19
|
+
<ul class="list-unstyled">
|
|
20
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
21
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
22
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
23
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
24
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
29
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
30
|
+
<ul class="list-unstyled">
|
|
31
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
32
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
33
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
34
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
35
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
36
|
+
</ul>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
40
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
41
|
+
<ul class="list-unstyled">
|
|
42
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
43
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
44
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
45
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
46
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
47
|
+
</ul>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
51
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
52
|
+
<ul class="list-unstyled">
|
|
53
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
54
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
55
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
56
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
57
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
58
|
+
</ul>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<!-- Social Media & Accessibility -->
|
|
62
|
+
<div class="col-12 col-lg-auto">
|
|
63
|
+
<div class="dga-social-container">
|
|
64
|
+
<!-- Social Media -->
|
|
65
|
+
<div>
|
|
66
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Social Media</h6>
|
|
67
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
68
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
69
|
+
<i class="bi bi-twitter"></i>
|
|
70
|
+
</button>
|
|
71
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
72
|
+
<i class="bi bi-facebook"></i>
|
|
73
|
+
</button>
|
|
74
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
75
|
+
<i class="bi bi-instagram"></i>
|
|
76
|
+
</button>
|
|
77
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
78
|
+
<i class="bi bi-linkedin"></i>
|
|
79
|
+
</button>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<!-- Accessibility Tools -->
|
|
84
|
+
<div>
|
|
85
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Accessibility Tools</h6>
|
|
86
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
87
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
88
|
+
<i class="bi bi-eye"></i>
|
|
89
|
+
</button>
|
|
90
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
91
|
+
<i class="bi bi-volume-up"></i>
|
|
92
|
+
</button>
|
|
93
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
94
|
+
<i class="bi bi-universal-access"></i>
|
|
95
|
+
</button>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<!-- Bottom Footer -->
|
|
103
|
+
<div class="dga-footer-bottom">
|
|
104
|
+
<div class="row g-4 align-items-center">
|
|
105
|
+
<div class="col-lg-8">
|
|
106
|
+
<!-- Footer Links Row -->
|
|
107
|
+
<div class="dga-footer-bottom-links">
|
|
108
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
109
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
110
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
111
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
112
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
113
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
114
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
115
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<!-- Copyright -->
|
|
119
|
+
<div class="dga-footer-copyright">
|
|
120
|
+
<p class="fw-semibold small mb-2">All Right Reserved For Digital Government Authority © 2024</p>
|
|
121
|
+
<div class="dga-footer-copyright-links">
|
|
122
|
+
<a href="#" class="link-neutral small">Terms and Conditions</a>
|
|
123
|
+
<a href="#" class="link-neutral small">Privacy Policy</a>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<!-- Logos -->
|
|
129
|
+
<div class="col-lg-4">
|
|
130
|
+
<div class="dga-logo-container">
|
|
131
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
132
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</footer>
|
|
139
|
+
|
|
140
|
+
<app-code-example [htmlCode]="primaryFooterCode"></app-code-example>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<footer class="dga-footer on-secondary">
|
|
144
|
+
<div class="container-fluid">
|
|
145
|
+
<!-- Main Footer Content -->
|
|
146
|
+
<div class="row dga-list-group-container">
|
|
147
|
+
<!-- Footer Link Groups (5 columns) -->
|
|
148
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
149
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
150
|
+
<ul class="list-unstyled">
|
|
151
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
152
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
153
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
154
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
155
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
156
|
+
</ul>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
160
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
161
|
+
<ul class="list-unstyled">
|
|
162
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
163
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
164
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
165
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
166
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
167
|
+
</ul>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
171
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
172
|
+
<ul class="list-unstyled">
|
|
173
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
174
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
175
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
176
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
177
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
178
|
+
</ul>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
182
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
183
|
+
<ul class="list-unstyled">
|
|
184
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
185
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
186
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
187
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
188
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
189
|
+
</ul>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
193
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
194
|
+
<ul class="list-unstyled">
|
|
195
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
196
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
197
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
198
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
199
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
200
|
+
</ul>
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<!-- Social Media & Accessibility -->
|
|
204
|
+
<div class="col-12 col-lg-auto">
|
|
205
|
+
<div class="dga-social-container">
|
|
206
|
+
<!-- Social Media -->
|
|
207
|
+
<div>
|
|
208
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Social Media</h6>
|
|
209
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
210
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
211
|
+
<i class="bi bi-twitter"></i>
|
|
212
|
+
</button>
|
|
213
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
214
|
+
<i class="bi bi-facebook"></i>
|
|
215
|
+
</button>
|
|
216
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
217
|
+
<i class="bi bi-instagram"></i>
|
|
218
|
+
</button>
|
|
219
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Download">
|
|
220
|
+
<i class="bi bi-linkedin"></i>
|
|
221
|
+
</button>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
<!-- Accessibility Tools -->
|
|
226
|
+
<div>
|
|
227
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Accessibility Tools</h6>
|
|
228
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
229
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
230
|
+
<i class="bi bi-eye"></i>
|
|
231
|
+
</button>
|
|
232
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
233
|
+
<i class="bi bi-volume-up"></i>
|
|
234
|
+
</button>
|
|
235
|
+
<button class="btn btn-outline-secondary btn-icon">
|
|
236
|
+
<i class="bi bi-universal-access"></i>
|
|
237
|
+
</button>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<!-- Bottom Footer -->
|
|
245
|
+
<div class="dga-footer-bottom">
|
|
246
|
+
<div class="row g-4 align-items-center">
|
|
247
|
+
<div class="col-lg-8">
|
|
248
|
+
<!-- Footer Links Row -->
|
|
249
|
+
<div class="dga-footer-bottom-links">
|
|
250
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
251
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
252
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
253
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
254
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
255
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
256
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
257
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<!-- Copyright -->
|
|
261
|
+
<div class="dga-footer-copyright">
|
|
262
|
+
<p class="fw-semibold small mb-2">All Right Reserved For Digital Government Authority © 2024</p>
|
|
263
|
+
<div class="dga-footer-copyright-links">
|
|
264
|
+
<a href="#" class="link-neutral small">Terms and Conditions</a>
|
|
265
|
+
<a href="#" class="link-neutral small">Privacy Policy</a>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
|
|
270
|
+
<!-- Logos -->
|
|
271
|
+
<div class="col-lg-4">
|
|
272
|
+
<div class="dga-logo-container">
|
|
273
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
274
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</footer>
|
|
281
|
+
|
|
282
|
+
<app-code-example [htmlCode]="secondaryFooterCode"></app-code-example>
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { Footer } from './footer';
|
|
4
|
+
|
|
5
|
+
describe('Footer', () => {
|
|
6
|
+
let component: Footer;
|
|
7
|
+
let fixture: ComponentFixture<Footer>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
imports: [Footer]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(Footer);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
await fixture.whenStable();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
+
import { CodeExampleComponent } from '../../shared/code-example/code-example.component';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'app-footer',
|
|
7
|
+
imports: [TranslateModule, CodeExampleComponent],
|
|
8
|
+
templateUrl: './footer.html',
|
|
9
|
+
styleUrl: './footer.scss',
|
|
10
|
+
})
|
|
11
|
+
export class Footer {
|
|
12
|
+
primaryFooterCode = `<footer class="dga-footer on-primary">
|
|
13
|
+
<div class="container-fluid">
|
|
14
|
+
<!-- Main Footer Content -->
|
|
15
|
+
<div class="row dga-list-group-container">
|
|
16
|
+
<!-- Footer Link Groups (5 columns) -->
|
|
17
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
18
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
19
|
+
<ul class="list-unstyled">
|
|
20
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
21
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
22
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
23
|
+
</ul>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
27
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Group Label</h6>
|
|
28
|
+
<ul class="list-unstyled">
|
|
29
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
30
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
31
|
+
</ul>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- Social Media & Accessibility -->
|
|
35
|
+
<div class="col-12 col-lg-auto">
|
|
36
|
+
<div class="dga-social-container">
|
|
37
|
+
<!-- Social Media -->
|
|
38
|
+
<div>
|
|
39
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Social Media</h6>
|
|
40
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
41
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Twitter">
|
|
42
|
+
<i class="bi bi-twitter"></i>
|
|
43
|
+
</button>
|
|
44
|
+
<button type="button" class="btn btn-outline-secondary btn-icon" aria-label="Facebook">
|
|
45
|
+
<i class="bi bi-facebook"></i>
|
|
46
|
+
</button>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<!-- Accessibility Tools -->
|
|
51
|
+
<div>
|
|
52
|
+
<h6 class="border-bottom border-white border-opacity-25 pb-2 mb-3">Accessibility Tools</h6>
|
|
53
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
54
|
+
<button class="btn btn-outline-secondary btn-icon" aria-label="Vision">
|
|
55
|
+
<i class="bi bi-eye"></i>
|
|
56
|
+
</button>
|
|
57
|
+
<button class="btn btn-outline-secondary btn-icon" aria-label="Audio">
|
|
58
|
+
<i class="bi bi-volume-up"></i>
|
|
59
|
+
</button>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<!-- Bottom Footer -->
|
|
67
|
+
<div class="dga-footer-bottom">
|
|
68
|
+
<div class="row g-4 align-items-center">
|
|
69
|
+
<div class="col-lg-8">
|
|
70
|
+
<!-- Footer Links Row -->
|
|
71
|
+
<div class="dga-footer-bottom-links">
|
|
72
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
73
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
74
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<!-- Copyright -->
|
|
78
|
+
<div class="dga-footer-copyright">
|
|
79
|
+
<p class="fw-semibold small mb-2">All Rights Reserved © 2024</p>
|
|
80
|
+
<div class="dga-footer-copyright-links">
|
|
81
|
+
<a href="#" class="link-neutral small">Terms and Conditions</a>
|
|
82
|
+
<a href="#" class="link-neutral small">Privacy Policy</a>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<!-- Logos -->
|
|
88
|
+
<div class="col-lg-4">
|
|
89
|
+
<div class="dga-logo-container">
|
|
90
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
91
|
+
<img src="https://placehold.co/125x42" alt="logo">
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</footer>`;
|
|
98
|
+
|
|
99
|
+
secondaryFooterCode = `<footer class="dga-footer on-secondary">
|
|
100
|
+
<div class="container-fluid">
|
|
101
|
+
<!-- Main Footer Content -->
|
|
102
|
+
<div class="row dga-list-group-container">
|
|
103
|
+
<!-- Footer Link Groups -->
|
|
104
|
+
<div class="col-6 col-md-4 col-lg dga-link-group">
|
|
105
|
+
<h6 class="border-bottom pb-2 mb-3">Group Label</h6>
|
|
106
|
+
<ul class="list-unstyled">
|
|
107
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
108
|
+
<li class="mb-2"><a href="#" class="link-neutral small">Footer Link</a></li>
|
|
109
|
+
</ul>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
<!-- Social Media & Accessibility -->
|
|
113
|
+
<div class="col-12 col-lg-auto">
|
|
114
|
+
<div class="dga-social-container">
|
|
115
|
+
<div>
|
|
116
|
+
<h6 class="border-bottom pb-2 mb-3">Social Media</h6>
|
|
117
|
+
<div class="d-flex gap-2 flex-wrap">
|
|
118
|
+
<button type="button" class="btn btn-outline-secondary btn-icon">
|
|
119
|
+
<i class="bi bi-twitter"></i>
|
|
120
|
+
</button>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<!-- Bottom Footer -->
|
|
128
|
+
<div class="dga-footer-bottom">
|
|
129
|
+
<div class="row g-4 align-items-center">
|
|
130
|
+
<div class="col-lg-8">
|
|
131
|
+
<div class="dga-footer-bottom-links">
|
|
132
|
+
<a href="#" class="link-neutral text-decoration-underline small">Footer Link</a>
|
|
133
|
+
</div>
|
|
134
|
+
<div class="dga-footer-copyright">
|
|
135
|
+
<p class="fw-semibold small mb-2">All Rights Reserved © 2024</p>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</footer>`;
|
|
142
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<header></header>
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { Header } from './header';
|
|
4
|
+
|
|
5
|
+
describe('Header', () => {
|
|
6
|
+
let component: Header;
|
|
7
|
+
let fixture: ComponentFixture<Header>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
imports: [Header]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(Header);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
await fixture.whenStable();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'app-header',
|
|
6
|
+
imports: [TranslateModule],
|
|
7
|
+
templateUrl: './header.html',
|
|
8
|
+
styleUrl: './header.scss',
|
|
9
|
+
})
|
|
10
|
+
export class Header {
|
|
11
|
+
}
|
|
@@ -29,10 +29,5 @@
|
|
|
29
29
|
<h3>{{ 'nav.tables' | translate }}</h3>
|
|
30
30
|
<p>{{ 'home.tables_desc' | translate }}</p>
|
|
31
31
|
</a>
|
|
32
|
-
|
|
33
|
-
<a routerLink="/utilities" class="component-card">
|
|
34
|
-
<h3>{{ 'nav.utilities' | translate }}</h3>
|
|
35
|
-
<p>{{ 'home.utilities_desc' | translate }}</p>
|
|
36
|
-
</a>
|
|
37
32
|
</div>
|
|
38
33
|
</div>
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<!-- Neutral link -->
|
|
11
11
|
<a href="javascript:void(0);" class="link-neutral link-offset-2">{{ 'links.neutral_link' | translate }}</a>
|
|
12
12
|
<!-- On-color link displayed on a primary background -->
|
|
13
|
-
<div class="p-3
|
|
14
|
-
<a href="javascript:void(0);" class="link-
|
|
13
|
+
<div class="p-3 on-primary rounded-2" style="width:max-content;">
|
|
14
|
+
<a href="javascript:void(0);" class="link-neutral link-offset-2">{{ 'links.neutral_link' | translate }}</a>
|
|
15
15
|
</div>
|
|
16
16
|
<!-- Disabled link (non-interactive) -->
|
|
17
17
|
<a href="javascript:void(0);" class="link-primary disabled link-offset-2" aria-disabled="true" tabindex="-1">{{ 'links.disabled_link' | translate }}</a>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div class="toast-container">
|
|
12
12
|
<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
13
13
|
<div class="toast-icon">
|
|
14
|
-
<i class="
|
|
14
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
15
15
|
</div>
|
|
16
16
|
<div class="toast-content">
|
|
17
17
|
<div class="toast-header">
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<div class="d-flex flex-wrap gap-3 mb-3">
|
|
40
40
|
<div class="toast show fade toast-danger" role="alert" aria-live="polite" aria-atomic="true">
|
|
41
41
|
<div class="toast-icon">
|
|
42
|
-
<i class="
|
|
42
|
+
<i class="bi bi-exclamation-circle toast-icon"></i>
|
|
43
43
|
</div>
|
|
44
44
|
<div class="toast-content">
|
|
45
45
|
<div class="toast-header">
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<div class="d-flex flex-wrap gap-3 mb-3">
|
|
67
67
|
<div class="toast show fade toast-warning" role="alert" aria-live="polite" aria-atomic="true">
|
|
68
68
|
<div class="toast-icon">
|
|
69
|
-
<i class="
|
|
69
|
+
<i class="bi bi-exclamation-triangle toast-icon"></i>
|
|
70
70
|
</div>
|
|
71
71
|
<div class="toast-content">
|
|
72
72
|
<div class="toast-header">
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
<div class="d-flex flex-wrap gap-3 mb-3">
|
|
94
94
|
<div class="toast show fade toast-info" role="alert" aria-live="polite" aria-atomic="true">
|
|
95
95
|
<div class="toast-icon">
|
|
96
|
-
<i class="
|
|
96
|
+
<i class="bi bi-info-circle toast-icon"></i>
|
|
97
97
|
</div>
|
|
98
98
|
<div class="toast-content">
|
|
99
99
|
<div class="toast-header">
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
<div class="d-flex flex-wrap gap-3 mb-3">
|
|
121
121
|
<div class="toast show fade toast-neutral" role="alert" aria-live="polite" aria-atomic="true">
|
|
122
122
|
<div class="toast-icon">
|
|
123
|
-
<i class="
|
|
123
|
+
<i class="bi bi-info-circle toast-icon"></i>
|
|
124
124
|
</div>
|
|
125
125
|
<div class="toast-content">
|
|
126
126
|
<div class="toast-header">
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
<div class="toast-container">
|
|
149
149
|
<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
150
150
|
<div class="toast-icon">
|
|
151
|
-
<i class="
|
|
151
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
152
152
|
</div>
|
|
153
153
|
<div class="toast-content">
|
|
154
154
|
<div class="toast-header">
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
<div class="d-flex flex-wrap gap-3 mb-3">
|
|
177
177
|
<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
178
178
|
<div class="toast-icon">
|
|
179
|
-
<i class="
|
|
179
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
180
180
|
</div>
|
|
181
181
|
<div class="toast-content">
|
|
182
182
|
<div class="toast-header">
|
|
@@ -21,7 +21,7 @@ export class ToastsComponent {
|
|
|
21
21
|
// Success Toast with Icon
|
|
22
22
|
successToastCode = `<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
23
23
|
<div class="toast-icon">
|
|
24
|
-
<i class="
|
|
24
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
25
25
|
</div>
|
|
26
26
|
<div class="toast-content">
|
|
27
27
|
<div class="toast-header">
|
|
@@ -41,7 +41,7 @@ export class ToastsComponent {
|
|
|
41
41
|
// Danger Toast with Icon
|
|
42
42
|
dangerToastCode = `<div class="toast show fade toast-danger" role="alert" aria-live="polite" aria-atomic="true">
|
|
43
43
|
<div class="toast-icon">
|
|
44
|
-
<i class="
|
|
44
|
+
<i class="bi bi-exclamation-circle toast-icon"></i>
|
|
45
45
|
</div>
|
|
46
46
|
<div class="toast-content">
|
|
47
47
|
<div class="toast-header">
|
|
@@ -61,7 +61,7 @@ export class ToastsComponent {
|
|
|
61
61
|
// Warning Toast with Icon
|
|
62
62
|
warningToastCode = `<div class="toast show fade toast-warning" role="alert" aria-live="polite" aria-atomic="true">
|
|
63
63
|
<div class="toast-icon">
|
|
64
|
-
<i class="
|
|
64
|
+
<i class="bi bi-exclamation-triangle toast-icon"></i>
|
|
65
65
|
</div>
|
|
66
66
|
<div class="toast-content">
|
|
67
67
|
<div class="toast-header">
|
|
@@ -81,7 +81,7 @@ export class ToastsComponent {
|
|
|
81
81
|
// Info Toast with Icon
|
|
82
82
|
infoToastCode = `<div class="toast show fade toast-info" role="alert" aria-live="polite" aria-atomic="true">
|
|
83
83
|
<div class="toast-icon">
|
|
84
|
-
<i class="
|
|
84
|
+
<i class="bi bi-info-circle toast-icon"></i>
|
|
85
85
|
</div>
|
|
86
86
|
<div class="toast-content">
|
|
87
87
|
<div class="toast-header">
|
|
@@ -101,7 +101,7 @@ export class ToastsComponent {
|
|
|
101
101
|
// Neutral Toast with Icon
|
|
102
102
|
neutralToastCode = `<div class="toast show fade toast-neutral" role="alert" aria-live="polite" aria-atomic="true">
|
|
103
103
|
<div class="toast-icon">
|
|
104
|
-
<i class="
|
|
104
|
+
<i class="bi bi-info-circle toast-icon"></i>
|
|
105
105
|
</div>
|
|
106
106
|
<div class="toast-content">
|
|
107
107
|
<div class="toast-header">
|
|
@@ -122,7 +122,7 @@ export class ToastsComponent {
|
|
|
122
122
|
fullToastCode = `<div class="toast-container">
|
|
123
123
|
<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
124
124
|
<div class="toast-icon">
|
|
125
|
-
<i class="
|
|
125
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
126
126
|
</div>
|
|
127
127
|
<div class="toast-content">
|
|
128
128
|
<div class="toast-header">
|
|
@@ -143,7 +143,7 @@ export class ToastsComponent {
|
|
|
143
143
|
// Dismissible Toast
|
|
144
144
|
dismissibleToastCode = `<div class="toast show fade toast-success" role="alert" aria-live="polite" aria-atomic="true">
|
|
145
145
|
<div class="toast-icon">
|
|
146
|
-
<i class="
|
|
146
|
+
<i class="bi bi-check-circle toast-icon"></i>
|
|
147
147
|
</div>
|
|
148
148
|
<div class="toast-content">
|
|
149
149
|
<div class="toast-header">
|