@egose/shadcn-theme-ng 0.0.28 → 0.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 (201) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +2 -63
  3. package/accordion/fesm2022/accordion.mjs +27 -39
  4. package/alert/README.md +2 -63
  5. package/alert/fesm2022/alert.mjs +47 -47
  6. package/alert-dialog/fesm2022/alert-dialog.mjs +47 -47
  7. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  8. package/autocomplete/README.md +2 -63
  9. package/autocomplete/fesm2022/autocomplete.mjs +53 -71
  10. package/avatar/fesm2022/avatar.mjs +32 -32
  11. package/badge/README.md +2 -63
  12. package/badge/fesm2022/badge.mjs +57 -57
  13. package/basic-alert/README.md +2 -63
  14. package/basic-alert/fesm2022/basic-alert.mjs +6 -18
  15. package/breadcrumb/fesm2022/breadcrumb.mjs +33 -39
  16. package/button/README.md +2 -63
  17. package/button/fesm2022/button.mjs +126 -176
  18. package/button/types/button.d.ts +2 -2
  19. package/button-group/fesm2022/button-group.mjs +20 -20
  20. package/calendar/README.md +2 -63
  21. package/calendar/fesm2022/calendar.mjs +29 -743
  22. package/card/fesm2022/card.mjs +33 -33
  23. package/carousel/fesm2022/carousel.mjs +36 -78
  24. package/checkbox/README.md +2 -63
  25. package/checkbox/fesm2022/checkbox.mjs +20 -58
  26. package/checkbox/types/checkbox.d.ts +5 -4
  27. package/collapsible/fesm2022/collapsible.mjs +15 -15
  28. package/combobox/fesm2022/combobox.mjs +88 -224
  29. package/command/fesm2022/command.mjs +49 -109
  30. package/confirmation-dialog/README.md +2 -63
  31. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +15 -40
  32. package/confirmation-dialog/types/confirmation-dialog.d.ts +8 -4
  33. package/context-menu/fesm2022/context-menu.mjs +9 -9
  34. package/date-picker/README.md +2 -63
  35. package/date-picker/fesm2022/date-picker.mjs +63 -266
  36. package/date-picker/types/date-picker.d.ts +7 -3
  37. package/dialog/README.md +2 -63
  38. package/dialog/fesm2022/dialog.mjs +45 -71
  39. package/drawer/fesm2022/drawer.mjs +44 -54
  40. package/dropdown-menu/fesm2022/dropdown-menu.mjs +82 -70
  41. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  42. package/empty/fesm2022/empty.mjs +30 -30
  43. package/field/fesm2022/field.mjs +56 -72
  44. package/form-checkbox/README.md +2 -63
  45. package/form-checkbox/fesm2022/form-checkbox.mjs +25 -85
  46. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  47. package/form-date-picker/README.md +2 -63
  48. package/form-date-picker/fesm2022/form-date-picker.mjs +31 -84
  49. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  50. package/form-field/README.md +2 -63
  51. package/form-field/fesm2022/form-field.mjs +33 -19
  52. package/form-field/types/form-field.d.ts +28 -20
  53. package/form-field-simple/README.md +2 -63
  54. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  55. package/form-searchable-multiselect/README.md +2 -63
  56. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +31 -91
  57. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +7 -1
  58. package/form-select/README.md +2 -63
  59. package/form-select/fesm2022/form-select.mjs +32 -149
  60. package/form-select/types/form-select.d.ts +7 -1
  61. package/form-text-input/README.md +2 -63
  62. package/form-text-input/fesm2022/form-text-input.mjs +35 -149
  63. package/form-text-input/types/form-text-input.d.ts +9 -12
  64. package/form-textarea/README.md +2 -63
  65. package/form-textarea/fesm2022/form-textarea.mjs +34 -109
  66. package/form-textarea/types/form-textarea.d.ts +8 -1
  67. package/hover-card/fesm2022/hover-card.mjs +19 -19
  68. package/icon/README.md +2 -63
  69. package/icon/fesm2022/icon.mjs +8 -8
  70. package/input/README.md +2 -63
  71. package/input/fesm2022/input.mjs +17 -12
  72. package/input/types/input.d.ts +2 -1
  73. package/input-group/fesm2022/input-group.mjs +33 -33
  74. package/input-otp/fesm2022/input-otp.mjs +26 -26
  75. package/item/fesm2022/item.mjs +53 -53
  76. package/kbd/fesm2022/kbd.mjs +12 -12
  77. package/label/README.md +2 -63
  78. package/label/fesm2022/label.mjs +10 -10
  79. package/label/types/label.d.ts +1 -1
  80. package/layout-simple/README.md +2 -63
  81. package/layout-simple/fesm2022/layout-simple.mjs +98 -429
  82. package/layout-simple/types/layout-simple.d.ts +25 -11
  83. package/menu/README.md +3 -0
  84. package/menu/fesm2022/menu.mjs +455 -0
  85. package/menu/package.json +24 -0
  86. package/menu/types/menu.d.ts +137 -0
  87. package/menubar/fesm2022/menubar.mjs +13 -13
  88. package/native-select/fesm2022/native-select.mjs +19 -19
  89. package/navigation-menu/fesm2022/navigation-menu.mjs +35 -47
  90. package/package.json +183 -154
  91. package/pagination/fesm2022/pagination.mjs +45 -331
  92. package/popover/README.md +2 -63
  93. package/popover/fesm2022/popover.mjs +30 -30
  94. package/progress/fesm2022/progress.mjs +13 -13
  95. package/radio-group/README.md +2 -63
  96. package/radio-group/fesm2022/radio-group.mjs +22 -19
  97. package/resizable/fesm2022/resizable.mjs +18 -26
  98. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  99. package/searchable-multiselect/README.md +2 -63
  100. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +28 -117
  101. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  102. package/select/README.md +2 -63
  103. package/select/fesm2022/select.mjs +71 -111
  104. package/select/types/select.d.ts +3 -1
  105. package/separator/README.md +2 -63
  106. package/separator/fesm2022/separator.mjs +9 -9
  107. package/separator/types/separator.d.ts +1 -1
  108. package/sheet/README.md +2 -63
  109. package/sheet/fesm2022/sheet.mjs +41 -53
  110. package/sidebar/fesm2022/sidebar.mjs +125 -227
  111. package/skeleton/fesm2022/skeleton.mjs +9 -9
  112. package/slider/fesm2022/slider.mjs +10 -80
  113. package/sonner/README.md +2 -63
  114. package/sonner/fesm2022/sonner.mjs +13 -13
  115. package/spinner/README.md +2 -63
  116. package/spinner/fesm2022/spinner.mjs +11 -11
  117. package/switch/README.md +2 -63
  118. package/switch/fesm2022/switch.mjs +13 -15
  119. package/table/fesm2022/table.mjs +41 -41
  120. package/tabs/README.md +2 -63
  121. package/tabs/fesm2022/tabs.mjs +35 -111
  122. package/textarea/fesm2022/textarea.mjs +9 -9
  123. package/toggle/fesm2022/toggle.mjs +13 -13
  124. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  125. package/toggle-group/types/toggle-group.d.ts +13 -7
  126. package/tooltip/README.md +2 -63
  127. package/tooltip/fesm2022/tooltip.mjs +14 -14
  128. package/typography/fesm2022/typography.mjs +53 -53
  129. package/typography/types/typography.d.ts +12 -12
  130. package/utils/README.md +2 -63
  131. package/utils/fesm2022/utils.mjs +68 -44
  132. package/accordion/fesm2022/accordion.mjs.map +0 -1
  133. package/alert/fesm2022/alert.mjs.map +0 -1
  134. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  135. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  136. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  137. package/avatar/fesm2022/avatar.mjs.map +0 -1
  138. package/badge/fesm2022/badge.mjs.map +0 -1
  139. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  140. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  141. package/button/fesm2022/button.mjs.map +0 -1
  142. package/button-group/fesm2022/button-group.mjs.map +0 -1
  143. package/calendar/fesm2022/calendar.mjs.map +0 -1
  144. package/card/fesm2022/card.mjs.map +0 -1
  145. package/carousel/fesm2022/carousel.mjs.map +0 -1
  146. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  147. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  148. package/combobox/fesm2022/combobox.mjs.map +0 -1
  149. package/command/fesm2022/command.mjs.map +0 -1
  150. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  151. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  152. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  153. package/dialog/fesm2022/dialog.mjs.map +0 -1
  154. package/drawer/fesm2022/drawer.mjs.map +0 -1
  155. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  156. package/empty/fesm2022/empty.mjs.map +0 -1
  157. package/field/fesm2022/field.mjs.map +0 -1
  158. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  159. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  160. package/form-field/fesm2022/form-field.mjs.map +0 -1
  161. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  162. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  163. package/form-select/fesm2022/form-select.mjs.map +0 -1
  164. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  165. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  166. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  167. package/icon/fesm2022/icon.mjs.map +0 -1
  168. package/input/fesm2022/input.mjs.map +0 -1
  169. package/input-group/fesm2022/input-group.mjs.map +0 -1
  170. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  171. package/item/fesm2022/item.mjs.map +0 -1
  172. package/kbd/fesm2022/kbd.mjs.map +0 -1
  173. package/label/fesm2022/label.mjs.map +0 -1
  174. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  175. package/menubar/fesm2022/menubar.mjs.map +0 -1
  176. package/native-select/fesm2022/native-select.mjs.map +0 -1
  177. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  178. package/pagination/fesm2022/pagination.mjs.map +0 -1
  179. package/popover/fesm2022/popover.mjs.map +0 -1
  180. package/progress/fesm2022/progress.mjs.map +0 -1
  181. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  182. package/resizable/fesm2022/resizable.mjs.map +0 -1
  183. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  184. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  185. package/select/fesm2022/select.mjs.map +0 -1
  186. package/separator/fesm2022/separator.mjs.map +0 -1
  187. package/sheet/fesm2022/sheet.mjs.map +0 -1
  188. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  189. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  190. package/slider/fesm2022/slider.mjs.map +0 -1
  191. package/sonner/fesm2022/sonner.mjs.map +0 -1
  192. package/spinner/fesm2022/spinner.mjs.map +0 -1
  193. package/switch/fesm2022/switch.mjs.map +0 -1
  194. package/table/fesm2022/table.mjs.map +0 -1
  195. package/tabs/fesm2022/tabs.mjs.map +0 -1
  196. package/textarea/fesm2022/textarea.mjs.map +0 -1
  197. package/toggle/fesm2022/toggle.mjs.map +0 -1
  198. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  199. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  200. package/typography/fesm2022/typography.mjs.map +0 -1
  201. package/utils/fesm2022/utils.mjs.map +0 -1
