sdga-ui 1.0.5 → 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.
Files changed (79) hide show
  1. package/.github/workflows/deploy.yml +15 -1
  2. package/README.md +16 -24
  3. package/css/dga-ui.css +4146 -1055
  4. package/css/dga-ui.css.map +1 -1
  5. package/demo-angular/README.md +34 -2
  6. package/demo-angular/angular.json +6 -1
  7. package/demo-angular/package-lock.json +191 -50
  8. package/demo-angular/package.json +14 -11
  9. package/demo-angular/public/404.html +35 -0
  10. package/demo-angular/public/i18n/ar.json +50 -0
  11. package/demo-angular/public/i18n/en.json +50 -0
  12. package/demo-angular/src/app/app.routes.ts +12 -4
  13. package/demo-angular/src/app/app.ts +8 -2
  14. package/demo-angular/src/app/views/alerts/alerts.component.html +10 -10
  15. package/demo-angular/src/app/views/alerts/alerts.component.ts +10 -10
  16. package/demo-angular/src/app/views/buttons/buttons.component.html +23 -23
  17. package/demo-angular/src/app/views/buttons/buttons.component.ts +14 -14
  18. package/demo-angular/src/app/views/cards/cards.component.html +6 -6
  19. package/demo-angular/src/app/views/cards/cards.component.ts +10 -10
  20. package/demo-angular/src/app/views/contexts/contexts.component.html +204 -0
  21. package/demo-angular/src/app/views/contexts/contexts.component.ts +10 -0
  22. package/demo-angular/src/app/views/footer/footer.html +282 -0
  23. package/demo-angular/src/app/views/footer/footer.spec.ts +23 -0
  24. package/demo-angular/src/app/views/footer/footer.ts +142 -0
  25. package/demo-angular/src/app/views/header/header.html +1 -0
  26. package/demo-angular/src/app/views/header/header.scss +0 -0
  27. package/demo-angular/src/app/views/header/header.spec.ts +23 -0
  28. package/demo-angular/src/app/views/header/header.ts +11 -0
  29. package/demo-angular/src/app/views/home/home.component.html +0 -5
  30. package/demo-angular/src/app/views/links/links.component.html +11 -130
  31. package/demo-angular/src/app/views/links/links.component.scss +1 -50
  32. package/demo-angular/src/app/views/links/links.component.ts +5 -109
  33. package/demo-angular/src/app/views/toasts/toasts.component.html +7 -7
  34. package/demo-angular/src/app/views/toasts/toasts.component.ts +7 -7
  35. package/demo-angular/src/index.html +15 -1
  36. package/package.json +3 -2
  37. package/sdga-ui/README.md +45 -0
  38. package/sdga-ui/content/docs/components/alerts.mdx +475 -0
  39. package/sdga-ui/content/docs/index.mdx +239 -0
  40. package/sdga-ui/next.config.mjs +10 -0
  41. package/sdga-ui/package-lock.json +5851 -0
  42. package/sdga-ui/package.json +32 -0
  43. package/sdga-ui/postcss.config.mjs +5 -0
  44. package/sdga-ui/source.config.ts +27 -0
  45. package/sdga-ui/src/app/(home)/layout.tsx +6 -0
  46. package/sdga-ui/src/app/(home)/page.tsx +202 -0
  47. package/sdga-ui/src/app/api/search/route.ts +7 -0
  48. package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +54 -0
  49. package/sdga-ui/src/app/docs/layout.tsx +11 -0
  50. package/sdga-ui/src/app/global.css +3 -0
  51. package/sdga-ui/src/app/layout.tsx +25 -0
  52. package/sdga-ui/src/app/llms-full.txt/route.ts +10 -0
  53. package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +34 -0
  54. package/sdga-ui/src/app/sdga-scoped.css +7 -0
  55. package/sdga-ui/src/components/sdga-preview.tsx +105 -0
  56. package/sdga-ui/src/lib/layout.shared.tsx +9 -0
  57. package/sdga-ui/src/lib/source.ts +27 -0
  58. package/sdga-ui/src/mdx-components.tsx +9 -0
  59. package/sdga-ui/tsconfig.json +46 -0
  60. package/theme/_variables.scss +7 -5
  61. package/theme/components/_buttons.scss +105 -0
  62. package/theme/components/_cards.scss +0 -1
  63. package/theme/components/_pagination.scss +2 -2
  64. package/theme/config/_base.scss +4 -33
  65. package/theme/config/_contexts.scss +471 -0
  66. package/theme/customizations/_alerts.scss +105 -125
  67. package/theme/customizations/_badges.scss +15 -0
  68. package/theme/customizations/_buttons.scss +288 -146
  69. package/theme/customizations/_cards.scss +52 -0
  70. package/theme/customizations/_contexts.scss +432 -0
  71. package/theme/customizations/_footer.scss +83 -0
  72. package/theme/customizations/_links.scss +88 -84
  73. package/theme/customizations/_toasts.scss +81 -101
  74. package/theme/dga-ui.scss +3 -2
  75. package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +0 -14
  76. package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +0 -91
  77. package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +0 -23
  78. package/theme/customizations/_utilities.scss +0 -138
  79. /package/demo-angular/{public/.nojekyll → src/app/views/footer/footer.scss} +0 -0
