@foxeltech/angular-ui 0.0.14 → 0.3.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.
Files changed (134) hide show
  1. package/BeVietnamPro/BeVietnamPro-Bold.woff2 +0 -0
  2. package/BeVietnamPro/BeVietnamPro-ExtraLight.woff2 +0 -0
  3. package/BeVietnamPro/BeVietnamPro-Light.woff2 +0 -0
  4. package/BeVietnamPro/BeVietnamPro-Medium.woff2 +0 -0
  5. package/BeVietnamPro/BeVietnamPro-Regular.woff2 +0 -0
  6. package/BeVietnamPro/BeVietnamPro-SemiBold.woff2 +0 -0
  7. package/BeVietnamPro/BeVietnamPro-Thin.woff2 +0 -0
  8. package/SpaceMono-Regular.woff2 +0 -0
  9. package/components.css +7 -17
  10. package/dm-sans/DMSans-Bold.woff2 +0 -0
  11. package/dm-sans/DMSans-Light.woff2 +0 -0
  12. package/dm-sans/DMSans-Medium.woff2 +0 -0
  13. package/dm-sans/DMSans-Regular.woff2 +0 -0
  14. package/dm-sans/DMSans-SemiBold.woff2 +0 -0
  15. package/dm-sans/DMSans-Thin.woff2 +0 -0
  16. package/fesm2022/foxeltech-angular-ui.mjs +1349 -285
  17. package/fesm2022/foxeltech-angular-ui.mjs.map +1 -1
  18. package/fonts.css +68 -34
  19. package/index.d.ts +624 -139
  20. package/orbitron/Orbitron-Bold.woff2 +0 -0
  21. package/orbitron/Orbitron-Medium.woff2 +0 -0
  22. package/orbitron/Orbitron-Regular.woff2 +0 -0
  23. package/orbitron/Orbitron-SemiBold.woff2 +0 -0
  24. package/package.json +9 -10
  25. package/roboto/Roboto-Black.woff2 +0 -0
  26. package/roboto/Roboto-BlackItalic.woff2 +0 -0
  27. package/roboto/Roboto-Bold.woff2 +0 -0
  28. package/roboto/Roboto-BoldCondensed.woff2 +0 -0
  29. package/roboto/Roboto-BoldCondensedItalic.woff2 +0 -0
  30. package/roboto/Roboto-BoldItalic.woff2 +0 -0
  31. package/roboto/Roboto-Condensed.woff2 +0 -0
  32. package/roboto/Roboto-CondensedItalic.woff2 +0 -0
  33. package/roboto/Roboto-Italic.woff2 +0 -0
  34. package/roboto/Roboto-Light.woff2 +0 -0
  35. package/roboto/Roboto-LightItalic.woff2 +0 -0
  36. package/roboto/Roboto-Medium.woff2 +0 -0
  37. package/roboto/Roboto-MediumItalic.woff2 +0 -0
  38. package/roboto/Roboto-Regular.woff2 +0 -0
  39. package/roboto/Roboto-Thin.woff2 +0 -0
  40. package/roboto/Roboto-ThinItalic.woff2 +0 -0
  41. package/src/lib/styles/components.css +7 -17
  42. package/src/lib/styles/fonts.css +68 -34
  43. package/src/lib/styles/tailwind.css +11 -8
  44. package/src/lib/styles/tokens.css +131 -0
  45. package/src/lib/styles/utilities.css +24 -0
  46. package/src/lib/ui/components/button/button.component.html +4 -1
  47. package/src/lib/ui/components/button/button.component.scss +0 -0
  48. package/src/lib/ui/components/chart/chart.component.scss +49 -0
  49. package/src/lib/ui/components/checkbox/checkbox.component.html +3 -2
  50. package/src/lib/ui/components/checkbox/checkbox.component.scss +0 -0
  51. package/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.scss +0 -0
  52. package/src/lib/ui/components/datetime-picker/datetime-picker.component.html +3 -2
  53. package/src/lib/ui/components/datetime-picker/datetime-picker.component.scss +147 -0
  54. package/src/lib/ui/components/dnd-upload/dnd-upload.component.scss +87 -0
  55. package/src/lib/ui/components/drawer/drawer.component.html +3 -0
  56. package/src/lib/ui/components/drawer/drawer.component.scss +134 -0
  57. package/src/lib/ui/components/empty-state/empty-state.component.html +9 -0
  58. package/src/lib/ui/components/filter-chips/filter-chips.component.html +12 -0
  59. package/src/lib/ui/components/flow-connection/flow-connection.component.scss +0 -0
  60. package/src/lib/ui/components/hero-icon/hero-icon.component.scss +0 -0
  61. package/src/lib/ui/components/info-field/info-field.component.html +4 -0
  62. package/src/lib/ui/components/input/input.component.html +15 -3
  63. package/src/lib/ui/components/kanban-board/kanban-board.component.scss +70 -0
  64. package/src/lib/ui/components/loading-panel/loading-panel.component.scss +0 -0
  65. package/src/lib/ui/components/master-detail/master-detail.component.css +11 -0
  66. package/src/lib/ui/components/master-detail/master-detail.component.html +70 -0
  67. package/src/lib/ui/components/meter/meter.component.html +22 -0
  68. package/src/lib/ui/components/radio-button/radio-button.component.html +10 -4
  69. package/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.html +8 -3
  70. package/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.scss +0 -0
  71. package/src/lib/ui/components/rich-text-area/rich-text-area.component.scss +18 -0
  72. package/src/lib/ui/components/search-bar/search-bar.component.scss +0 -0
  73. package/src/lib/ui/components/section-card/section-card.component.html +9 -0
  74. package/src/lib/ui/components/select/select.component.html +9 -4
  75. package/src/lib/ui/components/severity-badges/severity-badges.component.html +11 -0
  76. package/src/lib/ui/components/skeleton-detail/skeleton-detail.component.html +22 -0
  77. package/src/lib/ui/components/skeleton-list/skeleton-list.component.html +12 -0
  78. package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.scss +0 -0
  79. package/src/lib/ui/components/slider/slider.component.html +3 -0
  80. package/src/lib/ui/components/slider/slider.component.scss +0 -0
  81. package/src/lib/ui/components/stat-cards/stat-cards.component.html +18 -0
  82. package/src/lib/ui/components/switch/switch.component.html +11 -6
  83. package/src/lib/ui/components/switch/switch.component.scss +0 -0
  84. package/src/lib/ui/components/tab-component/tab.component.scss +0 -0
  85. package/src/lib/ui/components/tab-group/tab-group.component.html +15 -1
  86. package/src/lib/ui/components/tab-group/tab-group.component.scss +51 -0
  87. package/src/lib/ui/components/table-cell/table-cell.component.scss +0 -0
  88. package/src/lib/ui/components/tag/tag.component.html +6 -1
  89. package/src/lib/ui/components/tag/tag.component.scss +0 -0
  90. package/src/lib/ui/components/toast/toast.component.html +2 -1
  91. package/src/lib/ui/components/toast/toast.component.scss +0 -0
  92. package/src/lib/ui/components/toast-container/toast-container.component.scss +0 -0
  93. package/src/lib/ui/components/tree-diagram/tree-diagram.component.scss +0 -0
  94. package/src/lib/ui/dialogs/confirmation/confirmation.component.html +1 -1
  95. package/src/lib/ui/dialogs/confirmation/confirmation.component.scss +0 -0
  96. package/tailwind.css +11 -8
  97. package/tokens.css +131 -0
  98. package/utilities.css +24 -0
  99. package/BeVietnamPro/BeVietnamPro-Bold.ttf +0 -0
  100. package/BeVietnamPro/BeVietnamPro-ExtraLight.ttf +0 -0
  101. package/BeVietnamPro/BeVietnamPro-Light.ttf +0 -0
  102. package/BeVietnamPro/BeVietnamPro-Medium.ttf +0 -0
  103. package/BeVietnamPro/BeVietnamPro-Regular.ttf +0 -0
  104. package/BeVietnamPro/BeVietnamPro-SemiBold.ttf +0 -0
  105. package/BeVietnamPro/BeVietnamPro-Thin.ttf +0 -0
  106. package/SpaceMono-Regular.ttf +0 -0
  107. package/dm-sans/DMSans-Bold.ttf +0 -0
  108. package/dm-sans/DMSans-Light.ttf +0 -0
  109. package/dm-sans/DMSans-Medium.ttf +0 -0
  110. package/dm-sans/DMSans-Regular.ttf +0 -0
  111. package/dm-sans/DMSans-SemiBold.ttf +0 -0
  112. package/dm-sans/DMSans-Thin.ttf +0 -0
  113. package/orbitron/Orbitron-Bold.ttf +0 -0
  114. package/orbitron/Orbitron-Medium.ttf +0 -0
  115. package/orbitron/Orbitron-Regular.ttf +0 -0
  116. package/orbitron/Orbitron-SemiBold.ttf +0 -0
  117. package/roboto/Roboto-Black.ttf +0 -0
  118. package/roboto/Roboto-BlackItalic.ttf +0 -0
  119. package/roboto/Roboto-Bold.ttf +0 -0
  120. package/roboto/Roboto-BoldCondensed.ttf +0 -0
  121. package/roboto/Roboto-BoldCondensedItalic.ttf +0 -0
  122. package/roboto/Roboto-BoldItalic.ttf +0 -0
  123. package/roboto/Roboto-Condensed.ttf +0 -0
  124. package/roboto/Roboto-CondensedItalic.ttf +0 -0
  125. package/roboto/Roboto-Italic.ttf +0 -0
  126. package/roboto/Roboto-Light.ttf +0 -0
  127. package/roboto/Roboto-LightItalic.ttf +0 -0
  128. package/roboto/Roboto-Medium.ttf +0 -0
  129. package/roboto/Roboto-MediumItalic.ttf +0 -0
  130. package/roboto/Roboto-Regular.ttf +0 -0
  131. package/roboto/Roboto-Thin.ttf +0 -0
  132. package/roboto/Roboto-ThinItalic.ttf +0 -0
  133. package/tailwind-config.d.ts +0 -4
  134. package/tailwind.config.js +0 -95
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,18 +1,12 @@
1
1
  {
2
2
  "name": "@foxeltech/angular-ui",
3
- "version": "0.0.14",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
- "main": "bundles/ui.umd.js",
6
- "module": "fesm2022/foxeltech-angular-ui.mjs",
7
- "es2020": "fesm2020/ui.mjs",
8
- "typings": "index.d.ts",
9
5
  "publishConfig": {
10
6
  "access": "public"
11
7
  },
12
8
  "peerDependencies": {
13
- "tailwindcss": "^3.0.0",
14
- "autoprefixer": "^10.0.0",
15
- "postcss": "^8.0.0",
9
+ "tailwindcss": "^4.0.0",
16
10
  "@angular/common": "^20.3.0",
17
11
  "@angular/animations": "^20.3.0",
18
12
  "@angular/core": "^20.3.0",
@@ -37,13 +31,14 @@
37
31
  "@microsoft/signalr": "^10.0.0"
38
32
  },
39
33
  "exports": {
40
- "./tailwind-config": "./tailwind.config.js",
41
34
  "./tailwind.css": "./tailwind.css",
42
35
  "./theme.css": "./theme.css",
43
36
  "./components.css": "./components.css",
44
37
  "./dialogs.css": "./dialogs.css",
45
38
  "./fonts.css": "./fonts.css",
46
39
  "./animations.css": "./animations.css",
40
+ "./tokens.css": "./tokens.css",
41
+ "./utilities.css": "./utilities.css",
47
42
  "./package.json": {
48
43
  "default": "./package.json"
49
44
  },
@@ -52,5 +47,9 @@
52
47
  "default": "./fesm2022/foxeltech-angular-ui.mjs"
53
48
  }
54
49
  },
