pdm-ui-kit 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 (772) hide show
  1. package/calendar/calendar.module.d.ts +1 -1
  2. package/calendar/date-picker.component.d.ts +2 -2
  3. package/command/command.component.d.ts +1 -1
  4. package/command/command.module.d.ts +1 -1
  5. package/context-menu/context-menu.component.d.ts +1 -1
  6. package/data-table/data-table.component.d.ts +1 -1
  7. package/data-table/draggable-table.component.d.ts +1 -1
  8. package/data-table/table.component.d.ts +1 -1
  9. package/drawer/drawer.module.d.ts +1 -1
  10. package/dropdown-menu/dropdown-menu.component.d.ts +1 -1
  11. package/empty/empty.module.d.ts +2 -2
  12. package/esm2020/calendar/calendar.module.mjs +2 -2
  13. package/esm2020/calendar/date-picker.component.mjs +4 -4
  14. package/esm2020/combobox/combobox.component.mjs +2 -2
  15. package/esm2020/command/command.component.mjs +2 -2
  16. package/esm2020/command/command.module.mjs +2 -2
  17. package/esm2020/context-menu/context-menu.component.mjs +2 -2
  18. package/esm2020/data-table/data-table.component.mjs +1 -1
  19. package/esm2020/data-table/draggable-table.component.mjs +1 -1
  20. package/esm2020/data-table/table.component.mjs +2 -2
  21. package/esm2020/dialog/dialog.component.mjs +3 -3
  22. package/esm2020/drawer/drawer.component.mjs +2 -2
  23. package/esm2020/drawer/drawer.module.mjs +2 -2
  24. package/esm2020/drawer/sheet.component.mjs +1 -1
  25. package/esm2020/dropdown-menu/dropdown-menu.component.mjs +3 -3
  26. package/esm2020/empty/empty.component.mjs +2 -2
  27. package/esm2020/empty/empty.module.mjs +3 -3
  28. package/esm2020/hover-card/hover-card.component.mjs +2 -2
  29. package/esm2020/input/input-group.component.mjs +1 -1
  30. package/esm2020/input/input-password.component.mjs +1 -1
  31. package/esm2020/input/input.module.mjs +2 -2
  32. package/esm2020/menubar/menubar.component.mjs +2 -2
  33. package/esm2020/native-select/native-select.component.mjs +1 -1
  34. package/esm2020/native-select/native-select.module.mjs +2 -2
  35. package/esm2020/pagination/pagination.component.mjs +3 -3
  36. package/esm2020/pagination/pagination.module.mjs +3 -3
  37. package/esm2020/popover/popover.component.mjs +2 -2
  38. package/esm2020/select/select.component.mjs +4 -4
  39. package/esm2020/select/select.module.mjs +2 -2
  40. package/esm2020/sonner/sonner.component.mjs +1 -1
  41. package/esm2020/sonner/sonner.module.mjs +2 -2
  42. package/esm2020/src/accordion/accordion.component.mjs +42 -0
  43. package/esm2020/src/accordion/accordion.module.mjs +21 -0
  44. package/esm2020/src/accordion/pdm-ui-kit-src-accordion.mjs +5 -0
  45. package/esm2020/src/accordion/public-api.mjs +3 -0
  46. package/esm2020/src/alert/alert-dialog.component.mjs +87 -0
  47. package/esm2020/src/alert/alert.component.mjs +35 -0
  48. package/esm2020/src/alert/alert.module.mjs +25 -0
  49. package/esm2020/src/alert/pdm-ui-kit-src-alert.mjs +5 -0
  50. package/esm2020/src/alert/public-api.mjs +4 -0
  51. package/esm2020/src/aspect-ratio/aspect-ratio.component.mjs +31 -0
  52. package/esm2020/src/aspect-ratio/aspect-ratio.module.mjs +21 -0
  53. package/esm2020/src/aspect-ratio/pdm-ui-kit-src-aspect-ratio.mjs +5 -0
  54. package/esm2020/src/aspect-ratio/public-api.mjs +3 -0
  55. package/esm2020/src/avatar/avatar.component.mjs +46 -0
  56. package/esm2020/src/avatar/avatar.module.mjs +21 -0
  57. package/esm2020/src/avatar/pdm-ui-kit-src-avatar.mjs +5 -0
  58. package/esm2020/src/avatar/public-api.mjs +3 -0
  59. package/esm2020/src/badge/badge.component.mjs +23 -0
  60. package/esm2020/src/badge/badge.module.mjs +21 -0
  61. package/esm2020/src/badge/pdm-ui-kit-src-badge.mjs +5 -0
  62. package/esm2020/src/badge/public-api.mjs +3 -0
  63. package/esm2020/src/breadcrumb/breadcrumb.component.mjs +62 -0
  64. package/esm2020/src/breadcrumb/breadcrumb.module.mjs +21 -0
  65. package/esm2020/src/breadcrumb/pdm-ui-kit-src-breadcrumb.mjs +5 -0
  66. package/esm2020/src/breadcrumb/public-api.mjs +3 -0
  67. package/esm2020/src/button/button-group.component.mjs +236 -0
  68. package/esm2020/src/button/button.component.mjs +114 -0
  69. package/esm2020/src/button/button.module.mjs +25 -0
  70. package/esm2020/src/button/pdm-ui-kit-src-button.mjs +5 -0
  71. package/esm2020/src/button/public-api.mjs +4 -0
  72. package/esm2020/src/calendar/calendar.component.mjs +529 -0
  73. package/esm2020/src/calendar/calendar.module.mjs +22 -0
  74. package/esm2020/src/calendar/date-picker.component.mjs +362 -0
  75. package/esm2020/src/calendar/pdm-ui-kit-src-calendar.mjs +5 -0
  76. package/esm2020/src/calendar/public-api.mjs +4 -0
  77. package/esm2020/src/card/card.component.mjs +48 -0
  78. package/esm2020/src/card/card.module.mjs +21 -0
  79. package/esm2020/src/card/pdm-ui-kit-src-card.mjs +5 -0
  80. package/esm2020/src/card/public-api.mjs +3 -0
  81. package/esm2020/src/carousel/carousel.component.mjs +102 -0
  82. package/esm2020/src/carousel/carousel.module.mjs +21 -0
  83. package/esm2020/src/carousel/pdm-ui-kit-src-carousel.mjs +5 -0
  84. package/esm2020/src/carousel/public-api.mjs +3 -0
  85. package/esm2020/src/chart/chart.component.mjs +177 -0
  86. package/esm2020/src/chart/chart.module.mjs +21 -0
  87. package/esm2020/src/chart/pdm-ui-kit-src-chart.mjs +5 -0
  88. package/esm2020/src/chart/public-api.mjs +3 -0
  89. package/esm2020/src/checkbox/checkbox.component.mjs +47 -0
  90. package/esm2020/src/checkbox/checkbox.module.mjs +21 -0
  91. package/esm2020/src/checkbox/pdm-ui-kit-src-checkbox.mjs +5 -0
  92. package/esm2020/src/checkbox/public-api.mjs +3 -0
  93. package/esm2020/src/collapsible/collapsible.component.mjs +43 -0
  94. package/esm2020/src/collapsible/collapsible.module.mjs +21 -0
  95. package/esm2020/src/collapsible/pdm-ui-kit-src-collapsible.mjs +5 -0
  96. package/esm2020/src/collapsible/public-api.mjs +3 -0
  97. package/esm2020/src/combobox/combobox.component.mjs +173 -0
  98. package/esm2020/src/combobox/combobox.module.mjs +22 -0
  99. package/esm2020/src/combobox/pdm-ui-kit-src-combobox.mjs +5 -0
  100. package/esm2020/src/combobox/public-api.mjs +3 -0
  101. package/esm2020/src/command/command.component.mjs +75 -0
  102. package/esm2020/src/command/command.module.mjs +20 -0
  103. package/esm2020/src/command/pdm-ui-kit-src-command.mjs +5 -0
  104. package/esm2020/src/command/public-api.mjs +3 -0
  105. package/esm2020/src/context-menu/context-menu.component.mjs +165 -0
  106. package/esm2020/src/context-menu/context-menu.module.mjs +22 -0
  107. package/esm2020/src/context-menu/pdm-ui-kit-src-context-menu.mjs +5 -0
  108. package/esm2020/src/context-menu/public-api.mjs +3 -0
  109. package/esm2020/src/data-table/data-table.component.mjs +299 -0
  110. package/esm2020/src/data-table/data-table.module.mjs +29 -0
  111. package/esm2020/src/data-table/draggable-table.component.mjs +300 -0
  112. package/esm2020/src/data-table/pdm-ui-kit-src-data-table.mjs +5 -0
  113. package/esm2020/src/data-table/public-api.mjs +5 -0
  114. package/esm2020/src/data-table/table.component.mjs +182 -0
  115. package/esm2020/src/dialog/dialog.component.mjs +265 -0
  116. package/esm2020/src/dialog/dialog.module.mjs +21 -0
  117. package/esm2020/src/dialog/pdm-ui-kit-src-dialog.mjs +5 -0
  118. package/esm2020/src/dialog/public-api.mjs +3 -0
  119. package/esm2020/src/drawer/drawer.component.mjs +217 -0
  120. package/esm2020/src/drawer/drawer.module.mjs +21 -0
  121. package/esm2020/src/drawer/pdm-ui-kit-src-drawer.mjs +5 -0
  122. package/esm2020/src/drawer/public-api.mjs +4 -0
  123. package/esm2020/src/drawer/sheet.component.mjs +116 -0
  124. package/esm2020/src/dropdown-menu/dropdown-menu.component.mjs +192 -0
  125. package/esm2020/src/dropdown-menu/dropdown-menu.module.mjs +22 -0
  126. package/esm2020/src/dropdown-menu/pdm-ui-kit-src-dropdown-menu.mjs +5 -0
  127. package/esm2020/src/dropdown-menu/public-api.mjs +3 -0
  128. package/esm2020/src/empty/empty.component.mjs +58 -0
  129. package/esm2020/src/empty/empty.module.mjs +21 -0
  130. package/esm2020/src/empty/pdm-ui-kit-src-empty.mjs +5 -0
  131. package/esm2020/src/empty/public-api.mjs +3 -0
  132. package/esm2020/src/field/field.component.mjs +64 -0
  133. package/esm2020/src/field/field.module.mjs +21 -0
  134. package/esm2020/src/field/pdm-ui-kit-src-field.mjs +5 -0
  135. package/esm2020/src/field/public-api.mjs +3 -0
  136. package/esm2020/src/hover-card/hover-card.component.mjs +205 -0
  137. package/esm2020/src/hover-card/hover-card.module.mjs +22 -0
  138. package/esm2020/src/hover-card/pdm-ui-kit-src-hover-card.mjs +5 -0
  139. package/esm2020/src/hover-card/public-api.mjs +3 -0
  140. package/esm2020/src/icon/icon.component.mjs +144 -0
  141. package/esm2020/src/icon/icon.module.mjs +21 -0
  142. package/esm2020/src/icon/pdm-ui-kit-src-icon.mjs +5 -0
  143. package/esm2020/src/icon/public-api.mjs +3 -0
  144. package/esm2020/src/input/input-group.component.mjs +63 -0
  145. package/esm2020/src/input/input-otp.component.mjs +144 -0
  146. package/esm2020/src/input/input-password.component.mjs +78 -0
  147. package/esm2020/src/input/input.component.mjs +71 -0
  148. package/esm2020/src/input/input.module.mjs +38 -0
  149. package/esm2020/src/input/pdm-ui-kit-src-input.mjs +5 -0
  150. package/esm2020/src/input/public-api.mjs +7 -0
  151. package/esm2020/src/input/textarea.component.mjs +59 -0
  152. package/esm2020/src/item/item.component.mjs +23 -0
  153. package/esm2020/src/item/item.module.mjs +21 -0
  154. package/esm2020/src/item/pdm-ui-kit-src-item.mjs +5 -0
  155. package/esm2020/src/item/public-api.mjs +3 -0
  156. package/esm2020/src/kbd/kbd.component.mjs +17 -0
  157. package/esm2020/src/kbd/kbd.module.mjs +21 -0
  158. package/esm2020/src/kbd/pdm-ui-kit-src-kbd.mjs +5 -0
  159. package/esm2020/src/kbd/public-api.mjs +3 -0
  160. package/esm2020/src/label/label.component.mjs +23 -0
  161. package/esm2020/src/label/label.module.mjs +21 -0
  162. package/esm2020/src/label/pdm-ui-kit-src-label.mjs +5 -0
  163. package/esm2020/src/label/public-api.mjs +3 -0
  164. package/esm2020/src/menubar/menubar.component.mjs +144 -0
  165. package/esm2020/src/menubar/menubar.module.mjs +22 -0
  166. package/esm2020/src/menubar/pdm-ui-kit-src-menubar.mjs +5 -0
  167. package/esm2020/src/menubar/public-api.mjs +3 -0
  168. package/esm2020/src/native-select/native-select.component.mjs +42 -0
  169. package/esm2020/src/native-select/native-select.module.mjs +20 -0
  170. package/esm2020/src/native-select/pdm-ui-kit-src-native-select.mjs +5 -0
  171. package/esm2020/src/native-select/public-api.mjs +3 -0
  172. package/esm2020/src/navigation-menu/navigation-menu.component.mjs +42 -0
  173. package/esm2020/src/navigation-menu/navigation-menu.module.mjs +21 -0
  174. package/esm2020/src/navigation-menu/pdm-ui-kit-src-navigation-menu.mjs +5 -0
  175. package/esm2020/src/navigation-menu/public-api.mjs +3 -0
  176. package/esm2020/src/overlay/create-flexible-position-strategy.mjs +54 -0
  177. package/esm2020/src/overlay/pdm-outside-click.directive.mjs +86 -0
  178. package/esm2020/src/overlay/pdm-outside-click.module.mjs +18 -0
  179. package/esm2020/src/overlay/pdm-overlay-options.mjs +2 -0
  180. package/esm2020/src/overlay/pdm-ui-kit-src-overlay.mjs +5 -0
  181. package/esm2020/src/overlay/public-api.mjs +6 -0
  182. package/esm2020/src/overlay/z-index-helper.mjs +69 -0
  183. package/esm2020/src/pagination/pagination.component.mjs +72 -0
  184. package/esm2020/src/pagination/pagination.module.mjs +21 -0
  185. package/esm2020/src/pagination/pdm-ui-kit-src-pagination.mjs +5 -0
  186. package/esm2020/src/pagination/public-api.mjs +3 -0
  187. package/esm2020/src/popover/pdm-ui-kit-src-popover.mjs +5 -0
  188. package/esm2020/src/popover/popover.component.mjs +162 -0
  189. package/esm2020/src/popover/popover.module.mjs +22 -0
  190. package/esm2020/src/popover/public-api.mjs +3 -0
  191. package/esm2020/src/progress/pdm-ui-kit-src-progress.mjs +5 -0
  192. package/esm2020/src/progress/progress.component.mjs +33 -0
  193. package/esm2020/src/progress/progress.module.mjs +21 -0
  194. package/esm2020/src/progress/public-api.mjs +3 -0
  195. package/esm2020/src/radio-group/pdm-ui-kit-src-radio-group.mjs +5 -0
  196. package/esm2020/src/radio-group/public-api.mjs +3 -0
  197. package/esm2020/src/radio-group/radio-group.component.mjs +38 -0
  198. package/esm2020/src/radio-group/radio-group.module.mjs +21 -0
  199. package/esm2020/src/scroll-area/pdm-ui-kit-src-scroll-area.mjs +5 -0
  200. package/esm2020/src/scroll-area/public-api.mjs +3 -0
  201. package/esm2020/src/scroll-area/scroll-area.component.mjs +20 -0
  202. package/esm2020/src/scroll-area/scroll-area.module.mjs +21 -0
  203. package/esm2020/src/select/pdm-ui-kit-src-select.mjs +5 -0
  204. package/esm2020/src/select/public-api.mjs +4 -0
  205. package/esm2020/src/select/select-option.directive.mjs +55 -0
  206. package/esm2020/src/select/select.component.mjs +164 -0
  207. package/esm2020/src/select/select.module.mjs +22 -0
  208. package/esm2020/src/separator/pdm-ui-kit-src-separator.mjs +5 -0
  209. package/esm2020/src/separator/public-api.mjs +3 -0
  210. package/esm2020/src/separator/separator.component.mjs +26 -0
  211. package/esm2020/src/separator/separator.module.mjs +21 -0
  212. package/esm2020/src/sidebar/pdm-ui-kit-src-sidebar.mjs +5 -0
  213. package/esm2020/src/sidebar/public-api.mjs +3 -0
  214. package/esm2020/src/sidebar/sidebar.component.mjs +67 -0
  215. package/esm2020/src/sidebar/sidebar.module.mjs +21 -0
  216. package/esm2020/src/skeleton/pdm-ui-kit-src-skeleton.mjs +5 -0
  217. package/esm2020/src/skeleton/public-api.mjs +3 -0
  218. package/esm2020/src/skeleton/skeleton.component.mjs +17 -0
  219. package/esm2020/src/skeleton/skeleton.module.mjs +21 -0
  220. package/esm2020/src/slider/pdm-ui-kit-src-slider.mjs +5 -0
  221. package/esm2020/src/slider/public-api.mjs +3 -0
  222. package/esm2020/src/slider/slider.component.mjs +46 -0
  223. package/esm2020/src/slider/slider.module.mjs +21 -0
  224. package/esm2020/src/sonner/pdm-ui-kit-src-sonner.mjs +5 -0
  225. package/esm2020/src/sonner/public-api.mjs +3 -0
  226. package/esm2020/src/sonner/sonner.component.mjs +39 -0
  227. package/esm2020/src/sonner/sonner.module.mjs +20 -0
  228. package/esm2020/src/spinner/pdm-ui-kit-src-spinner.mjs +5 -0
  229. package/esm2020/src/spinner/public-api.mjs +3 -0
  230. package/esm2020/src/spinner/spinner.component.mjs +20 -0
  231. package/esm2020/src/spinner/spinner.module.mjs +21 -0
  232. package/esm2020/src/switch/pdm-ui-kit-src-switch.mjs +5 -0
  233. package/esm2020/src/switch/public-api.mjs +3 -0
  234. package/esm2020/src/switch/switch.component.mjs +58 -0
  235. package/esm2020/src/switch/switch.module.mjs +21 -0
  236. package/esm2020/src/tabs/pdm-ui-kit-src-tabs.mjs +5 -0
  237. package/esm2020/src/tabs/public-api.mjs +3 -0
  238. package/esm2020/src/tabs/tabs.component.mjs +34 -0
  239. package/esm2020/src/tabs/tabs.module.mjs +21 -0
  240. package/esm2020/src/toggle/pdm-ui-kit-src-toggle.mjs +5 -0
  241. package/esm2020/src/toggle/public-api.mjs +4 -0
  242. package/esm2020/src/toggle/toggle-group.component.mjs +31 -0
  243. package/esm2020/src/toggle/toggle.component.mjs +41 -0
  244. package/esm2020/src/toggle/toggle.module.mjs +25 -0
  245. package/esm2020/src/tooltip/pdm-ui-kit-src-tooltip.mjs +5 -0
  246. package/esm2020/src/tooltip/public-api.mjs +3 -0
  247. package/esm2020/src/tooltip/tooltip.component.mjs +176 -0
  248. package/esm2020/src/tooltip/tooltip.module.mjs +22 -0
  249. package/esm2020/src/utils/pdm-ui-kit-src-utils.mjs +5 -0
  250. package/esm2020/src/utils/public-api.mjs +3 -0
  251. package/esm2020/src/utils/responsive.mjs +143 -0
  252. package/esm2020/src/utils/z-index.mjs +90 -0
  253. package/esm2020/tooltip/tooltip.component.mjs +2 -2
  254. package/fesm2015/pdm-ui-kit-src-accordion.mjs +68 -0
  255. package/fesm2015/pdm-ui-kit-src-accordion.mjs.map +1 -0
  256. package/fesm2015/pdm-ui-kit-src-alert.mjs +147 -0
  257. package/fesm2015/pdm-ui-kit-src-alert.mjs.map +1 -0
  258. package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs +56 -0
  259. package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -0
  260. package/fesm2015/pdm-ui-kit-src-avatar.mjs +71 -0
  261. package/fesm2015/pdm-ui-kit-src-avatar.mjs.map +1 -0
  262. package/fesm2015/pdm-ui-kit-src-badge.mjs +48 -0
  263. package/fesm2015/pdm-ui-kit-src-badge.mjs.map +1 -0
  264. package/fesm2015/pdm-ui-kit-src-breadcrumb.mjs +87 -0
  265. package/fesm2015/pdm-ui-kit-src-breadcrumb.mjs.map +1 -0
  266. package/fesm2015/pdm-ui-kit-src-button.mjs +376 -0
  267. package/fesm2015/pdm-ui-kit-src-button.mjs.map +1 -0
  268. package/fesm2015/pdm-ui-kit-src-calendar.mjs +912 -0
  269. package/fesm2015/pdm-ui-kit-src-calendar.mjs.map +1 -0
  270. package/fesm2015/pdm-ui-kit-src-card.mjs +73 -0
  271. package/fesm2015/pdm-ui-kit-src-card.mjs.map +1 -0
  272. package/fesm2015/pdm-ui-kit-src-carousel.mjs +127 -0
  273. package/fesm2015/pdm-ui-kit-src-carousel.mjs.map +1 -0
  274. package/fesm2015/pdm-ui-kit-src-chart.mjs +203 -0
  275. package/fesm2015/pdm-ui-kit-src-chart.mjs.map +1 -0
  276. package/fesm2015/pdm-ui-kit-src-checkbox.mjs +72 -0
  277. package/fesm2015/pdm-ui-kit-src-checkbox.mjs.map +1 -0
  278. package/fesm2015/pdm-ui-kit-src-collapsible.mjs +68 -0
  279. package/fesm2015/pdm-ui-kit-src-collapsible.mjs.map +1 -0
  280. package/fesm2015/pdm-ui-kit-src-combobox.mjs +200 -0
  281. package/fesm2015/pdm-ui-kit-src-combobox.mjs.map +1 -0
  282. package/fesm2015/pdm-ui-kit-src-command.mjs +100 -0
  283. package/fesm2015/pdm-ui-kit-src-command.mjs.map +1 -0
  284. package/fesm2015/pdm-ui-kit-src-context-menu.mjs +191 -0
  285. package/fesm2015/pdm-ui-kit-src-context-menu.mjs.map +1 -0
  286. package/fesm2015/pdm-ui-kit-src-data-table.mjs +806 -0
  287. package/fesm2015/pdm-ui-kit-src-data-table.mjs.map +1 -0
  288. package/fesm2015/pdm-ui-kit-src-dialog.mjs +289 -0
  289. package/fesm2015/pdm-ui-kit-src-dialog.mjs.map +1 -0
  290. package/fesm2015/pdm-ui-kit-src-drawer.mjs +354 -0
  291. package/fesm2015/pdm-ui-kit-src-drawer.mjs.map +1 -0
  292. package/fesm2015/pdm-ui-kit-src-dropdown-menu.mjs +212 -0
  293. package/fesm2015/pdm-ui-kit-src-dropdown-menu.mjs.map +1 -0
  294. package/fesm2015/pdm-ui-kit-src-empty.mjs +83 -0
  295. package/fesm2015/pdm-ui-kit-src-empty.mjs.map +1 -0
  296. package/fesm2015/pdm-ui-kit-src-field.mjs +89 -0
  297. package/fesm2015/pdm-ui-kit-src-field.mjs.map +1 -0
  298. package/fesm2015/pdm-ui-kit-src-hover-card.mjs +231 -0
  299. package/fesm2015/pdm-ui-kit-src-hover-card.mjs.map +1 -0
  300. package/fesm2015/pdm-ui-kit-src-icon.mjs +172 -0
  301. package/fesm2015/pdm-ui-kit-src-icon.mjs.map +1 -0
  302. package/fesm2015/pdm-ui-kit-src-input.mjs +443 -0
  303. package/fesm2015/pdm-ui-kit-src-input.mjs.map +1 -0
  304. package/fesm2015/pdm-ui-kit-src-item.mjs +48 -0
  305. package/fesm2015/pdm-ui-kit-src-item.mjs.map +1 -0
  306. package/fesm2015/pdm-ui-kit-src-kbd.mjs +42 -0
  307. package/fesm2015/pdm-ui-kit-src-kbd.mjs.map +1 -0
  308. package/fesm2015/pdm-ui-kit-src-label.mjs +48 -0
  309. package/fesm2015/pdm-ui-kit-src-label.mjs.map +1 -0
  310. package/fesm2015/pdm-ui-kit-src-menubar.mjs +170 -0
  311. package/fesm2015/pdm-ui-kit-src-menubar.mjs.map +1 -0
  312. package/fesm2015/pdm-ui-kit-src-native-select.mjs +66 -0
  313. package/fesm2015/pdm-ui-kit-src-native-select.mjs.map +1 -0
  314. package/fesm2015/pdm-ui-kit-src-navigation-menu.mjs +67 -0
  315. package/fesm2015/pdm-ui-kit-src-navigation-menu.mjs.map +1 -0
  316. package/fesm2015/pdm-ui-kit-src-overlay.mjs +225 -0
  317. package/fesm2015/pdm-ui-kit-src-overlay.mjs.map +1 -0
  318. package/fesm2015/pdm-ui-kit-src-pagination.mjs +97 -0
  319. package/fesm2015/pdm-ui-kit-src-pagination.mjs.map +1 -0
  320. package/fesm2015/pdm-ui-kit-src-popover.mjs +189 -0
  321. package/fesm2015/pdm-ui-kit-src-popover.mjs.map +1 -0
  322. package/fesm2015/pdm-ui-kit-src-progress.mjs +58 -0
  323. package/fesm2015/pdm-ui-kit-src-progress.mjs.map +1 -0
  324. package/fesm2015/pdm-ui-kit-src-radio-group.mjs +63 -0
  325. package/fesm2015/pdm-ui-kit-src-radio-group.mjs.map +1 -0
  326. package/fesm2015/pdm-ui-kit-src-scroll-area.mjs +45 -0
  327. package/fesm2015/pdm-ui-kit-src-scroll-area.mjs.map +1 -0
  328. package/fesm2015/pdm-ui-kit-src-select.mjs +238 -0
  329. package/fesm2015/pdm-ui-kit-src-select.mjs.map +1 -0
  330. package/fesm2015/pdm-ui-kit-src-separator.mjs +51 -0
  331. package/fesm2015/pdm-ui-kit-src-separator.mjs.map +1 -0
  332. package/fesm2015/pdm-ui-kit-src-sidebar.mjs +92 -0
  333. package/fesm2015/pdm-ui-kit-src-sidebar.mjs.map +1 -0
  334. package/fesm2015/pdm-ui-kit-src-skeleton.mjs +42 -0
  335. package/fesm2015/pdm-ui-kit-src-skeleton.mjs.map +1 -0
  336. package/fesm2015/pdm-ui-kit-src-slider.mjs +71 -0
  337. package/fesm2015/pdm-ui-kit-src-slider.mjs.map +1 -0
  338. package/fesm2015/pdm-ui-kit-src-sonner.mjs +63 -0
  339. package/fesm2015/pdm-ui-kit-src-sonner.mjs.map +1 -0
  340. package/fesm2015/pdm-ui-kit-src-spinner.mjs +45 -0
  341. package/fesm2015/pdm-ui-kit-src-spinner.mjs.map +1 -0
  342. package/fesm2015/pdm-ui-kit-src-switch.mjs +83 -0
  343. package/fesm2015/pdm-ui-kit-src-switch.mjs.map +1 -0
  344. package/fesm2015/pdm-ui-kit-src-tabs.mjs +59 -0
  345. package/fesm2015/pdm-ui-kit-src-tabs.mjs.map +1 -0
  346. package/fesm2015/pdm-ui-kit-src-toggle.mjs +97 -0
  347. package/fesm2015/pdm-ui-kit-src-toggle.mjs.map +1 -0
  348. package/fesm2015/pdm-ui-kit-src-tooltip.mjs +202 -0
  349. package/fesm2015/pdm-ui-kit-src-tooltip.mjs.map +1 -0
  350. package/fesm2015/pdm-ui-kit-src-utils.mjs +239 -0
  351. package/fesm2015/pdm-ui-kit-src-utils.mjs.map +1 -0
  352. package/fesm2015/pdm-ui-kit.mjs +1019 -1009
  353. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  354. package/fesm2020/pdm-ui-kit-src-accordion.mjs +67 -0
  355. package/fesm2020/pdm-ui-kit-src-accordion.mjs.map +1 -0
  356. package/fesm2020/pdm-ui-kit-src-alert.mjs +147 -0
  357. package/fesm2020/pdm-ui-kit-src-alert.mjs.map +1 -0
  358. package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs +56 -0
  359. package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -0
  360. package/fesm2020/pdm-ui-kit-src-avatar.mjs +71 -0
  361. package/fesm2020/pdm-ui-kit-src-avatar.mjs.map +1 -0
  362. package/fesm2020/pdm-ui-kit-src-badge.mjs +48 -0
  363. package/fesm2020/pdm-ui-kit-src-badge.mjs.map +1 -0
  364. package/fesm2020/pdm-ui-kit-src-breadcrumb.mjs +87 -0
  365. package/fesm2020/pdm-ui-kit-src-breadcrumb.mjs.map +1 -0
  366. package/fesm2020/pdm-ui-kit-src-button.mjs +375 -0
  367. package/fesm2020/pdm-ui-kit-src-button.mjs.map +1 -0
  368. package/fesm2020/pdm-ui-kit-src-calendar.mjs +911 -0
  369. package/fesm2020/pdm-ui-kit-src-calendar.mjs.map +1 -0
  370. package/fesm2020/pdm-ui-kit-src-card.mjs +73 -0
  371. package/fesm2020/pdm-ui-kit-src-card.mjs.map +1 -0
  372. package/fesm2020/pdm-ui-kit-src-carousel.mjs +127 -0
  373. package/fesm2020/pdm-ui-kit-src-carousel.mjs.map +1 -0
  374. package/fesm2020/pdm-ui-kit-src-chart.mjs +202 -0
  375. package/fesm2020/pdm-ui-kit-src-chart.mjs.map +1 -0
  376. package/fesm2020/pdm-ui-kit-src-checkbox.mjs +72 -0
  377. package/fesm2020/pdm-ui-kit-src-checkbox.mjs.map +1 -0
  378. package/fesm2020/pdm-ui-kit-src-collapsible.mjs +68 -0
  379. package/fesm2020/pdm-ui-kit-src-collapsible.mjs.map +1 -0
  380. package/fesm2020/pdm-ui-kit-src-combobox.mjs +199 -0
  381. package/fesm2020/pdm-ui-kit-src-combobox.mjs.map +1 -0
  382. package/fesm2020/pdm-ui-kit-src-command.mjs +99 -0
  383. package/fesm2020/pdm-ui-kit-src-command.mjs.map +1 -0
  384. package/fesm2020/pdm-ui-kit-src-context-menu.mjs +191 -0
  385. package/fesm2020/pdm-ui-kit-src-context-menu.mjs.map +1 -0
  386. package/fesm2020/pdm-ui-kit-src-data-table.mjs +805 -0
  387. package/fesm2020/pdm-ui-kit-src-data-table.mjs.map +1 -0
  388. package/fesm2020/pdm-ui-kit-src-dialog.mjs +289 -0
  389. package/fesm2020/pdm-ui-kit-src-dialog.mjs.map +1 -0
  390. package/fesm2020/pdm-ui-kit-src-drawer.mjs +354 -0
  391. package/fesm2020/pdm-ui-kit-src-drawer.mjs.map +1 -0
  392. package/fesm2020/pdm-ui-kit-src-dropdown-menu.mjs +218 -0
  393. package/fesm2020/pdm-ui-kit-src-dropdown-menu.mjs.map +1 -0
  394. package/fesm2020/pdm-ui-kit-src-empty.mjs +83 -0
  395. package/fesm2020/pdm-ui-kit-src-empty.mjs.map +1 -0
  396. package/fesm2020/pdm-ui-kit-src-field.mjs +89 -0
  397. package/fesm2020/pdm-ui-kit-src-field.mjs.map +1 -0
  398. package/fesm2020/pdm-ui-kit-src-hover-card.mjs +231 -0
  399. package/fesm2020/pdm-ui-kit-src-hover-card.mjs.map +1 -0
  400. package/fesm2020/pdm-ui-kit-src-icon.mjs +169 -0
  401. package/fesm2020/pdm-ui-kit-src-icon.mjs.map +1 -0
  402. package/fesm2020/pdm-ui-kit-src-input.mjs +441 -0
  403. package/fesm2020/pdm-ui-kit-src-input.mjs.map +1 -0
  404. package/fesm2020/pdm-ui-kit-src-item.mjs +48 -0
  405. package/fesm2020/pdm-ui-kit-src-item.mjs.map +1 -0
  406. package/fesm2020/pdm-ui-kit-src-kbd.mjs +42 -0
  407. package/fesm2020/pdm-ui-kit-src-kbd.mjs.map +1 -0
  408. package/fesm2020/pdm-ui-kit-src-label.mjs +48 -0
  409. package/fesm2020/pdm-ui-kit-src-label.mjs.map +1 -0
  410. package/fesm2020/pdm-ui-kit-src-menubar.mjs +170 -0
  411. package/fesm2020/pdm-ui-kit-src-menubar.mjs.map +1 -0
  412. package/fesm2020/pdm-ui-kit-src-native-select.mjs +66 -0
  413. package/fesm2020/pdm-ui-kit-src-native-select.mjs.map +1 -0
  414. package/fesm2020/pdm-ui-kit-src-navigation-menu.mjs +67 -0
  415. package/fesm2020/pdm-ui-kit-src-navigation-menu.mjs.map +1 -0
  416. package/fesm2020/pdm-ui-kit-src-overlay.mjs +229 -0
  417. package/fesm2020/pdm-ui-kit-src-overlay.mjs.map +1 -0
  418. package/fesm2020/pdm-ui-kit-src-pagination.mjs +97 -0
  419. package/fesm2020/pdm-ui-kit-src-pagination.mjs.map +1 -0
  420. package/fesm2020/pdm-ui-kit-src-popover.mjs +188 -0
  421. package/fesm2020/pdm-ui-kit-src-popover.mjs.map +1 -0
  422. package/fesm2020/pdm-ui-kit-src-progress.mjs +58 -0
  423. package/fesm2020/pdm-ui-kit-src-progress.mjs.map +1 -0
  424. package/fesm2020/pdm-ui-kit-src-radio-group.mjs +63 -0
  425. package/fesm2020/pdm-ui-kit-src-radio-group.mjs.map +1 -0
  426. package/fesm2020/pdm-ui-kit-src-scroll-area.mjs +45 -0
  427. package/fesm2020/pdm-ui-kit-src-scroll-area.mjs.map +1 -0
  428. package/fesm2020/pdm-ui-kit-src-select.mjs +241 -0
  429. package/fesm2020/pdm-ui-kit-src-select.mjs.map +1 -0
  430. package/fesm2020/pdm-ui-kit-src-separator.mjs +51 -0
  431. package/fesm2020/pdm-ui-kit-src-separator.mjs.map +1 -0
  432. package/fesm2020/pdm-ui-kit-src-sidebar.mjs +92 -0
  433. package/fesm2020/pdm-ui-kit-src-sidebar.mjs.map +1 -0
  434. package/fesm2020/pdm-ui-kit-src-skeleton.mjs +42 -0
  435. package/fesm2020/pdm-ui-kit-src-skeleton.mjs.map +1 -0
  436. package/fesm2020/pdm-ui-kit-src-slider.mjs +71 -0
  437. package/fesm2020/pdm-ui-kit-src-slider.mjs.map +1 -0
  438. package/fesm2020/pdm-ui-kit-src-sonner.mjs +63 -0
  439. package/fesm2020/pdm-ui-kit-src-sonner.mjs.map +1 -0
  440. package/fesm2020/pdm-ui-kit-src-spinner.mjs +45 -0
  441. package/fesm2020/pdm-ui-kit-src-spinner.mjs.map +1 -0
  442. package/fesm2020/pdm-ui-kit-src-switch.mjs +83 -0
  443. package/fesm2020/pdm-ui-kit-src-switch.mjs.map +1 -0
  444. package/fesm2020/pdm-ui-kit-src-tabs.mjs +59 -0
  445. package/fesm2020/pdm-ui-kit-src-tabs.mjs.map +1 -0
  446. package/fesm2020/pdm-ui-kit-src-toggle.mjs +97 -0
  447. package/fesm2020/pdm-ui-kit-src-toggle.mjs.map +1 -0
  448. package/fesm2020/pdm-ui-kit-src-tooltip.mjs +202 -0
  449. package/fesm2020/pdm-ui-kit-src-tooltip.mjs.map +1 -0
  450. package/fesm2020/pdm-ui-kit-src-utils.mjs +239 -0
  451. package/fesm2020/pdm-ui-kit-src-utils.mjs.map +1 -0
  452. package/fesm2020/pdm-ui-kit.mjs +1022 -1012
  453. package/fesm2020/pdm-ui-kit.mjs.map +1 -1
  454. package/input/input-password.component.d.ts +1 -1
  455. package/input/input.module.d.ts +1 -1
  456. package/menubar/menubar.component.d.ts +1 -1
  457. package/native-select/native-select.module.d.ts +1 -1
  458. package/package.json +703 -115
  459. package/pagination/pagination.component.d.ts +1 -1
  460. package/pagination/pagination.module.d.ts +2 -2
  461. package/select/select.component.d.ts +1 -1
  462. package/select/select.module.d.ts +1 -1
  463. package/sonner/sonner.module.d.ts +1 -1
  464. package/src/accordion/accordion.component.d.ts +19 -0
  465. package/src/accordion/accordion.module.d.ts +8 -0
  466. package/src/accordion/index.d.ts +5 -0
  467. package/src/accordion/public-api.d.ts +2 -0
  468. package/src/alert/alert-dialog.component.d.ts +29 -0
  469. package/src/alert/alert.component.d.ts +13 -0
  470. package/src/alert/alert.module.d.ts +9 -0
  471. package/src/alert/index.d.ts +5 -0
  472. package/src/alert/public-api.d.ts +3 -0
  473. package/src/aspect-ratio/aspect-ratio.component.d.ts +10 -0
  474. package/src/aspect-ratio/aspect-ratio.module.d.ts +8 -0
  475. package/src/aspect-ratio/index.d.ts +5 -0
  476. package/src/aspect-ratio/public-api.d.ts +2 -0
  477. package/src/avatar/avatar.component.d.ts +20 -0
  478. package/src/avatar/avatar.module.d.ts +8 -0
  479. package/src/avatar/index.d.ts +5 -0
  480. package/src/avatar/public-api.d.ts +2 -0
  481. package/src/badge/badge.component.d.ts +9 -0
  482. package/src/badge/badge.module.d.ts +8 -0
  483. package/src/badge/index.d.ts +5 -0
  484. package/src/badge/public-api.d.ts +2 -0
  485. package/src/breadcrumb/breadcrumb.component.d.ts +32 -0
  486. package/src/breadcrumb/breadcrumb.module.d.ts +8 -0
  487. package/src/breadcrumb/index.d.ts +5 -0
  488. package/src/breadcrumb/public-api.d.ts +2 -0
  489. package/src/button/button-group.component.d.ts +19 -0
  490. package/src/button/button.component.d.ts +29 -0
  491. package/src/button/button.module.d.ts +9 -0
  492. package/src/button/index.d.ts +5 -0
  493. package/src/button/public-api.d.ts +3 -0
  494. package/src/calendar/calendar.component.d.ts +149 -0
  495. package/src/calendar/calendar.module.d.ts +11 -0
  496. package/src/calendar/date-picker.component.d.ts +89 -0
  497. package/src/calendar/index.d.ts +5 -0
  498. package/src/calendar/public-api.d.ts +3 -0
  499. package/src/card/card.component.d.ts +37 -0
  500. package/src/card/card.module.d.ts +8 -0
  501. package/src/card/index.d.ts +5 -0
  502. package/src/card/public-api.d.ts +2 -0
  503. package/src/carousel/carousel.component.d.ts +28 -0
  504. package/src/carousel/carousel.module.d.ts +8 -0
  505. package/src/carousel/index.d.ts +5 -0
  506. package/src/carousel/public-api.d.ts +2 -0
  507. package/src/chart/chart.component.d.ts +44 -0
  508. package/src/chart/chart.module.d.ts +8 -0
  509. package/src/chart/index.d.ts +5 -0
  510. package/src/chart/public-api.d.ts +2 -0
  511. package/src/checkbox/checkbox.component.d.ts +17 -0
  512. package/src/checkbox/checkbox.module.d.ts +8 -0
  513. package/src/checkbox/index.d.ts +5 -0
  514. package/src/checkbox/public-api.d.ts +2 -0
  515. package/src/collapsible/collapsible.component.d.ts +14 -0
  516. package/src/collapsible/collapsible.module.d.ts +8 -0
  517. package/src/collapsible/index.d.ts +5 -0
  518. package/src/collapsible/public-api.d.ts +2 -0
  519. package/src/combobox/combobox.component.d.ts +35 -0
  520. package/src/combobox/combobox.module.d.ts +9 -0
  521. package/src/combobox/index.d.ts +5 -0
  522. package/src/combobox/public-api.d.ts +2 -0
  523. package/src/command/command.component.d.ts +33 -0
  524. package/src/command/command.module.d.ts +9 -0
  525. package/src/command/index.d.ts +5 -0
  526. package/src/command/public-api.d.ts +2 -0
  527. package/src/context-menu/context-menu.component.d.ts +38 -0
  528. package/src/context-menu/context-menu.module.d.ts +9 -0
  529. package/src/context-menu/index.d.ts +5 -0
  530. package/src/context-menu/public-api.d.ts +2 -0
  531. package/src/data-table/data-table.component.d.ts +200 -0
  532. package/src/data-table/data-table.module.d.ts +10 -0
  533. package/src/data-table/draggable-table.component.d.ts +74 -0
  534. package/src/data-table/index.d.ts +5 -0
  535. package/src/data-table/public-api.d.ts +4 -0
  536. package/src/data-table/table.component.d.ts +55 -0
  537. package/src/dialog/dialog.component.d.ts +72 -0
  538. package/src/dialog/dialog.module.d.ts +8 -0
  539. package/src/dialog/index.d.ts +5 -0
  540. package/src/dialog/public-api.d.ts +2 -0
  541. package/src/drawer/drawer.component.d.ts +96 -0
  542. package/src/drawer/drawer.module.d.ts +10 -0
  543. package/src/drawer/index.d.ts +5 -0
  544. package/src/drawer/public-api.d.ts +3 -0
  545. package/src/drawer/sheet.component.d.ts +46 -0
  546. package/src/dropdown-menu/dropdown-menu.component.d.ts +61 -0
  547. package/src/dropdown-menu/dropdown-menu.module.d.ts +9 -0
  548. package/src/dropdown-menu/index.d.ts +5 -0
  549. package/src/dropdown-menu/public-api.d.ts +2 -0
  550. package/src/empty/empty.component.d.ts +19 -0
  551. package/src/empty/empty.module.d.ts +10 -0
  552. package/src/empty/index.d.ts +5 -0
  553. package/src/empty/public-api.d.ts +2 -0
  554. package/src/field/field.component.d.ts +23 -0
  555. package/src/field/field.module.d.ts +8 -0
  556. package/src/field/index.d.ts +5 -0
  557. package/src/field/public-api.d.ts +2 -0
  558. package/src/hover-card/hover-card.component.d.ts +37 -0
  559. package/src/hover-card/hover-card.module.d.ts +9 -0
  560. package/src/hover-card/index.d.ts +5 -0
  561. package/src/hover-card/public-api.d.ts +2 -0
  562. package/src/icon/icon.component.d.ts +28 -0
  563. package/src/icon/icon.module.d.ts +8 -0
  564. package/src/icon/index.d.ts +5 -0
  565. package/src/icon/public-api.d.ts +2 -0
  566. package/src/input/index.d.ts +5 -0
  567. package/src/input/input-group.component.d.ts +22 -0
  568. package/src/input/input-otp.component.d.ts +26 -0
  569. package/src/input/input-password.component.d.ts +28 -0
  570. package/src/input/input.component.d.ts +27 -0
  571. package/src/input/input.module.d.ts +13 -0
  572. package/src/input/public-api.d.ts +6 -0
  573. package/src/input/textarea.component.d.ts +21 -0
  574. package/src/item/index.d.ts +5 -0
  575. package/src/item/item.component.d.ts +8 -0
  576. package/src/item/item.module.d.ts +8 -0
  577. package/src/item/public-api.d.ts +2 -0
  578. package/src/kbd/index.d.ts +5 -0
  579. package/src/kbd/kbd.component.d.ts +6 -0
  580. package/src/kbd/kbd.module.d.ts +8 -0
  581. package/src/kbd/public-api.d.ts +2 -0
  582. package/src/label/index.d.ts +5 -0
  583. package/src/label/label.component.d.ts +8 -0
  584. package/src/label/label.module.d.ts +8 -0
  585. package/src/label/public-api.d.ts +2 -0
  586. package/src/menubar/index.d.ts +5 -0
  587. package/src/menubar/menubar.component.d.ts +34 -0
  588. package/src/menubar/menubar.module.d.ts +9 -0
  589. package/src/menubar/public-api.d.ts +2 -0
  590. package/src/native-select/index.d.ts +5 -0
  591. package/src/native-select/native-select.component.d.ts +20 -0
  592. package/src/native-select/native-select.module.d.ts +9 -0
  593. package/src/native-select/public-api.d.ts +2 -0
  594. package/src/navigation-menu/index.d.ts +5 -0
  595. package/src/navigation-menu/navigation-menu.component.d.ts +33 -0
  596. package/src/navigation-menu/navigation-menu.module.d.ts +8 -0
  597. package/src/navigation-menu/public-api.d.ts +2 -0
  598. package/src/overlay/create-flexible-position-strategy.d.ts +15 -0
  599. package/src/overlay/index.d.ts +5 -0
  600. package/src/overlay/pdm-outside-click.directive.d.ts +40 -0
  601. package/src/overlay/pdm-outside-click.module.d.ts +8 -0
  602. package/src/overlay/pdm-overlay-options.d.ts +21 -0
  603. package/src/overlay/public-api.d.ts +5 -0
  604. package/src/overlay/z-index-helper.d.ts +36 -0
  605. package/src/pagination/index.d.ts +5 -0
  606. package/src/pagination/pagination.component.d.ts +21 -0
  607. package/src/pagination/pagination.module.d.ts +10 -0
  608. package/src/pagination/public-api.d.ts +2 -0
  609. package/src/popover/index.d.ts +5 -0
  610. package/src/popover/popover.component.d.ts +32 -0
  611. package/src/popover/popover.module.d.ts +9 -0
  612. package/src/popover/public-api.d.ts +2 -0
  613. package/src/progress/index.d.ts +5 -0
  614. package/src/progress/progress.component.d.ts +10 -0
  615. package/src/progress/progress.module.d.ts +8 -0
  616. package/src/progress/public-api.d.ts +2 -0
  617. package/src/radio-group/index.d.ts +5 -0
  618. package/src/radio-group/public-api.d.ts +2 -0
  619. package/src/radio-group/radio-group.component.d.ts +19 -0
  620. package/src/radio-group/radio-group.module.d.ts +8 -0
  621. package/src/scroll-area/index.d.ts +5 -0
  622. package/src/scroll-area/public-api.d.ts +2 -0
  623. package/src/scroll-area/scroll-area.component.d.ts +7 -0
  624. package/src/scroll-area/scroll-area.module.d.ts +8 -0
  625. package/src/select/index.d.ts +5 -0
  626. package/src/select/public-api.d.ts +3 -0
  627. package/src/select/select-option.directive.d.ts +34 -0
  628. package/src/select/select.component.d.ts +55 -0
  629. package/src/select/select.module.d.ts +11 -0
  630. package/src/separator/index.d.ts +5 -0
  631. package/src/separator/public-api.d.ts +2 -0
  632. package/src/separator/separator.component.d.ts +9 -0
  633. package/src/separator/separator.module.d.ts +8 -0
  634. package/src/sidebar/index.d.ts +5 -0
  635. package/src/sidebar/public-api.d.ts +2 -0
  636. package/src/sidebar/sidebar.component.d.ts +45 -0
  637. package/src/sidebar/sidebar.module.d.ts +8 -0
  638. package/src/skeleton/index.d.ts +5 -0
  639. package/src/skeleton/public-api.d.ts +2 -0
  640. package/src/skeleton/skeleton.component.d.ts +6 -0
  641. package/src/skeleton/skeleton.module.d.ts +8 -0
  642. package/src/slider/index.d.ts +5 -0
  643. package/src/slider/public-api.d.ts +2 -0
  644. package/src/slider/slider.component.d.ts +15 -0
  645. package/src/slider/slider.module.d.ts +8 -0
  646. package/src/sonner/index.d.ts +5 -0
  647. package/src/sonner/public-api.d.ts +2 -0
  648. package/src/sonner/sonner.component.d.ts +13 -0
  649. package/src/sonner/sonner.module.d.ts +9 -0
  650. package/src/spinner/index.d.ts +5 -0
  651. package/src/spinner/public-api.d.ts +2 -0
  652. package/src/spinner/spinner.component.d.ts +7 -0
  653. package/src/spinner/spinner.module.d.ts +8 -0
  654. package/src/switch/index.d.ts +5 -0
  655. package/src/switch/public-api.d.ts +2 -0
  656. package/src/switch/switch.component.d.ts +18 -0
  657. package/src/switch/switch.module.d.ts +8 -0
  658. package/src/tabs/index.d.ts +5 -0
  659. package/src/tabs/public-api.d.ts +2 -0
  660. package/src/tabs/tabs.component.d.ts +18 -0
  661. package/src/tabs/tabs.module.d.ts +8 -0
  662. package/src/toggle/index.d.ts +5 -0
  663. package/src/toggle/public-api.d.ts +3 -0
  664. package/src/toggle/toggle-group.component.d.ts +16 -0
  665. package/src/toggle/toggle.component.d.ts +14 -0
  666. package/src/toggle/toggle.module.d.ts +9 -0
  667. package/src/tooltip/index.d.ts +5 -0
  668. package/src/tooltip/public-api.d.ts +2 -0
  669. package/src/tooltip/tooltip.component.d.ts +28 -0
  670. package/src/tooltip/tooltip.module.d.ts +9 -0
  671. package/src/utils/index.d.ts +5 -0
  672. package/src/utils/public-api.d.ts +2 -0
  673. package/src/utils/responsive.d.ts +107 -0
  674. package/src/utils/z-index.d.ts +69 -0
  675. package/accordion/index.d.ts +0 -2
  676. package/accordion/index.mjs +0 -2
  677. package/alert/index.d.ts +0 -3
  678. package/alert/index.mjs +0 -3
  679. package/aspect-ratio/index.d.ts +0 -2
  680. package/aspect-ratio/index.mjs +0 -2
  681. package/avatar/index.d.ts +0 -2
  682. package/avatar/index.mjs +0 -2
  683. package/badge/index.d.ts +0 -2
  684. package/badge/index.mjs +0 -2
  685. package/breadcrumb/index.d.ts +0 -2
  686. package/breadcrumb/index.mjs +0 -2
  687. package/button/index.d.ts +0 -3
  688. package/button/index.mjs +0 -3
  689. package/calendar/index.d.ts +0 -3
  690. package/calendar/index.mjs +0 -3
  691. package/card/index.d.ts +0 -2
  692. package/card/index.mjs +0 -2
  693. package/carousel/index.d.ts +0 -2
  694. package/carousel/index.mjs +0 -2
  695. package/chart/index.d.ts +0 -2
  696. package/chart/index.mjs +0 -2
  697. package/checkbox/index.d.ts +0 -2
  698. package/checkbox/index.mjs +0 -2
  699. package/collapsible/index.d.ts +0 -2
  700. package/collapsible/index.mjs +0 -2
  701. package/combobox/index.d.ts +0 -2
  702. package/combobox/index.mjs +0 -2
  703. package/command/index.d.ts +0 -2
  704. package/command/index.mjs +0 -2
  705. package/context-menu/index.d.ts +0 -2
  706. package/context-menu/index.mjs +0 -2
  707. package/data-table/index.d.ts +0 -4
  708. package/data-table/index.mjs +0 -4
  709. package/dialog/index.d.ts +0 -2
  710. package/dialog/index.mjs +0 -2
  711. package/drawer/index.d.ts +0 -3
  712. package/drawer/index.mjs +0 -3
  713. package/dropdown-menu/index.d.ts +0 -2
  714. package/dropdown-menu/index.mjs +0 -2
  715. package/empty/index.d.ts +0 -2
  716. package/empty/index.mjs +0 -2
  717. package/field/index.d.ts +0 -2
  718. package/field/index.mjs +0 -2
  719. package/hover-card/index.d.ts +0 -2
  720. package/hover-card/index.mjs +0 -2
  721. package/icon/index.d.ts +0 -2
  722. package/icon/index.mjs +0 -2
  723. package/input/index.d.ts +0 -6
  724. package/input/index.mjs +0 -6
  725. package/item/index.d.ts +0 -2
  726. package/item/index.mjs +0 -2
  727. package/kbd/index.d.ts +0 -2
  728. package/kbd/index.mjs +0 -2
  729. package/label/index.d.ts +0 -2
  730. package/label/index.mjs +0 -2
  731. package/menubar/index.d.ts +0 -2
  732. package/menubar/index.mjs +0 -2
  733. package/native-select/index.d.ts +0 -2
  734. package/native-select/index.mjs +0 -2
  735. package/navigation-menu/index.d.ts +0 -2
  736. package/navigation-menu/index.mjs +0 -2
  737. package/overlay/index.d.ts +0 -8
  738. package/overlay/index.mjs +0 -8
  739. package/pagination/index.d.ts +0 -2
  740. package/pagination/index.mjs +0 -2
  741. package/popover/index.d.ts +0 -2
  742. package/popover/index.mjs +0 -2
  743. package/progress/index.d.ts +0 -2
  744. package/progress/index.mjs +0 -2
  745. package/radio-group/index.d.ts +0 -2
  746. package/radio-group/index.mjs +0 -2
  747. package/scroll-area/index.d.ts +0 -2
  748. package/scroll-area/index.mjs +0 -2
  749. package/select/index.d.ts +0 -3
  750. package/select/index.mjs +0 -3
  751. package/separator/index.d.ts +0 -2
  752. package/separator/index.mjs +0 -2
  753. package/sidebar/index.d.ts +0 -2
  754. package/sidebar/index.mjs +0 -2
  755. package/skeleton/index.d.ts +0 -2
  756. package/skeleton/index.mjs +0 -2
  757. package/slider/index.d.ts +0 -2
  758. package/slider/index.mjs +0 -2
  759. package/sonner/index.d.ts +0 -2
  760. package/sonner/index.mjs +0 -2
  761. package/spinner/index.d.ts +0 -2
  762. package/spinner/index.mjs +0 -2
  763. package/switch/index.d.ts +0 -2
  764. package/switch/index.mjs +0 -2
  765. package/tabs/index.d.ts +0 -2
  766. package/tabs/index.mjs +0 -2
  767. package/toggle/index.d.ts +0 -3
  768. package/toggle/index.mjs +0 -3
  769. package/tooltip/index.d.ts +0 -2
  770. package/tooltip/index.mjs +0 -2
  771. package/utils/index.d.ts +0 -3
  772. package/utils/index.mjs +0 -3