@@ -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>
@@ -4,137 +4,18 @@
4
4
 
5
5
  <section class="demo-section mb-5">
6
6
  <h2>{{ 'links.section_basic' | translate }}</h2>
7
- <div class="d-flex flex-column gap-3">
8
- <div>
9
- <a href="javascript:void(0);" class="link-primary">{{ 'links.primary_link' | translate }}</a>
10
- </div>
11
- <div>
12
- <a href="javascript:void(0);" class="link-secondary">{{ 'links.secondary_link' | translate }}</a>
13
- </div>
14
- <div>
15
- <a href="javascript:void(0);" class="link-success">{{ 'links.success_link' | translate }}</a>
16
- </div>
17
- <div>
18
- <a href="javascript:void(0);" class="link-danger">{{ 'links.danger_link' | translate }}</a>
19
- </div>
20
- <div>
21
- <a href="javascript:void(0);" class="link-warning">{{ 'links.warning_link' | translate }}</a>
22
- </div>
23
- <div>
24
- <a href="javascript:void(0);" class="link-info">{{ 'links.info_link' | translate }}</a>
25
- </div>
7
+ <div class="d-flex flex-column gap-3 component-showcase">
8
+ <!-- Primary link -->
9
+ <a href="javascript:void(0);" class="link-primary link-offset-2">{{ 'links.primary_link' | translate }}</a>
10
+ <!-- Neutral link -->
11
+ <a href="javascript:void(0);" class="link-neutral link-offset-2">{{ 'links.neutral_link' | translate }}</a>
12
+ <!-- On-color link displayed on a primary background -->
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
+ </div>
16
+ <!-- Disabled link (non-interactive) -->
17
+ <a href="javascript:void(0);" class="link-primary disabled link-offset-2" aria-disabled="true" tabindex="-1">{{ 'links.disabled_link' | translate }}</a>
26
18
  </div>
27
19
  <app-code-example [htmlCode]="basicLinksCode"></app-code-example>
28
20
  </section>
