@ngbase/adk 0.1.16 → 0.1.18

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 (203) hide show
  1. package/fesm2022/ngbase-adk-a11y.mjs +42 -42
  2. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  3. package/fesm2022/ngbase-adk-accordion.mjs +20 -26
  4. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  5. package/fesm2022/ngbase-adk-autocomplete.mjs +11 -11
  6. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  7. package/fesm2022/ngbase-adk-avatar.mjs +13 -13
  8. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  9. package/fesm2022/ngbase-adk-bidi.mjs +3 -3
  10. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
  11. package/fesm2022/ngbase-adk-breadcrumb.mjs +14 -14
  12. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-cache.mjs +3 -3
  14. package/fesm2022/ngbase-adk-cache.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-carousel.mjs +18 -18
  16. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-checkbox.mjs +15 -21
  18. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-chip.mjs +12 -12
  20. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-clipboard.mjs +7 -5
  22. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-color-picker.mjs +44 -53
  25. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-cookies.mjs +3 -3
  27. package/fesm2022/ngbase-adk-cookies.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-datepicker.mjs +70 -89
  29. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-dialog.mjs +17 -39
  31. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  32. package/fesm2022/ngbase-adk-drag.mjs +20 -20
  33. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  34. package/fesm2022/ngbase-adk-form-field.mjs +65 -118
  35. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  36. package/fesm2022/ngbase-adk-hover-card.mjs +5 -5
  37. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
  38. package/fesm2022/ngbase-adk-icon.mjs +9 -11
  39. package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
  40. package/fesm2022/ngbase-adk-inline-edit.mjs +27 -35
  41. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-jwt.mjs +319 -41
  43. package/fesm2022/ngbase-adk-jwt.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-keys.mjs +6 -6
  45. package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-list.mjs +10 -10
  48. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-mask.mjs +8 -8
  50. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  51. package/fesm2022/ngbase-adk-menu.mjs +69 -79
  52. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-network.mjs +3 -3
  54. package/fesm2022/ngbase-adk-network.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-otp.mjs +24 -45
  56. package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-pagination.mjs +9 -9
  58. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-popover.mjs +120 -89
  60. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-portal.mjs +134 -47
  62. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-progress.mjs +7 -7
  64. package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-radio.mjs +20 -27
  66. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-resizable.mjs +138 -48
  68. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-scroll-area.mjs +28 -20
  70. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-select.mjs +58 -80
  72. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-selectable.mjs +19 -30
  74. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-sheet.mjs +6 -20
  76. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-sidenav.mjs +65 -46
  78. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-slider.mjs +40 -53
  80. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-sonner.mjs +12 -19
  82. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-stepper.mjs +17 -25
  84. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-switch.mjs +25 -32
  86. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-table.mjs +581 -83
  88. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  89. package/fesm2022/ngbase-adk-tabs.mjs +37 -35
  90. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  91. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  92. package/fesm2022/ngbase-adk-toggle-group.mjs +20 -34
  93. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
  94. package/fesm2022/ngbase-adk-toggle.mjs +14 -19
  95. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
  96. package/fesm2022/ngbase-adk-tooltip.mjs +12 -19
  97. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  98. package/fesm2022/ngbase-adk-tour.mjs +52 -52
  99. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  100. package/fesm2022/ngbase-adk-translate.mjs +8 -10
  101. package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
  102. package/fesm2022/ngbase-adk-tree.mjs +20 -20
  103. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  104. package/fesm2022/ngbase-adk-utils.mjs +30 -43
  105. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  106. package/fesm2022/ngbase-adk-virtualizer.mjs +9 -9
  107. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
  108. package/package.json +91 -91
  109. package/schematics/components/files/accordion/accordion.ts.template +9 -6
  110. package/schematics/components/files/audio/AudioPlayer.ts.template +245 -0
  111. package/schematics/components/files/audio/AudioRecorder.ts.template +377 -0
  112. package/schematics/components/files/audio/AudioVisualizer.ts.template +175 -0
  113. package/schematics/components/files/audio/index.ts.template +3 -0
  114. package/schematics/components/files/button/button-llm.md.template +3 -2
  115. package/schematics/components/files/charts/area-chart.component.ts.template +278 -0
  116. package/schematics/components/files/charts/bar-chart.component.ts.template +262 -0
  117. package/schematics/components/files/charts/chart-tooltip.component.ts.template +168 -0
  118. package/schematics/components/files/charts/index.ts.template +4 -0
  119. package/schematics/components/files/charts/line-chart.component.ts.template +238 -0
  120. package/schematics/components/files/charts/pie-chart.component.ts.template +283 -0
  121. package/schematics/components/files/checkbox/checkbox.ts.template +2 -2
  122. package/schematics/components/files/color-picker/color-picker.ts.template +2 -2
  123. package/schematics/components/files/dialog/dialog.ts.template +18 -14
  124. package/schematics/components/files/drawer/drawer.ts.template +30 -27
  125. package/schematics/components/files/form-field/form-field.ts.template +51 -23
  126. package/schematics/components/files/pagination/pagination.ts.template +4 -4
  127. package/schematics/components/files/picasa/picasa-base.component.ts.template +15 -30
  128. package/schematics/components/files/popover/popover.ts.template +15 -4
  129. package/schematics/components/files/select/list-selection.ts.template +0 -2
  130. package/schematics/components/files/select/option.ts.template +1 -1
  131. package/schematics/components/files/selectable/selectable.ts.template +2 -2
  132. package/schematics/components/files/sheet/sheet.ts.template +26 -14
  133. package/schematics/components/files/sidenav/sidenav.ts.template +7 -5
  134. package/schematics/components/files/sonner/sonner.ts.template +1 -2
  135. package/schematics/components/files/stepper/stepper.ts.template +2 -4
  136. package/schematics/components/files/switch/switch.ts.template +2 -2
  137. package/schematics/components/files/table/table.ts.template +43 -3
  138. package/schematics/components/files/tabs/tab.ts.template +3 -3
  139. package/schematics/components/files/theme/theme.service.ts.template +3 -3
  140. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  141. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  142. package/schematics/components/files/tooltip/tooltip.ts.template +2 -3
  143. package/schematics/components/schema.json +2 -0
  144. package/{accordion/index.d.ts → types/ngbase-adk-accordion.d.ts} +1 -3
  145. package/{autocomplete/index.d.ts → types/ngbase-adk-autocomplete.d.ts} +2 -7
  146. package/{checkbox/index.d.ts → types/ngbase-adk-checkbox.d.ts} +8 -14
  147. package/types/ngbase-adk-clipboard.d.ts +12 -0
  148. package/{color-picker/index.d.ts → types/ngbase-adk-color-picker.d.ts} +14 -26
  149. package/{datepicker/index.d.ts → types/ngbase-adk-datepicker.d.ts} +9 -18
  150. package/{dialog/index.d.ts → types/ngbase-adk-dialog.d.ts} +3 -8
  151. package/types/ngbase-adk-form-field.d.ts +88 -0
  152. package/{inline-edit/index.d.ts → types/ngbase-adk-inline-edit.d.ts} +8 -16
  153. package/types/ngbase-adk-jwt.d.ts +64 -0
  154. package/{menu/index.d.ts → types/ngbase-adk-menu.d.ts} +6 -5
  155. package/{otp/index.d.ts → types/ngbase-adk-otp.d.ts} +8 -16
  156. package/{popover/index.d.ts → types/ngbase-adk-popover.d.ts} +14 -2
  157. package/{portal/index.d.ts → types/ngbase-adk-portal.d.ts} +29 -8
  158. package/{radio/index.d.ts → types/ngbase-adk-radio.d.ts} +9 -12
  159. package/{resizable/index.d.ts → types/ngbase-adk-resizable.d.ts} +4 -4
  160. package/{scroll-area/index.d.ts → types/ngbase-adk-scroll-area.d.ts} +2 -1
  161. package/{select/index.d.ts → types/ngbase-adk-select.d.ts} +8 -22
  162. package/{selectable/index.d.ts → types/ngbase-adk-selectable.d.ts} +6 -10
  163. package/{sheet/index.d.ts → types/ngbase-adk-sheet.d.ts} +4 -3
  164. package/{sidenav/index.d.ts → types/ngbase-adk-sidenav.d.ts} +6 -6
  165. package/{slider/index.d.ts → types/ngbase-adk-slider.d.ts} +8 -17
  166. package/{sonner/index.d.ts → types/ngbase-adk-sonner.d.ts} +1 -3
  167. package/{stepper/index.d.ts → types/ngbase-adk-stepper.d.ts} +1 -4
  168. package/{switch/index.d.ts → types/ngbase-adk-switch.d.ts} +7 -14
  169. package/{table/index.d.ts → types/ngbase-adk-table.d.ts} +126 -3
  170. package/{test/index.d.ts → types/ngbase-adk-test.d.ts} +1 -1
  171. package/{toggle-group/index.d.ts → types/ngbase-adk-toggle-group.d.ts} +5 -10
  172. package/types/ngbase-adk-toggle.d.ts +14 -0
  173. package/{tooltip/index.d.ts → types/ngbase-adk-tooltip.d.ts} +9 -11
  174. package/{tour/index.d.ts → types/ngbase-adk-tour.d.ts} +4 -6
  175. package/{utils/index.d.ts → types/ngbase-adk-utils.d.ts} +15 -11
  176. package/clipboard/index.d.ts +0 -11
  177. package/form-field/index.d.ts +0 -97
  178. package/jwt/index.d.ts +0 -20
  179. package/toggle/index.d.ts +0 -16
  180. /package/{a11y/index.d.ts → types/ngbase-adk-a11y.d.ts} +0 -0
  181. /package/{avatar/index.d.ts → types/ngbase-adk-avatar.d.ts} +0 -0
  182. /package/{bidi/index.d.ts → types/ngbase-adk-bidi.d.ts} +0 -0
  183. /package/{breadcrumb/index.d.ts → types/ngbase-adk-breadcrumb.d.ts} +0 -0
  184. /package/{cache/index.d.ts → types/ngbase-adk-cache.d.ts} +0 -0
  185. /package/{carousel/index.d.ts → types/ngbase-adk-carousel.d.ts} +0 -0
  186. /package/{chip/index.d.ts → types/ngbase-adk-chip.d.ts} +0 -0
  187. /package/{collections/index.d.ts → types/ngbase-adk-collections.d.ts} +0 -0
  188. /package/{cookies/index.d.ts → types/ngbase-adk-cookies.d.ts} +0 -0
  189. /package/{drag/index.d.ts → types/ngbase-adk-drag.d.ts} +0 -0
  190. /package/{hover-card/index.d.ts → types/ngbase-adk-hover-card.d.ts} +0 -0
  191. /package/{icon/index.d.ts → types/ngbase-adk-icon.d.ts} +0 -0
  192. /package/{keys/index.d.ts → types/ngbase-adk-keys.d.ts} +0 -0
  193. /package/{layout/index.d.ts → types/ngbase-adk-layout.d.ts} +0 -0
  194. /package/{list/index.d.ts → types/ngbase-adk-list.d.ts} +0 -0
  195. /package/{mask/index.d.ts → types/ngbase-adk-mask.d.ts} +0 -0
  196. /package/{network/index.d.ts → types/ngbase-adk-network.d.ts} +0 -0
  197. /package/{pagination/index.d.ts → types/ngbase-adk-pagination.d.ts} +0 -0
  198. /package/{progress/index.d.ts → types/ngbase-adk-progress.d.ts} +0 -0
  199. /package/{tabs/index.d.ts → types/ngbase-adk-tabs.d.ts} +0 -0
  200. /package/{translate/index.d.ts → types/ngbase-adk-translate.d.ts} +0 -0
  201. /package/{tree/index.d.ts → types/ngbase-adk-tree.d.ts} +0 -0
  202. /package/{virtualizer/index.d.ts → types/ngbase-adk-virtualizer.d.ts} +0 -0
  203. /package/{index.d.ts → types/ngbase-adk.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngbase/adk",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ng-base/ngbase.git"
@@ -13,9 +13,9 @@
13
13
  "url": "https://github.com/ng-base/ngbase/issues"
14
14
  },
