sdga-ui 1.0.3 → 1.0.5

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.
Files changed (76) hide show
  1. package/.github/workflows/deploy.yml +57 -0
  2. package/.github/workflows/publish.yml +2 -4
  3. package/README.md +8 -0
  4. package/css/dga-ui.css +60 -30
  5. package/css/dga-ui.css.map +1 -1
  6. package/demo-angular/.editorconfig +17 -0
  7. package/demo-angular/.vscode/extensions.json +4 -0
  8. package/demo-angular/.vscode/launch.json +20 -0
  9. package/demo-angular/.vscode/tasks.json +42 -0
  10. package/demo-angular/README.md +59 -0
  11. package/demo-angular/angular.json +88 -0
  12. package/demo-angular/package-lock.json +10459 -0
  13. package/demo-angular/package.json +50 -0
  14. package/demo-angular/public/.nojekyll +0 -0
  15. package/demo-angular/public/favicon.ico +0 -0
  16. package/demo-angular/public/i18n/ar.json +239 -0
  17. package/demo-angular/public/i18n/en.json +239 -0
  18. package/demo-angular/src/app/app.config.ts +20 -0
  19. package/demo-angular/src/app/app.html +52 -0
  20. package/demo-angular/src/app/app.routes.ts +45 -0
  21. package/demo-angular/src/app/app.scss +430 -0
  22. package/demo-angular/src/app/app.spec.ts +23 -0
  23. package/demo-angular/src/app/app.ts +88 -0
  24. package/demo-angular/src/app/shared/code-example/code-example.component.html +30 -0
  25. package/demo-angular/src/app/shared/code-example/code-example.component.scss +183 -0
  26. package/demo-angular/src/app/shared/code-example/code-example.component.ts +78 -0
  27. package/demo-angular/src/app/views/alerts/alerts.component.html +155 -0
  28. package/demo-angular/src/app/views/alerts/alerts.component.scss +3 -0
  29. package/demo-angular/src/app/views/alerts/alerts.component.ts +134 -0
  30. package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +14 -0
  31. package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +91 -0
  32. package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +23 -0
  33. package/demo-angular/src/app/views/buttons/buttons.component.html +289 -0
  34. package/demo-angular/src/app/views/buttons/buttons.component.scss +14 -0
  35. package/demo-angular/src/app/views/buttons/buttons.component.ts +155 -0
  36. package/demo-angular/src/app/views/cards/cards.component.html +156 -0
  37. package/demo-angular/src/app/views/cards/cards.component.html.backup +156 -0
  38. package/demo-angular/src/app/views/cards/cards.component.scss +11 -0
  39. package/demo-angular/src/app/views/cards/cards.component.ts +194 -0
  40. package/demo-angular/src/app/views/forms/forms.component.html +347 -0
  41. package/demo-angular/src/app/views/forms/forms.component.scss +3 -0
  42. package/demo-angular/src/app/views/forms/forms.component.ts +222 -0
  43. package/demo-angular/src/app/views/home/home.component.html +38 -0
  44. package/demo-angular/src/app/views/home/home.component.scss +35 -0
  45. package/demo-angular/src/app/views/home/home.component.ts +12 -0
  46. package/demo-angular/src/app/views/links/links.component.html +140 -0
  47. package/demo-angular/src/app/views/links/links.component.scss +60 -0
  48. package/demo-angular/src/app/views/links/links.component.ts +123 -0
  49. package/demo-angular/src/app/views/tables/tables.component.html +289 -0
  50. package/demo-angular/src/app/views/tables/tables.component.scss +3 -0
  51. package/demo-angular/src/app/views/tables/tables.component.ts +278 -0
  52. package/demo-angular/src/app/views/toasts/toasts.component.html +201 -0
  53. package/demo-angular/src/app/views/toasts/toasts.component.scss +0 -0
  54. package/demo-angular/src/app/views/toasts/toasts.component.ts +182 -0
  55. package/demo-angular/src/index.html +14 -0
  56. package/demo-angular/src/main.ts +6 -0
  57. package/demo-angular/src/styles.scss +4 -0
  58. package/demo-angular/tsconfig.app.json +15 -0
  59. package/demo-angular/tsconfig.json +33 -0
  60. package/demo-angular/tsconfig.spec.json +15 -0
  61. package/package.json +5 -6
  62. package/theme/components/_accordion.scss +1 -1
  63. package/theme/components/_buttons.scss +6 -6
  64. package/theme/components/_content.scss +3 -3
  65. package/theme/components/_dropdowns.scss +1 -1
  66. package/theme/components/_forms-check.scss +1 -1
  67. package/theme/components/_forms-inputs.scss +1 -1
  68. package/theme/components/_list-group.scss +1 -1
  69. package/theme/components/_modals.scss +1 -1
  70. package/theme/components/_navigation.scss +2 -2
  71. package/theme/components/_overlays.scss +2 -2
  72. package/theme/components/_pagination.scss +1 -1
  73. package/theme/components/_popovers.scss +1 -1
  74. package/theme/components/_toasts.scss +1 -1
  75. package/theme/customizations/_cards.scss +3 -3
  76. package/theme/customizations/_links.scss +72 -24