@@ -33,116 +33,15 @@ class HlmCalendar {
33
33
  };
34
34
  }, /* @ts-ignore */
35
35
  ...(ngDevMode ? [{ debugName: "_heading" }] : /* istanbul ignore next */ []));
36
- _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), 'data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70', 'data-[outside=true]:opacity-50', "data-[highlighted]:before:content-['']", 'data-[highlighted]:before:absolute', 'data-[highlighted]:before:bottom-1', 'data-[highlighted]:before:start-1/2', 'data-[highlighted]:before:h-1', 'data-[highlighted]:before:w-1', 'data-[highlighted]:before:-translate-x-1/2', 'data-[highlighted]:before:rounded-full', 'data-[highlighted]:before:bg-destructive');
36
+ _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), "data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70", "data-[outside=true]:opacity-50", "data-[highlighted]:before:content-['']", "data-[highlighted]:before:absolute", "data-[highlighted]:before:bottom-1", "data-[highlighted]:before:start-1/2", "data-[highlighted]:before:h-1", "data-[highlighted]:before:w-1", "data-[highlighted]:before:-translate-x-1/2", "data-[highlighted]:before:rounded-full", "data-[highlighted]:before:bg-destructive");
37
37
  _selectClass = 'gap-0 px-1.5 py-2 [&>ng-icon]:ms-1';
