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() {
@@ -785,43 +795,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
785
795
  }]
786
796
  }] });
787
797
 
788
- class PdmLabelComponent {
789
- constructor() {
790
- this.forId = '';
791
- this.required = false;
792
- this.className = '';
793
- }
794
- }
795
- PdmLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
796
- 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 });
797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, decorators: [{
798
- type: Component,
799
- 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" }]
800
- }], propDecorators: { forId: [{
801
- type: Input
802
- }], required: [{
803
- type: Input
804
- }], className: [{
805
- type: Input
806
- }] } });
807
-
808
- const COMPONENTS$D = [
809
- PdmLabelComponent,
810
- ];
811
- class PdmLabelModule {
812
- }
813
- PdmLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
814
- PdmLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, declarations: [PdmLabelComponent], imports: [CommonModule], exports: [PdmLabelComponent] });
815
- PdmLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, imports: [CommonModule] });
816
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, decorators: [{
817
- type: NgModule,
818
- args: [{
819
- imports: [CommonModule],
820
- declarations: COMPONENTS$D,
821
- exports: COMPONENTS$D
822
- }]
823
- }] });
824
-
825
798
  const DAY_MS = 24 * 60 * 60 * 1000;
826
799
  class PdmCalendarComponent {
827
800
  constructor() {
@@ -1350,123 +1323,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1350
1323
  type: Input
1351
1324
  }] } });
1352
1325
 
1353
- /**
1354
- * Creates a flexible position strategy that automatically adjusts
1355
- * to keep the overlay within the viewport edges.
1356
- *
1357
- * The strategy tries positions in this order:
1358
- * 1. Bottom-left (origin bottom edge, aligns to left)
1359
- * 2. Top-left (origin top edge, aligns to left)
1360
- * 3. Bottom-right (origin bottom edge, aligns to right)
1361
- * 4. Top-right (origin top edge, aligns to right)
1362
- *
1363
- * CDK Overlay will use the first position that fits within the viewport.
1364
- */
1365
- function createFlexiblePositionStrategy(overlay, triggerElement, offset = 4) {
1366
- return overlay
1367
- .position()
1368
- .flexibleConnectedTo(triggerElement)
1369
- .withPositions([
1370
- // Bottom-left (default) - opens downward from left edge
1371
- {
1372
- originX: 'start',
1373
- originY: 'bottom',
1374
- overlayX: 'start',
1375
- overlayY: 'top',
1376
- offsetY: offset
1377
- },
1378
- // Top-left - opens upward from left edge
1379
- {
1380
- originX: 'start',
1381
- originY: 'top',
1382
- overlayX: 'start',
1383
- overlayY: 'bottom',
1384
- offsetY: -offset
1385
- },
1386
- // Bottom-right - opens downward from right edge
1387
- {
1388
- originX: 'end',
1389
- originY: 'bottom',
1390
- overlayX: 'end',
1391
- overlayY: 'top',
1392
- offsetY: offset
1393
- },
1394
- // Top-right - opens upward from right edge
1395
- {
1396
- originX: 'end',
1397
- originY: 'top',
1398
- overlayX: 'end',
1399
- overlayY: 'bottom',
1400
- offsetY: -offset
1401
- }
1402
- ])
1403
- .withFlexibleDimensions(false)
1404
- .withPush(true);
1405
- }
1406
-
1407
- /**
1408
- * Z-Index helper for overlay components.
1409
- *
1410
- * CRITICAL: Consumer custom panelClass MUST NOT replace the base z-index.
1411
- * This helper ensures z-index is preserved when merging custom classes.
1412
- */
1413
- /**
1414
- * Base z-index class for overlays - MUST be included in any overlay panel.
1415
- * This ensures overlays appear above modals (z-50) and drawers (z-40).
1416
- */
1417
- const OVERLAY_BASE_Z_INDEX = "z-[70]";
1418
- /**
1419
- * Merge consumer's panelClass with our base z-index.
1420
- * Consumer classes are APPENDED, not replacing our z-index guarantee.
1421
- *
1422
- * @param baseZIndex - Base z-index class to enforce (default: OVERLAY_BASE_Z_INDEX)
1423
- * @param consumerClasses - Optional additional classes from consumer
1424
- * @returns Array of classes safe for CDK Overlay panelClass
1425
- */
1426
- function mergeOverlayPanelClass(baseZIndex = OVERLAY_BASE_Z_INDEX, consumerClasses) {
1427
- const baseClasses = baseZIndex.split(" ");
1428
- if (!consumerClasses) {
1429
- return baseClasses;
1430
- }
1431
- const consumerClassArray = Array.isArray(consumerClasses)
1432
- ? consumerClasses
1433
- : consumerClasses.split(" ");
1434
- // Consumer classes are appended AFTER base classes
1435
- // This ensures z-index from baseClasses is preserved first
1436
- return [...baseClasses, ...consumerClassArray];
1437
- }
1438
- /**
1439
- * Create OverlayConfig with guaranteed z-index.
1440
- * Use this instead of direct OverlayConfig to ensure z-index enforcement.
1441
- *
1442
- * @param baseConfig - Base overlay configuration
1443
- * @param consumerPanelClass - Optional consumer panelClass to merge
1444
- * @returns OverlayConfig with z-index guarantee
1445
- */
1446
- function createZIndexEnforcedOverlay(baseConfig, consumerPanelClass) {
1447
- const mergedClasses = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, consumerPanelClass);
1448
- const existingPanelClass = baseConfig.panelClass;
1449
- if (existingPanelClass) {
1450
- const existingArray = Array.isArray(existingPanelClass)
1451
- ? existingPanelClass
1452
- : existingPanelClass.split(" ");
1453
- return Object.assign(Object.assign({}, baseConfig), { panelClass: [...mergedClasses, ...existingArray] });
1454
- }
1455
- return Object.assign(Object.assign({}, baseConfig), { panelClass: mergedClasses });
1456
- }
1457
- /**
1458
- * Helper to extract z-index from a class string for debugging.
1459
- */
1460
- function extractZIndex(classes) {
1461
- const classArray = Array.isArray(classes) ? classes : classes.split(" ");
1462
- for (const cls of classArray) {
1463
- if (cls.startsWith("z-") || cls.startsWith("z-[")) {
1464
- return cls;
1465
- }
1466
- }
1467
- return null;
1468
- }
1469
-
1470
1326
  let nextDatePickerId = 0;
1471
1327
  class PdmDatePickerComponent {
1472
1328
  constructor(cdr, overlay, viewContainerRef) {
@@ -1683,13 +1539,13 @@ class PdmDatePickerComponent {
1683
1539
  this._open = true;
1684
1540
  this.openChange.emit(true);
1685
1541
  this.cdr.markForCheck();
1686
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 8);
1542
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 8);
1687
1543
  // CRITICAL: Use mergeOverlayPanelClass to ensure z-index is never lost.
1688
1544
  // Consumer classes are appended AFTER base z-index.
1689
- const zIndexEnforced = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
1545
+ const zIndexEnforced = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
1690
1546
  // Resolve panelClass: overlayOptions.panelClass wins; otherwise use z-index enforced.
1691
1547
  const resolvedPanelClass = ((_b = this.overlayOptions) === null || _b === void 0 ? void 0 : _b.panelClass)
1692
- ? mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.overlayOptions.panelClass)
1548
+ ? mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.overlayOptions.panelClass)
1693
1549
  : zIndexEnforced;
1694
1550
  this.overlayRef = this.overlay.create(Object.assign(Object.assign({ positionStrategy, scrollStrategy: this.overlay.scrollStrategies.reposition() }, this.overlayOptions), {
1695
1551
  // panelClass always enforced last to preserve z-index.
@@ -1743,7 +1599,7 @@ class PdmDatePickerComponent {
1743
1599
  }
1744
1600
  }
1745
1601
  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 });
1746
- 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 });
1602
+ 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 });
1747
1603
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDatePickerComponent, decorators: [{
1748
1604
  type: Component,
1749
1605
  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" }]
@@ -1818,18 +1674,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1818
1674
  args: ["document:keydown.escape"]
1819
1675
  }] } });
1820
1676
 
1821
- const COMPONENTS$C = [PdmCalendarComponent, PdmDatePickerComponent];
1677
+ const COMPONENTS$D = [PdmCalendarComponent, PdmDatePickerComponent];
1822
1678
  class PdmCalendarModule {
1823
1679
  }
1824
1680
  PdmCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1825
- 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] });
1826
- PdmCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, imports: [CommonModule, OverlayModule, PdmLabelModule] });
1681
+ 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] });
1682
+ PdmCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, imports: [CommonModule, OverlayModule, PdmLabelModule$1] });
1827
1683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCalendarModule, decorators: [{
1828
1684
  type: NgModule,
1829
1685
  args: [{
1830
- imports: [CommonModule, OverlayModule, PdmLabelModule],
1831
- declarations: COMPONENTS$C,
1832
- exports: COMPONENTS$C,
1686
+ imports: [CommonModule, OverlayModule, PdmLabelModule$1],
1687
+ declarations: COMPONENTS$D,
1688
+ exports: COMPONENTS$D,
1833
1689
  }]
1834
1690
  }] });
1835
1691
 
@@ -1878,7 +1734,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1878
1734
  type: Input
1879
1735
  }] } });
1880
1736
 
1881
- const COMPONENTS$B = [
1737
+ const COMPONENTS$C = [
1882
1738
  PdmCardComponent,
1883
1739
  ];
1884
1740
  class PdmCardModule {
@@ -1890,8 +1746,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1890
1746
  type: NgModule,
1891
1747
  args: [{
1892
1748
  imports: [CommonModule],
1893
- declarations: COMPONENTS$B,
1894
- exports: COMPONENTS$B
1749
+ declarations: COMPONENTS$C,
1750
+ exports: COMPONENTS$C
1895
1751
  }]
1896
1752
  }] });
1897
1753
 
@@ -1994,7 +1850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1994
1850
  type: Output
1995
1851
  }] } });
1996
1852
 
1997
- const COMPONENTS$A = [
1853
+ const COMPONENTS$B = [
1998
1854
  PdmCarouselComponent,
1999
1855
  ];
2000
1856
  class PdmCarouselModule {
@@ -2006,8 +1862,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2006
1862
  type: NgModule,
2007
1863
  args: [{
2008
1864
  imports: [CommonModule],
2009
- declarations: COMPONENTS$A,
2010
- exports: COMPONENTS$A
1865
+ declarations: COMPONENTS$B,
1866
+ exports: COMPONENTS$B
2011
1867
  }]
2012
1868
  }] });
2013
1869
 
@@ -2186,7 +2042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2186
2042
  type: Input
2187
2043
  }] } });
2188
2044
 
2189
- const COMPONENTS$z = [
2045
+ const COMPONENTS$A = [
2190
2046
  PdmChartComponent,
2191
2047
  ];
2192
2048
  class PdmChartModule {
@@ -2198,8 +2054,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2198
2054
  type: NgModule,
2199
2055
  args: [{
2200
2056
  imports: [CommonModule],
2201
- declarations: COMPONENTS$z,
2202
- exports: COMPONENTS$z
2057
+ declarations: COMPONENTS$A,
2058
+ exports: COMPONENTS$A
2203
2059
  }]
2204
2060
  }] });
2205
2061
 
@@ -2247,7 +2103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2247
2103
  type: Output
2248
2104
  }] } });
2249
2105
 