29
-
30
- <section class="demo-section mb-5">
31
- <h2>{{ 'links.section_underline' | translate }}</h2>
32
- <div class="d-flex flex-column gap-3">
33
- <div>
34
- <a href="javascript:void(0);" class="link-underline">{{ 'links.underline_link' | translate }}</a>
35
- </div>
36
- <div>
37
- <a href="javascript:void(0);" class="link-underline-opacity-0">{{ 'links.no_underline' | translate }}</a>
38
- </div>
39
- <div>
40
- <a href="javascript:void(0);" class="link-underline-opacity-25">{{ 'links.underline_25' | translate }}</a>
41
- </div>
42
- <div>
43
- <a href="javascript:void(0);" class="link-underline-opacity-50">{{ 'links.underline_50' | translate }}</a>
44
- </div>
45
- <div>
46
- <a href="javascript:void(0);" class="link-underline-opacity-75">{{ 'links.underline_75' | translate }}</a>
47
- </div>
48
- <div>
49
- <a href="javascript:void(0);" class="link-underline-opacity-100">{{ 'links.underline_100' | translate }}</a>
50
- </div>
51
- </div>
52
- <app-code-example [htmlCode]="underlineLinksCode"></app-code-example>
53
- </section>
54
-
55
- <section class="demo-section mb-5">
56
- <h2>{{ 'links.section_hover' | translate }}</h2>
57
- <div class="d-flex flex-column gap-3">
58
- <div>
59
- <a href="javascript:void(0);" class="link-primary link-underline-opacity-0 link-underline-opacity-100-hover">{{ 'links.hover_underline' | translate }}</a>
60
- </div>
61
- <div>
62
- <a href="javascript:void(0);" class="link-secondary link-underline-opacity-100 link-underline-opacity-0-hover">{{ 'links.hover_remove' | translate }}</a>
63
- </div>
64
- </div>
65
- <app-code-example [htmlCode]="hoverLinksCode"></app-code-example>
66
- </section>
67
-
68
- <section class="demo-section mb-5">
69
- <h2>{{ 'links.section_offset' | translate }}</h2>
70
- <div class="d-flex flex-column gap-3">
71
- <div>
72
- <a href="javascript:void(0);" class="link-offset-1">{{ 'links.offset_1' | translate }}</a>
73
- </div>
74
- <div>
75
- <a href="javascript:void(0);" class="link-offset-2">{{ 'links.offset_2' | translate }}</a>
76
- </div>
77
- <div>
78
- <a href="javascript:void(0);" class="link-offset-3">{{ 'links.offset_3' | translate }}</a>
79
- </div>
80
- </div>
81
- <app-code-example [htmlCode]="offsetLinksCode"></app-code-example>
82
-
83
- <h3 class="mt-4 mb-3">Combining Offset with Hover Effects</h3>
84
- <div class="d-flex flex-column gap-3">
85
- <div>
86
- <a href="javascript:void(0);" class="link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover">
87
- Link with changing offset on hover
88
- </a>
89
- </div>
90
- </div>
91
- <app-code-example [htmlCode]="offsetHoverCode"></app-code-example>
92
- </section>
93
-
94
- <section class="demo-section mb-5">
95
- <h2>{{ 'links.section_icons' | translate }}</h2>
96
- <div class="d-flex flex-column gap-3">
97
- <div>
98
- <a href="javascript:void(0);" class="link-primary">
99
- <i class="hgi hgi-stroke hgi-link-01 me-2"></i>
100
- {{ 'links.link_with_icon' | translate }}
101
- </a>
102
- </div>
103
- <div>
104
- <a href="javascript:void(0);" class="link-secondary">
105
- {{ 'links.external_link' | translate }}
106
- <i class="hgi hgi-stroke hgi-link-external-01 ms-2"></i>
107
- </a>
108
- </div>
109
- <div>
110
- <a href="javascript:void(0);" class="link-success">
111
- <i class="hgi hgi-stroke hgi-arrow-right-01 me-2"></i>
112
- {{ 'links.arrow_link' | translate }}
113
- </a>
114
- </div>
115
- </div>
116
- <app-code-example [htmlCode]="iconLinksCode"></app-code-example>
117
- </section>
118
-
119
- <section class="demo-section">
120
- <h2>{{ 'links.section_custom' | translate }}</h2>
121
-
122
- <h3 class="h5 mb-3">Subtle Link</h3>
123
- <div class="mb-3">
124
- <a href="javascript:void(0);" class="custom-link-subtle">{{ 'links.subtle_link' | translate }}</a>
125
- </div>
126
- <app-code-example [htmlCode]="subtleLinkCode" [scssCode]="subtleLinkScss"></app-code-example>
127
-
128
- <h3 class="h5 mb-3 mt-4">Bold Link</h3>
129
- <div class="mb-3">
130
- <a href="javascript:void(0);" class="custom-link-bold">{{ 'links.bold_link' | translate }}</a>
131
- </div>
132
- <app-code-example [htmlCode]="boldLinkCode" [scssCode]="boldLinkScss"></app-code-example>
133
-
134
- <h3 class="h5 mb-3 mt-4">Decorated Link</h3>
135
- <div class="mb-3">
136
- <a href="javascript:void(0);" class="custom-link-decorated">{{ 'links.decorated_link' | translate }}</a>
137
- </div>
138
- <app-code-example [htmlCode]="decoratedLinkCode" [scssCode]="decoratedLinkScss"></app-code-example>
139
- </section>
140
21
  </div>