38
38
  constructor() {
39
- classes(() => 'p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent');
39
+ classes(() => "p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent");
40
40
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: HlmCalendar, isStandalone: true, selector: "hlm-calendar", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendar, inputs: ["min", "min", "max", "max", "disabled", "disabled", "date", "date", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: `
43
- <div class="inline-flex flex-col gap-4">
44
- <!-- Header -->
45
- <div class="flex w-full items-center justify-between gap-1.5">
46
- <ng-template #month>
47
- <hlm-select brnCalendarMonthSelect class="order-1">
48
- <hlm-select-trigger size="sm" [class]="_selectClass">
49
- <hlm-select-value />
50
- </hlm-select-trigger>
51
- <hlm-select-content *hlmSelectPortal class="max-h-80">
52
- <hlm-select-group>
53
- @for (month of _i18n.config().months(); track month) {
54
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
55
- }
56
- </hlm-select-group>
57
- </hlm-select-content>
58
- </hlm-select>
59
- </ng-template>
60
- <ng-template #year>
61
- <hlm-select brnCalendarYearSelect class="order-3">
62
- <hlm-select-trigger size="sm" [class]="_selectClass">
63
- <hlm-select-value />
64
- </hlm-select-trigger>
65
- <hlm-select-content *hlmSelectPortal class="max-h-80">
66
- <hlm-select-group>
67
- @for (year of _i18n.config().years(); track year) {
68
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
69
- }
70
- </hlm-select-group>
71
- </hlm-select-content>
72
- </hlm-select>
73
- </ng-template>
74
- @let heading = _heading();
75
-
76
- <button
77
- brnCalendarPreviousButton
78
- variant="ghost"
79
- hlmBtn
80
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
81
- >
82
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
83
- </button>
84
-
85
- @switch (captionLayout()) {
86
- @case ('dropdown') {
87
- <ng-container [ngTemplateOutlet]="month" />
88
- <ng-container [ngTemplateOutlet]="year" />
89
- }
90
- @case ('dropdown-months') {
91
- <ng-container [ngTemplateOutlet]="month" />
92
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
93
- }
94
- @case ('dropdown-years') {
95
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
96
- <ng-container [ngTemplateOutlet]="year" />
97
- }
98
- @case ('label') {
99
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
100
- }
101
- }
102
-
103
- <button
104
- brnCalendarNextButton
105
- hlmBtn
106
- variant="ghost"
107
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
108
- >
109
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
110
- </button>
111
- </div>
112
-
113
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
114
- <thead aria-hidden="true">
115
- <tr class="flex">
116
- <th
117
- *brnCalendarWeekday="let weekday"
118
- scope="col"
119
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
120
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
121
- >
122
- {{ _i18n.config().formatWeekdayName(weekday) }}
123
- </th>
124
- </tr>
125
- </thead>
126
-
127
- <tbody role="rowgroup">
128
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
129
- @for (date of week; track _dateAdapter.getTime(date)) {
130
- <td
131
- brnCalendarCell
132
- class="group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
133
- >
134
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
135
- {{ _dateAdapter.getDate(date) }}
136
- </button>
137
- </td>
138
- }
139
- </tr>
140
- </tbody>
141
- </table>
142
- </div>
143
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmCalendar, isStandalone: true, selector: "hlm-calendar", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendar, inputs: ["min", "min", "max", "max", "disabled", "disabled", "date", "date", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: "\n <div class=\"inline-flex flex-col gap-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse space-y-1\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "ariaDescribedby", "wrapperDisabled", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
43
  }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendar, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendar, decorators: [{
146
45
  type: Component,
147
46
  args: [{
148
47
  selector: 'hlm-calendar',
@@ -157,108 +56,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
157
56
  },
158
57
  ],
159
58
  host: { 'data-slot': 'calendar' },
160
- template: `
161
- <div class="inline-flex flex-col gap-4">
162
- <!-- Header -->
163
- <div class="flex w-full items-center justify-between gap-1.5">
164
- <ng-template #month>
165
- <hlm-select brnCalendarMonthSelect class="order-1">
166
- <hlm-select-trigger size="sm" [class]="_selectClass">
167
- <hlm-select-value />
168
- </hlm-select-trigger>
169
- <hlm-select-content *hlmSelectPortal class="max-h-80">
170
- <hlm-select-group>
171
- @for (month of _i18n.config().months(); track month) {
172
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
173
- }
174
- </hlm-select-group>
175
- </hlm-select-content>
176
- </hlm-select>
177
- </ng-template>
178
- <ng-template #year>
179
- <hlm-select brnCalendarYearSelect class="order-3">
180
- <hlm-select-trigger size="sm" [class]="_selectClass">
181
- <hlm-select-value />
182
- </hlm-select-trigger>
183
- <hlm-select-content *hlmSelectPortal class="max-h-80">
184
- <hlm-select-group>
185
- @for (year of _i18n.config().years(); track year) {
186
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
187
- }
188
- </hlm-select-group>
189
- </hlm-select-content>
190
- </hlm-select>
191
- </ng-template>
192
- @let heading = _heading();
193
-
194
- <button
195
- brnCalendarPreviousButton
196
- variant="ghost"
197
- hlmBtn
198
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
199
- >
200
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
201
- </button>
202
-
203
- @switch (captionLayout()) {
204
- @case ('dropdown') {
205
- <ng-container [ngTemplateOutlet]="month" />
206
- <ng-container [ngTemplateOutlet]="year" />
207
- }
208
- @case ('dropdown-months') {
209
- <ng-container [ngTemplateOutlet]="month" />
210
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
211
- }
212
- @case ('dropdown-years') {
213
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
214
- <ng-container [ngTemplateOutlet]="year" />
215
- }
216
- @case ('label') {
217
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
218
- }
219
- }
220
-
221
- <button
222
- brnCalendarNextButton
223
- hlmBtn
224
- variant="ghost"
225
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
226
- >
227
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
228
- </button>
229
- </div>
230
-
231
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
232
- <thead aria-hidden="true">
233
- <tr class="flex">
234
- <th
235
- *brnCalendarWeekday="let weekday"
236
- scope="col"
237
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
238
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
239
- >
240
- {{ _i18n.config().formatWeekdayName(weekday) }}
241
- </th>
242
- </tr>
243
- </thead>
244
-
245
- <tbody role="rowgroup">
246
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
247
- @for (date of week; track _dateAdapter.getTime(date)) {
248
- <td
249
- brnCalendarCell
250
- class="group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
251
- >
252
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
253
- {{ _dateAdapter.getDate(date) }}
254
- </button>
255
- </td>
256
- }
257
- </tr>
258
- </tbody>
259
- </table>
260
- </div>
261
- `,
59
+ template: "\n <div class=\"inline-flex flex-col gap-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse space-y-1\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ",
262
60
  }]
263
61
  }], ctorParameters: () => [], propDecorators: { captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }] } });
264
62
 
@@ -283,116 +81,15 @@ class HlmCalendarMulti {
283
81
  };
284
82
  }, /* @ts-ignore */
285
83
  ...(ngDevMode ? [{ debugName: "_heading" }] : /* istanbul ignore next */ []));
286
- _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), 'data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70', 'data-[outside=true]:opacity-50', "data-[highlighted]:before:content-['']", 'data-[highlighted]:before:absolute', 'data-[highlighted]:before:bottom-1', 'data-[highlighted]:before:start-1/2', 'data-[highlighted]:before:h-1', 'data-[highlighted]:before:w-1', 'data-[highlighted]:before:-translate-x-1/2', 'data-[highlighted]:before:rounded-full', 'data-[highlighted]:before:bg-destructive');
84
+ _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), "data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70", "data-[outside=true]:opacity-50", "data-[highlighted]:before:content-['']", "data-[highlighted]:before:absolute", "data-[highlighted]:before:bottom-1", "data-[highlighted]:before:start-1/2", "data-[highlighted]:before:h-1", "data-[highlighted]:before:w-1", "data-[highlighted]:before:-translate-x-1/2", "data-[highlighted]:before:rounded-full", "data-[highlighted]:before:bg-destructive");
287
85
  _selectClass = 'gap-0 px-1.5 py-2 [&>ng-icon]:ms-1';
288
86
  constructor() {
289
- classes(() => 'p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent');
87
+ classes(() => "p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent");
290
88
  }
291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarMulti, deps: [], target: i0.ɵɵFactoryTarget.Component });
292
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: HlmCalendarMulti, isStandalone: true, selector: "hlm-calendar-multi", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendarMulti, inputs: ["min", "min", "max", "max", "minSelection", "minSelection", "maxSelection", "maxSelection", "disabled", "disabled", "date", "date", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: `
293
- <div class="inline-flex flex-col space-y-4">
294
- <!-- Header -->
295
- <div class="flex w-full items-center justify-between gap-1.5">
296
- <ng-template #month>
297
- <hlm-select brnCalendarMonthSelect class="order-1">
298
- <hlm-select-trigger size="sm" [class]="_selectClass">
299
- <hlm-select-value />
300
- </hlm-select-trigger>
301
- <hlm-select-content *hlmSelectPortal class="max-h-80">
302
- <hlm-select-group>
303
- @for (month of _i18n.config().months(); track month) {
304
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
305
- }
306
- </hlm-select-group>
307
- </hlm-select-content>
308
- </hlm-select>
309
- </ng-template>
310
- <ng-template #year>
311
- <hlm-select brnCalendarYearSelect class="order-3">
312
- <hlm-select-trigger size="sm" [class]="_selectClass">
313
- <hlm-select-value />
314
- </hlm-select-trigger>
315
- <hlm-select-content *hlmSelectPortal class="max-h-80">
316
- <hlm-select-group>
317
- @for (year of _i18n.config().years(); track year) {
318
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
319
- }
320
- </hlm-select-group>
321
- </hlm-select-content>
322
- </hlm-select>
323
- </ng-template>
324
- @let heading = _heading();
325
-
326
- <button
327
- brnCalendarPreviousButton
328
- variant="ghost"
329
- hlmBtn
330
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
331
- >
332
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
333
- </button>
334
-
335
- @switch (captionLayout()) {
336
- @case ('dropdown') {
337
- <ng-container [ngTemplateOutlet]="month" />
338
- <ng-container [ngTemplateOutlet]="year" />
339
- }
340
- @case ('dropdown-months') {
341
- <ng-container [ngTemplateOutlet]="month" />
342
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
343
- }
344
- @case ('dropdown-years') {
345
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
346
- <ng-container [ngTemplateOutlet]="year" />
347
- }
348
- @case ('label') {
349
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
350
- }
351
- }
352
-
353
- <button
354
- brnCalendarNextButton
355
- hlmBtn
356
- variant="ghost"
357
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
358
- >
359
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
360
- </button>
361
- </div>
362
-
363
- <table class="w-full border-collapse" brnCalendarGrid>
364
- <thead aria-hidden="true">
365
- <tr class="flex">
366
- <th
367
- *brnCalendarWeekday="let weekday"
368
- scope="col"
369
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
370
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
371
- >
372
- {{ _i18n.config().formatWeekdayName(weekday) }}
373
- </th>
374
- </tr>
375
- </thead>
376
-
377
- <tbody role="rowgroup">
378
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
379
- @for (date of week; track _dateAdapter.getTime(date)) {
380
- <td
381
- brnCalendarCell
382
- class="group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
383
- >
384
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
385
- {{ _dateAdapter.getDate(date) }}
386
- </button>
387
- </td>
388
- }
389
- </tr>
390
- </tbody>
391
- </table>
392
- </div>
393
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarMulti, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmCalendarMulti, isStandalone: true, selector: "hlm-calendar-multi", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendarMulti, inputs: ["min", "min", "max", "max", "minSelection", "minSelection", "maxSelection", "maxSelection", "disabled", "disabled", "date", "date", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: "\n <div class=\"inline-flex flex-col space-y-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "ariaDescribedby", "wrapperDisabled", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
394
91
  }
395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarMulti, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarMulti, decorators: [{
396
93
  type: Component,
397
94
  args: [{
398
95
  selector: 'hlm-calendar-multi',
@@ -418,108 +115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
418
115
  },
419
116
  ],
420
117
  host: { 'data-slot': 'calendar' },
421
- template: `
422
- <div class="inline-flex flex-col space-y-4">
423
- <!-- Header -->
424
- <div class="flex w-full items-center justify-between gap-1.5">
425
- <ng-template #month>
426
- <hlm-select brnCalendarMonthSelect class="order-1">
427
- <hlm-select-trigger size="sm" [class]="_selectClass">
428
- <hlm-select-value />
429
- </hlm-select-trigger>
430
- <hlm-select-content *hlmSelectPortal class="max-h-80">
431
- <hlm-select-group>
432
- @for (month of _i18n.config().months(); track month) {
433
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
434
- }
435
- </hlm-select-group>
436
- </hlm-select-content>
437
- </hlm-select>
438
- </ng-template>
439
- <ng-template #year>
440
- <hlm-select brnCalendarYearSelect class="order-3">
441
- <hlm-select-trigger size="sm" [class]="_selectClass">
442
- <hlm-select-value />
443
- </hlm-select-trigger>
444
- <hlm-select-content *hlmSelectPortal class="max-h-80">
445
- <hlm-select-group>
446
- @for (year of _i18n.config().years(); track year) {
447
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
448
- }
449
- </hlm-select-group>
450
- </hlm-select-content>
451
- </hlm-select>
452
- </ng-template>
453
- @let heading = _heading();
454
-
455
- <button
456
- brnCalendarPreviousButton
457
- variant="ghost"
458
- hlmBtn
459
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
460
- >
461
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
462
- </button>
463
-
464
- @switch (captionLayout()) {
465
- @case ('dropdown') {
466
- <ng-container [ngTemplateOutlet]="month" />
467
- <ng-container [ngTemplateOutlet]="year" />
468
- }
469
- @case ('dropdown-months') {
470
- <ng-container [ngTemplateOutlet]="month" />
471
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
472
- }
473
- @case ('dropdown-years') {
474
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
475
- <ng-container [ngTemplateOutlet]="year" />
476
- }
477
- @case ('label') {
478
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
479
- }
480
- }
481
-
482
- <button
483
- brnCalendarNextButton
484
- hlmBtn
485
- variant="ghost"
486
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
487
- >
488
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
489
- </button>
490
- </div>
491
-
492
- <table class="w-full border-collapse" brnCalendarGrid>
493
- <thead aria-hidden="true">
494
- <tr class="flex">
495
- <th
496
- *brnCalendarWeekday="let weekday"
497
- scope="col"
498
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
499
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
500
- >
501
- {{ _i18n.config().formatWeekdayName(weekday) }}
502
- </th>
503
- </tr>
504
- </thead>
505
-
506
- <tbody role="rowgroup">
507
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
508
- @for (date of week; track _dateAdapter.getTime(date)) {
509
- <td
510
- brnCalendarCell
511
- class="group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
512
- >
513
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
514
- {{ _dateAdapter.getDate(date) }}
515
- </button>
516
- </td>
517
- }
518
- </tr>
519
- </tbody>
520
- </table>
521
- </div>
522
- `,
118
+ template: "\n <div class=\"inline-flex flex-col space-y-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ",
523
119
  }]
524
120
  }], ctorParameters: () => [], propDecorators: { captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }] } });
