ux4g-components-angular 1.0.0 → 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.
Files changed (257) hide show
  1. package/README.md +87 -0
  2. package/dist/accessibility-bar/README.md +87 -0
  3. package/dist/accessibility-bar/fesm2022/ux4g-components-angular-accessibility-bar.mjs +1 -0
  4. package/dist/accessibility-bar/fesm2022/ux4g-components-angular-accessibility-bar.mjs.map +1 -1
  5. package/dist/accessibility-bar/public-api.d.ts +1 -0
  6. package/dist/accessibility-bar/public-api.d.ts.map +1 -1
  7. package/dist/accordion/README.md +87 -0
  8. package/dist/accordion/fesm2022/ux4g-components-angular-accordion.mjs +1 -0
  9. package/dist/accordion/fesm2022/ux4g-components-angular-accordion.mjs.map +1 -1
  10. package/dist/accordion/public-api.d.ts +1 -0
  11. package/dist/accordion/public-api.d.ts.map +1 -1
  12. package/dist/alert/README.md +87 -0
  13. package/dist/alert/fesm2022/ux4g-components-angular-alert.mjs +1 -0
  14. package/dist/alert/fesm2022/ux4g-components-angular-alert.mjs.map +1 -1
  15. package/dist/alert/public-api.d.ts +1 -0
  16. package/dist/alert/public-api.d.ts.map +1 -1
  17. package/dist/avatar/README.md +87 -0
  18. package/dist/avatar/fesm2022/ux4g-components-angular-avatar.mjs +1 -0
  19. package/dist/avatar/fesm2022/ux4g-components-angular-avatar.mjs.map +1 -1
  20. package/dist/avatar/public-api.d.ts +1 -0
  21. package/dist/avatar/public-api.d.ts.map +1 -1
  22. package/dist/badge/README.md +87 -0
  23. package/dist/badge/fesm2022/ux4g-components-angular-badge.mjs +1 -0
  24. package/dist/badge/fesm2022/ux4g-components-angular-badge.mjs.map +1 -1
  25. package/dist/badge/public-api.d.ts +1 -0
  26. package/dist/badge/public-api.d.ts.map +1 -1
  27. package/dist/breadcrumb/README.md +87 -0
  28. package/dist/breadcrumb/fesm2022/ux4g-components-angular-breadcrumb.mjs +1 -0
  29. package/dist/breadcrumb/fesm2022/ux4g-components-angular-breadcrumb.mjs.map +1 -1
  30. package/dist/breadcrumb/public-api.d.ts +1 -0
  31. package/dist/breadcrumb/public-api.d.ts.map +1 -1
  32. package/dist/button/README.md +87 -0
  33. package/dist/button/fesm2022/ux4g-components-angular-button.mjs +1 -0
  34. package/dist/button/fesm2022/ux4g-components-angular-button.mjs.map +1 -1
  35. package/dist/button/public-api.d.ts +1 -0
  36. package/dist/button/public-api.d.ts.map +1 -1
  37. package/dist/card/README.md +87 -0
  38. package/dist/card/fesm2022/ux4g-components-angular-card.mjs +1 -0
  39. package/dist/card/fesm2022/ux4g-components-angular-card.mjs.map +1 -1
  40. package/dist/card/public-api.d.ts +1 -0
  41. package/dist/card/public-api.d.ts.map +1 -1
  42. package/dist/carousel/README.md +87 -0
  43. package/dist/carousel/fesm2022/ux4g-components-angular-carousel.mjs +1 -0
  44. package/dist/carousel/fesm2022/ux4g-components-angular-carousel.mjs.map +1 -1
  45. package/dist/carousel/public-api.d.ts +1 -0
  46. package/dist/carousel/public-api.d.ts.map +1 -1
  47. package/dist/checkbox/README.md +87 -0
  48. package/dist/checkbox/fesm2022/ux4g-components-angular-checkbox.mjs +1 -0
  49. package/dist/checkbox/fesm2022/ux4g-components-angular-checkbox.mjs.map +1 -1
  50. package/dist/checkbox/public-api.d.ts +1 -0
  51. package/dist/checkbox/public-api.d.ts.map +1 -1
  52. package/dist/chip/README.md +87 -0
  53. package/dist/chip/fesm2022/ux4g-components-angular-chip.mjs +1 -0
  54. package/dist/chip/fesm2022/ux4g-components-angular-chip.mjs.map +1 -1
  55. package/dist/chip/public-api.d.ts +1 -0
  56. package/dist/chip/public-api.d.ts.map +1 -1
  57. package/dist/chip-group/README.md +87 -0
  58. package/dist/chip-group/fesm2022/ux4g-components-angular-chip-group.mjs +1 -0
  59. package/dist/chip-group/fesm2022/ux4g-components-angular-chip-group.mjs.map +1 -1
  60. package/dist/chip-group/public-api.d.ts +1 -0
  61. package/dist/chip-group/public-api.d.ts.map +1 -1
  62. package/dist/combobox/README.md +87 -0
  63. package/dist/combobox/fesm2022/ux4g-components-angular-combobox.mjs +1 -0
  64. package/dist/combobox/fesm2022/ux4g-components-angular-combobox.mjs.map +1 -1
  65. package/dist/combobox/public-api.d.ts +1 -0
  66. package/dist/combobox/public-api.d.ts.map +1 -1
  67. package/dist/date-time-picker/README.md +87 -0
  68. package/dist/date-time-picker/fesm2022/ux4g-components-angular-date-time-picker.mjs +1 -0
  69. package/dist/date-time-picker/fesm2022/ux4g-components-angular-date-time-picker.mjs.map +1 -1
  70. package/dist/date-time-picker/public-api.d.ts +1 -0
  71. package/dist/date-time-picker/public-api.d.ts.map +1 -1
  72. package/dist/divider/README.md +87 -0
  73. package/dist/divider/fesm2022/ux4g-components-angular-divider.mjs +1 -0
  74. package/dist/divider/fesm2022/ux4g-components-angular-divider.mjs.map +1 -1
  75. package/dist/divider/public-api.d.ts +1 -0
  76. package/dist/divider/public-api.d.ts.map +1 -1
  77. package/dist/draft-status-banner/README.md +87 -0
  78. package/dist/draft-status-banner/fesm2022/ux4g-components-angular-draft-status-banner.mjs +1 -0
  79. package/dist/draft-status-banner/fesm2022/ux4g-components-angular-draft-status-banner.mjs.map +1 -1
  80. package/dist/draft-status-banner/public-api.d.ts +1 -0
  81. package/dist/draft-status-banner/public-api.d.ts.map +1 -1
  82. package/dist/drawer/README.md +87 -0
  83. package/dist/drawer/fesm2022/ux4g-components-angular-drawer.mjs +1 -0
  84. package/dist/drawer/fesm2022/ux4g-components-angular-drawer.mjs.map +1 -1
  85. package/dist/drawer/public-api.d.ts +1 -0
  86. package/dist/drawer/public-api.d.ts.map +1 -1
  87. package/dist/dropdown/README.md +87 -0
  88. package/dist/dropdown/fesm2022/ux4g-components-angular-dropdown.mjs +1 -0
  89. package/dist/dropdown/fesm2022/ux4g-components-angular-dropdown.mjs.map +1 -1
  90. package/dist/dropdown/public-api.d.ts +1 -0
  91. package/dist/dropdown/public-api.d.ts.map +1 -1
  92. package/dist/empty-state/README.md +87 -0
  93. package/dist/empty-state/fesm2022/ux4g-components-angular-empty-state.mjs +1 -0
  94. package/dist/empty-state/fesm2022/ux4g-components-angular-empty-state.mjs.map +1 -1
  95. package/dist/empty-state/public-api.d.ts +1 -0
  96. package/dist/empty-state/public-api.d.ts.map +1 -1
  97. package/dist/feedback/README.md +87 -0
  98. package/dist/feedback/fesm2022/ux4g-components-angular-feedback.mjs +1 -0
  99. package/dist/feedback/fesm2022/ux4g-components-angular-feedback.mjs.map +1 -1
  100. package/dist/feedback/public-api.d.ts +1 -0
  101. package/dist/feedback/public-api.d.ts.map +1 -1
  102. package/dist/footer/README.md +87 -0
  103. package/dist/footer/fesm2022/ux4g-components-angular-footer.mjs +1 -0
  104. package/dist/footer/fesm2022/ux4g-components-angular-footer.mjs.map +1 -1
  105. package/dist/footer/public-api.d.ts +1 -0
  106. package/dist/footer/public-api.d.ts.map +1 -1
  107. package/dist/form-field-group/README.md +87 -0
  108. package/dist/form-field-group/fesm2022/ux4g-components-angular-form-field-group.mjs +1 -0
  109. package/dist/form-field-group/fesm2022/ux4g-components-angular-form-field-group.mjs.map +1 -1
  110. package/dist/form-field-group/public-api.d.ts +1 -0
  111. package/dist/form-field-group/public-api.d.ts.map +1 -1
  112. package/dist/icon-button/README.md +87 -0
  113. package/dist/icon-button/fesm2022/ux4g-components-angular-icon-button.mjs +1 -0
  114. package/dist/icon-button/fesm2022/ux4g-components-angular-icon-button.mjs.map +1 -1
  115. package/dist/icon-button/public-api.d.ts +1 -0
  116. package/dist/icon-button/public-api.d.ts.map +1 -1
  117. package/dist/image/README.md +87 -0
  118. package/dist/image/fesm2022/ux4g-components-angular-image.mjs +1 -0
  119. package/dist/image/fesm2022/ux4g-components-angular-image.mjs.map +1 -1
  120. package/dist/image/public-api.d.ts +1 -0
  121. package/dist/image/public-api.d.ts.map +1 -1
  122. package/dist/input/README.md +87 -0
  123. package/dist/input/fesm2022/ux4g-components-angular-input.mjs +1 -0
  124. package/dist/input/fesm2022/ux4g-components-angular-input.mjs.map +1 -1
  125. package/dist/input/public-api.d.ts +1 -0
  126. package/dist/input/public-api.d.ts.map +1 -1
  127. package/dist/journey-timeline/README.md +87 -0
  128. package/dist/journey-timeline/fesm2022/ux4g-components-angular-journey-timeline.mjs +1 -0
  129. package/dist/journey-timeline/fesm2022/ux4g-components-angular-journey-timeline.mjs.map +1 -1
  130. package/dist/journey-timeline/public-api.d.ts +1 -0
  131. package/dist/journey-timeline/public-api.d.ts.map +1 -1
  132. package/dist/link/README.md +87 -0
  133. package/dist/link/fesm2022/ux4g-components-angular-link.mjs +1 -0
  134. package/dist/link/fesm2022/ux4g-components-angular-link.mjs.map +1 -1
  135. package/dist/link/public-api.d.ts +1 -0
  136. package/dist/link/public-api.d.ts.map +1 -1
  137. package/dist/list/README.md +87 -0
  138. package/dist/list/fesm2022/ux4g-components-angular-list.mjs +1 -0
  139. package/dist/list/fesm2022/ux4g-components-angular-list.mjs.map +1 -1
  140. package/dist/list/public-api.d.ts +1 -0
  141. package/dist/list/public-api.d.ts.map +1 -1
  142. package/dist/modal/README.md +87 -0
  143. package/dist/modal/fesm2022/ux4g-components-angular-modal.mjs +1 -0
  144. package/dist/modal/fesm2022/ux4g-components-angular-modal.mjs.map +1 -1
  145. package/dist/modal/public-api.d.ts +1 -0
  146. package/dist/modal/public-api.d.ts.map +1 -1
  147. package/dist/navbar/README.md +87 -0
  148. package/dist/navbar/fesm2022/ux4g-components-angular-navbar.mjs +1 -0
  149. package/dist/navbar/fesm2022/ux4g-components-angular-navbar.mjs.map +1 -1
  150. package/dist/navbar/public-api.d.ts +1 -0
  151. package/dist/navbar/public-api.d.ts.map +1 -1
  152. package/dist/otp-input/README.md +87 -0
  153. package/dist/otp-input/fesm2022/ux4g-components-angular-otp-input.mjs +1 -0
  154. package/dist/otp-input/fesm2022/ux4g-components-angular-otp-input.mjs.map +1 -1
  155. package/dist/otp-input/public-api.d.ts +1 -0
  156. package/dist/otp-input/public-api.d.ts.map +1 -1
  157. package/dist/pagination/README.md +87 -0
  158. package/dist/pagination/fesm2022/ux4g-components-angular-pagination.mjs +1 -0
  159. package/dist/pagination/fesm2022/ux4g-components-angular-pagination.mjs.map +1 -1
  160. package/dist/pagination/public-api.d.ts +1 -0
  161. package/dist/pagination/public-api.d.ts.map +1 -1
  162. package/dist/popover/README.md +87 -0
  163. package/dist/popover/fesm2022/ux4g-components-angular-popover.mjs +1 -0
  164. package/dist/popover/fesm2022/ux4g-components-angular-popover.mjs.map +1 -1
  165. package/dist/popover/public-api.d.ts +1 -0
  166. package/dist/popover/public-api.d.ts.map +1 -1
  167. package/dist/progress-indicator/README.md +87 -0
  168. package/dist/progress-indicator/fesm2022/ux4g-components-angular-progress-indicator.mjs +1 -0
  169. package/dist/progress-indicator/fesm2022/ux4g-components-angular-progress-indicator.mjs.map +1 -1
  170. package/dist/progress-indicator/public-api.d.ts +1 -0
  171. package/dist/progress-indicator/public-api.d.ts.map +1 -1
  172. package/dist/radio/README.md +87 -0
  173. package/dist/radio/fesm2022/ux4g-components-angular-radio.mjs +1 -0
  174. package/dist/radio/fesm2022/ux4g-components-angular-radio.mjs.map +1 -1
  175. package/dist/radio/public-api.d.ts +1 -0
  176. package/dist/radio/public-api.d.ts.map +1 -1
  177. package/dist/result-list-row/README.md +87 -0
  178. package/dist/result-list-row/fesm2022/ux4g-components-angular-result-list-row.mjs +1 -0
  179. package/dist/result-list-row/fesm2022/ux4g-components-angular-result-list-row.mjs.map +1 -1
  180. package/dist/result-list-row/public-api.d.ts +1 -0
  181. package/dist/result-list-row/public-api.d.ts.map +1 -1
  182. package/dist/search/README.md +87 -0
  183. package/dist/search/fesm2022/ux4g-components-angular-search.mjs +1 -0
  184. package/dist/search/fesm2022/ux4g-components-angular-search.mjs.map +1 -1
  185. package/dist/search/public-api.d.ts +1 -0
  186. package/dist/search/public-api.d.ts.map +1 -1
  187. package/dist/sla-progress-indicator/README.md +87 -0
  188. package/dist/sla-progress-indicator/fesm2022/ux4g-components-angular-sla-progress-indicator.mjs +1 -0
  189. package/dist/sla-progress-indicator/fesm2022/ux4g-components-angular-sla-progress-indicator.mjs.map +1 -1
  190. package/dist/sla-progress-indicator/public-api.d.ts +1 -0
  191. package/dist/sla-progress-indicator/public-api.d.ts.map +1 -1
  192. package/dist/slider/README.md +87 -0
  193. package/dist/slider/fesm2022/ux4g-components-angular-slider.mjs +1 -0
  194. package/dist/slider/fesm2022/ux4g-components-angular-slider.mjs.map +1 -1
  195. package/dist/slider/public-api.d.ts +1 -0
  196. package/dist/slider/public-api.d.ts.map +1 -1
  197. package/dist/slot-grid/README.md +87 -0
  198. package/dist/slot-grid/fesm2022/ux4g-components-angular-slot-grid.mjs +1 -0
  199. package/dist/slot-grid/fesm2022/ux4g-components-angular-slot-grid.mjs.map +1 -1
  200. package/dist/slot-grid/public-api.d.ts +1 -0
  201. package/dist/slot-grid/public-api.d.ts.map +1 -1
  202. package/dist/social-links/README.md +87 -0
  203. package/dist/social-links/fesm2022/ux4g-components-angular-social-links.mjs +1 -0
  204. package/dist/social-links/fesm2022/ux4g-components-angular-social-links.mjs.map +1 -1
  205. package/dist/social-links/public-api.d.ts +1 -0
  206. package/dist/social-links/public-api.d.ts.map +1 -1
  207. package/dist/spinner/README.md +87 -0
  208. package/dist/spinner/fesm2022/ux4g-components-angular-spinner.mjs +1 -0
  209. package/dist/spinner/fesm2022/ux4g-components-angular-spinner.mjs.map +1 -1
  210. package/dist/spinner/public-api.d.ts +1 -0
  211. package/dist/spinner/public-api.d.ts.map +1 -1
  212. package/dist/status-pipeline/README.md +87 -0
  213. package/dist/status-pipeline/fesm2022/ux4g-components-angular-status-pipeline.mjs +1 -0
  214. package/dist/status-pipeline/fesm2022/ux4g-components-angular-status-pipeline.mjs.map +1 -1
  215. package/dist/status-pipeline/public-api.d.ts +1 -0
  216. package/dist/status-pipeline/public-api.d.ts.map +1 -1
  217. package/dist/stepper/README.md +87 -0
  218. package/dist/stepper/fesm2022/ux4g-components-angular-stepper.mjs +1 -0
  219. package/dist/stepper/fesm2022/ux4g-components-angular-stepper.mjs.map +1 -1
  220. package/dist/stepper/public-api.d.ts +1 -0
  221. package/dist/stepper/public-api.d.ts.map +1 -1
  222. package/dist/switch/README.md +87 -0
  223. package/dist/switch/fesm2022/ux4g-components-angular-switch.mjs +1 -0
  224. package/dist/switch/fesm2022/ux4g-components-angular-switch.mjs.map +1 -1
  225. package/dist/switch/public-api.d.ts +1 -0
  226. package/dist/switch/public-api.d.ts.map +1 -1
  227. package/dist/tab/README.md +87 -0
  228. package/dist/tab/fesm2022/ux4g-components-angular-tab.mjs +1 -0
  229. package/dist/tab/fesm2022/ux4g-components-angular-tab.mjs.map +1 -1
  230. package/dist/tab/public-api.d.ts +1 -0
  231. package/dist/tab/public-api.d.ts.map +1 -1
  232. package/dist/table/README.md +87 -0
  233. package/dist/table/fesm2022/ux4g-components-angular-table.mjs +1 -0
  234. package/dist/table/fesm2022/ux4g-components-angular-table.mjs.map +1 -1
  235. package/dist/table/public-api.d.ts +1 -0
  236. package/dist/table/public-api.d.ts.map +1 -1
  237. package/dist/tag/README.md +87 -0
  238. package/dist/tag/fesm2022/ux4g-components-angular-tag.mjs +1 -0
  239. package/dist/tag/fesm2022/ux4g-components-angular-tag.mjs.map +1 -1
  240. package/dist/tag/public-api.d.ts +1 -0
  241. package/dist/tag/public-api.d.ts.map +1 -1
  242. package/dist/tooltip/README.md +87 -0
  243. package/dist/tooltip/fesm2022/ux4g-components-angular-tooltip.mjs +1 -0
  244. package/dist/tooltip/fesm2022/ux4g-components-angular-tooltip.mjs.map +1 -1
  245. package/dist/tooltip/public-api.d.ts +1 -0
  246. package/dist/tooltip/public-api.d.ts.map +1 -1
  247. package/package.json +2 -2
  248. package/dist/file-upload/fesm2022/ux4g-components-angular-file-upload.mjs +0 -45
  249. package/dist/file-upload/fesm2022/ux4g-components-angular-file-upload.mjs.map +0 -1
  250. package/dist/file-upload/index.d.ts +0 -6
  251. package/dist/file-upload/public-api.d.ts +0 -4
  252. package/dist/file-upload/public-api.d.ts.map +0 -1
  253. package/dist/file-upload/ux4g-components-angular-file-upload.d.ts.map +0 -1
  254. package/dist/file-upload/ux4g-file-upload.component.d.ts +0 -9
  255. package/dist/file-upload/ux4g-file-upload.component.d.ts.map +0 -1
  256. package/dist/file-upload/ux4g-file-upload.module.d.ts +0 -9
  257. package/dist/file-upload/ux4g-file-upload.module.d.ts.map +0 -1