2250
- const COMPONENTS$y = [
2106
+ const COMPONENTS$z = [
2251
2107
  PdmCheckboxComponent,
2252
2108
  ];
2253
2109
  class PdmCheckboxModule {
@@ -2259,8 +2115,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2259
2115
  type: NgModule,
2260
2116
  args: [{
2261
2117
  imports: [CommonModule],
2262
- declarations: COMPONENTS$y,
2263
- exports: COMPONENTS$y
2118
+ declarations: COMPONENTS$z,
2119
+ exports: COMPONENTS$z
2264
2120
  }]
2265
2121
  }] });
2266
2122
 
@@ -2304,7 +2160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2304
2160
  type: Output
2305
2161
  }] } });
2306
2162
 
2307
- const COMPONENTS$x = [
2163
+ const COMPONENTS$y = [
2308
2164
  PdmCollapsibleComponent,
2309
2165
  ];
2310
2166
  class PdmCollapsibleModule {
@@ -2316,8 +2172,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2316
2172
  type: NgModule,
2317
2173
  args: [{
2318
2174
  imports: [CommonModule],
2319
- declarations: COMPONENTS$x,
2320
- exports: COMPONENTS$x
2175
+ declarations: COMPONENTS$y,
2176
+ exports: COMPONENTS$y
2321
2177
  }]
2322
2178
  }] });
2323
2179
 
@@ -2386,7 +2242,7 @@ class PdmComboboxComponent {
2386
2242
  .withPositions(this.getPositionConfigs())
2387
2243
  .withFlexibleDimensions(false)
2388
2244
  .withPush(true);
2389
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
2245
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
2390
2246
  this.overlayRef = this.overlay.create({
2391
2247
  positionStrategy,
2392
2248
  panelClass,
@@ -2489,7 +2345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2489
2345
  args: ["document:keydown.escape"]
2490
2346
  }] } });
2491
2347
 
2492
- const COMPONENTS$w = [
2348
+ const COMPONENTS$x = [
2493
2349
  PdmComboboxComponent,
2494
2350
  ];
2495
2351
  class PdmComboboxModule {
@@ -2501,189 +2357,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2501
2357
  type: NgModule,
2502
2358
  args: [{
2503
2359
  imports: [CommonModule, OverlayModule],
2504
- declarations: COMPONENTS$w,
2505
- exports: COMPONENTS$w
2360
+ declarations: COMPONENTS$x,
2361
+ exports: COMPONENTS$x
2506
2362
  }]
2507
2363
  }] });
2508
2364
 