525
121
 
@@ -544,116 +140,15 @@ class HlmCalendarRange {
544
140
  };
545
141
  }, /* @ts-ignore */
546
142
  ...(ngDevMode ? [{ debugName: "_heading" }] : /* istanbul ignore next */ []));
547
- _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), 'data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70', 'data-[outside=true]:opacity-50', "data-[highlighted]:before:content-['']", 'data-[highlighted]:before:absolute', 'data-[highlighted]:before:bottom-1', 'data-[highlighted]:before:start-1/2', 'data-[highlighted]:before:h-1', 'data-[highlighted]:before:w-1', 'data-[highlighted]:before:-translate-x-1/2', 'data-[highlighted]:before:rounded-full', 'data-[highlighted]:before:bg-destructive');
143
+ _btnClass = hlm(buttonVariants({ variant: 'ghost', size: 'icon' }), "data-[today=true]:bg-muted group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:bg-muted/50 dark:hover:text-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70", "data-[outside=true]:opacity-50", "data-[highlighted]:before:content-['']", "data-[highlighted]:before:absolute", "data-[highlighted]:before:bottom-1", "data-[highlighted]:before:start-1/2", "data-[highlighted]:before:h-1", "data-[highlighted]:before:w-1", "data-[highlighted]:before:-translate-x-1/2", "data-[highlighted]:before:rounded-full", "data-[highlighted]:before:bg-destructive");
548
144
  _selectClass = 'gap-0 px-1.5 py-2 [&>ng-icon]:ms-1';