@@ -4,10 +4,20 @@ import * as i1 from '@angular/common';
4
4
  import { CommonModule, isPlatformBrowser, DOCUMENT } from '@angular/common';
5
5
  import * as i1$1 from '@angular/cdk/overlay';
6
6
  import { OverlayModule } from '@angular/cdk/overlay';
7
+ import * as i3 from 'pdm-ui-kit/src/label';
8
+ import { PdmLabelModule as PdmLabelModule$1 } from 'pdm-ui-kit/src/label';
7
9
  import { TemplatePortal } from '@angular/cdk/portal';
8
10
  import { format } from 'date-fns';
11
+ import { createFlexiblePositionStrategy as createFlexiblePositionStrategy$1, mergeOverlayPanelClass as mergeOverlayPanelClass$1, OVERLAY_BASE_Z_INDEX as OVERLAY_BASE_Z_INDEX$1 } from 'pdm-ui-kit/src/overlay';
12
+ import * as i2 from 'pdm-ui-kit/src/icon';
13
+ import { PdmIconModule as PdmIconModule$1 } from 'pdm-ui-kit/src/icon';
14
+ import { TABLE_RESPONSIVE as TABLE_RESPONSIVE$1, Z_INDEX as Z_INDEX$1, responsive as responsive$1 } from 'pdm-ui-kit/src/utils';
15
+ import * as i2$1 from 'pdm-ui-kit/src/button';
16
+ import { PdmButtonModule as PdmButtonModule$1 } from 'pdm-ui-kit/src/button';
9
17
  import { icons } from 'lucide';