55
- "sideEffects": false
50
+ "sideEffects": [
51
+ "*.css"
52
+ ],
53
+ "module": "fesm2022/foxeltech-angular-ui.mjs",
54
+ "typings": "index.d.ts"
56
55
  }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -79,6 +79,11 @@
79
79
  .mat-mdc-tooltip {
80
80
  border-radius: 6px !important;
81
81
  background-color: rgb(var(--bg-primary)) !important;
82
+ --mdc-plain-tooltip-container-color: rgb(var(--bg-primary));
83
+ --mdc-plain-tooltip-supporting-text-color: rgb(var(--text-primary));
84
+ }
85
+ .mat-mdc-tooltip .mdc-tooltip__surface {
86
+ color: rgb(var(--text-primary)) !important;
82
87
  }
83
88
 
84
89
  .mat-mdc-table {
@@ -291,9 +296,6 @@ input[type='password'] {
291
296
  .txt-card-info-description {
292
297
  @apply text-xs font-light text-text-secondary tracking-normal;
293
298
  }
294
- .txt-tag-common {
295
- @apply font-semibold text-xs;
296
- }
297
299
  .txt-tag-default {
298
300
  @apply txt-tag-common text-text-secondary;
299
301
  }
@@ -325,9 +327,6 @@ input[type='password'] {
325
327
  @apply font-mono text-sm text-text-primary tracking-normal;
326
328
  }
327
329
 
328
- .btn-common {
329
- @apply flex text-sm h-10 font-semibold px-xl py-normal items-center justify-center rounded-lg shadow-sm transition-all duration-200 disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed;
330
- }
331
330
  .btn-default {
332
331
  @apply btn-common bg-button-default hover:opacity-75 text-text-inverse;
333
332
  }
@@ -340,9 +339,6 @@ input[type='password'] {
340
339
  .btn-alternative {
341
340
  @apply btn-common hover:bg-bg-hover text-text-primary border border-border-default;
342
341
  }
343
- .btn-menu-common {
344
- @apply flex flex-row items-center px-semi;
345
- }
346
342
  .btn-menu-top {
347
343
  @apply btn-menu-common border-b border-border-default pt-small pb-semi;
348
344
  }
@@ -354,7 +350,7 @@ input[type='password'] {
354
350
  }
355
351
 
356
352
  .input-default {
357
- @apply block h-[36px] text-text-primary placeholder:text-text-placeholder bg-bg-primary w-full rounded-md border px-semi py-normal border-border-default focus:outline-none focus:border-2 focus:border-gradient-primary-start text-sm text-text-primary tracking-normal ring-0 transition-colors duration-500 ease-in-out;
353
+ @apply block h-[36px] text-text-primary placeholder:text-text-placeholder bg-bg-primary w-full rounded-md border px-semi py-normal border-border-default focus:outline-none focus:border-2 focus:border-gradient-primary-start focus-visible:ring-2 focus-visible:ring-primary/50 text-sm text-text-primary tracking-normal ring-0 transition-colors duration-500 ease-in-out;
358
354
  }
359
355
  .input-invalid {
360
356
  @apply border-bg-error focus:ring-bg-error focus:border-bg-error;
@@ -363,12 +359,9 @@ input[type='password'] {
363
359
  @apply focus:border-2 focus:border-border-hover2 focus:bg-bg-hover2;
364
360
  }
365
361
  .input-otp {
366
- @apply bg-bg-primary w-full rounded-md border px-semi py-normal border-border-default focus:outline-none focus:border-2 focus:border-gradient-primary-start text-text-primary ring-0 transition-colors duration-500 ease-in-out;
362
+ @apply bg-bg-primary w-full rounded-md border px-semi py-normal border-border-default focus:outline-none focus:border-2 focus:border-gradient-primary-start focus-visible:ring-2 focus-visible:ring-primary/50 text-text-primary ring-0 transition-colors duration-500 ease-in-out;
367
363
  }
368
364
 
369
- .card-common {
370
- @apply text-left px-xl py-large border border-border-default rounded-lg shadow-sm transition-colors duration-500 ease-in-out;
371
- }
372
365
  .card-information {
373
366
  @apply card-common hover:opacity-70 hover:shadow-md hover:border-border-selected;
374
367
  }
@@ -379,9 +372,6 @@ input[type='password'] {
379
372
  @apply flex items-center justify-between rounded-md px-semi py-normal bg-bg-primary mb-normal last:mb-0;
380
373
  }
381
374
 
382
- .tag-common {
383
- @apply flex min-w-7 px-[10px] py-[2px] leading-5 hover:opacity-70 items-center justify-center;
384
- }
385
375
  .tag-default {
386
376
  @apply tag-common bg-bg-hover;
387
377
  }
@@ -1,237 +1,271 @@
1
1
  @font-face {
2
2
  font-family: 'BeVietnamPro';
3
- src: url('./BeVietnamPro/BeVietnamPro-Thin.ttf') format('truetype');
3
+ font-display: swap;
4
+ src: url('./BeVietnamPro/BeVietnamPro-Thin.woff2') format('woff2');
4
5
  font-weight: 100;
5
6
  font-style: normal;
6
7
  }
7
8
 
8
9
  @font-face {
9
10
  font-family: 'BeVietnamPro';
10
- src: url('./BeVietnamPro/BeVietnamPro-ExtraLight.ttf') format('truetype');
11
+ font-display: swap;
12
+ src: url('./BeVietnamPro/BeVietnamPro-ExtraLight.woff2') format('woff2');
11
13
  font-weight: 200;
12
14
  font-style: normal;
13
15
  }
14
16
 
15
17
  @font-face {
16
18
  font-family: 'BeVietnamPro';
17
- src: url('./BeVietnamPro/BeVietnamPro-Light.ttf') format('truetype');
19
+ font-display: swap;
20
+ src: url('./BeVietnamPro/BeVietnamPro-Light.woff2') format('woff2');
18
21
  font-weight: 300;
19
22
  font-style: normal;
20
23
  }
21
24
 
22
25
  @font-face {
23
26
  font-family: 'BeVietnamPro';
24
- src: url('./BeVietnamPro/BeVietnamPro-Regular.ttf') format('truetype');
27
+ font-display: swap;
28
+ src: url('./BeVietnamPro/BeVietnamPro-Regular.woff2') format('woff2');
25
29
  font-weight: 400;
26
30
  font-style: normal;
27
31
  }
28
32
 
29
33
  @font-face {
30
34
  font-family: 'BeVietnamPro';
31
- src: url('./BeVietnamPro/BeVietnamPro-Medium.ttf') format('truetype');
35
+ font-display: swap;
36
+ src: url('./BeVietnamPro/BeVietnamPro-Medium.woff2') format('woff2');
32
37
  font-weight: 500;
33
38
  font-style: normal;
34
39
  }
35
40
 
36
41
  @font-face {
37
42
  font-family: 'BeVietnamPro';
38
- src: url('./BeVietnamPro/BeVietnamPro-SemiBold.ttf') format('truetype');
43
+ font-display: swap;
44
+ src: url('./BeVietnamPro/BeVietnamPro-SemiBold.woff2') format('woff2');
39
45
  font-weight: 600;
40
46
  font-style: normal;
41
47
  }
42
48
 
43
49
  @font-face {
44
50
  font-family: 'BeVietnamPro';
45
- src: url('./BeVietnamPro/BeVietnamPro-Bold.ttf') format('truetype');
51
+ font-display: swap;
52
+ src: url('./BeVietnamPro/BeVietnamPro-Bold.woff2') format('woff2');
46
53
  font-weight: 700;
47
54
  font-style: normal;
48
55
  }
49
56
 
50
57
  @font-face {
51
58
  font-family: 'DMSans';
52
- src: url('./dm-sans/DMSans-Thin.ttf') format('truetype');
59
+ font-display: swap;
60
+ src: url('./dm-sans/DMSans-Thin.woff2') format('woff2');
53
61
  font-weight: 200;
54
62
  font-style: normal;
55
63
  }
56
64
 
57
65
  @font-face {
58
66
  font-family: 'DMSans';
59
- src: url('./dm-sans/DMSans-Light.ttf') format('truetype');
67
+ font-display: swap;
68
+ src: url('./dm-sans/DMSans-Light.woff2') format('woff2');
60
69
  font-weight: 300;
61
70
  font-style: normal;
62
71
  }
63
72
 
64
73
  @font-face {
65
74
  font-family: 'DMSans';
66
- src: url('./dm-sans/DMSans-Regular.ttf') format('truetype');
75
+ font-display: swap;
76
+ src: url('./dm-sans/DMSans-Regular.woff2') format('woff2');
67
77
  font-weight: 400;
68
78
  font-style: normal;
69
79
  }
70
80
 
71
81
  @font-face {
72
82
  font-family: 'DMSans';
73
- src: url('./dm-sans/DMSans-Medium.ttf') format('truetype');
83
+ font-display: swap;
84
+ src: url('./dm-sans/DMSans-Medium.woff2') format('woff2');
74
85
  font-weight: 500;
75
86
  font-style: normal;
76
87
  }
77
88
 
78
89
  @font-face {
79
90
  font-family: 'DMSans';
80
- src: url('./dm-sans/DMSans-SemiBold.ttf') format('truetype');
91
+ font-display: swap;
92
+ src: url('./dm-sans/DMSans-SemiBold.woff2') format('woff2');
81
93
  font-weight: 600;
82
94
  font-style: normal;
83
95
  }
84
96
 
85
97
  @font-face {
86
98
  font-family: 'DMSans';
87
- src: url('./dm-sans/DMSans-Bold.ttf') format('truetype');
99
+ font-display: swap;
100
+ src: url('./dm-sans/DMSans-Bold.woff2') format('woff2');
88
101
  font-weight: 700;
89
102
  font-style: normal;
90
103
  }
91
104
 
92
105
  @font-face {
93
106
  font-family: 'Orbitron';
94
- src: url('./orbitron/Orbitron-Regular.ttf') format('truetype');
107
+ font-display: swap;
108
+ src: url('./orbitron/Orbitron-Regular.woff2') format('woff2');
95
109
  font-weight: 400;
96
110
  font-style: normal;
97
111
  }
98
112
 
99
113
  @font-face {
100
114
  font-family: 'Orbitron';
101
- src: url('./orbitron/Orbitron-Medium.ttf') format('truetype');
115
+ font-display: swap;
116
+ src: url('./orbitron/Orbitron-Medium.woff2') format('woff2');
102
117
  font-weight: 500;
103
118
  font-style: normal;
104
119
  }
105
120
 
106
121
  @font-face {
107
122
  font-family: 'Orbitron';
108
- src: url('./orbitron/Orbitron-SemiBold.ttf') format('truetype');
123
+ font-display: swap;
124
+ src: url('./orbitron/Orbitron-SemiBold.woff2') format('woff2');
109
125
  font-weight: 600;
110
126
  font-style: normal;
111
127
  }
112
128
 
113
129
  @font-face {
114
130
  font-family: 'Orbitron';
115
- src: url('./orbitron/Orbitron-Bold.ttf') format('truetype');
131
+ font-display: swap;
132
+ src: url('./orbitron/Orbitron-Bold.woff2') format('woff2');
116
133
  font-weight: 700;
117
134
  font-style: normal;
118
135
  }
119
136
 
120
137
  @font-face {
121
138
  font-family: 'SpaceMonoRegular';
122
- src: url('./SpaceMono-Regular.ttf') format('truetype');
139
+ font-display: swap;
140
+ src: url('./SpaceMono-Regular.woff2') format('woff2');
123
141
  font-weight: normal;
124
142
  font-style: normal;
125
143
  }
126
144
 
127
145
  @font-face {
128
146
  font-family: 'Roboto';
129
- src: url('./roboto/Roboto-Thin.ttf') format('truetype');
147
+ font-display: swap;
148
+ src: url('./roboto/Roboto-Thin.woff2') format('woff2');
130
149
  font-weight: 100;
131
150
  font-style: normal;
132
151
  }
133
152
 
134
153
  @font-face {
135
154
  font-family: 'Roboto';
136
- src: url('./roboto/Roboto-ThinItalic.ttf') format('truetype');
155
+ font-display: swap;
156
+ src: url('./roboto/Roboto-ThinItalic.woff2') format('woff2');
137
157
  font-weight: 100;
138
158
  font-style: italic;
139
159
  }
140
160
 
141
161
  @font-face {
142
162
  font-family: 'Roboto';
143
- src: url('./roboto/Roboto-Light.ttf') format('truetype');
163
+ font-display: swap;
164
+ src: url('./roboto/Roboto-Light.woff2') format('woff2');
144
165
  font-weight: 300;
145
166
  font-style: normal;
146
167
  }
147
168
 
148
169
  @font-face {
149
170
  font-family: 'Roboto';
150
- src: url('./roboto/Roboto-LightItalic.ttf') format('truetype');
171
+ font-display: swap;
172
+ src: url('./roboto/Roboto-LightItalic.woff2') format('woff2');
151
173
  font-weight: 300;
152
174
  font-style: italic;
153
175
  }
154
176
 
155
177
  @font-face {
156
178
  font-family: 'Roboto';
157
- src: url('./roboto/Roboto-Regular.ttf') format('truetype');
179
+ font-display: swap;
180
+ src: url('./roboto/Roboto-Regular.woff2') format('woff2');
158
181
  font-weight: 400;
159
182
  font-style: normal;
160
183
  }
161
184
 
162
185
  @font-face {
163
186
  font-family: 'Roboto';
164
- src: url('./roboto/Roboto-Italic.ttf') format('truetype');
187
+ font-display: swap;
188
+ src: url('./roboto/Roboto-Italic.woff2') format('woff2');
165
189
  font-weight: 400;
166
190
  font-style: italic;
167
191
  }
168
192
 
169
193
  @font-face {
170
194
  font-family: 'Roboto';
171
- src: url('./roboto/Roboto-Medium.ttf') format('truetype');
195
+ font-display: swap;
196
+ src: url('./roboto/Roboto-Medium.woff2') format('woff2');
172
197
  font-weight: 500;
173
198
  font-style: normal;
174
199
  }
175
200
 
176
201
  @font-face {
177
202
  font-family: 'Roboto';
178
- src: url('./roboto/Roboto-MediumItalic.ttf') format('truetype');
203
+ font-display: swap;
204
+ src: url('./roboto/Roboto-MediumItalic.woff2') format('woff2');
179
205
  font-weight: 500;
180
206
  font-style: italic;
181
207
  }
182
208
 
183
209
  @font-face {
184
210
  font-family: 'Roboto';
185
- src: url('./roboto/Roboto-Bold.ttf') format('truetype');
211
+ font-display: swap;
212
+ src: url('./roboto/Roboto-Bold.woff2') format('woff2');
186
213
  font-weight: 700;
187
214
  font-style: normal;
188
215
  }
189
216
 
190
217
  @font-face {
191
218
  font-family: 'Roboto';
192
- src: url('./roboto/Roboto-BoldItalic.ttf') format('truetype');
219
+ font-display: swap;
220
+ src: url('./roboto/Roboto-BoldItalic.woff2') format('woff2');
193
221
  font-weight: 700;
194
222
  font-style: italic;
195
223
  }
196
224
 
197
225
  @font-face {
198
226
  font-family: 'Roboto';
199
- src: url('./roboto/Roboto-Black.ttf') format('truetype');
227
+ font-display: swap;
228
+ src: url('./roboto/Roboto-Black.woff2') format('woff2');
200
229
  font-weight: 900;
201
230
  font-style: normal;
202
231
  }
203
232
 
204
233
  @font-face {
205
234
  font-family: 'Roboto';
206
- src: url('./roboto/Roboto-BlackItalic.ttf') format('truetype');
235
+ font-display: swap;
236
+ src: url('./roboto/Roboto-BlackItalic.woff2') format('woff2');
207
237
  font-weight: 900;
208
238
  font-style: italic;
209
239
  }
210
240
 
211
241
  @font-face {
212
242
  font-family: 'Roboto Condensed';
213
- src: url('./roboto/Roboto-Condensed.ttf') format('truetype');
243
+ font-display: swap;
244
+ src: url('./roboto/Roboto-Condensed.woff2') format('woff2');
214
245
  font-weight: 400;
215
246
  font-style: normal;
216
247
  }
217
248
 
218
249
  @font-face {
219
250
  font-family: 'Roboto Condensed';
220
- src: url('./roboto/Roboto-CondensedItalic.ttf') format('truetype');
251
+ font-display: swap;
252
+ src: url('./roboto/Roboto-CondensedItalic.woff2') format('woff2');
221
253
  font-weight: 400;
222
254
  font-style: italic;
223
255
  }
224
256
 
225
257
  @font-face {
226
258
  font-family: 'Roboto Condensed';
227
- src: url('./roboto/Roboto-BoldCondensed.ttf') format('truetype');
259
+ font-display: swap;
260
+ src: url('./roboto/Roboto-BoldCondensed.woff2') format('woff2');
228
261
  font-weight: 700;
229
262
  font-style: normal;
230
263
  }
231
264
 
232
265
  @font-face {
233
266
  font-family: 'Roboto Condensed';
234
- src: url('./roboto/Roboto-BoldCondensedItalic.ttf') format('truetype');
267
+ font-display: swap;
268
+ src: url('./roboto/Roboto-BoldCondensedItalic.woff2') format('woff2');
235
269
  font-weight: 700;
236
270
  font-style: italic;
237
271
  }
@@ -1,18 +1,21 @@
1
+ /* fonts.css is NOT imported here: Tailwind v4 inlines imports and rebases
2
+ font url()s against the entry file, which breaks webpack resolution.
3
+ Consumers add '@foxeltech/angular-ui/fonts.css' to their styles array. */
4
+ @import 'tailwindcss';
5
+ @import './tokens.css';
6
+ @import './utilities.css';
1
7
  @import './theme.css';
2
- @import './components.css';
3
- @import './dialogs.css';
4
- @import './fonts.css';
8
+ @import './components.css' layer(components);
9
+ @import './dialogs.css' layer(components);
5
10
  @import './animations.css';
6
11
  @import '@danielmoncada/angular-datetime-picker/assets/style/picker.min.css';
7
- @tailwind base;
8
- @tailwind component;
9
- @tailwind utilities;
10
12
 
11
- html, body {
13
+ html,
14
+ body {
12
15
  font-family: 'Roboto';
13
16
  margin: 0;
14
17
  padding: 0;
15
18
  height: 100%;
16
19
  width: 100%;
17
20
  background: rgb(var(--bg-primary));
18
- }
21
+ }
@@ -0,0 +1,131 @@
1
+ /*
2
+ * Tailwind v4 CSS-first theme for @foxeltech/angular-ui.
3
+ * Replaces the old JS preset (tailwind.config.js / lodash.merge sharing).
4
+ *
5
+ * Colour tokens point at the runtime RGB-triplet variables from theme.css
6
+ * (dark default on :root, light via .light_theme) so theme switching keeps
7
+ * working; opacity modifiers like bg-critical/10 are handled by v4's
8
+ * color-mix() and need no <alpha-value> plumbing.
9
+ */
10
+ /* `inline` is load-bearing: without it the rgb(var(--x)) values are baked
11
+ into :root once, so .light_theme's runtime triplet overrides never reach
12
+ the utilities. inline makes every utility carry rgb(var(--x)) itself and
13
+ resolve at the element that uses it — same behavior as v3. */
14
+ @theme inline {
15
+ /* Colours (names match the v3 preset so every existing class keeps working) */
16
+ --color-gradient-primary-start: rgb(var(--gradient-primary-start));
17
+ --color-gradient-primary-end: rgb(var(--gradient-primary-end));
18
+ --color-gradient-success-start: rgb(var(--gradient-success-start));
19
+ --color-gradient-success-end: rgb(var(--gradient-success-end));
20
+ --color-primary: rgb(var(--primary));
21
+ --color-success: rgb(var(--success));
22
+ --color-danger: rgb(var(--danger));
23
+ --color-warning: rgb(var(--warning));
24
+ --color-critical: rgb(var(--critical));
25
+ --color-discovery: rgb(var(--discovery));
26
+ --color-information: rgb(var(--information));
27
+ --color-bg-primary: rgb(var(--bg-primary));
28
+ --color-bg-canvas: rgb(var(--bg-canvas));
29
+ --color-bg-hover: rgb(var(--bg-primary-hover));
30
+ --color-bg-error: rgb(var(--bg-error-bold));
31
+ --color-bg-hover2: rgb(var(--bg-secondary-hover));
32
+ --color-text-primary: rgb(var(--text-primary));
33
+ --color-text-secondary: rgb(var(--text-secondary));
34
+ --color-text-placeholder: rgb(var(--text-placeholder));
35
+ --color-text-selected: rgb(var(--text-selected-primary));
36
+ --color-text-focus: rgb(var(--text-focus));
37
+ --color-text-inverse: rgb(var(--text-inverse));
38
+ --color-text-error: rgb(var(--text-error));
39
+ --color-text-link: rgb(var(--text-link-primary));
40
+ --color-border-default: rgb(var(--border-default));
41
+ --color-border-interactive: rgb(var(--border-interactive));
42
+ --color-border-selected: rgb(var(--border-selected));
43
+ --color-border-strong: rgb(var(--border-strong));
44
+ --color-border-hover2: rgb(var(--border-secondary-hover));
45
+ --color-button-default: rgb(var(--button-default));
46
+ --color-button-primary: rgb(var(--button-primary));
47
+
48
+ /* Breakpoints (v3 custom screens) */
49
+ --breakpoint-sm: 480px;
50
+ --breakpoint-md: 720px;
51
+ --breakpoint-lg: 1080px;
52
+ --breakpoint-xl: 1920px;
53
+
54
+ /* Shadows — same scale as the v3 preset, incl. the DEFAULT key so the bare
55
+ `shadow` utility keeps its v3 meaning (no shadow→shadow-sm rename sweep). */
56
+ --shadow-sm: 0 1px 2px 0 rgb(var(--shadow-color) / 0.05);
57
+ --shadow: 0 1px 3px 0 rgb(var(--shadow-color) / 0.1), 0 1px 2px -1px rgb(var(--shadow-color) / 0.1);
58
+ --shadow-md: 0 4px 6px -1px rgb(var(--shadow-color) / 0.1), 0 2px 4px -2px rgb(var(--shadow-color) / 0.1);
59
+ --shadow-lg: 0 10px 15px -3px rgb(var(--shadow-color) / 0.1), 0 4px 6px -4px rgb(var(--shadow-color) / 0.1);
60
+ --shadow-xl: 0 20px 25px -5px rgb(var(--shadow-color) / 0.1), 0 10px 10px -5px rgb(var(--shadow-color) / 0.1);
61
+ --shadow-2xl: 0 25px 50px -12px rgb(var(--shadow-color) / 0.25);
62
+ --inset-shadow-sm: inset 0 2px 4px 0 rgb(var(--shadow-color) / 0.05);
63
+
64
+ /* v3 default border radii, incl. DEFAULT so bare `rounded` keeps working */
65
+ --radius-sm: 0.125rem;
66
+ --radius: 0.25rem;
67
+ --radius-md: 0.375rem;
68
+ --radius-lg: 0.5rem;
69
+ --radius-xl: 0.75rem;
70
+ --radius-2xl: 1rem;
71
+ --radius-3xl: 1.5rem;
72
+
73
+ /* Named spacing scale (gap-small, p-semi, mb-large, …) */
74
+ --spacing-xs: 0.125rem;
75
+ --spacing-small: 0.25rem;
76
+ --spacing-normal: 0.5rem;
77
+ --spacing-semi: 0.75rem;
78
+ --spacing-large: 1rem;
79
+ --spacing-xl: 1.25rem;
80
+ --spacing-2xl: 1.5rem;
81
+
82
+ /* Font families */
83
+ --font-spmono: 'SpaceMonoRegular', monospace;
84
+ --font-dmsans: 'DMSans', sans-serif;
85
+ --font-orbitron: 'Orbitron', sans-serif;
86
+ --font-bevn: 'BeVietnamPro', sans-serif;
87
+ --font-roboto: 'Roboto', sans-serif;
88
+
89
+ /* Font-size overrides (v3 preset values) */
90
+ --text-xs: 0.75rem;
91
+ --text-sm: 0.875rem;
92
+ --text-base: 1rem;
93
+ --text-xl: 1.25rem;
94
+ --text-2xl: 1.625rem;
95
+ --text-3xl: 2rem;
96
+ --text-4xl: 2.25rem;
97
+ --text-5xl: 3rem;
98
+ }
99
+
100
+ /* v3 backgroundImage entries — v4 has no background-image theme namespace */
101
+ @utility bg-gradient-primary {
102
+ background-image: linear-gradient(
103
+ 135deg,
104
+ rgb(var(--gradient-primary-start)) 0%,
105
+ rgb(var(--gradient-primary-end)) 100%
106
+ );
107
+ }
108
+ @utility bg-gradient-success {
109
+ background-image: linear-gradient(
110
+ 135deg,
111
+ rgb(var(--gradient-success-start)) 0%,
112
+ rgb(var(--gradient-success-end)) 100%
113
+ );
114
+ }
115
+
116
+ /* v3 behavior compat (per the official upgrade guide) */
117
+ @layer base {
118
+ /* v4 defaults borders to currentColor; restore the theme default */
119
+ *,
120
+ ::after,
121
+ ::before,
122
+ ::backdrop,
123
+ ::file-selector-button {
124
+ border-color: rgb(var(--border-default));
125
+ }
126
+ /* v4 preflight switched buttons to cursor: default */
127
+ button:not(:disabled),
128
+ [role='button']:not(:disabled) {
129
+ cursor: pointer;
130
+ }
131
+ }
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Shared composable utilities (v4 @utility) — kept OUT of components.css
3
+ * because that file is imported inside layer(components) and @utility must
4
+ * be top-level/unlayered. Usable both in markup and via @apply.
5
+ */
6
+ @utility txt-tag-common {
7
+ @apply font-semibold text-xs;
8
+ }
9
+
10
+ @utility btn-common {
11
+ @apply flex text-sm h-10 font-semibold px-xl py-normal items-center justify-center rounded-lg shadow-sm transition-all duration-200 disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed;
12
+ }
13
+
14
+ @utility btn-menu-common {
15
+ @apply flex flex-row items-center px-semi;
16
+ }
17
+
18
+ @utility card-common {
19
+ @apply text-left px-xl py-large border border-border-default rounded-lg shadow-sm transition-colors duration-500 ease-in-out;
20
+ }
21
+
22
+ @utility tag-common {
23
+ @apply flex min-w-7 px-[10px] py-[2px] leading-5 hover:opacity-70 items-center justify-center;
24
+ }