2509
- const FALLBACK_NODE = [['circle', { cx: '12', cy: '12', r: '9' }]];
2510
- class PdmIconComponent {
2511
- constructor(sanitizer) {
2512
- this.sanitizer = sanitizer;
2513
- this.name = 'check';
2514
- this.library = 'lucide';
2515
- this.assetUrl = null;
2516
- this.size = 16;
2517
- this.strokeWidth = 1.5;
2365
+ class PdmCommandComponent {
2366
+ constructor() {
2367
+ this.open = true;
2368
+ this.hintLabel = 'Press';
2369
+ this.hintKey = 'J';
2370
+ this.placeholder = 'Type a command or search...';
2371
+ this.emptyMessage = 'No results found.';
2372
+ this.items = [
2373
+ { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
2374
+ { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
2375
+ { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
2376
+ { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
2377
+ { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
2378
+ { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
2379
+ ];
2518
2380
  this.className = '';
2519
- this.ariaLabel = null;
2520
- this.decorative = false;
2521
- this.lucideIndex = this.buildLucideIndex();
2522
- this.aliasMapByLibrary = {
2523
- lucide: {
2524
- 'check-circle': 'circle-check',
2525
- 'alert-circle': 'circle-alert',
2526
- info: 'circle-info',
2527
- 'sort-asc': 'arrow-up-a-z',
2528
- 'sort-desc': 'arrow-down-z-a'
2529
- },
2530
- tabler: {
2531
- 'alert-triangle': 'triangle-alert',
2532
- 'user-circle': 'circle-user',
2533
- 'settings-2': 'settings-2',
2534
- 'external-link': 'external-link'
2535
- },
2536
- hugeicons: {
2537
- 'alert-02': 'circle-alert',
2538
- 'user-circle': 'circle-user',
2539
- 'search-01': 'search',
2540
- 'settings-01': 'settings',
2541
- 'arrow-right-01': 'chevron-right',
2542
- 'arrow-down-01': 'chevron-down'
2543
- },
2544
- phosphor: {
2545
- 'warning-circle': 'circle-alert',
2546
- 'caret-down': 'chevron-down',
2547
- 'caret-right': 'chevron-right',
2548
- 'user-circle': 'circle-user',
2549
- gear: 'settings',
2550
- 'arrow-square-out': 'external-link'
2551
- },
2552
- remix: {
2553
- 'alert-line': 'circle-alert',
2554
- 'arrow-right-line': 'chevron-right',
2555
- 'arrow-down-s-line': 'chevron-down',
2556
- 'external-link-line': 'external-link',
2557
- 'user-line': 'user',
2558
- 'settings-3-line': 'settings'
2559
- }
2560
- };
2561
- }
2562
- get resolvedStrokeWidth() {
2563
- const value = Number(this.strokeWidth);
2564
- if (Number.isFinite(value) && value > 0) {
2565
- return value;
2566
- }
2567
- if (this.library === 'phosphor') {
2568
- return 1.6;
2569
- }
2570
- if (this.library === 'tabler') {
2571
- return 1.8;
2572
- }
2573
- return 1.5;
2574
- }
2575
- get resolvedSize() {
2576
- const value = Number(this.size);
2577
- return Number.isFinite(value) && value > 0 ? value : 16;
2578
- }
2579
- get iconKey() {
2580
- var _a, _b;
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 = (_a = this.aliasMapByLibrary[this.library]) !== null && _a !== void 0 ? _a : {};
2587
- return (_b = aliases[trimmed]) !== null && _b !== void 0 ? _b : trimmed;
2588
- }
2589
- get svgMarkup() {
2590
- var _a;
2591
- const node = (_a = this.resolveIconNode(this.iconKey)) !== null && _a !== void 0 ? _a : FALLBACK_NODE;
2592
- const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);
2593
- const size = this.escapeAttr(this.resolvedSize);
2594
- const body = node
2595
- .map(([tag, attrs]) => {
2596
- const serializedAttrs = Object.entries(attrs)
2597
- .map(([key, value]) => `${key}="${this.escapeAttr(value)}"`)
2598
- .join(' ');
2599
- return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;
2600
- })
2601
- .join('');
2602
- 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>`;
2603
- return this.sanitizer.bypassSecurityTrustHtml(svg);
2604
- }
2605
- resolveIconNode(iconName) {
2606
- var _a;
2607
- const normalized = this.normalizeIconName(iconName);
2608
- return (_a = this.lucideIndex.get(normalized)) !== null && _a !== void 0 ? _a : null;
2609
- }
2610
- normalizeIconName(name) {
2611
- return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');
2612
- }
2613
- buildLucideIndex() {
2614
- const map = new Map();
2615
- Object.entries(icons).forEach(([iconName, iconNode]) => {
2616
- map.set(this.normalizeIconName(iconName), iconNode);
2617
- });
2618
- return map;
2619
- }
2620
- escapeAttr(value) {
2621
- return `${value !== null && value !== void 0 ? value : ''}`
2622
- .replace(/&/g, '&amp;')
2623
- .replace(/"/g, '&quot;')
2624
- .replace(/</g, '&lt;')
2625
- .replace(/>/g, '&gt;');
2626
- }
2627
- }
2628
- 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 });
2629
- 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 });
2630
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, decorators: [{
2631
- type: Component,
2632
- 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"] }]
2633
- }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { name: [{
2634
- type: Input
2635
- }], library: [{
2636
- type: Input
2637
- }], assetUrl: [{
2638
- type: Input
2639
- }], size: [{
2640
- type: Input
2641
- }], strokeWidth: [{
2642
- type: Input
2643
- }], className: [{
2644
- type: Input
2645
- }], ariaLabel: [{
2646
- type: Input
2647
- }], decorative: [{
2648
- type: Input
2649
- }] } });
2650
-
2651
- const COMPONENTS$v = [
2652
- PdmIconComponent,
2653
- ];
2654
- class PdmIconModule {
2655
- }
2656
- PdmIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2657
- PdmIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, declarations: [PdmIconComponent], imports: [CommonModule], exports: [PdmIconComponent] });
2658
- PdmIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, imports: [CommonModule] });
2659
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, decorators: [{
2660
- type: NgModule,
2661
- args: [{
2662
- imports: [CommonModule],
2663
- declarations: COMPONENTS$v,
2664
- exports: COMPONENTS$v
2665
- }]
2666
- }] });
2667
-
2668
- class PdmCommandComponent {
2669
- constructor() {
2670
- this.open = true;
2671
- this.hintLabel = 'Press';
2672
- this.hintKey = 'J';
2673
- this.placeholder = 'Type a command or search...';
2674
- this.emptyMessage = 'No results found.';
2675
- this.items = [
2676
- { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
2677
- { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
2678
- { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
2679
- { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
2680
- { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
2681
- { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
2682
- ];
2683
- this.className = '';
2684
- this.itemSelect = new EventEmitter();
2685
- this.openChange = new EventEmitter();
2686
- this.query = '';
2381
+ this.itemSelect = new EventEmitter();
2382
+ this.openChange = new EventEmitter();
2383
+ this.query = '';
2687
2384
  }
2688
2385
  get filteredItems() {
2689
2386
  const q = this.query.toLowerCase().trim();
@@ -2713,7 +2410,7 @@ class PdmCommandComponent {
2713
2410
  }
2714
2411
  }
2715
2412
  PdmCommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2716
- 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 });
2413
+ 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 });
2717
2414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandComponent, decorators: [{
2718
2415
  type: Component,
2719
2416
  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" }]
@@ -2737,18 +2434,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2737
2434
  type: Output
2738
2435
  }] } });
2739
2436
 
2740
- const COMPONENTS$u = [PdmCommandComponent];
2437
+ const COMPONENTS$w = [PdmCommandComponent];
2741
2438
  class PdmCommandModule {
2742
2439
  }
2743
2440
  PdmCommandModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2744
- PdmCommandModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, declarations: [PdmCommandComponent], imports: [CommonModule, PdmIconModule], exports: [PdmCommandComponent] });
2745
- PdmCommandModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, imports: [CommonModule, PdmIconModule] });
2441
+ PdmCommandModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, declarations: [PdmCommandComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmCommandComponent] });
2442
+ PdmCommandModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, imports: [CommonModule, PdmIconModule$1] });
2746
2443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCommandModule, decorators: [{
2747
2444
  type: NgModule,
2748
2445
  args: [{
2749
- imports: [CommonModule, PdmIconModule],
2750
- declarations: COMPONENTS$u,
2751
- exports: COMPONENTS$u,
2446
+ imports: [CommonModule, PdmIconModule$1],
2447
+ declarations: COMPONENTS$w,
2448
+ exports: COMPONENTS$w,
2752
2449
  }]
2753
2450
  }] });
2754
2451
 
@@ -2850,7 +2547,7 @@ class PdmContextMenuComponent {
2850
2547
  .global()
2851
2548
  .left(`${this.x}px`)
2852
2549
  .top(`${this.y}px`);
2853
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
2550
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
2854
2551
  this.overlayRef = this.overlay.create({
2855
2552
  positionStrategy,
2856
2553
  panelClass,
@@ -2911,7 +2608,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2911
2608
  args: ["document:click"]
2912
2609
  }] } });
2913
2610
 
2914
- const COMPONENTS$t = [
2611
+ const COMPONENTS$v = [
2915
2612
  PdmContextMenuComponent,
2916
2613
  ];
2917
2614
  class PdmContextMenuModule {
@@ -2923,198 +2620,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2923
2620
  type: NgModule,
2924
2621
  args: [{
2925
2622
  imports: [CommonModule, OverlayModule],
2926
- declarations: COMPONENTS$t,
2927
- exports: COMPONENTS$t
2623
+ declarations: COMPONENTS$v,
2624
+ exports: COMPONENTS$v
2928
2625
  }]
2929
2626
  }] });
2930
2627
 
2931
2628
  /**
2932
- * Sistema de responsive utilities para PDM UI Kit
2629
+ * Componente base de tabla con soporte responsive
2933
2630
  *
2934
- * Proporciona constantes, tipos y helpers para manejar responsive design
2935
- * de forma consistente en todos los componentes.
2936
- */
2937
- /**
2938
- * Breakpoints estándar de Tailwind CSS
2939
- * Mobile-first approach: los estilos base son para mobile, los breakpoints son MIN-WIDTH
2940
- */
2941
- const BREAKPOINTS = {
2942
- sm: '640px',
2943
- md: '768px',
2944
- lg: '1024px',
2945
- xl: '1280px',
2946
- '2xl': '1536px' // extra large desktop
2947
- };
2948
- /**
2949
- * Helper para generar clases responsive de forma programática
2631
+ * SIMPLIFICADO: Ya no incluye drag & drop (usar pdm-draggable-table para eso)
2950
2632
  *
2951
2633
  * @example
2952
- * responsive({ default: 'block', sm: 'flex', lg: 'grid' })
2953
- * // Returns: 'block sm:flex lg:grid'
2954
- */
2955
- function responsive(config) {
2956
- const classes = [];
2957
- if (config.default) {
2958
- classes.push(config.default);
2959
- }
2960
- ['sm', 'md', 'lg', 'xl', '2xl'].forEach(bp => {
2961
- if (config[bp]) {
2962
- classes.push(`${bp}:${config[bp]}`);
2963
- }
2964
- });
2965
- return classes.join(' ');
2966
- }
2967
- /**
2968
- * Helper para overflow responsive
2969
- * Maneja el caso común de scroll en mobile, auto en desktop
2634
+ * // Tabla simple con scroll horizontal
2635
+ * <pdm-table variant="default">
2636
+ * <thead><tr><th>Name</th><th>Email</th></tr></thead>
2637
+ * <tbody><tr><td>John</td><td>john@example.com</td></tr></tbody>
2638
+ * </pdm-table>
2970
2639
  *
2971
2640
  * @example
2972
- * overflowResponsive('x', 'scroll', 'auto')
2973
- * // Returns: 'overflow-x-scroll sm:overflow-x-auto'
2641
+ * // Tabla interactiva con wrap en mobile
2642
+ * <pdm-table variant="interactive" responsiveStrategy="wrap">
2643
+ * ...
2644
+ * </pdm-table>
2974
2645
  */
2975
- function overflowResponsive(axis, mobile, desktop) {
2976
- const axisClass = axis === 'both' ? 'overflow' : `overflow-${axis}`;
2977
- const mobileClass = `${axisClass}-${mobile}`;
2978
- if (!desktop || desktop === mobile) {
2979
- return mobileClass;
2980
- }
2981
- return `${mobileClass} sm:${axisClass}-${desktop}`;
2982
- }
2983
- /**
2984
- * Helper para spacing responsive
2985
- * Útil para padding/margin que necesita ajustarse por breakpoint
2986
- *
2987
- * @example
2988
- * spacingResponsive('px', { default: '4', sm: '6', lg: '8' })
2989
- * // Returns: 'px-4 sm:px-6 lg:px-8'
2990
- */
2991
- function spacingResponsive(property, values) {
2992
- return responsive(Object.entries(values).reduce((acc, [key, value]) => {
2993
- acc[key] = `${property}-${value}`;
2994
- return acc;
2995
- }, {}));
2996
- }
2997
- /**
2998
- * Helper para width responsive
2999
- *
3000
- * @example
3001
- * widthResponsive({ default: 'full', sm: 'auto', lg: '1/2' })
3002
- * // Returns: 'w-full sm:w-auto lg:w-1/2'
3003
- */
3004
- function widthResponsive(values) {
3005
- return responsive(Object.entries(values).reduce((acc, [key, value]) => {
3006
- acc[key] = `w-${value}`;
3007
- return acc;
3008
- }, {}));
3009
- }
3010
- /**
3011
- * Clases comunes para containers responsive
3012
- * Pensadas para wrappers que contienen contenido que puede desbordar
3013
- */
3014
- const RESPONSIVE_CONTAINER = {
3015
- // Container con scroll horizontal en mobile, contenido visible en desktop
3016
- tableWrapper: 'relative w-full overflow-x-auto sm:overflow-x-visible',
3017
- // Container con padding negativo en mobile para scroll edge-to-edge
3018
- tableWrapperFullBleed: 'relative w-full -mx-4 px-4 overflow-x-auto sm:mx-0 sm:px-0 sm:overflow-x-visible',
3019
- // Container con max-width responsive
3020
- contentWrapper: 'w-full mx-auto px-4 sm:px-6 lg:px-8 max-w-screen-2xl',
3021
- // Container para modals/dialogs
3022
- modalWrapper: 'w-full max-w-lg mx-auto px-4 sm:px-0',
3023
- // Container para forms
3024
- formWrapper: 'w-full max-w-md mx-auto space-y-4'
3025
- };
3026
- /**
3027
- * Clases comunes para display responsive
3028
- */
3029
- const RESPONSIVE_DISPLAY = {
3030
- // Ocultar en mobile, mostrar en desktop
3031
- hideOnMobile: 'hidden sm:block',
3032
- // Mostrar solo en mobile
3033
- showOnMobile: 'block sm:hidden',
3034
- // Stack en mobile, flex en desktop
3035
- stackToFlex: 'flex flex-col sm:flex-row',
3036
- // Stack en mobile, grid en desktop
3037
- stackToGrid: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3'
3038
- };
3039
- /**
3040
- * Clases para table responsive strategies
3041
- */
3042
- const TABLE_RESPONSIVE = {
3043
- // Scroll horizontal (default, más simple)
3044
- scroll: {
3045
- wrapper: 'relative w-full overflow-x-auto',
3046
- table: 'w-full min-w-full',
3047
- cell: 'whitespace-nowrap'
3048
- },
3049
- // Permitir wrap del contenido
3050
- wrap: {
3051
- wrapper: 'relative w-full overflow-x-auto',
3052
- table: 'w-full',
3053
- cell: 'whitespace-normal break-words'
3054
- },
3055
- // Stack en mobile (cada fila se convierte en card)
3056
- // Requiere lógica adicional en el componente
3057
- stack: {
3058
- wrapper: 'relative w-full',
3059
- table: 'w-full',
3060
- row: 'block sm:table-row border-b sm:border-b-0',
3061
- 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'
3062
- },
3063
- // Collapse: ocultar columnas menos importantes en mobile
3064
- // Se usa con clases de visibility en las columnas específicas
3065
- collapse: {
3066
- wrapper: 'relative w-full overflow-x-auto',
3067
- table: 'w-full',
3068
- cell: 'whitespace-nowrap',
3069
- // Estas clases se aplican a columnas opcionales
3070
- optionalColumn: 'hidden md:table-cell'
3071
- }
3072
- };
3073
-
3074
- /**
3075
- * Componente base de tabla con soporte responsive
3076
- *
3077
- * SIMPLIFICADO: Ya no incluye drag & drop (usar pdm-draggable-table para eso)
3078
- *
3079
- * @example
3080
- * // Tabla simple con scroll horizontal
3081
- * <pdm-table variant="default">
3082
- * <thead><tr><th>Name</th><th>Email</th></tr></thead>
3083
- * <tbody><tr><td>John</td><td>john@example.com</td></tr></tbody>
3084
- * </pdm-table>
3085
- *
3086
- * @example
3087
- * // Tabla interactiva con wrap en mobile
3088
- * <pdm-table variant="interactive" responsiveStrategy="wrap">
3089
- * ...
3090
- * </pdm-table>
3091
- */
3092
- class PdmTableComponent {
3093
- constructor() {
3094
- /**
3095
- * Variante visual de la tabla
3096
- * - default: tabla básica sin estilos extra
3097
- * - data: tabla con bordes y espaciado para data
3098
- * - interactive: tabla con hover, sticky header y estilos interactivos
3099
- */
3100
- this.variant = "default";
3101
- /**
3102
- * Estrategia responsive para la tabla
3103
- * - scroll: scroll horizontal en mobile (default, más simple)
3104
- * - wrap: permite que el contenido haga wrap
3105
- * - stack: convierte filas en cards en mobile (requiere data-label en celdas)
3106
- * - collapse: oculta columnas menos importantes en mobile
3107
- */
3108
- this.responsiveStrategy = "scroll";
3109
- /**
3110
- * Clases CSS adicionales para el wrapper
3111
- */
3112
- this.className = "";
3113
- /**
3114
- * Si es true, aplica padding negativo en mobile para scroll edge-to-edge
3115
- * Útil cuando la tabla está dentro de un container con padding
3116
- */
3117
- this.fullBleed = false;
2646
+ class PdmTableComponent {
2647
+ constructor() {
2648
+ /**
2649
+ * Variante visual de la tabla
2650
+ * - default: tabla básica sin estilos extra
2651
+ * - data: tabla con bordes y espaciado para data
2652
+ * - interactive: tabla con hover, sticky header y estilos interactivos
2653
+ */
2654
+ this.variant = "default";
2655
+ /**
2656
+ * Estrategia responsive para la tabla
2657
+ * - scroll: scroll horizontal en mobile (default, más simple)
2658
+ * - wrap: permite que el contenido haga wrap
2659
+ * - stack: convierte filas en cards en mobile (requiere data-label en celdas)
2660
+ * - collapse: oculta columnas menos importantes en mobile
2661
+ */
2662
+ this.responsiveStrategy = "scroll";
2663
+ /**
2664
+ * Clases CSS adicionales para el wrapper
2665
+ */
2666
+ this.className = "";
2667
+ /**
2668
+ * Si es true, aplica padding negativo en mobile para scroll edge-to-edge
2669
+ * Útil cuando la tabla está dentro de un container con padding
2670
+ */
2671
+ this.fullBleed = false;
3118
2672
  }
3119
2673
  get wrapperClasses() {
3120
2674
  const baseClasses = ["relative", "w-full"];
@@ -3138,7 +2692,7 @@ class PdmTableComponent {
3138
2692
  return [...baseClasses, ...variantClasses, ...cellClasses].filter(Boolean);
3139
2693
  }
3140
2694
  getResponsiveStrategyClasses() {
3141
- const strategy = TABLE_RESPONSIVE[this.responsiveStrategy];
2695
+ const strategy = TABLE_RESPONSIVE$1[this.responsiveStrategy];
3142
2696
  if (this.responsiveStrategy === "scroll") {
3143
2697
  return ["overflow-x-auto"];
3144
2698
  }
@@ -3842,7 +3396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3842
3396
  args: ['tableElement']
3843
3397
  }] } });
3844
3398
 
3845
- const COMPONENTS$s = [
3399
+ const COMPONENTS$u = [
3846
3400
  PdmDataTableComponent,
3847
3401
  PdmDraggableTableComponent,
3848
3402
  PdmTableComponent,
@@ -3860,101 +3414,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3860
3414
  type: NgModule,
3861
3415
  args: [{
3862
3416
  imports: [CommonModule],
3863
- declarations: COMPONENTS$s,
3864
- exports: COMPONENTS$s
3417
+ declarations: COMPONENTS$u,
3418
+ exports: COMPONENTS$u
3865
3419
  }]
3866
3420
  }] });
3867
3421
 
3868
- /**
3869
- * Z-Index Scale - Sistema centralizado de z-index
3870
- *
3871
- * JERARQUÍA (de menor a mayor):
3872
- * 1. base (z-0) - Elementos normales del DOM
3873
- * 2. dropdown (z-10) - Selects, combobox, date-pickers
3874
- * 3. sticky (z-20) - Headers, navigation bars
3875
- * 4. drawerBackdrop (z-30) - Backdrop de drawers
3876
- * 5. drawer (z-40) - Sidebar drawer, sheets laterales
3877
- * 6. modalBackdrop (z-40) - Backdrop de modals ( mismo nivel que drawer)
3878
- * 7. modal (z-50) - Dialogs, alert-dialogs
3879
- * 8. popover (z-[70]) - Tooltips, dropdowns DENTRO de modals
3880
- * 9. toast (z-[100]) - Notificaciones que deben estar sobre TODO
3881
- *
3882
- * REGLA CRÍTICA:
3883
- * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-[70] o mayor
3884
- * - Esto permite que funcionen DENTRO de modals (z-50)
3885
- * - Backdrop de modal debe ser z-40 para estar DEBAJO del contenido del modal (z-50)
3886
- */
3887
- const Z_INDEX = {
3888
- /**
3889
- * Base - contenido normal del DOM
3890
- */
3891
- base: "z-0",
3892
- /**
3893
- * Dropdown - Selects, combobox, date-pickers
3894
- * Debe estar SOBRE contenido normal pero BAJO overlays
3895
- */
3896
- dropdown: "z-10",
3897
- /**
3898
- * Sticky - Headers, navigation fija
3899
- */
3900
- sticky: "z-20",
3901
- /**
3902
- * Drawer backdrop - Backdrop de sidebar drawer
3903
- * Debe estar DEBAJO del drawer panel y DEBAJO de modals
3904
- */
3905
- drawerBackdrop: "z-30",
3906
- /**
3907
- * Drawer - Sidebar drawer, sheets laterales
3908
- * Debe estar SOBRE su backdrop pero BAJO modals
3909
- */
3910
- drawer: "z-40",
3911
- /**
3912
- * Modal backdrop - Backdrop de dialogs
3913
- * Mismo nivel que drawer backdrop (z-40)
3914
- */
3915
- modalBackdrop: "z-40",
3916
- /**
3917
- * Modal - Dialogs, alert-dialogs
3918
- * Debe estar SOBRE su backdrop
3919
- */
3920
- modal: "z-50",
3921
- /**
3922
- * Popover - Tooltips, dropdowns, selects options DENTRO de modals
3923
- * CRÍTICO: Debe ser MAYOR que modal (z-50) para aparecer sobre modals
3924
- * USAR SIEMPRE mergeOverlayPanelClass() para asegurar este valor
3925
- */
3926
- popover: "z-[70]",
3927
- /**
3928
- * Toast - Notificaciones globales
3929
- * Debe estar sobre TODO
3930
- */
3931
- toast: "z-[100]",
3932
- };
3933
- /**
3934
- * Helper para debugging z-index issues
3935
- */
3936
- function logZIndexStack(element) {
3937
- if (typeof window === "undefined")
3938
- return;
3939
- let current = element;
3940
- const stack = [];
3941
- while (current && current !== document.body) {
3942
- const computed = window.getComputedStyle(current);
3943
- const zIndex = computed.zIndex;
3944
- const position = computed.position;
3945
- if (zIndex !== "auto") {
3946
- stack.push({
3947
- element: current.tagName +
3948
- (current.className ? `.${current.className.split(" ")[0]}` : ""),
3949
- zIndex,
3950
- position,
3951
- });
3952
- }
3953
- current = current.parentElement;
3954
- }
3955
- console.table(stack);
3956
- }
3957
-
3958
3422
  /**
3959
3423
  * Modal/Dialog component con soporte responsive
3960
3424
  *
@@ -4091,7 +3555,7 @@ class PdmDialogComponent {
4091
3555
  buildPanelClasses(sizeClasses) {
4092
3556
  const base = [
4093
3557
  "relative",
4094
- Z_INDEX.modal,
3558
+ Z_INDEX$1.modal,
4095
3559
  "flex",
4096
3560
  "flex-col",
4097
3561
  "border border-solid",
@@ -4159,9 +3623,9 @@ class PdmDialogComponent {
4159
3623
  // Container con backdrop z-40
4160
3624
  // Mobile: fullscreen desde el bottom
4161
3625
  // Desktop: centrado
4162
- return responsive({
4163
- default: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,
4164
- sm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`,
3626
+ return responsive$1({
3627
+ default: `fixed inset-x-0 bottom-0 ${Z_INDEX$1.modalBackdrop} flex items-end justify-center`,
3628
+ sm: `fixed inset-0 ${Z_INDEX$1.modalBackdrop} flex items-center justify-center p-4`,
4165
3629
  });
4166
3630
  }
4167
3631
  }
@@ -4215,7 +3679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4215
3679
  args: ["document:keydown.escape"]
4216
3680
  }] } });
4217
3681
 
4218
- const COMPONENTS$r = [
3682
+ const COMPONENTS$t = [
4219
3683
  PdmDialogComponent,
4220
3684
  ];
4221
3685
  class PdmDialogModule {
@@ -4227,8 +3691,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4227
3691
  type: NgModule,
4228
3692
  args: [{
4229
3693
  imports: [CommonModule],
4230
- declarations: COMPONENTS$r,
4231
- exports: COMPONENTS$r
3694
+ declarations: COMPONENTS$t,
3695
+ exports: COMPONENTS$t
4232
3696
  }]
4233
3697
  }] });