10
18
  import * as i1$2 from '@angular/platform-browser';
19
+ import * as i3$1 from 'pdm-ui-kit/src/select';
20
+ import { PdmSelectModule as PdmSelectModule$1 } from 'pdm-ui-kit/src/select';
11
21
 
12
22
  class PdmAccordionComponent {
13
23
  constructor() {
@@ -783,43 +793,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
783
793
  }]
784
794
  }] });
785
795
 
786
- class PdmLabelComponent {
787
- constructor() {
788
- this.forId = '';
789
- this.required = false;
790
- this.className = '';
791
- }
792
- }
793
- PdmLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
794
- PdmLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmLabelComponent, selector: "pdm-label", inputs: { forId: "forId", required: "required", className: "className" }, ngImport: i0, template: "<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, decorators: [{
796
- type: Component,
797
- args: [{ selector: 'pdm-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n" }]
798
- }], propDecorators: { forId: [{
799
- type: Input
800
- }], required: [{
801
- type: Input
802
- }], className: [{
803
- type: Input
804
- }] } });
805
-
806
- const COMPONENTS$D = [
807
- PdmLabelComponent,
808
- ];
809
- class PdmLabelModule {
810
- }
811
- PdmLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
812
- PdmLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, declarations: [PdmLabelComponent], imports: [CommonModule], exports: [PdmLabelComponent] });
813
- PdmLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, imports: [CommonModule] });
814
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, decorators: [{
815
- type: NgModule,
816
- args: [{
817
- imports: [CommonModule],
818
- declarations: COMPONENTS$D,
819
- exports: COMPONENTS$D
820
- }]
821
- }] });
822
-
823
796
  const DAY_MS = 24 * 60 * 60 * 1000;
824
797
  class PdmCalendarComponent {
825
798
  constructor() {
@@ -1346,129 +1319,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1346
1319
  type: Input
1347
1320
  }] } });
1348
1321
 
1349
- /**
1350
- * Creates a flexible position strategy that automatically adjusts
1351
- * to keep the overlay within the viewport edges.
1352
- *
1353
- * The strategy tries positions in this order:
1354
- * 1. Bottom-left (origin bottom edge, aligns to left)
1355
- * 2. Top-left (origin top edge, aligns to left)
1356
- * 3. Bottom-right (origin bottom edge, aligns to right)
1357
- * 4. Top-right (origin top edge, aligns to right)
1358
- *
1359
- * CDK Overlay will use the first position that fits within the viewport.
1360
- */
1361
- function createFlexiblePositionStrategy(overlay, triggerElement, offset = 4) {
1362
- return overlay
1363
- .position()
1364
- .flexibleConnectedTo(triggerElement)
1365
- .withPositions([
1366
- // Bottom-left (default) - opens downward from left edge
1367
- {
1368
- originX: 'start',
1369
- originY: 'bottom',
1370
- overlayX: 'start',
1371
- overlayY: 'top',
1372
- offsetY: offset
1373
- },
1374
- // Top-left - opens upward from left edge
1375
- {
1376
- originX: 'start',
1377
- originY: 'top',
1378
- overlayX: 'start',
1379
- overlayY: 'bottom',
1380
- offsetY: -offset
1381
- },
1382
- // Bottom-right - opens downward from right edge
1383
- {
1384
- originX: 'end',
1385
- originY: 'bottom',
1386
- overlayX: 'end',
1387
- overlayY: 'top',
1388
- offsetY: offset
1389
- },
1390
- // Top-right - opens upward from right edge
1391
- {
1392
- originX: 'end',
1393
- originY: 'top',
1394
- overlayX: 'end',
1395
- overlayY: 'bottom',
1396
- offsetY: -offset
1397
- }
1398
- ])
1399
- .withFlexibleDimensions(false)
1400
- .withPush(true);
1401
- }
1402
-
1403
- /**
1404
- * Z-Index helper for overlay components.
1405
- *
1406
- * CRITICAL: Consumer custom panelClass MUST NOT replace the base z-index.
1407
- * This helper ensures z-index is preserved when merging custom classes.
1408
- */
1409
- /**
1410
- * Base z-index class for overlays - MUST be included in any overlay panel.
1411
- * This ensures overlays appear above modals (z-50) and drawers (z-40).
1412
- */
1413
- const OVERLAY_BASE_Z_INDEX = "z-[70]";
1414
- /**
1415
- * Merge consumer's panelClass with our base z-index.
1416
- * Consumer classes are APPENDED, not replacing our z-index guarantee.
1417
- *
1418
- * @param baseZIndex - Base z-index class to enforce (default: OVERLAY_BASE_Z_INDEX)
1419
- * @param consumerClasses - Optional additional classes from consumer
1420
- * @returns Array of classes safe for CDK Overlay panelClass
1421
- */
1422
- function mergeOverlayPanelClass(baseZIndex = OVERLAY_BASE_Z_INDEX, consumerClasses) {
1423
- const baseClasses = baseZIndex.split(" ");
1424
- if (!consumerClasses) {
1425
- return baseClasses;
1426
- }
1427
- const consumerClassArray = Array.isArray(consumerClasses)
1428
- ? consumerClasses
1429
- : consumerClasses.split(" ");
1430
- // Consumer classes are appended AFTER base classes
1431
- // This ensures z-index from baseClasses is preserved first
1432
- return [...baseClasses, ...consumerClassArray];
1433
- }
1434
- /**
1435
- * Create OverlayConfig with guaranteed z-index.
1436
- * Use this instead of direct OverlayConfig to ensure z-index enforcement.
1437
- *
1438
- * @param baseConfig - Base overlay configuration
1439
- * @param consumerPanelClass - Optional consumer panelClass to merge
1440
- * @returns OverlayConfig with z-index guarantee
1441
- */
1442
- function createZIndexEnforcedOverlay(baseConfig, consumerPanelClass) {
1443
- const mergedClasses = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, consumerPanelClass);
1444
- const existingPanelClass = baseConfig.panelClass;
1445
- if (existingPanelClass) {
1446
- const existingArray = Array.isArray(existingPanelClass)
1447
- ? existingPanelClass
1448
- : existingPanelClass.split(" ");
1449
- return {
1450
- ...baseConfig,
1451
- panelClass: [...mergedClasses, ...existingArray],
1452
- };
1453
- }
1454
- return {
1455
- ...baseConfig,
1456
- panelClass: mergedClasses,
1457
- };
1458
- }
1459
- /**
1460
- * Helper to extract z-index from a class string for debugging.
1461
- */
1462
- function extractZIndex(classes) {
1463
- const classArray = Array.isArray(classes) ? classes : classes.split(" ");
1464
- for (const cls of classArray) {
1465
- if (cls.startsWith("z-") || cls.startsWith("z-[")) {
1466
- return cls;
1467
- }
1468
- }
1469
- return null;
1470
- }
1471
-
1472
1322
  let nextDatePickerId = 0;
1473
1323
  class PdmDatePickerComponent {
1474
1324
  constructor(cdr, overlay, viewContainerRef) {
@@ -1681,13 +1531,13 @@ class PdmDatePickerComponent {
1681
1531
  this._open = true;
1682
1532
  this.openChange.emit(true);
1683
1533
  this.cdr.markForCheck();
1684
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 8);
1534
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 8);
1685
1535
  // CRITICAL: Use mergeOverlayPanelClass to ensure z-index is never lost.
1686
1536
  // Consumer classes are appended AFTER base z-index.
1687
- const zIndexEnforced = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
1537
+ const zIndexEnforced = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
1688
1538
  // Resolve panelClass: overlayOptions.panelClass wins; otherwise use z-index enforced.
1689
1539
  const resolvedPanelClass = this.overlayOptions?.panelClass
1690
- ? mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.overlayOptions.panelClass)
1540
+ ? mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.overlayOptions.panelClass)
1691
1541
  : zIndexEnforced;
1692
1542
  this.overlayRef = this.overlay.create({
1693
1543
  positionStrategy,
@@ -1746,7 +1596,7 @@ class PdmDatePickerComponent {
1746
1596
  }
1747
1597
  }
1748
1598
  PdmDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
1749
- PdmDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDatePickerComponent, selector: "pdm-date-picker", inputs: { id: "id", variant: "variant", label: "label", labelClassName: "labelClassName", className: "className", triggerClassName: "triggerClassName", panelClassName: "panelClassName", overlayOptions: "overlayOptions", placeholder: "placeholder", rangePlaceholder: "rangePlaceholder", format: "format", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", allowSameDayRange: "allowSameDayRange", closeOnSelect: "closeOnSelect", minDate: "minDate", maxDate: "maxDate", minYear: "minYear", maxYear: "maxYear", disabledDates: "disabledDates", isDateDisabled: "isDateDisabled", open: "open", value: "value", rangeValue: "rangeValue" }, outputs: { valueChange: "valueChange", rangeValueChange: "rangeValueChange", openChange: "openChange", monthChange: "monthChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmLabelComponent, selector: "pdm-label", inputs: ["forId", "required", "className"] }, { kind: "component", type: PdmCalendarComponent, selector: "pdm-calendar", inputs: ["variant", "className", "disabledDates", "minDate", "maxDate", "minYear", "maxYear", "isDateDisabled", "allowSameDayRange", "readonly", "value", "rangeValue", "month"], outputs: ["valueChange", "rangeValueChange", "monthChange", "dateClick", "disabledDateClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1599
+ PdmDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDatePickerComponent, selector: "pdm-date-picker", inputs: { id: "id", variant: "variant", label: "label", labelClassName: "labelClassName", className: "className", triggerClassName: "triggerClassName", panelClassName: "panelClassName", overlayOptions: "overlayOptions", placeholder: "placeholder", rangePlaceholder: "rangePlaceholder", format: "format", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", allowSameDayRange: "allowSameDayRange", closeOnSelect: "closeOnSelect", minDate: "minDate", maxDate: "maxDate", minYear: "minYear", maxYear: "maxYear", disabledDates: "disabledDates", isDateDisabled: "isDateDisabled", open: "open", value: "value", rangeValue: "rangeValue" }, outputs: { valueChange: "valueChange", rangeValueChange: "rangeValueChange", openChange: "openChange", monthChange: "monthChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PdmLabelComponent, selector: "pdm-label", inputs: ["forId", "required", "className"] }, { kind: "component", type: PdmCalendarComponent, selector: "pdm-calendar", inputs: ["variant", "className", "disabledDates", "minDate", "maxDate", "minYear", "maxYear", "isDateDisabled", "allowSameDayRange", "readonly", "value", "rangeValue", "month"], outputs: ["valueChange", "rangeValueChange", "monthChange", "dateClick", "disabledDateClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1750
1600
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, decorators: [{
1751
1601
  type: Component,
1752
1602
  args: [{ selector: "pdm-date-picker", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n" }]
@@ -1821,18 +1671,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1821
1671
  args: ["document:keydown.escape"]
1822
1672
  }] } });
1823
1673
 
1824
- const COMPONENTS$C = [PdmCalendarComponent, PdmDatePickerComponent];
1674
+ const COMPONENTS$D = [PdmCalendarComponent, PdmDatePickerComponent];
1825
1675
  class PdmCalendarModule {
1826
1676
  }
1827
1677
  PdmCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1828
- PdmCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, declarations: [PdmCalendarComponent, PdmDatePickerComponent], imports: [CommonModule, OverlayModule, PdmLabelModule], exports: [PdmCalendarComponent, PdmDatePickerComponent] });
1829
- PdmCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, imports: [CommonModule, OverlayModule, PdmLabelModule] });
1678
+ PdmCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, declarations: [PdmCalendarComponent, PdmDatePickerComponent], imports: [CommonModule, OverlayModule, PdmLabelModule$1], exports: [PdmCalendarComponent, PdmDatePickerComponent] });
1679
+ PdmCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, imports: [CommonModule, OverlayModule, PdmLabelModule$1] });
1830
1680
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, decorators: [{
1831
1681
  type: NgModule,
1832
1682
  args: [{
1833
- imports: [CommonModule, OverlayModule, PdmLabelModule],
1834
- declarations: COMPONENTS$C,
1835
- exports: COMPONENTS$C,
1683
+ imports: [CommonModule, OverlayModule, PdmLabelModule$1],
1684
+ declarations: COMPONENTS$D,
1685
+ exports: COMPONENTS$D,
1836
1686
  }]
1837
1687
  }] });
1838
1688
 
@@ -1881,7 +1731,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1881
1731
  type: Input
1882
1732
  }] } });
1883
1733
 
1884
- const COMPONENTS$B = [
1734
+ const COMPONENTS$C = [
1885
1735
  PdmCardComponent,
1886
1736
  ];
1887
1737
  class PdmCardModule {
@@ -1893,8 +1743,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1893
1743
  type: NgModule,
1894
1744
  args: [{
1895
1745
  imports: [CommonModule],
1896
- declarations: COMPONENTS$B,
1897
- exports: COMPONENTS$B
1746
+ declarations: COMPONENTS$C,
1747
+ exports: COMPONENTS$C
1898
1748
  }]
1899
1749
  }] });
