@kksdev/ds-angular 1.1.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,54 @@
1
+ {
2
+ "name": "@kksdev/ds-angular",
3
+ "version": "1.1.0",
4
+ "description": "Angular 20 standalone component library - Design System with 28 components, 7 primitives, 3 themes, i18n support",
5
+ "keywords": [
6
+ "angular",
7
+ "angular20",
8
+ "design-system",
9
+ "components",
10
+ "ui",
11
+ "standalone",
12
+ "signals",
13
+ "accessibility",
14
+ "wcag",
15
+ "storybook"
16
+ ],
17
+ "author": "KKSDEV Team",
18
+ "license": "MIT",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/sopequenoteck/design-system.git"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/sopequenoteck/design-system/issues"
25
+ },
26
+ "homepage": "https://github.com/sopequenoteck/design-system#readme",
27
+ "peerDependencies": {
28
+ "@angular/common": "^20.0.0",
29
+ "@angular/core": "^20.0.0",
30
+ "@angular/cdk": "^20.0.0",
31
+ "@angular/forms": "^20.0.0",
32
+ "@fortawesome/angular-fontawesome": "^0.15.0",
33
+ "@fortawesome/fontawesome-svg-core": "^6.0.0",
34
+ "@fortawesome/free-solid-svg-icons": "^6.0.0"
35
+ },
36
+ "dependencies": {
37
+ "tslib": "^2.3.0"
38
+ },
39
+ "sideEffects": [
40
+ "*.scss",
41
+ "*.css"
42
+ ],
43
+ "module": "fesm2022/kksdev-ds-angular.mjs",
44
+ "typings": "index.d.ts",
45
+ "exports": {
46
+ "./package.json": {
47
+ "default": "./package.json"
48
+ },
49
+ ".": {
50
+ "types": "./index.d.ts",
51
+ "default": "./fesm2022/kksdev-ds-angular.mjs"
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,22 @@
1
+ // ============================================================================
2
+ // DS-ANGULAR — Styles Exports
3
+ // ============================================================================
4
+ //
5
+ // Point d'entrée principal pour importer tous les tokens et styles du DS.
6
+ //
7
+ // USAGE :
8
+ // @use 'ds-angular/styles' as ds;
9
+ //
10
+ // Ou importer uniquement les tokens :
11
+ // @use 'ds-angular/styles/tokens';
12
+ //
13
+ // ============================================================================
14
+
15
+ // Export des tokens (variables SCSS + CSS custom properties)
16
+ @forward './tokens/primitives';
17
+ @forward './tokens/semantic';
18
+ @forward './tokens/tokens';
19
+
20
+ // Export des thèmes
21
+ @forward './themes/_light';
22
+ @forward './themes/_dark';
@@ -0,0 +1,45 @@
1
+ // ============================================================================
2
+ // DS-ANGULAR — Storybook Global Styles
3
+ // ============================================================================
4
+ //
5
+ // Ce fichier importe tous les styles nécessaires pour Storybook.
6
+ // Il est référencé dans angular.json pour les targets storybook.
7
+ //
8
+ // ============================================================================
9
+
10
+ // Import des tokens (variables CSS sur :root)
11
+ @use './tokens/tokens';
12
+
13
+ // Import des thèmes (variables sur :root.theme-light et :root.theme-dark)
14
+ @use './themes/light';
15
+ @use './themes/dark';
16
+ @use './themes/custom';
17
+
18
+ :root,
19
+ body {
20
+ font-size: var(--font-size-m, 1rem);
21
+ }
22
+
23
+ :root[data-typography='small'],
24
+ body[data-typography='small'] {
25
+ font-size: var(--font-size-s, 0.875rem);
26
+ }
27
+
28
+ :root[data-typography='large'],
29
+ body[data-typography='large'] {
30
+ font-size: var(--font-size-l, 1.5rem);
31
+ }
32
+
33
+ :root[data-density='compact'],
34
+ body[data-density='compact'] {
35
+ --btn-height-md: var(--btn-height-sm);
36
+ --input-height-md: var(--input-height-sm);
37
+ --space-4: var(--space-3);
38
+ }
39
+
40
+ :root[data-density='comfortable'],
41
+ body[data-density='comfortable'] {
42
+ --btn-height-md: var(--btn-height-lg);
43
+ --input-height-md: var(--input-height-lg);
44
+ --space-4: var(--space-6);
45
+ }
@@ -0,0 +1,393 @@
1
+ :root.theme-custom {
2
+ /* ==========================================================================
3
+ * BACKGROUNDS
4
+ * ======================================================================== */
5
+ --background-main: var(--custom-bg, #ffffff);
6
+ --background-secondary: var(--custom-bg-secondary, #f5f5f5);
7
+ --background-header: var(--custom-bg-header, #e0e0e0);
8
+ --background-panel: var(--surface-default, var(--custom-bg-secondary, #f5f5f5));
9
+ --background-panel-hover: var(--surface-hover);
10
+
11
+ /* ==========================================================================
12
+ * TEXT
13
+ * ======================================================================== */
14
+ --text-default: var(--custom-text-default, #1a1c22);
15
+ --text-muted: var(--custom-text-muted, #2c2f36);
16
+ --text-disabled: var(--custom-text-disabled, #8e95a2);
17
+ --text-disabled-alt: var(--custom-text-disabled-alt, #b0b4bd);
18
+ --text-subtle: var(--custom-text-subtle, #4a4e5a);
19
+
20
+ /* ==========================================================================
21
+ * BORDERS
22
+ * ======================================================================== */
23
+ --border-color: var(--custom-border, #d0d0d0);
24
+ --border-subtle: var(--custom-border-subtle, #e0e0e0);
25
+ --border-strong: var(--custom-border-strong, #b6bac3);
26
+ --border-default: var(--border-color);
27
+ --border-success: var(--success);
28
+ --border-warning: var(--warning);
29
+ --border-error: var(--error);
30
+ --border-info: var(--info);
31
+
32
+ /* ==========================================================================
33
+ * ROLES (override custom)
34
+ * ======================================================================== */
35
+ --role-primary: var(--custom-accent-primary, #7d4bc0);
36
+ --role-secondary: var(--custom-accent-secondary, #fbc224);
37
+
38
+ /* ==========================================================================
39
+ * ACCENT & STATE
40
+ * ======================================================================== */
41
+ --accent: var(--role-primary);
42
+ --accent-alt: var(--role-secondary);
43
+ --accent-warn: var(--role-secondary);
44
+
45
+ /* ==========================================================================
46
+ * SURFACES
47
+ * ======================================================================== */
48
+ --surface-default: var(--background-secondary);
49
+ --surface-raised: var(--background-header);
50
+ --surface-hover: color-mix(in oklab, var(--accent) 10%, var(--background-secondary));
51
+ --surface-overlay: color-mix(in oklab, var(--background-main) 80%, transparent);
52
+
53
+ /* ==========================================================================
54
+ * FEEDBACK (bg + text)
55
+ * ======================================================================== */
56
+ --bg-success: color-mix(in oklab, var(--success) 12%, var(--background-main));
57
+ --bg-warning: color-mix(in oklab, var(--warning) 16%, var(--background-main));
58
+ --bg-error: color-mix(in oklab, var(--error) 16%, var(--background-main));
59
+ --bg-info: color-mix(in oklab, var(--info) 16%, var(--background-main));
60
+
61
+ --text-success: var(--success);
62
+ --text-warning: var(--warning);
63
+ --text-error: var(--error);
64
+ --text-info: var(--info);
65
+
66
+ /* ==========================================================================
67
+ * DISABLED
68
+ * ======================================================================== */
69
+ --bg-disabled: var(--background-secondary);
70
+ --border-disabled: var(--border-subtle);
71
+
72
+ /* ==========================================================================
73
+ * EFFECTS (scrollbar, hover, focus)
74
+ * ======================================================================== */
75
+ --scrollbar-thumb: var(--border-color);
76
+ --scrollbar-thumb-hover: var(--accent);
77
+ --hover-bg: color-mix(in oklab, var(--accent) 12%, transparent);
78
+ --focus-ring: 0 0 0 2px var(--focus-color);
79
+
80
+ /* ==========================================================================
81
+ * SÉMANTIQUES DS BUTTON
82
+ * ======================================================================== */
83
+ --btn-radius-sm: var(--radius-1);
84
+ --btn-radius: var(--radius-2);
85
+ --btn-radius-lg: var(--radius-3);
86
+
87
+ /* Primary */
88
+ --btn-primary-bg: var(--role-primary);
89
+ --btn-primary-text: var(--text-default);
90
+ --btn-primary-border: transparent;
91
+ --btn-primary-hover-bg: color-mix(in oklab, var(--role-primary) 90%, var(--background-main));
92
+ --btn-primary-hover-text: var(--text-default);
93
+ --btn-primary-hover-border: transparent;
94
+ --btn-primary-disabled-bg: var(--bg-disabled);
95
+ --btn-primary-disabled-text: var(--text-disabled);
96
+ --btn-primary-disabled-border: var(--border-disabled);
97
+
98
+ /* Secondary */
99
+ --btn-secondary-bg: var(--role-secondary);
100
+ --btn-secondary-text: var(--text-default);
101
+ --btn-secondary-border: var(--border-color);
102
+ --btn-secondary-hover-bg: color-mix(in oklab, var(--role-secondary) 85%, var(--background-main));
103
+ --btn-secondary-hover-text: var(--text-default);
104
+ --btn-secondary-hover-border: var(--border-color);
105
+ --btn-secondary-disabled-bg: var(--bg-disabled);
106
+ --btn-secondary-disabled-text: var(--text-disabled);
107
+ --btn-secondary-disabled-border: var(--border-disabled);
108
+
109
+ /* Ghost */
110
+ --btn-ghost-bg: transparent;
111
+ --btn-ghost-text: var(--text-default);
112
+ --btn-ghost-border: transparent;
113
+ --btn-ghost-hover-bg: var(--hover-bg);
114
+ --btn-ghost-hover-text: var(--text-default);
115
+ --btn-ghost-disabled-bg: transparent;
116
+ --btn-ghost-disabled-text: var(--text-disabled);
117
+
118
+ /* Success */
119
+ --btn-success-bg: var(--success);
120
+ --btn-success-text: var(--gray-50);
121
+ --btn-success-border: transparent;
122
+ --btn-success-hover-bg: color-mix(in oklab, var(--success) 85%, var(--background-main));
123
+ --btn-success-hover-text: var(--gray-50);
124
+ --btn-success-hover-border: transparent;
125
+ --btn-success-disabled-bg: var(--bg-disabled);
126
+ --btn-success-disabled-text: var(--text-disabled);
127
+ --btn-success-disabled-border: var(--border-disabled);
128
+
129
+ /* Warning */
130
+ --btn-warning-bg: var(--warning);
131
+ --btn-warning-text: var(--gray-900);
132
+ --btn-warning-border: transparent;
133
+ --btn-warning-hover-bg: color-mix(in oklab, var(--warning) 85%, var(--background-main));
134
+ --btn-warning-hover-text: var(--gray-900);
135
+ --btn-warning-hover-border: transparent;
136
+ --btn-warning-disabled-bg: var(--bg-disabled);
137
+ --btn-warning-disabled-text: var(--text-disabled);
138
+ --btn-warning-disabled-border: var(--border-disabled);
139
+
140
+ /* Error */
141
+ --btn-error-bg: var(--error);
142
+ --btn-error-text: var(--gray-50);
143
+ --btn-error-border: transparent;
144
+ --btn-error-hover-bg: color-mix(in oklab, var(--error) 85%, var(--background-main));
145
+ --btn-error-hover-text: var(--gray-50);
146
+ --btn-error-hover-border: transparent;
147
+ --btn-error-disabled-bg: var(--bg-disabled);
148
+ --btn-error-disabled-text: var(--text-disabled);
149
+ --btn-error-disabled-border: var(--border-disabled);
150
+
151
+ /* Info */
152
+ --btn-info-bg: var(--info);
153
+ --btn-info-text: var(--gray-50);
154
+ --btn-info-border: transparent;
155
+ --btn-info-hover-bg: color-mix(in oklab, var(--info) 85%, var(--background-main));
156
+ --btn-info-hover-text: var(--gray-50);
157
+ --btn-info-hover-border: transparent;
158
+ --btn-info-disabled-bg: var(--bg-disabled);
159
+ --btn-info-disabled-text: var(--text-disabled);
160
+ --btn-info-disabled-border: var(--border-disabled);
161
+
162
+ /* Focus */
163
+ --btn-focus-outline: var(--accent);
164
+
165
+ /* Sizes */
166
+ --btn-font-size-sm: var(--font-size-2);
167
+ --btn-font-size-md: var(--font-size-3);
168
+ --btn-font-size-lg: var(--font-size-4);
169
+ --btn-padding-vertical-sm: var(--space-1);
170
+ --btn-padding-horizontal-sm: var(--space-3);
171
+ --btn-padding-vertical-md: var(--space-2);
172
+ --btn-padding-horizontal-md: var(--space-4);
173
+ --btn-padding-vertical-lg: var(--space-3);
174
+ --btn-padding-horizontal-lg: var(--space-6);
175
+
176
+ /* Spinner */
177
+ --spinner-size: 1em;
178
+ --spinner-border: color-mix(in oklab, var(--text-default) 20%, transparent);
179
+ --spinner-border-active: currentColor;
180
+
181
+
182
+ /* ==========================================================================
183
+ * SÉMANTIQUES DS INPUT FIELDS
184
+ * ======================================================================== */
185
+ --input-bg: var(--surface-default);
186
+ --input-text: var(--text-default);
187
+ --input-placeholder: var(--text-subtle);
188
+ --input-border: var(--border-color);
189
+ --input-hover-border: color-mix(in oklab, var(--border-color) 80%, var(--background-main));
190
+ --input-focus-border: var(--accent);
191
+ --input-focus-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 25%, transparent);
192
+ --input-icon: var(--text-muted);
193
+ --input-disabled-bg: var(--bg-disabled);
194
+ --input-disabled-text: var(--text-disabled);
195
+ --input-success-border: var(--success);
196
+ --input-warning-border: var(--warning);
197
+ --input-error-border: var(--error);
198
+ --input-label-color: var(--text-default);
199
+ --input-label-text-color: var(--input-label-color);
200
+ --input-label-font-size: var(--font-size-2);
201
+ --input-label-margin-bottom: var(--space-1);
202
+ --input-padding-default: var(--space-2);
203
+
204
+ /* ==========================================================================
205
+ * SÉMANTIQUES DS MODALS
206
+ * ======================================================================== */
207
+ --modal-bg: var(--surface-overlay);
208
+ --modal-text: var(--text-default);
209
+ --modal-border: var(--border-strong);
210
+ --modal-backdrop: color-mix(in oklab, var(--gray-900) 40%, transparent);
211
+
212
+ /* ==========================================================================
213
+ * SÉMANTIQUES DS BADGES
214
+ * ======================================================================== */
215
+ --badge-bg: var(--accent);
216
+ --badge-text: var(--text-default);
217
+ --badge-bg-secondary: var(--accent-alt);
218
+ --badge-text-secondary: var(--text-default);
219
+ --badge-bg-muted: var(--surface-raised);
220
+ --badge-text-muted: var(--text-muted);
221
+ --badge-default-bg: var(--border-color);
222
+ --badge-default-text: var(--text-default);
223
+ --badge-primary-bg: var(--role-primary);
224
+ --badge-primary-text: var(--text-default);
225
+ --badge-secondary-bg: var(--role-secondary);
226
+ --badge-secondary-text: var(--text-default);
227
+ --badge-success-bg: var(--success);
228
+ --badge-success-text: var(--gray-50);
229
+ --badge-warning-bg: var(--warning);
230
+ --badge-warning-text: var(--gray-900);
231
+ --badge-error-bg: var(--error);
232
+ --badge-error-text: var(--gray-50);
233
+ --badge-info-bg: var(--info);
234
+ --badge-info-text: var(--gray-50);
235
+ --badge-neutral-bg: var(--border-strong);
236
+ --badge-neutral-text: var(--text-default);
237
+ --badge-accent-bg: var(--color-alt);
238
+ --badge-accent-text: var(--gray-900);
239
+ --badge-radius-default: var(--badge-radius);
240
+ --badge-radius-pill: var(--badge-pill-radius);
241
+ --badge-radius-square: 0;
242
+
243
+ /* ==========================================================================
244
+ * SÉMANTIQUES DS TOASTS
245
+ * ======================================================================== */
246
+ --toast-bg: var(--surface-default);
247
+ --toast-text: var(--text-default);
248
+ --toast-border: var(--border-color);
249
+
250
+ --toast-success-bg: var(--bg-success);
251
+ --toast-success-text: var(--text-success);
252
+ --toast-warning-bg: var(--bg-warning);
253
+ --toast-warning-text: var(--text-warning);
254
+ --toast-error-bg: var(--bg-error);
255
+ --toast-error-text: var(--text-error);
256
+ --toast-info-bg: var(--bg-info);
257
+ --toast-info-text: var(--text-info);
258
+
259
+ /* ==========================================================================
260
+ * SÉMANTIQUES DS CHECKBOX
261
+ * ======================================================================== */
262
+ --checkbox-bg: var(--surface-default);
263
+ --checkbox-border: var(--border-color);
264
+ --checkbox-checked-bg: var(--role-primary);
265
+ --checkbox-checked-border: var(--role-primary);
266
+ --checkbox-check-color: var(--gray-50);
267
+ --checkbox-hover-border: color-mix(in oklab, var(--border-color) 85%, var(--background-main));
268
+ --checkbox-focus-ring: 0 0 0 3px color-mix(in oklab, var(--role-primary) 25%, transparent);
269
+ --checkbox-disabled-bg: var(--bg-disabled);
270
+ --checkbox-disabled-border: var(--border-disabled);
271
+ --checkbox-disabled-check: var(--text-disabled);
272
+ --checkbox-indeterminate-bg: var(--role-primary);
273
+ --checkbox-indeterminate-border: var(--role-primary);
274
+
275
+ /* ==========================================================================
276
+ * SÉMANTIQUES DS RADIO
277
+ * ======================================================================== */
278
+ --radio-bg: var(--surface-default);
279
+ --radio-border: var(--border-color);
280
+ --radio-checked-bg: var(--surface-default);
281
+ --radio-checked-border: var(--role-primary);
282
+ --radio-dot-color: var(--role-primary);
283
+ --radio-hover-border: color-mix(in oklab, var(--border-color) 85%, var(--background-main));
284
+ --radio-focus-ring: 0 0 0 3px color-mix(in oklab, var(--role-primary) 25%, transparent);
285
+ --radio-disabled-bg: var(--bg-disabled);
286
+ --radio-disabled-border: var(--border-disabled);
287
+ --radio-disabled-dot: var(--text-disabled);
288
+
289
+ /* ==========================================================================
290
+ * SÉMANTIQUES DS TOGGLE
291
+ * ======================================================================== */
292
+ --toggle-track-bg: var(--border-strong);
293
+ --toggle-track-checked-bg: var(--role-primary);
294
+ --toggle-thumb-bg: var(--gray-50);
295
+ --toggle-thumb-shadow: var(--shadow-1);
296
+ --toggle-hover-track-bg: color-mix(in oklab, var(--border-strong) 85%, var(--background-main));
297
+ --toggle-hover-track-checked-bg: color-mix(in oklab, var(--role-primary) 90%, var(--background-main));
298
+ --toggle-focus-ring: 0 0 0 3px color-mix(in oklab, var(--role-primary) 25%, transparent);
299
+ --toggle-disabled-track-bg: var(--bg-disabled);
300
+ --toggle-disabled-thumb-bg: var(--border-subtle);
301
+
302
+ /* ==========================================================================
303
+ * SÉMANTIQUES DS BREADCRUMB
304
+ * ======================================================================== */
305
+ --breadcrumb-link: var(--text-muted);
306
+ --breadcrumb-link-hover: var(--text-default);
307
+ --breadcrumb-active: var(--text-default);
308
+ --breadcrumb-separator-color: var(--text-subtle);
309
+
310
+ /* ==========================================================================
311
+ * SÉMANTIQUES DS TABS
312
+ * ======================================================================== */
313
+ --tab-bg: transparent;
314
+ --tab-text: var(--text-muted);
315
+ --tab-hover-bg: var(--surface-hover);
316
+ --tab-hover-text: var(--text-default);
317
+ --tab-active-bg: transparent;
318
+ --tab-active-text: var(--text-default);
319
+ --tab-active-border: var(--role-primary);
320
+ --tab-border: var(--border-subtle);
321
+ --tab-disabled-text: var(--text-disabled);
322
+
323
+ /* ==========================================================================
324
+ * SÉMANTIQUES DS TOOLTIP
325
+ * ======================================================================== */
326
+ --tooltip-bg: var(--background-header);
327
+ --tooltip-text: var(--text-default);
328
+ --tooltip-shadow: var(--shadow-2);
329
+
330
+ /* ==========================================================================
331
+ * SÉMANTIQUES DS POPOVER
332
+ * ======================================================================== */
333
+ --popover-bg: var(--surface-default);
334
+ --popover-text: var(--text-default);
335
+ --popover-border: var(--border-color);
336
+ --popover-header-bg: var(--surface-raised);
337
+ --popover-header-border: var(--border-subtle);
338
+ --popover-backdrop: color-mix(in oklab, var(--gray-900) 20%, transparent);
339
+
340
+ /* ==========================================================================
341
+ * SÉMANTIQUES DS DROPDOWN
342
+ * ======================================================================== */
343
+ --dropdown-bg: var(--surface-default);
344
+ --dropdown-border-color: var(--border-color);
345
+ --dropdown-backdrop: color-mix(in oklab, var(--gray-900) 20%, transparent);
346
+ --dropdown-item-color: var(--text-muted);
347
+ --dropdown-item-hover-bg: var(--surface-hover);
348
+ --dropdown-item-hover-color: var(--text-default);
349
+ --dropdown-item-active-bg: var(--role-primary);
350
+ --dropdown-item-active-color: var(--gray-50);
351
+ --dropdown-separator: var(--border-subtle);
352
+
353
+ /* ==========================================================================
354
+ * SÉMANTIQUES DS PAGINATION
355
+ * ======================================================================== */
356
+ --pagination-btn-bg: var(--surface-default);
357
+ --pagination-btn-text: var(--text-default);
358
+ --pagination-btn-border: var(--border-color);
359
+ --pagination-btn-hover-bg: var(--surface-hover);
360
+ --pagination-btn-hover-border: var(--role-primary);
361
+ --pagination-btn-focus-border: var(--role-primary);
362
+ --pagination-active-bg: var(--role-primary);
363
+ --pagination-active-text: var(--gray-50);
364
+ --pagination-active-hover-bg: color-mix(in oklab, var(--role-primary) 85%, var(--background-main));
365
+ --pagination-info-color: var(--text-muted);
366
+
367
+ /* ==========================================================================
368
+ * SÉMANTIQUES DS STEPPER
369
+ * ======================================================================== */
370
+ --stepper-pending-bg: var(--background-secondary);
371
+ --stepper-pending-text: var(--text-muted);
372
+ --stepper-pending-border: var(--border-color);
373
+ --stepper-active-bg: var(--role-primary);
374
+ --stepper-active-text: var(--gray-50);
375
+ --stepper-completed-bg: var(--success);
376
+ --stepper-completed-text: var(--gray-50);
377
+ --stepper-error-bg: var(--error);
378
+ --stepper-error-text: var(--gray-50);
379
+ --stepper-connector-color: var(--border-color);
380
+
381
+ /* ==========================================================================
382
+ * SÉMANTIQUES DS ACCORDION
383
+ * ======================================================================== */
384
+ --accordion-header-bg: var(--surface-default);
385
+ --accordion-header-hover-bg: var(--surface-hover);
386
+ --accordion-header-text: var(--text-default);
387
+ --accordion-body-text: var(--text-muted);
388
+ --accordion-border-color: var(--border-color);
389
+ --accordion-icon-color: var(--text-muted);
390
+ --accordion-focus-color: var(--role-primary);
391
+ --accordion-expanded-border-color: var(--role-primary);
392
+ }
393
+