sdga-ui 1.0.7 → 1.0.9

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 (105) hide show
  1. package/css/dga-ui.css +24882 -27623
  2. package/css/dga-ui.css.map +1 -1
  3. package/package.json +20 -4
  4. package/theme/_variables.scss +0 -1
  5. package/theme/components/_buttons.scss +1 -302
  6. package/theme/config/_base.scss +1 -1
  7. package/theme/customizations/_alerts.scss +15 -14
  8. package/theme/customizations/_buttons.scss +305 -244
  9. package/theme/customizations/_footer.scss +122 -45
  10. package/theme/customizations/_global.scss +20 -2
  11. package/theme/customizations/_links.scss +55 -53
  12. package/theme/customizations/_toasts.scss +13 -14
  13. package/theme/dga-ui.scss +1 -2
  14. package/.editorconfig +0 -23
  15. package/.github/workflows/deploy.yml +0 -71
  16. package/.github/workflows/publish.yml +0 -36
  17. package/.prettierignore +0 -73
  18. package/.prettierrc +0 -17
  19. package/demo-angular/.editorconfig +0 -17
  20. package/demo-angular/.vscode/extensions.json +0 -4
  21. package/demo-angular/.vscode/launch.json +0 -20
  22. package/demo-angular/.vscode/tasks.json +0 -42
  23. package/demo-angular/README.md +0 -91
  24. package/demo-angular/angular.json +0 -93
  25. package/demo-angular/package-lock.json +0 -10600
  26. package/demo-angular/package.json +0 -53
  27. package/demo-angular/public/404.html +0 -35
  28. package/demo-angular/public/favicon.ico +0 -0
  29. package/demo-angular/public/i18n/ar.json +0 -289
  30. package/demo-angular/public/i18n/en.json +0 -289
  31. package/demo-angular/src/app/app.config.ts +0 -20
  32. package/demo-angular/src/app/app.html +0 -52
  33. package/demo-angular/src/app/app.routes.ts +0 -53
  34. package/demo-angular/src/app/app.scss +0 -430
  35. package/demo-angular/src/app/app.spec.ts +0 -23
  36. package/demo-angular/src/app/app.ts +0 -94
  37. package/demo-angular/src/app/shared/code-example/code-example.component.html +0 -30
  38. package/demo-angular/src/app/shared/code-example/code-example.component.scss +0 -183
  39. package/demo-angular/src/app/shared/code-example/code-example.component.ts +0 -78
  40. package/demo-angular/src/app/views/alerts/alerts.component.html +0 -155
  41. package/demo-angular/src/app/views/alerts/alerts.component.scss +0 -3
  42. package/demo-angular/src/app/views/alerts/alerts.component.ts +0 -134
  43. package/demo-angular/src/app/views/buttons/buttons.component.html +0 -289
  44. package/demo-angular/src/app/views/buttons/buttons.component.scss +0 -14
  45. package/demo-angular/src/app/views/buttons/buttons.component.ts +0 -155
  46. package/demo-angular/src/app/views/cards/cards.component.html +0 -156
  47. package/demo-angular/src/app/views/cards/cards.component.html.backup +0 -156
  48. package/demo-angular/src/app/views/cards/cards.component.scss +0 -11
  49. package/demo-angular/src/app/views/cards/cards.component.ts +0 -194
  50. package/demo-angular/src/app/views/contexts/contexts.component.html +0 -204
  51. package/demo-angular/src/app/views/contexts/contexts.component.ts +0 -10
  52. package/demo-angular/src/app/views/footer/footer.html +0 -282
  53. package/demo-angular/src/app/views/footer/footer.scss +0 -0
  54. package/demo-angular/src/app/views/footer/footer.spec.ts +0 -23
  55. package/demo-angular/src/app/views/footer/footer.ts +0 -142
  56. package/demo-angular/src/app/views/forms/forms.component.html +0 -347
  57. package/demo-angular/src/app/views/forms/forms.component.scss +0 -3
  58. package/demo-angular/src/app/views/forms/forms.component.ts +0 -222
  59. package/demo-angular/src/app/views/header/header.html +0 -1
  60. package/demo-angular/src/app/views/header/header.scss +0 -0
  61. package/demo-angular/src/app/views/header/header.spec.ts +0 -23
  62. package/demo-angular/src/app/views/header/header.ts +0 -11
  63. package/demo-angular/src/app/views/home/home.component.html +0 -33
  64. package/demo-angular/src/app/views/home/home.component.scss +0 -35
  65. package/demo-angular/src/app/views/home/home.component.ts +0 -12
  66. package/demo-angular/src/app/views/links/links.component.html +0 -21
  67. package/demo-angular/src/app/views/links/links.component.scss +0 -11
  68. package/demo-angular/src/app/views/links/links.component.ts +0 -19
  69. package/demo-angular/src/app/views/tables/tables.component.html +0 -289
  70. package/demo-angular/src/app/views/tables/tables.component.scss +0 -3
  71. package/demo-angular/src/app/views/tables/tables.component.ts +0 -278
  72. package/demo-angular/src/app/views/toasts/toasts.component.html +0 -201
  73. package/demo-angular/src/app/views/toasts/toasts.component.scss +0 -0
  74. package/demo-angular/src/app/views/toasts/toasts.component.ts +0 -182
  75. package/demo-angular/src/index.html +0 -28
  76. package/demo-angular/src/main.ts +0 -6
  77. package/demo-angular/src/styles.scss +0 -4
  78. package/demo-angular/tsconfig.app.json +0 -15
  79. package/demo-angular/tsconfig.json +0 -33
  80. package/demo-angular/tsconfig.spec.json +0 -15
  81. package/sdga-ui/README.md +0 -45
  82. package/sdga-ui/content/docs/components/alerts.mdx +0 -475
  83. package/sdga-ui/content/docs/index.mdx +0 -239
  84. package/sdga-ui/next.config.mjs +0 -10
  85. package/sdga-ui/package-lock.json +0 -5851
  86. package/sdga-ui/package.json +0 -32
  87. package/sdga-ui/postcss.config.mjs +0 -5
  88. package/sdga-ui/source.config.ts +0 -27
  89. package/sdga-ui/src/app/(home)/layout.tsx +0 -6
  90. package/sdga-ui/src/app/(home)/page.tsx +0 -202
  91. package/sdga-ui/src/app/api/search/route.ts +0 -7
  92. package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +0 -54
  93. package/sdga-ui/src/app/docs/layout.tsx +0 -11
  94. package/sdga-ui/src/app/global.css +0 -3
  95. package/sdga-ui/src/app/layout.tsx +0 -25
  96. package/sdga-ui/src/app/llms-full.txt/route.ts +0 -10
  97. package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +0 -34
  98. package/sdga-ui/src/app/sdga-scoped.css +0 -7
  99. package/sdga-ui/src/components/sdga-preview.tsx +0 -105
  100. package/sdga-ui/src/lib/layout.shared.tsx +0 -9
  101. package/sdga-ui/src/lib/source.ts +0 -27
  102. package/sdga-ui/src/mdx-components.tsx +0 -9
  103. package/sdga-ui/tsconfig.json +0 -46
  104. package/theme/config/_contexts.scss +0 -471
  105. package/theme/customizations/_contexts.scss +0 -432