package/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # ux4g-components-angular
2
+
3
+ Angular wrapper components for the UX4G Design System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install ux4g-components-angular ux4g-components-web
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Add the CSS bundle to your `angular.json` styles array:
14
+
15
+ ```json
16
+ {
17
+ "styles": [
18
+ "node_modules/ux4g-components-web/styles/ux4g.css",
19
+ "src/styles.css"
20
+ ]
21
+ }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ```ts
27
+ // app.module.ts
28
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
29
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
30
+
31
+ @NgModule({
32
+ imports: [UX4GButtonModule, UX4GSpinnerModule],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ ```html
38
+ <!-- app.component.html -->
39
+ <ux4g-button variant="primary" size="md" (buttonClick)="onSave()">
40
+ Save
41
+ </ux4g-button>
42
+
43
+ <ux4g-spinner variant="primary" size="md" type="full"></ux4g-spinner>
44
+ ```
45
+
46
+ ## Available Components (50)
47
+
48
+ Each component is available as a sub-path import:
49
+
50
+ ```ts
51
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
52
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
53
+ import { UX4GBadgeModule } from 'ux4g-components-angular/badge';
54
+ import { UX4GCardModule } from 'ux4g-components-angular/card';
55
+ // ... and 46 more
56
+ ```
57
+
58
+ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadcrumb`, `button`, `card`, `carousel`, `checkbox`, `chip`, `chip-group`, `combobox`, `date-time-picker`, `divider`, `draft-status-banner`, `drawer`, `dropdown`, `empty-state`, `feedback`, `file-upload`, `footer`, `form-field-group`, `icon-button`, `image`, `input`, `journey-timeline`, `link`, `list`, `modal`, `navbar`, `otp-input`, `pagination`, `popover`, `progress-indicator`, `radio`, `result-list-row`, `search`, `sla-progress-indicator`, `slider`, `slot-grid`, `social-links`, `spinner`, `status-pipeline`, `stepper`, `switch`, `tab`, `table`, `tag`, `tooltip`
59
+
60
+ ## Architecture
61
+
62
+ This package follows a CSS-first architecture:
63
+
64
+ - **CSS is the source of truth** — all visual decisions live in CSS
65
+ - **Wrappers are thin** — they map typed inputs to CSS class strings via `buildXxxClasses()` functions
66
+ - **No inline styles, no CSS-in-JS** — only `[class]` bindings
67
+ - **No local `types.ts` copies** — all Class_Builder functions are imported from `ux4g-components-web/types`
68
+
69
+ ## Compatibility
70
+
71
+ - Angular >= 15.0.0
72
+ - Built with Ivy partial compilation (compatible with Angular 15–19+)
73
+ - `typesVersions` included for `moduleResolution: node` compatibility
74
+
75
+ ## Peer Dependencies
76
+
77
+ - `@angular/core >= 15.0.0`
78
+ - `@angular/common >= 15.0.0`
79
+
80
+ ## Related Packages
81
+
82
+ - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
83
+ - [`ux4g-components-react`](https://www.npmjs.com/package/ux4g-components-react) — React wrapper components
84
+
85
+ ## License
86
+
87
+ MIT
@@ -0,0 +1,87 @@
1
+ # ux4g-components-angular
2
+
3
+ Angular wrapper components for the UX4G Design System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install ux4g-components-angular ux4g-components-web
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Add the CSS bundle to your `angular.json` styles array:
14
+
15
+ ```json
16
+ {
17
+ "styles": [
18
+ "node_modules/ux4g-components-web/styles/ux4g.css",
19
+ "src/styles.css"
20
+ ]
21
+ }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ```ts
27
+ // app.module.ts
28
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
29
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
30
+
31
+ @NgModule({
32
+ imports: [UX4GButtonModule, UX4GSpinnerModule],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ ```html
38
+ <!-- app.component.html -->
39
+ <ux4g-button variant="primary" size="md" (buttonClick)="onSave()">
40
+ Save
41
+ </ux4g-button>
42
+
43
+ <ux4g-spinner variant="primary" size="md" type="full"></ux4g-spinner>
44
+ ```
45
+
46
+ ## Available Components (50)
47
+
48
+ Each component is available as a sub-path import:
49
+
50
+ ```ts
51
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
52
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
53
+ import { UX4GBadgeModule } from 'ux4g-components-angular/badge';
54
+ import { UX4GCardModule } from 'ux4g-components-angular/card';
55
+ // ... and 46 more
56
+ ```
57
+
58
+ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadcrumb`, `button`, `card`, `carousel`, `checkbox`, `chip`, `chip-group`, `combobox`, `date-time-picker`, `divider`, `draft-status-banner`, `drawer`, `dropdown`, `empty-state`, `feedback`, `file-upload`, `footer`, `form-field-group`, `icon-button`, `image`, `input`, `journey-timeline`, `link`, `list`, `modal`, `navbar`, `otp-input`, `pagination`, `popover`, `progress-indicator`, `radio`, `result-list-row`, `search`, `sla-progress-indicator`, `slider`, `slot-grid`, `social-links`, `spinner`, `status-pipeline`, `stepper`, `switch`, `tab`, `table`, `tag`, `tooltip`
59
+
60
+ ## Architecture
61
+
62
+ This package follows a CSS-first architecture:
63
+
64
+ - **CSS is the source of truth** — all visual decisions live in CSS
65
+ - **Wrappers are thin** — they map typed inputs to CSS class strings via `buildXxxClasses()` functions
66
+ - **No inline styles, no CSS-in-JS** — only `[class]` bindings
67
+ - **No local `types.ts` copies** — all Class_Builder functions are imported from `ux4g-components-web/types`
68
+
69
+ ## Compatibility
70
+
71
+ - Angular >= 15.0.0
72
+ - Built with Ivy partial compilation (compatible with Angular 15–19+)
73
+ - `typesVersions` included for `moduleResolution: node` compatibility
74
+
75
+ ## Peer Dependencies
76
+
77
+ - `@angular/core >= 15.0.0`
78
+ - `@angular/common >= 15.0.0`
79
+
80
+ ## Related Packages
81
+
82
+ - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
83
+ - [`ux4g-components-react`](https://www.npmjs.com/package/ux4g-components-react) — React wrapper components
84
+
85
+ ## License
86
+
87
+ MIT
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  import * as i0 from '@angular/core';
2
3
  import { ViewEncapsulation, Component, NgModule } from '@angular/core';
3
4
  import { CommonModule } from '@angular/common';
@@ -1 +1 @@
1
- {"version":3,"file":"ux4g-components-angular-accessibility-bar.mjs","sources":["../../../src/accessibility-bar/ux4g-accessibility-bar.component.ts","../../../src/accessibility-bar/ux4g-accessibility-bar.module.ts","../../../src/accessibility-bar/ux4g-components-angular-accessibility-bar.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ux4g-accessibility-bar',\r\n standalone: false,\r\n template: `<div [className]=\"accessibilityBarClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAccessibilityBarComponent {\r\n get accessibilityBarClasses(): string {\r\n return 'ux4g-topbar';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAccessibilityBarComponent } from './ux4g-accessibility-bar.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAccessibilityBarComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAccessibilityBarComponent],\r\n})\r\nexport class UX4GAccessibilityBarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAQa,6BAA6B,CAAA;AACxC,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,aAAa;IACtB;+GAHW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,mFAH9B,CAAA,0EAAA,CAA4E,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAG3E,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,0EAAA,CAA4E;oBACtF,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;;MCEY,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,CAJtB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAClC,YAAY,aACZ,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAE5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"ux4g-components-angular-accessibility-bar.mjs","sources":["../../../src/accessibility-bar/ux4g-accessibility-bar.component.ts","../../../src/accessibility-bar/ux4g-accessibility-bar.module.ts","../../../src/accessibility-bar/ux4g-components-angular-accessibility-bar.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ux4g-accessibility-bar',\r\n standalone: false,\r\n template: `<div [className]=\"accessibilityBarClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAccessibilityBarComponent {\r\n get accessibilityBarClasses(): string {\r\n return 'ux4g-topbar';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAccessibilityBarComponent } from './ux4g-accessibility-bar.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAccessibilityBarComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAccessibilityBarComponent],\r\n})\r\nexport class UX4GAccessibilityBarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAQa,6BAA6B,CAAA;AACxC,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,aAAa;IACtB;+GAHW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,mFAH9B,CAAA,0EAAA,CAA4E,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAG3E,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,0EAAA,CAA4E;oBACtF,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;;MCEY,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,CAJtB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAClC,YAAY,aACZ,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAE5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA;;;ACRD;;AAEG;;;;"}
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  export { UX4GAccessibilityBarComponent } from './ux4g-accessibility-bar.component';
2
3
  export { UX4GAccessibilityBarModule } from './ux4g-accessibility-bar.module';
3
4
  //# sourceMappingURL=public-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/accessibility-bar/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/accessibility-bar/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,87 @@
1
+ # ux4g-components-angular
2
+
3
+ Angular wrapper components for the UX4G Design System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install ux4g-components-angular ux4g-components-web
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Add the CSS bundle to your `angular.json` styles array:
14
+
15
+ ```json
16
+ {
17
+ "styles": [
18
+ "node_modules/ux4g-components-web/styles/ux4g.css",
19
+ "src/styles.css"
20
+ ]
21
+ }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ```ts
27
+ // app.module.ts
28
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
29
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
30
+
31
+ @NgModule({
32
+ imports: [UX4GButtonModule, UX4GSpinnerModule],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ ```html
38
+ <!-- app.component.html -->
39
+ <ux4g-button variant="primary" size="md" (buttonClick)="onSave()">
40
+ Save
41
+ </ux4g-button>
42
+
43
+ <ux4g-spinner variant="primary" size="md" type="full"></ux4g-spinner>
44
+ ```
45
+
46
+ ## Available Components (50)
47
+
48
+ Each component is available as a sub-path import:
49
+
50
+ ```ts
51
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
52
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
53
+ import { UX4GBadgeModule } from 'ux4g-components-angular/badge';
54
+ import { UX4GCardModule } from 'ux4g-components-angular/card';
55
+ // ... and 46 more
56
+ ```
57
+
58
+ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadcrumb`, `button`, `card`, `carousel`, `checkbox`, `chip`, `chip-group`, `combobox`, `date-time-picker`, `divider`, `draft-status-banner`, `drawer`, `dropdown`, `empty-state`, `feedback`, `file-upload`, `footer`, `form-field-group`, `icon-button`, `image`, `input`, `journey-timeline`, `link`, `list`, `modal`, `navbar`, `otp-input`, `pagination`, `popover`, `progress-indicator`, `radio`, `result-list-row`, `search`, `sla-progress-indicator`, `slider`, `slot-grid`, `social-links`, `spinner`, `status-pipeline`, `stepper`, `switch`, `tab`, `table`, `tag`, `tooltip`
59
+
60
+ ## Architecture
61
+
62
+ This package follows a CSS-first architecture:
63
+
64
+ - **CSS is the source of truth** — all visual decisions live in CSS
65
+ - **Wrappers are thin** — they map typed inputs to CSS class strings via `buildXxxClasses()` functions
66
+ - **No inline styles, no CSS-in-JS** — only `[class]` bindings
67
+ - **No local `types.ts` copies** — all Class_Builder functions are imported from `ux4g-components-web/types`
68
+
69
+ ## Compatibility
70
+
71
+ - Angular >= 15.0.0
72
+ - Built with Ivy partial compilation (compatible with Angular 15–19+)
73
+ - `typesVersions` included for `moduleResolution: node` compatibility
74
+
75
+ ## Peer Dependencies
76
+
77
+ - `@angular/core >= 15.0.0`
78
+ - `@angular/common >= 15.0.0`
79
+
80
+ ## Related Packages
81
+
82
+ - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
83
+ - [`ux4g-components-react`](https://www.npmjs.com/package/ux4g-components-react) — React wrapper components
84
+
85
+ ## License
86
+
87
+ MIT
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  import * as i0 from '@angular/core';
2
3
  import { Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
4
  import { buildAccordionClasses } from 'ux4g-components-web/types';
@@ -1 +1 @@
1
- {"version":3,"file":"ux4g-components-angular-accordion.mjs","sources":["../../../src/accordion/ux4g-accordion.component.ts","../../../src/accordion/ux4g-accordion.module.ts","../../../src/accordion/ux4g-components-angular-accordion.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AccordionArrowPosition, AccordionVariant, buildAccordionClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-accordion',\r\n standalone: false,\r\n template: `<div [className]=\"accordionClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAccordionComponent {\r\n @Input() arrowPosition: AccordionArrowPosition = 'right';\r\n @Input() variant: AccordionVariant = 'default';\r\n\r\n get accordionClasses(): string {\r\n return buildAccordionClasses(this.arrowPosition, this.variant);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAccordionComponent } from './ux4g-accordion.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAccordionComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAccordionComponent],\r\n})\r\nexport class UX4GAccordionModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MASa,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,aAAa,GAA2B,OAAO;QAC/C,IAAA,CAAA,OAAO,GAAqB,SAAS;AAK/C,IAAA;AAHC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;IAChE;+GANW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,2IAHvB,CAAA,mEAAA,CAAqE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGpE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,mEAAA,CAAqE;oBAC/E,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MCFU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"ux4g-components-angular-accordion.mjs","sources":["../../../src/accordion/ux4g-accordion.component.ts","../../../src/accordion/ux4g-accordion.module.ts","../../../src/accordion/ux4g-components-angular-accordion.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AccordionArrowPosition, AccordionVariant, buildAccordionClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-accordion',\r\n standalone: false,\r\n template: `<div [className]=\"accordionClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAccordionComponent {\r\n @Input() arrowPosition: AccordionArrowPosition = 'right';\r\n @Input() variant: AccordionVariant = 'default';\r\n\r\n get accordionClasses(): string {\r\n return buildAccordionClasses(this.arrowPosition, this.variant);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAccordionComponent } from './ux4g-accordion.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAccordionComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAccordionComponent],\r\n})\r\nexport class UX4GAccordionModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MASa,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,aAAa,GAA2B,OAAO;QAC/C,IAAA,CAAA,OAAO,GAAqB,SAAS;AAK/C,IAAA;AAHC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;IAChE;+GANW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,2IAHvB,CAAA,mEAAA,CAAqE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGpE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,mEAAA,CAAqE;oBAC/E,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MCFU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACRD;;AAEG;;;;"}
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  export { UX4GAccordionComponent } from './ux4g-accordion.component';
2
3
  export { UX4GAccordionModule } from './ux4g-accordion.module';
3
4
  export { AccordionArrowPosition, AccordionVariant, buildAccordionClasses } from 'ux4g-components-web/types';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/accordion/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/accordion/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,87 @@
1
+ # ux4g-components-angular
2
+
3
+ Angular wrapper components for the UX4G Design System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install ux4g-components-angular ux4g-components-web
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Add the CSS bundle to your `angular.json` styles array:
14
+
15
+ ```json
16
+ {
17
+ "styles": [
18
+ "node_modules/ux4g-components-web/styles/ux4g.css",
19
+ "src/styles.css"
20
+ ]
21
+ }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ```ts
27
+ // app.module.ts
28
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
29
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
30
+
31
+ @NgModule({
32
+ imports: [UX4GButtonModule, UX4GSpinnerModule],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ ```html
38
+ <!-- app.component.html -->
39
+ <ux4g-button variant="primary" size="md" (buttonClick)="onSave()">
40
+ Save
41
+ </ux4g-button>
42
+
43
+ <ux4g-spinner variant="primary" size="md" type="full"></ux4g-spinner>
44
+ ```
45
+
46
+ ## Available Components (50)
47
+
48
+ Each component is available as a sub-path import:
49
+
50
+ ```ts
51
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
52
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
53
+ import { UX4GBadgeModule } from 'ux4g-components-angular/badge';
54
+ import { UX4GCardModule } from 'ux4g-components-angular/card';
55
+ // ... and 46 more
56
+ ```
57
+
58
+ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadcrumb`, `button`, `card`, `carousel`, `checkbox`, `chip`, `chip-group`, `combobox`, `date-time-picker`, `divider`, `draft-status-banner`, `drawer`, `dropdown`, `empty-state`, `feedback`, `file-upload`, `footer`, `form-field-group`, `icon-button`, `image`, `input`, `journey-timeline`, `link`, `list`, `modal`, `navbar`, `otp-input`, `pagination`, `popover`, `progress-indicator`, `radio`, `result-list-row`, `search`, `sla-progress-indicator`, `slider`, `slot-grid`, `social-links`, `spinner`, `status-pipeline`, `stepper`, `switch`, `tab`, `table`, `tag`, `tooltip`
59
+
60
+ ## Architecture
61
+
62
+ This package follows a CSS-first architecture:
63
+
64
+ - **CSS is the source of truth** — all visual decisions live in CSS
65
+ - **Wrappers are thin** — they map typed inputs to CSS class strings via `buildXxxClasses()` functions
66
+ - **No inline styles, no CSS-in-JS** — only `[class]` bindings
67
+ - **No local `types.ts` copies** — all Class_Builder functions are imported from `ux4g-components-web/types`
68
+
69
+ ## Compatibility
70
+
71
+ - Angular >= 15.0.0
72
+ - Built with Ivy partial compilation (compatible with Angular 15–19+)
73
+ - `typesVersions` included for `moduleResolution: node` compatibility
74
+
75
+ ## Peer Dependencies
76
+
77
+ - `@angular/core >= 15.0.0`
78
+ - `@angular/common >= 15.0.0`
79
+
80
+ ## Related Packages
81
+
82
+ - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
83
+ - [`ux4g-components-react`](https://www.npmjs.com/package/ux4g-components-react) — React wrapper components
84
+
85
+ ## License
86
+
87
+ MIT
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  import * as i0 from '@angular/core';
2
3
  import { Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
4
  import { buildContextAlertClasses, buildAlertClasses, buildAlertContainerClasses } from 'ux4g-components-web/types';
@@ -1 +1 @@
1
- {"version":3,"file":"ux4g-components-angular-alert.mjs","sources":["../../../src/alert/ux4g-alert.component.ts","../../../src/alert/ux4g-alert-container.component.ts","../../../src/alert/ux4g-alert.module.ts","../../../src/alert/ux4g-components-angular-alert.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AlertVariant, AlertLayout, buildAlertClasses, buildContextAlertClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-alert',\r\n standalone: false,\r\n template: `\r\n <div [className]=\"alertClasses\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAlertComponent {\r\n @Input() variant: AlertVariant = 'info';\r\n @Input() toast: boolean = false;\r\n @Input() layout: AlertLayout = 'fluid';\r\n\r\n get alertClasses(): string {\r\n return this.toast\r\n ? buildContextAlertClasses(this.variant)\r\n : buildAlertClasses(this.variant, this.layout);\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AlertPosition, buildAlertContainerClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-alert-container',\r\n standalone: false,\r\n template: `\r\n <div [className]=\"containerClasses\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAlertContainerComponent {\r\n @Input() position: AlertPosition = 'top-right';\r\n\r\n get containerClasses(): string {\r\n return buildAlertContainerClasses(this.position);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAlertComponent } from './ux4g-alert.component';\r\nimport { UX4GAlertContainerComponent } from './ux4g-alert-container.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAlertComponent, UX4GAlertContainerComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAlertComponent, UX4GAlertContainerComponent],\r\n})\r\nexport class UX4GAlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ux4g-components-angular-alert.mjs","sources":["../../../src/alert/ux4g-alert.component.ts","../../../src/alert/ux4g-alert-container.component.ts","../../../src/alert/ux4g-alert.module.ts","../../../src/alert/ux4g-components-angular-alert.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AlertVariant, AlertLayout, buildAlertClasses, buildContextAlertClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-alert',\r\n standalone: false,\r\n template: `\r\n <div [className]=\"alertClasses\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAlertComponent {\r\n @Input() variant: AlertVariant = 'info';\r\n @Input() toast: boolean = false;\r\n @Input() layout: AlertLayout = 'fluid';\r\n\r\n get alertClasses(): string {\r\n return this.toast\r\n ? buildContextAlertClasses(this.variant)\r\n : buildAlertClasses(this.variant, this.layout);\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AlertPosition, buildAlertContainerClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-alert-container',\r\n standalone: false,\r\n template: `\r\n <div [className]=\"containerClasses\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAlertContainerComponent {\r\n @Input() position: AlertPosition = 'top-right';\r\n\r\n get containerClasses(): string {\r\n return buildAlertContainerClasses(this.position);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAlertComponent } from './ux4g-alert.component';\r\nimport { UX4GAlertContainerComponent } from './ux4g-alert-container.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAlertComponent, UX4GAlertContainerComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAlertComponent, UX4GAlertContainerComponent],\r\n})\r\nexport class UX4GAlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  export { UX4GAlertComponent } from './ux4g-alert.component';
2
3
  export { UX4GAlertContainerComponent } from './ux4g-alert-container.component';
3
4
  export { UX4GAlertModule } from './ux4g-alert.module';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/alert/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/alert/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,87 @@
1
+ # ux4g-components-angular
2
+
3
+ Angular wrapper components for the UX4G Design System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install ux4g-components-angular ux4g-components-web
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ Add the CSS bundle to your `angular.json` styles array:
14
+
15
+ ```json
16
+ {
17
+ "styles": [
18
+ "node_modules/ux4g-components-web/styles/ux4g.css",
19
+ "src/styles.css"
20
+ ]
21
+ }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ```ts
27
+ // app.module.ts
28
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
29
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
30
+
31
+ @NgModule({
32
+ imports: [UX4GButtonModule, UX4GSpinnerModule],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ ```html
38
+ <!-- app.component.html -->
39
+ <ux4g-button variant="primary" size="md" (buttonClick)="onSave()">
40
+ Save
41
+ </ux4g-button>
42
+
43
+ <ux4g-spinner variant="primary" size="md" type="full"></ux4g-spinner>
44
+ ```
45
+
46
+ ## Available Components (50)
47
+
48
+ Each component is available as a sub-path import:
49
+
50
+ ```ts
51
+ import { UX4GButtonModule } from 'ux4g-components-angular/button';
52
+ import { UX4GSpinnerModule } from 'ux4g-components-angular/spinner';
53
+ import { UX4GBadgeModule } from 'ux4g-components-angular/badge';
54
+ import { UX4GCardModule } from 'ux4g-components-angular/card';
55
+ // ... and 46 more
56
+ ```
57
+
58
+ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadcrumb`, `button`, `card`, `carousel`, `checkbox`, `chip`, `chip-group`, `combobox`, `date-time-picker`, `divider`, `draft-status-banner`, `drawer`, `dropdown`, `empty-state`, `feedback`, `file-upload`, `footer`, `form-field-group`, `icon-button`, `image`, `input`, `journey-timeline`, `link`, `list`, `modal`, `navbar`, `otp-input`, `pagination`, `popover`, `progress-indicator`, `radio`, `result-list-row`, `search`, `sla-progress-indicator`, `slider`, `slot-grid`, `social-links`, `spinner`, `status-pipeline`, `stepper`, `switch`, `tab`, `table`, `tag`, `tooltip`
59
+
60
+ ## Architecture
61
+
62
+ This package follows a CSS-first architecture:
63
+
64
+ - **CSS is the source of truth** — all visual decisions live in CSS
65
+ - **Wrappers are thin** — they map typed inputs to CSS class strings via `buildXxxClasses()` functions
66
+ - **No inline styles, no CSS-in-JS** — only `[class]` bindings
67
+ - **No local `types.ts` copies** — all Class_Builder functions are imported from `ux4g-components-web/types`
68
+
69
+ ## Compatibility
70
+
71
+ - Angular >= 15.0.0
72
+ - Built with Ivy partial compilation (compatible with Angular 15–19+)
73
+ - `typesVersions` included for `moduleResolution: node` compatibility
74
+
75
+ ## Peer Dependencies
76
+
77
+ - `@angular/core >= 15.0.0`
78
+ - `@angular/common >= 15.0.0`
79
+
80
+ ## Related Packages
81
+
82
+ - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
83
+ - [`ux4g-components-react`](https://www.npmjs.com/package/ux4g-components-react) — React wrapper components
84
+
85
+ ## License
86
+
87
+ MIT
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  import * as i0 from '@angular/core';
2
3
  import { Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
4
  import { buildAvatarClasses } from 'ux4g-components-web/types';
@@ -1 +1 @@
1
- {"version":3,"file":"ux4g-components-angular-avatar.mjs","sources":["../../../src/avatar/ux4g-avatar.component.ts","../../../src/avatar/ux4g-avatar.module.ts","../../../src/avatar/ux4g-components-angular-avatar.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AvatarType, AvatarSize, buildAvatarClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-avatar',\r\n standalone: false,\r\n template: `<div [class]=\"avatarClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAvatarComponent {\r\n @Input() avatarType: AvatarType = 'status';\r\n @Input() size?: AvatarSize;\r\n\r\n get avatarClasses(): string {\r\n return buildAvatarClasses(this.avatarType, this.size);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAvatarComponent } from './ux4g-avatar.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAvatarComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAvatarComponent],\r\n})\r\nexport class UX4GAvatarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MASa,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,UAAU,GAAe,QAAQ;AAM3C,IAAA;AAHC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;IACvD;+GANW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4HAHpB,CAAA,4DAAA,CAA8D,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAG7D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,4DAAA,CAA8D;oBACxE,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MCFU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACxB,YAAY,aACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"ux4g-components-angular-avatar.mjs","sources":["../../../src/avatar/ux4g-avatar.component.ts","../../../src/avatar/ux4g-avatar.module.ts","../../../src/avatar/ux4g-components-angular-avatar.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AvatarType, AvatarSize, buildAvatarClasses } from 'ux4g-components-web/types';\r\n\r\n@Component({\r\n selector: 'ux4g-avatar',\r\n standalone: false,\r\n template: `<div [class]=\"avatarClasses\"><ng-content></ng-content></div>`,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GAvatarComponent {\r\n @Input() avatarType: AvatarType = 'status';\r\n @Input() size?: AvatarSize;\r\n\r\n get avatarClasses(): string {\r\n return buildAvatarClasses(this.avatarType, this.size);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UX4GAvatarComponent } from './ux4g-avatar.component';\r\n\r\n@NgModule({\r\n declarations: [UX4GAvatarComponent],\r\n imports: [CommonModule],\r\n exports: [UX4GAvatarComponent],\r\n})\r\nexport class UX4GAvatarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MASa,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,UAAU,GAAe,QAAQ;AAM3C,IAAA;AAHC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;IACvD;+GANW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4HAHpB,CAAA,4DAAA,CAA8D,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAG7D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,4DAAA,CAA8D;oBACxE,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MCFU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACxB,YAAY,aACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;ACRD;;AAEG;;;;"}
@@ -1,3 +1,4 @@
1
+ import 'ux4g-components-web/runtime/bootstrap';
1
2
  export { UX4GAvatarComponent } from './ux4g-avatar.component';
2
3
  export { UX4GAvatarModule } from './ux4g-avatar.module';
3
4
  export { AvatarType, AvatarSize } from 'ux4g-components-web/types';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/avatar/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/avatar/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}