@noatgnu/cupcake-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@noatgnu/cupcake-core",
3
+ "version": "1.0.0",
4
+ "description": "A reusable Angular library that provides user management, authentication, and site configuration functionality for cupcake applications.",
5
+ "keywords": [
6
+ "angular",
7
+ "cupcake",
8
+ "user-management",
9
+ "authentication",
10
+ "library",
11
+ "components"
12
+ ],
13
+ "author": "Toan Phung",
14
+ "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/noatgnu/cupcake-vanilla-ng"
18
+ },
19
+ "homepage": "https://github.com/noatgnu/cupcake-vanilla-ng#readme",
20
+ "bugs": {
21
+ "url": "https://github.com/noatgnu/cupcake-vanilla-ng/issues"
22
+ },
23
+ "peerDependencies": {
24
+ "@angular/common": "^20.1.0",
25
+ "@angular/core": "^20.1.0",
26
+ "@angular/forms": "^20.1.0",
27
+ "@angular/router": "^20.1.0",
28
+ "@ng-bootstrap/ng-bootstrap": "^19.0.0",
29
+ "bootstrap": "^5.3.0",
30
+ "rxjs": "~7.8.0"
31
+ },
32
+ "dependencies": {
33
+ "tslib": "^2.3.0"
34
+ },
35
+ "sideEffects": false,
36
+ "module": "fesm2022/noatgnu-cupcake-core.mjs",
37
+ "typings": "index.d.ts",
38
+ "exports": {
39
+ "./package.json": {
40
+ "default": "./package.json"
41
+ },
42
+ ".": {
43
+ "types": "./index.d.ts",
44
+ "default": "./fesm2022/noatgnu-cupcake-core.mjs"
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,345 @@
1
+ // =============================================================================
2
+ // CUPCAKE CORE - Bootstrap Integration
3
+ // =============================================================================
4
+ // This file integrates cupcake design tokens with Bootstrap components
5
+ // Import this file after importing Bootstrap to apply cupcake theming
6
+
7
+ @import './variables';
8
+
9
+ // =============================================================================
10
+ // BOOTSTRAP COMPONENT OVERRIDES
11
+ // =============================================================================
12
+
13
+ // Override Bootstrap primary colors with CSS custom properties
14
+ .btn-primary {
15
+ --bs-btn-bg: var(--cupcake-primary);
16
+ --bs-btn-border-color: var(--cupcake-primary);
17
+ --bs-btn-hover-bg: var(--cupcake-primary-dark);
18
+ --bs-btn-hover-border-color: var(--cupcake-primary-dark);
19
+ --bs-btn-focus-shadow-rgb: var(--cupcake-primary-rgb);
20
+ --bs-btn-active-bg: var(--cupcake-primary-dark);
21
+ --bs-btn-active-border-color: var(--cupcake-primary-dark);
22
+ --bs-btn-disabled-bg: var(--cupcake-primary);
23
+ --bs-btn-disabled-border-color: var(--cupcake-primary);
24
+ }
25
+
26
+ .btn-outline-primary {
27
+ --bs-btn-color: var(--cupcake-primary);
28
+ --bs-btn-border-color: var(--cupcake-primary);
29
+ --bs-btn-hover-bg: var(--cupcake-primary);
30
+ --bs-btn-hover-border-color: var(--cupcake-primary);
31
+ --bs-btn-focus-shadow-rgb: var(--cupcake-primary-rgb);
32
+ --bs-btn-active-bg: var(--cupcake-primary);
33
+ --bs-btn-active-border-color: var(--cupcake-primary);
34
+ --bs-btn-active-color: #fff;
35
+ --bs-btn-disabled-color: var(--cupcake-primary);
36
+ --bs-btn-disabled-border-color: var(--cupcake-primary);
37
+ }
38
+
39
+ // Secondary button colors
40
+ .btn-secondary {
41
+ --bs-btn-bg: var(--cupcake-secondary);
42
+ --bs-btn-border-color: var(--cupcake-secondary);
43
+ --bs-btn-hover-bg: color-mix(in srgb, var(--cupcake-secondary) 85%, black);
44
+ --bs-btn-hover-border-color: color-mix(in srgb, var(--cupcake-secondary) 85%, black);
45
+ --bs-btn-focus-shadow-rgb: var(--cupcake-secondary-rgb);
46
+ --bs-btn-active-bg: color-mix(in srgb, var(--cupcake-secondary) 85%, black);
47
+ --bs-btn-active-border-color: color-mix(in srgb, var(--cupcake-secondary) 85%, black);
48
+ }
49
+
50
+ .btn-outline-secondary {
51
+ --bs-btn-color: var(--cupcake-secondary);
52
+ --bs-btn-border-color: var(--cupcake-secondary);
53
+ --bs-btn-hover-bg: var(--cupcake-secondary);
54
+ --bs-btn-hover-border-color: var(--cupcake-secondary);
55
+ --bs-btn-focus-shadow-rgb: var(--cupcake-secondary-rgb);
56
+ --bs-btn-active-bg: var(--cupcake-secondary);
57
+ --bs-btn-active-border-color: var(--cupcake-secondary);
58
+ }
59
+
60
+ // Primary color utilities
61
+ .bg-primary {
62
+ background-color: var(--cupcake-primary) !important;
63
+ }
64
+
65
+ .text-primary {
66
+ color: var(--cupcake-primary) !important;
67
+ }
68
+
69
+ .border-primary {
70
+ border-color: var(--cupcake-primary) !important;
71
+ }
72
+
73
+ .link-primary {
74
+ color: var(--cupcake-primary) !important;
75
+
76
+ &:hover,
77
+ &:focus {
78
+ color: var(--cupcake-primary-dark) !important;
79
+ }
80
+ }
81
+
82
+ // Alert components
83
+ .alert-primary {
84
+ --bs-alert-color: var(--cupcake-primary-dark);
85
+ --bs-alert-bg: rgba(var(--cupcake-primary-rgb), 0.1);
86
+ --bs-alert-border-color: rgba(var(--cupcake-primary-rgb), 0.2);
87
+ }
88
+
89
+ // Badge components
90
+ .badge.bg-primary {
91
+ background-color: var(--cupcake-primary) !important;
92
+ }
93
+
94
+ // Progress bars
95
+ .progress-bar {
96
+ background-color: var(--cupcake-primary);
97
+ }
98
+
99
+ // Spinner components
100
+ .spinner-border.text-primary {
101
+ color: var(--cupcake-primary) !important;
102
+ }
103
+
104
+ .spinner-grow.text-primary {
105
+ color: var(--cupcake-primary) !important;
106
+ }
107
+
108
+ // Form controls
109
+ .form-control:focus {
110
+ border-color: var(--cupcake-primary);
111
+ box-shadow: 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
112
+ }
113
+
114
+ .form-select:focus {
115
+ border-color: var(--cupcake-primary);
116
+ box-shadow: 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
117
+ }
118
+
119
+ .form-check-input:checked {
120
+ background-color: var(--cupcake-primary);
121
+ border-color: var(--cupcake-primary);
122
+ }
123
+
124
+ .form-check-input:focus {
125
+ box-shadow: 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
126
+ }
127
+
128
+ .form-range::-webkit-slider-thumb {
129
+ background-color: var(--cupcake-primary);
130
+
131
+ &:active {
132
+ background-color: var(--cupcake-primary-light);
133
+ }
134
+ }
135
+
136
+ .form-range::-moz-range-thumb {
137
+ background-color: var(--cupcake-primary);
138
+
139
+ &:active {
140
+ background-color: var(--cupcake-primary-light);
141
+ }
142
+ }
143
+
144
+ .form-range:focus::-webkit-slider-thumb {
145
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
146
+ }
147
+
148
+ .form-range:focus::-moz-range-thumb {
149
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
150
+ }
151
+
152
+ // Navigation components
153
+ .nav-pills .nav-link.active,
154
+ .nav-pills .show > .nav-link {
155
+ background-color: var(--cupcake-primary);
156
+ }
157
+
158
+ .nav-link {
159
+ color: var(--cupcake-text);
160
+
161
+ &:hover,
162
+ &:focus {
163
+ color: var(--cupcake-primary);
164
+ }
165
+
166
+ &.active {
167
+ color: var(--cupcake-primary);
168
+ }
169
+ }
170
+
171
+ .navbar-nav .nav-link.active {
172
+ color: var(--cupcake-primary) !important;
173
+ }
174
+
175
+ // Pagination
176
+ .page-link {
177
+ color: var(--cupcake-primary);
178
+
179
+ &:hover {
180
+ color: var(--cupcake-primary-dark);
181
+ background-color: rgba(var(--cupcake-primary-rgb), 0.1);
182
+ border-color: var(--cupcake-primary);
183
+ }
184
+
185
+ &:focus {
186
+ color: var(--cupcake-primary-dark);
187
+ background-color: rgba(var(--cupcake-primary-rgb), 0.1);
188
+ border-color: var(--cupcake-primary);
189
+ box-shadow: 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
190
+ }
191
+ }
192
+
193
+ .page-item.active .page-link {
194
+ background-color: var(--cupcake-primary);
195
+ border-color: var(--cupcake-primary);
196
+ }
197
+
198
+ // List group
199
+ .list-group-item.active {
200
+ background-color: var(--cupcake-primary);
201
+ border-color: var(--cupcake-primary);
202
+ }
203
+
204
+ // Card components (enhance Bootstrap cards with cupcake styling)
205
+ .card {
206
+ background-color: var(--cupcake-card-bg);
207
+ border: 1px solid var(--cupcake-card-border);
208
+ box-shadow: 0 0.125rem 0.25rem var(--cupcake-shadow);
209
+ transition: var(--cupcake-transition);
210
+ }
211
+
212
+ .card-header {
213
+ background-color: var(--cupcake-card-header-bg);
214
+ border-bottom: 1px solid var(--cupcake-card-border);
215
+ }
216
+
217
+ // Table components (enhance Bootstrap tables)
218
+ .table {
219
+ --bs-table-striped-bg: var(--cupcake-table-striped);
220
+ --bs-table-hover-bg: var(--cupcake-table-hover);
221
+ --bs-table-border-color: var(--cupcake-table-border);
222
+ background-color: var(--cupcake-card-bg);
223
+ }
224
+
225
+ .table th {
226
+ font-weight: map-get($cupcake-font-weights, semibold);
227
+ background-color: var(--cupcake-card-header-bg);
228
+ border-bottom: 2px solid var(--cupcake-table-border);
229
+ }
230
+
231
+ // Modal components
232
+ .modal-content {
233
+ background-color: var(--cupcake-card-bg);
234
+ border: 1px solid var(--cupcake-card-border);
235
+ box-shadow: 0 0.5rem 1rem var(--cupcake-shadow-lg);
236
+ }
237
+
238
+ .modal-header {
239
+ border-bottom: 1px solid var(--cupcake-card-border);
240
+ }
241
+
242
+ .modal-footer {
243
+ border-top: 1px solid var(--cupcake-card-border);
244
+ }
245
+
246
+ // Dropdown components
247
+ .dropdown-menu {
248
+ background-color: var(--cupcake-card-bg);
249
+ border: 1px solid var(--cupcake-card-border);
250
+ box-shadow: 0 0.5rem 1rem var(--cupcake-shadow-lg);
251
+ }
252
+
253
+ .dropdown-item {
254
+ color: var(--cupcake-text);
255
+
256
+ &:hover,
257
+ &:focus {
258
+ background-color: var(--cupcake-bg-secondary);
259
+ color: var(--cupcake-text);
260
+ }
261
+
262
+ &.active,
263
+ &:active {
264
+ background-color: var(--cupcake-primary);
265
+ color: #fff;
266
+ }
267
+ }
268
+
269
+ // Tooltip and Popover components
270
+ .tooltip-inner {
271
+ background-color: var(--cupcake-text);
272
+ color: var(--cupcake-bg);
273
+ }
274
+
275
+ .popover {
276
+ background-color: var(--cupcake-card-bg);
277
+ border: 1px solid var(--cupcake-card-border);
278
+ box-shadow: 0 0.5rem 1rem var(--cupcake-shadow-lg);
279
+ }
280
+
281
+ .popover-header {
282
+ background-color: var(--cupcake-card-header-bg);
283
+ border-bottom: 1px solid var(--cupcake-card-border);
284
+ color: var(--cupcake-text);
285
+ }
286
+
287
+ .popover-body {
288
+ color: var(--cupcake-text);
289
+ }
290
+
291
+ // Accordion components
292
+ .accordion-item {
293
+ background-color: var(--cupcake-card-bg);
294
+ border: 1px solid var(--cupcake-card-border);
295
+ }
296
+
297
+ .accordion-button {
298
+ background-color: var(--cupcake-card-header-bg);
299
+ color: var(--cupcake-text);
300
+
301
+ &:not(.collapsed) {
302
+ background-color: rgba(var(--cupcake-primary-rgb), 0.1);
303
+ color: var(--cupcake-primary-dark);
304
+ }
305
+
306
+ &:focus {
307
+ border-color: var(--cupcake-primary);
308
+ box-shadow: 0 0 0 0.25rem rgba(var(--cupcake-primary-rgb), 0.25);
309
+ }
310
+ }
311
+
312
+ .accordion-body {
313
+ background-color: var(--cupcake-card-bg);
314
+ }
315
+
316
+ // Toast components
317
+ .toast {
318
+ background-color: var(--cupcake-card-bg);
319
+ border: 1px solid var(--cupcake-card-border);
320
+ box-shadow: 0 0.5rem 1rem var(--cupcake-shadow-lg);
321
+ }
322
+
323
+ .toast-header {
324
+ background-color: var(--cupcake-card-header-bg);
325
+ border-bottom: 1px solid var(--cupcake-card-border);
326
+ color: var(--cupcake-text);
327
+ }
328
+
329
+ .toast-body {
330
+ color: var(--cupcake-text);
331
+ }
332
+
333
+ // Offcanvas components
334
+ .offcanvas {
335
+ background-color: var(--cupcake-card-bg);
336
+ border: 1px solid var(--cupcake-card-border);
337
+ }
338
+
339
+ .offcanvas-header {
340
+ border-bottom: 1px solid var(--cupcake-card-border);
341
+ }
342
+
343
+ .offcanvas-body {
344
+ color: var(--cupcake-text);
345
+ }