@@ -1,156 +0,0 @@
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
- <div class="demo-card-grid">
9
- <!-- Card with icon -->
10
- <div class="card" tabindex="0">
11
- <div class="card-body">
12
- <h5 class="card-title">
13
- <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
14
- </h5>
15
- <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
16
- <p class="card-text">{{ 'cards.card_text' | translate }}</p>
17
- <div class="card-footer">
18
- <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
19
- <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
20
- </div>
21
- </div>
22
- </div>
23
-
24
- <!-- Card with icon and checkbox -->
25
- <div class="card disabled" tabindex="0">
26
- <div class="card-body">
27
- <h5 class="card-title">
28
- <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
29
- <input class="card-title-checked form-check-input ripple" disabled type="checkbox" value="" id="check1" aria-label="{{ 'cards.select_card' | translate }}">
30
- </h5>
31
- <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
32
- <p class="card-text">{{ 'cards.card_text' | translate }}</p>
33
- <div class="card-footer">
34
- <a href="javascript:void(0);" class="btn btn-outline-secondary disabled">{{ 'cards.action_secondary' | translate }}</a>
35
- <a href="javascript:void(0);" class="btn btn-primary disabled">{{ 'cards.action' | translate }}</a>
36
- </div>
37
- </div>
38
- </div>
39
-
40
- <!-- Card with checkbox only -->
41
- <div class="card" tabindex="0">
42
- <div class="card-body">
43
- <h5 class="card-title">
44
- <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check2" aria-label="{{ 'cards.select_card' | translate }}">
45
- </h5>
46
- <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
47
- <p class="card-text">{{ 'cards.card_text' | translate }}</p>
48
- <div class="card-footer">
49
- <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
50
- <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
51
- </div>
52
- </div>
53
- </div>
54
-
55
-
56
- <!-- Card without shadow only -->
57
- <div class="card shadow-none" tabindex="0">
58
- <div class="card-body">
59
- <h5 class="card-title">
60
- <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check2" aria-label="{{ 'cards.select_card' | translate }}">
61
- </h5>
62
- <h6 class="card-subtitle mb-2">{{ 'cards.card_title' | translate }}</h6>
63
- <p class="card-text">{{ 'cards.card_text' | translate }}</p>
64
- <div class="card-footer">
65
- <a href="javascript:void(0);" class="btn btn-outline-secondary">{{ 'cards.action_secondary' | translate }}</a>
66
- <a href="javascript:void(0);" class="btn btn-primary">{{ 'cards.action' | translate }}</a>
67
- </div>
68
- </div>
69
- </div>
70
-
71
- <!-- Expandable card with checkbox -->
72
- <div class="card" tabindex="0" [class.expanded]="isExpanded(1)">
73
- <div class="card-body">
74
- <h5 class="card-title">
75
- <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
76
- <input class="card-title-checked form-check-input ripple" type="checkbox" value="" id="check3" aria-label="{{ 'cards.select_card' | translate }}">
77
- </h5>
78
- <h6 class="card-subtitle mb-2">{{ 'cards.expandable_title' | translate }}</h6>
79
- <p class="card-text">{{ 'cards.expandable_text' | translate }}</p>
80
-
81
- @if (isExpanded(1)) {
82
- <div class="card-expanded-content">
83
- <p class="mt-3">{{ 'cards.expanded_content' | translate }}</p>
84
- <ul>
85
- <li>{{ 'cards.detail_1' | translate }}</li>
86
- <li>{{ 'cards.detail_2' | translate }}</li>
87
- <li>{{ 'cards.detail_3' | translate }}</li>
88
- </ul>
89
- </div>
90
- }
91
-
92
- <div class="card-footer">
93
- <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>
94
- </div>
95
- </div>
96
- </div>
97
-
98
- <!-- Expandable card -->
99
- <div class="card" tabindex="0" [class.expanded]="isExpanded(2)">
100
- <div class="card-body">
101
- <h5 class="card-title">
102
- <i class="hgi hgi-stroke hgi-checkmark-circle-02 card-title-icon"></i>
103
- </h5>
104
- <h6 class="card-subtitle mb-2">{{ 'cards.expandable_title' | translate }}</h6>
105
- <p class="card-text">{{ 'cards.expandable_text' | translate }}</p>
106
-
107
- @if (isExpanded(2)) {
108
- <div class="card-expanded-content">
109
- <p class="mt-3">{{ 'cards.expanded_content' | translate }}</p>
110
- <ul>
111
- <li>{{ 'cards.detail_1' | translate }}</li>
112
- <li>{{ 'cards.detail_2' | translate }}</li>
113
- <li>{{ 'cards.detail_3' | translate }}</li>
114
- </ul>
115
- <div class="d-flex align-items-center gap-3 mb-3">
116
- <button class="btn btn-sm btn-primary">{{ 'cards.action' | translate }}</button>
117
- <button class="btn btn-sm btn-outline-secondary">{{ 'cards.cancel' | translate }}</button>
118
- </div>
119
- </div>
120
- }
121
-
122
- <div class="card-footer">
123
- <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>
124
- </div>
125
- </div>
126
- </div>
127
- </div>
128
-
129
- <!-- Code Examples -->
130
- <div class="mt-5">
131
- <h3 class="mb-4">Card with Icon</h3>
132
- <app-code-example [htmlCode]="cardWithIconCode" title="Card with Icon and Header"></app-code-example>
133
-
134
- <h3 class="mb-4 mt-5">Card with Checkbox</h3>
135
- <app-code-example [htmlCode]="cardWithCheckboxCode" title="Card with Checkbox"></app-code-example>
136
-
137
- <h3 class="mb-4 mt-5">Disabled Card</h3>
138
- <app-code-example [htmlCode]="disabledCardCode" title="Disabled Card with Icon and Checkbox"></app-code-example>
139
-
140
- <h3 class="mb-4 mt-5">Card without Shadow</h3>
141
- <app-code-example [htmlCode]="cardNoShadowCode" title="Card with Shadow Removed (shadow-none)"></app-code-example>
142
-
143
- <h3 class="mb-4 mt-5">Expandable Card (Interactive)</h3>
144
- <app-code-example
145
- [htmlCode]="expandableCardHtmlCode"
146
- [tsCode]="expandableCardTsCode"
147
- title="Expandable Card with Checkbox - HTML Template"></app-code-example>
148
-
149
- <h3 class="mb-4 mt-5">Expandable Card (Simple)</h3>
150
- <app-code-example
151
- [htmlCode]="expandableCardSimpleHtmlCode"
152
- [tsCode]="expandableCardTsCode"
153
- title="Expandable Card with Actions - HTML Template"></app-code-example>
154
- </div>
155
- </section>
156
- </div>
@@ -1,11 +0,0 @@
1
- .demo-section {
2
- margin-bottom: 4rem;
3
- }
4
-
5
- .demo-card-grid {
6
- display: flex;
7
- flex-wrap: wrap;
8
- gap: 1rem;
9
- align-items: flex-start;
10
- }
11
-
@@ -1,194 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, signal } 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-cards',
7
- imports: [TranslateModule, CodeExampleComponent],
8
- templateUrl: './cards.component.html',
9
- styleUrl: './cards.component.scss',
10
- changeDetection: ChangeDetectionStrategy.OnPush
11
- })
12
- export class CardsComponent {
13
- expandedCards = signal<Set<number>>(new Set());
14
-
15
- toggleCard(cardId: number) {
16
- this.expandedCards.update(cards => {
17
- const newSet = new Set(cards);
18
- if (newSet.has(cardId)) {
19
- newSet.delete(cardId);
20
- } else {
21
- newSet.add(cardId);
22
- }
23
- return newSet;
24
- });
25
- }
26
-
27
- isExpanded(cardId: number): boolean {
28
- return this.expandedCards().has(cardId);
29
- }
30
-
31
- // Code examples for all card variations
32
- cardWithIconCode = `<div class="card" tabindex="0">
33
- <div class="card-body">
34
- <h5 class="card-title">
35
- <i class="bi bi-check-circle card-title-icon"></i>
36
- </h5>
37
- <h6 class="card-subtitle mb-2">Card Title</h6>
38
- <p class="card-text">This is a sample card text that describes the content.</p>
39
- <div class="card-footer">
40
- <a href="javascript:void(0);" class="btn btn-outline-secondary">Secondary Action</a>
41
- <a href="javascript:void(0);" class="btn btn-primary">Primary Action</a>
42
- </div>
43
- </div>
44
- </div>`;
45
-
46
- cardWithCheckboxCode = `<div class="card" tabindex="0">
47
- <div class="card-body">
48
- <h5 class="card-title">
49
- <input class="card-title-checked form-check-input ripple"
50
- type="checkbox"
51
- value=""
52
- id="check2"
53
- aria-label="Select card">
54
- </h5>
55
- <h6 class="card-subtitle mb-2">Card Title</h6>
56
- <p class="card-text">This is a sample card text that describes the content.</p>
57
- <div class="card-footer">
58
- <a href="javascript:void(0);" class="btn btn-outline-secondary">Secondary Action</a>
59
- <a href="javascript:void(0);" class="btn btn-primary">Primary Action</a>
60
- </div>
61
- </div>
62
- </div>`;
63
-
64
- disabledCardCode = `<div class="card disabled" tabindex="0">
65
- <div class="card-body">
66
- <h5 class="card-title">
67
- <i class="bi bi-check-circle card-title-icon"></i>
68
- <input class="card-title-checked form-check-input ripple"
69
- disabled
70
- type="checkbox"
71
- value=""
72
- id="check1"
73
- aria-label="Select card">
74
- </h5>
75
- <h6 class="card-subtitle mb-2">Card Title</h6>
76
- <p class="card-text">This is a sample card text that describes the content.</p>
77
- <div class="card-footer">
78
- <a href="javascript:void(0);" class="btn btn-outline-secondary disabled">Secondary Action</a>
79
- <a href="javascript:void(0);" class="btn btn-primary disabled">Primary Action</a>
80
- </div>
81
- </div>
82
- </div>`;
83
-
84
- cardNoShadowCode = `<div class="card shadow-none" tabindex="0">
85
- <div class="card-body">
86
- <h5 class="card-title">
87
- <input class="card-title-checked form-check-input ripple"
88
- type="checkbox"
89
- value=""
90
- id="check2"
91
- aria-label="Select card">
92
- </h5>
93
- <h6 class="card-subtitle mb-2">Card Title</h6>
94
- <p class="card-text">This is a sample card text that describes the content.</p>
95
- <div class="card-footer">
96
- <a href="javascript:void(0);" class="btn btn-outline-secondary">Secondary Action</a>
97
- <a href="javascript:void(0);" class="btn btn-primary">Primary Action</a>
98
- </div>
99
- </div>
100
- </div>`;
101
-
102
- expandableCardHtmlCode = `<div class="card" tabindex="0" [class.expanded]="isExpanded(1)">
103
- <div class="card-body">
104
- <h5 class="card-title">
105
- <i class="bi bi-check-circle card-title-icon"></i>
106
- <input class="card-title-checked form-check-input ripple"
107
- type="checkbox"
108
- value=""
109
- id="check3"
110
- aria-label="Select card">
111
- </h5>
112
- <h6 class="card-subtitle mb-2">Expandable Card Title</h6>
113
- <p class="card-text">Click the arrow to see more details.</p>
114
-
115
- @if (isExpanded(1)) {
116
- <div class="card-expanded-content">
117
- <p class="mt-3">Additional content shown when expanded.</p>
118
- <ul>
119
- <li>Detail point 1</li>
120
- <li>Detail point 2</li>
121
- <li>Detail point 3</li>
122
- </ul>
123
- </div>
124
- }
125
-
126
- <div class="card-footer">
127
- <i class="bi card-expanded-icon"
128
- [class.bi-chevron-up]="isExpanded(1)"
129
- [class.bi-chevron-down]="!isExpanded(1)"
130
- (click)="toggleCard(1)"></i>
131
- </div>
132
- </div>
133
- </div>`;
134
-
135
- expandableCardTsCode = `import { Component, signal } from '@angular/core';
136
-
137
- @Component({
138
- selector: 'app-cards',
139
- templateUrl: './cards.component.html',
140
- styleUrl: './cards.component.scss'
141
- })
142
- export class CardsComponent {
143
- // Use Angular signals to manage expanded state
144
- expandedCards = signal<Set<number>>(new Set());
145
-
146
- toggleCard(cardId: number) {
147
- this.expandedCards.update(cards => {
148
- const newSet = new Set(cards);
149
- if (newSet.has(cardId)) {
150
- newSet.delete(cardId);
151
- } else {
152
- newSet.add(cardId);
153
- }
154
- return newSet;
155
- });
156
- }
157
-
158
- isExpanded(cardId: number): boolean {
159
- return this.expandedCards().has(cardId);
160
- }
161
- }`;
162
-
163
- expandableCardSimpleHtmlCode = `<div class="card" tabindex="0" [class.expanded]="isExpanded(2)">
164
- <div class="card-body">
165
- <h5 class="card-title">
166
- <i class="bi bi-check-circle card-title-icon"></i>
167
- </h5>
168
- <h6 class="card-subtitle mb-2">Expandable Card Title</h6>
169
- <p class="card-text">Click the arrow to see more details.</p>
170
-
171
- @if (isExpanded(2)) {
172
- <div class="card-expanded-content">
173
- <p class="mt-3">Additional content shown when expanded.</p>
174
- <ul>
175
- <li>Detail point 1</li>
176
- <li>Detail point 2</li>
177
- <li>Detail point 3</li>
178
- </ul>
179
- <div class="d-flex align-items-center gap-3 mb-3">
180
- <button class="btn btn-sm btn-primary">Primary Action</button>
181
- <button class="btn btn-sm btn-outline-secondary">Cancel</button>
182
- </div>
183
- </div>
184
- }
185
-
186
- <div class="card-footer">
187
- <i class="bi card-expanded-icon"
188
- [class.bi-chevron-up]="isExpanded(2)"
189
- [class.bi-chevron-down]="!isExpanded(2)"
190
- (click)="toggleCard(2)"></i>
191
- </div>
192
- </div>
193
- </div>`;
194
- }
@@ -1,204 +0,0 @@
1
- <!-- Context-Aware Theming Demo -->
2
- <div class="container py-5">
3
- <h1 class="mb-5">Context-Aware Theming System</h1>
4
- <p class="lead mb-5">
5
- Components automatically adapt their colors based on the background context.
6
- Simply wrap content in context classes like <code>.on-primary</code>, <code>.on-dark</code>, etc.
7
- </p>
8
-
9
- <!-- Default Context (Light Background) -->
10
- <section class="mb-5">
11
- <h2>Default Context</h2>
12
- <div class="p-4 border rounded">
13
- <p class="mb-3">This is the default light background context.</p>
14
- <div class="d-flex gap-2 mb-3">
15
- <button class="btn btn-primary">Primary Button</button>
16
- <button class="btn btn-secondary">Secondary Button</button>
17
- <button class="btn btn-outline-primary">Outline Button</button>
18
- </div>
19
- <p class="mb-2">
20
- <a href="#" class="me-3">Regular Link</a>
21
- <a href="#" class="link-primary">Primary Link</a>
22
- </p>
23
- <input type="text" class="form-control" placeholder="Input field">
24
- </div>
25
- </section>
26
-
27
- <!-- On Primary Context -->
28
- <section class="mb-5">
29
- <h2>On Primary Context</h2>
30
- <div class="on-primary p-4 rounded context-section">
31
- <h3>Content on Primary Background</h3>
32
- <p class="mb-3">All components automatically adapt to white/light colors for better contrast.</p>
33
- <div class="d-flex gap-2 mb-3">
34
- <button class="btn btn-primary">Primary Button</button>
35
- <button class="btn btn-secondary">Secondary Button</button>
36
- <button class="btn btn-outline-primary">Outline Button</button>
37
- </div>
38
- <p class="mb-3">
39
- <a href="#" class="me-3">Regular Link</a>
40
- <span class="text-muted">Muted text adapts too</span>
41
- </p>
42
- <input type="text" class="form-control" placeholder="Input field adapts">
43
-
44
- <div class="card mt-3 on-light">
45
- <div class="card-body">
46
- <h5 class="card-title">Card in Primary Context</h5>
47
- <p class="card-text">Cards have subtle transparency to blend with the background.</p>
48
- </div>
49
- </div>
50
- </div>
51
- </section>
52
-
53
- <!-- On Dark Context -->
54
- <section class="mb-5">
55
- <h2>On Dark Context</h2>
56
- <div class="on-dark p-4 rounded context-section">
57
- <h3>Content on Dark Background</h3>
58
- <p class="mb-3">Perfect for dark mode or dark sections. All components adapt automatically.</p>
59
- <div class="d-flex gap-2 mb-3">
60
- <button class="btn btn-primary">Primary Button</button>
61
- <button class="btn btn-secondary">Secondary Button</button>
62
- <button class="btn btn-outline-primary">Outline Button</button>
63
- </div>
64
- <p class="mb-3">
65
- <a href="#" class="me-3">Regular Link</a>
66
- <span class="text-muted">Muted text is readable</span>
67
- </p>
68
- <input type="text" class="form-control mb-3" placeholder="Form fields work great">
69
- <select class="form-select">
70
- <option>Select options adapt too</option>
71
- <option>Option 2</option>
72
- </select>
73
- </div>
74
- </section>
75
-
76
- <!-- On Danger Context -->
77
- <section class="mb-5">
78
- <h2>On Danger Context</h2>
79
- <div class="on-danger p-4 rounded context-section">
80
- <h3>Critical Alerts or Warnings</h3>
81
- <p class="mb-3">Use for error states, critical warnings, or important notices.</p>
82
- <div class="d-flex gap-2 mb-3">
83
- <button class="btn btn-primary">Primary Action</button>
84
- <button class="btn btn-secondary">Secondary Action</button>
85
- <button class="btn btn-outline-primary">Outline Action</button>
86
- </div>
87
- <div class="alert alert-warning mb-0">
88
- <strong>Warning!</strong> Even alerts adapt to the context.
89
- </div>
90
- </div>
91
- </section>
92
-
93
- <!-- On Success Context -->
94
- <section class="mb-5">
95
- <h2>On Success Context</h2>
96
- <div class="on-success p-4 rounded context-section">
97
- <h3>Success Messages or Confirmation</h3>
98
- <p class="mb-3">Perfect for success states, completed actions, or positive feedback.</p>
99
- <div class="d-flex gap-2 mb-3">
100
- <button class="btn btn-primary">Continue</button>
101
- <button class="btn btn-outline-primary">View Details</button>
102
- </div>
103
- <p class="mb-0">
104
- <a href="#">Learn more about this success</a>
105
- </p>
106
- </div>
107
- </section>
108
-
109
- <!-- On Warning Context -->
110
- <section class="mb-5">
111
- <h2>On Warning Context</h2>
112
- <div class="on-warning p-4 rounded context-section">
113
- <h3>Warning or Attention Needed</h3>
114
- <p class="mb-3">Note: Uses dark text for better contrast on yellow/warning background.</p>
115
- <div class="d-flex gap-2 mb-3">
116
- <button class="btn btn-primary">Take Action</button>
117
- <button class="btn btn-secondary">Dismiss</button>
118
- </div>
119
- <input type="text" class="form-control" placeholder="Dark text on warning background">
120
- </div>
121
- </section>
122
-
123
- <!-- On Light Context -->
124
- <section class="mb-5">
125
- <h2>On Light Context</h2>
126
- <div class="on-light p-4 rounded context-section">
127
- <h3>Subtle Light Background</h3>
128
- <p class="mb-3">Slightly different from default - useful for sections, sidebars, or panels.</p>
129
- <div class="d-flex gap-2 mb-3">
130
- <button class="btn btn-primary">Primary Button</button>
131
- <button class="btn btn-secondary">Secondary Button</button>
132
- <button class="btn btn-outline-primary">Outline Button</button>
133
- </div>
134
- <p class="mb-3">
135
- <a href="#">Links maintain primary color</a>
136
- <span class="text-muted ms-3">Muted text for less emphasis</span>
137
- </p>
138
- <div class="row g-2">
139
- <div class="col">
140
- <input type="text" class="form-control" placeholder="First name">
141
- </div>
142
- <div class="col">
143
- <input type="text" class="form-control" placeholder="Last name">
144
- </div>
145
- </div>
146
- </div>
147
- </section>
148
-
149
- <!-- Nested Contexts Example -->
150
- <section class="mb-5">
151
- <h2>Nested Contexts</h2>
152
- <div class="on-primary p-4 rounded">
153
- <h3>Primary Background</h3>
154
- <p class="mb-3">You can nest different contexts for complex layouts.</p>
155
- <button class="btn btn-primary me-2">Button on Primary</button>
156
-
157
- <div class="on-light p-3 rounded mt-3">
158
- <h4>Light Context Inside Primary</h4>
159
- <p class="mb-2">This light section is nested inside the primary background.</p>
160
- <button class="btn btn-primary">Button on Light</button>
161
- </div>
162
- </div>
163
- </section>
164
-
165
- <!-- Usage Guide -->
166
- <section class="mt-5 p-4 bg-light rounded">
167
- <h2>How to Use</h2>
168
- <div class="row">
169
- <div class="col-md-6">
170
- <h4>Available Context Classes:</h4>
171
- <ul>
172
- <li><code>.on-primary</code> - White text on primary color</li>
173
- <li><code>.on-dark</code> - White text on dark background</li>
174
- <li><code>.on-danger</code> - White text on danger/error color</li>
175
- <li><code>.on-success</code> - White text on success color</li>
176
- <li><code>.on-warning</code> - Dark text on warning color</li>
177
- <li><code>.on-light</code> - Dark text on light background</li>
178
- </ul>
179
- </div>
180
- <div class="col-md-6">
181
- <h4>What Adapts Automatically:</h4>
182
- <ul>
183
- <li>✅ Buttons (all variants)</li>
184
- <li>✅ Links</li>
185
- <li>✅ Form inputs and selects</li>
186
- <li>✅ Text colors</li>
187
- <li>✅ Border colors</li>
188
- <li>✅ Cards and alerts</li>
189
- <li>✅ Tables and badges</li>
190
- </ul>
191
- </div>
192
- </div>
193
-
194
- <div class="mt-4">
195
- <h4>Example Code:</h4>
196
- <pre class="bg-dark text-white p-3 rounded"><code>&lt;div class="on-primary p-4"&gt;
197
- &lt;h3&gt;Content adapts automatically&lt;/h3&gt;
198
- &lt;button class="btn btn-primary"&gt;Primary Button&lt;/button&gt;
199
- &lt;a href="#"&gt;Link&lt;/a&gt;
200
- &lt;input type="text" class="form-control" placeholder="Input"&gt;
201
- &lt;/div&gt;</code></pre>
202
- </div>
203
- </section>
204
- </div>
@@ -1,10 +0,0 @@
1
- import { Component, ChangeDetectionStrategy } from '@angular/core';
2
- import { TranslateModule } from '@ngx-translate/core';
3
-
4
- @Component({
5
- selector: 'app-buttons',
6
- imports: [TranslateModule],
7
- templateUrl: './contexts.component.html',
8
- changeDetection: ChangeDetectionStrategy.OnPush
9
- })
10
- export class ContextsComponent {}