4234
3698
 
@@ -4330,7 +3794,7 @@ class PdmDrawerComponent {
4330
3794
  this.secondaryAction.emit();
4331
3795
  }
4332
3796
  get containerClassName() {
4333
- return `fixed inset-0 ${Z_INDEX.drawer} ${this.className}`;
3797
+ return `fixed inset-0 ${Z_INDEX$1.drawer} ${this.className}`;
4334
3798
  }
4335
3799
  get panelClassName() {
4336
3800
  const base = [
@@ -4534,7 +3998,7 @@ class PdmSheetComponent {
4534
3998
  }
4535
3999
  }
4536
4000
  PdmSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4537
- 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 });
4001
+ 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 });
4538
4002
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, decorators: [{
4539
4003
  type: Component,
4540
4004
  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" }]
@@ -4557,18 +4021,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4557
4021
  args: ['document:keydown.escape']
4558
4022
  }] } });
4559
4023
 
4560
- const COMPONENTS$q = [PdmDrawerComponent, PdmSheetComponent];
4024
+ const COMPONENTS$s = [PdmDrawerComponent, PdmSheetComponent];
4561
4025
  class PdmDrawerModule {
4562
4026
  }
4563
4027
  PdmDrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4564
- 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] });
4565
- PdmDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, imports: [CommonModule, PdmIconModule] });
4028
+ 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] });
4029
+ PdmDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, imports: [CommonModule, PdmIconModule$1] });
4566
4030
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerModule, decorators: [{
4567
4031
  type: NgModule,
4568
4032
  args: [{
4569
- imports: [CommonModule, PdmIconModule],
4570
- declarations: COMPONENTS$q,
4571
- exports: COMPONENTS$q,
4033
+ imports: [CommonModule, PdmIconModule$1],
4034
+ declarations: COMPONENTS$s,
4035
+ exports: COMPONENTS$s,
4572
4036
  }]
4573
4037
  }] });
4574
4038
 
@@ -4683,9 +4147,9 @@ class PdmDropdownMenuComponent {
4683
4147
  return;
4684
4148
  this.open = true;
4685
4149
  this.cdr.markForCheck();
4686
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 8);
4150
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 8);
4687
4151
  // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.
4688
- const resolvedPanelClass = (_c = (_b = this.overlayOptions) === null || _b === void 0 ? void 0 : _b.panelClass) !== null && _c !== void 0 ? _c : (this.panelClassName ? [Z_INDEX.popover, this.panelClassName] : [Z_INDEX.popover]);
4152
+ const resolvedPanelClass = (_c = (_b = this.overlayOptions) === null || _b === void 0 ? void 0 : _b.panelClass) !== null && _c !== void 0 ? _c : (this.panelClassName ? [Z_INDEX$1.popover, this.panelClassName] : [Z_INDEX$1.popover]);
4689
4153
  this.overlayRef = this.overlay.create(Object.assign(Object.assign({ positionStrategy, scrollStrategy: this.overlay.scrollStrategies.reposition() }, this.overlayOptions), {
4690
4154
  // panelClass always overrides last: it already merges panelClassName + overlayOptions.
4691
4155
  panelClass: resolvedPanelClass }));
@@ -4751,7 +4215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4751
4215
  args: ['document:keydown.escape']
4752
4216
  }] } });
4753
4217
 
4754
- const COMPONENTS$p = [
4218
+ const COMPONENTS$r = [
4755
4219
  PdmDropdownMenuComponent,
4756
4220
  ];
4757
4221
  class PdmDropdownMenuModule {
@@ -4763,8 +4227,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4763
4227
  type: NgModule,
4764
4228
  args: [{
4765
4229
  imports: [CommonModule, OverlayModule],
4766
- declarations: COMPONENTS$p,
4767
- exports: COMPONENTS$p
4230
+ declarations: COMPONENTS$r,
4231
+ exports: COMPONENTS$r
4768
4232
  }]
4769
4233
  }] });
4770
4234
 
@@ -4793,7 +4257,7 @@ class PdmEmptyComponent {
4793
4257
  }
4794
4258
  }
4795
4259
  PdmEmptyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4796
- 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 });
4260
+ 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 });
4797
4261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyComponent, decorators: [{
4798
4262
  type: Component,
4799
4263
  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" }]
@@ -4821,18 +4285,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4821
4285
  type: Output
4822
4286
  }] } });
4823
4287
 
4824
- const COMPONENTS$o = [PdmEmptyComponent];
4288
+ const COMPONENTS$q = [PdmEmptyComponent];
4825
4289
  class PdmEmptyModule {
4826
4290
  }
4827
4291
  PdmEmptyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4828
- PdmEmptyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, declarations: [PdmEmptyComponent], imports: [CommonModule, PdmButtonModule, PdmIconModule], exports: [PdmEmptyComponent] });
4829
- PdmEmptyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, imports: [CommonModule, PdmButtonModule, PdmIconModule] });
4292
+ 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] });
4293
+ PdmEmptyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, imports: [CommonModule, PdmButtonModule$1, PdmIconModule$1] });
4830
4294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmEmptyModule, decorators: [{
4831
4295
  type: NgModule,
4832
4296
  args: [{
4833
- imports: [CommonModule, PdmButtonModule, PdmIconModule],
4834
- declarations: COMPONENTS$o,
4835
- exports: COMPONENTS$o,
4297
+ imports: [CommonModule, PdmButtonModule$1, PdmIconModule$1],
4298
+ declarations: COMPONENTS$q,
4299
+ exports: COMPONENTS$q,
4836
4300
  }]
4837
4301
  }] });
4838
4302
 
@@ -4897,7 +4361,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4897
4361
  type: Input
4898
4362
  }] } });
4899
4363
 
4900
- const COMPONENTS$n = [
4364
+ const COMPONENTS$p = [
4901
4365
  PdmFieldComponent,
4902
4366
  ];
4903
4367
  class PdmFieldModule {
@@ -4909,8 +4373,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4909
4373
  type: NgModule,
4910
4374
  args: [{
4911
4375
  imports: [CommonModule],
4912
- declarations: COMPONENTS$n,
4913
- exports: COMPONENTS$n
4376
+ declarations: COMPONENTS$p,
4377
+ exports: COMPONENTS$p
4914
4378
  }]
4915
4379
  }] });
4916
4380
 
@@ -4985,7 +4449,7 @@ class PdmHoverCardComponent {
4985
4449
  .withPositions(this.getPositionConfigs())
4986
4450
  .withFlexibleDimensions(false)
4987
4451
  .withPush(true);
4988
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
4452
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
4989
4453
  this.overlayRef = this.overlay.create({
4990
4454
  positionStrategy,
4991
4455
  panelClass,
@@ -5113,7 +4577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5113
4577
  args: ["focusout"]
5114
4578
  }] } });
5115
4579
 
5116
- const COMPONENTS$m = [
4580
+ const COMPONENTS$o = [
5117
4581
  PdmHoverCardComponent,
5118
4582
  ];
5119
4583
  class PdmHoverCardModule {
@@ -5125,54 +4589,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5125
4589
  type: NgModule,
5126
4590
  args: [{
5127
4591
  imports: [CommonModule, OverlayModule],
5128
- declarations: COMPONENTS$m,
5129
- exports: COMPONENTS$m
4592
+ declarations: COMPONENTS$o,
4593
+ exports: COMPONENTS$o
5130
4594
  }]
5131
4595
  }] });
5132
4596
 