@@ -8,53 +8,4 @@
8
8
  padding-bottom: 0.5rem;
9
9
  border-bottom: 1px solid var(--dga-border-color);
10
10
  }
11
-
12
- a {
13
- font-size: 1rem;
14
- transition: all 0.2s ease;
15
- }
16
- }
17
-
18
- // Custom link styles
19
- .custom-link-subtle {
20
- color: var(--dga-neutral-600);
21
- text-decoration: none;
22
-
23
- &:hover {
24
- color: var(--dga-primary);
25
- text-decoration: underline;
26
- }
27
- }
28
-
29
- .custom-link-bold {
30
- color: var(--dga-primary);
31
- font-weight: 600;
32
- text-decoration: none;
33
-
34
- &:hover {
35
- color: var(--dga-primary-dark);
36
- text-decoration: underline;
37
- }
38
- }
39
-
40
- .custom-link-decorated {
41
- color: var(--dga-secondary);
42
- text-decoration: none;
43
- position: relative;
44
- padding-bottom: 2px;
45
-
46
- &::after {
47
- content: '';
48
- position: absolute;
49
- bottom: 0;
50
- left: 0;
51
- width: 0;
52
- height: 2px;
53
- background-color: var(--dga-secondary);
54
- transition: width 0.3s ease;
55
- }
56
-
57
- &:hover::after {
58
- width: 100%;
59
- }
60
- }
11
+ }
@@ -10,114 +10,10 @@ import { CodeExampleComponent } from '../../shared/code-example/code-example.com
10
10
  styleUrl: './links.component.scss'
11
11
  })
