@egose/shadcn-theme-ng 0.0.10 → 0.0.12

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 (83) hide show
  1. package/accordion/fesm2022/accordion.mjs +25 -25
  2. package/accordion/fesm2022/accordion.mjs.map +1 -1
  3. package/alert/fesm2022/alert.mjs +109 -33
  4. package/alert/fesm2022/alert.mjs.map +1 -1
  5. package/alert/index.d.ts +6 -3
  6. package/autocomplete/README.md +64 -0
  7. package/autocomplete/fesm2022/autocomplete.mjs +524 -0
  8. package/autocomplete/fesm2022/autocomplete.mjs.map +1 -0
  9. package/autocomplete/index.d.ts +158 -0
  10. package/badge/fesm2022/badge.mjs +5 -5
  11. package/badge/fesm2022/badge.mjs.map +1 -1
  12. package/basic-alert/README.md +64 -0
  13. package/basic-alert/fesm2022/basic-alert.mjs +111 -0
  14. package/basic-alert/fesm2022/basic-alert.mjs.map +1 -0
  15. package/basic-alert/index.d.ts +14 -0
  16. package/button/fesm2022/button.mjs +16 -14
  17. package/button/fesm2022/button.mjs.map +1 -1
  18. package/button/index.d.ts +1 -1
  19. package/calendar/README.md +64 -0
  20. package/calendar/fesm2022/calendar.mjs +637 -0
  21. package/calendar/fesm2022/calendar.mjs.map +1 -0
  22. package/calendar/index.d.ts +111 -0
  23. package/confirmation-dialog/README.md +64 -0
  24. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +93 -0
  25. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +1 -0
  26. package/confirmation-dialog/index.d.ts +24 -0
  27. package/date-picker/README.md +64 -0
  28. package/date-picker/fesm2022/date-picker.mjs +599 -0
  29. package/date-picker/fesm2022/date-picker.mjs.map +1 -0
  30. package/date-picker/index.d.ts +227 -0
  31. package/dialog/README.md +64 -0
  32. package/dialog/fesm2022/dialog.mjs +278 -0
  33. package/dialog/fesm2022/dialog.mjs.map +1 -0
  34. package/dialog/index.d.ts +89 -0
  35. package/exports.json +1 -1
  36. package/form-date-picker/README.md +64 -0
  37. package/form-date-picker/fesm2022/form-date-picker.mjs +146 -0
  38. package/form-date-picker/fesm2022/form-date-picker.mjs.map +1 -0
  39. package/form-date-picker/index.d.ts +32 -0
  40. package/form-field/fesm2022/form-field.mjs +19 -17
  41. package/form-field/fesm2022/form-field.mjs.map +1 -1
  42. package/form-select/README.md +64 -0
  43. package/form-select/fesm2022/form-select.mjs +165 -0
  44. package/form-select/fesm2022/form-select.mjs.map +1 -0
  45. package/form-select/index.d.ts +33 -0
  46. package/form-text-input/README.md +64 -0
  47. package/form-text-input/fesm2022/form-text-input.mjs +197 -0
  48. package/form-text-input/fesm2022/form-text-input.mjs.map +1 -0
  49. package/form-text-input/index.d.ts +47 -0
  50. package/form-textarea/README.md +64 -0
  51. package/form-textarea/fesm2022/form-textarea.mjs +156 -0
  52. package/form-textarea/fesm2022/form-textarea.mjs.map +1 -0
  53. package/form-textarea/index.d.ts +33 -0
  54. package/icon/fesm2022/icon.mjs +7 -7
  55. package/input/fesm2022/input.mjs +11 -11
  56. package/input/fesm2022/input.mjs.map +1 -1
  57. package/label/fesm2022/label.mjs +9 -9
  58. package/label/fesm2022/label.mjs.map +1 -1
  59. package/package.json +56 -5
  60. package/popover/README.md +64 -0
  61. package/popover/fesm2022/popover.mjs +69 -0
  62. package/popover/fesm2022/popover.mjs.map +1 -0
  63. package/popover/index.d.ts +30 -0
  64. package/radio-group/fesm2022/radio-group.mjs +17 -17
  65. package/radio-group/fesm2022/radio-group.mjs.map +1 -1
  66. package/select/fesm2022/select.mjs +42 -42
  67. package/select/fesm2022/select.mjs.map +1 -1
  68. package/separator/README.md +64 -0
  69. package/separator/fesm2022/separator.mjs +46 -0
  70. package/separator/fesm2022/separator.mjs.map +1 -0
  71. package/separator/index.d.ts +19 -0
  72. package/sonner/fesm2022/sonner.mjs +9 -9
  73. package/sonner/fesm2022/sonner.mjs.map +1 -1
  74. package/spinner/fesm2022/spinner.mjs +10 -10
  75. package/spinner/fesm2022/spinner.mjs.map +1 -1
  76. package/switch/fesm2022/switch.mjs +13 -13
  77. package/switch/fesm2022/switch.mjs.map +1 -1
  78. package/tabs/fesm2022/tabs.mjs +27 -27
  79. package/tabs/fesm2022/tabs.mjs.map +1 -1
  80. package/tooltip/fesm2022/tooltip.mjs +10 -10
  81. package/utils/fesm2022/utils.mjs +2 -2
  82. package/utils/fesm2022/utils.mjs.map +1 -1
  83. package/utils/index.d.ts +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.mjs","sources":["../../../projects/calendar/src/lib/calendar.ts","../../../projects/calendar/src/lib/calendar-multi.ts","../../../projects/calendar/src/lib/calendar-range.ts","../../../projects/calendar/src/public-api.ts","../../../projects/calendar/src/calendar.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n numberAttribute,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport {\n BrnCalendar,\n BrnCalendarCell,\n BrnCalendarCellButton,\n BrnCalendarGrid,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeek,\n BrnCalendarWeekday,\n injectBrnCalendarI18n,\n Weekday,\n} from '@spartan-ng/brain/calendar';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { buttonVariants } from '@egose/shadcn-theme-ng/button';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'hlm-calendar',\n imports: [\n BrnCalendar,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeekday,\n BrnCalendarWeek,\n BrnCalendarCellButton,\n BrnCalendarCell,\n BrnCalendarGrid,\n NgIcon,\n HlmIcon,\n ],\n viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n template: `\n <div\n brnCalendar\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled()\"\n [(date)]=\"date\"\n [dateDisabled]=\"dateDisabled()\"\n [weekStartsOn]=\"weekStartsOn()\"\n [defaultFocusedDate]=\"defaultFocusedDate()\"\n [class]=\"_computedCalenderClass()\"\n >\n <div class=\"tw:inline-flex tw:flex-col tw:space-y-4\">\n <!-- Header -->\n <div class=\"tw:space-y-4\">\n <div class=\"tw:relative tw:flex tw:items-center tw:justify-center tw:pt-1\">\n <div brnCalendarHeader class=\"tw:text-sm tw:font-medium\">\n {{ _heading() }}\n </div>\n\n <div class=\"tw:flex tw:items-center tw:space-x-1\">\n <button\n brnCalendarPreviousButton\n class=\"tw:focus-visible:ring-ring tw:hover:bg-secondary tw:hover:text-secondary-foreground tw:text-popover-foreground tw:absolute tw:left-1 tw:inline-flex tw:size-8 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronLeft\" size=\"sm\" />\n </button>\n\n <button\n brnCalendarNextButton\n class=\"tw:focus-visible:ring-ring tw:hover:bg-secondary tw:hover:text-secondary-foreground tw:text-popover-foreground tw:absolute tw:right-1 tw:inline-flex tw:size-8 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronRight\" size=\"sm\" />\n </button>\n </div>\n </div>\n </div>\n\n <table class=\"tw:w-full tw:border-collapse tw:space-y-1\" brnCalendarGrid>\n <thead>\n <tr class=\"tw:flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"tw:text-muted-foreground tw:w-8 tw:rounded-md tw:text-[0.8rem] tw:font-normal\"\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=\"tw:mt-2 tw:flex tw:w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"tw:data-[selected]:data-[outside]:bg-secondary/50 tw:data-[selected]:bg-secondary tw:relative tw:size-8 tw:p-0 tw:text-center tw:text-sm tw:focus-within:relative tw:focus-within:z-20 tw:first:data-[selected]:rounded-l-md tw:last:data-[selected]:rounded-r-md tw:[&:has([aria-selected].day-range-end)]:rounded-r-md\"\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 </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmCalendar<T> {\n public readonly calendarClass = input<ClassValue>('');\n\n protected readonly _computedCalenderClass = computed(() =>\n hlm('tw:rounded-md tw:border tw:p-3', this.calendarClass()),\n );\n\n /** Access the calendar i18n */\n protected readonly _i18n = injectBrnCalendarI18n();\n\n /** Access the date time adapter */\n protected readonly _dateAdapter = injectDateAdapter<T>();\n\n /** The minimum date that can be selected.*/\n public readonly min = input<T>();\n\n /** The maximum date that can be selected. */\n public readonly max = input<T>();\n\n /** Determine if the date picker is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** The selected value. */\n public readonly date = model<T>();\n\n /** Whether a specific date is disabled. */\n public readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n /** The day the week starts on */\n public readonly weekStartsOn = input<Weekday, NumberInput>(undefined, {\n transform: (v: unknown) => numberAttribute(v) as Weekday,\n });\n\n /** The default focused date. */\n public readonly defaultFocusedDate = input<T>();\n\n /** Access the calendar directive */\n private readonly _calendar = viewChild.required(BrnCalendar);\n\n /** Get the heading for the current month and year */\n protected readonly _heading = computed(() =>\n this._i18n\n .config()\n .formatHeader(\n this._dateAdapter.getMonth(this._calendar().focusedDate()),\n this._dateAdapter.getYear(this._calendar().focusedDate()),\n ),\n );\n\n protected readonly _btnClass = hlm(\n buttonVariants({ variant: 'ghost' }),\n 'tw:size-8 tw:p-0 tw:font-normal tw:aria-selected:opacity-100',\n 'tw:data-[outside]:text-muted-foreground tw:data-[outside]:aria-selected:bg-secondary/50 tw:data-[outside]:aria-selected:text-muted-foreground tw:data-[outside]:opacity-50 tw:data-[outside]:aria-selected:opacity-30',\n 'tw:data-[today]:bg-secondary tw:data-[today]:text-secondary-foreground',\n 'tw:data-[selected]:bg-primary tw:data-[selected]:text-primary-foreground tw:data-[selected]:hover:bg-primary tw:data-[selected]:focus:bg-primary tw:data-[selected]:focus:text-primary-foreground',\n 'tw:data-[disabled]:text-muted-foreground tw:data-[disabled]:opacity-50',\n );\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n numberAttribute,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport {\n BrnCalendarCell,\n BrnCalendarCellButton,\n BrnCalendarGrid,\n BrnCalendarHeader,\n BrnCalendarMulti,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeek,\n BrnCalendarWeekday,\n injectBrnCalendarI18n,\n Weekday,\n} from '@spartan-ng/brain/calendar';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { buttonVariants } from '@egose/shadcn-theme-ng/button';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'hlm-calendar-multi',\n imports: [\n BrnCalendarMulti,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeekday,\n BrnCalendarWeek,\n BrnCalendarCellButton,\n BrnCalendarCell,\n BrnCalendarGrid,\n NgIcon,\n HlmIcon,\n ],\n viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n template: `\n <div\n brnCalendarMulti\n [min]=\"min()\"\n [max]=\"max()\"\n [minSelection]=\"minSelection()\"\n [maxSelection]=\"maxSelection()\"\n [disabled]=\"disabled()\"\n [(date)]=\"date\"\n [dateDisabled]=\"dateDisabled()\"\n [weekStartsOn]=\"weekStartsOn()\"\n [defaultFocusedDate]=\"defaultFocusedDate()\"\n [class]=\"_computedCalenderClass()\"\n >\n <div class=\"tw:inline-flex tw:flex-col space-y-4\">\n <!-- Header -->\n <div class=\"tw:space-y-4\">\n <div class=\"tw:relative tw:flex tw:items-center tw:justify-center pt-1\">\n <div brnCalendarHeader class=\"tw:text-sm tw:font-medium\">\n {{ _heading() }}\n </div>\n\n <div class=\"tw:flex items-center tw:space-x-1\">\n <button\n brnCalendarPreviousButton\n class=\"tw:ring-offset-background tw:focus-visible:ring-ring tw:border-input tw:hover:bg-accent tw:hover:text-accent-foreground tw:absolute tw:left-1 tw:inline-flex tw:h-7 tw:w-7 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:border tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:opacity-50 tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronLeft\" size=\"sm\" />\n </button>\n\n <button\n brnCalendarNextButton\n class=\"tw:ring-offset-background tw:focus-visible:ring-ring tw:border-input tw:hover:bg-accent tw:hover:text-accent-foreground tw:absolute tw:right-1 tw:inline-flex tw:h-7 tw:w-7 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:border tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:opacity-50 tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronRight\" size=\"sm\" />\n </button>\n </div>\n </div>\n </div>\n\n <table class=\"tw:w-full tw:border-collapse tw:space-y-1\" brnCalendarGrid>\n <thead>\n <tr class=\"tw:flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"tw:text-muted-foreground tw:w-8 tw:rounded-md tw:text-[0.8rem] tw:font-normal\"\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=\"tw:mt-2 tw:flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"tw:data-[selected]:data-[outside]:bg-accent/50 tw:data-[selected]:bg-accent tw:relative tw:h-8 tw:w-8 tw:p-0 tw:text-center tw:text-sm tw:focus-within:relative tw:focus-within:z-20 tw:first:data-[selected]:rounded-l-md tw:last:data-[selected]:rounded-r-md tw:[&:has([aria-selected].day-range-end)]:rounded-r-md\"\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 </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmCalendarMulti<T> {\n public readonly calendarClass = input<ClassValue>('');\n\n protected readonly _computedCalenderClass = computed(() => hlm('tw:rounded-md tw:border p-3', this.calendarClass()));\n\n /** Access the calendar i18n */\n protected readonly _i18n = injectBrnCalendarI18n();\n\n /** Access the date time adapter */\n protected readonly _dateAdapter = injectDateAdapter<T>();\n\n /** The minimum date that can be selected.*/\n public readonly min = input<T>();\n\n /** The maximum date that can be selected. */\n public readonly max = input<T>();\n\n /** The minimum selectable dates. */\n public readonly minSelection = input<number, NumberInput>(undefined, {\n transform: numberAttribute,\n });\n\n /** The maximum selectable dates. */\n public readonly maxSelection = input<number, NumberInput>(undefined, {\n transform: numberAttribute,\n });\n\n /** Determine if the date picker is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** The selected value. */\n public readonly date = model<T[]>();\n\n /** Whether a specific date is disabled. */\n public readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n /** The day the week starts on */\n public readonly weekStartsOn = input<Weekday, NumberInput>(undefined, {\n transform: (v: unknown) => numberAttribute(v) as Weekday,\n });\n\n /** The default focused date. */\n public readonly defaultFocusedDate = input<T>();\n\n /** Access the calendar directive */\n private readonly _calendar = viewChild.required(BrnCalendarMulti);\n\n /** Get the heading for the current month and year */\n protected readonly _heading = computed(() =>\n this._i18n\n .config()\n .formatHeader(\n this._dateAdapter.getMonth(this._calendar().focusedDate()),\n this._dateAdapter.getYear(this._calendar().focusedDate()),\n ),\n );\n\n protected readonly _btnClass = hlm(\n buttonVariants({ variant: 'ghost' }),\n 'tw:size-8 tw:p-0 tw:font-normal tw:aria-selected:opacity-100',\n 'tw:data-[outside]:text-muted-foreground tw:data-[outside]:aria-selected:bg-accent/50 tw:data-[outside]:aria-selected:text-muted-foreground tw:data-[outside]:opacity-50 tw:data-[outside]:aria-selected:opacity-30',\n 'tw:data-[today]:bg-accent tw:data-[today]:text-accent-foreground',\n 'tw:data-[selected]:bg-primary tw:data-[selected]:text-primary-foreground tw:data-[selected]:hover:bg-primary tw:data-[selected]:hover:text-primary-foreground tw:data-[selected]:focus:bg-primary tw:data-[selected]:focus:text-primary-foreground',\n 'tw:data-[disabled]:text-muted-foreground tw:data-[disabled]:opacity-50',\n );\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n numberAttribute,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport {\n BrnCalendarCell,\n BrnCalendarCellButton,\n BrnCalendarGrid,\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarRange,\n BrnCalendarWeek,\n BrnCalendarWeekday,\n injectBrnCalendarI18n,\n Weekday,\n} from '@spartan-ng/brain/calendar';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { buttonVariants } from '@egose/shadcn-theme-ng/button';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { hlm } from '@egose/shadcn-theme-ng/utils';\nimport type { ClassValue } from 'clsx';\n\n@Component({\n selector: 'hlm-calendar-range',\n imports: [\n BrnCalendarHeader,\n BrnCalendarNextButton,\n BrnCalendarPreviousButton,\n BrnCalendarWeekday,\n BrnCalendarWeek,\n BrnCalendarCellButton,\n BrnCalendarCell,\n BrnCalendarGrid,\n NgIcon,\n HlmIcon,\n BrnCalendarRange,\n ],\n viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n template: `\n <div\n brnCalendarRange\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled()\"\n [(startDate)]=\"startDate\"\n [(endDate)]=\"endDate\"\n [dateDisabled]=\"dateDisabled()\"\n [weekStartsOn]=\"weekStartsOn()\"\n [defaultFocusedDate]=\"defaultFocusedDate()\"\n [class]=\"_computedCalenderClass()\"\n >\n <div class=\"tw:inline-flex tw:flex-col tw:space-y-4\">\n <!-- Header -->\n <div class=\"tw:space-y-4\">\n <div class=\"tw:relative tw:flex tw:items-center tw:justify-center tw:pt-1\">\n <div brnCalendarHeader class=\"tw:text-sm tw:font-medium\">\n {{ _heading() }}\n </div>\n\n <div class=\"tw:flex tw:items-center tw:space-x-1\">\n <button\n brnCalendarPreviousButton\n class=\"tw:ring-offset-background tw:focus-visible:ring-ring tw:border-input tw:hover:bg-accent tw:hover:text-accent-foreground tw:absolute tw:left-1 tw:inline-flex tw:h-7 tw:w-7 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:border tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:opacity-50 tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronLeft\" size=\"sm\" />\n </button>\n\n <button\n brnCalendarNextButton\n class=\"tw:ring-offset-background tw:focus-visible:ring-ring tw:border-input tw:hover:bg-accent tw:hover:text-accent-foreground tw:absolute tw:right-1 tw:inline-flex tw:h-7 tw:w-7 tw:items-center tw:justify-center tw:whitespace-nowrap tw:rounded-md tw:border tw:bg-transparent tw:p-0 tw:text-sm tw:font-medium tw:opacity-50 tw:transition-colors tw:hover:opacity-100 tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50\"\n >\n <ng-icon hlm name=\"lucideChevronRight\" size=\"sm\" />\n </button>\n </div>\n </div>\n </div>\n\n <table class=\"tw:w-full tw:border-collapse tw:space-y-1\" brnCalendarGrid>\n <thead>\n <tr class=\"tw:flex\">\n <th\n *brnCalendarWeekday=\"let weekday\"\n scope=\"col\"\n class=\"tw:text-muted-foreground tw:w-8 tw:rounded-md tw:text-[0.8rem] tw:font-normal\"\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=\"tw:mt-2 tw:flex w-full\">\n @for (date of week; track _dateAdapter.getTime(date)) {\n <td\n brnCalendarCell\n class=\"tw:data-[selected]:data-[outside]:bg-accent/50 tw:data-[selected]:bg-accent tw:relative tw:h-8 tw:w-8 tw:p-0 tw:text-center tw:text-sm tw:focus-within:relative tw:focus-within:z-20 tw:first:data-[selected]:rounded-l-md tw:last:data-[selected]:rounded-r-md tw:[&:has([aria-selected].day-range-end)]:rounded-r-md\"\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 </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HlmCalendarRange<T> {\n public readonly calendarClass = input<ClassValue>('');\n\n protected readonly _computedCalenderClass = computed(() => hlm('tw:rounded-md tw:border p-3', this.calendarClass()));\n\n /** Access the calendar i18n */\n protected readonly _i18n = injectBrnCalendarI18n();\n\n /** Access the date time adapter */\n protected readonly _dateAdapter = injectDateAdapter<T>();\n\n /** The minimum date that can be selected.*/\n public readonly min = input<T>();\n\n /** The maximum date that can be selected. */\n public readonly max = input<T>();\n\n /** Determine if the date picker is disabled. */\n public readonly disabled = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** The start date of the range. */\n public readonly startDate = model<T>();\n\n /** The end date of the range. */\n public readonly endDate = model<T>();\n\n /** Whether a specific date is disabled. */\n public readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n /** The day the week starts on */\n public readonly weekStartsOn = input<Weekday, NumberInput>(undefined, {\n transform: (v: unknown) => numberAttribute(v) as Weekday,\n });\n\n /** The default focused date. */\n public readonly defaultFocusedDate = input<T>();\n\n /** Access the calendar directive */\n private readonly _calendar = viewChild.required(BrnCalendarRange);\n\n /** Get the heading for the current month and year */\n protected readonly _heading = computed(() =>\n this._i18n\n .config()\n .formatHeader(\n this._dateAdapter.getMonth(this._calendar().focusedDate()),\n this._dateAdapter.getYear(this._calendar().focusedDate()),\n ),\n );\n\n protected readonly _btnClass = hlm(\n buttonVariants({ variant: 'ghost' }),\n 'tw:size-8 tw:p-0 tw:font-normal tw:aria-selected:opacity-100',\n 'tw:data-[outside]:text-muted-foreground tw:data-[outside]:aria-selected:text-muted-foreground',\n 'tw:data-[today]:bg-accent tw:data-[today]:text-accent-foreground',\n 'tw:data-[selected]:bg-primary tw:data-[selected]:text-primary-foreground tw:data-[selected]:focus:bg-primary tw:data-[selected]:focus:text-primary-foreground',\n 'tw:data-[disabled]:text-muted-foreground tw:data-[disabled]:opacity-50',\n 'tw:data-[range-start]:rounded-l-md',\n 'tw:data-[range-end]:rounded-r-md',\n 'tw:data-[range-between]:bg-accent tw:data-[range-between]:text-accent-foreground tw:data-[range-between]:rounded-none',\n );\n}\n","/*\n * Public API Surface of calendar\n */\n\nimport { NgModule } from '@angular/core';\nimport { HlmCalendar } from './lib/calendar';\nimport { HlmCalendarMulti } from './lib/calendar-multi';\nimport { HlmCalendarRange } from './lib/calendar-range';\n\nexport * from './lib/calendar';\nexport * from './lib/calendar-multi';\nexport * from './lib/calendar-range';\n\nexport const HlmCalendarImports = [HlmCalendar, HlmCalendarMulti, HlmCalendarRange] as const;\n\n@NgModule({\n imports: [...HlmCalendarImports],\n exports: [...HlmCalendarImports],\n})\nexport class HlmCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAwHa,WAAW,CAAA;AACN,IAAA,aAAa,GAAG,KAAK,CAAa,EAAE,yDAAC;AAElC,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MACnD,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,kEAC5D;;IAGkB,KAAK,GAAG,qBAAqB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAK;;IAGxC,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC3D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADkC;AAC7D,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAA,CAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGjB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAuB,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAClE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY,EAAA,CAAA,GAAA,CADY;YACpE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY;AACzD,SAAA,CAAA,CAAA,CAAC;;IAGc,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG9B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;;IAGzC,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC;AACF,SAAA,MAAM;AACN,SAAA,YAAY,CACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,EAC1D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAC1D,oDACJ;IAEkB,SAAS,GAAG,GAAG,CAChC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACpC,8DAA8D,EAC9D,uNAAuN,EACvN,wEAAwE,EACxE,mMAAmM,EACnM,wEAAwE,CACzE;uGA1DU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuC0B,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/GjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlFC,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,yBAAyB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,OAAO,gEAEM,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAyE7D,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxFvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,iBAAiB;wBACjB,qBAAqB;wBACrB,yBAAyB;wBACzB,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,MAAM;wBACN,OAAO;AACR,qBAAA;oBACD,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqET,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCGY,gBAAgB,CAAA;AACX,IAAA,aAAa,GAAG,KAAK,CAAa,EAAE,yDAAC;AAElC,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,kEAAC;;IAGjG,KAAK,GAAG,qBAAqB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAK;;IAGxC,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,YAAY,GAAG,KAAK,CAAsB,SAAS,gDACjE,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CADyC;AACnE,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAA,CAAA,CAAC;;IAGc,YAAY,GAAG,KAAK,CAAsB,SAAS,gDACjE,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CADyC;AACnE,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAA,CAAA,CAAC;;IAGc,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC3D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADkC;AAC7D,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAA,CAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;;IAGnB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAuB,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAClE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY,EAAA,CAAA,GAAA,CADY;YACpE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY;AACzD,SAAA,CAAA,CAAA,CAAC;;IAGc,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG9B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;;IAG9C,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC;AACF,SAAA,MAAM;AACN,SAAA,YAAY,CACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,EAC1D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAC1D,oDACJ;IAEkB,SAAS,GAAG,GAAG,CAChC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACpC,8DAA8D,EAC9D,oNAAoN,EACpN,kEAAkE,EAClE,oPAAoP,EACpP,wEAAwE,CACzE;uGAlEU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA+CqB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzHtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApFC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,yBAAyB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,OAAO,gEAEM,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA2E7D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA1F5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,iBAAiB;wBACjB,qBAAqB;wBACrB,yBAAyB;wBACzB,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,MAAM;wBACN,OAAO;AACR,qBAAA;oBACD,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuET,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCAY,gBAAgB,CAAA;AACX,IAAA,aAAa,GAAG,KAAK,CAAa,EAAE,yDAAC;AAElC,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,kEAAC;;IAGjG,KAAK,GAAG,qBAAqB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAK;;IAGxC,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGhB,QAAQ,GAAG,KAAK,CAAwB,KAAK,4CAC3D,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADkC;AAC7D,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAA,CAAA,CAAC;;IAGc,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGtB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;IAGpB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,wDAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAuB,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAClE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY,EAAA,CAAA,GAAA,CADY;YACpE,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY;AACzD,SAAA,CAAA,CAAA,CAAC;;IAGc,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAK;;AAG9B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;;IAG9C,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC;AACF,SAAA,MAAM;AACN,SAAA,YAAY,CACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,EAC1D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAC1D,oDACJ;AAEkB,IAAA,SAAS,GAAG,GAAG,CAChC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACpC,8DAA8D,EAC9D,+FAA+F,EAC/F,kEAAkE,EAClE,+JAA+J,EAC/J,wEAAwE,EACxE,oCAAoC,EACpC,kCAAkC,EAClC,uHAAuH,CACxH;uGA9DU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwCqB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjHtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAnFC,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,yBAAyB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,OAAO,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,qNAEH,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA0E7D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzF5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,qBAAqB;wBACrB,yBAAyB;wBACzB,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,MAAM;wBACN,OAAO;wBACP,gBAAgB;AACjB,qBAAA;oBACD,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACxHD;;AAEG;AAWI,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB;MAMrE,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjB,iBAAiB,EAAA,OAAA,EAAA,CANK,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAA/C,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA;AAMrE,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHf,kBAAkB,CAAA,EAAA,CAAA;;2FAGpB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AACjC,iBAAA;;;AClBD;;AAEG;;;;"}