1900
1750
 
@@ -1997,7 +1847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1997
1847
  type: Output
1998
1848
  }] } });
1999
1849
 
2000
- const COMPONENTS$A = [
1850
+ const COMPONENTS$B = [
2001
1851
  PdmCarouselComponent,
2002
1852
  ];
2003
1853
  class PdmCarouselModule {
@@ -2009,8 +1859,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2009
1859
  type: NgModule,
2010
1860
  args: [{
2011
1861
  imports: [CommonModule],
2012
- declarations: COMPONENTS$A,
2013
- exports: COMPONENTS$A
1862
+ declarations: COMPONENTS$B,
1863
+ exports: COMPONENTS$B
2014
1864
  }]
2015
1865
  }] });
2016
1866
 
@@ -2188,7 +2038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2188
2038
  type: Input
2189
2039
  }] } });
2190
2040
 
2191
- const COMPONENTS$z = [
2041
+ const COMPONENTS$A = [
2192
2042
  PdmChartComponent,
2193
2043
  ];
2194
2044
  class PdmChartModule {
@@ -2200,8 +2050,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2200
2050
  type: NgModule,
2201
2051
  args: [{
2202
2052
  imports: [CommonModule],
2203
- declarations: COMPONENTS$z,
2204
- exports: COMPONENTS$z
2053
+ declarations: COMPONENTS$A,
2054
+ exports: COMPONENTS$A
2205
2055
  }]
2206
2056
  }] });
2207
2057
 
@@ -2249,7 +2099,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2249
2099
  type: Output
2250
2100
  }] } });
2251
2101
 
2252
- const COMPONENTS$y = [
2102
+ const COMPONENTS$z = [
2253
2103
  PdmCheckboxComponent,
2254
2104
  ];
2255
2105
  class PdmCheckboxModule {
@@ -2261,8 +2111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2261
2111
  type: NgModule,
2262
2112
  args: [{
2263
2113
  imports: [CommonModule],
2264
- declarations: COMPONENTS$y,
2265
- exports: COMPONENTS$y
2114
+ declarations: COMPONENTS$z,
2115
+ exports: COMPONENTS$z
2266
2116
  }]
2267
2117
  }] });
2268
2118
 
@@ -2306,7 +2156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2306
2156
  type: Output
2307
2157
  }] } });
2308
2158
 
2309
- const COMPONENTS$x = [
2159
+ const COMPONENTS$y = [
2310
2160
  PdmCollapsibleComponent,
2311
2161
  ];
2312
2162
  class PdmCollapsibleModule {
@@ -2318,8 +2168,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2318
2168
  type: NgModule,
2319
2169
  args: [{
2320
2170
  imports: [CommonModule],
2321
- declarations: COMPONENTS$x,
2322
- exports: COMPONENTS$x
2171
+ declarations: COMPONENTS$y,
2172
+ exports: COMPONENTS$y
2323
2173
  }]
2324
2174
  }] });
2325
2175
 
@@ -2387,7 +2237,7 @@ class PdmComboboxComponent {
2387
2237
  .withPositions(this.getPositionConfigs())
2388
2238
  .withFlexibleDimensions(false)
2389
2239
  .withPush(true);
2390
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
2240
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
2391
2241
  this.overlayRef = this.overlay.create({
2392
2242
  positionStrategy,
2393
2243
  panelClass,
@@ -2490,7 +2340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2490
2340
  args: ["document:keydown.escape"]
2491
2341
  }] } });
2492
2342
 
2493
- const COMPONENTS$w = [
2343
+ const COMPONENTS$x = [
2494
2344
  PdmComboboxComponent,
2495
2345
  ];
2496
2346
  class PdmComboboxModule {
@@ -2502,182 +2352,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2502
2352
  type: NgModule,
2503
2353
  args: [{
2504
2354
  imports: [CommonModule, OverlayModule],
2505
- declarations: COMPONENTS$w,
2506
- exports: COMPONENTS$w
2355
+ declarations: COMPONENTS$x,
2356
+ exports: COMPONENTS$x
2507
2357
  }]
2508
2358
  }] });
2509
2359
 
2510
- const FALLBACK_NODE = [['circle', { cx: '12', cy: '12', r: '9' }]];
2511
- class PdmIconComponent {
2512
- constructor(sanitizer) {
2513
- this.sanitizer = sanitizer;
2514
- this.name = 'check';
2515
- this.library = 'lucide';
2516
- this.assetUrl = null;
2517
- this.size = 16;
2518
- this.strokeWidth = 1.5;
2519
- this.className = '';
2520
- this.ariaLabel = null;
2521
- this.decorative = false;
2522
- this.lucideIndex = this.buildLucideIndex();
2523
- this.aliasMapByLibrary = {
2524
- lucide: {
2525
- 'check-circle': 'circle-check',
2526
- 'alert-circle': 'circle-alert',
2527
- info: 'circle-info',
2528
- 'sort-asc': 'arrow-up-a-z',
2529
- 'sort-desc': 'arrow-down-z-a'
2530
- },
2531
- tabler: {
2532
- 'alert-triangle': 'triangle-alert',
2533
- 'user-circle': 'circle-user',
2534
- 'settings-2': 'settings-2',
2535
- 'external-link': 'external-link'
2536
- },
2537
- hugeicons: {
2538
- 'alert-02': 'circle-alert',
2539
- 'user-circle': 'circle-user',
2540
- 'search-01': 'search',
2541
- 'settings-01': 'settings',
2542
- 'arrow-right-01': 'chevron-right',
2543
- 'arrow-down-01': 'chevron-down'
2544
- },
2545
- phosphor: {
2546
- 'warning-circle': 'circle-alert',
2547
- 'caret-down': 'chevron-down',
2548
- 'caret-right': 'chevron-right',
2549
- 'user-circle': 'circle-user',
2550
- gear: 'settings',
2551
- 'arrow-square-out': 'external-link'
2552
- },
2553
- remix: {
2554
- 'alert-line': 'circle-alert',
2555
- 'arrow-right-line': 'chevron-right',
2556
- 'arrow-down-s-line': 'chevron-down',
2557
- 'external-link-line': 'external-link',
2558
- 'user-line': 'user',
2559
- 'settings-3-line': 'settings'
2560
- }
2561
- };
2562
- }
2563
- get resolvedStrokeWidth() {
2564
- const value = Number(this.strokeWidth);
2565
- if (Number.isFinite(value) && value > 0) {
2566
- return value;
2567
- }
2568
- if (this.library === 'phosphor') {
2569
- return 1.6;
2570
- }
2571
- if (this.library === 'tabler') {
2572
- return 1.8;
2573
- }
2574
- return 1.5;
2575
- }
2576
- get resolvedSize() {
2577
- const value = Number(this.size);
2578
- return Number.isFinite(value) && value > 0 ? value : 16;
2579
- }
2580
- get iconKey() {
2581
- const raw = `${this.name || ''}`.trim();
2582
- if (!raw) {
2583
- return 'circle';
2584
- }
2585
- const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\//, '');
2586
- const aliases = this.aliasMapByLibrary[this.library] ?? {};
2587
- return aliases[trimmed] ?? trimmed;
2588
- }
2589
- get svgMarkup() {
2590
- const node = this.resolveIconNode(this.iconKey) ?? FALLBACK_NODE;
2591
- const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);
2592
- const size = this.escapeAttr(this.resolvedSize);
2593
- const body = node
2594
- .map(([tag, attrs]) => {
2595
- const serializedAttrs = Object.entries(attrs)
2596
- .map(([key, value]) => `${key}="${this.escapeAttr(value)}"`)
2597
- .join(' ');
2598
- return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;
2599
- })
2600
- .join('');
2601
- const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="${strokeWidth}" stroke-linecap="round" stroke-linejoin="round">${body}</svg>`;
2602
- return this.sanitizer.bypassSecurityTrustHtml(svg);
2603
- }
2604
- resolveIconNode(iconName) {
2605
- const normalized = this.normalizeIconName(iconName);
2606
- return this.lucideIndex.get(normalized) ?? null;
2607
- }
2608
- normalizeIconName(name) {
2609
- return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');
2610
- }
2611
- buildLucideIndex() {
2612
- const map = new Map();
2613
- Object.entries(icons).forEach(([iconName, iconNode]) => {
2614
- map.set(this.normalizeIconName(iconName), iconNode);
2615
- });
2616
- return map;
2617
- }
2618
- escapeAttr(value) {
2619
- return `${value ?? ''}`
2620
- .replace(/&/g, '&amp;')
2621
- .replace(/"/g, '&quot;')
2622
- .replace(/</g, '&lt;')
2623
- .replace(/>/g, '&gt;');
2624
- }
2625
- }
2626
- PdmIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2627
- PdmIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmIconComponent, selector: "pdm-icon", inputs: { name: "name", library: "library", assetUrl: "assetUrl", size: "size", strokeWidth: "strokeWidth", className: "className", ariaLabel: "ariaLabel", decorative: "decorative" }, ngImport: i0, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}:host svg{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2628
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, decorators: [{
2629
- type: Component,
2630
- args: [{ selector: 'pdm-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}:host svg{display:block}\n"] }]
2631
- }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { name: [{
2632
- type: Input
2633
- }], library: [{
2634
- type: Input
2635
- }], assetUrl: [{
2636
- type: Input
2637
- }], size: [{
2638
- type: Input
2639
- }], strokeWidth: [{
2640
- type: Input
2641
- }], className: [{
2642
- type: Input
2643
- }], ariaLabel: [{
2644
- type: Input
2645
- }], decorative: [{
2646
- type: Input
2647
- }] } });
2648
-
2649
- const COMPONENTS$v = [
2650
- PdmIconComponent,
2651
- ];
2652
- class PdmIconModule {
2653
- }
2654
- PdmIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2655
- PdmIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, declarations: [PdmIconComponent], imports: [CommonModule], exports: [PdmIconComponent] });
2656
- PdmIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, imports: [CommonModule] });
2657
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, decorators: [{
2658
- type: NgModule,
2659
- args: [{
2660
- imports: [CommonModule],
2661
- declarations: COMPONENTS$v,
2662
- exports: COMPONENTS$v
2663
- }]
2664
- }] });
2665
-
2666
- class PdmCommandComponent {
2667
- constructor() {
2668
- this.open = true;
2669
- this.hintLabel = 'Press';
2670
- this.hintKey = 'J';
2671
- this.placeholder = 'Type a command or search...';
2672
- this.emptyMessage = 'No results found.';
2673
- this.items = [
2674
- { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
2675
- { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
2676
- { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
2677
- { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
2678
- { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
2679
- { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
2680
- ];
2360
+ class PdmCommandComponent {
2361
+ constructor() {
2362
+ this.open = true;
2363
+ this.hintLabel = 'Press';
2364
+ this.hintKey = 'J';
2365
+ this.placeholder = 'Type a command or search...';
2366
+ this.emptyMessage = 'No results found.';
2367
+ this.items = [
2368
+ { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
2369
+ { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
2370
+ { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
2371
+ { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
2372
+ { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
2373
+ { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
2374
+ ];
2681
2375
  this.className = '';
2682
2376
  this.itemSelect = new EventEmitter();
2683
2377
  this.openChange = new EventEmitter();
@@ -2710,7 +2404,7 @@ class PdmCommandComponent {
2710
2404
  }
2711
2405
  }
2712
2406
  PdmCommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2713
- PdmCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmCommandComponent, selector: "pdm-command", inputs: { open: "open", hintLabel: "hintLabel", hintKey: "hintKey", placeholder: "placeholder", emptyMessage: "emptyMessage", items: "items", className: "className" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-sm font-medium text-muted-foreground\">{{\n hintLabel\n }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 appearance-none box-border items-center gap-0.5 rounded-sm border border-solid border-border bg-muted px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon\n name=\"command\"\n [size]=\"12\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <span class=\"text-xs text-muted-foreground\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-lg border border-solid border-border bg-popover text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <pdm-icon\n name=\"search\"\n [size]=\"16\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full appearance-none box-border bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground\"\n />\n </div>\n\n <div class=\"max-h-[50vh] overflow-y-auto p-1 md:max-h-72\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div\n *ngIf=\"group.name\"\n class=\"px-2 py-1.5 text-xs text-muted-foreground\"\n >\n {{ group.name }}\n </div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full appearance-none box-border items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-accent text-accent-foreground' : '',\n ]\"\n (click)=\"select(item.value)\"\n >\n <span\n class=\"inline-flex h-4 w-4 items-center justify-center text-foreground\"\n >\n <pdm-icon\n *ngIf=\"item.icon\"\n [name]=\"item.icon\"\n [size]=\"16\"\n [decorative]=\"true\"\n ></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{\n item.shortcut\n }}</span>\n </button>\n <div\n *ngIf=\"groupIndex === 0 && groupedItems.length > 1\"\n class=\"my-1 border-t border-border\"\n ></div>\n </ng-container>\n\n <p\n *ngIf=\"filteredItems.length === 0\"\n class=\"m-0 py-6 text-center text-sm text-muted-foreground\"\n >\n {{ emptyMessage }}\n </p>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2407
+ PdmCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmCommandComponent, selector: "pdm-command", inputs: { open: "open", hintLabel: "hintLabel", hintKey: "hintKey", placeholder: "placeholder", emptyMessage: "emptyMessage", items: "items", className: "className" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-sm font-medium text-muted-foreground\">{{\n hintLabel\n }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 appearance-none box-border items-center gap-0.5 rounded-sm border border-solid border-border bg-muted px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon\n name=\"command\"\n [size]=\"12\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <span class=\"text-xs text-muted-foreground\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-lg border border-solid border-border bg-popover text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <pdm-icon\n name=\"search\"\n [size]=\"16\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full appearance-none box-border bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground\"\n />\n </div>\n\n <div class=\"max-h-[50vh] overflow-y-auto p-1 md:max-h-72\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div\n *ngIf=\"group.name\"\n class=\"px-2 py-1.5 text-xs text-muted-foreground\"\n >\n {{ group.name }}\n </div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full appearance-none box-border items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-accent text-accent-foreground' : '',\n ]\"\n (click)=\"select(item.value)\"\n >\n <span\n class=\"inline-flex h-4 w-4 items-center justify-center text-foreground\"\n >\n <pdm-icon\n *ngIf=\"item.icon\"\n [name]=\"item.icon\"\n [size]=\"16\"\n [decorative]=\"true\"\n ></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{\n item.shortcut\n }}</span>\n </button>\n <div\n *ngIf=\"groupIndex === 0 && groupedItems.length > 1\"\n class=\"my-1 border-t border-border\"\n ></div>\n </ng-container>\n\n <p\n *ngIf=\"filteredItems.length === 0\"\n class=\"m-0 py-6 text-center text-sm text-muted-foreground\"\n >\n {{ emptyMessage }}\n </p>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2714
2408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandComponent, decorators: [{
2715
2409
  type: Component,
2716
2410
  args: [{ selector: 'pdm-command', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-sm font-medium text-muted-foreground\">{{\n hintLabel\n }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 appearance-none box-border items-center gap-0.5 rounded-sm border border-solid border-border bg-muted px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon\n name=\"command\"\n [size]=\"12\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <span class=\"text-xs text-muted-foreground\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-lg border border-solid border-border bg-popover text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <pdm-icon\n name=\"search\"\n [size]=\"16\"\n className=\"text-muted-foreground\"\n [decorative]=\"true\"\n ></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full appearance-none box-border bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground\"\n />\n </div>\n\n <div class=\"max-h-[50vh] overflow-y-auto p-1 md:max-h-72\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div\n *ngIf=\"group.name\"\n class=\"px-2 py-1.5 text-xs text-muted-foreground\"\n >\n {{ group.name }}\n </div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full appearance-none box-border items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-accent text-accent-foreground' : '',\n ]\"\n (click)=\"select(item.value)\"\n >\n <span\n class=\"inline-flex h-4 w-4 items-center justify-center text-foreground\"\n >\n <pdm-icon\n *ngIf=\"item.icon\"\n [name]=\"item.icon\"\n [size]=\"16\"\n [decorative]=\"true\"\n ></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{\n item.shortcut\n }}</span>\n </button>\n <div\n *ngIf=\"groupIndex === 0 && groupedItems.length > 1\"\n class=\"my-1 border-t border-border\"\n ></div>\n </ng-container>\n\n <p\n *ngIf=\"filteredItems.length === 0\"\n class=\"m-0 py-6 text-center text-sm text-muted-foreground\"\n >\n {{ emptyMessage }}\n </p>\n </div>\n </section>\n</div>\n" }]
@@ -2734,18 +2428,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2734
2428
  type: Output
2735
2429
  }] } });
2736
2430
 
2737
- const COMPONENTS$u = [PdmCommandComponent];
2431
+ const COMPONENTS$w = [PdmCommandComponent];
2738
2432
  class PdmCommandModule {
2739
2433
  }
2740
2434
  PdmCommandModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2741
- PdmCommandModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, declarations: [PdmCommandComponent], imports: [CommonModule, PdmIconModule], exports: [PdmCommandComponent] });
2742
- PdmCommandModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, imports: [CommonModule, PdmIconModule] });
2435
+ PdmCommandModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, declarations: [PdmCommandComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmCommandComponent] });
2436
+ PdmCommandModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, imports: [CommonModule, PdmIconModule$1] });
2743
2437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, decorators: [{
2744
2438
  type: NgModule,
2745
2439
  args: [{
2746
- imports: [CommonModule, PdmIconModule],
2747
- declarations: COMPONENTS$u,
2748
- exports: COMPONENTS$u,
2440
+ imports: [CommonModule, PdmIconModule$1],
2441
+ declarations: COMPONENTS$w,
2442
+ exports: COMPONENTS$w,
2749
2443
  }]
2750
2444
  }] });
2751
2445
 
@@ -2847,7 +2541,7 @@ class PdmContextMenuComponent {
2847
2541
  .global()
2848
2542
  .left(`${this.x}px`)
2849
2543
  .top(`${this.y}px`);
2850
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
2544
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
2851
2545
  this.overlayRef = this.overlay.create({
2852
2546
  positionStrategy,
2853
2547
  panelClass,
@@ -2908,7 +2602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2908
2602
  args: ["document:click"]
2909
2603
  }] } });
2910
2604
 
2911
- const COMPONENTS$t = [
2605
+ const COMPONENTS$v = [
2912
2606
  PdmContextMenuComponent,
2913
2607
  ];
2914
2608
  class PdmContextMenuModule {
@@ -2920,198 +2614,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2920
2614
  type: NgModule,
2921
2615
  args: [{
2922
2616
  imports: [CommonModule, OverlayModule],
2923
- declarations: COMPONENTS$t,
2924
- exports: COMPONENTS$t
2617
+ declarations: COMPONENTS$v,
2618
+ exports: COMPONENTS$v
2925
2619
  }]
2926
2620
  }] });
2927
2621
 
2928
2622
  /**
2929
- * Sistema de responsive utilities para PDM UI Kit
2623
+ * Componente base de tabla con soporte responsive
2930
2624
  *
2931
- * Proporciona constantes, tipos y helpers para manejar responsive design
2932
- * de forma consistente en todos los componentes.
2933
- */
2934
- /**
2935
- * Breakpoints estándar de Tailwind CSS
2936
- * Mobile-first approach: los estilos base son para mobile, los breakpoints son MIN-WIDTH
2937
- */
2938
- const BREAKPOINTS = {
2939
- sm: '640px',
2940
- md: '768px',
2941
- lg: '1024px',
2942
- xl: '1280px',
2943
- '2xl': '1536px' // extra large desktop
2944
- };
2945
- /**
2946
- * Helper para generar clases responsive de forma programática
2625
+ * SIMPLIFICADO: Ya no incluye drag & drop (usar pdm-draggable-table para eso)
2947
2626
  *
2948
2627
  * @example
2949
- * responsive({ default: 'block', sm: 'flex', lg: 'grid' })
2950
- * // Returns: 'block sm:flex lg:grid'
2951
- */
2952
- function responsive(config) {
2953
- const classes = [];
2954
- if (config.default) {
2955
- classes.push(config.default);
2956
- }
2957
- ['sm', 'md', 'lg', 'xl', '2xl'].forEach(bp => {
2958
- if (config[bp]) {
2959
- classes.push(`${bp}:${config[bp]}`);
2960
- }
2961
- });
2962
- return classes.join(' ');
2963
- }
2964
- /**
2965
- * Helper para overflow responsive
2966
- * Maneja el caso común de scroll en mobile, auto en desktop
2628
+ * // Tabla simple con scroll horizontal
2629
+ * <pdm-table variant="default">
2630
+ * <thead><tr><th>Name</th><th>Email</th></tr></thead>
2631
+ * <tbody><tr><td>John</td><td>john@example.com</td></tr></tbody>
2632
+ * </pdm-table>
2967
2633
  *
2968
2634
  * @example
2969
- * overflowResponsive('x', 'scroll', 'auto')
2970
- * // Returns: 'overflow-x-scroll sm:overflow-x-auto'
2635
+ * // Tabla interactiva con wrap en mobile
2636
+ * <pdm-table variant="interactive" responsiveStrategy="wrap">
2637
+ * ...
2638
+ * </pdm-table>
2971
2639
  */
2972
- function overflowResponsive(axis, mobile, desktop) {
2973
- const axisClass = axis === 'both' ? 'overflow' : `overflow-${axis}`;
2974
- const mobileClass = `${axisClass}-${mobile}`;
2975
- if (!desktop || desktop === mobile) {
2976
- return mobileClass;
2977
- }
2978
- return `${mobileClass} sm:${axisClass}-${desktop}`;
2979
- }
2980
- /**
2981
- * Helper para spacing responsive
2982
- * Útil para padding/margin que necesita ajustarse por breakpoint
2983
- *
2984
- * @example
2985
- * spacingResponsive('px', { default: '4', sm: '6', lg: '8' })
2986
- * // Returns: 'px-4 sm:px-6 lg:px-8'
2987
- */
2988
- function spacingResponsive(property, values) {
2989
- return responsive(Object.entries(values).reduce((acc, [key, value]) => {
2990
- acc[key] = `${property}-${value}`;
2991
- return acc;
2992
- }, {}));
2993
- }
2994
- /**
2995
- * Helper para width responsive
2996
- *
2997
- * @example
2998
- * widthResponsive({ default: 'full', sm: 'auto', lg: '1/2' })
2999
- * // Returns: 'w-full sm:w-auto lg:w-1/2'
3000
- */
3001
- function widthResponsive(values) {
3002
- return responsive(Object.entries(values).reduce((acc, [key, value]) => {
3003
- acc[key] = `w-${value}`;
3004
- return acc;
3005
- }, {}));
3006
- }
3007
- /**
3008
- * Clases comunes para containers responsive
3009
- * Pensadas para wrappers que contienen contenido que puede desbordar
3010
- */
3011
- const RESPONSIVE_CONTAINER = {
3012
- // Container con scroll horizontal en mobile, contenido visible en desktop
3013
- tableWrapper: 'relative w-full overflow-x-auto sm:overflow-x-visible',
3014
- // Container con padding negativo en mobile para scroll edge-to-edge
3015
- tableWrapperFullBleed: 'relative w-full -mx-4 px-4 overflow-x-auto sm:mx-0 sm:px-0 sm:overflow-x-visible',
3016
- // Container con max-width responsive
3017
- contentWrapper: 'w-full mx-auto px-4 sm:px-6 lg:px-8 max-w-screen-2xl',
3018
- // Container para modals/dialogs
3019
- modalWrapper: 'w-full max-w-lg mx-auto px-4 sm:px-0',
3020
- // Container para forms
3021
- formWrapper: 'w-full max-w-md mx-auto space-y-4'
3022
- };
3023
- /**
3024
- * Clases comunes para display responsive
3025
- */
3026
- const RESPONSIVE_DISPLAY = {
3027
- // Ocultar en mobile, mostrar en desktop
3028
- hideOnMobile: 'hidden sm:block',
3029
- // Mostrar solo en mobile
3030
- showOnMobile: 'block sm:hidden',
3031
- // Stack en mobile, flex en desktop
3032
- stackToFlex: 'flex flex-col sm:flex-row',
3033
- // Stack en mobile, grid en desktop
3034
- stackToGrid: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3'
3035
- };
3036
- /**
3037
- * Clases para table responsive strategies
3038
- */
3039
- const TABLE_RESPONSIVE = {
3040
- // Scroll horizontal (default, más simple)
3041
- scroll: {
3042
- wrapper: 'relative w-full overflow-x-auto',
3043
- table: 'w-full min-w-full',
3044
- cell: 'whitespace-nowrap'
3045
- },
3046
- // Permitir wrap del contenido
3047
- wrap: {
3048
- wrapper: 'relative w-full overflow-x-auto',
3049
- table: 'w-full',
3050
- cell: 'whitespace-normal break-words'
3051
- },
3052
- // Stack en mobile (cada fila se convierte en card)
3053
- // Requiere lógica adicional en el componente
3054
- stack: {
3055
- wrapper: 'relative w-full',
3056
- table: 'w-full',
3057
- row: 'block sm:table-row border-b sm:border-b-0',
3058
- cell: 'block sm:table-cell py-2 sm:py-0 before:content-[attr(data-label)] before:font-medium before:inline-block before:w-32 sm:before:content-none'
3059
- },
3060
- // Collapse: ocultar columnas menos importantes en mobile
3061
- // Se usa con clases de visibility en las columnas específicas
3062
- collapse: {
3063
- wrapper: 'relative w-full overflow-x-auto',
3064
- table: 'w-full',
3065
- cell: 'whitespace-nowrap',
3066
- // Estas clases se aplican a columnas opcionales
3067
- optionalColumn: 'hidden md:table-cell'
3068
- }
3069
- };
3070
-
3071
- /**
3072
- * Componente base de tabla con soporte responsive
3073
- *
3074
- * SIMPLIFICADO: Ya no incluye drag & drop (usar pdm-draggable-table para eso)
3075
- *
3076
- * @example
3077
- * // Tabla simple con scroll horizontal
3078
- * <pdm-table variant="default">
3079
- * <thead><tr><th>Name</th><th>Email</th></tr></thead>
3080
- * <tbody><tr><td>John</td><td>john@example.com</td></tr></tbody>
3081
- * </pdm-table>
3082
- *
3083
- * @example
3084
- * // Tabla interactiva con wrap en mobile
3085
- * <pdm-table variant="interactive" responsiveStrategy="wrap">
3086
- * ...
3087
- * </pdm-table>
3088
- */
3089
- class PdmTableComponent {
3090
- constructor() {
3091
- /**
3092
- * Variante visual de la tabla
3093
- * - default: tabla básica sin estilos extra
3094
- * - data: tabla con bordes y espaciado para data
3095
- * - interactive: tabla con hover, sticky header y estilos interactivos
3096
- */
3097
- this.variant = "default";
3098
- /**
3099
- * Estrategia responsive para la tabla
3100
- * - scroll: scroll horizontal en mobile (default, más simple)
3101
- * - wrap: permite que el contenido haga wrap
3102
- * - stack: convierte filas en cards en mobile (requiere data-label en celdas)
3103
- * - collapse: oculta columnas menos importantes en mobile
3104
- */
3105
- this.responsiveStrategy = "scroll";
3106
- /**
3107
- * Clases CSS adicionales para el wrapper
3108
- */
3109
- this.className = "";
3110
- /**
3111
- * Si es true, aplica padding negativo en mobile para scroll edge-to-edge
3112
- * Útil cuando la tabla está dentro de un container con padding
3113
- */
3114
- this.fullBleed = false;
2640
+ class PdmTableComponent {
2641
+ constructor() {
2642
+ /**
2643
+ * Variante visual de la tabla
2644
+ * - default: tabla básica sin estilos extra
2645
+ * - data: tabla con bordes y espaciado para data
2646
+ * - interactive: tabla con hover, sticky header y estilos interactivos
2647
+ */
2648
+ this.variant = "default";
2649
+ /**
2650
+ * Estrategia responsive para la tabla
2651
+ * - scroll: scroll horizontal en mobile (default, más simple)
2652
+ * - wrap: permite que el contenido haga wrap
2653
+ * - stack: convierte filas en cards en mobile (requiere data-label en celdas)
2654
+ * - collapse: oculta columnas menos importantes en mobile
2655
+ */
2656
+ this.responsiveStrategy = "scroll";
2657
+ /**
2658
+ * Clases CSS adicionales para el wrapper
2659
+ */
2660
+ this.className = "";
2661
+ /**
2662
+ * Si es true, aplica padding negativo en mobile para scroll edge-to-edge
2663
+ * Útil cuando la tabla está dentro de un container con padding
2664
+ */
2665
+ this.fullBleed = false;
3115
2666
  }
3116
2667
  get wrapperClasses() {
3117
2668
  const baseClasses = ["relative", "w-full"];
@@ -3135,7 +2686,7 @@ class PdmTableComponent {
3135
2686
  return [...baseClasses, ...variantClasses, ...cellClasses].filter(Boolean);
3136
2687
  }
3137
2688
  getResponsiveStrategyClasses() {
3138
- const strategy = TABLE_RESPONSIVE[this.responsiveStrategy];
2689
+ const strategy = TABLE_RESPONSIVE$1[this.responsiveStrategy];
3139
2690
  if (this.responsiveStrategy === "scroll") {
3140
2691
  return ["overflow-x-auto"];
3141
2692
  }
@@ -3838,7 +3389,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3838
3389
  args: ['tableElement']
3839
3390
  }] } });
3840
3391
 
3841
- const COMPONENTS$s = [
3392
+ const COMPONENTS$u = [
3842
3393
  PdmDataTableComponent,
3843
3394
  PdmDraggableTableComponent,
3844
3395
  PdmTableComponent,
@@ -3856,101 +3407,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3856
3407
  type: NgModule,
3857
3408
  args: [{
3858
3409
  imports: [CommonModule],
3859
- declarations: COMPONENTS$s,
3860
- exports: COMPONENTS$s
3410
+ declarations: COMPONENTS$u,
3411
+ exports: COMPONENTS$u
3861
3412
  }]
3862
3413
  }] });
3863
3414
 
3864
- /**
3865
- * Z-Index Scale - Sistema centralizado de z-index
3866
- *
3867
- * JERARQUÍA (de menor a mayor):
3868
- * 1. base (z-0) - Elementos normales del DOM
3869
- * 2. dropdown (z-10) - Selects, combobox, date-pickers
3870
- * 3. sticky (z-20) - Headers, navigation bars
3871
- * 4. drawerBackdrop (z-30) - Backdrop de drawers
3872
- * 5. drawer (z-40) - Sidebar drawer, sheets laterales
3873
- * 6. modalBackdrop (z-40) - Backdrop de modals ( mismo nivel que drawer)
3874
- * 7. modal (z-50) - Dialogs, alert-dialogs
3875
- * 8. popover (z-[70]) - Tooltips, dropdowns DENTRO de modals
3876
- * 9. toast (z-[100]) - Notificaciones que deben estar sobre TODO
3877
- *
3878
- * REGLA CRÍTICA:
3879
- * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-[70] o mayor
3880
- * - Esto permite que funcionen DENTRO de modals (z-50)
3881
- * - Backdrop de modal debe ser z-40 para estar DEBAJO del contenido del modal (z-50)
3882
- */
3883
- const Z_INDEX = {
3884
- /**
3885
- * Base - contenido normal del DOM
3886
- */
3887
- base: "z-0",
3888
- /**
3889
- * Dropdown - Selects, combobox, date-pickers
3890
- * Debe estar SOBRE contenido normal pero BAJO overlays
3891
- */
3892
- dropdown: "z-10",
3893
- /**
3894
- * Sticky - Headers, navigation fija
3895
- */
3896
- sticky: "z-20",
3897
- /**
3898
- * Drawer backdrop - Backdrop de sidebar drawer
3899
- * Debe estar DEBAJO del drawer panel y DEBAJO de modals
3900
- */
3901
- drawerBackdrop: "z-30",
3902
- /**
3903
- * Drawer - Sidebar drawer, sheets laterales
3904
- * Debe estar SOBRE su backdrop pero BAJO modals
3905
- */
3906
- drawer: "z-40",
3907
- /**
3908
- * Modal backdrop - Backdrop de dialogs
3909
- * Mismo nivel que drawer backdrop (z-40)
3910
- */
3911
- modalBackdrop: "z-40",
3912
- /**
3913
- * Modal - Dialogs, alert-dialogs
3914
- * Debe estar SOBRE su backdrop
3915
- */
3916
- modal: "z-50",
3917
- /**
3918
- * Popover - Tooltips, dropdowns, selects options DENTRO de modals
3919
- * CRÍTICO: Debe ser MAYOR que modal (z-50) para aparecer sobre modals
3920
- * USAR SIEMPRE mergeOverlayPanelClass() para asegurar este valor
3921
- */
3922
- popover: "z-[70]",
3923
- /**
3924
- * Toast - Notificaciones globales
3925
- * Debe estar sobre TODO
3926
- */
3927
- toast: "z-[100]",
3928
- };
3929
- /**
3930
- * Helper para debugging z-index issues
3931
- */
3932
- function logZIndexStack(element) {
3933
- if (typeof window === "undefined")
3934
- return;
3935
- let current = element;
3936
- const stack = [];
3937
- while (current && current !== document.body) {
3938
- const computed = window.getComputedStyle(current);
3939
- const zIndex = computed.zIndex;
3940
- const position = computed.position;
3941
- if (zIndex !== "auto") {
3942
- stack.push({
3943
- element: current.tagName +
3944
- (current.className ? `.${current.className.split(" ")[0]}` : ""),
3945
- zIndex,
3946
- position,
3947
- });
3948
- }
3949
- current = current.parentElement;
3950
- }
3951
- console.table(stack);
3952
- }
3953
-
3954
3415
  /**
3955
3416
  * Modal/Dialog component con soporte responsive
3956
3417
  *
@@ -4087,7 +3548,7 @@ class PdmDialogComponent {
4087
3548
  buildPanelClasses(sizeClasses) {
4088
3549
  const base = [
4089
3550
  "relative",
4090
- Z_INDEX.modal,
3551
+ Z_INDEX$1.modal,
4091
3552
  "flex",
4092
3553
  "flex-col",
4093
3554
  "border border-solid",
@@ -4155,9 +3616,9 @@ class PdmDialogComponent {
4155
3616
  // Container con backdrop z-40
4156
3617
  // Mobile: fullscreen desde el bottom
4157
3618
  // Desktop: centrado
4158
- return responsive({
4159
- default: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,
4160
- sm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`,
3619
+ return responsive$1({
3620
+ default: `fixed inset-x-0 bottom-0 ${Z_INDEX$1.modalBackdrop} flex items-end justify-center`,
3621
+ sm: `fixed inset-0 ${Z_INDEX$1.modalBackdrop} flex items-center justify-center p-4`,
4161
3622
  });
4162
3623
  }