15
15
  "peerDependencies": {
16
- "@angular/common": "^20.0.0",
17
- "@angular/core": "^20.0.0",
18
- "@angular/forms": "^20.0.0"
16
+ "@angular/common": "^21.0.0",
17
+ "@angular/core": "^21.0.0",
18
+ "@angular/forms": "^21.0.0"
19
19
  },
20
20
  "dependencies": {
21
21
  "tslib": "^2.3.0"
@@ -23,233 +23,233 @@
23
23
  "schematics": "./schematics/collection.json",
24
24
  "sideEffects": false,
25
25
  "module": "fesm2022/ngbase-adk.mjs",
26
- "typings": "index.d.ts",
26
+ "typings": "types/ngbase-adk.d.ts",
27
27
  "exports": {
28
28
  "./package.json": {
29
29
  "default": "./package.json"
30
30
  },
31
31
  ".": {
32
- "types": "./index.d.ts",
32
+ "types": "./types/ngbase-adk.d.ts",
33
33
  "default": "./fesm2022/ngbase-adk.mjs"
34
34
  },
35
35
  "./a11y": {
36
- "types": "./a11y/index.d.ts",
36
+ "types": "./types/ngbase-adk-a11y.d.ts",
37
37
  "default": "./fesm2022/ngbase-adk-a11y.mjs"
38
38
  },
39
- "./avatar": {
40
- "types": "./avatar/index.d.ts",
41
- "default": "./fesm2022/ngbase-adk-avatar.mjs"
39
+ "./accordion": {
40
+ "types": "./types/ngbase-adk-accordion.d.ts",
41
+ "default": "./fesm2022/ngbase-adk-accordion.mjs"
42
42
  },
43
43
  "./autocomplete": {
44
- "types": "./autocomplete/index.d.ts",
44
+ "types": "./types/ngbase-adk-autocomplete.d.ts",
45
45
  "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
46
46
  },
47
- "./accordion": {
48
- "types": "./accordion/index.d.ts",
49
- "default": "./fesm2022/ngbase-adk-accordion.mjs"
47
+ "./avatar": {
48
+ "types": "./types/ngbase-adk-avatar.d.ts",
49
+ "default": "./fesm2022/ngbase-adk-avatar.mjs"
50
50
  },
51
51
  "./bidi": {
52
- "types": "./bidi/index.d.ts",
52
+ "types": "./types/ngbase-adk-bidi.d.ts",
53
53
  "default": "./fesm2022/ngbase-adk-bidi.mjs"
54
54
  },
55
55
  "./breadcrumb": {
56
- "types": "./breadcrumb/index.d.ts",
56
+ "types": "./types/ngbase-adk-breadcrumb.d.ts",
57
57
  "default": "./fesm2022/ngbase-adk-breadcrumb.mjs"
58
58
  },
59
59
  "./cache": {
60
- "types": "./cache/index.d.ts",
60
+ "types": "./types/ngbase-adk-cache.d.ts",
61
61
  "default": "./fesm2022/ngbase-adk-cache.mjs"
62
62
  },
63
63
  "./carousel": {
64
- "types": "./carousel/index.d.ts",
64
+ "types": "./types/ngbase-adk-carousel.d.ts",
65
65
  "default": "./fesm2022/ngbase-adk-carousel.mjs"
66
66
  },
67
+ "./checkbox": {
68
+ "types": "./types/ngbase-adk-checkbox.d.ts",
69
+ "default": "./fesm2022/ngbase-adk-checkbox.mjs"
70
+ },
67
71
  "./chip": {
68
- "types": "./chip/index.d.ts",
72
+ "types": "./types/ngbase-adk-chip.d.ts",
69
73
  "default": "./fesm2022/ngbase-adk-chip.mjs"
70
74
  },
71
75
  "./clipboard": {
72
- "types": "./clipboard/index.d.ts",
76
+ "types": "./types/ngbase-adk-clipboard.d.ts",
73
77
  "default": "./fesm2022/ngbase-adk-clipboard.mjs"
74
78
  },
75
- "./checkbox": {
76
- "types": "./checkbox/index.d.ts",
77
- "default": "./fesm2022/ngbase-adk-checkbox.mjs"
78
- },
79
79
  "./collections": {
80
- "types": "./collections/index.d.ts",
80
+ "types": "./types/ngbase-adk-collections.d.ts",
81
81
  "default": "./fesm2022/ngbase-adk-collections.mjs"
82
82
  },
83
83
  "./color-picker": {
84
- "types": "./color-picker/index.d.ts",
84
+ "types": "./types/ngbase-adk-color-picker.d.ts",
85
85
  "default": "./fesm2022/ngbase-adk-color-picker.mjs"
86
86
  },
87
87
  "./cookies": {
88
- "types": "./cookies/index.d.ts",
88
+ "types": "./types/ngbase-adk-cookies.d.ts",
89
89
  "default": "./fesm2022/ngbase-adk-cookies.mjs"
90
90
  },
91
- "./dialog": {
92
- "types": "./dialog/index.d.ts",
93
- "default": "./fesm2022/ngbase-adk-dialog.mjs"
94
- },
95
91
  "./datepicker": {
96
- "types": "./datepicker/index.d.ts",
92
+ "types": "./types/ngbase-adk-datepicker.d.ts",
97
93
  "default": "./fesm2022/ngbase-adk-datepicker.mjs"
98
94
  },
95
+ "./dialog": {
96
+ "types": "./types/ngbase-adk-dialog.d.ts",
97
+ "default": "./fesm2022/ngbase-adk-dialog.mjs"
98
+ },
99
99
  "./drag": {
100
- "types": "./drag/index.d.ts",
100
+ "types": "./types/ngbase-adk-drag.d.ts",
101
101
  "default": "./fesm2022/ngbase-adk-drag.mjs"
102
102
  },
103
103
  "./form-field": {
104
- "types": "./form-field/index.d.ts",
104
+ "types": "./types/ngbase-adk-form-field.d.ts",
105
105
  "default": "./fesm2022/ngbase-adk-form-field.mjs"
106
106
  },
107
107
  "./hover-card": {
108
- "types": "./hover-card/index.d.ts",
108
+ "types": "./types/ngbase-adk-hover-card.d.ts",
109
109
  "default": "./fesm2022/ngbase-adk-hover-card.mjs"
110
110
  },
111
111
  "./icon": {
112
- "types": "./icon/index.d.ts",
112
+ "types": "./types/ngbase-adk-icon.d.ts",
113
113
  "default": "./fesm2022/ngbase-adk-icon.mjs"
114
114
  },
115
- "./jwt": {
116
- "types": "./jwt/index.d.ts",
117
- "default": "./fesm2022/ngbase-adk-jwt.mjs"
118
- },
119
115
  "./inline-edit": {
120
- "types": "./inline-edit/index.d.ts",
116
+ "types": "./types/ngbase-adk-inline-edit.d.ts",
121
117
  "default": "./fesm2022/ngbase-adk-inline-edit.mjs"
122
118
  },
123
- "./layout": {
124
- "types": "./layout/index.d.ts",
125
- "default": "./fesm2022/ngbase-adk-layout.mjs"
119
+ "./jwt": {
120
+ "types": "./types/ngbase-adk-jwt.d.ts",
121
+ "default": "./fesm2022/ngbase-adk-jwt.mjs"
126
122
  },
127
123
  "./keys": {
128
- "types": "./keys/index.d.ts",
124
+ "types": "./types/ngbase-adk-keys.d.ts",
129
125
  "default": "./fesm2022/ngbase-adk-keys.mjs"
130
126
  },
127
+ "./layout": {
128
+ "types": "./types/ngbase-adk-layout.d.ts",
129
+ "default": "./fesm2022/ngbase-adk-layout.mjs"
130
+ },
131
131
  "./list": {
132
- "types": "./list/index.d.ts",
132
+ "types": "./types/ngbase-adk-list.d.ts",
133
133
  "default": "./fesm2022/ngbase-adk-list.mjs"
134
134
  },
135
135
  "./mask": {
136
- "types": "./mask/index.d.ts",
136
+ "types": "./types/ngbase-adk-mask.d.ts",
137
137
  "default": "./fesm2022/ngbase-adk-mask.mjs"
138
138
  },
139
- "./network": {
140
- "types": "./network/index.d.ts",
141
- "default": "./fesm2022/ngbase-adk-network.mjs"
142
- },
143
139
  "./menu": {
144
- "types": "./menu/index.d.ts",
140
+ "types": "./types/ngbase-adk-menu.d.ts",
145
141
  "default": "./fesm2022/ngbase-adk-menu.mjs"
146
142
  },
143
+ "./network": {
144
+ "types": "./types/ngbase-adk-network.d.ts",
145
+ "default": "./fesm2022/ngbase-adk-network.mjs"
146
+ },
147
147
  "./otp": {
148
- "types": "./otp/index.d.ts",
148
+ "types": "./types/ngbase-adk-otp.d.ts",
149
149
  "default": "./fesm2022/ngbase-adk-otp.mjs"
150
150
  },
151
151
  "./pagination": {
152
- "types": "./pagination/index.d.ts",
152
+ "types": "./types/ngbase-adk-pagination.d.ts",
153
153
  "default": "./fesm2022/ngbase-adk-pagination.mjs"
154
154
  },
155
155
  "./popover": {
156
- "types": "./popover/index.d.ts",
156
+ "types": "./types/ngbase-adk-popover.d.ts",
157
157
  "default": "./fesm2022/ngbase-adk-popover.mjs"
158
158
  },
159
+ "./portal": {
160
+ "types": "./types/ngbase-adk-portal.d.ts",
161
+ "default": "./fesm2022/ngbase-adk-portal.mjs"
162
+ },
159
163
  "./progress": {
160
- "types": "./progress/index.d.ts",
164
+ "types": "./types/ngbase-adk-progress.d.ts",
161
165
  "default": "./fesm2022/ngbase-adk-progress.mjs"
162
166
  },
163
167
  "./radio": {
164
- "types": "./radio/index.d.ts",
168
+ "types": "./types/ngbase-adk-radio.d.ts",
165
169
  "default": "./fesm2022/ngbase-adk-radio.mjs"
166
170
  },
167
- "./portal": {
168
- "types": "./portal/index.d.ts",
169
- "default": "./fesm2022/ngbase-adk-portal.mjs"
170
- },
171
171
  "./resizable": {
172
- "types": "./resizable/index.d.ts",
172
+ "types": "./types/ngbase-adk-resizable.d.ts",
173
173
  "default": "./fesm2022/ngbase-adk-resizable.mjs"
174
174
  },
175
175
  "./scroll-area": {
176
- "types": "./scroll-area/index.d.ts",
176
+ "types": "./types/ngbase-adk-scroll-area.d.ts",
177
177
  "default": "./fesm2022/ngbase-adk-scroll-area.mjs"
178
178
  },
179
- "./selectable": {
180
- "types": "./selectable/index.d.ts",
181
- "default": "./fesm2022/ngbase-adk-selectable.mjs"
182
- },
183
179
  "./select": {
184
- "types": "./select/index.d.ts",
180
+ "types": "./types/ngbase-adk-select.d.ts",
185
181
  "default": "./fesm2022/ngbase-adk-select.mjs"
186
182
  },
183
+ "./selectable": {
184
+ "types": "./types/ngbase-adk-selectable.d.ts",
185
+ "default": "./fesm2022/ngbase-adk-selectable.mjs"
186
+ },
187
187
  "./sheet": {
188
- "types": "./sheet/index.d.ts",
188
+ "types": "./types/ngbase-adk-sheet.d.ts",
189
189
  "default": "./fesm2022/ngbase-adk-sheet.mjs"
190
190
  },
191
191
  "./sidenav": {
192
- "types": "./sidenav/index.d.ts",
192
+ "types": "./types/ngbase-adk-sidenav.d.ts",
193
193
  "default": "./fesm2022/ngbase-adk-sidenav.mjs"
194
194
  },
195
195
  "./slider": {
196
- "types": "./slider/index.d.ts",
196
+ "types": "./types/ngbase-adk-slider.d.ts",
197
197
  "default": "./fesm2022/ngbase-adk-slider.mjs"
198
198
  },
199
199
  "./sonner": {
200
- "types": "./sonner/index.d.ts",
200
+ "types": "./types/ngbase-adk-sonner.d.ts",
201
201
  "default": "./fesm2022/ngbase-adk-sonner.mjs"
202
202
  },
203
203
  "./stepper": {
204
- "types": "./stepper/index.d.ts",
204
+ "types": "./types/ngbase-adk-stepper.d.ts",
205
205
  "default": "./fesm2022/ngbase-adk-stepper.mjs"
206
206
  },
207
207
  "./switch": {
208
- "types": "./switch/index.d.ts",
208
+ "types": "./types/ngbase-adk-switch.d.ts",
209
209
  "default": "./fesm2022/ngbase-adk-switch.mjs"
210
210
  },
211
211
  "./table": {
212
- "types": "./table/index.d.ts",
212
+ "types": "./types/ngbase-adk-table.d.ts",
213
213
  "default": "./fesm2022/ngbase-adk-table.mjs"
214
214
  },
215
+ "./tabs": {
216
+ "types": "./types/ngbase-adk-tabs.d.ts",
217
+ "default": "./fesm2022/ngbase-adk-tabs.mjs"
218
+ },
215
219
  "./test": {
216
- "types": "./test/index.d.ts",
220
+ "types": "./types/ngbase-adk-test.d.ts",
217
221
  "default": "./fesm2022/ngbase-adk-test.mjs"
218
222
  },
219
223
  "./toggle": {
220
- "types": "./toggle/index.d.ts",
224
+ "types": "./types/ngbase-adk-toggle.d.ts",
221
225
  "default": "./fesm2022/ngbase-adk-toggle.mjs"
222
226
  },
223
- "./tabs": {
224
- "types": "./tabs/index.d.ts",
225
- "default": "./fesm2022/ngbase-adk-tabs.mjs"
226
- },
227
227
  "./toggle-group": {
228
- "types": "./toggle-group/index.d.ts",
228
+ "types": "./types/ngbase-adk-toggle-group.d.ts",
229
229
  "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
230
230
  },
231
- "./tour": {
232
- "types": "./tour/index.d.ts",
233
- "default": "./fesm2022/ngbase-adk-tour.mjs"
234
- },
235
231
  "./tooltip": {
236
- "types": "./tooltip/index.d.ts",
232
+ "types": "./types/ngbase-adk-tooltip.d.ts",
237
233
  "default": "./fesm2022/ngbase-adk-tooltip.mjs"
238
234
  },
235
+ "./tour": {
236
+ "types": "./types/ngbase-adk-tour.d.ts",
237
+ "default": "./fesm2022/ngbase-adk-tour.mjs"
238
+ },
239
239
  "./translate": {
240
- "types": "./translate/index.d.ts",
240
+ "types": "./types/ngbase-adk-translate.d.ts",
241
241
  "default": "./fesm2022/ngbase-adk-translate.mjs"
242
242
  },
243
243
  "./tree": {
244
- "types": "./tree/index.d.ts",
244
+ "types": "./types/ngbase-adk-tree.d.ts",
245
245
  "default": "./fesm2022/ngbase-adk-tree.mjs"
246
246
  },
247
247
  "./utils": {
248
- "types": "./utils/index.d.ts",
248
+ "types": "./types/ngbase-adk-utils.d.ts",
249
249
  "default": "./fesm2022/ngbase-adk-utils.mjs"
250
250
  },
251
251
  "./virtualizer": {
252
- "types": "./virtualizer/index.d.ts",
252
+ "types": "./types/ngbase-adk-virtualizer.d.ts",
253
253
  "default": "./fesm2022/ngbase-adk-virtualizer.mjs"
254
254
  }
255
255
  }
@@ -5,7 +5,6 @@ import {
5
5
  NgbAccordionContent,
6
6
  NgbAccordionGroup,
7
7
  NgbAccordionHeader,
8
- slideAnimation,
9
8
  } from '@ngbase/adk/accordion';
10
9
 
11
10
  @Component({
@@ -27,18 +26,22 @@ export class AccordionGroup {}
27
26
  imports: [NgbAccordionContent],
28
27
  template: `
29
28
  <ng-content select="[<%= name %>AccordionHeader]" />
30
- @if (expanded()) {
31
- <div ngbAccordionContent [@slide] class="overflow-hidden">
29
+ <div
30
+ ngbAccordionContent
31
+ class="grid overflow-hidden"
32
+ [class.accordion-enter]="expanded()"
33
+ [class.accordion-leave]="!expanded()"
34
+ >
35
+ <div class="min-h-0">
32
36
  <div class="px-3 pb-4">
33
37
  <ng-content />
34
38
  </div>
35
39
  </div>
36
- }
40
+ </div>
37
41
  `,
38
42
  host: {
39
43
  class: 'block will-change-auto [&:not(:last-child)]:border-b',
40
44
  },
41
- animations: [slideAnimation],
42
45
  })
43
46
  export class Accordion extends NgbAccordion {}
44
47
 
@@ -47,7 +50,7 @@ export class Accordion extends NgbAccordion {}
47
50
  hostDirectives: [NgbAccordionHeader],
48
51
  host: {
49
52
  class:
50
- 'flex items-center w-full py-3 px-3 aria-disabled:cursor-not-allowed aria-disabled:opacity-50',
53
+ 'flex items-center w-full py-3 px-3 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 cursor-pointer',
51
54
  },
52
55
  })
53
56
  export class AccordionHeader {}
@@ -0,0 +1,245 @@
1
+ import {
2
+ ChangeDetectionStrategy,
3
+ Component,
4
+ computed,
5
+ signal,
6
+ ElementRef,
7
+ viewChild,
8
+ input,
9
+ output,
10
+ OnDestroy,
11
+ effect,
12
+ untracked,
13
+ } from '@angular/core';
14
+ import { AudioVisualizer } from './AudioVisualizer';
15
+ import { provideIcons } from '@ng-icons/core';
16
+ import { lucidePause, lucidePlay } from '@ng-icons/lucide';
17
+ import { Icon } from '<%= basepath %>/icon';
18
+ import { Button } from '<%= basepath %>/button';
19
+
20
+ export type AudioState = 'idle' | 'loading' | 'ready' | 'playing' | 'paused';
21
+
22
+ @Component({
23
+ selector: '<%= name %>-audio-player',
24
+ changeDetection: ChangeDetectionStrategy.OnPush,
25
+ viewProviders: [provideIcons({ lucidePlay, lucidePause })],
26
+ imports: [AudioVisualizer, Icon, Button],
27
+ template: `
28
+ <div class="bg-card flex items-center gap-1 rounded-xl border">
29
+ <!-- Play/Pause Button -->
30
+ <button
31
+ (click)="handlePlayClick()"
32
+ <%= name %>Button="secondary"
33
+ [disabled]="state() === 'idle' || state() === 'loading'"
34
+ [attr.aria-label]="state() === 'playing' ? 'Pause Audio' : 'Play Audio'"
35
+ class="m-1 aspect-square !px-1"
36
+ >
37
+ <<%= name %>-icon [name]="state() === 'playing' ? 'lucidePause' : 'lucidePlay'" />
38
+ </button>
39
+
40
+ <!-- Visualizer -->
41
+ <div
42
+ class="group relative h-8 flex-grow cursor-pointer overflow-hidden rounded-lg"
43
+ (click)="seekOnWaveform($event)"
44
+ >
45
+ <app-audio-visualizer
46
+ [audioBuffer]="decodedAudioBuffer()"
47
+ [progress]="playbackProgress()"
48
+ />
49
+ @if (state() === 'loading') {
50
+ <div class="bg-muted/80 absolute inset-0 flex items-center justify-center">
51
+ <p class="text-muted-foreground text-sm font-medium">Loading...</p>
52
+ </div>
53
+ }
54
+ </div>
55
+ </div>
56
+
57
+ <!-- Hidden audio element for playback -->
58
+ <audio
59
+ #audioPlayer
60
+ [src]="audioUrl()"
61
+ (loadedmetadata)="updateDuration()"
62
+ (ended)="onPlaybackEnded()"
63
+ ></audio>
64
+ `,
65
+ host: {
66
+ class: 'block w-full',
67
+ },
68
+ })
69
+ export class AudioPlayer implements OnDestroy {
70
+ readonly audioPlayer = viewChild.required<ElementRef<HTMLAudioElement>>('audioPlayer');
71
+
72
+ // Input for audio file
73
+ readonly file = input<File | null>(null);
74
+ readonly volume = input(0.7);
75
+
76
+ // Internal state
77
+ readonly currentTime = signal(0);
78
+ readonly duration = signal(0);
79
+ readonly state = signal<AudioState>('idle');
80
+ readonly audioUrl = signal<string | null>(null);
81
+ readonly decodedAudioBuffer = signal<AudioBuffer | null>(null);
82
+ readonly error = signal<string | null>(null);
83
+
84
+ // Outputs to emit time updates to parent component
85
+ readonly currentTimeChange = output<number>();
86
+ readonly durationChange = output<number>();
87
+ readonly errorChange = output<string | null>();
88
+
89
+ private animationFrameId: number | null = null;
90
+ private audioContext: AudioContext | null = null;
91
+
92
+ readonly playbackProgress = computed(() =>
93
+ this.duration() > 0 ? this.currentTime() / this.duration() : 0,
94
+ );
95
+
96
+ constructor() {
97
+ // Watch for file changes and load the audio
98
+ effect(() => {
99
+ const fileToLoad = this.file();
100
+ console.log('fileToLoad ', fileToLoad);
101
+ if (fileToLoad) {
102
+ untracked(() => this.loadAudioFile(fileToLoad));
103
+ }
104
+ });
105
+ }
106
+
107
+ async handlePlayClick(): Promise<void> {
108
+ const player = this.audioPlayer().nativeElement;
109
+ const currentState = this.state();
110
+
111
+ if (currentState === 'playing') {
112
+ this.pausePlayback(player);
113
+ this.stopAnimationLoop();
114
+ } else if (currentState === 'ready' || currentState === 'paused') {
115
+ await this.startPlayback(player);
116
+ if (this.state() === 'playing') {
117
+ this.startAnimationLoop();
118
+ }
119
+ }
120
+ }
121
+
122
+ seekOnWaveform(event: MouseEvent): void {
123
+ const player = this.audioPlayer().nativeElement;
124
+ if (!player.duration) return;
125
+
126
+ const target = event.currentTarget as HTMLElement;
127
+ const rect = target.getBoundingClientRect();
128
+ const x = event.clientX - rect.left;
129
+ const percentage = x / rect.width;
130
+ player.currentTime = percentage * player.duration;
131
+ this.currentTime.set(player.currentTime);
132
+ }
133
+
134
+ updateDuration(): void {
135
+ const player = this.audioPlayer().nativeElement;
136
+ this.duration.set(player.duration);
137
+ this.durationChange.emit(player.duration);
138
+ player.volume = this.volume();
139
+ }
140
+
141
+ onPlaybackEnded(): void {
142
+ this.state.set('ready');
143
+ this.stopAnimationLoop();
144
+ this.currentTime.set(0);
145
+ }
146
+
147
+ ngOnDestroy(): void {
148
+ this.stopAnimationLoop();
149
+ if (this.audioUrl()) {
150
+ URL.revokeObjectURL(this.audioUrl()!);
151
+ }
152
+ }
153
+
154
+ private initializeAudioContext(): void {
155
+ if (!this.audioContext) {
156
+ try {
157
+ this.audioContext = new AudioContext();
158
+ } catch (e) {
159
+ const errorMsg = 'Web Audio API is not supported by this browser.';
160
+ this.error.set(errorMsg);
161
+ this.errorChange.emit(errorMsg);
162
+ console.error(e);
163
+ }
164
+ }
165
+ }
166
+
167
+ private async loadAudioFile(file: File): Promise<void> {
168
+ this.state.set('loading');
169
+ this.error.set(null);
170
+ this.decodedAudioBuffer.set(null);
171
+ this.currentTime.set(0);
172
+ this.duration.set(0);
173
+ this.initializeAudioContext();
174
+
175
+ if (!this.audioContext) {
176
+ const errorMsg = 'Could not initialize audio context.';
177
+ this.error.set(errorMsg);
178
+ this.errorChange.emit(errorMsg);
179
+ this.state.set('idle');
180
+ return;
181
+ }
182
+
183
+ if (this.audioUrl()) {
184
+ URL.revokeObjectURL(this.audioUrl()!);
185
+ }
186
+ const url = URL.createObjectURL(file);
187
+ this.audioUrl.set(url);
188
+
189
+ try {
190
+ const arrayBuffer = await file.arrayBuffer();
191
+ const buffer = await this.audioContext.decodeAudioData(arrayBuffer);
192
+ this.decodedAudioBuffer.set(buffer);
193
+ this.state.set('ready');
194
+ } catch (e) {
195
+ console.error('Error decoding audio file:', e);
196
+ const errorMsg =
197
+ 'Failed to process the audio file. It may be corrupt or in an unsupported format.';
198
+ this.error.set(errorMsg);
199
+ this.errorChange.emit(errorMsg);
200
+ this.state.set('idle');
201
+ this.audioUrl.set(null);
202
+ URL.revokeObjectURL(url);
203
+ }
204
+ }
205
+
206
+ private async startPlayback(audioElement: HTMLAudioElement): Promise<void> {
207
+ if (this.state() === 'ready' || this.state() === 'paused') {
208
+ try {
209
+ await audioElement.play();
210
+ this.state.set('playing');
211
+ } catch (error) {
212
+ console.error('Playback failed:', error);
213
+ const errorMsg = 'Could not play audio.';
214
+ this.error.set(errorMsg);
215
+ this.errorChange.emit(errorMsg);
216
+ this.state.set('ready');
217
+ }
218
+ }
219
+ }
220
+
221
+ private pausePlayback(audioElement: HTMLAudioElement): void {
222
+ if (this.state() === 'playing') {
223
+ audioElement.pause();
224
+ this.state.set('paused');
225
+ }
226
+ }
227
+
228
+ private startAnimationLoop(): void {
229
+ const player = this.audioPlayer().nativeElement;
230
+ const animate = () => {
231
+ const time = player.currentTime;
232
+ this.currentTime.set(time);
233
+ this.currentTimeChange.emit(time);
234
+ this.animationFrameId = requestAnimationFrame(animate);
235
+ };
236
+ animate();
237
+ }
238
+
239
+ private stopAnimationLoop(): void {
240
+ if (this.animationFrameId) {
241
+ cancelAnimationFrame(this.animationFrameId);
242
+ this.animationFrameId = null;
243
+ }
244
+ }
245
+ }