danarakca-design-system 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,40 @@
1
+ {
2
+ "name": "danarakca-design-system",
3
+ "version": "1.0.0",
4
+ "description": "Keu Design System - Shared UI components library",
5
+ "keywords": [
6
+ "angular",
7
+ "ui",
8
+ "design-system",
9
+ "components",
10
+ "kemenkeu"
11
+ ],
12
+ "author": "CORE APBN Team",
13
+ "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/pensikeu/danarakca-design-system"
17
+ },
18
+ "peerDependencies": {
19
+ "@angular/common": "^21.1.0",
20
+ "@angular/core": "^21.1.0",
21
+ "ckeditor5": ">=44.0.0",
22
+ "@ckeditor/ckeditor5-angular": ">=9.0.0"
23
+ },
24
+ "dependencies": {
25
+ "tslib": "^2.3.0"
26
+ },
27
+ "sideEffects": false,
28
+ "module": "fesm2022/danarakca-design-system.mjs",
29
+ "typings": "types/danarakca-design-system.d.ts",
30
+ "exports": {
31
+ "./package.json": {
32
+ "default": "./package.json"
33
+ },
34
+ ".": {
35
+ "types": "./types/danarakca-design-system.d.ts",
36
+ "default": "./fesm2022/danarakca-design-system.mjs"
37
+ }
38
+ },
39
+ "type": "module"
40
+ }
@@ -0,0 +1,5 @@
1
+ /* =============================================================================
2
+ * Danarakca Design System — Global Tokens
3
+ * Import this file in your root styles to enable all keu-* CSS variables.
4
+ * ========================================================================== */
5
+ @import './styles/tokens';
@@ -0,0 +1,330 @@
1
+ // =============================================================================
2
+ // Danarakca Design System — Design Tokens
3
+ // =============================================================================
4
+
5
+ :root {
6
+ // ===========================================================================
7
+ // GLOBAL COLORS — WARNA PUBLIK
8
+ // ===========================================================================
9
+
10
+ // Primary (Blue)
11
+ --keu-primary-900: #002847;
12
+ --keu-primary-800: #003661;
13
+ --keu-primary-700: #00437A;
14
+ --keu-primary-600: #005FAC; // base
15
+ --keu-primary-500: #2278BF;
16
+ --keu-primary-400: #4391D0;
17
+ --keu-primary-300: #67ABE0;
18
+ --keu-primary-200: #A8D1F0;
19
+ --keu-primary-100: #D2E8F9;
20
+ --keu-primary-50: #F0F8FE;
21
+
22
+ // Accent (Gold)
23
+ --keu-accent-900: #412E01;
24
+ --keu-accent-800: #5A4001;
25
+ --keu-accent-700: #745102;
26
+ --keu-accent-600: #A67503;
27
+ --keu-accent-500: #D89803;
28
+ --keu-accent-400: #FCB813; // base
29
+ --keu-accent-300: #FCC545;
30
+ --keu-accent-200: #FDD577;
31
+ --keu-accent-100: #FFECBD;
32
+ --keu-accent-50: #FEF4DC;
33
+
34
+ // Neutral (Gray)
35
+ --keu-neutral-900: #111827;
36
+ --keu-neutral-800: #1F2937;
37
+ --keu-neutral-700: #374151;
38
+ --keu-neutral-600: #4B5563;
39
+ --keu-neutral-500: #6B7280;
40
+ --keu-neutral-400: #9CA3AF;
41
+ --keu-neutral-300: #D1D5DB;
42
+ --keu-neutral-200: #E5E7EB;
43
+ --keu-neutral-100: #F3F4F6;
44
+ --keu-neutral-50: #F5F8FA;
45
+
46
+ // Red / Danger
47
+ --keu-danger-900: #7F1D1D;
48
+ --keu-danger-800: #991B1B;
49
+ --keu-danger-700: #B91C1C;
50
+ --keu-danger-600: #DC2626;
51
+ --keu-danger-500: #EF4444; // base
52
+ --keu-danger-400: #F87171;
53
+ --keu-danger-300: #FCA5A5;
54
+ --keu-danger-200: #FECACA;
55
+ --keu-danger-100: #FEE2E2;
56
+ --keu-danger-50: #FEF2F2;
57
+
58
+ // Green / Success
59
+ --keu-success-900: #03513A;
60
+ --keu-success-800: #026345;
61
+ --keu-success-700: #007D55;
62
+ --keu-success-600: #009C66;
63
+ --keu-success-500: #09C380; // base
64
+ --keu-success-400: #2DDA96;
65
+ --keu-success-300: #69ECB4;
66
+ --keu-success-200: #A4F6CE;
67
+ --keu-success-100: #CFFCE4;
68
+ --keu-success-50: #EBFEF4;
69
+
70
+ // ===========================================================================
71
+ // ESELON 1 COLORS — WARNA UNIT
72
+ // ===========================================================================
73
+
74
+ // Sekretariat Jenderal
75
+ --keu-setjen-900: #2B1F08;
76
+ --keu-setjen-800: #412E0B;
77
+ --keu-setjen-700: #5C3F0A;
78
+ --keu-setjen-600: #8A5F0F;
79
+ --keu-setjen-500: #C2820A;
80
+ --keu-setjen-400: #FFA600; // base
81
+ --keu-setjen-300: #FFB833;
82
+ --keu-setjen-200: #FFCA66;
83
+ --keu-setjen-100: #FFDB99;
84
+ --keu-setjen-50: #FFEDCC;
85
+
86
+ // Inspektorat Jenderal
87
+ --keu-itjen-900: #4A290D;
88
+ --keu-itjen-800: #65350B;
89
+ --keu-itjen-700: #834007;
90
+ --keu-itjen-600: #BD5800;
91
+ --keu-itjen-500: #F27000; // base
92
+ --keu-itjen-400: #FF8924;
93
+ --keu-itjen-300: #FFA557;
94
+ --keu-itjen-200: #FFC08A;
95
+ --keu-itjen-100: #FFDCBD;
96
+ --keu-itjen-50: #FFEEDA;
97
+
98
+ // Direktorat Jenderal Pajak
99
+ --keu-djp-900: #4D4C19;
100
+ --keu-djp-800: #737326;
101
+ --keu-djp-700: #A3A329;
102
+ --keu-djp-600: #D9D926;
103
+ --keu-djp-500: #E6E51A;
104
+ --keu-djp-400: #FFFF00; // base
105
+ --keu-djp-300: #FFFF33;
106
+ --keu-djp-200: #FFFF66;
107
+ --keu-djp-100: #FFFF99;
108
+ --keu-djp-50: #FFFFCC;
109
+
110
+ // Direktorat Jenderal Bea dan Cukai
111
+ --keu-djbc-900: #1F450C;
112
+ --keu-djbc-800: #327114;
113
+ --keu-djbc-700: #3BB800;
114
+ --keu-djbc-600: #4FDF0C;
115
+ --keu-djbc-500: #4CED00; // base
116
+ --keu-djbc-400: #67FF1F;
117
+ --keu-djbc-300: #89FF52;
118
+ --keu-djbc-200: #ACFF85;
119
+ --keu-djbc-100: #CFFFB8;
120
+ --keu-djbc-50: #F1FFEB;
121
+
122
+ // Direktorat Jenderal Anggaran
123
+ --keu-dja-900: #000638;
124
+ --keu-dja-800: #000852;
125
+ --keu-dja-700: #000B6B;
126
+ --keu-dja-600: #00109E;
127
+ --keu-dja-500: #0015D1;
128
+ --keu-dja-400: #031CFF; // base
129
+ --keu-dja-300: #384CFF;
130
+ --keu-dja-200: #6B7AFF;
131
+ --keu-dja-100: #9EA8FF;
132
+ --keu-dja-50: #DDDFF4;
133
+
134
+ // Direktorat Jenderal Perbendaharaan
135
+ --keu-djpb-900: #002333;
136
+ --keu-djpb-800: #00354D;
137
+ --keu-djpb-700: #004766;
138
+ --keu-djpb-600: #006B99;
139
+ --keu-djpb-500: #337FBD;
140
+ --keu-djpb-400: #00B2FF; // base
141
+ --keu-djpb-300: #33C1FF;
142
+ --keu-djpb-200: #66D1FF;
143
+ --keu-djpb-100: #9EDEFA;
144
+ --keu-djpb-50: #D4EDF7;
145
+
146
+ // Direktorat Jenderal Kekayaan Negara
147
+ --keu-djkn-900: #003300;
148
+ --keu-djkn-800: #006600;
149
+ --keu-djkn-700: #007E00; // base
150
+ --keu-djkn-600: #00B200;
151
+ --keu-djkn-500: #17CF17;
152
+ --keu-djkn-400: #3CDD3C;
153
+ --keu-djkn-300: #67E467;
154
+ --keu-djkn-200: #93EC93;
155
+ --keu-djkn-100: #BEF4BE;
156
+ --keu-djkn-50: #E9FBE9;
157
+
158
+ // Direktorat Jenderal Perimbangan Keuangan
159
+ --keu-djpk-900: #4D0009;
160
+ --keu-djpk-800: #61000B;
161
+ --keu-djpk-700: #7A000E;
162
+ --keu-djpk-600: #AD0014;
163
+ --keu-djpk-500: #E00019;
164
+ --keu-djpk-400: #FF142F;
165
+ --keu-djpk-300: #FF455A; // base
166
+ --keu-djpk-200: #FF7A89;
167
+ --keu-djpk-100: #FFADB7;
168
+ --keu-djpk-50: #FFE0E4;
169
+
170
+ // Badan Kebijakan Fiskal
171
+ --keu-bkf-900: #07142C;
172
+ --keu-bkf-800: #0B1F42;
173
+ --keu-bkf-700: #12336E;
174
+ --keu-bkf-600: #19489A;
175
+ --keu-bkf-500: #205CC6;
176
+ --keu-bkf-400: #3975DF; // base
177
+ --keu-bkf-300: #6594E6;
178
+ --keu-bkf-200: #91B3ED;
179
+ --keu-bkf-100: #BDD1F4;
180
+ --keu-bkf-50: #E9F0FB;
181
+
182
+ // Badan Pendidikan dan Pelatihan Keuangan (BPPK)
183
+ --keu-bppk-900: #002847;
184
+ --keu-bppk-800: #262626;
185
+ --keu-bppk-700: #333333;
186
+ --keu-bppk-600: #4D4D4D;
187
+ --keu-bppk-500: #666666;
188
+ --keu-bppk-400: #808080;
189
+ --keu-bppk-300: #999999; // base
190
+ --keu-bppk-200: #B3B3B3;
191
+ --keu-bppk-100: #CCCCCC;
192
+ --keu-bppk-50: #F2F2F2;
193
+
194
+ // Direktorat Jenderal Pengelolaan dan Pembiayaan & Resiko
195
+ --keu-djppr-900: #59005C;
196
+ --keu-djppr-800: #700075;
197
+ --keu-djppr-700: #8A0090; // base
198
+ --keu-djppr-600: #BB00C2;
199
+ --keu-djppr-500: #DF0CE9;
200
+ --keu-djppr-400: #E43EEA;
201
+ --keu-djppr-300: #E96CEF;
202
+ --keu-djppr-200: #F19AF4;
203
+ --keu-djppr-100: #F7C8F9;
204
+ --keu-djppr-50: #FCE8FC;
205
+
206
+ // ===========================================================================
207
+ // SEMANTIC TOKENS
208
+ // ===========================================================================
209
+ --keu-color-primary: var(--keu-primary-600);
210
+ --keu-color-accent: var(--keu-accent-400);
211
+ --keu-color-success: var(--keu-success-500);
212
+ --keu-color-danger: var(--keu-danger-500);
213
+ --keu-color-warning: var(--keu-accent-400);
214
+
215
+ --keu-color-text: var(--keu-neutral-900);
216
+ --keu-color-text-secondary: var(--keu-neutral-600);
217
+ --keu-color-text-disabled: var(--keu-neutral-400);
218
+ --keu-color-text-inverse: #ffffff;
219
+
220
+ --keu-color-bg: #ffffff;
221
+ --keu-color-bg-secondary: var(--keu-neutral-50);
222
+ --keu-color-bg-disabled: var(--keu-neutral-100);
223
+
224
+ --keu-color-border: var(--keu-neutral-300);
225
+ --keu-color-border-focus: var(--keu-primary-600);
226
+
227
+ // ===========================================================================
228
+ // GRID
229
+ // ===========================================================================
230
+ --keu-grid-columns-desktop: 12;
231
+ --keu-grid-columns-tablet: 8;
232
+ --keu-grid-columns-mobile: 4;
233
+
234
+ --keu-grid-gutter-desktop: 24px; /* 1440px+ dan 984+ */
235
+ --keu-grid-gutter-tablet: 16px; /* 744+ dan 464+ */
236
+ --keu-grid-gutter-mobile: 8px; /* 375+ dan 320+ */
237
+
238
+ --keu-grid-margin-desktop-xl: 80px; /* 1440px+ */
239
+ --keu-grid-margin-desktop: 40px; /* 984+ */
240
+ --keu-grid-margin-tablet: 24px; /* 744+ */
241
+ --keu-grid-margin-mobile: 16px; /* 464+ dan lebih kecil */
242
+
243
+ --keu-breakpoint-xs: 320px;
244
+ --keu-breakpoint-sm: 375px;
245
+ --keu-breakpoint-md: 464px;
246
+ --keu-breakpoint-lg: 744px;
247
+ --keu-breakpoint-xl: 984px;
248
+ --keu-breakpoint-2xl: 1440px;
249
+
250
+ // ===========================================================================
251
+ // SPACING
252
+ // ===========================================================================
253
+ --keu-spacing-0: 0rem; /* 0px */
254
+ --keu-spacing-0-5: 0.125rem; /* 2px */
255
+ --keu-spacing-1: 0.25rem; /* 4px */
256
+ --keu-spacing-2: 0.5rem; /* 8px */
257
+ --keu-spacing-3: 0.75rem; /* 12px */
258
+ --keu-spacing-4: 1rem; /* 16px */
259
+ --keu-spacing-5: 1.25rem; /* 20px */
260
+ --keu-spacing-6: 1.5rem; /* 24px */
261
+ --keu-spacing-8: 2rem; /* 32px */
262
+ --keu-spacing-10: 2.5rem; /* 40px */
263
+ --keu-spacing-12: 3rem; /* 48px */
264
+ --keu-spacing-16: 4rem; /* 64px */
265
+ --keu-spacing-20: 5rem; /* 80px */
266
+ --keu-spacing-24: 6rem; /* 96px */
267
+ --keu-spacing-32: 8rem; /* 128px */
268
+ --keu-spacing-40: 10rem; /* 160px */
269
+ --keu-spacing-48: 12rem; /* 192px */
270
+ --keu-spacing-56: 14rem; /* 224px */
271
+ --keu-spacing-64: 16rem; /* 256px */
272
+ --keu-spacing-80: 20rem; /* 320px */
273
+ --keu-spacing-96: 24rem; /* 384px */
274
+ --keu-spacing-120: 30rem; /* 480px */
275
+ --keu-spacing-140: 35rem; /* 560px */
276
+ --keu-spacing-160: 40rem; /* 640px */
277
+ --keu-spacing-180: 45rem; /* 720px */
278
+ --keu-spacing-192: 48rem; /* 768px */
279
+ --keu-spacing-256: 64rem; /* 1024px */
280
+ --keu-spacing-320: 80rem; /* 1280px */
281
+ --keu-spacing-360: 90rem; /* 1440px */
282
+ --keu-spacing-400: 100rem; /* 1600px */
283
+ --keu-spacing-480: 120rem; /* 1920px */
284
+
285
+ // ===========================================================================
286
+ // BORDER RADIUS
287
+ // ===========================================================================
288
+ --keu-radius-none: 0px;
289
+ --keu-radius-xxs: 0.125rem; /* 2px */
290
+ --keu-radius-xs: 0.25rem; /* 4px */
291
+ --keu-radius-sm: 0.375rem; /* 6px */
292
+ --keu-radius-md: 0.5rem; /* 8px */
293
+ --keu-radius-lg: 0.625rem; /* 10px */
294
+ --keu-radius-xl: 0.75rem; /* 12px */
295
+ --keu-radius-2xl: 1rem; /* 16px */
296
+ --keu-radius-3xl: 1.25rem; /* 20px */
297
+ --keu-radius-4xl: 1.5rem; /* 24px */
298
+ --keu-radius-full: 9999px;
299
+
300
+ // ===========================================================================
301
+ // TYPOGRAPHY
302
+ // ===========================================================================
303
+ --keu-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
304
+ --keu-font-size-xs: 0.75rem;
305
+ --keu-font-size-sm: 0.875rem;
306
+ --keu-font-size-md: 1rem;
307
+ --keu-font-size-lg: 1.125rem;
308
+ --keu-font-size-xl: 1.25rem;
309
+ --keu-font-size-2xl: 1.5rem;
310
+ --keu-font-size-3xl: 2rem;
311
+
312
+ --keu-font-weight-regular: 400;
313
+ --keu-font-weight-medium: 500;
314
+ --keu-font-weight-semibold: 600;
315
+ --keu-font-weight-bold: 700;
316
+
317
+ // ===========================================================================
318
+ // SHADOWS
319
+ // ===========================================================================
320
+ --keu-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
321
+ --keu-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
322
+ --keu-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
323
+
324
+ // ===========================================================================
325
+ // TRANSITIONS
326
+ // ===========================================================================
327
+ --keu-transition-fast: 150ms ease;
328
+ --keu-transition-normal: 250ms ease;
329
+ --keu-transition-slow: 350ms ease;
330
+ }
@@ -0,0 +1,83 @@
1
+ // =============================================================================
2
+ // KEU-UI UTILITY CLASSES
3
+ // Spacing : keu-p-*, keu-px-*, keu-py-*, keu-pt-*, keu-pr-*, keu-pb-*, keu-pl-*
4
+ // keu-m-*, keu-mx-*, keu-my-*, keu-mt-*, keu-mr-*, keu-mb-*, keu-ml-*
5
+ // keu-gap-*, keu-gap-x-*, keu-gap-y-*
6
+ // Radius : keu-rounded-*
7
+ // =============================================================================
8
+
9
+ // Spacing scale map (name -> CSS var)
10
+ $keu-spacing: (
11
+ '0': --keu-spacing-0,
12
+ '0-5': --keu-spacing-0-5,
13
+ '1': --keu-spacing-1,
14
+ '2': --keu-spacing-2,
15
+ '3': --keu-spacing-3,
16
+ '4': --keu-spacing-4,
17
+ '5': --keu-spacing-5,
18
+ '6': --keu-spacing-6,
19
+ '8': --keu-spacing-8,
20
+ '10': --keu-spacing-10,
21
+ '12': --keu-spacing-12,
22
+ '16': --keu-spacing-16,
23
+ '20': --keu-spacing-20,
24
+ '24': --keu-spacing-24,
25
+ '32': --keu-spacing-32,
26
+ '40': --keu-spacing-40,
27
+ '48': --keu-spacing-48,
28
+ '56': --keu-spacing-56,
29
+ '64': --keu-spacing-64,
30
+ '80': --keu-spacing-80,
31
+ '96': --keu-spacing-96,
32
+ );
33
+
34
+ $keu-radius: (
35
+ 'none': --keu-radius-none,
36
+ 'xxs': --keu-radius-xxs,
37
+ 'xs': --keu-radius-xs,
38
+ 'sm': --keu-radius-sm,
39
+ 'md': --keu-radius-md,
40
+ 'lg': --keu-radius-lg,
41
+ 'xl': --keu-radius-xl,
42
+ '2xl': --keu-radius-2xl,
43
+ '3xl': --keu-radius-3xl,
44
+ '4xl': --keu-radius-4xl,
45
+ 'full': --keu-radius-full,
46
+ );
47
+
48
+ // --- Spacing utilities -------------------------------------------------------
49
+
50
+ @each $key, $var in $keu-spacing {
51
+ // padding all
52
+ .keu-p-#{$key} { padding: var(#{$var}) !important; }
53
+ // padding axis
54
+ .keu-px-#{$key} { padding-inline: var(#{$var}) !important; }
55
+ .keu-py-#{$key} { padding-block: var(#{$var}) !important; }
56
+ // padding side
57
+ .keu-pt-#{$key} { padding-top: var(#{$var}) !important; }
58
+ .keu-pr-#{$key} { padding-right: var(#{$var}) !important; }
59
+ .keu-pb-#{$key} { padding-bottom: var(#{$var}) !important; }
60
+ .keu-pl-#{$key} { padding-left: var(#{$var}) !important; }
61
+
62
+ // margin all
63
+ .keu-m-#{$key} { margin: var(#{$var}) !important; }
64
+ // margin axis
65
+ .keu-mx-#{$key} { margin-inline: var(#{$var}) !important; }
66
+ .keu-my-#{$key} { margin-block: var(#{$var}) !important; }
67
+ // margin side
68
+ .keu-mt-#{$key} { margin-top: var(#{$var}) !important; }
69
+ .keu-mr-#{$key} { margin-right: var(#{$var}) !important; }
70
+ .keu-mb-#{$key} { margin-bottom: var(#{$var}) !important; }
71
+ .keu-ml-#{$key} { margin-left: var(#{$var}) !important; }
72
+
73
+ // gap
74
+ .keu-gap-#{$key} { gap: var(#{$var}) !important; }
75
+ .keu-gap-x-#{$key} { column-gap: var(#{$var}) !important; }
76
+ .keu-gap-y-#{$key} { row-gap: var(#{$var}) !important; }
77
+ }
78
+
79
+ // --- Radius utilities --------------------------------------------------------
80
+
81
+ @each $key, $var in $keu-radius {
82
+ .keu-rounded-#{$key} { border-radius: var(#{$var}) !important; }
83
+ }