5133
- class PdmInputComponent {
5134
- constructor() {
5135
- this.id = "";
5136
- this.type = "text";
5137
- this.value = "";
5138
- this.placeholder = "";
5139
- this.disabled = false;
5140
- this.readonly = false;
5141
- this.required = false;
5142
- this.invalid = false;
5143
- this.size = "regular";
5144
- this.roundness = "default";
5145
- this.className = "";
5146
- this.inputClassName = "";
5147
- this.label = "";
5148
- this.helperText = "";
5149
- this.errorText = "";
5150
- this.valueChange = new EventEmitter();
5151
- this.blurred = new EventEmitter();
5152
- }
5153
- onInput(event) {
5154
- this.valueChange.emit(event.target.value);
5155
- }
5156
- onBlur(event) {
5157
- this.blurred.emit(event);
5158
- }
5159
- }
5160
- PdmInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5161
- 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 });
5162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, decorators: [{
5163
- type: Component,
5164
- 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"] }]
5165
- }], propDecorators: { id: [{
5166
- type: Input
5167
- }], type: [{
5168
- type: Input
5169
- }], value: [{
5170
- type: Input
5171
- }], placeholder: [{
5172
- type: Input
5173
- }], disabled: [{
5174
- type: Input
5175
- }], readonly: [{
4597
+ const FALLBACK_NODE = [['circle', { cx: '12', cy: '12', r: '9' }]];
4598
+ class PdmIconComponent {
4599
+ constructor(sanitizer) {
4600
+ this.sanitizer = sanitizer;
4601
+ this.name = 'check';
4602
+ this.library = 'lucide';
4603
+ this.assetUrl = null;
4604
+ this.size = 16;
4605
+ this.strokeWidth = 1.5;
4606
+ this.className = '';
4607
+ this.ariaLabel = null;
4608
+ this.decorative = false;
4609
+ this.lucideIndex = this.buildLucideIndex();
4610
+ this.aliasMapByLibrary = {
4611
+ lucide: {
4612
+ 'check-circle': 'circle-check',
4613
+ 'alert-circle': 'circle-alert',
4614
+ info: 'circle-info',
4615
+ 'sort-asc': 'arrow-up-a-z',
4616
+ 'sort-desc': 'arrow-down-z-a'
4617
+ },
4618
+ tabler: {
4619
+ 'alert-triangle': 'triangle-alert',
4620
+ 'user-circle': 'circle-user',
4621
+ 'settings-2': 'settings-2',
4622
+ 'external-link': 'external-link'
4623
+ },
4624
+ hugeicons: {
4625
+ 'alert-02': 'circle-alert',
4626
+ 'user-circle': 'circle-user',
4627
+ 'search-01': 'search',
4628
+ 'settings-01': 'settings',
4629
+ 'arrow-right-01': 'chevron-right',
4630
+ 'arrow-down-01': 'chevron-down'
4631
+ },
4632
+ phosphor: {
4633
+ 'warning-circle': 'circle-alert',
4634
+ 'caret-down': 'chevron-down',
4635
+ 'caret-right': 'chevron-right',
4636
+ 'user-circle': 'circle-user',
4637
+ gear: 'settings',
4638
+ 'arrow-square-out': 'external-link'
4639
+ },
4640
+ remix: {
4641
+ 'alert-line': 'circle-alert',
4642
+ 'arrow-right-line': 'chevron-right',
4643
+ 'arrow-down-s-line': 'chevron-down',
4644
+ 'external-link-line': 'external-link',
4645
+ 'user-line': 'user',
4646
+ 'settings-3-line': 'settings'
4647
+ }
4648
+ };
4649
+ }
4650
+ get resolvedStrokeWidth() {
4651
+ const value = Number(this.strokeWidth);
4652
+ if (Number.isFinite(value) && value > 0) {
4653
+ return value;
4654
+ }
4655
+ if (this.library === 'phosphor') {
4656
+ return 1.6;
4657
+ }
4658
+ if (this.library === 'tabler') {
4659
+ return 1.8;
4660
+ }
4661
+ return 1.5;
4662
+ }
4663
+ get resolvedSize() {
4664
+ const value = Number(this.size);
4665
+ return Number.isFinite(value) && value > 0 ? value : 16;
4666
+ }
4667
+ get iconKey() {
4668
+ var _a, _b;
4669
+ const raw = `${this.name || ''}`.trim();
4670
+ if (!raw) {
4671
+ return 'circle';
4672
+ }
4673
+ const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\//, '');
4674
+ const aliases = (_a = this.aliasMapByLibrary[this.library]) !== null && _a !== void 0 ? _a : {};
4675
+ return (_b = aliases[trimmed]) !== null && _b !== void 0 ? _b : trimmed;
4676
+ }
4677
+ get svgMarkup() {
4678
+ var _a;
4679
+ const node = (_a = this.resolveIconNode(this.iconKey)) !== null && _a !== void 0 ? _a : FALLBACK_NODE;
4680
+ const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);
4681
+ const size = this.escapeAttr(this.resolvedSize);
4682
+ const body = node
4683
+ .map(([tag, attrs]) => {
4684
+ const serializedAttrs = Object.entries(attrs)
4685
+ .map(([key, value]) => `${key}="${this.escapeAttr(value)}"`)
4686
+ .join(' ');
4687
+ return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;
4688
+ })
4689
+ .join('');
4690
+ 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>`;
4691
+ return this.sanitizer.bypassSecurityTrustHtml(svg);
4692
+ }
4693
+ resolveIconNode(iconName) {
4694
+ var _a;
4695
+ const normalized = this.normalizeIconName(iconName);
4696
+ return (_a = this.lucideIndex.get(normalized)) !== null && _a !== void 0 ? _a : null;
4697
+ }
4698
+ normalizeIconName(name) {
4699
+ return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');
4700
+ }
4701
+ buildLucideIndex() {
4702
+ const map = new Map();
4703
+ Object.entries(icons).forEach(([iconName, iconNode]) => {
4704
+ map.set(this.normalizeIconName(iconName), iconNode);
4705
+ });
4706
+ return map;
4707
+ }
4708
+ escapeAttr(value) {
4709
+ return `${value !== null && value !== void 0 ? value : ''}`
4710
+ .replace(/&/g, '&amp;')
4711
+ .replace(/"/g, '&quot;')
4712
+ .replace(/</g, '&lt;')
4713
+ .replace(/>/g, '&gt;');
4714
+ }
4715
+ }
4716
+ 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 });
4717
+ 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 });
4718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconComponent, decorators: [{
4719
+ type: Component,
4720
+ 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"] }]
4721
+ }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { name: [{
4722
+ type: Input
4723
+ }], library: [{
4724
+ type: Input
4725
+ }], assetUrl: [{
4726
+ type: Input
4727
+ }], size: [{
4728
+ type: Input
4729
+ }], strokeWidth: [{
4730
+ type: Input
4731
+ }], className: [{
4732
+ type: Input
4733
+ }], ariaLabel: [{
4734
+ type: Input
4735
+ }], decorative: [{
4736
+ type: Input
4737
+ }] } });
4738
+
4739
+ const COMPONENTS$n = [
4740
+ PdmIconComponent,
4741
+ ];
4742
+ class PdmIconModule {
4743
+ }
4744
+ PdmIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4745
+ PdmIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, declarations: [PdmIconComponent], imports: [CommonModule], exports: [PdmIconComponent] });
4746
+ PdmIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, imports: [CommonModule] });
4747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmIconModule, decorators: [{
4748
+ type: NgModule,
4749
+ args: [{
4750
+ imports: [CommonModule],
4751
+ declarations: COMPONENTS$n,
4752
+ exports: COMPONENTS$n
4753
+ }]
4754
+ }] });
4755
+
4756
+ class PdmInputComponent {
4757
+ constructor() {
4758
+ this.id = "";
4759
+ this.type = "text";
4760
+ this.value = "";
4761
+ this.placeholder = "";
4762
+ this.disabled = false;
4763
+ this.readonly = false;
4764
+ this.required = false;
4765
+ this.invalid = false;
4766
+ this.size = "regular";
4767
+ this.roundness = "default";
4768
+ this.className = "";
4769
+ this.inputClassName = "";
4770
+ this.label = "";
4771
+ this.helperText = "";
4772
+ this.errorText = "";
4773
+ this.valueChange = new EventEmitter();
4774
+ this.blurred = new EventEmitter();
4775
+ }
4776
+ onInput(event) {
4777
+ this.valueChange.emit(event.target.value);
4778
+ }
4779
+ onBlur(event) {
4780
+ this.blurred.emit(event);
4781
+ }
4782
+ }
4783
+ PdmInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4784
+ 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 });
4785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputComponent, decorators: [{
4786
+ type: Component,
4787
+ 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"] }]
4788
+ }], propDecorators: { id: [{
4789
+ type: Input
4790
+ }], type: [{
4791
+ type: Input
4792
+ }], value: [{
4793
+ type: Input
4794
+ }], placeholder: [{
4795
+ type: Input
4796
+ }], disabled: [{
4797
+ type: Input
4798
+ }], readonly: [{
5176
4799
  type: Input
5177
4800
  }], required: [{
5178
4801
  type: Input
@@ -5223,7 +4846,7 @@ class PdmInputGroupComponent {
5223
4846
  }
5224
4847
  }
5225
4848
  PdmInputGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5226
- 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 });
4849
+ 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 });
5227
4850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputGroupComponent, decorators: [{
5228
4851
  type: Component,
5229
4852
  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 +5154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5531
5154
  type: Output
5532
5155
  }] } });
5533
5156
 
5534
- const COMPONENTS$l = [
5157
+ const COMPONENTS$m = [
5535
5158
  PdmInputComponent,
5536
5159
  PdmInputGroupComponent,
5537
5160
  PdmInputOtpComponent,
@@ -5545,18 +5168,18 @@ PdmInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
5545
5168
  PdmInputGroupComponent,
5546
5169
  PdmInputOtpComponent,
5547
5170
  PdmInputPasswordComponent,
5548
- PdmTextareaComponent], imports: [CommonModule, PdmIconModule], exports: [PdmInputComponent,
5171
+ PdmTextareaComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmInputComponent,
5549
5172
  PdmInputGroupComponent,
5550
5173
  PdmInputOtpComponent,
5551
5174
  PdmInputPasswordComponent,
5552
5175
  PdmTextareaComponent] });
5553
- PdmInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, imports: [CommonModule, PdmIconModule] });
5176
+ PdmInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, imports: [CommonModule, PdmIconModule$1] });
5554
5177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmInputModule, decorators: [{
5555
5178
  type: NgModule,
5556
5179
  args: [{
5557
- imports: [CommonModule, PdmIconModule],
5558
- declarations: COMPONENTS$l,
5559
- exports: COMPONENTS$l,
5180
+ imports: [CommonModule, PdmIconModule$1],
5181
+ declarations: COMPONENTS$m,
5182
+ exports: COMPONENTS$m,
5560
5183
  }]
5561
5184
  }] });
5562
5185
 
@@ -5580,7 +5203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5580
5203
  type: Input
5581
5204
  }] } });
5582
5205
 
5583
- const COMPONENTS$k = [
5206
+ const COMPONENTS$l = [
5584
5207
  PdmItemComponent,
5585
5208
  ];
5586
5209
  class PdmItemModule {
@@ -5592,8 +5215,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5592
5215
  type: NgModule,
5593
5216
  args: [{
5594
5217
  imports: [CommonModule],
5595
- declarations: COMPONENTS$k,
5596
- exports: COMPONENTS$k
5218
+ declarations: COMPONENTS$l,
5219
+ exports: COMPONENTS$l
5597
5220
  }]
5598
5221
  }] });
5599
5222
 
@@ -5611,7 +5234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5611
5234
  type: Input
5612
5235
  }] } });
5613
5236
 
5614
- const COMPONENTS$j = [
5237
+ const COMPONENTS$k = [
5615
5238
  PdmKbdComponent,
5616
5239
  ];
5617
5240
  class PdmKbdModule {
@@ -5620,6 +5243,43 @@ PdmKbdModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "1
5620
5243
  PdmKbdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, declarations: [PdmKbdComponent], imports: [CommonModule], exports: [PdmKbdComponent] });
5621
5244
  PdmKbdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, imports: [CommonModule] });
5622
5245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmKbdModule, decorators: [{
5246
+ type: NgModule,
5247
+ args: [{
5248
+ imports: [CommonModule],
5249
+ declarations: COMPONENTS$k,
5250
+ exports: COMPONENTS$k
5251
+ }]
5252
+ }] });
5253
+
5254
+ class PdmLabelComponent {
5255
+ constructor() {
5256
+ this.forId = '';
5257
+ this.required = false;
5258
+ this.className = '';
5259
+ }
5260
+ }
5261
+ PdmLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5262
+ 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 });
5263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelComponent, decorators: [{
5264
+ type: Component,
5265
+ 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" }]
5266
+ }], propDecorators: { forId: [{
5267
+ type: Input
5268
+ }], required: [{
5269
+ type: Input
5270
+ }], className: [{
5271
+ type: Input
5272
+ }] } });
5273
+
5274
+ const COMPONENTS$j = [
5275
+ PdmLabelComponent,
5276
+ ];
5277
+ class PdmLabelModule {
5278
+ }
5279
+ PdmLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5280
+ PdmLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, declarations: [PdmLabelComponent], imports: [CommonModule], exports: [PdmLabelComponent] });
5281
+ PdmLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, imports: [CommonModule] });
5282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmLabelModule, decorators: [{
5623
5283
  type: NgModule,
5624
5284
  args: [{
5625
5285
  imports: [CommonModule],
@@ -5696,7 +5356,7 @@ class PdmMenubarComponent {
5696
5356
  .withPositions(this.getPositionConfigs())
5697
5357
  .withFlexibleDimensions(false)
5698
5358
  .withPush(true);
5699
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
5359
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
5700
5360
  this.overlayRef = this.overlay.create({
5701
5361
  positionStrategy,
5702
5362
  panelClass,
@@ -5799,7 +5459,7 @@ class PdmNativeSelectComponent {
5799
5459
  }
5800
5460
  }
5801
5461
  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 });
5462
+ 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
5463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectComponent, decorators: [{
5804
5464
  type: Component,
5805
5465
  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 +5485,12 @@ const COMPONENTS$h = [PdmNativeSelectComponent];
5825
5485
  class PdmNativeSelectModule {
5826
5486
  }
5827
5487
  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] });
5488
+ PdmNativeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, declarations: [PdmNativeSelectComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmNativeSelectComponent] });
5489
+ PdmNativeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, imports: [CommonModule, PdmIconModule$1] });
5830
5490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmNativeSelectModule, decorators: [{
5831
5491
  type: NgModule,
5832
5492
  args: [{
5833
- imports: [CommonModule, PdmIconModule],
5493
+ imports: [CommonModule, PdmIconModule$1],
5834
5494
  declarations: COMPONENTS$h,
5835
5495
  exports: COMPONENTS$h,
5836
5496
  }]
@@ -5892,226 +5552,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5892
5552
  }]
5893
5553
  }] });
5894
5554
 
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
- var _a;
5924
- // If no explicit label, harvest text from the projected node.
5925
- if (!this.label) {
5926
- this.label = ((_a = this.el.nativeElement.textContent) !== null && _a !== void 0 ? _a : '').trim();
5927
- }
5928
- }
5929
- /** Resolved label string — always non-empty after ngAfterContentInit. */
5930
- get resolvedLabel() {
5931
- return this.label || this.value;
5932
- }
5933
- }
5934
- PdmSelectOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5935
- 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 });
5936
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, decorators: [{
5937
- type: Directive,
5938
- args: [{
5939
- selector: 'pdm-select-option'
5940
- }]
5941
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
5942
- type: Input
5943
- }], disabled: [{
5944
- type: Input
5945
- }], label: [{
5946
- type: Input
5947
- }] } });
5948
-
5949
- class PdmSelectComponent {
5950
- constructor(cdr, overlay, viewContainerRef) {
5951
- this.cdr = cdr;
5952
- this.overlay = overlay;
5953
- this.viewContainerRef = viewContainerRef;
5954
- this.id = "";
5955
- this.value = "";
5956
- this.options = [];
5957
- this.disabled = false;
5958
- this.invalid = false;
5959
- this.className = "";
5960
- this.placeholder = "Select an option";
5961
- this.open = false;
5962
- this.valueChange = new EventEmitter();
5963
- this.overlayRef = null;
5964
- this.backdropSub = null;
5965
- }
5966
- ngAfterContentInit() {
5967
- // Re-render when projected options change (e.g. *ngFor on pdm-select-option).
5968
- this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());
5969
- }
5970
- ngOnDestroy() {
5971
- this.destroyOverlay();
5972
- }
5973
- /**
5974
- * Returns the effective list of options.
5975
- * Projected `<pdm-select-option>` children take priority over the `[options]` input.
5976
- * Falls back to `[options]` when no children are projected.
5977
- */
5978
- get resolvedOptions() {
5979
- if (this.projectedOptions && this.projectedOptions.length > 0) {
5980
- return this.projectedOptions.map((d) => ({
5981
- label: d.resolvedLabel,
5982
- value: d.value,
5983
- disabled: d.disabled,
5984
- }));
5985
- }
5986
- return this.options;
5987
- }
5988
- get selectedOption() {
5989
- return this.resolvedOptions.find((option) => option.value === this.value);
5990
- }
5991
- get selectedLabel() {
5992
- var _a;
5993
- return ((_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.label) || this.placeholder;
5994
- }
5995
- toggle() {
5996
- if (this.disabled)
5997
- return;
5998
- if (this.open) {
5999
- this.closePanel();
6000
- }
6001
- else {
6002
- this.openPanel();
6003
- }
6004
- }
6005
- onChange(event) {
6006
- this.valueChange.emit(event.target.value);
6007
- }
6008
- selectOption(option) {
6009
- if (option.disabled)
6010
- return;
6011
- this.valueChange.emit(option.value);
6012
- this.closePanel();
6013
- }
6014
- onEscape() {
6015
- if (this.open) {
6016
- this.closePanel();
6017
- }
6018
- }
6019
- openPanel() {
6020
- var _a;
6021
- if (this.overlayRef)
6022
- return;
6023
- const triggerEl = (_a = this.triggerRef) === null || _a === void 0 ? void 0 : _a.nativeElement;
6024
- if (!triggerEl)
6025
- return;
6026
- this.open = true;
6027
- this.cdr.markForCheck();
6028
- const positionStrategy = createFlexiblePositionStrategy(this.overlay, triggerEl, 4);
6029
- this.overlayRef = this.overlay.create(Object.assign({
6030
- // CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])
6031
- // panelClass se aplica al cdk-overlay-pane wrapper
6032
- panelClass: [Z_INDEX.popover], positionStrategy, scrollStrategy: this.overlay.scrollStrategies.reposition(), width: triggerEl.offsetWidth }, this.overlayOptions));
6033
- const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
6034
- this.overlayRef.attach(portal);
6035
- this.backdropSub = this.overlayRef
6036
- .outsidePointerEvents()
6037
- .subscribe((event) => {
6038
- const target = event.target;
6039
- if (!triggerEl.contains(target)) {
6040
- this.closePanel();
6041
- }
6042
- });
6043
- this.cdr.markForCheck();
6044
- }
6045
- closePanel() {
6046
- if (!this.overlayRef)
6047
- return;
6048
- this.open = false;
6049
- this.destroyOverlay();
6050
- this.cdr.markForCheck();
6051
- }
6052
- destroyOverlay() {
6053
- if (this.backdropSub) {
6054
- this.backdropSub.unsubscribe();
6055
- this.backdropSub = null;
6056
- }
6057
- if (this.overlayRef) {
6058
- this.overlayRef.dispose();
6059
- this.overlayRef = null;
6060
- }
6061
- }
6062
- }
6063
- 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 });
6064
- 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 });
6065
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, decorators: [{
6066
- type: Component,
6067
- 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"] }]
6068
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
6069
- type: Input
6070
- }], value: [{
6071
- type: Input
6072
- }], options: [{
6073
- type: Input
6074
- }], disabled: [{
6075
- type: Input
6076
- }], invalid: [{
6077
- type: Input
6078
- }], className: [{
6079
- type: Input
6080
- }], placeholder: [{
6081
- type: Input
6082
- }], overlayOptions: [{
6083
- type: Input
6084
- }], valueChange: [{
6085
- type: Output
6086
- }], triggerRef: [{
6087
- type: ViewChild,
6088
- args: ["triggerEl"]
6089
- }], panelTemplateRef: [{
6090
- type: ViewChild,
6091
- args: ["panelTemplate"]
6092
- }], projectedOptions: [{
6093
- type: ContentChildren,
6094
- args: [PdmSelectOptionDirective]
6095
- }], onEscape: [{
6096
- type: HostListener,
6097
- args: ["document:keydown.escape"]
6098
- }] } });
6099
-
6100
- const COMPONENTS$f = [PdmSelectComponent, PdmSelectOptionDirective];
6101
- class PdmSelectModule {
6102
- }
6103
- PdmSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6104
- 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] });
6105
- PdmSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, imports: [CommonModule, OverlayModule, PdmIconModule] });
6106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, decorators: [{
6107
- type: NgModule,
6108
- args: [{
6109
- imports: [CommonModule, OverlayModule, PdmIconModule],
6110
- declarations: COMPONENTS$f,
6111
- exports: COMPONENTS$f,
6112
- }]
6113
- }] });
6114
-
6115
5555
  class PdmPaginationComponent {
6116
5556
  constructor() {
6117
5557
  this.page = 1;
@@ -6155,7 +5595,7 @@ class PdmPaginationComponent {
6155
5595
  }
6156
5596
  }
6157
5597
  PdmPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6158
- 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 });
5598
+ 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 });
6159
5599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationComponent, decorators: [{
6160
5600
  type: Component,
6161
5601
  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" }]
@@ -6179,18 +5619,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6179
5619
  type: Output
6180
5620
  }] } });
6181
5621
 
6182
- const COMPONENTS$e = [PdmPaginationComponent];
5622
+ const COMPONENTS$f = [PdmPaginationComponent];
6183
5623
  class PdmPaginationModule {
6184
5624
  }
6185
5625
  PdmPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6186
- PdmPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, declarations: [PdmPaginationComponent], imports: [CommonModule, PdmIconModule, PdmSelectModule], exports: [PdmPaginationComponent] });
6187
- PdmPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, imports: [CommonModule, PdmIconModule, PdmSelectModule] });
5626
+ 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] });
5627
+ PdmPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, imports: [CommonModule, PdmIconModule$1, PdmSelectModule$1] });
6188
5628
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmPaginationModule, decorators: [{
6189
5629
  type: NgModule,
6190
5630
  args: [{
6191
- imports: [CommonModule, PdmIconModule, PdmSelectModule],
6192
- declarations: COMPONENTS$e,
6193
- exports: COMPONENTS$e,
5631
+ imports: [CommonModule, PdmIconModule$1, PdmSelectModule$1],
5632
+ declarations: COMPONENTS$f,
5633
+ exports: COMPONENTS$f,
6194
5634
  }]
6195
5635
  }] });
6196
5636
 
@@ -6251,7 +5691,7 @@ class PdmPopoverComponent {
6251
5691
  .withPositions(this.getPositionConfigs())
6252
5692
  .withFlexibleDimensions(false)
6253
5693
  .withPush(true);
6254
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, this.panelClassName);
5694
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1, this.panelClassName);
6255
5695
  this.overlayRef = this.overlay.create({
6256
5696
  positionStrategy,
6257
5697
  panelClass,
@@ -6351,7 +5791,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6351
5791
  args: ["document:keydown.escape"]
6352
5792
  }] } });
6353
5793
 
6354
- const COMPONENTS$d = [
5794
+ const COMPONENTS$e = [
6355
5795
  PdmPopoverComponent,
6356
5796
  ];
6357
5797
  class PdmPopoverModule {
@@ -6363,8 +5803,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6363
5803
  type: NgModule,
6364
5804
  args: [{
6365
5805
  imports: [CommonModule, OverlayModule],
6366
- declarations: COMPONENTS$d,
6367
- exports: COMPONENTS$d
5806
+ declarations: COMPONENTS$e,
5807
+ exports: COMPONENTS$e
6368
5808
  }]
6369
5809
  }] });
6370
5810
 
@@ -6398,7 +5838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6398
5838
  type: Input
6399
5839
  }] } });
6400
5840
 
6401
- const COMPONENTS$c = [
5841
+ const COMPONENTS$d = [
6402
5842
  PdmProgressComponent,
6403
5843
  ];
6404
5844
  class PdmProgressModule {
@@ -6410,8 +5850,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6410
5850
  type: NgModule,
6411
5851
  args: [{
6412
5852
  imports: [CommonModule],
6413
- declarations: COMPONENTS$c,
6414
- exports: COMPONENTS$c
5853
+ declarations: COMPONENTS$d,
5854
+ exports: COMPONENTS$d
6415
5855
  }]
6416
5856
  }] });
6417
5857
 
@@ -6450,7 +5890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6450
5890
  type: Output
6451
5891
  }] } });
6452
5892
 
6453
- const COMPONENTS$b = [
5893
+ const COMPONENTS$c = [
6454
5894
  PdmRadioGroupComponent,
6455
5895
  ];
6456
5896
  class PdmRadioGroupModule {
@@ -6462,8 +5902,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6462
5902
  type: NgModule,
6463
5903
  args: [{
6464
5904
  imports: [CommonModule],
6465
- declarations: COMPONENTS$b,
6466
- exports: COMPONENTS$b
5905
+ declarations: COMPONENTS$c,
5906
+ exports: COMPONENTS$c
6467
5907
  }]
6468
5908
  }] });
6469
5909
 
@@ -6484,7 +5924,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6484
5924
  type: Input
6485
5925
  }] } });
6486
5926
 
6487
- const COMPONENTS$a = [
5927
+ const COMPONENTS$b = [
6488
5928
  PdmScrollAreaComponent,
6489
5929
  ];
6490
5930
  class PdmScrollAreaModule {
@@ -6496,37 +5936,257 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
6496
5936
  type: NgModule,
6497
5937
  args: [{
6498
5938
  imports: [CommonModule],
6499
- declarations: COMPONENTS$a,
6500
- exports: COMPONENTS$a
5939
+ declarations: COMPONENTS$b,
5940
+ exports: COMPONENTS$b
6501
5941
  }]
6502
5942
  }] });
6503
5943
 
6504
- class PdmSeparatorComponent {
6505
- constructor() {
6506
- this.orientation = 'horizontal';
6507
- this.decorative = true;
6508
- this.className = '';
6509
- }
6510
- get orientationClass() {
6511
- return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';
6512
- }
6513
- }
6514
- PdmSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6515
- 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 });
6516
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, decorators: [{
6517
- type: Component,
6518
- 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" }]
6519
- }], propDecorators: { orientation: [{
6520
- type: Input
6521
- }], decorative: [{
6522
- type: Input
6523
- }], className: [{
6524
- type: Input
6525
- }] } });
6526
-
6527
- const COMPONENTS$9 = [
6528
- PdmSeparatorComponent,
6529
- ];
5944
+ /**
5945
+ * Directive used to declare an option inside `<pdm-select>` via content projection.
5946
+ *
5947
+ * Usage:
5948
+ * ```html
5949
+ * <pdm-select [(value)]="val">
5950
+ * <pdm-select-option value="a">Option A</pdm-select-option>
5951
+ * <pdm-select-option value="b" [disabled]="true">Option B</pdm-select-option>
5952
+ * <pdm-select-option value="c" label="Option C"></pdm-select-option>
5953
+ * </pdm-select>
5954
+ * ```
5955
+ *
5956
+ * When `label` is not provided, the text content of the projected node is used.
5957
+ */
5958
+ class PdmSelectOptionDirective {
5959
+ constructor(el) {
5960
+ this.el = el;
5961
+ /** The option value that will be emitted on selection. */
5962
+ this.value = '';
5963
+ /** When true, the option is rendered but cannot be selected. */
5964
+ this.disabled = false;
5965
+ /**
5966
+ * Explicit label for the option.
5967
+ * When omitted, the directive reads the element's `textContent` after content init.
5968
+ */
5969
+ this.label = '';
5970
+ }
5971
+ ngAfterContentInit() {
5972
+ var _a;
5973
+ // If no explicit label, harvest text from the projected node.
5974
+ if (!this.label) {
5975
+ this.label = ((_a = this.el.nativeElement.textContent) !== null && _a !== void 0 ? _a : '').trim();
5976
+ }
5977
+ }
5978
+ /** Resolved label string — always non-empty after ngAfterContentInit. */
5979
+ get resolvedLabel() {
5980
+ return this.label || this.value;
5981
+ }
5982
+ }
5983
+ PdmSelectOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5984
+ 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 });
5985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectOptionDirective, decorators: [{
5986
+ type: Directive,
5987
+ args: [{
5988
+ selector: 'pdm-select-option'
5989
+ }]
5990
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
5991
+ type: Input
5992
+ }], disabled: [{
5993
+ type: Input
5994
+ }], label: [{
5995
+ type: Input
5996
+ }] } });
5997
+
5998
+ class PdmSelectComponent {
5999
+ constructor(cdr, overlay, viewContainerRef) {
6000
+ this.cdr = cdr;
6001
+ this.overlay = overlay;
6002
+ this.viewContainerRef = viewContainerRef;
6003
+ this.id = "";
6004
+ this.value = "";
6005
+ this.options = [];
6006
+ this.disabled = false;
6007
+ this.invalid = false;
6008
+ this.className = "";
6009
+ this.placeholder = "Select an option";
6010
+ this.open = false;
6011
+ this.valueChange = new EventEmitter();
6012
+ this.overlayRef = null;
6013
+ this.backdropSub = null;
6014
+ }
6015
+ ngAfterContentInit() {
6016
+ // Re-render when projected options change (e.g. *ngFor on pdm-select-option).
6017
+ this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());
6018
+ }
6019
+ ngOnDestroy() {
6020
+ this.destroyOverlay();
6021
+ }
6022
+ /**
6023
+ * Returns the effective list of options.
6024
+ * Projected `<pdm-select-option>` children take priority over the `[options]` input.
6025
+ * Falls back to `[options]` when no children are projected.
6026
+ */
6027
+ get resolvedOptions() {
6028
+ if (this.projectedOptions && this.projectedOptions.length > 0) {
6029
+ return this.projectedOptions.map((d) => ({
6030
+ label: d.resolvedLabel,
6031
+ value: d.value,
6032
+ disabled: d.disabled,
6033
+ }));
6034
+ }
6035
+ return this.options;
6036
+ }
6037
+ get selectedOption() {
6038
+ return this.resolvedOptions.find((option) => option.value === this.value);
6039
+ }
6040
+ get selectedLabel() {
6041
+ var _a;
6042
+ return ((_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.label) || this.placeholder;
6043
+ }
6044
+ toggle() {
6045
+ if (this.disabled)
6046
+ return;
6047
+ if (this.open) {
6048
+ this.closePanel();
6049
+ }
6050
+ else {
6051
+ this.openPanel();
6052
+ }
6053
+ }
6054
+ onChange(event) {
6055
+ this.valueChange.emit(event.target.value);
6056
+ }
6057
+ selectOption(option) {
6058
+ if (option.disabled)
6059
+ return;
6060
+ this.valueChange.emit(option.value);
6061
+ this.closePanel();
6062
+ }
6063
+ onEscape() {
6064
+ if (this.open) {
6065
+ this.closePanel();
6066
+ }
6067
+ }
6068
+ openPanel() {
6069
+ var _a;
6070
+ if (this.overlayRef)
6071
+ return;
6072
+ const triggerEl = (_a = this.triggerRef) === null || _a === void 0 ? void 0 : _a.nativeElement;
6073
+ if (!triggerEl)
6074
+ return;
6075
+ this.open = true;
6076
+ this.cdr.markForCheck();
6077
+ const positionStrategy = createFlexiblePositionStrategy$1(this.overlay, triggerEl, 4);
6078
+ this.overlayRef = this.overlay.create(Object.assign({
6079
+ // CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])
6080
+ // panelClass se aplica al cdk-overlay-pane wrapper
6081
+ panelClass: [Z_INDEX$1.popover], positionStrategy, scrollStrategy: this.overlay.scrollStrategies.reposition(), width: triggerEl.offsetWidth }, this.overlayOptions));
6082
+ const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
6083
+ this.overlayRef.attach(portal);
6084
+ this.backdropSub = this.overlayRef
6085
+ .outsidePointerEvents()
6086
+ .subscribe((event) => {
6087
+ const target = event.target;
6088
+ if (!triggerEl.contains(target)) {
6089
+ this.closePanel();
6090
+ }
6091
+ });
6092
+ this.cdr.markForCheck();
6093
+ }
6094
+ closePanel() {
6095
+ if (!this.overlayRef)
6096
+ return;
6097
+ this.open = false;
6098
+ this.destroyOverlay();
6099
+ this.cdr.markForCheck();
6100
+ }
6101
+ destroyOverlay() {
6102
+ if (this.backdropSub) {
6103
+ this.backdropSub.unsubscribe();
6104
+ this.backdropSub = null;
6105
+ }
6106
+ if (this.overlayRef) {
6107
+ this.overlayRef.dispose();
6108
+ this.overlayRef = null;
6109
+ }
6110
+ }
6111
+ }
6112
+ 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 });
6113
+ 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 });
6114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, decorators: [{
6115
+ type: Component,
6116
+ 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"] }]
6117
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
6118
+ type: Input
6119
+ }], value: [{
6120
+ type: Input
6121
+ }], options: [{
6122
+ type: Input
6123
+ }], disabled: [{
6124
+ type: Input
6125
+ }], invalid: [{
6126
+ type: Input
6127
+ }], className: [{
6128
+ type: Input
6129
+ }], placeholder: [{
6130
+ type: Input
6131
+ }], overlayOptions: [{
6132
+ type: Input
6133
+ }], valueChange: [{
6134
+ type: Output
6135
+ }], triggerRef: [{
6136
+ type: ViewChild,
6137
+ args: ["triggerEl"]
6138
+ }], panelTemplateRef: [{
6139
+ type: ViewChild,
6140
+ args: ["panelTemplate"]
6141
+ }], projectedOptions: [{
6142
+ type: ContentChildren,
6143
+ args: [PdmSelectOptionDirective]
6144
+ }], onEscape: [{
6145
+ type: HostListener,
6146
+ args: ["document:keydown.escape"]
6147
+ }] } });
6148
+
6149
+ const COMPONENTS$a = [PdmSelectComponent, PdmSelectOptionDirective];
6150
+ class PdmSelectModule {
6151
+ }
6152
+ PdmSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6153
+ 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] });
6154
+ PdmSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, imports: [CommonModule, OverlayModule, PdmIconModule$1] });
6155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectModule, decorators: [{
6156
+ type: NgModule,
6157
+ args: [{
6158
+ imports: [CommonModule, OverlayModule, PdmIconModule$1],
6159
+ declarations: COMPONENTS$a,
6160
+ exports: COMPONENTS$a,
6161
+ }]
6162
+ }] });
6163
+
6164
+ class PdmSeparatorComponent {
6165
+ constructor() {
6166
+ this.orientation = 'horizontal';
6167
+ this.decorative = true;
6168
+ this.className = '';
6169
+ }
6170
+ get orientationClass() {
6171
+ return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';
6172
+ }
6173
+ }
6174
+ PdmSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6175
+ 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 });
6176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorComponent, decorators: [{
6177
+ type: Component,
6178
+ 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" }]
6179
+ }], propDecorators: { orientation: [{
6180
+ type: Input
6181
+ }], decorative: [{
6182
+ type: Input
6183
+ }], className: [{
6184
+ type: Input
6185
+ }] } });
6186
+
6187
+ const COMPONENTS$9 = [
6188
+ PdmSeparatorComponent,
6189
+ ];
6530
6190
  class PdmSeparatorModule {
6531
6191
  }
6532
6192
  PdmSeparatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSeparatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -6732,7 +6392,7 @@ class PdmSonnerComponent {
6732
6392
  }
6733
6393
  }
6734
6394
  PdmSonnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6735
- 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 });
6395
+ 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 });
6736
6396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerComponent, decorators: [{
6737
6397
  type: Component,
6738
6398
  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" }]
@@ -6752,12 +6412,12 @@ const COMPONENTS$5 = [PdmSonnerComponent];
6752
6412
  class PdmSonnerModule {
6753
6413
  }
6754
6414
  PdmSonnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6755
- PdmSonnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, declarations: [PdmSonnerComponent], imports: [CommonModule, PdmIconModule], exports: [PdmSonnerComponent] });
6756
- PdmSonnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, imports: [CommonModule, PdmIconModule] });
6415
+ PdmSonnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, declarations: [PdmSonnerComponent], imports: [CommonModule, PdmIconModule$1], exports: [PdmSonnerComponent] });
6416
+ PdmSonnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, imports: [CommonModule, PdmIconModule$1] });
6757
6417
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSonnerModule, decorators: [{
6758
6418
  type: NgModule,
6759
6419
  args: [{
6760
- imports: [CommonModule, PdmIconModule],
6420
+ imports: [CommonModule, PdmIconModule$1],
6761
6421
  declarations: COMPONENTS$5,
6762
6422
  exports: COMPONENTS$5,
6763
6423
  }]
@@ -7055,7 +6715,7 @@ class PdmTooltipComponent {
7055
6715
  .withPositions(this.getPositionConfigs())
7056
6716
  .withFlexibleDimensions(false)
7057
6717
  .withPush(true);
7058
- const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX);
6718
+ const panelClass = mergeOverlayPanelClass$1(OVERLAY_BASE_Z_INDEX$1);
7059
6719
  this.overlayRef = this.overlay.create({
7060
6720
  positionStrategy,
7061
6721
  panelClass,
@@ -7498,6 +7158,356 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
7498
7158
  }]
7499
7159
  }] });
7500
7160
 
7161
+ /**
7162
+ * Creates a flexible position strategy that automatically adjusts
7163
+ * to keep the overlay within the viewport edges.
7164
+ *
7165
+ * The strategy tries positions in this order:
7166
+ * 1. Bottom-left (origin bottom edge, aligns to left)
7167
+ * 2. Top-left (origin top edge, aligns to left)
7168
+ * 3. Bottom-right (origin bottom edge, aligns to right)
7169
+ * 4. Top-right (origin top edge, aligns to right)
7170
+ *
7171
+ * CDK Overlay will use the first position that fits within the viewport.
7172
+ */
7173
+ function createFlexiblePositionStrategy(overlay, triggerElement, offset = 4) {
7174
+ return overlay
7175
+ .position()
7176
+ .flexibleConnectedTo(triggerElement)
7177
+ .withPositions([
7178
+ // Bottom-left (default) - opens downward from left edge
7179
+ {
7180
+ originX: 'start',
7181
+ originY: 'bottom',
7182
+ overlayX: 'start',
7183
+ overlayY: 'top',
7184
+ offsetY: offset
7185
+ },
7186
+ // Top-left - opens upward from left edge
7187
+ {
7188
+ originX: 'start',
7189
+ originY: 'top',
7190
+ overlayX: 'start',
7191
+ overlayY: 'bottom',
7192
+ offsetY: -offset
7193
+ },
7194
+ // Bottom-right - opens downward from right edge
7195
+ {
7196
+ originX: 'end',
7197
+ originY: 'bottom',
7198
+ overlayX: 'end',
7199
+ overlayY: 'top',
7200
+ offsetY: offset
7201
+ },
7202
+ // Top-right - opens upward from right edge
7203
+ {
7204
+ originX: 'end',
7205
+ originY: 'top',
7206
+ overlayX: 'end',
7207
+ overlayY: 'bottom',
7208
+ offsetY: -offset
7209
+ }
7210
+ ])
7211
+ .withFlexibleDimensions(false)
7212
+ .withPush(true);
7213
+ }
7214
+
7215
+ /**
7216
+ * Z-Index helper for overlay components.
7217
+ *
7218
+ * CRITICAL: Consumer custom panelClass MUST NOT replace the base z-index.
7219
+ * This helper ensures z-index is preserved when merging custom classes.
7220
+ */
7221
+ /**
7222
+ * Base z-index class for overlays - MUST be included in any overlay panel.
7223
+ * This ensures overlays appear above modals (z-50) and drawers (z-40).
7224
+ */
7225
+ const OVERLAY_BASE_Z_INDEX = "z-[70]";
7226
+ /**
7227
+ * Merge consumer's panelClass with our base z-index.
7228
+ * Consumer classes are APPENDED, not replacing our z-index guarantee.
7229
+ *
7230
+ * @param baseZIndex - Base z-index class to enforce (default: OVERLAY_BASE_Z_INDEX)
7231
+ * @param consumerClasses - Optional additional classes from consumer
7232
+ * @returns Array of classes safe for CDK Overlay panelClass
7233
+ */
7234
+ function mergeOverlayPanelClass(baseZIndex = OVERLAY_BASE_Z_INDEX, consumerClasses) {
7235
+ const baseClasses = baseZIndex.split(" ");
7236
+ if (!consumerClasses) {
7237
+ return baseClasses;
7238
+ }
7239
+ const consumerClassArray = Array.isArray(consumerClasses)
7240
+ ? consumerClasses
7241
+ : consumerClasses.split(" ");
7242
+ // Consumer classes are appended AFTER base classes
7243
+ // This ensures z-index from baseClasses is preserved first
7244
+ return [...baseClasses, ...consumerClassArray];
7245
+ }
7246
+ /**
7247
+ * Create OverlayConfig with guaranteed z-index.
7248
+ * Use this instead of direct OverlayConfig to ensure z-index enforcement.
7249
+ *
7250
+ * @param baseConfig - Base overlay configuration
7251
+ * @param consumerPanelClass - Optional consumer panelClass to merge
7252
+ * @returns OverlayConfig with z-index guarantee
7253
+ */
7254
+ function createZIndexEnforcedOverlay(baseConfig, consumerPanelClass) {
7255
+ const mergedClasses = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, consumerPanelClass);
7256
+ const existingPanelClass = baseConfig.panelClass;
7257
+ if (existingPanelClass) {
7258
+ const existingArray = Array.isArray(existingPanelClass)
7259
+ ? existingPanelClass
7260
+ : existingPanelClass.split(" ");
7261
+ return Object.assign(Object.assign({}, baseConfig), { panelClass: [...mergedClasses, ...existingArray] });
7262
+ }
7263
+ return Object.assign(Object.assign({}, baseConfig), { panelClass: mergedClasses });
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
  */