4163
3624
  }
@@ -4211,7 +3672,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4211
3672
  args: ["document:keydown.escape"]
4212
3673
  }] } });
4213
3674
 
4214
- const COMPONENTS$r = [
3675
+ const COMPONENTS$t = [
4215
3676
  PdmDialogComponent,
4216
3677
  ];
4217
3678
  class PdmDialogModule {
@@ -4223,8 +3684,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4223
3684
  type: NgModule,
4224
3685
  args: [{
4225
3686
  imports: [CommonModule],
4226
- declarations: COMPONENTS$r,
4227
- exports: COMPONENTS$r
3687
+ declarations: COMPONENTS$t,
3688
+ exports: COMPONENTS$t
4228
3689
  }]
4229
3690
  }] });
4230
3691
 
@@ -4326,7 +3787,7 @@ class PdmDrawerComponent {
4326
3787
  this.secondaryAction.emit();
4327
3788
  }
4328
3789
  get containerClassName() {
4329
- return `fixed inset-0 ${Z_INDEX.drawer} ${this.className}`;
3790
+ return `fixed inset-0 ${Z_INDEX$1.drawer} ${this.className}`;
4330
3791
  }
4331
3792
  get panelClassName() {
4332
3793
  const base = [
@@ -4530,7 +3991,7 @@ class PdmSheetComponent {
4530
3991
  }
4531
3992
  }
4532
3993
  PdmSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4533
- PdmSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSheetComponent, selector: "pdm-sheet", inputs: { open: "open", side: "side", size: "size", className: "className", closeOnEsc: "closeOnEsc", closeOnBackdropClick: "closeOnBackdropClick" }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none box-border border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-solid border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3994
+ PdmSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSheetComponent, selector: "pdm-sheet", inputs: { open: "open", side: "side", size: "size", className: "className", closeOnEsc: "closeOnEsc", closeOnBackdropClick: "closeOnBackdropClick" }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none box-border border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-solid border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4534
3995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, decorators: [{
4535
3996
  type: Component,
4536
3997
  args: [{ selector: 'pdm-sheet', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none box-border border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-solid border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n" }]
@@ -4553,18 +4014,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4553
4014
  args: ['document:keydown.escape']
4554
4015
  }] } });
4555
4016
 
4556
- const COMPONENTS$q = [PdmDrawerComponent, PdmSheetComponent];
4017
+ const COMPONENTS$s = [PdmDrawerComponent, PdmSheetComponent];
4557
4018
  class PdmDrawerModule {
4558
4019
  }
4559
4020
  PdmDrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4560
- PdmDrawerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, declarations: [PdmDrawerComponent, PdmSheetComponent], imports: [CommonModule, PdmIconModule], exports: [PdmDrawerComponent, PdmSheetComponent] });
4561
- PdmDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, imports: [CommonModule, PdmIconModule] });
4021
+ PdmDrawerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, declarations: [PdmDrawerComponent, PdmSheetComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmDrawerComponent, PdmSheetComponent] });
4022
+ PdmDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, imports: [CommonModule, PdmIconModule$1] });
4562
4023
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, decorators: [{
4563
4024
  type: NgModule,
4564
4025
  args: [{
4565
- imports: [CommonModule, PdmIconModule],
4566
- declarations: COMPONENTS$q,
4567
- exports: COMPONENTS$q,
4026
+ imports: [CommonModule, PdmIconModule$1],
4027
+ declarations: COMPONENTS$s,
4028
+ exports: COMPONENTS$s,
4568
4029
  }]
4569
4030
  }] });
4570
4031
 
@@ -4679,10 +4140,10 @@ class PdmDropdownMenuComponent {
4679
4140
  return;
4680
4141
  this.open = true;
4681
4142
  this.cdr.markForCheck();
4682
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 8);
4143
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 8);
4683
4144
  // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.
4684
4145
  const resolvedPanelClass = this.overlayOptions?.panelClass
4685
- ?? (this.panelClassName ? [Z_INDEX.popover, this.panelClassName] : [Z_INDEX.popover]);
4146
+ ?? (this.panelClassName ? [Z_INDEX$1.popover, this.panelClassName] : [Z_INDEX$1.popover]);
4686
4147
  this.overlayRef = this.overlay.create({
4687
4148
  positionStrategy,
4688
4149
  scrollStrategy: this.overlay.scrollStrategies.reposition(),
@@ -4753,7 +4214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4753
4214
  args: ['document:keydown.escape']
4754
4215
  }] } });
4755
4216
 
4756
- const COMPONENTS$p = [
4217
+ const COMPONENTS$r = [
4757
4218
  PdmDropdownMenuComponent,
4758
4219
  ];
4759
4220
  class PdmDropdownMenuModule {
@@ -4765,8 +4226,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4765
4226
  type: NgModule,
4766
4227
  args: [{
4767
4228
  imports: [CommonModule, OverlayModule],
4768
- declarations: COMPONENTS$p,
4769
- exports: COMPONENTS$p
4229
+ declarations: COMPONENTS$r,
4230
+ exports: COMPONENTS$r
4770
4231
  }]
4771
4232
  }] });
4772
4233
 
@@ -4795,7 +4256,7 @@ class PdmEmptyComponent {
4795
4256
  }
4796
4257
  }
4797
4258
  PdmEmptyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4798
- PdmEmptyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmEmptyComponent, selector: "pdm-empty", inputs: { variant: "variant", title: "title", description: "description", iconName: "iconName", primaryActionLabel: "primaryActionLabel", secondaryActionLabel: "secondaryActionLabel", linkLabel: "linkLabel", className: "className" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction", linkAction: "linkAction" }, ngImport: i0, template: "<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none box-border items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmButtonComponent, selector: "pdm-button", inputs: ["type", "variant", "state", "size", "disabled", "loading", "className"], outputs: ["pressed"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4259
+ PdmEmptyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmEmptyComponent, selector: "pdm-empty", inputs: { variant: "variant", title: "title", description: "description", iconName: "iconName", primaryActionLabel: "primaryActionLabel", secondaryActionLabel: "secondaryActionLabel", linkLabel: "linkLabel", className: "className" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction", linkAction: "linkAction" }, ngImport: i0, template: "<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none box-border items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.PdmButtonComponent, selector: "pdm-button", inputs: ["type", "variant", "state", "size", "disabled", "loading", "className"], outputs: ["pressed"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4799
4260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyComponent, decorators: [{
4800
4261
  type: Component,
4801
4262
  args: [{ selector: 'pdm-empty', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none box-border items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n" }]
@@ -4823,18 +4284,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4823
4284
  type: Output
4824
4285
  }] } });
4825
4286
 
4826
- const COMPONENTS$o = [PdmEmptyComponent];
4287
+ const COMPONENTS$q = [PdmEmptyComponent];
4827
4288
  class PdmEmptyModule {
4828
4289
  }
4829
4290
  PdmEmptyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4830
- PdmEmptyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, declarations: [PdmEmptyComponent], imports: [CommonModule, PdmButtonModule, PdmIconModule], exports: [PdmEmptyComponent] });
4831
- PdmEmptyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, imports: [CommonModule, PdmButtonModule, PdmIconModule] });
4291
+ PdmEmptyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, declarations: [PdmEmptyComponent], imports: [CommonModule, PdmButtonModule$1, PdmIconModule$1], exports: [PdmEmptyComponent] });
4292
+ PdmEmptyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, imports: [CommonModule, PdmButtonModule$1, PdmIconModule$1] });
4832
4293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, decorators: [{
4833
4294
  type: NgModule,
4834
4295
  args: [{
4835
- imports: [CommonModule, PdmButtonModule, PdmIconModule],
4836
- declarations: COMPONENTS$o,
4837
- exports: COMPONENTS$o,
4296
+ imports: [CommonModule, PdmButtonModule$1, PdmIconModule$1],
4297
+ declarations: COMPONENTS$q,
4298
+ exports: COMPONENTS$q,
4838
4299
  }]
4839
4300
  }] });
4840
4301
 
@@ -4899,7 +4360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4899
4360
  type: Input
4900
4361
  }] } });
4901
4362
 
4902
- const COMPONENTS$n = [
4363
+ const COMPONENTS$p = [
4903
4364
  PdmFieldComponent,
4904
4365
  ];
4905
4366
  class PdmFieldModule {
@@ -4911,8 +4372,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4911
4372
  type: NgModule,
4912
4373
  args: [{
4913
4374
  imports: [CommonModule],
4914
- declarations: COMPONENTS$n,
4915
- exports: COMPONENTS$n
4375
+ declarations: COMPONENTS$p,
4376
+ exports: COMPONENTS$p
4916
4377
  }]
4917
4378
  }] });
4918
4379
 
@@ -4987,7 +4448,7 @@ class PdmHoverCardComponent {
4987
4448
  .withPositions(this.getPositionConfigs())
4988
4449
  .withFlexibleDimensions(false)
4989
4450
  .withPush(true);
4990
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
4451
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
4991
4452
  this.overlayRef = this.overlay.create({
4992
4453
  positionStrategy,
4993
4454
  panelClass,
@@ -5115,7 +4576,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5115
4576
  args: ["focusout"]
5116
4577
  }] } });
5117
4578
 
5118
- const COMPONENTS$m = [
4579
+ const COMPONENTS$o = [
5119
4580
  PdmHoverCardComponent,
5120
4581
  ];
5121
4582
  class PdmHoverCardModule {
@@ -5127,57 +4588,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5127
4588
  type: NgModule,
5128
4589
  args: [{
5129
4590
  imports: [CommonModule, OverlayModule],
5130
- declarations: COMPONENTS$m,
5131
- exports: COMPONENTS$m
4591
+ declarations: COMPONENTS$o,
4592
+ exports: COMPONENTS$o
5132
4593
  }]
5133
4594
  }] });
5134
4595
 
