@mesgflow/ui-kit 0.6.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 (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +200 -0
  3. package/fesm2022/mesgflow-ui-kit-accordion.mjs +75 -0
  4. package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -0
  5. package/fesm2022/mesgflow-ui-kit-alert.mjs +165 -0
  6. package/fesm2022/mesgflow-ui-kit-alert.mjs.map +1 -0
  7. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +88 -0
  8. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs.map +1 -0
  9. package/fesm2022/mesgflow-ui-kit-avatar.mjs +123 -0
  10. package/fesm2022/mesgflow-ui-kit-avatar.mjs.map +1 -0
  11. package/fesm2022/mesgflow-ui-kit-badge.mjs +68 -0
  12. package/fesm2022/mesgflow-ui-kit-badge.mjs.map +1 -0
  13. package/fesm2022/mesgflow-ui-kit-banner.mjs +111 -0
  14. package/fesm2022/mesgflow-ui-kit-banner.mjs.map +1 -0
  15. package/fesm2022/mesgflow-ui-kit-box-input.mjs +78 -0
  16. package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -0
  17. package/fesm2022/mesgflow-ui-kit-brand.mjs +120 -0
  18. package/fesm2022/mesgflow-ui-kit-brand.mjs.map +1 -0
  19. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +84 -0
  20. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs.map +1 -0
  21. package/fesm2022/mesgflow-ui-kit-button-group.mjs +37 -0
  22. package/fesm2022/mesgflow-ui-kit-button-group.mjs.map +1 -0
  23. package/fesm2022/mesgflow-ui-kit-button.mjs +359 -0
  24. package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -0
  25. package/fesm2022/mesgflow-ui-kit-card.mjs +128 -0
  26. package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -0
  27. package/fesm2022/mesgflow-ui-kit-chart.mjs +538 -0
  28. package/fesm2022/mesgflow-ui-kit-chart.mjs.map +1 -0
  29. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +45 -0
  30. package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -0
  31. package/fesm2022/mesgflow-ui-kit-chip.mjs +123 -0
  32. package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -0
  33. package/fesm2022/mesgflow-ui-kit-code-block.mjs +71 -0
  34. package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -0
  35. package/fesm2022/mesgflow-ui-kit-collapsible.mjs +89 -0
  36. package/fesm2022/mesgflow-ui-kit-collapsible.mjs.map +1 -0
  37. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +210 -0
  38. package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -0
  39. package/fesm2022/mesgflow-ui-kit-combobox.mjs +181 -0
  40. package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -0
  41. package/fesm2022/mesgflow-ui-kit-command.mjs +491 -0
  42. package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -0
  43. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +92 -0
  44. package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -0
  45. package/fesm2022/mesgflow-ui-kit-copy-button.mjs +167 -0
  46. package/fesm2022/mesgflow-ui-kit-copy-button.mjs.map +1 -0
  47. package/fesm2022/mesgflow-ui-kit-core.mjs +624 -0
  48. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -0
  49. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +643 -0
  50. package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -0
  51. package/fesm2022/mesgflow-ui-kit-description-list.mjs +76 -0
  52. package/fesm2022/mesgflow-ui-kit-description-list.mjs.map +1 -0
  53. package/fesm2022/mesgflow-ui-kit-dialog.mjs +700 -0
  54. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -0
  55. package/fesm2022/mesgflow-ui-kit-divider.mjs +62 -0
  56. package/fesm2022/mesgflow-ui-kit-divider.mjs.map +1 -0
  57. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +126 -0
  58. package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -0
  59. package/fesm2022/mesgflow-ui-kit-empty-state.mjs +70 -0
  60. package/fesm2022/mesgflow-ui-kit-empty-state.mjs.map +1 -0
  61. package/fesm2022/mesgflow-ui-kit-field.mjs +42 -0
  62. package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -0
  63. package/fesm2022/mesgflow-ui-kit-hover-card.mjs +171 -0
  64. package/fesm2022/mesgflow-ui-kit-hover-card.mjs.map +1 -0
  65. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +258 -0
  66. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -0
  67. package/fesm2022/mesgflow-ui-kit-icon.mjs +174 -0
  68. package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -0
  69. package/fesm2022/mesgflow-ui-kit-input.mjs +448 -0
  70. package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -0
  71. package/fesm2022/mesgflow-ui-kit-kbd.mjs +24 -0
  72. package/fesm2022/mesgflow-ui-kit-kbd.mjs.map +1 -0
  73. package/fesm2022/mesgflow-ui-kit-link.mjs +48 -0
  74. package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -0
  75. package/fesm2022/mesgflow-ui-kit-menu.mjs +105 -0
  76. package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -0
  77. package/fesm2022/mesgflow-ui-kit-number-input.mjs +153 -0
  78. package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -0
  79. package/fesm2022/mesgflow-ui-kit-otp-input.mjs +164 -0
  80. package/fesm2022/mesgflow-ui-kit-otp-input.mjs.map +1 -0
  81. package/fesm2022/mesgflow-ui-kit-page-header.mjs +83 -0
  82. package/fesm2022/mesgflow-ui-kit-page-header.mjs.map +1 -0
  83. package/fesm2022/mesgflow-ui-kit-pagination.mjs +99 -0
  84. package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -0
  85. package/fesm2022/mesgflow-ui-kit-password-input.mjs +120 -0
  86. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -0
  87. package/fesm2022/mesgflow-ui-kit-popover.mjs +213 -0
  88. package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -0
  89. package/fesm2022/mesgflow-ui-kit-progress.mjs +82 -0
  90. package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -0
  91. package/fesm2022/mesgflow-ui-kit-radio.mjs +123 -0
  92. package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -0
  93. package/fesm2022/mesgflow-ui-kit-rating.mjs +116 -0
  94. package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -0
  95. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +84 -0
  96. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs.map +1 -0
  97. package/fesm2022/mesgflow-ui-kit-search-input.mjs +154 -0
  98. package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -0
  99. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +95 -0
  100. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -0
  101. package/fesm2022/mesgflow-ui-kit-select.mjs +227 -0
  102. package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -0
  103. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +449 -0
  104. package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -0
  105. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +74 -0
  106. package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -0
  107. package/fesm2022/mesgflow-ui-kit-slider.mjs +179 -0
  108. package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -0
  109. package/fesm2022/mesgflow-ui-kit-spinner.mjs +67 -0
  110. package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -0
  111. package/fesm2022/mesgflow-ui-kit-splitter.mjs +97 -0
  112. package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -0
  113. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +98 -0
  114. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -0
  115. package/fesm2022/mesgflow-ui-kit-stepper.mjs +133 -0
  116. package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -0
  117. package/fesm2022/mesgflow-ui-kit-switch.mjs +73 -0
  118. package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -0
  119. package/fesm2022/mesgflow-ui-kit-table.mjs +1783 -0
  120. package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -0
  121. package/fesm2022/mesgflow-ui-kit-tabs.mjs +569 -0
  122. package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -0
  123. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +138 -0
  124. package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -0
  125. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +53 -0
  126. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs.map +1 -0
  127. package/fesm2022/mesgflow-ui-kit-theming.mjs +1016 -0
  128. package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -0
  129. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +138 -0
  130. package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -0
  131. package/fesm2022/mesgflow-ui-kit-timeline.mjs +91 -0
  132. package/fesm2022/mesgflow-ui-kit-timeline.mjs.map +1 -0
  133. package/fesm2022/mesgflow-ui-kit-toast.mjs +202 -0
  134. package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -0
  135. package/fesm2022/mesgflow-ui-kit-toggle.mjs +243 -0
  136. package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -0
  137. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +99 -0
  138. package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -0
  139. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +160 -0
  140. package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -0
  141. package/fesm2022/mesgflow-ui-kit-tour.mjs +272 -0
  142. package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -0
  143. package/fesm2022/mesgflow-ui-kit-tree-select.mjs +177 -0
  144. package/fesm2022/mesgflow-ui-kit-tree-select.mjs.map +1 -0
  145. package/fesm2022/mesgflow-ui-kit-tree.mjs +82 -0
  146. package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -0
  147. package/fesm2022/mesgflow-ui-kit.mjs +12851 -0
  148. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -0
  149. package/package.json +374 -0
  150. package/preset.css +20 -0
  151. package/tokens/color.css +693 -0
  152. package/tokens/contrast.css +68 -0
  153. package/tokens/elevation.css +68 -0
  154. package/tokens/motion.css +277 -0
  155. package/tokens/radius.css +69 -0
  156. package/tokens/typography.css +127 -0
  157. package/tokens.css +41 -0
  158. package/types/mesgflow-ui-kit-accordion.d.ts +42 -0
  159. package/types/mesgflow-ui-kit-alert.d.ts +60 -0
  160. package/types/mesgflow-ui-kit-avatar-group.d.ts +28 -0
  161. package/types/mesgflow-ui-kit-avatar.d.ts +23 -0
  162. package/types/mesgflow-ui-kit-badge.d.ts +39 -0
  163. package/types/mesgflow-ui-kit-banner.d.ts +42 -0
  164. package/types/mesgflow-ui-kit-box-input.d.ts +45 -0
  165. package/types/mesgflow-ui-kit-brand.d.ts +48 -0
  166. package/types/mesgflow-ui-kit-breadcrumb.d.ts +26 -0
  167. package/types/mesgflow-ui-kit-button-group.d.ts +17 -0
  168. package/types/mesgflow-ui-kit-button.d.ts +75 -0
  169. package/types/mesgflow-ui-kit-card.d.ts +71 -0
  170. package/types/mesgflow-ui-kit-chart.d.ts +242 -0
  171. package/types/mesgflow-ui-kit-checkbox.d.ts +17 -0
  172. package/types/mesgflow-ui-kit-chip.d.ts +46 -0
  173. package/types/mesgflow-ui-kit-code-block.d.ts +56 -0
  174. package/types/mesgflow-ui-kit-collapsible.d.ts +39 -0
  175. package/types/mesgflow-ui-kit-color-picker.d.ts +78 -0
  176. package/types/mesgflow-ui-kit-combobox.d.ts +74 -0
  177. package/types/mesgflow-ui-kit-command.d.ts +185 -0
  178. package/types/mesgflow-ui-kit-context-menu.d.ts +40 -0
  179. package/types/mesgflow-ui-kit-copy-button.d.ts +47 -0
  180. package/types/mesgflow-ui-kit-core.d.ts +508 -0
  181. package/types/mesgflow-ui-kit-date-picker.d.ts +215 -0
  182. package/types/mesgflow-ui-kit-description-list.d.ts +23 -0
  183. package/types/mesgflow-ui-kit-dialog.d.ts +342 -0
  184. package/types/mesgflow-ui-kit-divider.d.ts +23 -0
  185. package/types/mesgflow-ui-kit-dropzone.d.ts +47 -0
  186. package/types/mesgflow-ui-kit-empty-state.d.ts +18 -0
  187. package/types/mesgflow-ui-kit-field.d.ts +26 -0
  188. package/types/mesgflow-ui-kit-hover-card.d.ts +52 -0
  189. package/types/mesgflow-ui-kit-i18n-tr.d.ts +14 -0
  190. package/types/mesgflow-ui-kit-icon.d.ts +76 -0
  191. package/types/mesgflow-ui-kit-input.d.ts +186 -0
  192. package/types/mesgflow-ui-kit-kbd.d.ts +9 -0
  193. package/types/mesgflow-ui-kit-link.d.ts +20 -0
  194. package/types/mesgflow-ui-kit-menu.d.ts +53 -0
  195. package/types/mesgflow-ui-kit-number-input.d.ts +55 -0
  196. package/types/mesgflow-ui-kit-otp-input.d.ts +44 -0
  197. package/types/mesgflow-ui-kit-page-header.d.ts +31 -0
  198. package/types/mesgflow-ui-kit-pagination.d.ts +50 -0
  199. package/types/mesgflow-ui-kit-password-input.d.ts +33 -0
  200. package/types/mesgflow-ui-kit-popover.d.ts +62 -0
  201. package/types/mesgflow-ui-kit-progress.d.ts +32 -0
  202. package/types/mesgflow-ui-kit-radio.d.ts +59 -0
  203. package/types/mesgflow-ui-kit-rating.d.ts +56 -0
  204. package/types/mesgflow-ui-kit-scroll-area.d.ts +27 -0
  205. package/types/mesgflow-ui-kit-search-input.d.ts +72 -0
  206. package/types/mesgflow-ui-kit-segmented-control.d.ts +54 -0
  207. package/types/mesgflow-ui-kit-select.d.ts +89 -0
  208. package/types/mesgflow-ui-kit-sidebar.d.ts +224 -0
  209. package/types/mesgflow-ui-kit-skeleton.d.ts +29 -0
  210. package/types/mesgflow-ui-kit-slider.d.ts +40 -0
  211. package/types/mesgflow-ui-kit-spinner.d.ts +31 -0
  212. package/types/mesgflow-ui-kit-splitter.d.ts +40 -0
  213. package/types/mesgflow-ui-kit-stat-tile.d.ts +54 -0
  214. package/types/mesgflow-ui-kit-stepper.d.ts +48 -0
  215. package/types/mesgflow-ui-kit-switch.d.ts +34 -0
  216. package/types/mesgflow-ui-kit-table.d.ts +805 -0
  217. package/types/mesgflow-ui-kit-tabs.d.ts +269 -0
  218. package/types/mesgflow-ui-kit-tag-input.d.ts +33 -0
  219. package/types/mesgflow-ui-kit-theme-switcher.d.ts +27 -0
  220. package/types/mesgflow-ui-kit-theming.d.ts +745 -0
  221. package/types/mesgflow-ui-kit-time-picker.d.ts +54 -0
  222. package/types/mesgflow-ui-kit-timeline.d.ts +27 -0
  223. package/types/mesgflow-ui-kit-toast.d.ts +94 -0
  224. package/types/mesgflow-ui-kit-toggle.d.ts +110 -0
  225. package/types/mesgflow-ui-kit-toolbar.d.ts +52 -0
  226. package/types/mesgflow-ui-kit-tooltip.d.ts +55 -0
  227. package/types/mesgflow-ui-kit-tour.d.ts +66 -0
  228. package/types/mesgflow-ui-kit-tree-select.d.ts +65 -0
  229. package/types/mesgflow-ui-kit-tree.d.ts +44 -0
  230. package/types/mesgflow-ui-kit.d.ts +5444 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesgflow-ui-kit-date-picker.mjs","sources":["../../../projects/ui-kit/date-picker/date-picker.model.ts","../../../projects/ui-kit/date-picker/calendar.ts","../../../projects/ui-kit/date-picker/calendar.html","../../../projects/ui-kit/date-picker/date-picker.ts","../../../projects/ui-kit/date-picker/date-picker.html","../../../projects/ui-kit/date-picker/date-range-picker.ts","../../../projects/ui-kit/date-picker/date-range-picker.html","../../../projects/ui-kit/date-picker/mesgflow-ui-kit-date-picker.ts"],"sourcesContent":["import {\r\n addMonths,\r\n addYears,\r\n eachDayOfInterval,\r\n endOfMonth,\r\n endOfWeek,\r\n format,\r\n isSameDay as isSameDayFns,\r\n isSameMonth,\r\n isValid,\r\n isWithinInterval,\r\n parse,\r\n startOfDay,\r\n startOfMonth,\r\n startOfWeek,\r\n subDays,\r\n subMonths,\r\n subYears,\r\n type Locale,\r\n} from 'date-fns';\r\n\r\nexport interface DateRange {\r\n start: Date | null;\r\n end: Date | null;\r\n}\r\n\r\nexport type DateRangePresetId = 'today' | 'last7' | 'last30' | 'thisMonth';\r\n\r\n/**\r\n * Hazır tarih aralıkları — kurumsal panellerde tarih filtresinin %90'ı bunlar\r\n * (bkz. eski `table-filter.model.ts` `dateRangeFor`, ISO metin üreten\r\n * kardeşi — burada `Date` nesneleri üretiyor, ISO'ya çevirme çağıranın işi,\r\n * bkz. `date-picker.model.ts` kullanan `table-filter.model.ts`'teki\r\n * `dateToIso`). `date-picker`'ın kendi paketi TEK KAYNAK — Table bunu import\r\n * eder, tersi değil.\r\n */\r\nexport function dateRangeForPreset(preset: DateRangePresetId): DateRange {\r\n const today = startOfDay(new Date());\r\n if (preset === 'today') return { start: today, end: today };\r\n if (preset === 'thisMonth') return { start: startOfMonth(today), end: today };\r\n const days = preset === 'last7' ? 6 : 29;\r\n return { start: subDays(today, days), end: today };\r\n}\r\n\r\n/**\r\n * Bir ay ızgarası — 6 satır × 7 sütun, komşu ay günleri dahil (haftanın ilk\r\n * günü `locale`'e göre — tr Pazartesi, en-US Pazar; `date-fns/locale`'in\r\n * `weekStartsOn`'undan otomatik gelir, elle YAZILMAZ).\r\n */\r\nexport function buildMonthMatrix(month: Date, locale: Locale): Date[][] {\r\n const gridStart = startOfWeek(startOfMonth(month), { locale });\r\n const gridEnd = endOfWeek(endOfMonth(month), { locale });\r\n const days = eachDayOfInterval({ start: gridStart, end: gridEnd });\r\n\r\n const weeks: Date[][] = [];\r\n for (let i = 0; i < days.length; i += 7) weeks.push(days.slice(i, i + 7));\r\n return weeks;\r\n}\r\n\r\nexport function isCurrentMonth(day: Date, month: Date): boolean {\r\n return isSameMonth(day, month);\r\n}\r\n\r\nexport function isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return isSameDayFns(a, b);\r\n}\r\n\r\nexport function isWithinRange(day: Date, start: Date | null, end: Date | null): boolean {\r\n if (!start || !end) return false;\r\n return isWithinInterval(day, { start, end });\r\n}\r\n\r\nexport function isDayDisabled(day: Date, min: Date | null, max: Date | null): boolean {\r\n const time = startOfDay(day).getTime();\r\n if (min && time < startOfDay(min).getTime()) return true;\r\n if (max && time > startOfDay(max).getTime()) return true;\r\n return false;\r\n}\r\n\r\nexport function shiftMonth(month: Date, delta: number): Date {\r\n return delta >= 0 ? addMonths(month, delta) : subMonths(month, -delta);\r\n}\r\n\r\nexport function shiftYear(month: Date, delta: number): Date {\r\n return delta >= 0 ? addYears(month, delta) : subYears(month, -delta);\r\n}\r\n\r\n/** `date-fns`'in `formatLong.date({width:'short'})`'u — `'P'` token'ının ARKASINDAKİ gerçek örüntü (tr: `dd.MM.yyyy`, en-US: `MM/dd/yyyy`). `parse()` `'P'`'yi DOĞRUDAN kabul etmiyor (yalnızca `format()` yerelleştirilmiş token'ları çözer) — yazarak girişi geri okumak için bu örüntü gerekiyor. */\r\nfunction shortDatePattern(locale: Locale): string {\r\n return locale.formatLong?.date({ width: 'short' }) ?? 'P';\r\n}\r\n\r\nexport function formatDateInput(date: Date, locale: Locale): string {\r\n return format(date, shortDatePattern(locale), { locale });\r\n}\r\n\r\n/** Kullanıcının yazdığı metni çözer; geçersizse `null` (çağıran son geçerli değere geri döner). Sonuç HER ZAMAN gün sınırına (`startOfDay`) normalize edilir. */\r\nexport function parseDateInput(text: string, locale: Locale): Date | null {\r\n const trimmed = text.trim();\r\n if (!trimmed) return null;\r\n const parsed = parse(trimmed, shortDatePattern(locale), new Date(), { locale });\r\n return isValid(parsed) ? startOfDay(parsed) : null;\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n afterRenderEffect,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { addDays, endOfWeek, format, startOfMonth, startOfWeek } from 'date-fns';\r\nimport type { Locale } from 'date-fns';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport { Icon } from '@mesgflow/ui-kit/icon';\r\nimport {\r\n cn,\r\n MF_DATE_LOCALE,\r\n MF_DATE_PICKER_LABELS,\r\n type MfDatePickerLabels,\r\n} from '@mesgflow/ui-kit/core';\r\nimport {\r\n buildMonthMatrix,\r\n isCurrentMonth,\r\n isDayDisabled,\r\n isSameDay,\r\n isWithinRange,\r\n shiftMonth,\r\n shiftYear,\r\n} from './date-picker.model';\r\n\r\n/**\r\n * `<mf-calendar [(month)]=\"visibleMonth\" [selected]=\"value()\" (dayPick)=\"onPick($event)\" />`\r\n *\r\n * Takvim ızgarasının gövdesi — hem `DatePicker`/`DateRangePicker`'ın overlay\r\n * paneli İÇİNDE hem inline (overlay'siz) kullanılabilir. `@angular/aria/grid`\r\n * KULLANILMADI (bkz. plan): sağ ok ayın son gününden sonraki ayın ilk gününe\r\n * ATLAMALI, `PageUp`/`PageDown` ±1 ay/±1 yıl yapmalı — grid pattern'i\r\n * render edilmiş satır/sütun sınırlarıyla kapalı, bu ikisini karşılamıyor.\r\n * Roving tabindex elle kuruldu (emsal: `table-pagination.ts`'in\r\n * `afterRenderEffect` + `viewChild(ElementRef)` deseni).\r\n *\r\n * Üç görünüm (`view`) — gün ızgarası, ay ızgarası, yıl ızgarası — klasik\r\n * drill-up/down: başlıktaki \"Eylül 2026\" ay/yıl görünümüne, oradaki yıl\r\n * yıl ızgarasına götürür; seçim tersine iner.\r\n */\r\n@Component({\r\n selector: 'mf-calendar',\r\n imports: [Button, Icon],\r\n host: { class: 'block' },\r\n templateUrl: './calendar.html',\r\n})\r\nexport class Calendar {\r\n readonly month = model<Date>(startOfMonth(new Date()));\r\n readonly mode = input<'single' | 'range'>('single');\r\n readonly selected = input<Date | null>(null);\r\n readonly rangeStart = input<Date | null>(null);\r\n readonly rangeEnd = input<Date | null>(null);\r\n /** Fare aralığın ikinci ucunun üzerinde gezinirken önizleme — `rangeEnd()` doluysa yok sayılır. */\r\n readonly hoverEnd = input<Date | null>(null);\r\n readonly min = input<Date | null>(null);\r\n readonly max = input<Date | null>(null);\r\n readonly locale = input<Locale>();\r\n readonly labels = input<MfDatePickerLabels>();\r\n /**\r\n * `false` → başlık ok/ay-yıl drill-down kontrolleri GİZLENİR, sadece ay/yıl\r\n * ETİKETİ (statik metin) kalır. `DateRangePicker`'ın İKİNCİ (takipçi)\r\n * takvimi için — \"ikinci ay = birincinin bir fazlası\" değişmezini korumak\r\n * amacıyla o takvim kendi başına gezilemez (bkz. date-range-picker.ts).\r\n * Gün ızgarası yine TAM etkileşimli kalır — sadece ay/yıl DEĞİŞTİRME devre\r\n * dışı.\r\n */\r\n readonly navigable = input(true);\r\n\r\n readonly dayPick = output<Date>();\r\n readonly dayHover = output<Date | null>();\r\n\r\n private readonly dateLocaleToken = inject(MF_DATE_LOCALE);\r\n private readonly datePickerLabels = inject(MF_DATE_PICKER_LABELS);\r\n protected readonly effectiveLocale = computed(() => this.locale() ?? this.dateLocaleToken());\r\n protected readonly effectiveLabels = computed(() => this.labels() ?? this.datePickerLabels());\r\n\r\n protected readonly view = signal<'day' | 'month' | 'year'>('day');\r\n protected readonly focusedDay = signal(new Date());\r\n protected readonly yearPageStart = signal(Math.floor(new Date().getFullYear() / 12) * 12);\r\n\r\n protected readonly weeks = computed(() => buildMonthMatrix(this.month(), this.effectiveLocale()));\r\n protected readonly monthGrid = computed(() => {\r\n const year = this.month().getFullYear();\r\n return Array.from({ length: 12 }, (_, i) => new Date(year, i, 1));\r\n });\r\n protected readonly yearGrid = computed(() =>\r\n Array.from({ length: 12 }, (_, i) => this.yearPageStart() + i),\r\n );\r\n protected readonly weekdayLabels = computed(() => {\r\n const locale = this.effectiveLocale();\r\n const start = startOfWeek(new Date(), { locale });\r\n return Array.from({ length: 7 }, (_, i) => format(addDays(start, i), 'EEEEEE', { locale }));\r\n });\r\n protected readonly monthYearLabel = computed(() =>\r\n format(this.month(), 'LLLL yyyy', { locale: this.effectiveLocale() }),\r\n );\r\n\r\n private readonly gridEl = viewChild<ElementRef<HTMLElement>>('grid');\r\n private focusPending = false;\r\n\r\n protected readonly shiftMonth = shiftMonth;\r\n protected readonly shiftYear = shiftYear;\r\n\r\n constructor() {\r\n // `month()` dışarıdan (ok butonu, klavye, ya da tüketicinin kendi\r\n // `[(month)]` bağlaması) değiştiğinde odaklı gün YENİ ayın dışında\r\n // kalmışsa içeri çekilir — `selected()` yeni ayın içindeyse ona, değilse\r\n // ayın 1'ine.\r\n effect(() => {\r\n const month = this.month();\r\n untracked(() => {\r\n if (!isCurrentMonth(this.focusedDay(), month)) {\r\n const preferred = this.selected() ?? new Date();\r\n this.focusedDay.set(isCurrentMonth(preferred, month) ? preferred : startOfMonth(month));\r\n }\r\n });\r\n });\r\n\r\n afterRenderEffect(() => {\r\n this.focusedDay();\r\n if (!this.focusPending) return;\r\n this.focusPending = false;\r\n const key = this.dayKey(this.focusedDay());\r\n this.gridEl()?.nativeElement.querySelector<HTMLElement>(`[data-day-key=\"${key}\"]`)?.focus();\r\n });\r\n }\r\n\r\n protected dayKey(day: Date): string {\r\n return format(day, 'yyyy-MM-dd');\r\n }\r\n\r\n protected tabIndexFor(day: Date): number {\r\n return isSameDay(day, this.focusedDay()) ? 0 : -1;\r\n }\r\n\r\n protected isDisabled(day: Date): boolean {\r\n return isDayDisabled(day, this.min(), this.max());\r\n }\r\n\r\n protected isSameDaySafe(day: Date): boolean {\r\n if (this.mode() === 'single') return isSameDay(day, this.selected());\r\n return isSameDay(day, this.rangeStart()) || isSameDay(day, this.rangeEnd());\r\n }\r\n\r\n protected dayClasses(day: Date): string {\r\n const outside = !isCurrentMonth(day, this.month());\r\n const today = isSameDay(day, new Date());\r\n const isRangeMode = this.mode() === 'range';\r\n const effectiveEnd = this.rangeEnd() ?? this.hoverEnd();\r\n\r\n const isStart = isRangeMode && isSameDay(day, this.rangeStart());\r\n const isEnd =\r\n isRangeMode &&\r\n (isSameDay(day, this.rangeEnd()) || (!this.rangeEnd() && isSameDay(day, this.hoverEnd())));\r\n const isEdge = isStart || isEnd;\r\n const inRange = isRangeMode && isWithinRange(day, this.rangeStart(), effectiveEnd);\r\n const isSelectedSingle = !isRangeMode && isSameDay(day, this.selected());\r\n\r\n return cn(\r\n 'relative flex h-9 w-9 shrink-0 appearance-none items-center justify-center rounded-sm border-0 bg-transparent text-sm tabular-nums text-fg transition-colors duration-fast ease-emphasis ' +\r\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ' +\r\n 'disabled:pointer-events-none disabled:opacity-40',\r\n outside && 'text-fg-subtle',\r\n !isSelectedSingle && !isEdge && 'hover:bg-surface-alt',\r\n inRange && 'rounded-none bg-primary-tint',\r\n inRange && isStart && 'rounded-s-sm',\r\n inRange && isEnd && 'rounded-e-sm',\r\n (isSelectedSingle || isEdge) &&\r\n 'rounded-sm bg-primary-tint font-semibold text-primary-tint-fg',\r\n today &&\r\n !isSelectedSingle &&\r\n !isEdge &&\r\n \"after:absolute after:bottom-1 after:h-1 after:w-1 after:rounded-full after:bg-accent after:content-['']\",\r\n );\r\n }\r\n\r\n protected cellClasses(active: boolean): string {\r\n return cn(\r\n 'rounded-sm px-2 py-2.5 text-sm text-fg capitalize transition-colors duration-fast ease-emphasis',\r\n active ? 'bg-primary-tint font-semibold text-primary-tint-fg' : 'hover:bg-surface-alt',\r\n );\r\n }\r\n\r\n protected monthLabel(m: Date): string {\r\n return format(m, 'LLL', { locale: this.effectiveLocale() });\r\n }\r\n\r\n protected openMonthView(): void {\r\n this.view.set('month');\r\n }\r\n\r\n protected openYearView(): void {\r\n this.yearPageStart.set(Math.floor(this.month().getFullYear() / 12) * 12);\r\n this.view.set('year');\r\n }\r\n\r\n protected shiftYearPage(delta: number): void {\r\n this.yearPageStart.update((y) => y + delta * 12);\r\n }\r\n\r\n protected pickMonth(m: Date): void {\r\n this.month.set(new Date(this.month().getFullYear(), m.getMonth(), 1));\r\n this.view.set('day');\r\n }\r\n\r\n protected pickYear(y: number): void {\r\n this.month.set(new Date(y, this.month().getMonth(), 1));\r\n this.view.set('month');\r\n }\r\n\r\n protected pick(day: Date): void {\r\n if (this.isDisabled(day)) return;\r\n this.focusedDay.set(day);\r\n this.dayPick.emit(day);\r\n }\r\n\r\n protected onDayMouseEnter(day: Date): void {\r\n if (this.mode() === 'range') this.dayHover.emit(day);\r\n }\r\n\r\n protected onGridKeydown(event: KeyboardEvent): void {\r\n const current = this.focusedDay();\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.moveFocus(addDays(current, -1));\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.moveFocus(addDays(current, 1));\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.moveFocus(addDays(current, -7));\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.moveFocus(addDays(current, 7));\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this.moveFocus(startOfWeek(current, { locale: this.effectiveLocale() }));\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this.moveFocus(endOfWeek(current, { locale: this.effectiveLocale() }));\r\n break;\r\n case 'PageUp':\r\n event.preventDefault();\r\n this.moveFocus(event.shiftKey ? shiftYear(current, -1) : shiftMonth(current, -1));\r\n break;\r\n case 'PageDown':\r\n event.preventDefault();\r\n this.moveFocus(event.shiftKey ? shiftYear(current, 1) : shiftMonth(current, 1));\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n this.pick(current);\r\n break;\r\n }\r\n }\r\n\r\n private moveFocus(day: Date): void {\r\n this.focusPending = true;\r\n this.focusedDay.set(day);\r\n if (!isCurrentMonth(day, this.month())) this.month.set(startOfMonth(day));\r\n }\r\n}\r\n","<div class=\"flex w-64 flex-col gap-2\">\r\n @switch (view()) {\r\n @case ('day') {\r\n <div class=\"flex items-center justify-between\">\r\n @if (navigable()) {\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().previousMonth\"\r\n (click)=\"month.set(shiftMonth(month(), -1))\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_left</span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex appearance-none items-center gap-0.5 border-0 bg-transparent px-1 font-display text-title-sm text-fg capitalize transition-colors duration-fast ease-emphasis hover:text-accent\"\r\n [attr.aria-label]=\"effectiveLabels().chooseMonth\"\r\n (click)=\"openMonthView()\"\r\n >\r\n {{ monthYearLabel() }}\r\n <span mfIcon [size]=\"16\">expand_more</span>\r\n </button>\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().nextMonth\"\r\n (click)=\"month.set(shiftMonth(month(), 1))\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_right</span>\r\n </button>\r\n } @else {\r\n <span class=\"px-1 font-display text-title-sm text-fg capitalize\">{{\r\n monthYearLabel()\r\n }}</span>\r\n }\r\n </div>\r\n\r\n <div class=\"grid grid-cols-7\">\r\n @for (label of weekdayLabels(); track $index) {\r\n <span class=\"text-eyebrow flex h-6 items-center justify-center text-fg-subtle\">{{\r\n label\r\n }}</span>\r\n }\r\n </div>\r\n\r\n <!--\r\n `role=\"grid\"` kapsayıcısı odaklanabilir DEĞİL — hücreler (`role=\"gridcell\"`)\r\n gerçek `<button>` elemanları, roving tabindex ile kendi odaklarını taşır;\r\n bu `(keydown)` yalnızca ok tuşu gezinmesini merkezi yönetmek için.\r\n -->\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <div\r\n #grid\r\n role=\"grid\"\r\n [attr.aria-label]=\"monthYearLabel()\"\r\n class=\"grid grid-cols-7 gap-y-1\"\r\n (keydown)=\"onGridKeydown($event)\"\r\n (mouseleave)=\"dayHover.emit(null)\"\r\n >\r\n @for (week of weeks(); track $index) {\r\n <div role=\"row\" class=\"contents\">\r\n @for (day of week; track day.getTime()) {\r\n <button\r\n type=\"button\"\r\n role=\"gridcell\"\r\n [attr.data-day-key]=\"dayKey(day)\"\r\n [attr.aria-selected]=\"isSameDaySafe(day)\"\r\n [tabindex]=\"tabIndexFor(day)\"\r\n [disabled]=\"isDisabled(day)\"\r\n [class]=\"dayClasses(day)\"\r\n (click)=\"pick(day)\"\r\n (mouseenter)=\"onDayMouseEnter(day)\"\r\n >\r\n {{ day.getDate() }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n @case ('month') {\r\n <div class=\"flex items-center justify-between\">\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().previousYear\"\r\n (click)=\"month.set(shiftYear(month(), -1))\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_left</span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex appearance-none items-center gap-0.5 border-0 bg-transparent px-1 font-display text-title-sm tabular-nums text-fg transition-colors duration-fast ease-emphasis hover:text-accent\"\r\n [attr.aria-label]=\"effectiveLabels().chooseYear\"\r\n (click)=\"openYearView()\"\r\n >\r\n {{ month().getFullYear() }}\r\n <span mfIcon [size]=\"16\">expand_more</span>\r\n </button>\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().nextYear\"\r\n (click)=\"month.set(shiftYear(month(), 1))\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_right</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"grid grid-cols-3 gap-1 py-1\">\r\n @for (m of monthGrid(); track m.getMonth()) {\r\n <button\r\n type=\"button\"\r\n [class]=\"cellClasses(m.getMonth() === month().getMonth())\"\r\n (click)=\"pickMonth(m)\"\r\n >\r\n {{ monthLabel(m) }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n @case ('year') {\r\n <div class=\"flex items-center justify-between\">\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().previousYear\"\r\n (click)=\"shiftYearPage(-1)\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_left</span>\r\n </button>\r\n <span class=\"font-display text-title-sm tabular-nums text-fg\"\r\n >{{ yearGrid()[0] }}–{{ yearGrid()[11] }}</span\r\n >\r\n <button\r\n mfButton\r\n tone=\"neutral\"\r\n appearance=\"text\"\r\n size=\"icon\"\r\n shape=\"square\"\r\n type=\"button\"\r\n [attr.aria-label]=\"effectiveLabels().nextYear\"\r\n (click)=\"shiftYearPage(1)\"\r\n >\r\n <span mfIcon [size]=\"18\" class=\"rtl:-scale-x-100\">chevron_right</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"grid grid-cols-3 gap-1 py-1\">\r\n @for (y of yearGrid(); track y) {\r\n <button\r\n type=\"button\"\r\n class=\"tabular-nums\"\r\n [class]=\"cellClasses(y === month().getFullYear())\"\r\n (click)=\"pickYear(y)\"\r\n >\r\n {{ y }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n ElementRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { startOfDay, startOfMonth } from 'date-fns';\r\nimport type { Locale } from 'date-fns';\r\nimport {\r\n MF_DATE_LOCALE,\r\n MF_DATE_PICKER_LABELS,\r\n type MfDatePickerLabels,\r\n ValueAccessorBase,\r\n} from '@mesgflow/ui-kit/core';\r\nimport { Icon } from '@mesgflow/ui-kit/icon';\r\nimport { Input } from '@mesgflow/ui-kit/input';\r\nimport { Popover } from '@mesgflow/ui-kit/popover';\r\nimport { Calendar } from './calendar';\r\nimport { formatDateInput, isDayDisabled, parseDateInput } from './date-picker.model';\r\n\r\n/**\r\n * `<mf-date-picker [(value)]=\"date\" [min]=\"minDate()\" />`\r\n *\r\n * Tetikleyici GERÇEK bir `<input mfInput>` — ikon+temizle butonu üstüne\r\n * bindirilmiş (emsal: `search-input.html`, ayrı bir bordürlü kutuyla\r\n * SARMALAMIYORUZ, `Input`'un kendi border/shadow/focus'u tek kaynak kalıyor,\r\n * \"çift kenarlık\" görünümü olmasın diye). Yazarak giriş + takvimden seçim\r\n * AYNI `value` model'ine yazıyor.\r\n *\r\n * Panel `select.html`'deki CDK overlay bloğunun birebir aynısı (şeffaf\r\n * backdrop, `(backdropClick)`/`(detach)` → kapat, bottom-start + flip\r\n * pozisyon). Panel kabuğu sabit formül: `rounded-lg bg-overlay p-3 shadow-2\r\n * dark:border dark:border-border-subtle` (bkz. table-filter-menu.html).\r\n */\r\n@Component({\r\n selector: 'mf-date-picker',\r\n exportAs: 'mfDatePicker',\r\n imports: [OverlayModule, Icon, Input, Calendar, Popover],\r\n host: { class: 'block' },\r\n templateUrl: './date-picker.html',\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePicker), multi: true },\r\n ],\r\n})\r\nexport class DatePicker extends ValueAccessorBase<Date | null> implements ControlValueAccessor {\r\n readonly value = model<Date | null>(null);\r\n readonly min = input<Date | null>(null);\r\n readonly max = input<Date | null>(null);\r\n readonly locale = input<Locale>();\r\n readonly labels = input<MfDatePickerLabels>();\r\n readonly disabled = input(false);\r\n readonly hasError = input(false);\r\n readonly ariaLabel = input('');\r\n\r\n private readonly dateLocaleToken = inject(MF_DATE_LOCALE);\r\n private readonly datePickerLabels = inject(MF_DATE_PICKER_LABELS);\r\n protected readonly effectiveLocale = computed(() => this.locale() ?? this.dateLocaleToken());\r\n protected readonly effectiveLabels = computed(() => this.labels() ?? this.datePickerLabels());\r\n\r\n protected readonly open = signal(false);\r\n protected readonly draft = signal('');\r\n protected readonly month = signal(startOfMonth(new Date()));\r\n\r\n private readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\r\n\r\n constructor() {\r\n super();\r\n // `value()`/`locale()` değişince taslak metin ve görünen ay yeniden\r\n // hesaplanır — `locale()` BİLEREK izlenen bağımlılıklardan biri (dil\r\n // değişince mevcut değer YENİ yerel kısa biçimde gösterilsin).\r\n effect(() => {\r\n const v = this.value();\r\n const locale = this.effectiveLocale();\r\n untracked(() => {\r\n this.draft.set(v ? formatDateInput(v, locale) : '');\r\n this.month.set(startOfMonth(v ?? new Date()));\r\n });\r\n });\r\n }\r\n\r\n writeValue(value: Date | null): void {\r\n this.value.set(value);\r\n }\r\n\r\n private setValue(next: Date | null): void {\r\n this.value.set(next);\r\n this.onChange(next);\r\n this.onTouched();\r\n }\r\n\r\n protected onInput(raw: string): void {\r\n this.draft.set(raw);\r\n this.onTouched();\r\n }\r\n\r\n protected commitDraft(): void {\r\n const text = this.draft().trim();\r\n if (!text) {\r\n this.setValue(null);\r\n return;\r\n }\r\n const parsed = parseDateInput(text, this.effectiveLocale());\r\n if (parsed && !isDayDisabled(parsed, this.min(), this.max())) {\r\n this.setValue(parsed);\r\n } else {\r\n const v = this.value();\r\n this.draft.set(v ? formatDateInput(v, this.effectiveLocale()) : '');\r\n }\r\n }\r\n\r\n protected onDayPick(day: Date): void {\r\n this.setValue(day);\r\n this.close();\r\n }\r\n\r\n protected pickToday(): void {\r\n this.onDayPick(startOfDay(new Date()));\r\n }\r\n\r\n protected clear(): void {\r\n this.setValue(null);\r\n this.inputEl()?.nativeElement.focus();\r\n }\r\n\r\n protected close(): void {\r\n this.open.set(false);\r\n }\r\n\r\n protected onEscape(): void {\r\n if (!this.open()) return;\r\n const v = this.value();\r\n this.draft.set(v ? formatDateInput(v, this.effectiveLocale()) : '');\r\n this.close();\r\n }\r\n}\r\n","<div class=\"relative w-full\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\">\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"pointer-events-none absolute top-1/2 start-2.5 -translate-y-1/2 text-fg-subtle\"\r\n >calendar_today</span\r\n >\r\n <input\r\n mfInput\r\n #inputEl\r\n type=\"text\"\r\n class=\"ps-9\"\r\n [class.pr-8]=\"!!value()\"\r\n [hasError]=\"hasError()\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"effectiveLabels().placeholder\"\r\n [value]=\"draft()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (focus)=\"open.set(true)\"\r\n (keydown.enter)=\"commitDraft()\"\r\n (keydown.escape)=\"onEscape()\"\r\n />\r\n @if (value()) {\r\n <button\r\n type=\"button\"\r\n class=\"absolute top-1/2 end-2.5 -translate-y-1/2 appearance-none border-0 bg-transparent p-0 text-fg-subtle transition-colors duration-fast ease-emphasis hover:text-fg\"\r\n [attr.aria-label]=\"effectiveLabels().clear\"\r\n (click)=\"clear()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n }\r\n\r\n <mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"lg\"\r\n panelClass=\"w-auto\"\r\n (closed)=\"onEscape()\"\r\n >\r\n <mf-calendar\r\n [(month)]=\"month\"\r\n [selected]=\"value()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [locale]=\"effectiveLocale()\"\r\n [labels]=\"effectiveLabels()\"\r\n (dayPick)=\"onDayPick($event)\"\r\n />\r\n <div class=\"mt-2 flex items-center justify-between border-t border-border pt-2\">\r\n <button\r\n type=\"button\"\r\n class=\"appearance-none border-0 bg-transparent p-0 text-xs font-medium text-accent transition-colors duration-fast ease-emphasis hover:text-accent-strong\"\r\n (click)=\"pickToday()\"\r\n >\r\n {{ effectiveLabels().today }}\r\n </button>\r\n @if (value()) {\r\n <button\r\n type=\"button\"\r\n class=\"appearance-none border-0 bg-transparent p-0 text-xs font-medium text-fg-subtle transition-colors duration-fast ease-emphasis hover:text-fg\"\r\n (click)=\"clear()\"\r\n >\r\n {{ effectiveLabels().clear }}\r\n </button>\r\n }\r\n </div>\r\n </mf-popover>\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n computed,\r\n ElementRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { addMonths, startOfMonth } from 'date-fns';\r\nimport type { Locale } from 'date-fns';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport {\r\n MF_DATE_LOCALE,\r\n MF_DATE_PICKER_LABELS,\r\n type MfDatePickerLabels,\r\n ValueAccessorBase,\r\n} from '@mesgflow/ui-kit/core';\r\nimport { Icon } from '@mesgflow/ui-kit/icon';\r\nimport { InputGroup, InputPrefix, InputSuffix } from '@mesgflow/ui-kit/input';\r\nimport { Popover } from '@mesgflow/ui-kit/popover';\r\nimport { Calendar } from './calendar';\r\nimport {\r\n dateRangeForPreset,\r\n formatDateInput,\r\n isDayDisabled,\r\n parseDateInput,\r\n type DateRange,\r\n type DateRangePresetId,\r\n} from './date-picker.model';\r\n\r\nconst PRESETS: DateRangePresetId[] = ['today', 'last7', 'last30', 'thisMonth'];\r\n\r\n/**\r\n * `<mf-date-range-picker [(value)]=\"range\" />` — `value` şekli\r\n * `{ start: Date | null; end: Date | null }` (bkz. `DateRange`).\r\n *\r\n * Tetikleyici tek kutu içinde İKİ metin input'u (başlangıç/bitiş) —\r\n * `DatePicker`'ın aksine burada `mfInput`'un KENDİ border/shadow'unu\r\n * KULLANMIYORUZ (iki input yan yana, \"çift kenarlık\" olmasın diye border/\r\n * shadow/focus DIŞ kutuya taşındı, iç input'lar çıplak — tek gerekçeli\r\n * istisna).\r\n *\r\n * Panelde solda ön ayar sütunu + sağda iki takvim (ikincisi\r\n * `[navigable]=\"false\"` — bkz. `calendar.ts`, \"birincinin bir fazlası\"\r\n * değişmezini koruyor). Onay YALNIZCA \"Uygula\"da dışarı çıkar — takvimde\r\n * gezinme/seçim kendi `draftRange` sinyalinde kalır, `value()` her tık ile\r\n * DEĞİŞMEZ (emsal: `table-page-jump.ts` — her tuş vuruşunda backend'e istek\r\n * atmama notu). \"Temizle\" bunun istisnası — anında commit eder.\r\n */\r\n@Component({\r\n selector: 'mf-date-range-picker',\r\n exportAs: 'mfDateRangePicker',\r\n imports: [OverlayModule, Icon, Button, Calendar, Popover, InputGroup, InputPrefix, InputSuffix],\r\n host: { class: 'block' },\r\n templateUrl: './date-range-picker.html',\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePicker), multi: true },\r\n ],\r\n})\r\nexport class DateRangePicker extends ValueAccessorBase<DateRange> implements ControlValueAccessor {\r\n readonly value = model<DateRange>({ start: null, end: null });\r\n readonly min = input<Date | null>(null);\r\n readonly max = input<Date | null>(null);\r\n readonly locale = input<Locale>();\r\n readonly labels = input<MfDatePickerLabels>();\r\n readonly disabled = input(false);\r\n readonly hasError = input(false);\r\n\r\n private readonly dateLocaleToken = inject(MF_DATE_LOCALE);\r\n private readonly datePickerLabels = inject(MF_DATE_PICKER_LABELS);\r\n protected readonly effectiveLocale = computed(() => this.locale() ?? this.dateLocaleToken());\r\n protected readonly effectiveLabels = computed(() => this.labels() ?? this.datePickerLabels());\r\n\r\n protected readonly open = signal(false);\r\n protected readonly startDraft = signal('');\r\n protected readonly endDraft = signal('');\r\n protected readonly draftRange = signal<DateRange>({ start: null, end: null });\r\n protected readonly pickStage = signal<'start' | 'end'>('start');\r\n protected readonly hoverEnd = signal<Date | null>(null);\r\n protected readonly monthLeft = signal(startOfMonth(new Date()));\r\n protected readonly monthRight = signal(addMonths(startOfMonth(new Date()), 1));\r\n\r\n protected readonly presets = PRESETS;\r\n\r\n private readonly startEl = viewChild<ElementRef<HTMLInputElement>>('startEl');\r\n\r\n constructor() {\r\n super();\r\n // `value()`/`locale()` değişince iki taslak metin yeniden hesaplanır.\r\n effect(() => {\r\n const v = this.value();\r\n const locale = this.effectiveLocale();\r\n untracked(() => {\r\n this.startDraft.set(v.start ? formatDateInput(v.start, locale) : '');\r\n this.endDraft.set(v.end ? formatDateInput(v.end, locale) : '');\r\n });\r\n });\r\n\r\n // Sol takvim değişince sağ takvim HER ZAMAN bir fazlası — kendi başına\r\n // gezilemiyor (bkz. `Calendar.navigable`), tek yönlü senkron yeterli.\r\n effect(() => {\r\n const left = this.monthLeft();\r\n untracked(() => this.monthRight.set(addMonths(left, 1)));\r\n });\r\n\r\n // Panel her açılışta `value()`'dan taze bir taslakla başlar.\r\n effect(() => {\r\n if (!this.open()) return;\r\n untracked(() => {\r\n const v = this.value();\r\n this.draftRange.set(v);\r\n this.pickStage.set(v.start && !v.end ? 'end' : 'start');\r\n this.hoverEnd.set(null);\r\n this.monthLeft.set(startOfMonth(v.start ?? new Date()));\r\n });\r\n });\r\n }\r\n\r\n writeValue(value: DateRange): void {\r\n this.value.set(value);\r\n }\r\n\r\n private setValue(next: DateRange): void {\r\n this.value.set(next);\r\n this.onChange(next);\r\n this.onTouched();\r\n }\r\n\r\n protected presetLabel(preset: DateRangePresetId): string {\r\n const labels = this.effectiveLabels();\r\n if (preset === 'today') return labels.presetToday;\r\n if (preset === 'last7') return labels.presetLast7;\r\n if (preset === 'last30') return labels.presetLast30;\r\n return labels.presetThisMonth;\r\n }\r\n\r\n protected applyPreset(preset: DateRangePresetId): void {\r\n const range = dateRangeForPreset(preset);\r\n this.setValue(range);\r\n this.close();\r\n }\r\n\r\n protected onStartInput(raw: string): void {\r\n this.startDraft.set(raw);\r\n this.onTouched();\r\n }\r\n\r\n protected onEndInput(raw: string): void {\r\n this.endDraft.set(raw);\r\n this.onTouched();\r\n }\r\n\r\n protected commitStartDraft(): void {\r\n const text = this.startDraft().trim();\r\n const current = this.value();\r\n if (!text) {\r\n this.setValue({ ...current, start: null });\r\n return;\r\n }\r\n const parsed = parseDateInput(text, this.effectiveLocale());\r\n if (parsed && !isDayDisabled(parsed, this.min(), this.max())) {\r\n const end = current.end && parsed > current.end ? null : current.end;\r\n this.setValue({ start: parsed, end });\r\n } else {\r\n this.startDraft.set(\r\n current.start ? formatDateInput(current.start, this.effectiveLocale()) : '',\r\n );\r\n }\r\n }\r\n\r\n protected commitEndDraft(): void {\r\n const text = this.endDraft().trim();\r\n const current = this.value();\r\n if (!text) {\r\n this.setValue({ ...current, end: null });\r\n return;\r\n }\r\n const parsed = parseDateInput(text, this.effectiveLocale());\r\n const validOrder = !current.start || (parsed && parsed >= current.start);\r\n if (parsed && validOrder && !isDayDisabled(parsed, this.min(), this.max())) {\r\n this.setValue({ ...current, end: parsed });\r\n } else {\r\n this.endDraft.set(current.end ? formatDateInput(current.end, this.effectiveLocale()) : '');\r\n }\r\n }\r\n\r\n protected onDayHover(day: Date | null): void {\r\n this.hoverEnd.set(day);\r\n }\r\n\r\n protected onDayPick(day: Date): void {\r\n const draft = this.draftRange();\r\n if (this.pickStage() === 'start' || (draft.start && draft.end)) {\r\n this.draftRange.set({ start: day, end: null });\r\n this.pickStage.set('end');\r\n this.hoverEnd.set(null);\r\n return;\r\n }\r\n\r\n const start = draft.start!;\r\n this.draftRange.set(day < start ? { start: day, end: start } : { start, end: day });\r\n this.pickStage.set('start');\r\n this.hoverEnd.set(null);\r\n }\r\n\r\n protected apply(): void {\r\n const draft = this.draftRange();\r\n if (!draft.start) return;\r\n this.setValue({ start: draft.start, end: draft.end ?? draft.start });\r\n this.close();\r\n }\r\n\r\n protected clear(): void {\r\n this.setValue({ start: null, end: null });\r\n this.draftRange.set({ start: null, end: null });\r\n this.pickStage.set('start');\r\n this.startEl()?.nativeElement.focus();\r\n }\r\n\r\n protected close(): void {\r\n this.open.set(false);\r\n }\r\n\r\n protected onEscape(): void {\r\n if (!this.open()) return;\r\n const v = this.value();\r\n this.startDraft.set(v.start ? formatDateInput(v.start, this.effectiveLocale()) : '');\r\n this.endDraft.set(v.end ? formatDateInput(v.end, this.effectiveLocale()) : '');\r\n this.close();\r\n }\r\n}\r\n","<div class=\"relative w-full\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\">\r\n <mf-input-group [hasError]=\"hasError()\" [disabled]=\"disabled()\">\r\n <span mfInputPrefix><span mfIcon [size]=\"18\">calendar_today</span></span>\r\n <input\r\n #startEl\r\n type=\"text\"\r\n class=\"w-0 min-w-0 flex-1 appearance-none border-0 bg-transparent p-0 text-sm text-fg placeholder:text-fg-subtle focus:outline-none\"\r\n [placeholder]=\"effectiveLabels().startDate\"\r\n [value]=\"startDraft()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"effectiveLabels().startDate\"\r\n (input)=\"onStartInput($any($event.target).value)\"\r\n (focus)=\"open.set(true)\"\r\n (keydown.enter)=\"commitStartDraft()\"\r\n (keydown.escape)=\"onEscape()\"\r\n />\r\n <span class=\"shrink-0 text-fg-subtle\" aria-hidden=\"true\">–</span>\r\n <input\r\n type=\"text\"\r\n class=\"w-0 min-w-0 flex-1 appearance-none border-0 bg-transparent p-0 text-sm text-fg placeholder:text-fg-subtle focus:outline-none\"\r\n [placeholder]=\"effectiveLabels().endDate\"\r\n [value]=\"endDraft()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"effectiveLabels().endDate\"\r\n (input)=\"onEndInput($any($event.target).value)\"\r\n (focus)=\"open.set(true)\"\r\n (keydown.enter)=\"commitEndDraft()\"\r\n (keydown.escape)=\"onEscape()\"\r\n />\r\n @if (value().start || value().end) {\r\n <button\r\n mfInputSuffix\r\n type=\"button\"\r\n class=\"appearance-none border-0 bg-transparent p-0 transition-colors duration-fast ease-emphasis hover:text-fg\"\r\n [attr.aria-label]=\"effectiveLabels().clear\"\r\n (click)=\"clear()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n }\r\n </mf-input-group>\r\n\r\n <mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"none\"\r\n panelClass=\"flex w-auto\"\r\n (closed)=\"onEscape()\"\r\n >\r\n <div class=\"flex flex-col gap-0.5 border-e border-border p-2\">\r\n @for (preset of presets; track preset) {\r\n <button\r\n type=\"button\"\r\n class=\"appearance-none whitespace-nowrap rounded-sm border-0 bg-transparent px-2.5 py-1.5 text-start text-sm text-fg-muted transition-colors duration-fast ease-emphasis hover:bg-surface-alt\"\r\n (click)=\"applyPreset(preset)\"\r\n >\r\n {{ presetLabel(preset) }}\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-2 p-3\">\r\n <div class=\"flex gap-4\">\r\n <mf-calendar\r\n mode=\"range\"\r\n [(month)]=\"monthLeft\"\r\n [rangeStart]=\"draftRange().start\"\r\n [rangeEnd]=\"draftRange().end\"\r\n [hoverEnd]=\"hoverEnd()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [locale]=\"effectiveLocale()\"\r\n [labels]=\"effectiveLabels()\"\r\n (dayPick)=\"onDayPick($event)\"\r\n (dayHover)=\"onDayHover($event)\"\r\n />\r\n <div class=\"hidden sm:block\">\r\n <mf-calendar\r\n mode=\"range\"\r\n [month]=\"monthRight()\"\r\n [navigable]=\"false\"\r\n [rangeStart]=\"draftRange().start\"\r\n [rangeEnd]=\"draftRange().end\"\r\n [hoverEnd]=\"hoverEnd()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [locale]=\"effectiveLocale()\"\r\n [labels]=\"effectiveLabels()\"\r\n (dayPick)=\"onDayPick($event)\"\r\n (dayHover)=\"onDayHover($event)\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-end gap-2 border-t border-border pt-2\">\r\n <button mfButton tone=\"neutral\" appearance=\"text\" size=\"sm\" type=\"button\" (click)=\"clear()\">\r\n {{ effectiveLabels().clear }}\r\n </button>\r\n <button\r\n mfButton\r\n tone=\"primary\"\r\n appearance=\"filled\"\r\n size=\"sm\"\r\n type=\"button\"\r\n [disabled]=\"!draftRange().start\"\r\n (click)=\"apply()\"\r\n >\r\n {{ effectiveLabels().apply }}\r\n </button>\r\n </div>\r\n </div>\r\n </mf-popover>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isSameDayFns"],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, Component } from '@angular/core';
3
+
4
+ /**
5
+ * `<mf-description-list [items]="[{label: 'E-posta', value: 'a@b.com'}]" />`
6
+ * — salt-okunur alan/değer çiftleri için (ör. bir profil özeti). `horizontal`
7
+ * (varsayılan): etiket solda (1 sütun), değer sağda (2 sütun) — ayarlar
8
+ * panellerindeki tipik "satır" deseni. `vertical`: etiket değerin ÜSTÜNDE,
9
+ * yığılı — dar bir kart/kenar çubuğu içinde daha rahat.
10
+ */
11
+ class DescriptionList {
12
+ items = input.required(/* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
14
+ orientation = input('horizontal', /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DescriptionList, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: DescriptionList, isStandalone: true, selector: "mf-description-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, exportAs: ["mfDescriptionList"], ngImport: i0, template: `
18
+ <dl class="divide-y divide-border">
19
+ @for (item of items(); track item.label) {
20
+ <div
21
+ [class]="
22
+ orientation() === 'horizontal'
23
+ ? 'grid grid-cols-3 gap-4 py-2'
24
+ : 'flex flex-col gap-0.5 py-2'
25
+ "
26
+ >
27
+ <dt class="text-sm text-fg-subtle">{{ item.label }}</dt>
28
+ <dd
29
+ [class]="
30
+ orientation() === 'horizontal' ? 'col-span-2 text-sm text-fg' : 'text-sm text-fg'
31
+ "
32
+ >
33
+ {{ item.value }}
34
+ </dd>
35
+ </div>
36
+ }
37
+ </dl>
38
+ `, isInline: true });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: DescriptionList, decorators: [{
41
+ type: Component,
42
+ args: [{
43
+ selector: 'mf-description-list',
44
+ exportAs: 'mfDescriptionList',
45
+ host: { class: 'block' },
46
+ template: `
47
+ <dl class="divide-y divide-border">
48
+ @for (item of items(); track item.label) {
49
+ <div
50
+ [class]="
51
+ orientation() === 'horizontal'
52
+ ? 'grid grid-cols-3 gap-4 py-2'
53
+ : 'flex flex-col gap-0.5 py-2'
54
+ "
55
+ >
56
+ <dt class="text-sm text-fg-subtle">{{ item.label }}</dt>
57
+ <dd
58
+ [class]="
59
+ orientation() === 'horizontal' ? 'col-span-2 text-sm text-fg' : 'text-sm text-fg'
60
+ "
61
+ >
62
+ {{ item.value }}
63
+ </dd>
64
+ </div>
65
+ }
66
+ </dl>
67
+ `,
68
+ }]
69
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
70
+
71
+ /**
72
+ * Generated bundle index. Do not edit.
73
+ */
74
+
75
+ export { DescriptionList };
76
+ //# sourceMappingURL=mesgflow-ui-kit-description-list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesgflow-ui-kit-description-list.mjs","sources":["../../../projects/ui-kit/description-list/description-list.ts","../../../projects/ui-kit/description-list/mesgflow-ui-kit-description-list.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\n\r\nexport interface DescriptionItem {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport type DescriptionListOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * `<mf-description-list [items]=\"[{label: 'E-posta', value: 'a@b.com'}]\" />`\r\n * — salt-okunur alan/değer çiftleri için (ör. bir profil özeti). `horizontal`\r\n * (varsayılan): etiket solda (1 sütun), değer sağda (2 sütun) — ayarlar\r\n * panellerindeki tipik \"satır\" deseni. `vertical`: etiket değerin ÜSTÜNDE,\r\n * yığılı — dar bir kart/kenar çubuğu içinde daha rahat.\r\n */\r\n@Component({\r\n selector: 'mf-description-list',\r\n exportAs: 'mfDescriptionList',\r\n host: { class: 'block' },\r\n template: `\r\n <dl class=\"divide-y divide-border\">\r\n @for (item of items(); track item.label) {\r\n <div\r\n [class]=\"\r\n orientation() === 'horizontal'\r\n ? 'grid grid-cols-3 gap-4 py-2'\r\n : 'flex flex-col gap-0.5 py-2'\r\n \"\r\n >\r\n <dt class=\"text-sm text-fg-subtle\">{{ item.label }}</dt>\r\n <dd\r\n [class]=\"\r\n orientation() === 'horizontal' ? 'col-span-2 text-sm text-fg' : 'text-sm text-fg'\r\n \"\r\n >\r\n {{ item.value }}\r\n </dd>\r\n </div>\r\n }\r\n </dl>\r\n `,\r\n})\r\nexport class DescriptionList {\r\n readonly items = input.required<DescriptionItem[]>();\r\n readonly orientation = input<DescriptionListOrientation>('horizontal');\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AASA;;;;;;AAMG;MA4BU,eAAe,CAAA;IACjB,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAqB;IAC3C,WAAW,GAAG,KAAK,CAA6B,YAAY;oFAAC;uGAF3D,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBhB,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;AACF,iBAAA;;;AC1CD;;AAEG;;"}