sdga-ui 1.0.8 → 1.0.10

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 (101) hide show
  1. package/css/dga-ui.css +371 -98
  2. package/css/dga-ui.css.map +1 -1
  3. package/package.json +20 -4
  4. package/theme/_variables.scss +1 -1
  5. package/theme/components/_buttons.scss +2 -2
  6. package/theme/components/_dropdowns.scss +2 -2
  7. package/theme/components/_navbar.scss +10 -9
  8. package/theme/config/_base.scss +1 -1
  9. package/theme/customizations/_alerts.scss +29 -45
  10. package/theme/customizations/_cards.scss +2 -71
  11. package/theme/customizations/_global.scss +7 -4
  12. package/theme/customizations/_icon-featured.scss +122 -0
  13. package/theme/customizations/_links.scss +22 -21
  14. package/theme/customizations/_navbar.scss +167 -0
  15. package/theme/dga-ui.scss +2 -0
  16. package/.editorconfig +0 -23
  17. package/.github/workflows/deploy.yml +0 -71
  18. package/.github/workflows/publish.yml +0 -36
  19. package/.prettierignore +0 -73
  20. package/.prettierrc +0 -17
  21. package/demo-angular/.editorconfig +0 -17
  22. package/demo-angular/.vscode/extensions.json +0 -4
  23. package/demo-angular/.vscode/launch.json +0 -20
  24. package/demo-angular/.vscode/tasks.json +0 -42
  25. package/demo-angular/README.md +0 -91
  26. package/demo-angular/angular.json +0 -96
  27. package/demo-angular/package-lock.json +0 -10600
  28. package/demo-angular/package.json +0 -53
  29. package/demo-angular/public/404.html +0 -35
  30. package/demo-angular/public/favicon.ico +0 -0
  31. package/demo-angular/public/i18n/ar.json +0 -289
  32. package/demo-angular/public/i18n/en.json +0 -289
  33. package/demo-angular/src/app/app.config.ts +0 -20
  34. package/demo-angular/src/app/app.html +0 -52
  35. package/demo-angular/src/app/app.routes.ts +0 -49
  36. package/demo-angular/src/app/app.scss +0 -430
  37. package/demo-angular/src/app/app.spec.ts +0 -23
  38. package/demo-angular/src/app/app.ts +0 -97
  39. package/demo-angular/src/app/shared/code-example/code-example.component.html +0 -30
  40. package/demo-angular/src/app/shared/code-example/code-example.component.scss +0 -183
  41. package/demo-angular/src/app/shared/code-example/code-example.component.ts +0 -89
  42. package/demo-angular/src/app/views/alerts/alerts.component.html +0 -155
  43. package/demo-angular/src/app/views/alerts/alerts.component.scss +0 -3
  44. package/demo-angular/src/app/views/alerts/alerts.component.ts +0 -134
  45. package/demo-angular/src/app/views/buttons/buttons.component.html +0 -360
  46. package/demo-angular/src/app/views/buttons/buttons.component.scss +0 -11
  47. package/demo-angular/src/app/views/buttons/buttons.component.ts +0 -225
  48. package/demo-angular/src/app/views/cards/cards.component.html +0 -156
  49. package/demo-angular/src/app/views/cards/cards.component.html.backup +0 -156
  50. package/demo-angular/src/app/views/cards/cards.component.scss +0 -11
  51. package/demo-angular/src/app/views/cards/cards.component.ts +0 -194
  52. package/demo-angular/src/app/views/footer/footer.html +0 -270
  53. package/demo-angular/src/app/views/footer/footer.ts +0 -276
  54. package/demo-angular/src/app/views/forms/forms.component.html +0 -347
  55. package/demo-angular/src/app/views/forms/forms.component.scss +0 -3
  56. package/demo-angular/src/app/views/forms/forms.component.ts +0 -222
  57. package/demo-angular/src/app/views/header/header.html +0 -1
  58. package/demo-angular/src/app/views/header/header.scss +0 -0
  59. package/demo-angular/src/app/views/header/header.spec.ts +0 -23
  60. package/demo-angular/src/app/views/header/header.ts +0 -11
  61. package/demo-angular/src/app/views/home/home.component.html +0 -33
  62. package/demo-angular/src/app/views/home/home.component.scss +0 -35
  63. package/demo-angular/src/app/views/home/home.component.ts +0 -12
  64. package/demo-angular/src/app/views/links/links.component.html +0 -21
  65. package/demo-angular/src/app/views/links/links.component.scss +0 -11
  66. package/demo-angular/src/app/views/links/links.component.ts +0 -19
  67. package/demo-angular/src/app/views/tables/tables.component.html +0 -289
  68. package/demo-angular/src/app/views/tables/tables.component.scss +0 -3
  69. package/demo-angular/src/app/views/tables/tables.component.ts +0 -278
  70. package/demo-angular/src/app/views/toasts/toasts.component.html +0 -201
  71. package/demo-angular/src/app/views/toasts/toasts.component.scss +0 -0
  72. package/demo-angular/src/app/views/toasts/toasts.component.ts +0 -182
  73. package/demo-angular/src/index.html +0 -28
  74. package/demo-angular/src/main.ts +0 -6
  75. package/demo-angular/src/styles.scss +0 -4
  76. package/demo-angular/tsconfig.app.json +0 -16
  77. package/demo-angular/tsconfig.json +0 -33
  78. package/demo-angular/tsconfig.spec.json +0 -15
  79. package/sdga-ui/README.md +0 -45
  80. package/sdga-ui/content/docs/components/alerts.mdx +0 -475
  81. package/sdga-ui/content/docs/index.mdx +0 -239
  82. package/sdga-ui/next.config.mjs +0 -10
  83. package/sdga-ui/package-lock.json +0 -5851
  84. package/sdga-ui/package.json +0 -32
  85. package/sdga-ui/postcss.config.mjs +0 -5
  86. package/sdga-ui/source.config.ts +0 -27
  87. package/sdga-ui/src/app/(home)/layout.tsx +0 -6
  88. package/sdga-ui/src/app/(home)/page.tsx +0 -202
  89. package/sdga-ui/src/app/api/search/route.ts +0 -7
  90. package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +0 -54
  91. package/sdga-ui/src/app/docs/layout.tsx +0 -11
  92. package/sdga-ui/src/app/global.css +0 -3
  93. package/sdga-ui/src/app/layout.tsx +0 -25
  94. package/sdga-ui/src/app/llms-full.txt/route.ts +0 -10
  95. package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +0 -34
  96. package/sdga-ui/src/app/sdga-scoped.css +0 -7
  97. package/sdga-ui/src/components/sdga-preview.tsx +0 -105
  98. package/sdga-ui/src/lib/layout.shared.tsx +0 -9
  99. package/sdga-ui/src/lib/source.ts +0 -27
  100. package/sdga-ui/src/mdx-components.tsx +0 -9
  101. package/sdga-ui/tsconfig.json +0 -46