5135
- class PdmInputComponent {
5136
- constructor() {
5137
- this.id = "";
5138
- this.type = "text";
5139
- this.value = "";
5140
- this.placeholder = "";
5141
- this.disabled = false;
5142
- this.readonly = false;
5143
- this.required = false;
5144
- this.invalid = false;
5145
- this.size = "regular";
5146
- this.roundness = "default";
5147
- this.className = "";
5148
- this.inputClassName = "";
5149
- this.label = "";
5150
- this.helperText = "";
5151
- this.errorText = "";
5152
- this.valueChange = new EventEmitter();
5153
- this.blurred = new EventEmitter();
5154
- }
5155
- onInput(event) {
5156
- this.valueChange.emit(event.target.value);
5157
- }
5158
- onBlur(event) {
5159
- this.blurred.emit(event);
5160
- }
5161
- }
5162
- PdmInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5163
- PdmInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmInputComponent, selector: "pdm-input", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", size: "size", roundness: "roundness", className: "className", inputClassName: "inputClassName", label: "label", helperText: "helperText", errorText: "errorText" }, outputs: { valueChange: "valueChange", blurred: "blurred" }, ngImport: i0, template: "<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground',\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 appearance-none box-border rounded-lg border border-solid bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, decorators: [{
5165
- type: Component,
5166
- args: [{ selector: "pdm-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground',\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 appearance-none box-border rounded-lg border border-solid bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n", styles: [":host{display:block}\n"] }]
5167
- }], propDecorators: { id: [{
5168
- type: Input
5169
- }], type: [{
5170
- type: Input
5171
- }], value: [{
5172
- type: Input
5173
- }], placeholder: [{
5174
- type: Input
5175
- }], disabled: [{
5176
- type: Input
5177
- }], readonly: [{
5178
- type: Input
5179
- }], required: [{
5180
- type: Input
4596
+ const FALLBACK_NODE = [['circle', { cx: '12', cy: '12', r: '9' }]];
4597
+ class PdmIconComponent {
4598
+ constructor(sanitizer) {
4599
+ this.sanitizer = sanitizer;
4600
+ this.name = 'check';
4601
+ this.library = 'lucide';
4602
+ this.assetUrl = null;
4603
+ this.size = 16;
4604
+ this.strokeWidth = 1.5;
4605
+ this.className = '';
4606
+ this.ariaLabel = null;
4607
+ this.decorative = false;
4608
+ this.lucideIndex = this.buildLucideIndex();
4609
+ this.aliasMapByLibrary = {
4610
+ lucide: {
4611
+ 'check-circle': 'circle-check',
4612
+ 'alert-circle': 'circle-alert',
4613
+ info: 'circle-info',
4614
+ 'sort-asc': 'arrow-up-a-z',
4615
+ 'sort-desc': 'arrow-down-z-a'
4616
+ },
4617
+ tabler: {
4618
+ 'alert-triangle': 'triangle-alert',
4619
+ 'user-circle': 'circle-user',
4620
+ 'settings-2': 'settings-2',
4621
+ 'external-link': 'external-link'
4622
+ },
4623
+ hugeicons: {
4624
+ 'alert-02': 'circle-alert',
4625
+ 'user-circle': 'circle-user',
4626
+ 'search-01': 'search',
4627
+ 'settings-01': 'settings',
4628
+ 'arrow-right-01': 'chevron-right',
4629
+ 'arrow-down-01': 'chevron-down'
4630
+ },
4631
+ phosphor: {
4632
+ 'warning-circle': 'circle-alert',
4633
+ 'caret-down': 'chevron-down',
4634
+ 'caret-right': 'chevron-right',
4635
+ 'user-circle': 'circle-user',
4636
+ gear: 'settings',
4637
+ 'arrow-square-out': 'external-link'
4638
+ },
4639
+ remix: {
4640
+ 'alert-line': 'circle-alert',
4641
+ 'arrow-right-line': 'chevron-right',
4642
+ 'arrow-down-s-line': 'chevron-down',
4643
+ 'external-link-line': 'external-link',
4644
+ 'user-line': 'user',
4645
+ 'settings-3-line': 'settings'
4646
+ }
4647
+ };
4648
+ }
4649
+ get resolvedStrokeWidth() {
4650
+ const value = Number(this.strokeWidth);
4651
+ if (Number.isFinite(value) && value > 0) {
4652
+ return value;
4653
+ }
4654
+ if (this.library === 'phosphor') {
4655
+ return 1.6;
4656
+ }
4657
+ if (this.library === 'tabler') {
4658
+ return 1.8;
4659
+ }
4660
+ return 1.5;
4661
+ }
4662
+ get resolvedSize() {
4663
+ const value = Number(this.size);
4664
+ return Number.isFinite(value) && value > 0 ? value : 16;
4665
+ }
4666
+ get iconKey() {
4667
+ const raw = `${this.name || ''}`.trim();
4668
+ if (!raw) {
4669
+ return 'circle';
4670
+ }
4671
+ const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\//, '');
4672
+ const aliases = this.aliasMapByLibrary[this.library] ?? {};
4673
+ return aliases[trimmed] ?? trimmed;
4674
+ }
4675
+ get svgMarkup() {
4676
+ const node = this.resolveIconNode(this.iconKey) ?? FALLBACK_NODE;
4677
+ const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);
4678
+ const size = this.escapeAttr(this.resolvedSize);
4679
+ const body = node
4680
+ .map(([tag, attrs]) => {
4681
+ const serializedAttrs = Object.entries(attrs)
4682
+ .map(([key, value]) => `${key}="${this.escapeAttr(value)}"`)
4683
+ .join(' ');
4684
+ return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;
4685
+ })
4686
+ .join('');
4687
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="${strokeWidth}" stroke-linecap="round" stroke-linejoin="round">${body}</svg>`;
4688
+ return this.sanitizer.bypassSecurityTrustHtml(svg);
4689
+ }
4690
+ resolveIconNode(iconName) {
4691
+ const normalized = this.normalizeIconName(iconName);
4692
+ return this.lucideIndex.get(normalized) ?? null;
4693
+ }
4694
+ normalizeIconName(name) {
4695
+ return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');
4696
+ }
4697
+ buildLucideIndex() {
4698
+ const map = new Map();
4699
+ Object.entries(icons).forEach(([iconName, iconNode]) => {
4700
+ map.set(this.normalizeIconName(iconName), iconNode);
4701
+ });
4702
+ return map;
4703
+ }
4704
+ escapeAttr(value) {
4705
+ return `${value ?? ''}`
4706
+ .replace(/&/g, '&amp;')
4707
+ .replace(/"/g, '&quot;')
4708
+ .replace(/</g, '&lt;')
4709
+ .replace(/>/g, '&gt;');
4710
+ }
4711
+ }
4712
+ PdmIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
4713
+ PdmIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmIconComponent, selector: "pdm-icon", inputs: { name: "name", library: "library", assetUrl: "assetUrl", size: "size", strokeWidth: "strokeWidth", className: "className", ariaLabel: "ariaLabel", decorative: "decorative" }, ngImport: i0, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}:host svg{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, decorators: [{
4715
+ type: Component,
4716
+ args: [{ selector: 'pdm-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}:host svg{display:block}\n"] }]
4717
+ }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { name: [{
4718
+ type: Input
4719
+ }], library: [{
4720
+ type: Input
4721
+ }], assetUrl: [{
4722
+ type: Input
4723
+ }], size: [{
4724
+ type: Input
4725
+ }], strokeWidth: [{
4726
+ type: Input
4727
+ }], className: [{
4728
+ type: Input
4729
+ }], ariaLabel: [{
4730
+ type: Input
4731
+ }], decorative: [{
4732
+ type: Input
4733
+ }] } });
4734
+
4735
+ const COMPONENTS$n = [
4736
+ PdmIconComponent,
4737
+ ];
4738
+ class PdmIconModule {
4739
+ }
4740
+ PdmIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4741
+ PdmIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, declarations: [PdmIconComponent], imports: [CommonModule], exports: [PdmIconComponent] });
4742
+ PdmIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, imports: [CommonModule] });
4743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, decorators: [{
4744
+ type: NgModule,
4745
+ args: [{
4746
+ imports: [CommonModule],
4747
+ declarations: COMPONENTS$n,
4748
+ exports: COMPONENTS$n
4749
+ }]
4750
+ }] });
4751
+
4752
+ class PdmInputComponent {
4753
+ constructor() {
4754
+ this.id = "";
4755
+ this.type = "text";
4756
+ this.value = "";
4757
+ this.placeholder = "";
4758
+ this.disabled = false;
4759
+ this.readonly = false;
4760
+ this.required = false;
4761
+ this.invalid = false;
4762
+ this.size = "regular";
4763
+ this.roundness = "default";
4764
+ this.className = "";
4765
+ this.inputClassName = "";
4766
+ this.label = "";
4767
+ this.helperText = "";
4768
+ this.errorText = "";
4769
+ this.valueChange = new EventEmitter();
4770
+ this.blurred = new EventEmitter();
4771
+ }
4772
+ onInput(event) {
4773
+ this.valueChange.emit(event.target.value);
4774
+ }
4775
+ onBlur(event) {
4776
+ this.blurred.emit(event);
4777
+ }
4778
+ }
4779
+ PdmInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4780
+ PdmInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmInputComponent, selector: "pdm-input", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", size: "size", roundness: "roundness", className: "className", inputClassName: "inputClassName", label: "label", helperText: "helperText", errorText: "errorText" }, outputs: { valueChange: "valueChange", blurred: "blurred" }, ngImport: i0, template: "<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground',\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 appearance-none box-border rounded-lg border border-solid bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, decorators: [{
4782
+ type: Component,
4783
+ args: [{ selector: "pdm-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground',\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 appearance-none box-border rounded-lg border border-solid bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n", styles: [":host{display:block}\n"] }]
4784
+ }], propDecorators: { id: [{
4785
+ type: Input
4786
+ }], type: [{
4787
+ type: Input
4788
+ }], value: [{
4789
+ type: Input
4790
+ }], placeholder: [{
4791
+ type: Input
4792
+ }], disabled: [{
4793
+ type: Input
4794
+ }], readonly: [{
4795
+ type: Input
4796
+ }], required: [{
4797
+ type: Input
5181
4798
  }], invalid: [{
5182
4799
  type: Input
5183
4800
  }], size: [{
@@ -5225,7 +4842,7 @@ class PdmInputGroupComponent {
5225
4842
  }
5226
4843
  }
5227
4844
  PdmInputGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5228
- PdmInputGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmInputGroupComponent, selector: "pdm-input-group", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", invalid: "invalid", prefixText: "prefixText", suffixText: "suffixText", prefixIcon: "prefixIcon", suffixIcon: "suffixIcon", buttonText: "buttonText", className: "className" }, outputs: { valueChange: "valueChange", buttonClick: "buttonClick" }, ngImport: i0, template: "<div\n [ngClass]=\"[\n 'flex w-full flex-col items-stretch gap-2 sm:flex-row sm:items-center',\n disabled ? 'opacity-50' : '',\n className,\n ]\"\n>\n <div\n [ngClass]=\"[\n 'flex h-9 min-w-0 flex-1 box-border items-center overflow-hidden rounded-md border border-solid border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50',\n invalid ? 'border-destructive focus-within:ring-destructive' : '',\n disabled ? 'cursor-not-allowed' : '',\n ]\"\n >\n <div\n *ngIf=\"prefixText || prefixIcon\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pr-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'h-full min-w-0 flex-1 appearance-none box-border border-0 bg-transparent p-0 text-sm text-foreground outline-none placeholder:text-muted-foreground aria-invalid:placeholder:text-destructive/70',\n type === 'file'\n ? 'text-sm file:mr-2 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground'\n : '',\n ]\"\n (input)=\"onInput($event)\"\n />\n\n <div\n *ngIf=\"!buttonText && (suffixText || suffixIcon)\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pl-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"font-medium\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"buttonText\"\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"inline-flex h-9 w-full shrink-0 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed sm:w-auto\"\n (click)=\"onButtonClick($event)\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4845
+ PdmInputGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmInputGroupComponent, selector: "pdm-input-group", inputs: { id: "id", type: "type", value: "value", placeholder: "placeholder", disabled: "disabled", invalid: "invalid", prefixText: "prefixText", suffixText: "suffixText", prefixIcon: "prefixIcon", suffixIcon: "suffixIcon", buttonText: "buttonText", className: "className" }, outputs: { valueChange: "valueChange", buttonClick: "buttonClick" }, ngImport: i0, template: "<div\n [ngClass]=\"[\n 'flex w-full flex-col items-stretch gap-2 sm:flex-row sm:items-center',\n disabled ? 'opacity-50' : '',\n className,\n ]\"\n>\n <div\n [ngClass]=\"[\n 'flex h-9 min-w-0 flex-1 box-border items-center overflow-hidden rounded-md border border-solid border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50',\n invalid ? 'border-destructive focus-within:ring-destructive' : '',\n disabled ? 'cursor-not-allowed' : '',\n ]\"\n >\n <div\n *ngIf=\"prefixText || prefixIcon\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pr-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'h-full min-w-0 flex-1 appearance-none box-border border-0 bg-transparent p-0 text-sm text-foreground outline-none placeholder:text-muted-foreground aria-invalid:placeholder:text-destructive/70',\n type === 'file'\n ? 'text-sm file:mr-2 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground'\n : '',\n ]\"\n (input)=\"onInput($event)\"\n />\n\n <div\n *ngIf=\"!buttonText && (suffixText || suffixIcon)\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pl-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"font-medium\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"buttonText\"\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"inline-flex h-9 w-full shrink-0 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed sm:w-auto\"\n (click)=\"onButtonClick($event)\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5229
4846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputGroupComponent, decorators: [{
5230
4847
  type: Component,
5231
4848
  args: [{ selector: "pdm-input-group", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"[\n 'flex w-full flex-col items-stretch gap-2 sm:flex-row sm:items-center',\n disabled ? 'opacity-50' : '',\n className,\n ]\"\n>\n <div\n [ngClass]=\"[\n 'flex h-9 min-w-0 flex-1 box-border items-center overflow-hidden rounded-md border border-solid border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50',\n invalid ? 'border-destructive focus-within:ring-destructive' : '',\n disabled ? 'cursor-not-allowed' : '',\n ]\"\n >\n <div\n *ngIf=\"prefixText || prefixIcon\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pr-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'h-full min-w-0 flex-1 appearance-none box-border border-0 bg-transparent p-0 text-sm text-foreground outline-none placeholder:text-muted-foreground aria-invalid:placeholder:text-destructive/70',\n type === 'file'\n ? 'text-sm file:mr-2 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground'\n : '',\n ]\"\n (input)=\"onInput($event)\"\n />\n\n <div\n *ngIf=\"!buttonText && (suffixText || suffixIcon)\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pl-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"font-medium\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"buttonText\"\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"inline-flex h-9 w-full shrink-0 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed sm:w-auto\"\n (click)=\"onButtonClick($event)\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [":host{display:block}\n"] }]
@@ -5531,7 +5148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5531
5148
  type: Output
5532
5149
  }] } });
5533
5150
 
5534
- const COMPONENTS$l = [
5151
+ const COMPONENTS$m = [
5535
5152
  PdmInputComponent,
5536
5153
  PdmInputGroupComponent,
5537
5154
  PdmInputOtpComponent,
@@ -5545,18 +5162,18 @@ PdmInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
5545
5162
  PdmInputGroupComponent,
5546
5163
  PdmInputOtpComponent,
5547
5164
  PdmInputPasswordComponent,
5548
- PdmTextareaComponent], imports: [CommonModule, PdmIconModule], exports: [PdmInputComponent,
5165
+ PdmTextareaComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmInputComponent,
5549
5166
  PdmInputGroupComponent,
5550
5167
  PdmInputOtpComponent,
5551
5168
  PdmInputPasswordComponent,
5552
5169
  PdmTextareaComponent] });
5553
- PdmInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, imports: [CommonModule, PdmIconModule] });
5170
+ PdmInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, imports: [CommonModule, PdmIconModule$1] });
5554
5171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, decorators: [{
5555
5172
  type: NgModule,
5556
5173
  args: [{
5557
- imports: [CommonModule, PdmIconModule],
5558
- declarations: COMPONENTS$l,
5559
- exports: COMPONENTS$l,
5174
+ imports: [CommonModule, PdmIconModule$1],
5175
+ declarations: COMPONENTS$m,
5176
+ exports: COMPONENTS$m,
5560
5177
  }]
5561
5178
  }] });
5562
5179
 
@@ -5580,7 +5197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5580
5197
  type: Input
5581
5198
  }] } });
5582
5199
 
5583
- const COMPONENTS$k = [
5200
+ const COMPONENTS$l = [
5584
5201
  PdmItemComponent,
5585
5202
  ];
5586
5203
  class PdmItemModule {
@@ -5592,8 +5209,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5592
5209
  type: NgModule,
5593
5210
  args: [{
5594
5211
  imports: [CommonModule],
5595
- declarations: COMPONENTS$k,
5596
- exports: COMPONENTS$k
5212
+ declarations: COMPONENTS$l,
5213
+ exports: COMPONENTS$l
5597
5214
  }]
5598
5215
  }] });
5599
5216
 
@@ -5611,7 +5228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5611
5228
  type: Input
5612
5229
  }] } });
5613
5230
 
5614
- const COMPONENTS$j = [
5231
+ const COMPONENTS$k = [
5615
5232
  PdmKbdComponent,
5616
5233
  ];
5617
5234
  class PdmKbdModule {
@@ -5620,6 +5237,43 @@ PdmKbdModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "1
5620
5237
  PdmKbdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, declarations: [PdmKbdComponent], imports: [CommonModule], exports: [PdmKbdComponent] });
5621
5238
  PdmKbdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, imports: [CommonModule] });
5622
5239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, decorators: [{
5240
+ type: NgModule,
5241
+ args: [{
5242
+ imports: [CommonModule],
5243
+ declarations: COMPONENTS$k,
5244
+ exports: COMPONENTS$k
5245
+ }]
5246
+ }] });
5247
+
5248
+ class PdmLabelComponent {
5249
+ constructor() {
5250
+ this.forId = '';
5251
+ this.required = false;
5252
+ this.className = '';
5253
+ }
5254
+ }
5255
+ PdmLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5256
+ PdmLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmLabelComponent, selector: "pdm-label", inputs: { forId: "forId", required: "required", className: "className" }, ngImport: i0, template: "<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, decorators: [{
5258
+ type: Component,
5259
+ args: [{ selector: 'pdm-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n" }]
5260
+ }], propDecorators: { forId: [{
5261
+ type: Input
5262
+ }], required: [{
5263
+ type: Input
5264
+ }], className: [{
5265
+ type: Input
5266
+ }] } });
5267
+
5268
+ const COMPONENTS$j = [
5269
+ PdmLabelComponent,
5270
+ ];
5271
+ class PdmLabelModule {
5272
+ }
5273
+ PdmLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5274
+ PdmLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, declarations: [PdmLabelComponent], imports: [CommonModule], exports: [PdmLabelComponent] });
5275
+ PdmLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, imports: [CommonModule] });
5276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, decorators: [{
5623
5277
  type: NgModule,
5624
5278
  args: [{
5625
5279
  imports: [CommonModule],
@@ -5696,7 +5350,7 @@ class PdmMenubarComponent {
5696
5350
  .withPositions(this.getPositionConfigs())
5697
5351
  .withFlexibleDimensions(false)
5698
5352
  .withPush(true);
5699
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
5353
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
5700
5354
  this.overlayRef = this.overlay.create({
5701
5355
  positionStrategy,
5702
5356
  panelClass,
@@ -5799,7 +5453,7 @@ class PdmNativeSelectComponent {
5799
5453
  }
5800
5454
  }
5801
5455
  PdmNativeSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5802
- PdmNativeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmNativeSelectComponent, selector: "pdm-native-select", inputs: { id: "id", value: "value", disabled: "disabled", invalid: "invalid", options: "options", placeholder: "placeholder", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"relative\" [ngClass]=\"className\">\n <select\n [id]=\"id\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n (change)=\"onChange($event)\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 flex h-9 w-full appearance-none box-border rounded-md border border-solid bg-transparent px-3 py-2 pr-9 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n ]\"\n >\n <option value=\"\" disabled>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n </select>\n <pdm-icon className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\" name=\"chevron-down\" [size]=\"16\"></pdm-icon>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5456
+ PdmNativeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmNativeSelectComponent, selector: "pdm-native-select", inputs: { id: "id", value: "value", disabled: "disabled", invalid: "invalid", options: "options", placeholder: "placeholder", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"relative\" [ngClass]=\"className\">\n <select\n [id]=\"id\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n (change)=\"onChange($event)\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 flex h-9 w-full appearance-none box-border rounded-md border border-solid bg-transparent px-3 py-2 pr-9 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n ]\"\n >\n <option value=\"\" disabled>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n </select>\n <pdm-icon className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\" name=\"chevron-down\" [size]=\"16\"></pdm-icon>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5803
5457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectComponent, decorators: [{
5804
5458
  type: Component,
5805
5459
  args: [{ selector: 'pdm-native-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\" [ngClass]=\"className\">\n <select\n [id]=\"id\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n (change)=\"onChange($event)\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 flex h-9 w-full appearance-none box-border rounded-md border border-solid bg-transparent px-3 py-2 pr-9 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n ]\"\n >\n <option value=\"\" disabled>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n </select>\n <pdm-icon className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\" name=\"chevron-down\" [size]=\"16\"></pdm-icon>\n</div>\n" }]
@@ -5825,12 +5479,12 @@ const COMPONENTS$h = [PdmNativeSelectComponent];
5825
5479
  class PdmNativeSelectModule {
5826
5480
  }
5827
5481
  PdmNativeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5828
- PdmNativeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, declarations: [PdmNativeSelectComponent], imports: [CommonModule, PdmIconModule], exports: [PdmNativeSelectComponent] });
5829
- PdmNativeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, imports: [CommonModule, PdmIconModule] });
5482
+ PdmNativeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, declarations: [PdmNativeSelectComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmNativeSelectComponent] });
5483
+ PdmNativeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, imports: [CommonModule, PdmIconModule$1] });
5830
5484
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, decorators: [{
5831
5485
  type: NgModule,
5832
5486
  args: [{
5833
- imports: [CommonModule, PdmIconModule],
5487
+ imports: [CommonModule, PdmIconModule$1],
5834
5488
  declarations: COMPONENTS$h,
5835
5489
  exports: COMPONENTS$h,
5836
5490
  }]
@@ -5892,229 +5546,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5892
5546
  }]
5893
5547
  }] });
5894
5548
 
5895
- /**
5896
- * Directive used to declare an option inside `<pdm-select>` via content projection.
5897
- *
5898
- * Usage:
5899
- * ```html
5900
- * <pdm-select [(value)]="val">
5901
- * <pdm-select-option value="a">Option A</pdm-select-option>
5902
- * <pdm-select-option value="b" [disabled]="true">Option B</pdm-select-option>
5903
- * <pdm-select-option value="c" label="Option C"></pdm-select-option>
5904
- * </pdm-select>
5905
- * ```
5906
- *
5907
- * When `label` is not provided, the text content of the projected node is used.
5908
- */
5909
- class PdmSelectOptionDirective {
5910
- constructor(el) {
5911
- this.el = el;
5912
- /** The option value that will be emitted on selection. */
5913
- this.value = '';
5914
- /** When true, the option is rendered but cannot be selected. */
5915
- this.disabled = false;
5916
- /**
5917
- * Explicit label for the option.
5918
- * When omitted, the directive reads the element's `textContent` after content init.
5919
- */
5920
- this.label = '';
5921
- }
5922
- ngAfterContentInit() {
5923
- // If no explicit label, harvest text from the projected node.
5924
- if (!this.label) {
5925
- this.label = (this.el.nativeElement.textContent ?? '').trim();
5926
- }
5927
- }
5928
- /** Resolved label string — always non-empty after ngAfterContentInit. */
5929
- get resolvedLabel() {
5930
- return this.label || this.value;
5931
- }
5932
- }
5933
- PdmSelectOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5934
- PdmSelectOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectOptionDirective, selector: "pdm-select-option", inputs: { value: "value", disabled: "disabled", label: "label" }, ngImport: i0 });
5935
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, decorators: [{
5936
- type: Directive,
5937
- args: [{
5938
- selector: 'pdm-select-option'
5939
- }]
5940
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
5941
- type: Input
5942
- }], disabled: [{
5943
- type: Input
5944
- }], label: [{
5945
- type: Input
5946
- }] } });
5947
-
5948
- class PdmSelectComponent {
5949
- constructor(cdr, overlay, viewContainerRef) {
5950
- this.cdr = cdr;
5951
- this.overlay = overlay;
5952
- this.viewContainerRef = viewContainerRef;
5953
- this.id = "";
5954
- this.value = "";
5955
- this.options = [];
5956
- this.disabled = false;
5957
- this.invalid = false;
5958
- this.className = "";
5959
- this.placeholder = "Select an option";
5960
- this.open = false;
5961
- this.valueChange = new EventEmitter();
5962
- this.overlayRef = null;
5963
- this.backdropSub = null;
5964
- }
5965
- ngAfterContentInit() {
5966
- // Re-render when projected options change (e.g. *ngFor on pdm-select-option).
5967
- this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());
5968
- }
5969
- ngOnDestroy() {
5970
- this.destroyOverlay();
5971
- }
5972
- /**
5973
- * Returns the effective list of options.
5974
- * Projected `<pdm-select-option>` children take priority over the `[options]` input.
5975
- * Falls back to `[options]` when no children are projected.
5976
- */
5977
- get resolvedOptions() {
5978
- if (this.projectedOptions && this.projectedOptions.length > 0) {
5979
- return this.projectedOptions.map((d) => ({
5980
- label: d.resolvedLabel,
5981
- value: d.value,
5982
- disabled: d.disabled,
5983
- }));
5984
- }
5985
- return this.options;
5986
- }
5987
- get selectedOption() {
5988
- return this.resolvedOptions.find((option) => option.value === this.value);
5989
- }
5990
- get selectedLabel() {
5991
- return this.selectedOption?.label || this.placeholder;
5992
- }
5993
- toggle() {
5994
- if (this.disabled)
5995
- return;
5996
- if (this.open) {
5997
- this.closePanel();
5998
- }
5999
- else {
6000
- this.openPanel();
6001
- }
6002
- }
6003
- onChange(event) {
6004
- this.valueChange.emit(event.target.value);
6005
- }
6006
- selectOption(option) {
6007
- if (option.disabled)
6008
- return;
6009
- this.valueChange.emit(option.value);
6010
- this.closePanel();
6011
- }
6012
- onEscape() {
6013
- if (this.open) {
6014
- this.closePanel();
6015
- }
6016
- }
6017
- openPanel() {
6018
- if (this.overlayRef)
6019
- return;
6020
- const triggerEl = this.triggerRef?.nativeElement;
6021
- if (!triggerEl)
6022
- return;
6023
- this.open = true;
6024
- this.cdr.markForCheck();
6025
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 4);
6026
- this.overlayRef = this.overlay.create({
6027
- // CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])
6028
- // panelClass se aplica al cdk-overlay-pane wrapper
6029
- panelClass: [Z_INDEX.popover],
6030
- positionStrategy,
6031
- scrollStrategy: this.overlay.scrollStrategies.reposition(),
6032
- width: triggerEl.offsetWidth,
6033
- // Consumer overrides are spread last — they win over every default above.
6034
- ...this.overlayOptions,
6035
- });
6036
- const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
6037
- this.overlayRef.attach(portal);
6038
- this.backdropSub = this.overlayRef
6039
- .outsidePointerEvents()
6040
- .subscribe((event) => {
6041
- const target = event.target;
6042
- if (!triggerEl.contains(target)) {
6043
- this.closePanel();
6044
- }
6045
- });
6046
- this.cdr.markForCheck();
6047
- }
6048
- closePanel() {
6049
- if (!this.overlayRef)
6050
- return;
6051
- this.open = false;
6052
- this.destroyOverlay();
6053
- this.cdr.markForCheck();
6054
- }
6055
- destroyOverlay() {
6056
- if (this.backdropSub) {
6057
- this.backdropSub.unsubscribe();
6058
- this.backdropSub = null;
6059
- }
6060
- if (this.overlayRef) {
6061
- this.overlayRef.dispose();
6062
- this.overlayRef = null;
6063
- }
6064
- }
6065
- }
6066
- PdmSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
6067
- PdmSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectComponent, selector: "pdm-select", inputs: { id: "id", value: "value", options: "options", disabled: "disabled", invalid: "invalid", className: "className", placeholder: "placeholder", overlayOptions: "overlayOptions" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "projectedOptions", predicate: PdmSelectOptionDirective }], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6068
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, decorators: [{
6069
- type: Component,
6070
- args: [{ selector: "pdm-select", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
6071
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
6072
- type: Input
6073
- }], value: [{
6074
- type: Input
6075
- }], options: [{
6076
- type: Input
6077
- }], disabled: [{
6078
- type: Input
6079
- }], invalid: [{
6080
- type: Input
6081
- }], className: [{
6082
- type: Input
6083
- }], placeholder: [{
6084
- type: Input
6085
- }], overlayOptions: [{
6086
- type: Input
6087
- }], valueChange: [{
6088
- type: Output
6089
- }], triggerRef: [{
6090
- type: ViewChild,
6091
- args: ["triggerEl"]
6092
- }], panelTemplateRef: [{
6093
- type: ViewChild,
6094
- args: ["panelTemplate"]
6095
- }], projectedOptions: [{
6096
- type: ContentChildren,
6097
- args: [PdmSelectOptionDirective]
6098
- }], onEscape: [{
6099
- type: HostListener,
6100
- args: ["document:keydown.escape"]
6101
- }] } });
6102
-
6103
- const COMPONENTS$f = [PdmSelectComponent, PdmSelectOptionDirective];
6104
- class PdmSelectModule {
6105
- }
6106
- PdmSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6107
- PdmSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, declarations: [PdmSelectComponent, PdmSelectOptionDirective], imports: [CommonModule, OverlayModule, PdmIconModule], exports: [PdmSelectComponent, PdmSelectOptionDirective] });
6108
- PdmSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, imports: [CommonModule, OverlayModule, PdmIconModule] });
6109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, decorators: [{
6110
- type: NgModule,
6111
- args: [{
6112
- imports: [CommonModule, OverlayModule, PdmIconModule],
6113
- declarations: COMPONENTS$f,
6114
- exports: COMPONENTS$f,
6115
- }]
6116
- }] });
6117
-
6118
5549
  class PdmPaginationComponent {
6119
5550
  constructor() {
6120
5551
  this.page = 1;
@@ -6158,7 +5589,7 @@ class PdmPaginationComponent {
6158
5589
  }
6159
5590
  }
6160
5591
  PdmPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6161
- PdmPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmPaginationComponent, selector: "pdm-pagination", inputs: { page: "page", pageCount: "pageCount", maxVisible: "maxVisible", className: "className", rowsPerPageLabel: "rowsPerPageLabel", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions" }, outputs: { pageChange: "pageChange", rowsPerPageChange: "rowsPerPageChange" }, ngImport: i0, template: "<nav\n aria-label=\"Pagination\"\n [ngClass]=\"[\n 'mx-auto flex w-full flex-wrap items-center justify-center gap-4',\n className,\n ]\"\n>\n <div class=\"flex items-center gap-3\" *ngIf=\"rowsPerPageOptions.length > 0\">\n <span class=\"text-sm font-medium text-foreground\">{{\n rowsPerPageLabel\n }}</span>\n <pdm-select\n [value]=\"rowsPerPageValue\"\n [options]=\"rowsPerPageSelectOptions\"\n [placeholder]=\"rowsPerPageValue\"\n className=\"w-[100px] sm:w-[120px]\"\n (valueChange)=\"onRowsPerPageChangeValue($event)\"\n ></pdm-select>\n </div>\n\n <ul class=\"m-0 flex list-none items-center gap-1 p-0\">\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page <= 1\"\n (click)=\"setPage(page - 1)\"\n >\n <pdm-icon name=\"chevron-left\" [size]=\"14\"></pdm-icon>\n Previous\n </button>\n </li>\n <li *ngFor=\"let pageNumber of visiblePages\">\n <ng-container *ngIf=\"pageNumber === 'ellipsis'; else pageButton\">\n <span\n class=\"inline-flex h-9 min-w-9 items-center justify-center px-2 text-sm text-muted-foreground\"\n >...</span\n >\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md px-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n pageNumber === page\n ? 'appearance-none box-border border border-solid border-border bg-muted text-foreground shadow-sm'\n : 'appearance-none box-border border-0 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"setPage(+pageNumber)\"\n >\n {{ pageNumber }}\n </button>\n </ng-template>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page >= pageCount\"\n (click)=\"setPage(page + 1)\"\n >\n Next\n <pdm-icon name=\"chevron-right\" [size]=\"14\"></pdm-icon>\n </button>\n </li>\n </ul>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }, { kind: "component", type: PdmSelectComponent, selector: "pdm-select", inputs: ["id", "value", "options", "disabled", "invalid", "className", "placeholder", "overlayOptions"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5592
+ PdmPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmPaginationComponent, selector: "pdm-pagination", inputs: { page: "page", pageCount: "pageCount", maxVisible: "maxVisible", className: "className", rowsPerPageLabel: "rowsPerPageLabel", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions" }, outputs: { pageChange: "pageChange", rowsPerPageChange: "rowsPerPageChange" }, ngImport: i0, template: "<nav\n aria-label=\"Pagination\"\n [ngClass]=\"[\n 'mx-auto flex w-full flex-wrap items-center justify-center gap-4',\n className,\n ]\"\n>\n <div class=\"flex items-center gap-3\" *ngIf=\"rowsPerPageOptions.length > 0\">\n <span class=\"text-sm font-medium text-foreground\">{{\n rowsPerPageLabel\n }}</span>\n <pdm-select\n [value]=\"rowsPerPageValue\"\n [options]=\"rowsPerPageSelectOptions\"\n [placeholder]=\"rowsPerPageValue\"\n className=\"w-[100px] sm:w-[120px]\"\n (valueChange)=\"onRowsPerPageChangeValue($event)\"\n ></pdm-select>\n </div>\n\n <ul class=\"m-0 flex list-none items-center gap-1 p-0\">\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page <= 1\"\n (click)=\"setPage(page - 1)\"\n >\n <pdm-icon name=\"chevron-left\" [size]=\"14\"></pdm-icon>\n Previous\n </button>\n </li>\n <li *ngFor=\"let pageNumber of visiblePages\">\n <ng-container *ngIf=\"pageNumber === 'ellipsis'; else pageButton\">\n <span\n class=\"inline-flex h-9 min-w-9 items-center justify-center px-2 text-sm text-muted-foreground\"\n >...</span\n >\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md px-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n pageNumber === page\n ? 'appearance-none box-border border border-solid border-border bg-muted text-foreground shadow-sm'\n : 'appearance-none box-border border-0 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"setPage(+pageNumber)\"\n >\n {{ pageNumber }}\n </button>\n </ng-template>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page >= pageCount\"\n (click)=\"setPage(page + 1)\"\n >\n Next\n <pdm-icon name=\"chevron-right\" [size]=\"14\"></pdm-icon>\n </button>\n </li>\n </ul>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }, { kind: "component", type: i3$1.PdmSelectComponent, selector: "pdm-select", inputs: ["id", "value", "options", "disabled", "invalid", "className", "placeholder", "overlayOptions"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6162
5593
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationComponent, decorators: [{
6163
5594
  type: Component,
6164
5595
  args: [{ selector: 'pdm-pagination', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n aria-label=\"Pagination\"\n [ngClass]=\"[\n 'mx-auto flex w-full flex-wrap items-center justify-center gap-4',\n className,\n ]\"\n>\n <div class=\"flex items-center gap-3\" *ngIf=\"rowsPerPageOptions.length > 0\">\n <span class=\"text-sm font-medium text-foreground\">{{\n rowsPerPageLabel\n }}</span>\n <pdm-select\n [value]=\"rowsPerPageValue\"\n [options]=\"rowsPerPageSelectOptions\"\n [placeholder]=\"rowsPerPageValue\"\n className=\"w-[100px] sm:w-[120px]\"\n (valueChange)=\"onRowsPerPageChangeValue($event)\"\n ></pdm-select>\n </div>\n\n <ul class=\"m-0 flex list-none items-center gap-1 p-0\">\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page <= 1\"\n (click)=\"setPage(page - 1)\"\n >\n <pdm-icon name=\"chevron-left\" [size]=\"14\"></pdm-icon>\n Previous\n </button>\n </li>\n <li *ngFor=\"let pageNumber of visiblePages\">\n <ng-container *ngIf=\"pageNumber === 'ellipsis'; else pageButton\">\n <span\n class=\"inline-flex h-9 min-w-9 items-center justify-center px-2 text-sm text-muted-foreground\"\n >...</span\n >\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md px-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n pageNumber === page\n ? 'appearance-none box-border border border-solid border-border bg-muted text-foreground shadow-sm'\n : 'appearance-none box-border border-0 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"setPage(+pageNumber)\"\n >\n {{ pageNumber }}\n </button>\n </ng-template>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page >= pageCount\"\n (click)=\"setPage(page + 1)\"\n >\n Next\n <pdm-icon name=\"chevron-right\" [size]=\"14\"></pdm-icon>\n </button>\n </li>\n </ul>\n</nav>\n" }]
@@ -6182,18 +5613,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6182
5613
  type: Output
6183
5614
  }] } });
6184
5615
 
6185
- const COMPONENTS$e = [PdmPaginationComponent];
5616
+ const COMPONENTS$f = [PdmPaginationComponent];
6186
5617
  class PdmPaginationModule {
6187
5618
  }
6188
5619
  PdmPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6189
- PdmPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, declarations: [PdmPaginationComponent], imports: [CommonModule, PdmIconModule, PdmSelectModule], exports: [PdmPaginationComponent] });
6190
- PdmPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, imports: [CommonModule, PdmIconModule, PdmSelectModule] });
5620
+ PdmPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, declarations: [PdmPaginationComponent], imports: [CommonModule, PdmIconModule$1, PdmSelectModule$1], exports: [PdmPaginationComponent] });
5621
+ PdmPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, imports: [CommonModule, PdmIconModule$1, PdmSelectModule$1] });
6191
5622
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, decorators: [{
6192
5623
  type: NgModule,
6193
5624
  args: [{
6194
- imports: [CommonModule, PdmIconModule, PdmSelectModule],
6195
- declarations: COMPONENTS$e,
6196
- exports: COMPONENTS$e,
5625
+ imports: [CommonModule, PdmIconModule$1, PdmSelectModule$1],
5626
+ declarations: COMPONENTS$f,
5627
+ exports: COMPONENTS$f,
6197
5628
  }]
6198
5629
  }] });
6199
5630
 
@@ -6253,7 +5684,7 @@ class PdmPopoverComponent {
6253
5684
  .withPositions(this.getPositionConfigs())
6254
5685
  .withFlexibleDimensions(false)
6255
5686
  .withPush(true);
6256
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
5687
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
6257
5688
  this.overlayRef = this.overlay.create({
6258
5689
  positionStrategy,
6259
5690
  panelClass,
@@ -6353,7 +5784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6353
5784
  args: ["document:keydown.escape"]
6354
5785
  }] } });
6355
5786
 
6356
- const COMPONENTS$d = [
5787
+ const COMPONENTS$e = [
6357
5788
  PdmPopoverComponent,
6358
5789
  ];
6359
5790
  class PdmPopoverModule {
@@ -6365,8 +5796,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6365
5796
  type: NgModule,
6366
5797
  args: [{
6367
5798
  imports: [CommonModule, OverlayModule],
6368
- declarations: COMPONENTS$d,
6369
- exports: COMPONENTS$d
5799
+ declarations: COMPONENTS$e,
5800
+ exports: COMPONENTS$e
6370
5801
  }]
6371
5802
  }] });
6372
5803
 
@@ -6400,7 +5831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6400
5831
  type: Input
6401
5832
  }] } });
6402
5833
 
6403
- const COMPONENTS$c = [
5834
+ const COMPONENTS$d = [
6404
5835
  PdmProgressComponent,
6405
5836
  ];
6406
5837
  class PdmProgressModule {
@@ -6412,8 +5843,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6412
5843
  type: NgModule,
6413
5844
  args: [{
6414
5845
  imports: [CommonModule],
6415
- declarations: COMPONENTS$c,
6416
- exports: COMPONENTS$c
5846
+ declarations: COMPONENTS$d,
5847
+ exports: COMPONENTS$d
6417
5848
  }]
6418
5849
  }] });
6419
5850
 
@@ -6452,7 +5883,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6452
5883
  type: Output
6453
5884
  }] } });
6454
5885
 
6455
- const COMPONENTS$b = [
5886
+ const COMPONENTS$c = [
6456
5887
  PdmRadioGroupComponent,
6457
5888
  ];
6458
5889
  class PdmRadioGroupModule {
@@ -6464,8 +5895,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6464
5895
  type: NgModule,
6465
5896
  args: [{
6466
5897
  imports: [CommonModule],
6467
- declarations: COMPONENTS$b,
6468
- exports: COMPONENTS$b
5898
+ declarations: COMPONENTS$c,
5899
+ exports: COMPONENTS$c
6469
5900
  }]
6470
5901
  }] });
6471
5902
 
@@ -6486,7 +5917,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6486
5917
  type: Input
6487
5918
  }] } });
6488
5919
 
6489
- const COMPONENTS$a = [
5920
+ const COMPONENTS$b = [
6490
5921
  PdmScrollAreaComponent,
6491
5922
  ];
6492
5923
  class PdmScrollAreaModule {
@@ -6498,34 +5929,257 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6498
5929
  type: NgModule,
6499
5930
  args: [{
6500
5931
  imports: [CommonModule],
6501
- declarations: COMPONENTS$a,
6502
- exports: COMPONENTS$a
5932
+ declarations: COMPONENTS$b,
5933
+ exports: COMPONENTS$b
6503
5934
  }]
6504
5935
  }] });
6505
5936
 
6506
- class PdmSeparatorComponent {
6507
- constructor() {
6508
- this.orientation = 'horizontal';
6509
- this.decorative = true;
6510
- this.className = '';
6511
- }
6512
- get orientationClass() {
6513
- return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';
6514
- }
6515
- }
6516
- PdmSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6517
- PdmSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSeparatorComponent, selector: "pdm-separator", inputs: { orientation: "orientation", decorative: "decorative", className: "className" }, ngImport: i0, template: "<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, decorators: [{
6519
- type: Component,
6520
- args: [{ selector: 'pdm-separator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n" }]
6521
- }], propDecorators: { orientation: [{
6522
- type: Input
6523
- }], decorative: [{
6524
- type: Input
6525
- }], className: [{
6526
- type: Input
6527
- }] } });
6528
-
5937
+ /**
5938
+ * Directive used to declare an option inside `<pdm-select>` via content projection.
5939
+ *
5940
+ * Usage:
5941
+ * ```html
5942
+ * <pdm-select [(value)]="val">
5943
+ * <pdm-select-option value="a">Option A</pdm-select-option>
5944
+ * <pdm-select-option value="b" [disabled]="true">Option B</pdm-select-option>
5945
+ * <pdm-select-option value="c" label="Option C"></pdm-select-option>
5946
+ * </pdm-select>
5947
+ * ```
5948
+ *
5949
+ * When `label` is not provided, the text content of the projected node is used.
5950
+ */
5951
+ class PdmSelectOptionDirective {
5952
+ constructor(el) {
5953
+ this.el = el;
5954
+ /** The option value that will be emitted on selection. */
5955
+ this.value = '';
5956
+ /** When true, the option is rendered but cannot be selected. */
5957
+ this.disabled = false;
5958
+ /**
5959
+ * Explicit label for the option.
5960
+ * When omitted, the directive reads the element's `textContent` after content init.
5961
+ */
5962
+ this.label = '';
5963
+ }
5964
+ ngAfterContentInit() {
5965
+ // If no explicit label, harvest text from the projected node.
5966
+ if (!this.label) {
5967
+ this.label = (this.el.nativeElement.textContent ?? '').trim();
5968
+ }
5969
+ }
5970
+ /** Resolved label string — always non-empty after ngAfterContentInit. */
5971
+ get resolvedLabel() {
5972
+ return this.label || this.value;
5973
+ }
5974
+ }
5975
+ PdmSelectOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5976
+ PdmSelectOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectOptionDirective, selector: "pdm-select-option", inputs: { value: "value", disabled: "disabled", label: "label" }, ngImport: i0 });
5977
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, decorators: [{
5978
+ type: Directive,
5979
+ args: [{
5980
+ selector: 'pdm-select-option'
5981
+ }]
5982
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
5983
+ type: Input
5984
+ }], disabled: [{
5985
+ type: Input
5986
+ }], label: [{
5987
+ type: Input
5988
+ }] } });
5989
+
5990
+ class PdmSelectComponent {
5991
+ constructor(cdr, overlay, viewContainerRef) {
5992
+ this.cdr = cdr;
5993
+ this.overlay = overlay;
5994
+ this.viewContainerRef = viewContainerRef;
5995
+ this.id = "";
5996
+ this.value = "";
5997
+ this.options = [];
5998
+ this.disabled = false;
5999
+ this.invalid = false;
6000
+ this.className = "";
6001
+ this.placeholder = "Select an option";
6002
+ this.open = false;
6003
+ this.valueChange = new EventEmitter();
6004
+ this.overlayRef = null;
6005
+ this.backdropSub = null;
6006
+ }
6007
+ ngAfterContentInit() {
6008
+ // Re-render when projected options change (e.g. *ngFor on pdm-select-option).
6009
+ this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());
6010
+ }
6011
+ ngOnDestroy() {
6012
+ this.destroyOverlay();
6013
+ }
6014
+ /**
6015
+ * Returns the effective list of options.
6016
+ * Projected `<pdm-select-option>` children take priority over the `[options]` input.
6017
+ * Falls back to `[options]` when no children are projected.
6018
+ */
6019
+ get resolvedOptions() {
6020
+ if (this.projectedOptions && this.projectedOptions.length > 0) {
6021
+ return this.projectedOptions.map((d) => ({
6022
+ label: d.resolvedLabel,
6023
+ value: d.value,
6024
+ disabled: d.disabled,
6025
+ }));
6026
+ }
6027
+ return this.options;
6028
+ }
6029
+ get selectedOption() {
6030
+ return this.resolvedOptions.find((option) => option.value === this.value);
6031
+ }
6032
+ get selectedLabel() {
6033
+ return this.selectedOption?.label || this.placeholder;
6034
+ }
6035
+ toggle() {
6036
+ if (this.disabled)
6037
+ return;
6038
+ if (this.open) {
6039
+ this.closePanel();
6040
+ }
6041
+ else {
6042
+ this.openPanel();
6043
+ }
6044
+ }
6045
+ onChange(event) {
6046
+ this.valueChange.emit(event.target.value);
6047
+ }
6048
+ selectOption(option) {
6049
+ if (option.disabled)
6050
+ return;
6051
+ this.valueChange.emit(option.value);
6052
+ this.closePanel();
6053
+ }
6054
+ onEscape() {
6055
+ if (this.open) {
6056
+ this.closePanel();
6057
+ }
6058
+ }
6059
+ openPanel() {
6060
+ if (this.overlayRef)
6061
+ return;
6062
+ const triggerEl = this.triggerRef?.nativeElement;
6063
+ if (!triggerEl)
6064
+ return;
6065
+ this.open = true;
6066
+ this.cdr.markForCheck();
6067
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 4);
6068
+ this.overlayRef = this.overlay.create({
6069
+ // CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])
6070
+ // panelClass se aplica al cdk-overlay-pane wrapper
6071
+ panelClass: [Z_INDEX$1.popover],
6072
+ positionStrategy,
6073
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
6074
+ width: triggerEl.offsetWidth,
6075
+ // Consumer overrides are spread last — they win over every default above.
6076
+ ...this.overlayOptions,
6077
+ });
6078
+ const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
6079
+ this.overlayRef.attach(portal);
6080
+ this.backdropSub = this.overlayRef
6081
+ .outsidePointerEvents()
6082
+ .subscribe((event) => {
6083
+ const target = event.target;
6084
+ if (!triggerEl.contains(target)) {
6085
+ this.closePanel();
6086
+ }
6087
+ });
6088
+ this.cdr.markForCheck();
6089
+ }
6090
+ closePanel() {
6091
+ if (!this.overlayRef)
6092
+ return;
6093
+ this.open = false;
6094
+ this.destroyOverlay();
6095
+ this.cdr.markForCheck();
6096
+ }
6097
+ destroyOverlay() {
6098
+ if (this.backdropSub) {
6099
+ this.backdropSub.unsubscribe();
6100
+ this.backdropSub = null;
6101
+ }
6102
+ if (this.overlayRef) {
6103
+ this.overlayRef.dispose();
6104
+ this.overlayRef = null;
6105
+ }
6106
+ }
6107
+ }
6108
+ PdmSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
6109
+ PdmSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectComponent, selector: "pdm-select", inputs: { id: "id", value: "value", options: "options", disabled: "disabled", invalid: "invalid", className: "className", placeholder: "placeholder", overlayOptions: "overlayOptions" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "projectedOptions", predicate: PdmSelectOptionDirective }], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, decorators: [{
6111
+ type: Component,
6112
+ args: [{ selector: "pdm-select", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
6113
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
6114
+ type: Input
6115
+ }], value: [{
6116
+ type: Input
6117
+ }], options: [{
6118
+ type: Input
6119
+ }], disabled: [{
6120
+ type: Input
6121
+ }], invalid: [{
6122
+ type: Input
6123
+ }], className: [{
6124
+ type: Input
6125
+ }], placeholder: [{
6126
+ type: Input
6127
+ }], overlayOptions: [{
6128
+ type: Input
6129
+ }], valueChange: [{
6130
+ type: Output
6131
+ }], triggerRef: [{
6132
+ type: ViewChild,
6133
+ args: ["triggerEl"]
6134
+ }], panelTemplateRef: [{
6135
+ type: ViewChild,
6136
+ args: ["panelTemplate"]
6137
+ }], projectedOptions: [{
6138
+ type: ContentChildren,
6139
+ args: [PdmSelectOptionDirective]
6140
+ }], onEscape: [{
6141
+ type: HostListener,
6142
+ args: ["document:keydown.escape"]
6143
+ }] } });
6144
+
6145
+ const COMPONENTS$a = [PdmSelectComponent, PdmSelectOptionDirective];
6146
+ class PdmSelectModule {
6147
+ }
6148
+ PdmSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6149
+ PdmSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, declarations: [PdmSelectComponent, PdmSelectOptionDirective], imports: [CommonModule, OverlayModule, PdmIconModule$1], exports: [PdmSelectComponent, PdmSelectOptionDirective] });
6150
+ PdmSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, imports: [CommonModule, OverlayModule, PdmIconModule$1] });
6151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, decorators: [{
6152
+ type: NgModule,
6153
+ args: [{
6154
+ imports: [CommonModule, OverlayModule, PdmIconModule$1],
6155
+ declarations: COMPONENTS$a,
6156
+ exports: COMPONENTS$a,
6157
+ }]
6158
+ }] });
6159
+
6160
+ class PdmSeparatorComponent {
6161
+ constructor() {
6162
+ this.orientation = 'horizontal';
6163
+ this.decorative = true;
6164
+ this.className = '';
6165
+ }
6166
+ get orientationClass() {
6167
+ return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';
6168
+ }
6169
+ }
6170
+ PdmSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6171
+ PdmSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSeparatorComponent, selector: "pdm-separator", inputs: { orientation: "orientation", decorative: "decorative", className: "className" }, ngImport: i0, template: "<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, decorators: [{
6173
+ type: Component,
6174
+ args: [{ selector: 'pdm-separator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n" }]
6175
+ }], propDecorators: { orientation: [{
6176
+ type: Input
6177
+ }], decorative: [{
6178
+ type: Input
6179
+ }], className: [{
6180
+ type: Input
6181
+ }] } });
6182
+
6529
6183
  const COMPONENTS$9 = [
6530
6184
  PdmSeparatorComponent,
6531
6185
  ];
@@ -6734,7 +6388,7 @@ class PdmSonnerComponent {
6734
6388
  }
6735
6389
  }
6736
6390
  PdmSonnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6737
- PdmSonnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSonnerComponent, selector: "pdm-sonner", inputs: { title: "title", description: "description", tone: "tone", className: "className" }, outputs: { dismissed: "dismissed" }, ngImport: i0, template: "<div [ngClass]=\"['flex w-full max-w-sm items-start gap-3 rounded-lg border border-solid p-4 shadow-lg', toneClass, className]\" role=\"status\" aria-live=\"polite\">\n <div class=\"grid gap-0.5\">\n <p *ngIf=\"title\" class=\"m-0 text-sm font-semibold\">{{ title }}</p>\n <p *ngIf=\"description\" class=\"m-0 text-sm opacity-90\">{{ description }}</p>\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"ml-auto appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"dismissed.emit()\" aria-label=\"Dismiss\">\n <pdm-icon name=\"x\" [size]=\"14\"></pdm-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6391
+ PdmSonnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSonnerComponent, selector: "pdm-sonner", inputs: { title: "title", description: "description", tone: "tone", className: "className" }, outputs: { dismissed: "dismissed" }, ngImport: i0, template: "<div [ngClass]=\"['flex w-full max-w-sm items-start gap-3 rounded-lg border border-solid p-4 shadow-lg', toneClass, className]\" role=\"status\" aria-live=\"polite\">\n <div class=\"grid gap-0.5\">\n <p *ngIf=\"title\" class=\"m-0 text-sm font-semibold\">{{ title }}</p>\n <p *ngIf=\"description\" class=\"m-0 text-sm opacity-90\">{{ description }}</p>\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"ml-auto appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"dismissed.emit()\" aria-label=\"Dismiss\">\n <pdm-icon name=\"x\" [size]=\"14\"></pdm-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6738
6392
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerComponent, decorators: [{
6739
6393
  type: Component,
6740
6394
  args: [{ selector: 'pdm-sonner', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['flex w-full max-w-sm items-start gap-3 rounded-lg border border-solid p-4 shadow-lg', toneClass, className]\" role=\"status\" aria-live=\"polite\">\n <div class=\"grid gap-0.5\">\n <p *ngIf=\"title\" class=\"m-0 text-sm font-semibold\">{{ title }}</p>\n <p *ngIf=\"description\" class=\"m-0 text-sm opacity-90\">{{ description }}</p>\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"ml-auto appearance-none box-border rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"dismissed.emit()\" aria-label=\"Dismiss\">\n <pdm-icon name=\"x\" [size]=\"14\"></pdm-icon>\n </button>\n</div>\n" }]
@@ -6754,12 +6408,12 @@ const COMPONENTS$5 = [PdmSonnerComponent];
6754
6408
  class PdmSonnerModule {
6755
6409
  }
6756
6410
  PdmSonnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6757
- PdmSonnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, declarations: [PdmSonnerComponent], imports: [CommonModule, PdmIconModule], exports: [PdmSonnerComponent] });
6758
- PdmSonnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, imports: [CommonModule, PdmIconModule] });
6411
+ PdmSonnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, declarations: [PdmSonnerComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmSonnerComponent] });
6412
+ PdmSonnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, imports: [CommonModule, PdmIconModule$1] });
6759
6413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, decorators: [{
6760
6414
  type: NgModule,
6761
6415
  args: [{
6762
- imports: [CommonModule, PdmIconModule],
6416
+ imports: [CommonModule, PdmIconModule$1],
6763
6417
  declarations: COMPONENTS$5,
6764
6418
  exports: COMPONENTS$5,
6765
6419
  }]
@@ -7057,7 +6711,7 @@ class PdmTooltipComponent {
7057
6711
  .withPositions(this.getPositionConfigs())
7058
6712
  .withFlexibleDimensions(false)
7059
6713
  .withPush(true);
7060
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX);
6714
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1);
7061
6715
  this.overlayRef = this.overlay.create({
7062
6716
  positionStrategy,
7063
6717
  panelClass,
@@ -7498,6 +7152,362 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
7498
7152
  }]
7499
7153
  }] });
7500
7154
 
7155
+ /**
7156
+ * Creates a flexible position strategy that automatically adjusts
7157
+ * to keep the overlay within the viewport edges.
7158
+ *
7159
+ * The strategy tries positions in this order:
7160
+ * 1. Bottom-left (origin bottom edge, aligns to left)
7161
+ * 2. Top-left (origin top edge, aligns to left)
7162
+ * 3. Bottom-right (origin bottom edge, aligns to right)
7163
+ * 4. Top-right (origin top edge, aligns to right)
7164
+ *
7165
+ * CDK Overlay will use the first position that fits within the viewport.
7166
+ */
7167
+ function createFlexiblePositionStrategy(overlay, triggerElement, offset = 4) {
7168
+ return overlay
7169
+ .position()
7170
+ .flexibleConnectedTo(triggerElement)
7171
+ .withPositions([
7172
+ // Bottom-left (default) - opens downward from left edge
7173
+ {
7174
+ originX: 'start',
7175
+ originY: 'bottom',
7176
+ overlayX: 'start',
7177
+ overlayY: 'top',
7178
+ offsetY: offset
7179
+ },
7180
+ // Top-left - opens upward from left edge
7181
+ {
7182
+ originX: 'start',
7183
+ originY: 'top',
7184
+ overlayX: 'start',
7185
+ overlayY: 'bottom',
7186
+ offsetY: -offset
7187
+ },
7188
+ // Bottom-right - opens downward from right edge
7189
+ {
7190
+ originX: 'end',
7191
+ originY: 'bottom',
7192
+ overlayX: 'end',
7193
+ overlayY: 'top',
7194
+ offsetY: offset
7195
+ },
7196
+ // Top-right - opens upward from right edge
7197
+ {
7198
+ originX: 'end',
7199
+ originY: 'top',
7200
+ overlayX: 'end',
7201
+ overlayY: 'bottom',
7202
+ offsetY: -offset
7203
+ }
7204
+ ])
7205
+ .withFlexibleDimensions(false)
7206
+ .withPush(true);
7207
+ }
7208
+
7209
+ /**
7210
+ * Z-Index helper for overlay components.
7211
+ *
7212
+ * CRITICAL: Consumer custom panelClass MUST NOT replace the base z-index.
7213
+ * This helper ensures z-index is preserved when merging custom classes.
7214
+ */
7215
+ /**
7216
+ * Base z-index class for overlays - MUST be included in any overlay panel.
7217
+ * This ensures overlays appear above modals (z-50) and drawers (z-40).
7218
+ */
7219
+ const OVERLAY_BASE_Z_INDEX = "z-[70]";
7220
+ /**
7221
+ * Merge consumer's panelClass with our base z-index.
7222
+ * Consumer classes are APPENDED, not replacing our z-index guarantee.
7223
+ *
7224
+ * @param baseZIndex - Base z-index class to enforce (default: OVERLAY_BASE_Z_INDEX)
7225
+ * @param consumerClasses - Optional additional classes from consumer
7226
+ * @returns Array of classes safe for CDK Overlay panelClass
7227
+ */
7228
+ function mergeOverlayPanelClass(baseZIndex = OVERLAY_BASE_Z_INDEX, consumerClasses) {
7229
+ const baseClasses = baseZIndex.split(" ");
7230
+ if (!consumerClasses) {
7231
+ return baseClasses;
7232
+ }
7233
+ const consumerClassArray = Array.isArray(consumerClasses)
7234
+ ? consumerClasses
7235
+ : consumerClasses.split(" ");
7236
+ // Consumer classes are appended AFTER base classes
7237
+ // This ensures z-index from baseClasses is preserved first
7238
+ return [...baseClasses, ...consumerClassArray];
7239
+ }
7240
+ /**
7241
+ * Create OverlayConfig with guaranteed z-index.
7242
+ * Use this instead of direct OverlayConfig to ensure z-index enforcement.
7243
+ *
7244
+ * @param baseConfig - Base overlay configuration
7245
+ * @param consumerPanelClass - Optional consumer panelClass to merge
7246
+ * @returns OverlayConfig with z-index guarantee
7247
+ */
7248
+ function createZIndexEnforcedOverlay(baseConfig, consumerPanelClass) {
7249
+ const mergedClasses = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, consumerPanelClass);
7250
+ const existingPanelClass = baseConfig.panelClass;
7251
+ if (existingPanelClass) {
7252
+ const existingArray = Array.isArray(existingPanelClass)
7253
+ ? existingPanelClass
7254
+ : existingPanelClass.split(" ");
7255
+ return {
7256
+ ...baseConfig,
7257
+ panelClass: [...mergedClasses, ...existingArray],
7258
+ };
7259
+ }
7260
+ return {
7261
+ ...baseConfig,
7262
+ panelClass: mergedClasses,
7263
+ };
7264
+ }
7265
+ /**
7266
+ * Helper to extract z-index from a class string for debugging.
7267
+ */
7268
+ function extractZIndex(classes) {
7269
+ const classArray = Array.isArray(classes) ? classes : classes.split(" ");
7270
+ for (const cls of classArray) {
7271
+ if (cls.startsWith("z-") || cls.startsWith("z-[")) {
7272
+ return cls;
7273
+ }
7274
+ }
7275
+ return null;
7276
+ }
7277
+
7278
+ /**
7279
+ * Sistema de responsive utilities para PDM UI Kit
7280
+ *
7281
+ * Proporciona constantes, tipos y helpers para manejar responsive design
7282
+ * de forma consistente en todos los componentes.
7283
+ */
7284
+ /**
7285
+ * Breakpoints estándar de Tailwind CSS
7286
+ * Mobile-first approach: los estilos base son para mobile, los breakpoints son MIN-WIDTH
7287
+ */
7288
+ const BREAKPOINTS = {
7289
+ sm: '640px',
7290
+ md: '768px',
7291
+ lg: '1024px',
7292
+ xl: '1280px',
7293
+ '2xl': '1536px' // extra large desktop
7294
+ };
7295
+ /**
7296
+ * Helper para generar clases responsive de forma programática
7297
+ *
7298
+ * @example
7299
+ * responsive({ default: 'block', sm: 'flex', lg: 'grid' })
7300
+ * // Returns: 'block sm:flex lg:grid'
7301
+ */
7302
+ function responsive(config) {
7303
+ const classes = [];
7304
+ if (config.default) {
7305
+ classes.push(config.default);
7306
+ }
7307
+ ['sm', 'md', 'lg', 'xl', '2xl'].forEach(bp => {
7308
+ if (config[bp]) {
7309
+ classes.push(`${bp}:${config[bp]}`);
7310
+ }
7311
+ });
7312
+ return classes.join(' ');
7313
+ }
7314
+ /**
7315
+ * Helper para overflow responsive
7316
+ * Maneja el caso común de scroll en mobile, auto en desktop
7317
+ *
7318
+ * @example
7319
+ * overflowResponsive('x', 'scroll', 'auto')
7320
+ * // Returns: 'overflow-x-scroll sm:overflow-x-auto'
7321
+ */
7322
+ function overflowResponsive(axis, mobile, desktop) {
7323
+ const axisClass = axis === 'both' ? 'overflow' : `overflow-${axis}`;
7324
+ const mobileClass = `${axisClass}-${mobile}`;
7325
+ if (!desktop || desktop === mobile) {
7326
+ return mobileClass;
7327
+ }
7328
+ return `${mobileClass} sm:${axisClass}-${desktop}`;
7329
+ }
7330
+ /**
7331
+ * Helper para spacing responsive
7332
+ * Útil para padding/margin que necesita ajustarse por breakpoint
7333
+ *
7334
+ * @example
7335
+ * spacingResponsive('px', { default: '4', sm: '6', lg: '8' })
7336
+ * // Returns: 'px-4 sm:px-6 lg:px-8'
7337
+ */
7338
+ function spacingResponsive(property, values) {
7339
+ return responsive(Object.entries(values).reduce((acc, [key, value]) => {
7340
+ acc[key] = `${property}-${value}`;
7341
+ return acc;
7342
+ }, {}));
7343
+ }
7344
+ /**
7345
+ * Helper para width responsive
7346
+ *
7347
+ * @example
7348
+ * widthResponsive({ default: 'full', sm: 'auto', lg: '1/2' })
7349
+ * // Returns: 'w-full sm:w-auto lg:w-1/2'
7350
+ */
7351
+ function widthResponsive(values) {
7352
+ return responsive(Object.entries(values).reduce((acc, [key, value]) => {
7353
+ acc[key] = `w-${value}`;
7354
+ return acc;
7355
+ }, {}));
7356
+ }
7357
+ /**
7358
+ * Clases comunes para containers responsive
7359
+ * Pensadas para wrappers que contienen contenido que puede desbordar
7360
+ */
7361
+ const RESPONSIVE_CONTAINER = {
7362
+ // Container con scroll horizontal en mobile, contenido visible en desktop
7363
+ tableWrapper: 'relative w-full overflow-x-auto sm:overflow-x-visible',
7364
+ // Container con padding negativo en mobile para scroll edge-to-edge
7365
+ tableWrapperFullBleed: 'relative w-full -mx-4 px-4 overflow-x-auto sm:mx-0 sm:px-0 sm:overflow-x-visible',
7366
+ // Container con max-width responsive
7367
+ contentWrapper: 'w-full mx-auto px-4 sm:px-6 lg:px-8 max-w-screen-2xl',
7368
+ // Container para modals/dialogs
7369
+ modalWrapper: 'w-full max-w-lg mx-auto px-4 sm:px-0',
7370
+ // Container para forms
7371
+ formWrapper: 'w-full max-w-md mx-auto space-y-4'
7372
+ };
7373
+ /**
7374
+ * Clases comunes para display responsive
7375
+ */
7376
+ const RESPONSIVE_DISPLAY = {
7377
+ // Ocultar en mobile, mostrar en desktop
7378
+ hideOnMobile: 'hidden sm:block',
7379
+ // Mostrar solo en mobile
7380
+ showOnMobile: 'block sm:hidden',
7381
+ // Stack en mobile, flex en desktop
7382
+ stackToFlex: 'flex flex-col sm:flex-row',
7383
+ // Stack en mobile, grid en desktop
7384
+ stackToGrid: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3'
7385
+ };
7386
+ /**
7387
+ * Clases para table responsive strategies
7388
+ */
7389
+ const TABLE_RESPONSIVE = {
7390
+ // Scroll horizontal (default, más simple)
7391
+ scroll: {
7392
+ wrapper: 'relative w-full overflow-x-auto',
7393
+ table: 'w-full min-w-full',
7394
+ cell: 'whitespace-nowrap'
7395
+ },
7396
+ // Permitir wrap del contenido
7397
+ wrap: {
7398
+ wrapper: 'relative w-full overflow-x-auto',
7399
+ table: 'w-full',
7400
+ cell: 'whitespace-normal break-words'
7401
+ },
7402
+ // Stack en mobile (cada fila se convierte en card)
7403
+ // Requiere lógica adicional en el componente
7404
+ stack: {
7405
+ wrapper: 'relative w-full',
7406
+ table: 'w-full',
7407
+ row: 'block sm:table-row border-b sm:border-b-0',
7408
+ cell: 'block sm:table-cell py-2 sm:py-0 before:content-[attr(data-label)] before:font-medium before:inline-block before:w-32 sm:before:content-none'
7409
+ },
7410
+ // Collapse: ocultar columnas menos importantes en mobile
7411
+ // Se usa con clases de visibility en las columnas específicas
7412
+ collapse: {
7413
+ wrapper: 'relative w-full overflow-x-auto',
7414
+ table: 'w-full',
7415
+ cell: 'whitespace-nowrap',
7416
+ // Estas clases se aplican a columnas opcionales
7417
+ optionalColumn: 'hidden md:table-cell'
7418
+ }
7419
+ };
7420
+
7421
+ /**
7422
+ * Z-Index Scale - Sistema centralizado de z-index
7423
+ *
7424
+ * JERARQUÍA (de menor a mayor):
7425
+ * 1. base (z-0) - Elementos normales del DOM
7426
+ * 2. dropdown (z-10) - Selects, combobox, date-pickers
7427
+ * 3. sticky (z-20) - Headers, navigation bars
7428
+ * 4. drawerBackdrop (z-30) - Backdrop de drawers
7429
+ * 5. drawer (z-40) - Sidebar drawer, sheets laterales
7430
+ * 6. modalBackdrop (z-40) - Backdrop de modals ( mismo nivel que drawer)
7431
+ * 7. modal (z-50) - Dialogs, alert-dialogs
7432
+ * 8. popover (z-[70]) - Tooltips, dropdowns DENTRO de modals
7433
+ * 9. toast (z-[100]) - Notificaciones que deben estar sobre TODO
7434
+ *
7435
+ * REGLA CRÍTICA:
7436
+ * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-[70] o mayor
7437
+ * - Esto permite que funcionen DENTRO de modals (z-50)
7438
+ * - Backdrop de modal debe ser z-40 para estar DEBAJO del contenido del modal (z-50)
7439
+ */
7440
+ const Z_INDEX = {
7441
+ /**
7442
+ * Base - contenido normal del DOM
7443
+ */
7444
+ base: "z-0",
7445
+ /**
7446
+ * Dropdown - Selects, combobox, date-pickers
7447
+ * Debe estar SOBRE contenido normal pero BAJO overlays
7448
+ */
7449
+ dropdown: "z-10",
7450
+ /**
7451
+ * Sticky - Headers, navigation fija
7452
+ */
7453
+ sticky: "z-20",
7454
+ /**
7455
+ * Drawer backdrop - Backdrop de sidebar drawer
7456
+ * Debe estar DEBAJO del drawer panel y DEBAJO de modals
7457
+ */
7458
+ drawerBackdrop: "z-30",
7459
+ /**
7460
+ * Drawer - Sidebar drawer, sheets laterales
7461
+ * Debe estar SOBRE su backdrop pero BAJO modals
7462
+ */
7463
+ drawer: "z-40",
7464
+ /**
7465
+ * Modal backdrop - Backdrop de dialogs
7466
+ * Mismo nivel que drawer backdrop (z-40)
7467
+ */
7468
+ modalBackdrop: "z-40",
7469
+ /**
7470
+ * Modal - Dialogs, alert-dialogs
7471
+ * Debe estar SOBRE su backdrop
7472
+ */
7473
+ modal: "z-50",
7474
+ /**
7475
+ * Popover - Tooltips, dropdowns, selects options DENTRO de modals
7476
+ * CRÍTICO: Debe ser MAYOR que modal (z-50) para aparecer sobre modals
7477
+ * USAR SIEMPRE mergeOverlayPanelClass() para asegurar este valor
7478
+ */
7479
+ popover: "z-[70]",
7480
+ /**
7481
+ * Toast - Notificaciones globales
7482
+ * Debe estar sobre TODO
7483
+ */
7484
+ toast: "z-[100]",
7485
+ };
7486
+ /**
7487
+ * Helper para debugging z-index issues
7488
+ */
7489
+ function logZIndexStack(element) {
7490
+ if (typeof window === "undefined")
7491
+ return;
7492
+ let current = element;
7493
+ const stack = [];
7494
+ while (current && current !== document.body) {
7495
+ const computed = window.getComputedStyle(current);
7496
+ const zIndex = computed.zIndex;
7497
+ const position = computed.position;
7498
+ if (zIndex !== "auto") {
7499
+ stack.push({
7500
+ element: current.tagName +
7501
+ (current.className ? `.${current.className.split(" ")[0]}` : ""),
7502
+ zIndex,
7503
+ position,
7504
+ });
7505
+ }
7506
+ current = current.parentElement;
7507
+ }
7508
+ console.table(stack);
7509
+ }
7510
+
7501
7511
  /**
7502
7512
  * Generated bundle index. Do not edit.
7503
7513
  */