@@ -0,0 +1,289 @@
1
+ <div class="container py-5">
2
+ <h1 class="display-4 mb-4">{{ 'buttons.title' | translate }}</h1>
3
+ <p class="lead mb-5">{{ 'buttons.subtitle' | translate }}</p>
4
+
5
+ <section class="demo-section">
6
+ <h2>{{ 'buttons.section_solid' | translate }}</h2>
7
+ <div class="component-showcase">
8
+ <button type="button" class="btn btn-primary">{{ 'buttons.primary' | translate }}</button>
9
+ <button type="button" class="btn btn-neutral">{{ 'buttons.neutral' | translate }}</button>
10
+ <button type="button" class="btn btn-secondary">{{ 'buttons.secondary' | translate }}</button>
11
+ <button type="button" class="btn btn-danger">{{ 'buttons.danger' | translate }}</button>
12
+ </div>
13
+ <app-code-example [htmlCode]="solidButtonsCode"></app-code-example>
14
+
15
+ <h3 class="mt-5">{{ 'buttons.section_outline' | translate }}</h3>
16
+ <div class="component-showcase">
17
+ <button type="button" class="btn btn-outline-primary">{{ 'buttons.primary' | translate }}</button>
18
+ <button type="button" class="btn btn-outline-secondary">{{ 'buttons.secondary' | translate }}</button>
19
+ <button type="button" class="btn btn-outline-neutral">{{ 'buttons.neutral' | translate }}</button>
20
+ <button type="button" class="btn btn-outline-danger">{{ 'buttons.danger' | translate }}</button>
21
+ </div>
22
+ <app-code-example [htmlCode]="outlineButtonsCode"></app-code-example>
23
+
24
+ <h3 class="mt-5">{{ 'buttons.section_sizes' | translate }}</h3>
25
+ <div class="component-showcase">
26
+ <button type="button" class="btn btn-primary btn-lg">{{ 'buttons.large' | translate }}</button>
27
+ <button type="button" class="btn btn-primary">{{ 'buttons.default' | translate }}</button>
28
+ <button type="button" class="btn btn-primary btn-sm">{{ 'buttons.small' | translate }}</button>
29
+ <button type="button" class="btn btn-primary btn-xs">{{ 'buttons.extra_small' | translate }}</button>
30
+ </div>
31
+ <app-code-example [htmlCode]="buttonSizesCode"></app-code-example>
32
+
33
+ <h3 class="mt-5">{{ 'buttons.section_states' | translate }}</h3>
34
+ <div class="component-showcase mb-3">
35
+ <button type="button" class="btn btn-primary">{{ 'buttons.normal' | translate }}</button>
36
+ <button type="button" class="btn btn-primary active">{{ 'buttons.active' | translate }}</button>
37
+ <button type="button" class="btn btn-primary" disabled>{{ 'buttons.disabled' | translate }}</button>
38
+ </div>
39
+ <div class="component-showcase mb-3">
40
+ <button type="button" class="btn btn-neutral">{{ 'buttons.normal' | translate }}</button>
41
+ <button type="button" class="btn btn-neutral active">{{ 'buttons.active' | translate }}</button>
42
+ <button type="button" class="btn btn-neutral" disabled>{{ 'buttons.disabled' | translate }}</button>
43
+ </div>
44
+ <div class="component-showcase mb-3">
45
+ <button type="button" class="btn btn-secondary">{{ 'buttons.normal' | translate }}</button>
46
+ <button type="button" class="btn btn-secondary active">{{ 'buttons.active' | translate }}</button>
47
+ <button type="button" class="btn btn-secondary" disabled>{{ 'buttons.disabled' | translate }}</button>
48
+ </div>
49
+ <div class="component-showcase">
50
+ <button type="button" class="btn btn-danger">{{ 'buttons.normal' | translate }}</button>
51
+ <button type="button" class="btn btn-danger active">{{ 'buttons.active' | translate }}</button>
52
+ <button type="button" class="btn btn-danger" disabled>{{ 'buttons.disabled' | translate }}</button>
53
+ </div>
54
+ <app-code-example [htmlCode]="buttonStatesCode"></app-code-example>
55
+
56
+ <h3 class="mt-5">{{ 'buttons.section_icons' | translate }}</h3>
57
+ <div class="component-showcase mb-3">
58
+ <button type="button" class="btn btn-primary btn-icon">
59
+ <i class="hgi hgi-stroke hgi-download-04"></i>{{ 'buttons.download' | translate }}
60
+ </button>
61
+ <button type="button" class="btn btn-neutral btn-icon">
62
+ <i class="hgi hgi-stroke hgi-upload-04"></i>{{ 'buttons.upload' | translate }}
63
+ </button>
64
+ <button type="button" class="btn btn-secondary btn-icon">
65
+ <i class="hgi hgi-stroke hgi-pencil-edit-02"></i>{{ 'buttons.edit' | translate }}
66
+ </button>
67
+ <button type="button" class="btn btn-danger btn-icon">
68
+ <i class="hgi hgi-stroke hgi-delete-02"></i>{{ 'buttons.delete' | translate }}
69
+ </button>
70
+ </div>
71
+ <app-code-example [htmlCode]="buttonIconLeftCode"></app-code-example>
72
+ <div class="component-showcase mb-3">
73
+ <button type="button" class="btn btn-primary btn-icon">
74
+ {{ 'buttons.save' | translate }}<i class="hgi hgi-stroke hgi-tick-02"></i>
75
+ </button>
76
+ <button type="button" class="btn btn-neutral btn-icon">
77
+ {{ 'buttons.search' | translate }}<i class="hgi hgi-stroke hgi-search-01"></i>
78
+ </button>
79
+ <button type="button" class="btn btn-secondary btn-icon">
80
+ {{ 'buttons.settings' | translate }}<i class="hgi hgi-stroke hgi-settings-02"></i>
81
+ </button>
82
+ </div>
83
+ <app-code-example [htmlCode]="buttonIconRightCode"></app-code-example>
84
+ <div class="component-showcase mb-3">
85
+ <button type="button" class="btn btn-primary btn-icon btn-sm">
86
+ <i class="hgi hgi-stroke hgi-plus-sign-circle"></i>{{ 'buttons.add' | translate }}
87
+ </button>
88
+ <button type="button" class="btn btn-outline-primary btn-icon">
89
+ <i class="hgi hgi-stroke hgi-arrow-right-01"></i>{{ 'buttons.next' | translate }}
90
+ </button>
91
+ <button type="button" class="btn btn-outline-secondary btn-icon">
92
+ <i class="hgi hgi-stroke hgi-arrow-left-01"></i>{{ 'buttons.previous' | translate }}
93
+ </button>
94
+ </div>
95
+
96
+ <h3 class="mt-5">{{ 'buttons.section_icon_only' | translate }}</h3>
97
+ <div class="component-showcase mb-3">
98
+ <button type="button" class="btn btn-primary btn-icon" aria-label="{{ 'buttons.download' | translate }}">
99
+ <i class="hgi hgi-stroke hgi-download-04"></i>
100
+ </button>
101
+ <button type="button" class="btn btn-neutral btn-icon" aria-label="{{ 'buttons.upload' | translate }}">
102
+ <i class="hgi hgi-stroke hgi-upload-04"></i>
103
+ </button>
104
+ <button type="button" class="btn btn-secondary btn-icon" aria-label="{{ 'buttons.edit' | translate }}">
105
+ <i class="hgi hgi-stroke hgi-pencil-edit-02"></i>
106
+ </button>
107
+ <button type="button" class="btn btn-danger btn-icon" aria-label="{{ 'buttons.delete' | translate }}">
108
+ <i class="hgi hgi-stroke hgi-delete-02"></i>
109
+ </button>
110
+ </div>
111
+ <div class="component-showcase mb-3">
112
+ <button type="button" class="btn btn-outline-primary btn-icon" aria-label="{{ 'buttons.search' | translate }}">
113
+ <i class="hgi hgi-stroke hgi-search-01"></i>
114
+ </button>
115
+ <button type="button" class="btn btn-outline-secondary btn-icon" aria-label="{{ 'buttons.settings' | translate }}">
116
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
117
+ </button>
118
+ <button type="button" class="btn btn-outline-neutral btn-icon" aria-label="{{ 'buttons.add' | translate }}">
119
+ <i class="hgi hgi-stroke hgi-plus-sign-circle"></i>
120
+ </button>
121
+ </div>
122
+ <div class="component-showcase">
123
+ <button type="button" class="btn btn-primary btn-icon" aria-label="{{ 'buttons.search' | translate }}">
124
+ <i class="hgi hgi-stroke hgi-search-01"></i>
125
+ </button>
126
+ <button type="button" class="btn btn-neutral btn-icon btn-sm" aria-label="{{ 'buttons.settings' | translate }}">
127
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
128
+ </button>
129
+ <button type="button" class="btn btn-secondary btn-icon btn-xs" aria-label="{{ 'buttons.add' | translate }}">
130
+ <i class="hgi hgi-stroke hgi-plus-sign-circle"></i>
131
+ </button>
132
+ </div>
133
+ <app-code-example [htmlCode]="buttonIconOnlyCode"></app-code-example>
134
+
135
+ <h3 class="mt-5">{{ 'buttons.section_dropdown' | translate }}</h3>
136
+ <div class="component-showcase mb-3">
137
+ <div class="dropdown">
138
+ <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
139
+ {{ 'buttons.dropdown_primary' | translate }}
140
+ </button>
141
+ <ul class="dropdown-menu">
142
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
143
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
144
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
145
+ </ul>
146
+ </div>
147
+
148
+ <div class="dropdown">
149
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
150
+ {{ 'buttons.dropdown_neutral' | translate }}
151
+ </button>
152
+ <ul class="dropdown-menu">
153
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
154
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
155
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
156
+ </ul>
157
+ </div>
158
+
159
+ <div class="dropdown">
160
+ <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
161
+ {{ 'buttons.dropdown_secondary' | translate }}
162
+ </button>
163
+ <ul class="dropdown-menu">
164
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
165
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
166
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
167
+ </ul>
168
+ </div>
169
+
170
+ <div class="dropdown">
171
+ <button class="btn btn-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
172
+ {{ 'buttons.dropdown_danger' | translate }}
173
+ </button>
174
+ <ul class="dropdown-menu">
175
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
176
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
177
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
178
+ </ul>
179
+ </div>
180
+ </div>
181
+ <app-code-example [htmlCode]="dropdownButtonCode"></app-code-example>
182
+
183
+ <div class="component-showcase mb-3">
184
+ <div class="dropdown">
185
+ <button class="btn btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
186
+ {{ 'buttons.dropdown_outline' | translate }}
187
+ </button>
188
+ <ul class="dropdown-menu">
189
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
190
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
191
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
192
+ </ul>
193
+ </div>
194
+
195
+ <div class="dropdown">
196
+ <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
197
+ {{ 'buttons.dropdown_outline' | translate }}
198
+ </button>
199
+ <ul class="dropdown-menu">
200
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
201
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
202
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
203
+ </ul>
204
+ </div>
205
+
206
+ <div class="dropdown">
207
+ <button class="btn btn-outline-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
208
+ {{ 'buttons.dropdown_outline' | translate }}
209
+ </button>
210
+ <ul class="dropdown-menu">
211
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
212
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
213
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
214
+ </ul>
215
+ </div>
216
+ </div>
217
+
218
+ <div class="component-showcase">
219
+ <div class="dropdown">
220
+ <button class="btn btn-primary dropdown-toggle btn-lg" type="button" data-bs-toggle="dropdown" aria-expanded="false">
221
+ {{ 'buttons.large' | translate }}
222
+ </button>
223
+ <ul class="dropdown-menu">
224
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
225
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
226
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
227
+ </ul>
228
+ </div>
229
+
230
+ <div class="dropdown">
231
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
232
+ {{ 'buttons.default' | translate }}
233
+ </button>
234
+ <ul class="dropdown-menu">
235
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
236
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
237
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
238
+ </ul>
239
+ </div>
240
+
241
+ <div class="dropdown">
242
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
243
+ {{ 'buttons.small' | translate }}
244
+ </button>
245
+ <ul class="dropdown-menu">
246
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
247
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
248
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
249
+ </ul>
250
+ </div>
251
+ </div>
252
+ <app-code-example [htmlCode]="dropdownSizesCode"></app-code-example>
253
+ <div class="component-showcase">
254
+ <div class="dropdown">
255
+ <button class="btn btn-primary dropdown-toggle btn-lg" type="button" data-bs-toggle="dropdown" aria-expanded="false">
256
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
257
+ </button>
258
+ <ul class="dropdown-menu">
259
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
260
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
261
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
262
+ </ul>
263
+ </div>
264
+
265
+ <div class="dropdown">
266
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
267
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
268
+ </button>
269
+ <ul class="dropdown-menu">
270
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
271
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
272
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
273
+ </ul>
274
+ </div>
275
+
276
+ <div class="dropdown">
277
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
278
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
279
+ </button>
280
+ <ul class="dropdown-menu">
281
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_action' | translate }}</button></li>
282
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_another' | translate }}</button></li>
283
+ <li><button class="dropdown-item" type="button">{{ 'buttons.dropdown_something' | translate }}</button></li>
284
+ </ul>
285
+ </div>
286
+ </div>
287
+ <app-code-example [htmlCode]="iconDropdownCode"></app-code-example>
288
+ </section>
289
+ </div>
@@ -0,0 +1,14 @@
1
+ .demo-section {
2
+ margin-bottom: 4rem;
3
+ }
4
+
5
+ .component-showcase {
6
+ display: flex;
7
+ gap: 1rem;
8
+ flex-wrap: wrap;
9
+ align-items: center;
10
+ padding: 1.5rem;
11
+ background: #f8f9fa;
12
+ border-radius: 0.5rem;
13
+ }
14
+
@@ -0,0 +1,155 @@
1
+ import { Component, ChangeDetectionStrategy } 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-buttons',
7
+ imports: [TranslateModule, CodeExampleComponent],
8
+ templateUrl: './buttons.component.html',
9
+ styleUrl: './buttons.component.scss',
10
+ changeDetection: ChangeDetectionStrategy.OnPush
11
+ })
12
+ export class ButtonsComponent {
13
+ solidButtonsCode = `<button type="button" class="btn btn-primary">Primary</button>
14
+ <button type="button" class="btn btn-neutral">Neutral</button>
15
+ <button type="button" class="btn btn-secondary">Secondary</button>
16
+ <button type="button" class="btn btn-danger">Danger</button>`;
17
+
18
+ outlineButtonsCode = `<button type="button" class="btn btn-outline-primary">Primary</button>
19
+ <button type="button" class="btn btn-outline-secondary">Secondary</button>
20
+ <button type="button" class="btn btn-outline-neutral">Neutral</button>
21
+ <button type="button" class="btn btn-outline-danger">Danger</button>`;
22
+
23
+ buttonSizesCode = `<button type="button" class="btn btn-primary btn-lg">Large</button>
24
+ <button type="button" class="btn btn-primary">Default</button>
25
+ <button type="button" class="btn btn-primary btn-sm">Small</button>
26
+ <button type="button" class="btn btn-primary btn-xs">Extra Small</button>`;
27
+
28
+ buttonStatesCode = `<button type="button" class="btn btn-primary">Normal</button>
29
+ <button type="button" class="btn btn-primary active">Active</button>
30
+ <button type="button" class="btn btn-primary" disabled>Disabled</button>`;
31
+
32
+ buttonIconLeftCode = `<button type="button" class="btn btn-primary btn-icon">
33
+ <i class="hgi hgi-stroke hgi-download-04"></i>Download
34
+ </button>
35
+ <button type="button" class="btn btn-neutral btn-icon">
36
+ <i class="hgi hgi-stroke hgi-upload-04"></i>Upload
37
+ </button>
38
+ <button type="button" class="btn btn-secondary btn-icon">
39
+ <i class="hgi hgi-stroke hgi-pencil-edit-02"></i>Edit
40
+ </button>
41
+ <button type="button" class="btn btn-danger btn-icon">
42
+ <i class="hgi hgi-stroke hgi-delete-02"></i>Delete
43
+ </button>`;
44
+
45
+ buttonIconRightCode = `<button type="button" class="btn btn-primary btn-icon">
46
+ Save<i class="hgi hgi-stroke hgi-tick-02"></i>
47
+ </button>
48
+ <button type="button" class="btn btn-neutral btn-icon">
49
+ Search<i class="hgi hgi-stroke hgi-search-01"></i>
50
+ </button>
51
+ <button type="button" class="btn btn-secondary btn-icon">
52
+ Settings<i class="hgi hgi-stroke hgi-settings-02"></i>
53
+ </button>`;
54
+
55
+ buttonIconOnlyCode = `<button type="button" class="btn btn-primary btn-icon" aria-label="Download">
56
+ <i class="hgi hgi-stroke hgi-download-04"></i>
57
+ </button>
58
+ <button type="button" class="btn btn-neutral btn-icon" aria-label="Upload">
59
+ <i class="hgi hgi-stroke hgi-upload-04"></i>
60
+ </button>
61
+ <button type="button" class="btn btn-secondary btn-icon" aria-label="Edit">
62
+ <i class="hgi hgi-stroke hgi-pencil-edit-02"></i>
63
+ </button>
64
+ <button type="button" class="btn btn-danger btn-icon" aria-label="Delete">
65
+ <i class="hgi hgi-stroke hgi-delete-02"></i>
66
+ </button>`;
67
+
68
+ dropdownButtonCode = `<div class="dropdown">
69
+ <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
70
+ Dropdown Primary
71
+ </button>
72
+ <ul class="dropdown-menu">
73
+ <li><button class="dropdown-item" type="button">Action</button></li>
74
+ <li><button class="dropdown-item" type="button">Another action</button></li>
75
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
76
+ </ul>
77
+ </div>
78
+
79
+ <div class="dropdown">
80
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
81
+ Dropdown Neutral
82
+ </button>
83
+ <ul class="dropdown-menu">
84
+ <li><button class="dropdown-item" type="button">Action</button></li>
85
+ <li><button class="dropdown-item" type="button">Another action</button></li>
86
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
87
+ </ul>
88
+ </div>`;
89
+
90
+ dropdownSizesCode = `<div class="dropdown">
91
+ <button class="btn btn-primary dropdown-toggle btn-lg" type="button" data-bs-toggle="dropdown" aria-expanded="false">
92
+ Large
93
+ </button>
94
+ <ul class="dropdown-menu">
95
+ <li><button class="dropdown-item" type="button">Action</button></li>
96
+ <li><button class="dropdown-item" type="button">Another action</button></li>
97
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
98
+ </ul>
99
+ </div>
100
+
101
+ <div class="dropdown">
102
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
103
+ Default
104
+ </button>
105
+ <ul class="dropdown-menu">
106
+ <li><button class="dropdown-item" type="button">Action</button></li>
107
+ <li><button class="dropdown-item" type="button">Another action</button></li>
108
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
109
+ </ul>
110
+ </div>
111
+
112
+ <div class="dropdown">
113
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
114
+ Small
115
+ </button>
116
+ <ul class="dropdown-menu">
117
+ <li><button class="dropdown-item" type="button">Action</button></li>
118
+ <li><button class="dropdown-item" type="button">Another action</button></li>
119
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
120
+ </ul>
121
+ </div>`;
122
+
123
+ iconDropdownCode = `<div class="dropdown">
124
+ <button class="btn btn-primary dropdown-toggle btn-lg" type="button" data-bs-toggle="dropdown" aria-expanded="false">
125
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
126
+ </button>
127
+ <ul class="dropdown-menu">
128
+ <li><button class="dropdown-item" type="button">Action</button></li>
129
+ <li><button class="dropdown-item" type="button">Another action</button></li>
130
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
131
+ </ul>
132
+ </div>
133
+
134
+ <div class="dropdown">
135
+ <button class="btn btn-neutral dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
136
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
137
+ </button>
138
+ <ul class="dropdown-menu">
139
+ <li><button class="dropdown-item" type="button">Action</button></li>
140
+ <li><button class="dropdown-item" type="button">Another action</button></li>
141
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
142
+ </ul>
143
+ </div>
144
+
145
+ <div class="dropdown">
146
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
147
+ <i class="hgi hgi-stroke hgi-settings-02"></i>
148
+ </button>
149
+ <ul class="dropdown-menu">
150
+ <li><button class="dropdown-item" type="button">Action</button></li>
151
+ <li><button class="dropdown-item" type="button">Another action</button></li>
152
+ <li><button class="dropdown-item" type="button">Something else here</button></li>
153
+ </ul>
154
+ </div>`;
155
+ }
@@ -0,0 +1,156 @@
1
+ <div class="container py-5">
2
+ <h1 class="display-4 mb-4">{{ 'cards.title' | translate }}</h1>
3
+ <p class="lead mb-5">{{ 'cards.subtitle' | translate }}</p>
4
+
5
+ <section class="demo-section">
6
+ <h2 class="mb-4">{{ 'cards.section_examples' | translate }}</h2>
7
+
8
+ <!-- Card with icon -->
9
+ <h3 class="mb-3">Card with Icon</h3>
10
+ <div class="demo-card-grid mb-3">
11
+ <div class="card" tabindex="0">
12
+ <div class="card-body">
13
+ <h5 class="card-title">
14
+ <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
15
+ </h5>
16
+ <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
17
+ <p class="card-text">{{ 'cards.card_text' | translate }}</p>
18
+ <div class="card-footer">
19
+ <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
20
+ <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <app-code-example [htmlCode]="cardWithIconCode" title="Card with Icon and Header"></app-code-example>
26
+
27
+ <!-- Card with checkbox -->
28
+ <h3 class="mb-3 mt-5">Card with Checkbox</h3>
29
+ <div class="demo-card-grid mb-3">
30
+ <div class="card" tabindex="0">
31
+ <div class="card-body">
32
+ <h5 class="card-title">
33
+ <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check2" aria-label="{{ 'cards.select_card' | translate }}">
34
+ </h5>
35
+ <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
36
+ <p class="card-text">{{ 'cards.card_text' | translate }}</p>
37
+ <div class="card-footer">
38
+ <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
39
+ <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ <app-code-example [htmlCode]="cardWithCheckboxCode" title="Card with Checkbox"></app-code-example>
45
+
46
+ <!-- Disabled card with icon and checkbox -->
47
+ <h3 class="mb-3 mt-5">Disabled Card</h3>
48
+ <div class="demo-card-grid mb-3">
49
+ <div class="card disabled" tabindex="0">
50
+ <div class="card-body">
51
+ <h5 class="card-title">
52
+ <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
53
+ <input class="card-title-checked form-check-input ripple" disabled type="checkbox" value="" id="check1" aria-label="{{ 'cards.select_card' | translate }}">
54
+ </h5>
55
+ <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
56
+ <p class="card-text">{{ 'cards.card_text' | translate }}</p>
57
+ <div class="card-footer">
58
+ <a href="javascript:void(0);" class="btn btn-outline-secondary disabled">{{ 'cards.action_secondary' | translate }}</a>
59
+ <a href="javascript:void(0);" class="btn btn-primary disabled">{{ 'cards.action' | translate }}</a>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ <app-code-example [htmlCode]="disabledCardCode" title="Disabled Card with Icon and Checkbox"></app-code-example>
65
+
66
+ <!-- Card without shadow -->
67
+ <h3 class="mb-3 mt-5">Card without Shadow</h3>
68
+ <div class="demo-card-grid mb-3">
69
+ <div class="card shadow-none" tabindex="0">
70
+ <div class="card-body">
71
+ <h5 class="card-title">
72
+ <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check2" aria-label="{{ 'cards.select_card' | translate }}">
73
+ </h5>
74
+ <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
75
+ <p class="card-text">{{ 'cards.card_text' | translate }}</p>
76
+ <div class="card-footer">
77
+ <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
78
+ <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ <app-code-example [htmlCode]="cardNoShadowCode" title="Card with Shadow Removed (shadow-none)"></app-code-example>
84
+
85
+ <!-- Expandable card with checkbox -->
86
+ <h3 class="mb-3 mt-5">Expandable Card (Interactive)</h3>
87
+ <div class="demo-card-grid mb-3">
88
+ <div class="card" tabindex="0" [class.expanded]="isExpanded(1)">
89
+ <div class="card-body">
90
+ <h5 class="card-title">
91
+ <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
92
+ <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check3" aria-label="{{ 'cards.select_card' | translate }}">
93
+ </h5>
94
+ <h6 class="card-subtitle mb-2">{{ 'cards.expandable_title' | translate }}</h6>
95
+ <p class="card-text">{{ 'cards.expandable_text' | translate }}</p>
96
+
97
+ @if (isExpanded(1)) {
98
+ <div class="card-expanded-content">
99
+ <p class="mt-3">{{ 'cards.expanded_content' | translate }}</p>
100
+ <ul>
101
+ <li>{{ 'cards.detail_1' | translate }}</li>
102
+ <li>{{ 'cards.detail_2' | translate }}</li>
103
+ <li>{{ 'cards.detail_3' | translate }}</li>
104
+ </ul>
105
+ </div>
106
+ }
107
+
108
+ <div class="card-footer">
109
+ <i class="hgi hgi-stroke hgi-arrow-up-01 card-expanded-icon" [class.hgi-arrow-up-01]="isExpanded(1)" [class.hgi-arrow-down-01]="!isExpanded(1)" (click)="toggleCard(1)"></i>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ <app-code-example
115
+ [htmlCode]="expandableCardHtmlCode"
116
+ [tsCode]="expandableCardTsCode"
117
+ title="Expandable Card with Checkbox - HTML Template"></app-code-example>
118
+
119
+ <!-- Expandable card with actions -->
120
+ <h3 class="mb-3 mt-5">Expandable Card (Simple)</h3>
121
+ <div class="demo-card-grid mb-3">
122
+ <div class="card" tabindex="0" [class.expanded]="isExpanded(2)">
123
+ <div class="card-body">
124
+ <h5 class="card-title">
125
+ <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
126
+ </h5>
127
+ <h6 class="card-subtitle mb-2">{{ 'cards.expandable_title' | translate }}</h6>
128
+ <p class="card-text">{{ 'cards.expandable_text' | translate }}</p>
129
+
130
+ @if (isExpanded(2)) {
131
+ <div class="card-expanded-content">
132
+ <p class="mt-3">{{ 'cards.expanded_content' | translate }}</p>
133
+ <ul>
134
+ <li>{{ 'cards.detail_1' | translate }}</li>
135
+ <li>{{ 'cards.detail_2' | translate }}</li>
136
+ <li>{{ 'cards.detail_3' | translate }}</li>
137
+ </ul>
138
+ <div class="d-flex align-items-center gap-3 mb-3">
139
+ <button class="btn btn-sm btn-primary">{{ 'cards.action' | translate }}</button>
140
+ <button class="btn btn-sm btn-outline-secondary">{{ 'cards.cancel' | translate }}</button>
141
+ </div>
142
+ </div>
143
+ }
144
+
145
+ <div class="card-footer">
146
+ <i class="hgi hgi-stroke hgi-arrow-up-01 card-expanded-icon" [class.hgi-arrow-up-01]="isExpanded(2)" [class.hgi-arrow-down-01]="!isExpanded(2)" (click)="toggleCard(2)"></i>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ <app-code-example
152
+ [htmlCode]="expandableCardSimpleHtmlCode"
153
+ [tsCode]="expandableCardTsCode"
154
+ title="Expandable Card with Actions - HTML Template"></app-code-example>
155
+ </section>
156
+ </div>