@@ -1,183 +0,0 @@
1
- .code-example-wrapper {
2
- margin-top: 1rem;
3
- margin-bottom: 2rem;
4
- }
5
-
6
- .code-header {
7
- display: flex;
8
- justify-content: space-between;
9
- align-items: center;
10
- padding: 0.5rem 1rem;
11
- background: #f8f9fa;
12
- border: 1px solid #dee2e6;
13
- border-bottom: none;
14
- border-radius: 0.375rem 0.375rem 0 0;
15
-
16
- .code-title {
17
- font-size: 0.875rem;
18
- font-weight: 600;
19
- color: #495057;
20
- }
21
-
22
- .btn-toggle {
23
- padding: 0.25rem 0.75rem;
24
- font-size: 0.875rem;
25
- background: white;
26
- border: 1px solid #dee2e6;
27
- border-radius: 0.25rem;
28
- cursor: pointer;
29
- transition: all 0.2s;
30
-
31
- &:hover {
32
- background: #e9ecef;
33
- }
34
- }
35
- }
36
-
37
- .code-example {
38
- background: #282c34;
39
- border: 1px solid #dee2e6;
40
- border-radius: 0 0 0.375rem 0.375rem;
41
- overflow: hidden;
42
- direction: ltr;
43
-
44
- .code-tabs {
45
- display: flex;
46
- gap: 0.5rem;
47
- padding: 0.75rem 1rem;
48
- background: #21252b;
49
- border-bottom: 1px solid #181a1f;
50
-
51
- .tab-btn {
52
- padding: 0.375rem 0.875rem;
53
- font-size: 0.813rem;
54
- font-weight: 500;
55
- color: #abb2bf;
56
- background: transparent;
57
- border: 1px solid transparent;
58
- border-radius: 0.25rem;
59
- cursor: pointer;
60
- transition: all 0.2s;
61
- text-transform: uppercase;
62
-
63
- &:hover {
64
- color: #ffffff;
65
- background: #282c34;
66
- }
67
-
68
- &.active {
69
- color: #61afef;
70
- background: #282c34;
71
- border-color: #61afef;
72
- }
73
- }
74
-
75
- .btn-copy {
76
- margin-inline-start: auto;
77
- padding: 0.375rem 0.875rem;
78
- font-size: 0.813rem;
79
- font-weight: 500;
80
- color: #98c379;
81
- background: transparent;
82
- border: 1px solid #98c379;
83
- border-radius: 0.25rem;
84
- cursor: pointer;
85
- transition: all 0.2s;
86
-
87
- &:hover {
88
- background: #98c37920;
89
- }
90
-
91
- &:active {
92
- transform: scale(0.95);
93
- }
94
- }
95
- }
96
-
97
- pre {
98
- margin: 0;
99
- padding: 1rem;
100
- overflow-x: auto;
101
- background: #282c34;
102
-
103
- code {
104
- font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
105
- font-size: 0.875rem;
106
- line-height: 1.6;
107
- color: #abb2bf;
108
- }
109
- }
110
- }
111
-
112
- // Syntax highlighting styles (Atom One Dark theme)
113
- :host ::ng-deep {
114
- .hljs-comment,
115
- .hljs-quote {
116
- color: #5c6370;
117
- font-style: italic;
118
- }
119
-
120
- .hljs-doctag,
121
- .hljs-keyword,
122
- .hljs-formula {
123
- color: #c678dd;
124
- }
125
-
126
- .hljs-section,
127
- .hljs-name,
128
- .hljs-selector-tag,
129
- .hljs-deletion,
130
- .hljs-subst {
131
- color: #e06c75;
132
- }
133
-
134
- .hljs-literal {
135
- color: #56b6c2;
136
- }
137
-
138
- .hljs-string,
139
- .hljs-regexp,
140
- .hljs-addition,
141
- .hljs-attribute,
142
- .hljs-meta .hljs-string {
143
- color: #98c379;
144
- }
145
-
146
- .hljs-attr,
147
- .hljs-variable,
148
- .hljs-template-variable,
149
- .hljs-type,
150
- .hljs-selector-class,
151
- .hljs-selector-attr,
152
- .hljs-selector-pseudo,
153
- .hljs-number {
154
- color: #d19a66;
155
- }
156
-
157
- .hljs-symbol,
158
- .hljs-bullet,
159
- .hljs-link,
160
- .hljs-meta,
161
- .hljs-selector-id,
162
- .hljs-title {
163
- color: #61afef;
164
- }
165
-
166
- .hljs-built_in,
167
- .hljs-title.class_,
168
- .hljs-class .hljs-title {
169
- color: #e6c07b;
170
- }
171
-
172
- .hljs-emphasis {
173
- font-style: italic;
174
- }
175
-
176
- .hljs-strong {
177
- font-weight: bold;
178
- }
179
-
180
- .hljs-link {
181
- text-decoration: underline;
182
- }
183
- }
@@ -1,89 +0,0 @@
1
- import { Component, Input, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { TranslateModule } from '@ngx-translate/core';
4
- import hljs from 'highlight.js';
5
-
6
- @Component({
7
- selector: 'app-code-example',
8
- imports: [CommonModule, TranslateModule],
9
- templateUrl: './code-example.component.html',
10
- styleUrls: ['./code-example.component.scss'],
11
- })
12
- export class CodeExampleComponent {
13
- @Input() htmlCode?: string;
14
- @Input() tsCode?: string;
15
- @Input() scssCode?: string;
16
- @Input() title?: string;
17
- @Input() expanded = false;
18
- @Input() onColor?: string;
19
-
20
- isExpanded = signal(false);
21
- activeTab = signal<'html' | 'ts' | 'scss'>('html');
22
- copySuccess = signal(false);
23
-
24
- ngOnInit() {
25
- this.isExpanded.set(this.expanded);
26
- // Set initial active tab to first available code
27
- if (this.htmlCode) this.activeTab.set('html');
28
- else if (this.tsCode) this.activeTab.set('ts');
29
- else if (this.scssCode) this.activeTab.set('scss');
30
- }
31
-
32
- toggleExpand() {
33
- this.isExpanded.update((value) => !value);
34
- }
35
-
36
- setActiveTab(tab: 'html' | 'ts' | 'scss') {
37
- this.activeTab.set(tab);
38
- }
39
-
40
- get currentCode(): string {
41
- const tab = this.activeTab();
42
- if (tab === 'html' && this.htmlCode) return this.wrappedHtmlCode;
43
- if (tab === 'ts' && this.tsCode) return this.tsCode;
44
- if (tab === 'scss' && this.scssCode) return this.scssCode;
45
- return '';
46
- }
47
-
48
- get wrappedHtmlCode(): string {
49
- if (!this.htmlCode) return '';
50
- if (this.onColor) {
51
- return `<div class="on-${this.onColor}">
52
- ${this.htmlCode.split('\n').join('\n ')}
53
- </div>`;
54
- }
55
- return this.htmlCode;
56
- }
57
-
58
- get highlightedCode(): string {
59
- const code = this.currentCode;
60
- const tab = this.activeTab();
61
- let language = 'html';
62
- if (tab === 'ts') language = 'typescript';
63
- if (tab === 'scss') language = 'scss';
64
-
65
- try {
66
- return hljs.highlight(code, { language }).value;
67
- } catch {
68
- return code;
69
- }
70
- }
71
-
72
- get availableTabs(): Array<'html' | 'ts' | 'scss'> {
73
- const tabs: Array<'html' | 'ts' | 'scss'> = [];
74
- if (this.htmlCode) tabs.push('html');
75
- if (this.tsCode) tabs.push('ts');
76
- if (this.scssCode) tabs.push('scss');
77
- return tabs;
78
- }
79
-
80
- async copyCode() {
81
- try {
82
- await navigator.clipboard.writeText(this.currentCode);
83
- this.copySuccess.set(true);
84
- setTimeout(() => this.copySuccess.set(false), 2000);
85
- } catch (err) {
86
- console.error('Failed to copy code:', err);
87
- }
88
- }
89
- }
@@ -1,155 +0,0 @@
1
- <div class="container py-5">
2
- <h1 class="display-4 mb-4">{{ 'alerts.title' | translate }}</h1>
3
- <p class="lead mb-5">{{ 'alerts.subtitle' | translate }}</p>
4
-
5
- <section class="demo-section">
6
- <h2>{{ 'alerts.section_dismissible' | translate }}</h2>
7
- <div class="d-flex flex-wrap gap-3">
8
- <section>
9
- <h3 class="h5 mb-3">Standard Alerts</h3>
10
- <div class="alert alert-success alert-dismissible fade show" role="alert">
11
- <i class="bi bi-check alert-icon"></i>
12
- <div>
13
- <strong class="alert-title">{{ 'alerts.success' | translate }}</strong> {{ 'alerts.success_text' | translate }}
14
- <div class="alert-footer">
15
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
16
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
17
- </div>
18
- </div>
19
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
20
- </div>
21
-
22
- <app-code-example [htmlCode]="successAlertCode"></app-code-example>
23
-
24
- <div class="alert alert-danger alert-dismissible fade show" role="alert">
25
- <i class="bi bi-exclamation-circle alert-icon"></i>
26
- <div>
27
- <strong class="alert-title">{{ 'alerts.danger' | translate }}</strong> {{ 'alerts.danger_text' | translate }}
28
- <div class="alert-footer">
29
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
30
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
31
- </div>
32
- </div>
33
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
34
- </div>
35
-
36
- <app-code-example [htmlCode]="dangerAlertCode"></app-code-example>
37
-
38
- <div class="alert alert-warning alert-dismissible fade show" role="alert">
39
- <i class="bi bi-exclamation-triangle alert-icon"></i>
40
- <div>
41
- <strong class="alert-title">{{ 'alerts.warning' | translate }}</strong> {{ 'alerts.warning_text' | translate }}
42
- <div class="alert-footer">
43
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
44
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
45
- </div>
46
- </div>
47
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
48
- </div>
49
-
50
- <app-code-example [htmlCode]="warningAlertCode"></app-code-example>
51
-
52
- <div class="alert alert-info alert-dismissible fade show" role="alert">
53
- <i class="bi bi-info-circle alert-icon"></i>
54
- <div>
55
- <strong class="alert-title">{{ 'alerts.info' | translate }}</strong> {{ 'alerts.info_text' | translate }}
56
- <div class="alert-footer">
57
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
58
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
59
- </div>
60
- </div>
61
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
62
- </div>
63
-
64
- <app-code-example [htmlCode]="infoAlertCode"></app-code-example>
65
-
66
- <div class="alert alert-neutral alert-dismissible fade show" role="alert">
67
- <i class="bi bi-info-circle alert-icon"></i>
68
- <div>
69
- <strong class="alert-title">{{ 'alerts.neutral' | translate }}</strong> {{ 'alerts.neutral_text' | translate }}
70
- <div class="alert-footer">
71
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
72
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
73
- </div>
74
- </div>
75
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
76
- </div>
77
-
78
- <app-code-example [htmlCode]="neutralAlertCode"></app-code-example>
79
- </section>
80
-
81
- <section>
82
- <h3 class="h5 mb-3">Side-bordered Alerts</h3>
83
- <div class="alert alert-side alert-success alert-dismissible fade show" role="alert">
84
- <i class="bi bi-check alert-icon"></i>
85
- <div>
86
- <strong class="alert-title">{{ 'alerts.success' | translate }}</strong> {{ 'alerts.success_text' | translate }}
87
- <div class="alert-footer">
88
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
89
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
90
- </div>
91
- </div>
92
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
93
- </div>
94
-
95
- <app-code-example [htmlCode]="sideSuccessAlertCode"></app-code-example>
96
-
97
- <div class="alert alert-side alert-danger alert-dismissible fade show" role="alert">
98
- <i class="bi bi-exclamation-circle alert-icon"></i>
99
- <div>
100
- <strong class="alert-title">{{ 'alerts.danger' | translate }}</strong> {{ 'alerts.danger_text' | translate }}
101
- <div class="alert-footer">
102
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
103
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
104
- </div>
105
- </div>
106
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
107
- </div>
108
-
109
- <app-code-example [htmlCode]="sideDangerAlertCode"></app-code-example>
110
-
111
- <div class="alert alert-side alert-warning alert-dismissible fade show" role="alert">
112
- <i class="bi bi-exclamation-triangle alert-icon"></i>
113
- <div>
114
- <strong class="alert-title">{{ 'alerts.warning' | translate }}</strong> {{ 'alerts.warning_text' | translate }}
115
- <div class="alert-footer">
116
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
117
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
118
- </div>
119
- </div>
120
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
121
- </div>
122
-
123
- <app-code-example [htmlCode]="sideWarningAlertCode"></app-code-example>
124
-
125
- <div class="alert alert-side alert-info alert-dismissible fade show" role="alert">
126
- <i class="bi bi-info-circle alert-icon"></i>
127
- <div>
128
- <strong class="alert-title">{{ 'alerts.info' | translate }}</strong> {{ 'alerts.info_text' | translate }}
129
- <div class="alert-footer">
130
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
131
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
132
- </div>
133
- </div>
134
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
135
- </div>
136
-
137
- <app-code-example [htmlCode]="sideInfoAlertCode"></app-code-example>
138
-
139
- <div class="alert alert-side alert-neutral alert-dismissible fade show" role="alert">
140
- <i class="bi bi-info-circle alert-icon"></i>
141
- <div>
142
- <strong class="alert-title">{{ 'alerts.neutral' | translate }}</strong> {{ 'alerts.neutral_text' | translate }}
143
- <div class="alert-footer">
144
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
145
- <button type="button" class="btn btn-subtle">{{ 'buttons.normal' | translate }}</button>
146
- </div>
147
- </div>
148
- <button type="button" class="btn-close" data-bs-dismiss="alert" [attr.aria-label]="'common.close' | translate"></button>
149
- </div>
150
-
151
- <app-code-example [htmlCode]="sideNeutralAlertCode"></app-code-example>
152
- </section>
153
- </div>
154
- </section>
155
- </div>
@@ -1,3 +0,0 @@
1
- .demo-section {
2
- margin-bottom: 4rem;
3
- }
@@ -1,134 +0,0 @@
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-alerts',
7
- imports: [TranslateModule, CodeExampleComponent],
8
- templateUrl: './alerts.component.html',
9
- styleUrl: './alerts.component.scss',
10
- changeDetection: ChangeDetectionStrategy.OnPush
11
- })
12
- export class AlertsComponent {
13
- // Standard Dismissible Alerts
14
- successAlertCode = `<div class="alert alert-success alert-dismissible fade show" role="alert">
15
- <i class="bi bi-check alert-icon"></i>
16
- <div>
17
- <strong class="alert-title">Success!</strong> Your action completed successfully.
18
- <div class="alert-footer">
19
- <button type="button" class="btn btn-subtle">Action</button>
20
- <button type="button" class="btn btn-subtle">Cancel</button>
21
- </div>
22
- </div>
23
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
24
- </div>`;
25
-
26
- dangerAlertCode = `<div class="alert alert-danger alert-dismissible fade show" role="alert">
27
- <i class="bi bi-exclamation-circle alert-icon"></i>
28
- <div>
29
- <strong class="alert-title">Error!</strong> Something went wrong with your request.
30
- <div class="alert-footer">
31
- <button type="button" class="btn btn-subtle">Retry</button>
32
- <button type="button" class="btn btn-subtle">Cancel</button>
33
- </div>
34
- </div>
35
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
36
- </div>`;
37
-
38
- warningAlertCode = `<div class="alert alert-warning alert-dismissible fade show" role="alert">
39
- <i class="bi bi-exclamation-triangle alert-icon"></i>
40
- <div>
41
- <strong class="alert-title">Warning!</strong> Please review before proceeding.
42
- <div class="alert-footer">
43
- <button type="button" class="btn btn-subtle">Review</button>
44
- <button type="button" class="btn btn-subtle">Dismiss</button>
45
- </div>
46
- </div>
47
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
48
- </div>`;
49
-
50
- infoAlertCode = `<div class="alert alert-info alert-dismissible fade show" role="alert">
51
- <i class="bi bi-info-circle alert-icon"></i>
52
- <div>
53
- <strong class="alert-title">Info</strong> Here's some helpful information.
54
- <div class="alert-footer">
55
- <button type="button" class="btn btn-subtle">Learn More</button>
56
- <button type="button" class="btn btn-subtle">Dismiss</button>
57
- </div>
58
- </div>
59
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
60
- </div>`;
61
-
62
- neutralAlertCode = `<div class="alert alert-neutral alert-dismissible fade show" role="alert">
63
- <i class="bi bi-info-circle alert-icon"></i>
64
- <div>
65
- <strong class="alert-title">Neutral</strong> Standard notification message.
66
- <div class="alert-footer">
67
- <button type="button" class="btn btn-subtle">Action</button>
68
- <button type="button" class="btn btn-subtle">Cancel</button>
69
- </div>
70
- </div>
71
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
72
- </div>`;
73
-
74
- // Side-bordered Alerts
75
- sideSuccessAlertCode = `<div class="alert alert-side alert-success alert-dismissible fade show" role="alert">
76
- <i class="bi bi-check alert-icon"></i>
77
- <div>
78
- <strong class="alert-title">Success!</strong> Your action completed successfully.
79
- <div class="alert-footer">
80
- <button type="button" class="btn btn-subtle">Action</button>
81
- <button type="button" class="btn btn-subtle">Cancel</button>
82
- </div>
83
- </div>
84
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
85
- </div>`;
86
-
87
- sideDangerAlertCode = `<div class="alert alert-side alert-danger alert-dismissible fade show" role="alert">
88
- <i class="bi bi-exclamation-circle alert-icon"></i>
89
- <div>
90
- <strong class="alert-title">Error!</strong> Something went wrong with your request.
91
- <div class="alert-footer">
92
- <button type="button" class="btn btn-subtle">Retry</button>
93
- <button type="button" class="btn btn-subtle">Cancel</button>
94
- </div>
95
- </div>
96
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
97
- </div>`;
98
-
99
- sideWarningAlertCode = `<div class="alert alert-side alert-warning alert-dismissible fade show" role="alert">
100
- <i class="bi bi-exclamation-triangle alert-icon"></i>
101
- <div>
102
- <strong class="alert-title">Warning!</strong> Please review before proceeding.
103
- <div class="alert-footer">
104
- <button type="button" class="btn btn-subtle">Review</button>
105
- <button type="button" class="btn btn-subtle">Dismiss</button>
106
- </div>
107
- </div>
108
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
109
- </div>`;
110
-
111
- sideInfoAlertCode = `<div class="alert alert-side alert-info alert-dismissible fade show" role="alert">
112
- <i class="bi bi-info-circle alert-icon"></i>
113
- <div>
114
- <strong class="alert-title">Info</strong> Here's some helpful information.
115
- <div class="alert-footer">
116
- <button type="button" class="btn btn-subtle">Learn More</button>
117
- <button type="button" class="btn btn-subtle">Dismiss</button>
118
- </div>
119
- </div>
120
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
121
- </div>`;
122
-
123
- sideNeutralAlertCode = `<div class="alert alert-side alert-neutral alert-dismissible fade show" role="alert">
124
- <i class="bi bi-info-circle alert-icon"></i>
125
- <div>
126
- <strong class="alert-title">Neutral</strong> Standard notification message.
127
- <div class="alert-footer">
128
- <button type="button" class="btn btn-subtle">Action</button>
129
- <button type="button" class="btn btn-subtle">Cancel</button>
130
- </div>
131
- </div>
132
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
133
- </div>`;
134
- }