12
12
  export class LinksComponent {
13
- // Basic link colors
14
- basicLinksCode = `<a href="#" class="link-primary">Primary link</a>
15
- <a href="#" class="link-secondary">Secondary link</a>
16
- <a href="#" class="link-success">Success link</a>
17
- <a href="#" class="link-danger">Danger link</a>
18
- <a href="#" class="link-warning">Warning link</a>
19
- <a href="#" class="link-info">Info link</a>`;
13
+ // Basic link variants (primary, neutral, on-color, disabled)
14
+ basicLinksCode = `<a href=\"javascript:void(0);\" class=\"link-primary link-offset-2\">Primary link</a>
15
+ <a href=\"javascript:void(0);\" class=\"link-neutral link-offset-2\">Neutral link</a>
16
+ <div class=\"p-3 bg-primary rounded-2\"><a href=\"javascript:void(0);\" class=\"link-oncolor link-offset-2\">On-color link</a></div>
17
+ <a href=\"javascript:void(0);\" class=\"link-primary disabled link-offset-2\" aria-disabled=\"true\" tabindex=\"-1\">Disabled link</a>`;
20
18
 
21
- // Underline utilities with opacity variants
22
- underlineLinksCode = `<!-- Default underline -->
23
- <a href="#" class="link-underline">Link with underline</a>
24
-
25
- <!-- Opacity variants -->
26
- <a href="#" class="link-underline-opacity-0">No underline (opacity 0)</a>
27
- <a href="#" class="link-underline-opacity-25">25% underline opacity</a>
28
- <a href="#" class="link-underline-opacity-50">50% underline opacity</a>
29
- <a href="#" class="link-underline-opacity-75">75% underline opacity</a>
30
- <a href="#" class="link-underline-opacity-100">100% underline opacity</a>`;
31
-
32
- // Hover underline effects
33
- hoverLinksCode = `<!-- Show underline on hover -->
34
- <a href="#" class="link-primary link-underline-opacity-0 link-underline-opacity-100-hover">
35
- Underline appears on hover
36
- </a>
37
-
38
- <!-- Hide underline on hover -->
39
- <a href="#" class="link-secondary link-underline-opacity-100 link-underline-opacity-0-hover">
40
- Underline disappears on hover
41
- </a>`;
42
-
43
- // Underline offset utilities
44
- offsetLinksCode = `<a href="#" class="link-offset-1">Link with offset 1</a>
45
- <a href="#" class="link-offset-2">Link with offset 2</a>
46
- <a href="#" class="link-offset-3">Link with offset 3</a>`;
47
-
48
- // Combined offset and hover
49
- offsetHoverCode = `<a href="#" class="link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover">
50
- Link with offset that changes on hover
51
- </a>`;
52
-
53
- // Links with icons
54
- iconLinksCode = `<!-- Icon before text -->
55
- <a href="#" class="link-primary">
56
- <i class="hgi hgi-stroke hgi-link-01 me-2"></i>
57
- Link with leading icon
58
- </a>
59
-
60
- <!-- Icon after text -->
61
- <a href="#" class="link-secondary">
62
- External link
63
- <i class="hgi hgi-stroke hgi-link-external-01 ms-2"></i>
64
- </a>
65
-
66
- <!-- Icon with arrow -->
67
- <a href="#" class="link-success">
68
- <i class="hgi hgi-stroke hgi-arrow-right-01 me-2"></i>
69
- Arrow link
70
- </a>`;
71
-
72
- // Custom link styles - subtle
73
- subtleLinkCode = `<a href="#" class="custom-link-subtle">Subtle link style</a>`;
74
-
75
- subtleLinkScss = `.custom-link-subtle {
76
- color: var(--dga-neutral-600);
77
- text-decoration: none;
78
-
79
- &:hover {
80
- color: var(--dga-primary);
81
- text-decoration: underline;
82
- }
83
- }`;
84
-
85
- // Custom link styles - bold
86
- boldLinkCode = `<a href="#" class="custom-link-bold">Bold link style</a>`;
87
-
88
- boldLinkScss = `.custom-link-bold {
89
- color: var(--dga-primary);
90
- font-weight: 600;
91
- text-decoration: none;
92
-
93
- &:hover {
94
- color: var(--dga-primary-dark);
95
- text-decoration: underline;
96
- }
97
- }`;
98
-
99
- // Custom link styles - decorated
100
- decoratedLinkCode = `<a href="#" class="custom-link-decorated">Decorated link with animated underline</a>`;
101
-
102
- decoratedLinkScss = `.custom-link-decorated {
103
- color: var(--dga-secondary);
104
- text-decoration: none;
105
- position: relative;
106
- padding-bottom: 2px;
107
-
108
- &::after {
109
- content: '';
110
- position: absolute;
111
- bottom: 0;
112
- left: 0;
113
- width: 0;
114
- height: 2px;
115
- background-color: var(--dga-secondary);
116
- transition: width 0.3s ease;
117
- }
118
-
119
- &:hover::after {
120
- width: 100%;
121
- }
122
- }`;
123
19
  }
@@ -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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-alert-02 toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-alert-02 toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-help-circle toast-icon"></i>
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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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="hgi hgi-stroke hgi-checkmark-circle-02 toast-icon"></i>
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">