@@ -0,0 +1,111 @@
1
+ import * as _spartan_ng_brain_date_time from '@spartan-ng/brain/date-time';
2
+ import * as _spartan_ng_brain_calendar from '@spartan-ng/brain/calendar';
3
+ import { Weekday } from '@spartan-ng/brain/calendar';
4
+ import * as _angular_core from '@angular/core';
5
+ import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
6
+ import { ClassValue } from 'clsx';
7
+
8
+ declare class HlmCalendar<T> {
9
+ readonly calendarClass: _angular_core.InputSignal<ClassValue>;
10
+ protected readonly _computedCalenderClass: _angular_core.Signal<string>;
11
+ /** Access the calendar i18n */
12
+ protected readonly _i18n: _spartan_ng_brain_calendar.BrnCalendarI18nService;
13
+ /** Access the date time adapter */
14
+ protected readonly _dateAdapter: _spartan_ng_brain_date_time.BrnDateAdapter<T>;
15
+ /** The minimum date that can be selected.*/
16
+ readonly min: _angular_core.InputSignal<T | undefined>;
17
+ /** The maximum date that can be selected. */
18
+ readonly max: _angular_core.InputSignal<T | undefined>;
19
+ /** Determine if the date picker is disabled. */
20
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
21
+ /** The selected value. */
22
+ readonly date: _angular_core.ModelSignal<T | undefined>;
23
+ /** Whether a specific date is disabled. */
24
+ readonly dateDisabled: _angular_core.InputSignal<(date: T) => boolean>;
25
+ /** The day the week starts on */
26
+ readonly weekStartsOn: _angular_core.InputSignalWithTransform<Weekday | undefined, NumberInput>;
27
+ /** The default focused date. */
28
+ readonly defaultFocusedDate: _angular_core.InputSignal<T | undefined>;
29
+ /** Access the calendar directive */
30
+ private readonly _calendar;
31
+ /** Get the heading for the current month and year */
32
+ protected readonly _heading: _angular_core.Signal<string>;
33
+ protected readonly _btnClass: string;
34
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCalendar<any>, never>;
35
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HlmCalendar<any>, "hlm-calendar", never, { "calendarClass": { "alias": "calendarClass"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "dateDisabled": { "alias": "dateDisabled"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "defaultFocusedDate": { "alias": "defaultFocusedDate"; "required": false; "isSignal": true; }; }, { "date": "dateChange"; }, never, never, true, never>;
36
+ }
37
+
38
+ declare class HlmCalendarMulti<T> {
39
+ readonly calendarClass: _angular_core.InputSignal<ClassValue>;
40
+ protected readonly _computedCalenderClass: _angular_core.Signal<string>;
41
+ /** Access the calendar i18n */
42
+ protected readonly _i18n: _spartan_ng_brain_calendar.BrnCalendarI18nService;
43
+ /** Access the date time adapter */
44
+ protected readonly _dateAdapter: _spartan_ng_brain_date_time.BrnDateAdapter<T>;
45
+ /** The minimum date that can be selected.*/
46
+ readonly min: _angular_core.InputSignal<T | undefined>;
47
+ /** The maximum date that can be selected. */
48
+ readonly max: _angular_core.InputSignal<T | undefined>;
49
+ /** The minimum selectable dates. */
50
+ readonly minSelection: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
51
+ /** The maximum selectable dates. */
52
+ readonly maxSelection: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
53
+ /** Determine if the date picker is disabled. */
54
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
55
+ /** The selected value. */
56
+ readonly date: _angular_core.ModelSignal<T[] | undefined>;
57
+ /** Whether a specific date is disabled. */
58
+ readonly dateDisabled: _angular_core.InputSignal<(date: T) => boolean>;
59
+ /** The day the week starts on */
60
+ readonly weekStartsOn: _angular_core.InputSignalWithTransform<Weekday | undefined, NumberInput>;
61
+ /** The default focused date. */
62
+ readonly defaultFocusedDate: _angular_core.InputSignal<T | undefined>;
63
+ /** Access the calendar directive */
64
+ private readonly _calendar;
65
+ /** Get the heading for the current month and year */
66
+ protected readonly _heading: _angular_core.Signal<string>;
67
+ protected readonly _btnClass: string;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCalendarMulti<any>, never>;
69
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HlmCalendarMulti<any>, "hlm-calendar-multi", never, { "calendarClass": { "alias": "calendarClass"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "minSelection": { "alias": "minSelection"; "required": false; "isSignal": true; }; "maxSelection": { "alias": "maxSelection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "dateDisabled": { "alias": "dateDisabled"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "defaultFocusedDate": { "alias": "defaultFocusedDate"; "required": false; "isSignal": true; }; }, { "date": "dateChange"; }, never, never, true, never>;
70
+ }
71
+
72
+ declare class HlmCalendarRange<T> {
73
+ readonly calendarClass: _angular_core.InputSignal<ClassValue>;
74
+ protected readonly _computedCalenderClass: _angular_core.Signal<string>;
75
+ /** Access the calendar i18n */
76
+ protected readonly _i18n: _spartan_ng_brain_calendar.BrnCalendarI18nService;
77
+ /** Access the date time adapter */
78
+ protected readonly _dateAdapter: _spartan_ng_brain_date_time.BrnDateAdapter<T>;
79
+ /** The minimum date that can be selected.*/
80
+ readonly min: _angular_core.InputSignal<T | undefined>;
81
+ /** The maximum date that can be selected. */
82
+ readonly max: _angular_core.InputSignal<T | undefined>;
83
+ /** Determine if the date picker is disabled. */
84
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
85
+ /** The start date of the range. */
86
+ readonly startDate: _angular_core.ModelSignal<T | undefined>;
87
+ /** The end date of the range. */
88
+ readonly endDate: _angular_core.ModelSignal<T | undefined>;
89
+ /** Whether a specific date is disabled. */
90
+ readonly dateDisabled: _angular_core.InputSignal<(date: T) => boolean>;
91
+ /** The day the week starts on */
92
+ readonly weekStartsOn: _angular_core.InputSignalWithTransform<Weekday | undefined, NumberInput>;
93
+ /** The default focused date. */
94
+ readonly defaultFocusedDate: _angular_core.InputSignal<T | undefined>;
95
+ /** Access the calendar directive */
96
+ private readonly _calendar;
97
+ /** Get the heading for the current month and year */
98
+ protected readonly _heading: _angular_core.Signal<string>;
99
+ protected readonly _btnClass: string;
100
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCalendarRange<any>, never>;
101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HlmCalendarRange<any>, "hlm-calendar-range", never, { "calendarClass": { "alias": "calendarClass"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "startDate": { "alias": "startDate"; "required": false; "isSignal": true; }; "endDate": { "alias": "endDate"; "required": false; "isSignal": true; }; "dateDisabled": { "alias": "dateDisabled"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "defaultFocusedDate": { "alias": "defaultFocusedDate"; "required": false; "isSignal": true; }; }, { "startDate": "startDateChange"; "endDate": "endDateChange"; }, never, never, true, never>;
102
+ }
103
+
104
+ declare const HlmCalendarImports: readonly [typeof HlmCalendar, typeof HlmCalendarMulti, typeof HlmCalendarRange];
105
+ declare class HlmCalendarModule {
106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlmCalendarModule, never>;
107
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<HlmCalendarModule, never, [typeof HlmCalendar, typeof HlmCalendarMulti, typeof HlmCalendarRange], [typeof HlmCalendar, typeof HlmCalendarMulti, typeof HlmCalendarRange]>;
108
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<HlmCalendarModule>;
109
+ }
110
+
111
+ export { HlmCalendar, HlmCalendarImports, HlmCalendarModule, HlmCalendarMulti, HlmCalendarRange };
@@ -0,0 +1,64 @@
1
+ # ConfirmationDialog
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build confirmation-dialog
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/confirmation-dialog
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,93 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Component, Injectable } from '@angular/core';
3
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
4
+ import * as i1 from '@egose/shadcn-theme-ng/dialog';
5
+ import { HlmDialogDescription, HlmDialogHeader, HlmDialogFooter, HlmDialogTitle } from '@egose/shadcn-theme-ng/dialog';
6
+ import { BrnDialogRef, injectBrnDialogContext } from '@spartan-ng/brain/dialog';
7
+ import { HlmIcon } from '@egose/shadcn-theme-ng/icon';
8
+ import { NgIcon, provideIcons } from '@ng-icons/core';
9
+ import { lucideTriangleAlert } from '@ng-icons/lucide';
10
+
11
+ class EgConfirmationDiaglog {
12
+ _dialogRef = inject(BrnDialogRef);
13
+ _dialogContext = injectBrnDialogContext();
14
+ _title = this._dialogContext.title || 'Are you absolutely sure?';
15
+ _description = this._dialogContext.description || 'This action cannot be undone.';
16
+ close(confirm) {
17
+ this._dialogRef.close(confirm);
18
+ }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgConfirmationDiaglog, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.1", type: EgConfirmationDiaglog, isStandalone: true, selector: "ng-component", host: { classAttribute: "tw:w-full tw:p-1" }, providers: [provideIcons({ lucideTriangleAlert })], ngImport: i0, template: `
21
+ <hlm-dialog-header>
22
+ <div class="tw:flex tw:items-center tw:gap-1">
23
+ <ng-icon hlm hlmAlertIcon name="lucideTriangleAlert" size="base" />
24
+ <h3 hlmDialogTitle class="tw:text-xl">{{ _title }}</h3>
25
+ </div>
26
+ <p hlmDialogDescription class="tw:text-base tw:text-gray-700">{{ _description }}</p>
27
+ </hlm-dialog-header>
28
+
29
+ <hlm-dialog-footer class="tw:mt-4">
30
+ <button hlmButton variant="secondary" appearance="outline" (click)="close(false)">Cancel</button>
31
+ <button hlmButton variant="danger" (click)="close(true)">Confirm</button>
32
+ </hlm-dialog-footer>
33
+ `, isInline: true, dependencies: [{ kind: "component", type: HlmButton, selector: "button[hlmButton], a[hlmButton]", inputs: ["variant", "size", "appearance", "loading", "icon", "iconPosition", "userClass", "spinnerUserClass", "disabled", "type"] }, { kind: "directive", type: HlmDialogDescription, selector: "[hlmDialogDescription]", inputs: ["class"] }, { kind: "component", type: HlmDialogHeader, selector: "hlm-dialog-header", inputs: ["class"] }, { kind: "component", type: HlmDialogFooter, selector: "hlm-dialog-footer", inputs: ["class"] }, { kind: "directive", type: HlmDialogTitle, selector: "[hlmDialogTitle]", inputs: ["class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }] });
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgConfirmationDiaglog, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ imports: [HlmButton, HlmDialogDescription, HlmDialogHeader, HlmDialogFooter, HlmDialogTitle, NgIcon, HlmIcon],
39
+ standalone: true,
40
+ providers: [provideIcons({ lucideTriangleAlert })],
41
+ template: `
42
+ <hlm-dialog-header>
43
+ <div class="tw:flex tw:items-center tw:gap-1">
44
+ <ng-icon hlm hlmAlertIcon name="lucideTriangleAlert" size="base" />
45
+ <h3 hlmDialogTitle class="tw:text-xl">{{ _title }}</h3>
46
+ </div>
47
+ <p hlmDialogDescription class="tw:text-base tw:text-gray-700">{{ _description }}</p>
48
+ </hlm-dialog-header>
49
+
50
+ <hlm-dialog-footer class="tw:mt-4">
51
+ <button hlmButton variant="secondary" appearance="outline" (click)="close(false)">Cancel</button>
52
+ <button hlmButton variant="danger" (click)="close(true)">Confirm</button>
53
+ </hlm-dialog-footer>
54
+ `,
55
+ host: {
56
+ class: 'tw:w-full tw:p-1',
57
+ },
58
+ }]
59
+ }] });
60
+ class EgConfirmationDialogService {
61
+ hlmDialogService;
62
+ constructor(hlmDialogService) {
63
+ this.hlmDialogService = hlmDialogService;
64
+ }
65
+ showConfirmationDialog({ title, description }) {
66
+ return new Promise((resolve) => {
67
+ const dialogRef = this.hlmDialogService.open(EgConfirmationDiaglog, {
68
+ context: { title, description },
69
+ contentClass: '',
70
+ });
71
+ dialogRef.closed$.subscribe((confirm) => {
72
+ resolve(confirm ?? false);
73
+ });
74
+ });
75
+ }
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgConfirmationDialogService, deps: [{ token: i1.HlmDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgConfirmationDialogService, providedIn: 'root' });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: EgConfirmationDialogService, decorators: [{
80
+ type: Injectable,
81
+ args: [{ providedIn: 'root' }]
82
+ }], ctorParameters: () => [{ type: i1.HlmDialogService }] });
83
+
84
+ /*
85
+ * Public API Surface of confirmation-dialog
86
+ */
87
+
88
+ /**
89
+ * Generated bundle index. Do not edit.
90
+ */
91
+
92
+ export { EgConfirmationDiaglog, EgConfirmationDialogService };
93
+ //# sourceMappingURL=confirmation-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmation-dialog.mjs","sources":["../../../projects/confirmation-dialog/src/lib/confirmation-dialog.ts","../../../projects/confirmation-dialog/src/public-api.ts","../../../projects/confirmation-dialog/src/confirmation-dialog.ts"],"sourcesContent":["import { Component, inject, Injectable } from '@angular/core';\nimport { HlmButton } from '@egose/shadcn-theme-ng/button';\n\nimport {\n HlmDialog,\n HlmDialogDescription,\n HlmDialogContent,\n HlmDialogHeader,\n HlmDialogFooter,\n HlmDialogService,\n HlmDialogTitle,\n} from '@egose/shadcn-theme-ng/dialog';\nimport { BrnDialogRef, injectBrnDialogContext } from '@spartan-ng/brain/dialog';\nimport { HlmIcon } from '@egose/shadcn-theme-ng/icon';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideTriangleAlert } from '@ng-icons/lucide';\n\n@Component({\n imports: [HlmButton, HlmDialogDescription, HlmDialogHeader, HlmDialogFooter, HlmDialogTitle, NgIcon, HlmIcon],\n standalone: true,\n providers: [provideIcons({ lucideTriangleAlert })],\n template: `\n <hlm-dialog-header>\n <div class=\"tw:flex tw:items-center tw:gap-1\">\n <ng-icon hlm hlmAlertIcon name=\"lucideTriangleAlert\" size=\"base\" />\n <h3 hlmDialogTitle class=\"tw:text-xl\">{{ _title }}</h3>\n </div>\n <p hlmDialogDescription class=\"tw:text-base tw:text-gray-700\">{{ _description }}</p>\n </hlm-dialog-header>\n\n <hlm-dialog-footer class=\"tw:mt-4\">\n <button hlmButton variant=\"secondary\" appearance=\"outline\" (click)=\"close(false)\">Cancel</button>\n <button hlmButton variant=\"danger\" (click)=\"close(true)\">Confirm</button>\n </hlm-dialog-footer>\n `,\n host: {\n class: 'tw:w-full tw:p-1',\n },\n})\nexport class EgConfirmationDiaglog {\n private readonly _dialogRef = inject<BrnDialogRef<boolean>>(BrnDialogRef);\n private readonly _dialogContext = injectBrnDialogContext<{ title: string; description: string }>();\n\n protected readonly _title = this._dialogContext.title || 'Are you absolutely sure?';\n protected readonly _description = this._dialogContext.description || 'This action cannot be undone.';\n\n public close(confirm: boolean) {\n this._dialogRef.close(confirm);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class EgConfirmationDialogService {\n constructor(private hlmDialogService: HlmDialogService) {}\n\n showConfirmationDialog({ title, description }: { title: string; description: string }) {\n return new Promise<boolean>((resolve) => {\n const dialogRef = this.hlmDialogService.open(EgConfirmationDiaglog, {\n context: { title, description },\n contentClass: '',\n });\n\n dialogRef.closed$.subscribe((confirm) => {\n resolve(confirm ?? false);\n });\n });\n }\n}\n","/*\n * Public API Surface of confirmation-dialog\n */\n\nexport * from './lib/confirmation-dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { HlmDialogService } from '@egose/shadcn-theme-ng/dialog';
2
+ import * as i0 from '@angular/core';
3
+
4
+ declare class EgConfirmationDiaglog {
5
+ private readonly _dialogRef;
6
+ private readonly _dialogContext;
7
+ protected readonly _title: string;
8
+ protected readonly _description: string;
9
+ close(confirm: boolean): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<EgConfirmationDiaglog, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<EgConfirmationDiaglog, "ng-component", never, {}, {}, never, never, true, never>;
12
+ }
13
+ declare class EgConfirmationDialogService {
14
+ private hlmDialogService;
15
+ constructor(hlmDialogService: HlmDialogService);
16
+ showConfirmationDialog({ title, description }: {
17
+ title: string;
18
+ description: string;
19
+ }): Promise<boolean>;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<EgConfirmationDialogService, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<EgConfirmationDialogService>;
22
+ }
23
+
24
+ export { EgConfirmationDiaglog, EgConfirmationDialogService };
@@ -0,0 +1,64 @@
1
+ # DatePicker
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build date-picker
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/date-picker
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.