549
145
  constructor() {
550
- classes(() => 'p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent');
146
+ classes(() => "p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent");
551
147
  }
552
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Component });
553
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: HlmCalendarRange, isStandalone: true, selector: "hlm-calendar-range", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendarRange, inputs: ["min", "min", "max", "max", "disabled", "disabled", "startDate", "startDate", "endDate", "endDate", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["endDateChange", "endDateChange", "startDateChange", "startDateChange"] }], ngImport: i0, template: `
554
- <div class="inline-flex flex-col space-y-4">
555
- <!-- Header -->
556
- <div class="flex w-full items-center justify-between gap-1.5">
557
- <ng-template #month>
558
- <hlm-select brnCalendarMonthSelect class="order-1">
559
- <hlm-select-trigger size="sm" [class]="_selectClass">
560
- <hlm-select-value />
561
- </hlm-select-trigger>
562
- <hlm-select-content *hlmSelectPortal class="max-h-80">
563
- <hlm-select-group>
564
- @for (month of _i18n.config().months(); track month) {
565
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
566
- }
567
- </hlm-select-group>
568
- </hlm-select-content>
569
- </hlm-select>
570
- </ng-template>
571
- <ng-template #year>
572
- <hlm-select brnCalendarYearSelect class="order-3">
573
- <hlm-select-trigger size="sm" [class]="_selectClass">
574
- <hlm-select-value />
575
- </hlm-select-trigger>
576
- <hlm-select-content *hlmSelectPortal class="max-h-80">
577
- <hlm-select-group>
578
- @for (year of _i18n.config().years(); track year) {
579
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
580
- }
581
- </hlm-select-group>
582
- </hlm-select-content>
583
- </hlm-select>
584
- </ng-template>
585
- @let heading = _heading();
586
-
587
- <button
588
- brnCalendarPreviousButton
589
- variant="ghost"
590
- hlmBtn
591
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
592
- >
593
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
594
- </button>
595
-
596
- @switch (captionLayout()) {
597
- @case ('dropdown') {
598
- <ng-container [ngTemplateOutlet]="month" />
599
- <ng-container [ngTemplateOutlet]="year" />
600
- }
601
- @case ('dropdown-months') {
602
- <ng-container [ngTemplateOutlet]="month" />
603
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
604
- }
605
- @case ('dropdown-years') {
606
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
607
- <ng-container [ngTemplateOutlet]="year" />
608
- }
609
- @case ('label') {
610
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
611
- }
612
- }
613
-
614
- <button
615
- brnCalendarNextButton
616
- hlmBtn
617
- variant="ghost"
618
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
619
- >
620
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
621
- </button>
622
- </div>
623
-
624
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
625
- <thead aria-hidden="true">
626
- <tr class="flex">
627
- <th
628
- *brnCalendarWeekday="let weekday"
629
- scope="col"
630
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
631
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
632
- >
633
- {{ _i18n.config().formatWeekdayName(weekday) }}
634
- </th>
635
- </tr>
636
- </thead>
637
-
638
- <tbody role="rowgroup">
639
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
640
- @for (date of week; track _dateAdapter.getTime(date)) {
641
- <td
642
- brnCalendarCell
643
- class="group/day has-[button[data-range-start=true]]:bg-muted has-[button[data-range-start=true]]:after:bg-muted has-[button[data-range-end=true]]:bg-muted has-[button[data-range-end=true]]:after:bg-muted relative isolate z-0 aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none has-[button[data-range-end=true]]:rounded-e-(--cell-radius) has-[button[data-range-end=true]]:after:absolute has-[button[data-range-end=true]]:after:inset-y-0 has-[button[data-range-end=true]]:after:start-0 has-[button[data-range-end=true]]:after:w-4 has-[button[data-range-start=true]]:rounded-s-(--cell-radius) has-[button[data-range-start=true]]:after:absolute has-[button[data-range-start=true]]:after:inset-y-0 has-[button[data-range-start=true]]:after:end-0 has-[button[data-range-start=true]]:after:w-4 [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
644
- >
645
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
646
- {{ _dateAdapter.getDate(date) }}
647
- </button>
648
- </td>
649
- }
650
- </tr>
651
- </tbody>
652
- </table>
653
- </div>
654
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
148
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarRange, deps: [], target: i0.ɵɵFactoryTarget.Component });
149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmCalendarRange, isStandalone: true, selector: "hlm-calendar-range", inputs: { captionLayout: { classPropertyName: "captionLayout", publicName: "captionLayout", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "calendar" } }, hostDirectives: [{ directive: i1.BrnCalendarRange, inputs: ["min", "min", "max", "max", "disabled", "disabled", "startDate", "startDate", "endDate", "endDate", "dateDisabled", "dateDisabled", "weekStartsOn", "weekStartsOn", "highlightDays", "highlightDays", "defaultFocusedDate", "defaultFocusedDate"], outputs: ["endDateChange", "endDateChange", "startDateChange", "startDateChange"] }], ngImport: i0, template: "\n <div class=\"inline-flex flex-col space-y-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse space-y-1\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day has-[button[data-range-start=true]]:bg-muted has-[button[data-range-start=true]]:after:bg-muted has-[button[data-range-end=true]]:bg-muted has-[button[data-range-end=true]]:after:bg-muted relative isolate z-0 aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none has-[button[data-range-end=true]]:rounded-e-(--cell-radius) has-[button[data-range-end=true]]:after:absolute has-[button[data-range-end=true]]:after:inset-y-0 has-[button[data-range-end=true]]:after:start-0 has-[button[data-range-end=true]]:after:w-4 has-[button[data-range-start=true]]:rounded-s-(--cell-radius) has-[button[data-range-start=true]]:after:absolute has-[button[data-range-start=true]]:after:inset-y-0 has-[button[data-range-start=true]]:after:end-0 has-[button[data-range-start=true]]:after:w-4 [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.BrnCalendarCellButton, selector: "button[brnCalendarCellButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnCalendarGrid, selector: "[brnCalendarGrid]" }, { kind: "directive", type: i1.BrnCalendarHeader, selector: "[brnCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnCalendarNextButton, selector: "[brnCalendarNextButton]" }, { kind: "directive", type: i1.BrnCalendarPreviousButton, selector: "[brnCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnCalendarWeek, selector: "[brnCalendarWeek]" }, { kind: "directive", type: i1.BrnCalendarWeekday, selector: "[brnCalendarWeekday]" }, { kind: "directive", type: i1.BrnCalendarCell, selector: "[brnCalendarCell]" }, { kind: "directive", type: i1.BrnCalendarMonthSelect, selector: "brnSelect[brnCalendarMonthSelect],hlm-select[brnCalendarMonthSelect]" }, { kind: "directive", type: i1.BrnCalendarYearSelect, selector: "brnSelect[brnCalendarYearSelect],hlm-select[brnCalendarYearSelect]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i2.HlmSelect, selector: "[hlmSelect],hlm-select" }, { kind: "component", type: i2.HlmSelectContent, selector: "hlm-select-content", inputs: ["showScroll"] }, { kind: "directive", type: i2.HlmSelectGroup, selector: "[hlmSelectGroup],hlm-select-group" }, { kind: "component", type: i2.HlmSelectItem, selector: "hlm-select-item" }, { kind: "directive", type: i2.HlmSelectPortal, selector: "[hlmSelectPortal]" }, { kind: "component", type: i2.HlmSelectTrigger, selector: "hlm-select-trigger", inputs: ["class", "buttonId", "ariaDescribedby", "wrapperDisabled", "size", "forceInvalid"] }, { kind: "directive", type: i2.HlmSelectValue, selector: "[hlmSelectValue],hlm-select-value" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
655
150
  }
656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarRange, decorators: [{
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarRange, decorators: [{
657
152
  type: Component,
658
153
  args: [{
659
154
  selector: 'hlm-calendar-range',
@@ -678,108 +173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
678
173
  },
679
174
  ],
680
175
  host: { 'data-slot': 'calendar' },
681
- template: `
682
- <div class="inline-flex flex-col space-y-4">
683
- <!-- Header -->
684
- <div class="flex w-full items-center justify-between gap-1.5">
685
- <ng-template #month>
686
- <hlm-select brnCalendarMonthSelect class="order-1">
687
- <hlm-select-trigger size="sm" [class]="_selectClass">
688
- <hlm-select-value />
689
- </hlm-select-trigger>
690
- <hlm-select-content *hlmSelectPortal class="max-h-80">
691
- <hlm-select-group>
692
- @for (month of _i18n.config().months(); track month) {
693
- <hlm-select-item [value]="month">{{ month }}</hlm-select-item>
694
- }
695
- </hlm-select-group>
696
- </hlm-select-content>
697
- </hlm-select>
698
- </ng-template>
699
- <ng-template #year>
700
- <hlm-select brnCalendarYearSelect class="order-3">
701
- <hlm-select-trigger size="sm" [class]="_selectClass">
702
- <hlm-select-value />
703
- </hlm-select-trigger>
704
- <hlm-select-content *hlmSelectPortal class="max-h-80">
705
- <hlm-select-group>
706
- @for (year of _i18n.config().years(); track year) {
707
- <hlm-select-item [value]="year">{{ year }}</hlm-select-item>
708
- }
709
- </hlm-select-group>
710
- </hlm-select-content>
711
- </hlm-select>
712
- </ng-template>
713
- @let heading = _heading();
714
-
715
- <button
716
- brnCalendarPreviousButton
717
- variant="ghost"
718
- hlmBtn
719
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
720
- >
721
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
722
- </button>
723
-
724
- @switch (captionLayout()) {
725
- @case ('dropdown') {
726
- <ng-container [ngTemplateOutlet]="month" />
727
- <ng-container [ngTemplateOutlet]="year" />
728
- }
729
- @case ('dropdown-months') {
730
- <ng-container [ngTemplateOutlet]="month" />
731
- <div brnCalendarHeader class="order-4 text-sm font-medium">{{ heading.year }}</div>
732
- }
733
- @case ('dropdown-years') {
734
- <div brnCalendarHeader class="order-2 text-sm font-medium">{{ heading.month }}</div>
735
- <ng-container [ngTemplateOutlet]="year" />
736
- }
737
- @case ('label') {
738
- <div brnCalendarHeader class="order-5 text-sm font-medium">{{ heading.header }}</div>
739
- }
740
- }
741
-
742
- <button
743
- brnCalendarNextButton
744
- hlmBtn
745
- variant="ghost"
746
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
747
- >
748
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
749
- </button>
750
- </div>
751
-
752
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
753
- <thead aria-hidden="true">
754
- <tr class="flex">
755
- <th
756
- *brnCalendarWeekday="let weekday"
757
- scope="col"
758
- class="text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none"
759
- [attr.aria-label]="_i18n.config().labelWeekday(weekday)"
760
- >
761
- {{ _i18n.config().formatWeekdayName(weekday) }}
762
- </th>
763
- </tr>
764
- </thead>
765
-
766
- <tbody role="rowgroup">
767
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
768
- @for (date of week; track _dateAdapter.getTime(date)) {
769
- <td
770
- brnCalendarCell
771
- class="group/day has-[button[data-range-start=true]]:bg-muted has-[button[data-range-start=true]]:after:bg-muted has-[button[data-range-end=true]]:bg-muted has-[button[data-range-end=true]]:after:bg-muted relative isolate z-0 aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none has-[button[data-range-end=true]]:rounded-e-(--cell-radius) has-[button[data-range-end=true]]:after:absolute has-[button[data-range-end=true]]:after:inset-y-0 has-[button[data-range-end=true]]:after:start-0 has-[button[data-range-end=true]]:after:w-4 has-[button[data-range-start=true]]:rounded-s-(--cell-radius) has-[button[data-range-start=true]]:after:absolute has-[button[data-range-start=true]]:after:inset-y-0 has-[button[data-range-start=true]]:after:end-0 has-[button[data-range-start=true]]:after:w-4 [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)"
772
- >
773
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
774
- {{ _dateAdapter.getDate(date) }}
775
- </button>
776
- </td>
777
- }
778
- </tr>
779
- </tbody>
780
- </table>
781
- </div>
782
- `,
176
+ template: "\n <div class=\"inline-flex flex-col space-y-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <ng-template #month>\n <hlm-select brnCalendarMonthSelect class=\"order-1\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (month of _i18n.config().months(); track month) {\n <hlm-select-item [value]=\"month\">{{ month }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n <ng-template #year>\n <hlm-select brnCalendarYearSelect class=\"order-3\">\n <hlm-select-trigger size=\"sm\" [class]=\"_selectClass\">\n <hlm-select-value />\n </hlm-select-trigger>\n <hlm-select-content *hlmSelectPortal class=\"max-h-80\">\n <hlm-select-group>\n @for (year of _i18n.config().years(); track year) {\n <hlm-select-item [value]=\"year\">{{ year }}</hlm-select-item>\n }\n </hlm-select-group>\n </hlm-select-content>\n </hlm-select>\n </ng-template>\n @let heading = _heading();\n\n <button\n brnCalendarPreviousButton\n variant=\"ghost\"\n hlmBtn\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n @switch (captionLayout()) {\n @case ('dropdown') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('dropdown-months') {\n <ng-container [ngTemplateOutlet]=\"month\" />\n <div brnCalendarHeader class=\"order-4 text-sm font-medium\">{{ heading.year }}</div>\n }\n @case ('dropdown-years') {\n <div brnCalendarHeader class=\"order-2 text-sm font-medium\">{{ heading.month }}</div>\n <ng-container [ngTemplateOutlet]=\"year\" />\n }\n @case ('label') {\n <div brnCalendarHeader class=\"order-5 text-sm font-medium\">{{ heading.header }}</div>\n }\n }\n\n <button\n brnCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <table class=\"w-full border-collapse space-y-1\" brnCalendarGrid>\n <thead aria-hidden=\"true\">\n <tr class=\"flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"text-muted-foreground flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal select-none\"\n [attr.aria-label]=\"_i18n.config().labelWeekday(weekday)\"\n >\n {{ _i18n.config().formatWeekdayName(weekday) }}\n </th>\n </tr>\n </thead>\n\n <tbody role=\"rowgroup\">\n <tr *brnCalendarWeek=\"let week\" class=\"mt-2 flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"group/day has-[button[data-range-start=true]]:bg-muted has-[button[data-range-start=true]]:after:bg-muted has-[button[data-range-end=true]]:bg-muted has-[button[data-range-end=true]]:after:bg-muted relative isolate z-0 aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none has-[button[data-range-end=true]]:rounded-e-(--cell-radius) has-[button[data-range-end=true]]:after:absolute has-[button[data-range-end=true]]:after:inset-y-0 has-[button[data-range-end=true]]:after:start-0 has-[button[data-range-end=true]]:after:w-4 has-[button[data-range-start=true]]:rounded-s-(--cell-radius) has-[button[data-range-start=true]]:after:absolute has-[button[data-range-start=true]]:after:inset-y-0 has-[button[data-range-start=true]]:after:end-0 has-[button[data-range-start=true]]:after:w-4 [&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius) [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\"\n >\n <button brnCalendarCellButton [date]=\"date\" [class]=\"_btnClass\">\n {{ _dateAdapter.getDate(date) }}\n </button>\n </td>\n }\n </tr>\n </tbody>\n </table>\n </div>\n ",
783
177
  }]
784
178
  }], ctorParameters: () => [], propDecorators: { captionLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionLayout", required: false }] }] } });
785
179
 
@@ -800,68 +194,14 @@ class HlmMonthYearCalendar {
800
194
  return `${config.formatYear(start)} – ${config.formatYear(end)}`;
801
195
  }, /* @ts-ignore */
802
196
  ...(ngDevMode ? [{ debugName: "_heading" }] : /* istanbul ignore next */ []));
803
- _btnClass = hlm(buttonVariants({ variant: 'ghost' }), 'data-[today=true]:bg-muted', 'data-[selected=true]:bg-primary data-[selected=true]:text-primary-foreground data-[selected=true]:hover:bg-primary data-[selected=true]:hover:text-primary-foreground', 'data-[focused=true]:border-ring data-[focused=true]:ring-ring/50 data-[focused=true]:ring-[3px]', 'aria-disabled:pointer-events-none aria-disabled:opacity-50', 'h-(--cell-size)');
197
+ _btnClass = hlm(buttonVariants({ variant: 'ghost' }), "data-[today=true]:bg-muted", "data-[selected=true]:bg-primary data-[selected=true]:text-primary-foreground data-[selected=true]:hover:bg-primary data-[selected=true]:hover:text-primary-foreground", "data-[focused=true]:border-ring data-[focused=true]:ring-ring/50 data-[focused=true]:ring-[3px]", "aria-disabled:pointer-events-none aria-disabled:opacity-50", "h-(--cell-size)");
804
198
  constructor() {
805
- classes(() => 'p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent');
199
+ classes(() => "p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] group/calendar bg-background block in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent");
806
200
  }
807
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMonthYearCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
808
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: HlmMonthYearCalendar, isStandalone: true, selector: "hlm-month-year-calendar", host: { attributes: { "data-slot": "month-year-calendar" } }, hostDirectives: [{ directive: i1.BrnMonthYearCalendar, inputs: ["min", "min", "max", "max", "disabled", "disabled", "date", "date", "defaultFocusedDate", "defaultFocusedDate", "view", "view"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: `
809
- <div class="flex flex-col gap-4">
810
- <!-- Header -->
811
- <div class="flex w-full items-center justify-between gap-1.5">
812
- <button
813
- brnMonthYearCalendarPreviousButton
814
- hlmBtn
815
- variant="ghost"
816
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
817
- >
818
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
819
- </button>
820
-
821
- <button
822
- hlmBtn
823
- variant="ghost"
824
- class="h-(--cell-size) py-0 select-none aria-disabled:opacity-50"
825
- brnMonthYearCalendarHeader
826
- >
827
- {{ _heading() }}
828
- </button>
829
-
830
- <button
831
- brnMonthYearCalendarNextButton
832
- hlmBtn
833
- variant="ghost"
834
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
835
- >
836
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
837
- </button>
838
- </div>
839
-
840
- <!-- Grid -->
841
- @switch (_picker.view()) {
842
- @case ('year') {
843
- <div brnMonthYearCalendarGrid class="grid grid-cols-4 gap-2">
844
- @for (year of _picker.years(); track _dateAdapter.getYear(year)) {
845
- <button brnMonthYearCalendarYearButton [date]="year" [class]="_btnClass">
846
- {{ _i18n.config().formatYear(_dateAdapter.getYear(year)) }}
847
- </button>
848
- }
849
- </div>
850
- }
851
- @case ('month') {
852
- <div brnMonthYearCalendarGrid class="grid grid-cols-4 gap-2">
853
- @for (month of _picker.months(); track _dateAdapter.getMonth(month)) {
854
- <button brnMonthYearCalendarMonthButton [date]="month" [class]="_btnClass">
855
- {{ _i18n.config().months()[_dateAdapter.getMonth(month)] }}
856
- </button>
857
- }
858
- </div>
859
- }
860
- }
861
- </div>
862
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.BrnMonthYearCalendarGrid, selector: "[brnMonthYearCalendarGrid]" }, { kind: "directive", type: i1.BrnMonthYearCalendarHeader, selector: "button[brnMonthYearCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnMonthYearCalendarMonthButton, selector: "button[brnMonthYearCalendarMonthButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnMonthYearCalendarNextButton, selector: "button[brnMonthYearCalendarNextButton]" }, { kind: "directive", type: i1.BrnMonthYearCalendarPreviousButton, selector: "button[brnMonthYearCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnMonthYearCalendarYearButton, selector: "button[brnMonthYearCalendarYearButton]", inputs: ["date"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
201
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
202
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmMonthYearCalendar, isStandalone: true, selector: "hlm-month-year-calendar", host: { attributes: { "data-slot": "month-year-calendar" } }, hostDirectives: [{ directive: i1.BrnMonthYearCalendar, inputs: ["min", "min", "max", "max", "disabled", "disabled", "date", "date", "defaultFocusedDate", "defaultFocusedDate", "view", "view"], outputs: ["dateChange", "dateChange"] }], ngImport: i0, template: "\n <div class=\"flex flex-col gap-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <button\n brnMonthYearCalendarPreviousButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n <button\n hlmBtn\n variant=\"ghost\"\n class=\"h-(--cell-size) py-0 select-none aria-disabled:opacity-50\"\n brnMonthYearCalendarHeader\n >\n {{ _heading() }}\n </button>\n\n <button\n brnMonthYearCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <!-- Grid -->\n @switch (_picker.view()) {\n @case ('year') {\n <div brnMonthYearCalendarGrid class=\"grid grid-cols-4 gap-2\">\n @for (year of _picker.years(); track _dateAdapter.getYear(year)) {\n <button brnMonthYearCalendarYearButton [date]=\"year\" [class]=\"_btnClass\">\n {{ _i18n.config().formatYear(_dateAdapter.getYear(year)) }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div brnMonthYearCalendarGrid class=\"grid grid-cols-4 gap-2\">\n @for (month of _picker.months(); track _dateAdapter.getMonth(month)) {\n <button brnMonthYearCalendarMonthButton [date]=\"month\" [class]=\"_btnClass\">\n {{ _i18n.config().months()[_dateAdapter.getMonth(month)] }}\n </button>\n }\n </div>\n }\n }\n </div>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.BrnMonthYearCalendarGrid, selector: "[brnMonthYearCalendarGrid]" }, { kind: "directive", type: i1.BrnMonthYearCalendarHeader, selector: "button[brnMonthYearCalendarHeader]", inputs: ["id"] }, { kind: "directive", type: i1.BrnMonthYearCalendarMonthButton, selector: "button[brnMonthYearCalendarMonthButton]", inputs: ["date"] }, { kind: "directive", type: i1.BrnMonthYearCalendarNextButton, selector: "button[brnMonthYearCalendarNextButton]" }, { kind: "directive", type: i1.BrnMonthYearCalendarPreviousButton, selector: "button[brnMonthYearCalendarPreviousButton]" }, { kind: "directive", type: i1.BrnMonthYearCalendarYearButton, selector: "button[brnMonthYearCalendarYearButton]", inputs: ["date"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i3.HlmBtn, selector: "button[hlmBtn], a[hlmBtn]", inputs: ["variant", "size", "class", "type"], exportAs: ["hlmBtn"] }], viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
863
203
  }
864
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmMonthYearCalendar, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearCalendar, decorators: [{
865
205
  type: Component,
866
206
  args: [{
867
207
  selector: 'hlm-month-year-calendar',
@@ -876,61 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
876
216
  },
877
217
  ],
878
218
  host: { 'data-slot': 'month-year-calendar' },
879
- template: `
880
- <div class="flex flex-col gap-4">
881
- <!-- Header -->
882
- <div class="flex w-full items-center justify-between gap-1.5">
883
- <button
884
- brnMonthYearCalendarPreviousButton
885
- hlmBtn
886
- variant="ghost"
887
- class="order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
888
- >
889
- <ng-icon name="lucideChevronLeft" class="rtl:rotate-180" />
890
- </button>
891
-
892
- <button
893
- hlmBtn
894
- variant="ghost"
895
- class="h-(--cell-size) py-0 select-none aria-disabled:opacity-50"
896
- brnMonthYearCalendarHeader
897
- >
898
- {{ _heading() }}
899
- </button>
900
-
901
- <button
902
- brnMonthYearCalendarNextButton
903
- hlmBtn
904
- variant="ghost"
905
- class="order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50"
906
- >
907
- <ng-icon name="lucideChevronRight" class="rtl:rotate-180" />
908
- </button>
909
- </div>
910
-
911
- <!-- Grid -->
912
- @switch (_picker.view()) {
913
- @case ('year') {
914
- <div brnMonthYearCalendarGrid class="grid grid-cols-4 gap-2">
915
- @for (year of _picker.years(); track _dateAdapter.getYear(year)) {
916
- <button brnMonthYearCalendarYearButton [date]="year" [class]="_btnClass">
917
- {{ _i18n.config().formatYear(_dateAdapter.getYear(year)) }}
918
- </button>
919
- }
920
- </div>
921
- }
922
- @case ('month') {
923
- <div brnMonthYearCalendarGrid class="grid grid-cols-4 gap-2">
924
- @for (month of _picker.months(); track _dateAdapter.getMonth(month)) {
925
- <button brnMonthYearCalendarMonthButton [date]="month" [class]="_btnClass">
926
- {{ _i18n.config().months()[_dateAdapter.getMonth(month)] }}
927
- </button>
928
- }
929
- </div>
930
- }
931
- }
932
- </div>
933
- `,
219
+ template: "\n <div class=\"flex flex-col gap-4\">\n <!-- Header -->\n <div class=\"flex w-full items-center justify-between gap-1.5\">\n <button\n brnMonthYearCalendarPreviousButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-first size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n\n <button\n hlmBtn\n variant=\"ghost\"\n class=\"h-(--cell-size) py-0 select-none aria-disabled:opacity-50\"\n brnMonthYearCalendarHeader\n >\n {{ _heading() }}\n </button>\n\n <button\n brnMonthYearCalendarNextButton\n hlmBtn\n variant=\"ghost\"\n class=\"order-last size-(--cell-size) p-0 select-none aria-disabled:opacity-50\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </div>\n\n <!-- Grid -->\n @switch (_picker.view()) {\n @case ('year') {\n <div brnMonthYearCalendarGrid class=\"grid grid-cols-4 gap-2\">\n @for (year of _picker.years(); track _dateAdapter.getYear(year)) {\n <button brnMonthYearCalendarYearButton [date]=\"year\" [class]=\"_btnClass\">\n {{ _i18n.config().formatYear(_dateAdapter.getYear(year)) }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div brnMonthYearCalendarGrid class=\"grid grid-cols-4 gap-2\">\n @for (month of _picker.months(); track _dateAdapter.getMonth(month)) {\n <button brnMonthYearCalendarMonthButton [date]=\"month\" [class]=\"_btnClass\">\n {{ _i18n.config().months()[_dateAdapter.getMonth(month)] }}\n </button>\n }\n </div>\n }\n }\n </div>\n ",
934
220
  }]
935
221
  }], ctorParameters: () => [] });
936
222
 
@@ -939,11 +225,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
939
225
  */
940
226
  const HlmCalendarImports = [HlmCalendar, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar];
941
227
  class HlmCalendarModule {
942
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
943
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarModule, imports: [HlmCalendar, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar], exports: [HlmCalendar, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar] });
944
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarModule, imports: [HlmCalendarImports] });
228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
229
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarModule, imports: [HlmCalendar, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar], exports: [HlmCalendar, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar] });
230
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarModule, imports: [HlmCalendarImports] });
945
231
  }
946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmCalendarModule, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCalendarModule, decorators: [{
947
233
  type: NgModule,
948
234
  args: [{
949
235
  imports: [...HlmCalendarImports],
@@ -956,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
956
242
  */
957
243
 
958
244
  export { HlmCalendar, HlmCalendarImports, HlmCalendarModule, HlmCalendarMulti, HlmCalendarRange, HlmMonthYearCalendar };
959
- //# sourceMappingURL=calendar.mjs.map
245
+