@m3e/web 2.1.2 → 2.2.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 (193) hide show
  1. package/README.md +3 -0
  2. package/dist/all.js +2783 -354
  3. package/dist/all.js.map +1 -1
  4. package/dist/all.min.js +77 -41
  5. package/dist/all.min.js.map +1 -1
  6. package/dist/app-bar.js +14 -7
  7. package/dist/app-bar.js.map +1 -1
  8. package/dist/app-bar.min.js +1 -1
  9. package/dist/app-bar.min.js.map +1 -1
  10. package/dist/autocomplete.js +24 -26
  11. package/dist/autocomplete.js.map +1 -1
  12. package/dist/autocomplete.min.js +1 -1
  13. package/dist/autocomplete.min.js.map +1 -1
  14. package/dist/bottom-sheet.js +8 -27
  15. package/dist/bottom-sheet.js.map +1 -1
  16. package/dist/bottom-sheet.min.js +1 -1
  17. package/dist/bottom-sheet.min.js.map +1 -1
  18. package/dist/calendar.js +1082 -0
  19. package/dist/calendar.js.map +1 -0
  20. package/dist/calendar.min.js +43 -0
  21. package/dist/calendar.min.js.map +1 -0
  22. package/dist/card.js +4 -2
  23. package/dist/card.js.map +1 -1
  24. package/dist/card.min.js +1 -1
  25. package/dist/card.min.js.map +1 -1
  26. package/dist/chips.js +2 -6
  27. package/dist/chips.js.map +1 -1
  28. package/dist/chips.min.js +1 -1
  29. package/dist/chips.min.js.map +1 -1
  30. package/dist/core-a11y.js +23 -9
  31. package/dist/core-a11y.js.map +1 -1
  32. package/dist/core-a11y.min.js +4 -4
  33. package/dist/core-a11y.min.js.map +1 -1
  34. package/dist/core-anchoring.js +135 -15
  35. package/dist/core-anchoring.js.map +1 -1
  36. package/dist/core-anchoring.min.js +1 -1
  37. package/dist/core-anchoring.min.js.map +1 -1
  38. package/dist/core.js +101 -1
  39. package/dist/core.js.map +1 -1
  40. package/dist/core.min.js +1 -1
  41. package/dist/core.min.js.map +1 -1
  42. package/dist/css-custom-data.json +962 -462
  43. package/dist/custom-elements.json +16838 -12546
  44. package/dist/datepicker.js +552 -0
  45. package/dist/datepicker.js.map +1 -0
  46. package/dist/datepicker.min.js +7 -0
  47. package/dist/datepicker.min.js.map +1 -0
  48. package/dist/fab-menu.js +1 -1
  49. package/dist/fab-menu.js.map +1 -1
  50. package/dist/fab-menu.min.js +1 -1
  51. package/dist/fab-menu.min.js.map +1 -1
  52. package/dist/form-field.js +2 -6
  53. package/dist/form-field.js.map +1 -1
  54. package/dist/form-field.min.js +3 -3
  55. package/dist/form-field.min.js.map +1 -1
  56. package/dist/html-custom-data.json +546 -180
  57. package/dist/menu.js +3 -7
  58. package/dist/menu.js.map +1 -1
  59. package/dist/menu.min.js +1 -1
  60. package/dist/menu.min.js.map +1 -1
  61. package/dist/nav-menu.js +3 -11
  62. package/dist/nav-menu.js.map +1 -1
  63. package/dist/nav-menu.min.js +1 -1
  64. package/dist/nav-menu.min.js.map +1 -1
  65. package/dist/nav-rail.js +2 -6
  66. package/dist/nav-rail.js.map +1 -1
  67. package/dist/nav-rail.min.js +1 -1
  68. package/dist/nav-rail.min.js.map +1 -1
  69. package/dist/option.js +5 -6
  70. package/dist/option.js.map +1 -1
  71. package/dist/option.min.js +1 -1
  72. package/dist/option.min.js.map +1 -1
  73. package/dist/paginator.js +2 -2
  74. package/dist/paginator.js.map +1 -1
  75. package/dist/paginator.min.js +1 -1
  76. package/dist/paginator.min.js.map +1 -1
  77. package/dist/search.js +805 -0
  78. package/dist/search.js.map +1 -0
  79. package/dist/search.min.js +7 -0
  80. package/dist/search.min.js.map +1 -0
  81. package/dist/select.js +5 -16
  82. package/dist/select.js.map +1 -1
  83. package/dist/select.min.js +1 -1
  84. package/dist/select.min.js.map +1 -1
  85. package/dist/snackbar.js +2 -6
  86. package/dist/snackbar.js.map +1 -1
  87. package/dist/snackbar.min.js +1 -1
  88. package/dist/snackbar.min.js.map +1 -1
  89. package/dist/src/all.d.ts +3 -0
  90. package/dist/src/all.d.ts.map +1 -1
  91. package/dist/src/app-bar/AppBarElement.d.ts +6 -4
  92. package/dist/src/app-bar/AppBarElement.d.ts.map +1 -1
  93. package/dist/src/autocomplete/AutocompleteElement.d.ts +2 -2
  94. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  95. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts +12 -0
  96. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts.map +1 -0
  97. package/dist/src/autocomplete/QueryEventDetail.d.ts +3 -8
  98. package/dist/src/autocomplete/QueryEventDetail.d.ts.map +1 -1
  99. package/dist/src/autocomplete/index.d.ts +1 -0
  100. package/dist/src/autocomplete/index.d.ts.map +1 -1
  101. package/dist/src/bottom-sheet/BottomSheetElement.d.ts.map +1 -1
  102. package/dist/src/calendar/CalendarElement.d.ts +213 -0
  103. package/dist/src/calendar/CalendarElement.d.ts.map +1 -0
  104. package/dist/src/calendar/CalendarView.d.ts +3 -0
  105. package/dist/src/calendar/CalendarView.d.ts.map +1 -0
  106. package/dist/src/calendar/CalendarViewElementBase.d.ts +28 -0
  107. package/dist/src/calendar/CalendarViewElementBase.d.ts.map +1 -0
  108. package/dist/src/calendar/MonthViewElement.d.ts +36 -0
  109. package/dist/src/calendar/MonthViewElement.d.ts.map +1 -0
  110. package/dist/src/calendar/MultiYearViewElement.d.ts +27 -0
  111. package/dist/src/calendar/MultiYearViewElement.d.ts.map +1 -0
  112. package/dist/src/calendar/YearViewElement.d.ts +27 -0
  113. package/dist/src/calendar/YearViewElement.d.ts.map +1 -0
  114. package/dist/src/calendar/index.d.ts +7 -0
  115. package/dist/src/calendar/index.d.ts.map +1 -0
  116. package/dist/src/calendar/utils.d.ts +24 -0
  117. package/dist/src/calendar/utils.d.ts.map +1 -0
  118. package/dist/src/card/CardElement.d.ts.map +1 -1
  119. package/dist/src/chips/InputChipSetElement.d.ts.map +1 -1
  120. package/dist/src/core/a11y/FocusTrapElement.d.ts.map +1 -1
  121. package/dist/src/core/a11y/InteractivityChecker.d.ts.map +1 -1
  122. package/dist/src/core/anchoring/AnchorOptions.d.ts +1 -1
  123. package/dist/src/core/anchoring/AnchorOptions.d.ts.map +1 -1
  124. package/dist/src/core/anchoring/FloatingPanelElement.d.ts +18 -3
  125. package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
  126. package/dist/src/core/anchoring/positionAnchor.d.ts.map +1 -1
  127. package/dist/src/core/shared/controllers/InertController.d.ts +19 -0
  128. package/dist/src/core/shared/controllers/InertController.d.ts.map +1 -0
  129. package/dist/src/core/shared/controllers/index.d.ts +1 -0
  130. package/dist/src/core/shared/controllers/index.d.ts.map +1 -1
  131. package/dist/src/core/shared/converters/dateConverter.d.ts +4 -0
  132. package/dist/src/core/shared/converters/dateConverter.d.ts.map +1 -0
  133. package/dist/src/core/shared/converters/index.d.ts +1 -0
  134. package/dist/src/core/shared/converters/index.d.ts.map +1 -1
  135. package/dist/src/core/shared/utils/index.d.ts +1 -0
  136. package/dist/src/core/shared/utils/index.d.ts.map +1 -1
  137. package/dist/src/core/shared/utils/registerStyleSheet.d.ts +7 -0
  138. package/dist/src/core/shared/utils/registerStyleSheet.d.ts.map +1 -0
  139. package/dist/src/datepicker/DatepickerElement.d.ts +237 -0
  140. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -0
  141. package/dist/src/datepicker/DatepickerToggleElement.d.ts +21 -0
  142. package/dist/src/datepicker/DatepickerToggleElement.d.ts.map +1 -0
  143. package/dist/src/datepicker/DatepickerVariant.d.ts +3 -0
  144. package/dist/src/datepicker/DatepickerVariant.d.ts.map +1 -0
  145. package/dist/src/datepicker/index.d.ts +4 -0
  146. package/dist/src/datepicker/index.d.ts.map +1 -0
  147. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  148. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  149. package/dist/src/nav-menu/NavMenuElement.d.ts.map +1 -1
  150. package/dist/src/nav-menu/NavMenuItemElement.d.ts.map +1 -1
  151. package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
  152. package/dist/src/option/OptionElement.d.ts.map +1 -1
  153. package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
  154. package/dist/src/paginator/PageEventDetail.d.ts +6 -11
  155. package/dist/src/paginator/PageEventDetail.d.ts.map +1 -1
  156. package/dist/src/paginator/PaginatorElement.d.ts +3 -3
  157. package/dist/src/paginator/PaginatorElement.d.ts.map +1 -1
  158. package/dist/src/paginator/PaginatorPageEventDetail.d.ts +12 -0
  159. package/dist/src/paginator/PaginatorPageEventDetail.d.ts.map +1 -0
  160. package/dist/src/paginator/index.d.ts +1 -0
  161. package/dist/src/paginator/index.d.ts.map +1 -1
  162. package/dist/src/search/SearchBarElement.d.ts +92 -0
  163. package/dist/src/search/SearchBarElement.d.ts.map +1 -0
  164. package/dist/src/search/SearchViewElement.d.ts +146 -0
  165. package/dist/src/search/SearchViewElement.d.ts.map +1 -0
  166. package/dist/src/search/SearchViewMode.d.ts +3 -0
  167. package/dist/src/search/SearchViewMode.d.ts.map +1 -0
  168. package/dist/src/search/SearchViewQueryEventDetail.d.ts +12 -0
  169. package/dist/src/search/SearchViewQueryEventDetail.d.ts.map +1 -0
  170. package/dist/src/search/index.d.ts +5 -0
  171. package/dist/src/search/index.d.ts.map +1 -0
  172. package/dist/src/search/styles/SearchBarStyle.d.ts +12 -0
  173. package/dist/src/search/styles/SearchBarStyle.d.ts.map +1 -0
  174. package/dist/src/search/styles/SearchBarToken.d.ts +27 -0
  175. package/dist/src/search/styles/SearchBarToken.d.ts.map +1 -0
  176. package/dist/src/search/styles/SearchViewStyle.d.ts +12 -0
  177. package/dist/src/search/styles/SearchViewStyle.d.ts.map +1 -0
  178. package/dist/src/search/styles/SearchViewToken.d.ts +26 -0
  179. package/dist/src/search/styles/SearchViewToken.d.ts.map +1 -0
  180. package/dist/src/search/styles/index.d.ts +3 -0
  181. package/dist/src/search/styles/index.d.ts.map +1 -0
  182. package/dist/src/select/SelectElement.d.ts.map +1 -1
  183. package/dist/src/snackbar/SnackbarElement.d.ts.map +1 -1
  184. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  185. package/dist/stepper.js +2 -6
  186. package/dist/stepper.js.map +1 -1
  187. package/dist/stepper.min.js +1 -1
  188. package/dist/stepper.min.js.map +1 -1
  189. package/dist/tooltip.js +1 -1
  190. package/dist/tooltip.js.map +1 -1
  191. package/dist/tooltip.min.js +1 -1
  192. package/dist/tooltip.min.js.map +1 -1
  193. package/package.json +16 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.min.js","sources":["../../src/calendar/utils.ts","../../src/calendar/CalendarViewElementBase.ts","../../src/calendar/MonthViewElement.ts","../../src/calendar/MultiYearViewElement.ts","../../src/calendar/YearViewElement.ts","../../src/calendar/CalendarElement.ts"],"sourcesContent":["/** @private */\r\nfunction createDateWithOverflow(year: number, month: number, day: number): Date {\r\n const date = new Date();\r\n date.setFullYear(year, month, day);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n}\r\n\r\n/** @private */\r\nfunction getStartingYear(minDate: Date | null, maxDate: Date | null): number {\r\n if (maxDate) {\r\n return maxDate.getFullYear() - YEARS_PER_PAGE + 1;\r\n } else if (minDate) {\r\n return minDate.getFullYear();\r\n }\r\n return 0;\r\n}\r\n\r\n/** @private */\r\nfunction euclideanModulo(a: number, b: number): number {\r\n return ((a % b) + b) % b;\r\n}\r\n\r\n/** @internal */\r\nexport function addCalendarDays(date: Date, days: number): Date {\r\n return createDateWithOverflow(date.getFullYear(), date.getMonth(), date.getDate() + days);\r\n}\r\n\r\n/** @internal */\r\nexport function addCalendarMonths(date: Date, months: number): Date {\r\n let newDate = createDateWithOverflow(date.getFullYear(), date.getMonth() + months, date.getDate());\r\n if (newDate.getMonth() != (((date.getMonth() + months) % 12) + 12) % 12) {\r\n newDate = createDateWithOverflow(newDate.getFullYear(), newDate.getMonth(), 0);\r\n }\r\n return newDate;\r\n}\r\n\r\n/** @internal */\r\nexport function addCalendarYears(date: Date, years: number): Date {\r\n return addCalendarMonths(date, years * 12);\r\n}\r\n\r\n/** @internal */\r\nexport function getNumDaysInMonth(date: Date): number {\r\n return createDateWithOverflow(date.getFullYear(), date.getMonth() + 1, 0).getDate();\r\n}\r\n\r\n/** @internal */\r\nexport function compareDate(first: Date, second: Date): number {\r\n return (\r\n first.getFullYear() - second.getFullYear() ||\r\n first.getMonth() - second.getMonth() ||\r\n first.getDate() - second.getDate()\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function sameDate(first: Date | null, second: Date | null): boolean {\r\n return first && second ? compareDate(first, second) == 0 : first == second;\r\n}\r\n\r\n/** @internal */\r\nexport function getActiveOffset(activeDate: Date, minDate: Date | null, maxDate: Date | null): number {\r\n return euclideanModulo(activeDate.getFullYear() - getStartingYear(minDate, maxDate), YEARS_PER_PAGE);\r\n}\r\n\r\n/** @internal */\r\nexport function minYearOfPage(activeDate: Date, minDate: Date | null, maxDate: Date | null): number {\r\n return activeDate.getFullYear() - getActiveOffset(activeDate, minDate, maxDate);\r\n}\r\n\r\n/** @internal */\r\nexport function maxYearOfPage(activeDate: Date, minDate: Date | null, maxDate: Date | null): number {\r\n return minYearOfPage(activeDate, minDate, maxDate) + YEARS_PER_PAGE - 1;\r\n}\r\n\r\n/** @internal */\r\nexport function clampDate(date: Date, minDate: Date | null, maxDate: Date | null): Date {\r\n if (minDate && compareDate(date, minDate) < 0) return minDate;\r\n if (maxDate && compareDate(date, maxDate) > 0) return maxDate;\r\n return date;\r\n}\r\n\r\n/** @internal */ export const YEARS_PER_PAGE = 15;\r\n/** @internal */ export const YEARS_PER_ROW = 3;\r\n/** @internal */ export const MONTHS_PER_ROW = 4;\r\n","import { css, CSSResultGroup, LitElement } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport { dateConverter, DesignToken, focusWhenReady } from \"@m3e/web/core\";\r\n\r\nimport { clampDate, sameDate } from \"./utils\";\r\n\r\n/**\r\n * A base implementation for a view in a calendar. This class must be inherited.\r\n * @internal\r\n */\r\nexport abstract class CalendarViewElementBase extends LitElement {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: inline-block;\r\n user-select: none;\r\n vertical-align: top;\r\n }\r\n .visually-hidden {\r\n position: absolute;\r\n appearance: none;\r\n visibility: hidden;\r\n border: none;\r\n outline: none;\r\n overflow: hidden;\r\n left: 0;\r\n height: 1px;\r\n width: 1px;\r\n margin: -1px;\r\n padding: 0;\r\n white-space: nowrap;\r\n }\r\n table {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n width: calc(3rem * 7);\r\n }\r\n td,\r\n th {\r\n font: inherit;\r\n text-align: center;\r\n padding: unset;\r\n }\r\n td {\r\n box-sizing: border-box;\r\n height: 3rem;\r\n padding: 0.25rem;\r\n position: relative;\r\n }\r\n .item,\r\n .item > span {\r\n position: relative;\r\n }\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: inherit;\r\n outline: none;\r\n width: 100%;\r\n height: 100%;\r\n border-radius: ${DesignToken.shape.corner.full};\r\n }\r\n .item:not([aria-disabled]) {\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n .touch {\r\n position: absolute;\r\n height: 3rem;\r\n width: 3rem;\r\n margin: auto;\r\n }\r\n td:not(:has(.item[aria-disabled])).selected {\r\n color: var(--m3e-calendar-item-selected-color, ${DesignToken.color.onPrimary});\r\n --m3e-ripple-color: var(--m3e-calendar-item-selected-ripple-color, ${DesignToken.color.onPrimary});\r\n --m3e-state-layer-hover-color: var(--m3e-calendar-item-selected-hover-color, ${DesignToken.color.onPrimary});\r\n --m3e-state-layer-focus-color: var(--m3e-calendar-item-selected-focus-color, ${DesignToken.color.onPrimary});\r\n }\r\n td:not(:has(.item[aria-disabled])).selected .state-layer {\r\n background-color: var(--m3e-calendar-item-selected-container-color, ${DesignToken.color.primary});\r\n }\r\n td.current:not(.selected):not(.special):not(.range-start):not(.range-end) {\r\n color: var(--m3e-calendar-item-current-outline-color, ${DesignToken.color.primary});\r\n }\r\n td.current:not(.selected):not(.special):not(.range-start):not(.range-end) .state-layer {\r\n outline-style: solid;\r\n outline-offset: -1px;\r\n outline-width: var(--m3e-calendar-item-current-outline-thickness, 1px);\r\n outline-color: var(--m3e-calendar-item-current-outline-color, ${DesignToken.color.primary});\r\n }\r\n td:has(.item[aria-disabled]) {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-calendar-item-disabled-color, ${DesignToken.color.onSurface})\r\n var(--m3e-calendar-item-disabled-color-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n @media (forced-colors: active) {\r\n td:not(:has(.item[aria-disabled])).selected {\r\n forced-color-adjust: none;\r\n color: ButtonFace;\r\n }\r\n td:not(:has(.item[aria-disabled])).selected .state-layer {\r\n background-color: ButtonText;\r\n }\r\n td:has(.item[aria-disabled]) {\r\n color: GrayText;\r\n }\r\n td.current:not(.selected):not(.special):not(.range-start):not(.range-end) {\r\n color: ButtonText;\r\n }\r\n td.current:not(.selected):not(.special):not(.range-start):not(.range-end) .state-layer {\r\n border-color: ButtonText;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ @query(\".active > .item\") private readonly _activeItem?: HTMLElement;\r\n\r\n /** Today's date. */\r\n @property({ converter: dateConverter }) today: Date = new Date();\r\n\r\n /** The selected date. */\r\n @property({ converter: dateConverter }) date: Date | null = null;\r\n\r\n /** The active date. */\r\n @property({ attribute: \"active-date\", converter: dateConverter }) activeDate: Date = new Date();\r\n\r\n /** The minimum date that can be selected. */\r\n @property({ attribute: \"min-date\", converter: dateConverter }) minDate: Date | null = null;\r\n\r\n /** The maximum date that can be selected. */\r\n @property({ attribute: \"max-date\", converter: dateConverter }) maxDate: Date | null = null;\r\n\r\n /**\r\n * Asynchronously focuses the active date.\r\n * @returns {Promise<void>} A promise that resolves after the active date has been focused.\r\n */\r\n async focusActiveCell(): Promise<void> {\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this._activeItem) {\r\n await focusWhenReady(this._activeItem);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected _changeActiveDate(activeDate: Date): void {\r\n activeDate = clampDate(activeDate, this.minDate, this.maxDate);\r\n if (!sameDate(activeDate, this.activeDate)) {\r\n this._activeItem?.style.setProperty(\"--m3e-state-layer-duration\", \"0ms\");\r\n this._activeItem?.blur();\r\n this._activeItem?.style.removeProperty(\"--m3e-state-layer-duration\");\r\n\r\n this.activeDate = activeDate;\r\n this.dispatchEvent(new Event(\"active-change\", { bubbles: false }));\r\n }\r\n }\r\n}\r\n","/**\r\n * Adapted from Angular Material Datepicker\r\n * Source: https://github.com/angular/components/blob/main/src/material/datepicker/month-view.ts\r\n *\r\n * @license MIT\r\n * Copyright (c) 2025 Google LLC\r\n * See LICENSE file in the project root for full license text.\r\n */\r\n\r\nimport { css, CSSResultGroup, html, nothing } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport { customElement, dateConverter, DesignToken } from \"@m3e/web/core\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { CalendarViewElementBase } from \"./CalendarViewElementBase\";\r\nimport {\r\n addCalendarDays,\r\n addCalendarMonths,\r\n addCalendarYears,\r\n clampDate,\r\n compareDate,\r\n getNumDaysInMonth,\r\n sameDate,\r\n} from \"./utils\";\r\n\r\n/**\r\n * An internal component used to display a single month in a calendar.\r\n * @internal\r\n */\r\n@customElement(\"m3e-month-view\")\r\nexport class M3eMonthViewElement extends CalendarViewElementBase {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [\r\n CalendarViewElementBase.styles,\r\n css`\r\n thead {\r\n font-size: var(--m3e-calendar-weekday-font-size, ${DesignToken.typescale.standard.title.small.fontSize});\r\n font-weight: var(--m3e-calendar-weekday-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight});\r\n line-height: var(--m3e-calendar-weekday-line-height, ${DesignToken.typescale.standard.title.small.lineHeight});\r\n letter-spacing: var(--m3e-calendar-weekday-tracking, ${DesignToken.typescale.standard.title.small.tracking});\r\n }\r\n th {\r\n height: 1.5rem;\r\n padding-block-start: 1.875rem;\r\n padding-block-end: 1rem;\r\n }\r\n tbody {\r\n font-size: var(--m3e-calendar-date-font-size, ${DesignToken.typescale.standard.body.medium.fontSize});\r\n font-weight: var(--m3e-calendar-date-font-weight, ${DesignToken.typescale.standard.body.medium.fontWeight});\r\n line-height: var(--m3e-calendar-date-line-height, ${DesignToken.typescale.standard.body.medium.lineHeight});\r\n letter-spacing: var(--m3e-calendar-date-tracking, ${DesignToken.typescale.standard.body.medium.tracking});\r\n }\r\n td:not(:has(.item[aria-disabled])):not(.selected):not(.range-start):not(.range-end).special {\r\n color: var(--m3e-calendar-item-special-color, ${DesignToken.color.onTertiaryContainer});\r\n --m3e-ripple-color: var(--m3e-calendar-item-special-ripple-color, ${DesignToken.color.onTertiaryContainer});\r\n --m3e-state-layer-hover-color: var(\r\n --m3e-calendar-item-special-hover-color,\r\n ${DesignToken.color.onTertiaryContainer}\r\n );\r\n --m3e-state-layer-focus-color: var(\r\n --m3e-calendar-item-special-focus-color,\r\n ${DesignToken.color.onTertiaryContainer}\r\n );\r\n }\r\n td:not(:has(.item[aria-disabled])):not(.selected):not(.range-start):not(.range-end).special .state-layer {\r\n background-color: var(--m3e-calendar-item-special-container-color, ${DesignToken.color.tertiaryContainer});\r\n }\r\n td:not(:has(.item[aria-disabled])).range-start,\r\n td:not(:has(.item[aria-disabled])).range-end {\r\n color: var(--m3e-calendar-item-selected-color, ${DesignToken.color.onPrimary});\r\n --m3e-ripple-color: var(--m3e-calendar-item-selected-ripple-color, ${DesignToken.color.onPrimary});\r\n }\r\n td:not(:has(.item[aria-disabled])).range-start .state-layer,\r\n td:not(:has(.item[aria-disabled])).range-end .state-layer {\r\n background-color: var(--m3e-calendar-item-selected-container-color, ${DesignToken.color.primary});\r\n }\r\n td:not(:has(.item[aria-disabled])).range::before,\r\n td:not(:has(.item[aria-disabled])).range-start-range::before,\r\n td:not(:has(.item[aria-disabled])).range-end::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0.25rem;\r\n bottom: 0.25rem;\r\n background-color: var(--m3e-calendar-range-container-color, ${DesignToken.color.primaryContainer});\r\n }\r\n td:not(:has(.item[aria-disabled])):not(.selected).range {\r\n color: var(--m3e-calendar-range-color, ${DesignToken.color.onPrimaryContainer});\r\n }\r\n td:not(:has(.item[aria-disabled])).range-start::before {\r\n inset-inline-start: 50%;\r\n width: 50%;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-end::before {\r\n inset-inline-end: 50%;\r\n width: 50%;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-start .item::after,\r\n td:not(:has(.item[aria-disabled])).range-highlight .item::after,\r\n td:not(:has(.item[aria-disabled])).range-highlight-end .item::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: calc(0px - 0.1875rem);\r\n right: calc(0px - 0.1875rem);\r\n bottom: 0;\r\n border-style: dashed;\r\n border-color: ${DesignToken.color.primary};\r\n border-width: 1px;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-start .item::after {\r\n margin-inline-start: 50%;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-end .item::after {\r\n margin-inline-end: 0.1875rem;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-start .item::after,\r\n td:not(:has(.item[aria-disabled])).range-highlight .item::after {\r\n border-inline-style: none;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-end .item::after {\r\n border-start-end-radius: ${DesignToken.shape.corner.full};\r\n border-end-end-radius: ${DesignToken.shape.corner.full};\r\n border-inline-start-style: none;\r\n }\r\n @media (forced-colors: active) {\r\n td:not(:has(.item[aria-disabled])).range-start,\r\n td:not(:has(.item[aria-disabled])).range-end {\r\n forced-color-adjust: none;\r\n color: HighlightText;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-start .state-layer,\r\n td:not(:has(.item[aria-disabled])).range-end .state-layer {\r\n background-color: Highlight;\r\n }\r\n td:not(:has(.item[aria-disabled])).range::before,\r\n td:not(:has(.item[aria-disabled])).range-start-range::before,\r\n td:not(:has(.item[aria-disabled])).range-end::before {\r\n background-color: Highlight;\r\n }\r\n td:not(:has(.item[aria-disabled])):not(.selected).range {\r\n forced-color-adjust: none;\r\n color: HighlightText;\r\n }\r\n td:not(:has(.item[aria-disabled])).range-highlight-start .item::after,\r\n td:not(:has(.item[aria-disabled])).range-highlight .item::after,\r\n td:not(:has(.item[aria-disabled])).range-highlight-end .item::after {\r\n border-color: GrayText;\r\n }\r\n }\r\n `,\r\n ];\r\n\r\n /** @internal */ _suppressFocusHighlight = true;\r\n\r\n /** Start of a date range. */\r\n @property({ attribute: \"range-start\", converter: dateConverter }) rangeStart: Date | null = null;\r\n\r\n /** End of a date range. */\r\n @property({ attribute: \"range-end\", converter: dateConverter }) rangeEnd: Date | null = null;\r\n\r\n /** A function used to determine whether a date cannot be selected. */\r\n @property({ attribute: false }) blackoutDates: ((date: Date) => boolean) | null = null;\r\n\r\n /** A function used to determine whether a date is special. */\r\n @property({ attribute: false }) specialDates: ((date: Date) => boolean) | null = null;\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const date = new Date(this.today);\r\n date.setDate(1);\r\n\r\n while (date.getDay() != 0) {\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n const weekdays = new Array<{ long: string; narrow: string; id: number }>();\r\n const narrowFormat = new Intl.DateTimeFormat(navigator.language, { weekday: \"narrow\" });\r\n const longFormat = new Intl.DateTimeFormat(navigator.language, { weekday: \"long\" });\r\n\r\n for (let i = 0; i < 7; i++) {\r\n weekdays.push({ id: i, narrow: narrowFormat.format(date), long: longFormat.format(date) });\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n const year = this.activeDate.getFullYear();\r\n const month = this.activeDate.getMonth();\r\n const firstDate = new Date(year, month, 1);\r\n const lastDate = new Date(year, month + 1, 0);\r\n const numDays = lastDate.getDate();\r\n\r\n let weeks: number[][] = [];\r\n let dayOfWeek = firstDate.getDay();\r\n\r\n for (let i = 1; i <= numDays; i++) {\r\n if (dayOfWeek === 0 || weeks.length === 0) {\r\n weeks.push([]);\r\n }\r\n weeks[weeks.length - 1].push(i);\r\n dayOfWeek = (dayOfWeek + 1) % 7;\r\n }\r\n\r\n weeks = weeks.filter((x) => !!x.length);\r\n\r\n return html`<table role=\"grid\">\r\n <thead>\r\n <tr>\r\n ${weekdays.map(\r\n (x) =>\r\n html`<th scope=\"col\">\r\n <span class=\"visually-hidden\">${x.long}</span>\r\n <div id=\"weekday-${x.id}-month-${month}\" aria-hidden=\"true\">${x.narrow}</div>\r\n <m3e-tooltip for=\"weekday-${x.id}-month-${month}\">${x.long}</m3e-tooltip>\r\n </th>`,\r\n )}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n ${weeks.map(\r\n (row, i) =>\r\n html`<tr role=\"row\">\r\n ${i === 0 && row.length < 7 ? html`<td colspan=\"${7 - row.length}\"></td>` : nothing}\r\n ${row.map((y) => this.#renderItem(new Date(year, month, y)))}\r\n ${i > 0 && row.length < 7 ? html`<td colspan=\"${7 - row.length}\"></td>` : nothing}\r\n </tr>`,\r\n )}\r\n </tbody>\r\n </table>`;\r\n }\r\n\r\n /** @private */\r\n #renderItem(value: Date): unknown {\r\n const long = new Intl.DateTimeFormat(navigator.language, {\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n }).format(value);\r\n\r\n const special = this.specialDates?.(value) ?? false;\r\n const selected = sameDate(this.date, value);\r\n const active = sameDate(this.activeDate, value);\r\n const current = sameDate(this.today, value);\r\n const disabled =\r\n (this.minDate && compareDate(value, this.minDate) < 0) ||\r\n (this.maxDate && compareDate(value, this.maxDate) > 0) ||\r\n this.blackoutDates?.(value) === true;\r\n\r\n const id = `date-${value.getMonth()}-${value.getDate()}-${value.getFullYear()}`;\r\n\r\n let range = false,\r\n rangeStart = false,\r\n rangeEnd = false,\r\n rangeStartRange = false;\r\n\r\n if (this.rangeStart) {\r\n if (!this.rangeEnd) {\r\n rangeStart = sameDate(value, this.rangeStart);\r\n } else {\r\n range = compareDate(value, this.rangeStart) > 0 && compareDate(value, this.rangeEnd) < 0;\r\n if (!range) {\r\n rangeStart = compareDate(value, this.rangeStart) >= 0 && compareDate(value, this.rangeEnd) < 0;\r\n if (!rangeStart) {\r\n rangeEnd = compareDate(value, this.rangeStart) > 0 && compareDate(value, this.rangeEnd) <= 0;\r\n } else {\r\n rangeStartRange = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return html`<td\r\n role=\"gridcell\"\r\n class=\"${classMap({\r\n current,\r\n selected,\r\n active,\r\n special,\r\n range,\r\n \"range-start\": rangeStart,\r\n \"range-start-range\": rangeStartRange,\r\n \"range-end\": rangeEnd,\r\n })}\"\r\n >\r\n <div\r\n id=\"${id}\"\r\n role=\"button\"\r\n class=\"item\"\r\n data-value=\"${value.toISOString()}\"\r\n tabindex=\"${active ? \"0\" : \"-1\"}\"\r\n aria-disabled=\"${ifDefined(disabled || undefined)}\"\r\n aria-current=\"${ifDefined(current ? \"date\" : undefined)}\"\r\n aria-pressed=\"${selected || rangeStart || rangeEnd}\"\r\n @click=\"${this.#handleItemClick}\"\r\n @mouseenter=\"${this.#handleItemMouseEnter}\"\r\n @focus=\"${this.#handleItemFocus}\"\r\n @mouseleave=\"${this.#clearRangeHighlight}\"\r\n @blur=\"${this.#clearRangeHighlight}\"\r\n @keydown=\"${this.#handleItemKeyDown}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"${id}\"></m3e-focus-ring>\r\n <m3e-state-layer class=\"state-layer\" for=\"${id}\" ?disable-hover=\"${disabled}\"></m3e-state-layer>\r\n <m3e-ripple class=\"ripple\" centered for=\"${id}\" ?disabled=\"${disabled}\"></m3e-ripple>\r\n <div class=\"touch\"></div>\r\n <span class=\"visually-hidden\">${long}</span>\r\n <span aria-hidden=\"true\">${value.getDate()}</span>\r\n </div>\r\n </td>`;\r\n }\r\n\r\n /** @private */\r\n #handleItemClick(e: Event): void {\r\n const item = e.currentTarget as HTMLElement;\r\n if (item.ariaDisabled === \"true\" || !item.dataset[\"value\"]) return;\r\n\r\n this.activeDate = new Date(item.dataset[\"value\"]);\r\n this.activeDate = clampDate(this.activeDate, this.minDate, this.maxDate);\r\n\r\n if (this.rangeStart) {\r\n if (compareDate(this.activeDate, this.rangeStart) < 0) {\r\n this.rangeStart = this.activeDate;\r\n this.rangeEnd = null;\r\n } else {\r\n this.rangeEnd = this.activeDate;\r\n }\r\n this.#clearRangeHighlight();\r\n }\r\n\r\n this.dispatchEvent(new Event(\"change\", { bubbles: false }));\r\n }\r\n\r\n /** @private */\r\n #handleItemKeyDown(e: KeyboardEvent): void {\r\n let activeDate = this.activeDate;\r\n\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n e.preventDefault();\r\n (e.currentTarget as HTMLElement).click();\r\n return;\r\n\r\n case \"ArrowLeft\":\r\n case \"Left\":\r\n activeDate = addCalendarDays(activeDate, M3eDirectionality.current === \"rtl\" ? 1 : -1);\r\n break;\r\n\r\n case \"ArrowRight\":\r\n case \"Right\":\r\n activeDate = addCalendarDays(activeDate, M3eDirectionality.current === \"rtl\" ? -1 : 1);\r\n break;\r\n\r\n case \"ArrowUp\":\r\n case \"Up\":\r\n activeDate = addCalendarDays(activeDate, -7);\r\n break;\r\n\r\n case \"ArrowDown\":\r\n case \"Down\":\r\n activeDate = addCalendarDays(activeDate, 7);\r\n break;\r\n\r\n case \"Home\":\r\n activeDate = addCalendarDays(activeDate, 1 - activeDate.getDate());\r\n break;\r\n\r\n case \"End\":\r\n activeDate = addCalendarDays(activeDate, getNumDaysInMonth(activeDate) - activeDate.getDate());\r\n break;\r\n\r\n case \"PageUp\":\r\n activeDate = e.altKey ? addCalendarYears(activeDate, -1) : addCalendarMonths(activeDate, -1);\r\n break;\r\n\r\n case \"PageDown\":\r\n activeDate = e.altKey ? addCalendarYears(activeDate, 1) : addCalendarMonths(activeDate, 1);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n this._changeActiveDate(activeDate);\r\n }\r\n\r\n /** @private */\r\n #handleItemMouseEnter(e: Event): void {\r\n this.#setRangeHighlight(e.currentTarget as HTMLElement);\r\n }\r\n\r\n /** @private */\r\n #handleItemFocus(e: Event): void {\r\n if (!this._suppressFocusHighlight) {\r\n this.#setRangeHighlight(e.currentTarget as HTMLElement);\r\n }\r\n }\r\n\r\n /** @private */\r\n #setRangeHighlight(item: HTMLElement): void {\r\n this.#clearRangeHighlight();\r\n if (this.rangeStart && item.dataset[\"value\"]) {\r\n if (compareDate(new Date(item.dataset[\"value\"]), this.rangeStart) > 0) {\r\n item.parentElement!.classList.add(\"range-highlight-end\");\r\n }\r\n for (const cell of item.closest(\"table\")?.querySelectorAll<HTMLElement>(\".item\") ?? []) {\r\n if (cell === item) break;\r\n\r\n const value = new Date(cell.dataset[\"value\"]!);\r\n if (compareDate(value, this.rangeStart) > 0) {\r\n cell.parentElement!.classList.add(\"range-highlight\");\r\n } else if (compareDate(value, this.rangeStart) >= 0) {\r\n cell.parentElement!.classList.add(\"range-highlight-start\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #clearRangeHighlight(): void {\r\n if (this.rangeStart) {\r\n this.shadowRoot\r\n ?.querySelectorAll(\".range-highlight,.range-highlight-end,.range-highlight-start\")\r\n .forEach((x) => x.classList.remove(\"range-highlight\", \"range-highlight-end\", \"range-highlight-start\"));\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-month-view\": M3eMonthViewElement;\r\n }\r\n}\r\n","/**\r\n * Adapted from Angular Material Datepicker\r\n * Source: https://github.com/angular/components/blob/main/src/material/datepicker/multi-year-view.ts\r\n *\r\n * @license MIT\r\n * Copyright (c) 2025 Google LLC\r\n * See LICENSE file in the project root for full license text.\r\n */\r\n\r\nimport { css, CSSResultGroup, html } from \"lit\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport { customElement, DesignToken } from \"@m3e/web/core\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { CalendarViewElementBase } from \"./CalendarViewElementBase\";\r\nimport { addCalendarYears, clampDate, getActiveOffset, minYearOfPage, YEARS_PER_PAGE, YEARS_PER_ROW } from \"./utils\";\r\n\r\n/**\r\n * An internal component used to display a year selector in a calendar.\r\n * @internal\r\n */\r\n@customElement(\"m3e-multi-year-view\")\r\nexport class M3eMultiYearViewElement extends CalendarViewElementBase {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [\r\n CalendarViewElementBase.styles,\r\n css`\r\n .item {\r\n height: 2.25rem;\r\n }\r\n .touch {\r\n width: 100%;\r\n }\r\n th {\r\n height: 1rem;\r\n }\r\n td {\r\n padding-inline: 1rem;\r\n }\r\n tbody {\r\n font-size: var(--m3e-calendar-item-font-size, ${DesignToken.typescale.standard.body.medium.fontSize});\r\n font-weight: var(--m3e-calendar-item-font-weight, ${DesignToken.typescale.standard.body.medium.fontWeight});\r\n line-height: var(--m3e-calendar-item-line-height, ${DesignToken.typescale.standard.body.medium.lineHeight});\r\n letter-spacing: var(--m3e-calendar-item-tracking, ${DesignToken.typescale.standard.body.medium.tracking});\r\n }\r\n `,\r\n ];\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const years = new Array<number[]>();\r\n const minYear = minYearOfPage(this.activeDate, this.minDate, this.maxDate);\r\n for (let i = 0, row: number[] = []; i < YEARS_PER_PAGE; i++) {\r\n row.push(minYear + i);\r\n if (row.length === YEARS_PER_ROW) {\r\n years.push(row);\r\n row = new Array<number>();\r\n }\r\n }\r\n\r\n return html`<table role=\"grid\">\r\n <thead aria-hidden=\"true\">\r\n <tr>\r\n <th colspan=\"${YEARS_PER_ROW}\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n ${years.map(\r\n (row) =>\r\n html`<tr role=\"row\">\r\n ${row.map((year) => this.#renderItem(year))}\r\n </tr>`,\r\n )}\r\n </tbody>\r\n </table>`;\r\n }\r\n\r\n /** @private */\r\n #renderItem(year: number): unknown {\r\n const yearFormat = new Intl.DateTimeFormat(navigator.language, { year: \"numeric\" });\r\n const active = this.activeDate.getFullYear() === year;\r\n const selected = this.date?.getFullYear() === year;\r\n const current = this.today.getFullYear() === year;\r\n const disabled =\r\n (this.minDate && year < this.minDate.getFullYear()) || (this.maxDate && year > this.maxDate.getFullYear());\r\n\r\n const id = `year-${year}`;\r\n\r\n return html`<td role=\"gridcell\" class=\"${classMap({ current, selected, active })}\">\r\n <div\r\n id=\"${id}\"\r\n class=\"item\"\r\n role=\"button\"\r\n tabindex=\"${active ? \"0\" : \"-1\"}\"\r\n data-value=\"${year}\"\r\n aria-disabled=\"${ifDefined(disabled || undefined)}\"\r\n aria-current=\"${ifDefined(current ? \"date\" : undefined)}\"\r\n aria-pressed=\"${selected}\"\r\n @click=\"${this.#handleItemClick}\"\r\n @keydown=\"${this.#handleItemKeyDown}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"${id}\"></m3e-focus-ring>\r\n <m3e-state-layer class=\"state-layer\" for=\"${id}\" ?disable-hover=\"${disabled}\"></m3e-state-layer>\r\n <m3e-ripple class=\"ripple\" for=\"${id}\" centered ?disabled=\"${disabled}\"></m3e-ripple>\r\n <div class=\"touch\"></div>\r\n <span>${yearFormat.format(new Date(year, 0, 1))}</span>\r\n </div>\r\n </td>`;\r\n }\r\n\r\n /** @private */\r\n #handleItemClick(e: Event): void {\r\n const item = e.currentTarget as HTMLElement;\r\n if (item.ariaDisabled === \"true\" || !item.dataset[\"value\"]) return;\r\n\r\n this.activeDate = new Date(this.activeDate);\r\n this.activeDate.setFullYear(Number(item.dataset[\"value\"]));\r\n this.activeDate = clampDate(this.activeDate, this.minDate, this.maxDate);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: false }));\r\n }\r\n\r\n /** @private */\r\n #handleItemKeyDown(e: KeyboardEvent): void {\r\n let activeDate = this.activeDate;\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n e.preventDefault();\r\n (e.currentTarget as HTMLElement).click();\r\n return;\r\n\r\n case \"ArrowLeft\":\r\n case \"Left\":\r\n activeDate = addCalendarYears(activeDate, M3eDirectionality.current === \"rtl\" ? 1 : -1);\r\n break;\r\n\r\n case \"ArrowRight\":\r\n case \"Right\":\r\n activeDate = addCalendarYears(activeDate, M3eDirectionality.current === \"rtl\" ? -1 : 1);\r\n break;\r\n\r\n case \"ArrowUp\":\r\n case \"Up\":\r\n activeDate = addCalendarYears(activeDate, -YEARS_PER_ROW);\r\n break;\r\n\r\n case \"ArrowDown\":\r\n case \"Down\":\r\n activeDate = addCalendarYears(activeDate, YEARS_PER_ROW);\r\n break;\r\n\r\n case \"Home\":\r\n activeDate = addCalendarYears(activeDate, -getActiveOffset(activeDate, this.minDate, this.maxDate));\r\n break;\r\n\r\n case \"End\":\r\n activeDate = addCalendarYears(\r\n activeDate,\r\n YEARS_PER_PAGE - getActiveOffset(activeDate, this.minDate, this.maxDate) - 1,\r\n );\r\n break;\r\n\r\n case \"PageUp\":\r\n activeDate = addCalendarYears(activeDate, e.altKey ? -YEARS_PER_PAGE * 10 : -YEARS_PER_PAGE);\r\n break;\r\n\r\n case \"PageDown\":\r\n activeDate = addCalendarYears(activeDate, e.altKey ? YEARS_PER_PAGE * 10 : YEARS_PER_PAGE);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n this._changeActiveDate(activeDate);\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-multi-year-view\": M3eMultiYearViewElement;\r\n }\r\n}\r\n","/**\r\n * Adapted from Angular Material Datepicker\r\n * Source: https://github.com/angular/components/blob/main/src/material/datepicker/year-view.ts\r\n *\r\n * @license MIT\r\n * Copyright (c) 2025 Google LLC\r\n * See LICENSE file in the project root for full license text.\r\n */\r\n\r\nimport { css, CSSResultGroup, html } from \"lit\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport { customElement, DesignToken } from \"@m3e/web/core\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport { CalendarViewElementBase } from \"./CalendarViewElementBase\";\r\nimport { addCalendarMonths, addCalendarYears, clampDate, MONTHS_PER_ROW } from \"./utils\";\r\n\r\n/**\r\n * An internal component used to display a single year in a calendar.\r\n * @internal\r\n */\r\n@customElement(\"m3e-year-view\")\r\nexport class M3eYearViewElement extends CalendarViewElementBase {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [\r\n CalendarViewElementBase.styles,\r\n css`\r\n .item {\r\n height: 2.25rem;\r\n }\r\n .touch {\r\n width: 100%;\r\n }\r\n th {\r\n height: 1rem;\r\n }\r\n td {\r\n padding-inline: 0.375rem;\r\n }\r\n tbody {\r\n font-size: var(--m3e-calendar-item-font-size, ${DesignToken.typescale.standard.body.medium.fontSize});\r\n font-weight: var(--m3e-calendar-item-font-weight, ${DesignToken.typescale.standard.body.medium.fontWeight});\r\n line-height: var(--m3e-calendar-item-line-height, ${DesignToken.typescale.standard.body.medium.lineHeight});\r\n letter-spacing: var(--m3e-calendar-item-tracking, ${DesignToken.typescale.standard.body.medium.tracking});\r\n }\r\n `,\r\n ];\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const months = new Array<Array<{ date: Date; long: string; narrow: string }>>();\r\n const shortFormat = new Intl.DateTimeFormat(navigator.language, { month: \"short\" });\r\n const longFormat = new Intl.DateTimeFormat(navigator.language, { month: \"long\" });\r\n const year = this.activeDate.getFullYear();\r\n\r\n for (let month = 0, row = new Array<{ date: Date; long: string; narrow: string }>(); month < 12; month++) {\r\n const date = new Date(year, month, 1);\r\n row.push({ narrow: shortFormat.format(date), long: longFormat.format(date), date: date });\r\n\r\n if (row.length == MONTHS_PER_ROW) {\r\n months.push(row);\r\n row = [];\r\n }\r\n }\r\n\r\n return html`<table role=\"grid\">\r\n <thead aria-hidden=\"true\">\r\n <tr>\r\n <th colspan=\"${MONTHS_PER_ROW}\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n ${months.map(\r\n (row) =>\r\n html`<tr role=\"row\">\r\n ${row.map((month) => this.#renderItem(month))}\r\n </tr>`,\r\n )}\r\n </tbody>\r\n </table>`;\r\n }\r\n\r\n /** @private */\r\n #renderItem(month: { date: Date; long: string; narrow: string }): unknown {\r\n const active =\r\n this.activeDate.getFullYear() === month.date.getFullYear() &&\r\n this.activeDate.getMonth() === month.date.getMonth();\r\n\r\n const selected =\r\n this.date?.getFullYear() === month.date.getFullYear() && this.date?.getMonth() === month.date.getMonth();\r\n\r\n const current =\r\n this.today.getFullYear() === month.date.getFullYear() && this.today.getMonth() === month.date.getMonth();\r\n\r\n const disabled =\r\n (this.minDate &&\r\n (month.date.getFullYear() < this.minDate.getFullYear() ||\r\n (month.date.getFullYear() === this.minDate.getFullYear() &&\r\n month.date.getMonth() < this.minDate.getMonth()))) ||\r\n (this.maxDate &&\r\n (month.date.getFullYear() > this.maxDate.getFullYear() ||\r\n (month.date.getFullYear() === this.maxDate.getFullYear() &&\r\n month.date.getMonth() > this.maxDate.getMonth())));\r\n\r\n const id = `month-${month.date.getMonth()}`;\r\n\r\n return html`<td role=\"gridcell\" class=\"${classMap({ current, selected, active })}\">\r\n <div\r\n id=\"${id}\"\r\n class=\"item\"\r\n role=\"button\"\r\n tabindex=\"${active ? \"0\" : \"-1\"}\"\r\n data-value=\"${month.date.toISOString()}\"\r\n aria-disabled=\"${ifDefined(disabled || undefined)}\"\r\n aria-current=\"${ifDefined(current ? \"date\" : undefined)}\"\r\n aria-pressed=\"${selected}\"\r\n @click=\"${this.#handleItemClick}\"\r\n @keydown=\"${this.#handleItemKeyDown}\"\r\n >\r\n <m3e-focus-ring class=\"focus-ring\" for=\"${id}\"></m3e-focus-ring>\r\n <m3e-state-layer class=\"state-layer\" for=\"${id}\" ?disable-hover=\"${disabled}\"></m3e-state-layer>\r\n <m3e-ripple class=\"ripple\" centered for=\"${id}\" ?disabled=\"${disabled}\"></m3e-ripple>\r\n <div class=\"touch\"></div>\r\n <span class=\"visually-hidden\">${month.long}</span>\r\n <span aria-hidden=\"true\">${month.narrow}</span>\r\n </div>\r\n </td>`;\r\n }\r\n\r\n /** @private */\r\n #handleItemClick(e: Event): void {\r\n const item = e.currentTarget as HTMLElement;\r\n if (item.ariaDisabled === \"true\" || !item.dataset[\"value\"]) return;\r\n\r\n this.activeDate = clampDate(new Date(item.dataset[\"value\"]), this.minDate, this.maxDate);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: false }));\r\n }\r\n\r\n /** @private */\r\n #handleItemKeyDown(e: KeyboardEvent): void {\r\n let activeDate = this.activeDate;\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n e.preventDefault();\r\n (e.currentTarget as HTMLElement).click();\r\n return;\r\n\r\n case \"ArrowLeft\":\r\n case \"Left\":\r\n activeDate = addCalendarMonths(activeDate, M3eDirectionality.current === \"rtl\" ? 1 : -1);\r\n break;\r\n\r\n case \"ArrowRight\":\r\n case \"Right\":\r\n activeDate = addCalendarMonths(activeDate, M3eDirectionality.current === \"rtl\" ? -1 : 1);\r\n break;\r\n\r\n case \"ArrowUp\":\r\n case \"Up\":\r\n activeDate = addCalendarMonths(activeDate, -4);\r\n break;\r\n\r\n case \"ArrowDown\":\r\n case \"Down\":\r\n activeDate = addCalendarMonths(activeDate, 4);\r\n break;\r\n\r\n case \"Home\":\r\n activeDate = addCalendarMonths(activeDate, -activeDate.getMonth());\r\n break;\r\n\r\n case \"End\":\r\n activeDate = addCalendarMonths(activeDate, 11 - activeDate.getMonth());\r\n break;\r\n\r\n case \"PageUp\":\r\n activeDate = addCalendarYears(activeDate, e.altKey ? -10 : -1);\r\n break;\r\n\r\n case \"PageDown\":\r\n activeDate = addCalendarYears(activeDate, e.altKey ? 10 : 1);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n this._changeActiveDate(activeDate);\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-year-view\": M3eYearViewElement;\r\n }\r\n}\r\n","/**\r\n * Adapted from Angular Material Datepicker\r\n * Source: https://github.com/angular/components/blob/main/src/material/datepicker/calendar.ts\r\n *\r\n * @license MIT\r\n * Copyright (c) 2025 Google LLC\r\n * See LICENSE file in the project root for full license text.\r\n */\r\n\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport { customElement, dateConverter, DesignToken, prefersReducedMotion } from \"@m3e/web/core\";\r\nimport { M3eDirectionality } from \"@m3e/web/core/bidi\";\r\n\r\nimport \"@m3e/web/button\";\r\nimport \"@m3e/web/icon-button\";\r\nimport \"@m3e/web/tooltip\";\r\n\r\nimport { CalendarView } from \"./CalendarView\";\r\nimport { CalendarViewElementBase } from \"./CalendarViewElementBase\";\r\nimport { M3eMonthViewElement } from \"./MonthViewElement\";\r\nimport { maxYearOfPage, minYearOfPage } from \"./utils\";\r\n\r\nimport \"./MonthViewElement\";\r\nimport \"./MultiYearViewElement\";\r\nimport \"./YearViewElement\";\r\n\r\n/**\r\n * A calendar used to select a date.\r\n *\r\n * @description\r\n * The `m3e-calendar` component provides structured navigation and selection across\r\n * month, year, and multi‑year views. It supports single‑date and range selection,\r\n * applies disabled rules including minimum, maximum, and blackout constraints, and\r\n * provides styling hooks for special date states.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-calendar`. In this example, a calendar is displayed\r\n * with a selected date.\r\n *\r\n * ```html\r\n * <m3e-calendar date=\"2025-12-13\"></m3e-calendar>\r\n * ```\r\n *\r\n * @tag m3e-calendar\r\n *\r\n * @slot header - Renders the header of the calendar.\r\n *\r\n * @attr date - The selected date.\r\n * @attr max-date - The maximum date that can be selected.\r\n * @attr min-date - The minimum date that can be selected.\r\n * @attr range-end - End of a date range.\r\n * @attr range-start - Start of a date range.\r\n * @attr start-at - A date specifying the period (month or year) to start the calendar in.\r\n * @attr start-view - The initial view used to select a date.\r\n * @attr previous-month-label - The accessible label given to the button used to move to the previous month.\r\n * @attr next-month-label - The accessible label given to the button used to move to the next month.\r\n * @attr previous-year-label - The accessible label given to the button used to move to the previous year.\r\n * @attr next-year-label - The accessible label given to the button used to move to the next year.\r\n * @attr previous-multi-year-label - The accessible label given to the button used to move to the previous 24 years.\r\n * @attr next-multi-year-label - The accessible label given to the button used to move to the next 24 years.\r\n *\r\n * @fires change - Emitted when the selected date changes.\r\n *\r\n * @cssprop --m3e-calendar-container-color - Background color of the container surface.\r\n * @cssprop --m3e-calendar-container-elevation - Elevation shadow applied to the container surface.\r\n * @cssprop --m3e-calendar-container-shape - Corner radius of the container surface.\r\n * @cssprop --m3e-calendar-padding - Padding applied to the calendar header and body.\r\n * @cssprop --m3e-calendar-period-button-text-color - Text color used for the period‑navigation buttons in the header.\r\n * @cssprop --m3e-calendar-weekday-font-size - Font size of weekday labels in month view.\r\n * @cssprop --m3e-calendar-weekday-font-weight - Font weight of weekday labels in month view.\r\n * @cssprop --m3e-calendar-weekday-line-height - Line height of weekday labels in month view.\r\n * @cssprop --m3e-calendar-weekday-tracking - Letter spacing of weekday labels in month view.\r\n * @cssprop --m3e-calendar-date-font-size - Font size of date cells in month view.\r\n * @cssprop --m3e-calendar-date-font-weight - Font weight of date cells in month view.\r\n * @cssprop --m3e-calendar-date-line-height - Line height of date cells in month view.\r\n * @cssprop --m3e-calendar-date-tracking - Letter spacing of date cells in month view.\r\n * @cssprop --m3e-calendar-item-font-size - Font size of items in year and multi‑year views.\r\n * @cssprop --m3e-calendar-item-font-weight - Font weight of items in year and multi‑year views.\r\n * @cssprop --m3e-calendar-item-line-height - Line height of items in year and multi‑year views.\r\n * @cssprop --m3e-calendar-item-tracking - Letter spacing of items in year and multi‑year views.\r\n * @cssprop --m3e-calendar-item-selected-color - Text color for selected date items.\r\n * @cssprop --m3e-calendar-item-selected-container-color - Background color for selected date items.\r\n * @cssprop --m3e-calendar-item-selected-ripple-color - Ripple color used when interacting with selected date items.\r\n * @cssprop --m3e-calendar-item-selected-hover-color - Hover color used when interacting with selected date items.\r\n * @cssprop --m3e-calendar-item-selected-focus-color - Focus color used when interacting with selected date items.\r\n * @cssprop --m3e-calendar-item-current-outline-thickness - Outline thickness used to indicate the current date.\r\n * @cssprop --m3e-calendar-item-current-outline-color - Outline color used to indicate the current date.\r\n * @cssprop --m3e-calendar-item-special-color - Text color for dates marked as special.\r\n * @cssprop --m3e-calendar-item-special-container-color - Background color for dates marked as special.\r\n * @cssprop --m3e-calendar-item-special-ripple-color - Ripple color used when interacting with dates marked as special.\r\n * @cssprop --m3e-calendar-item-special-hover-color - Hover color used when interacting with dates marked as special.\r\n * @cssprop --m3e-calendar-item-special-focus-color - Focus color used when interacting with dates marked as special.\r\n * @cssprop --m3e-calendar-range-container-color - Background color applied to the selected date range.\r\n * @cssprop --m3e-calendar-range-color - Text color for dates within a selected range.\r\n * @cssprop --m3e-calendar-item-disabled-color - Color used for disabled date items.\r\n * @cssprop --m3e-calendar-item-disabled-color-opacity - Opacity applied to the disabled item color.\r\n * @cssprop --m3e-calendar-slide-animation-duration - Duration of slide transitions between calendar views.\r\n */\r\n@customElement(\"m3e-calendar\")\r\nexport class M3eCalendarElement extends LitElement {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: inline-block;\r\n vertical-align: top;\r\n width: fit-content;\r\n height: fit-content;\r\n }\r\n .base {\r\n display: flex;\r\n flex-direction: column;\r\n width: fit-content;\r\n overflow: hidden;\r\n padding: var(--m3e-calendar-padding, 0.5rem);\r\n background-color: var(--m3e-calendar-container-color);\r\n box-shadow: var(--m3e-calendar-container-elevation);\r\n border-radius: var(--m3e-calendar-container-shape);\r\n }\r\n .header {\r\n display: flex;\r\n align-items: center;\r\n --m3e-text-button-label-text-color: var(\r\n --m3e-calendar-period-button-text-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n --m3e-text-button-hover-label-text-color: var(\r\n --m3e-calendar-period-button-text-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n --m3e-text-button-focus-label-text-color: var(\r\n --m3e-calendar-period-button-text-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n --m3e-text-button-pressed-label-text-color: var(\r\n --m3e-calendar-period-button-text-color,\r\n ${DesignToken.color.onSurfaceVariant}\r\n );\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n svg {\r\n transition: transform ${DesignToken.motion.spring.fastEffects};\r\n }\r\n svg.rotate {\r\n transform: rotate(-180deg);\r\n }\r\n .body {\r\n position: relative;\r\n }\r\n .view:not(.no-animate) {\r\n transition: ${unsafeCSS(\r\n `margin var(--m3e-calendar-slide-animation-duration, ${DesignToken.motion.duration.long2}) ${DesignToken.motion.easing.standard},\r\n visibility var(--m3e-calendar-slide-animation-duration, ${DesignToken.motion.duration.long2}) ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n .view.before,\r\n .view.after {\r\n visibility: hidden;\r\n position: absolute;\r\n }\r\n .view.before {\r\n margin-inline-start: -100%;\r\n }\r\n .view.after {\r\n margin-inline-start: 100%;\r\n }\r\n .view:not(.before):not(.after) {\r\n visibility: visible;\r\n position: relative;\r\n left: 0;\r\n margin-inline-start: 0;\r\n }\r\n .row {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n .row.multi-year {\r\n transition: ${unsafeCSS(\r\n `transform var(--m3e-calendar-slide-animation-duration, ${DesignToken.motion.duration.long2}) ${DesignToken.motion.easing.standard} allow-discrete,\r\n opacity var(--m3e-calendar-slide-animation-duration, ${DesignToken.motion.duration.long2}) ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n .row:not(.multi-year) {\r\n transition: ${unsafeCSS(\r\n `opacity var(--m3e-calendar-slide-animation-duration, ${DesignToken.motion.duration.long2}) ${DesignToken.motion.easing.standard} allow-discrete`,\r\n )};\r\n }\r\n .body.month > .row:not(.month),\r\n .body.year > .row:not(.year),\r\n .body.multi-year > .row:not(.multi-year) {\r\n visibility: hidden;\r\n position: absolute;\r\n transform: translateY(-10%);\r\n opacity: 0;\r\n }\r\n .body.month > .row:not(.month) .view:not(.before):not(.after),\r\n .body.year > .row:not(.year) .view:not(.before):not(.after),\r\n .body.multi-year > .row:not(.multi-year) .view:not(.before):not(.after) {\r\n visibility: hidden;\r\n transition: none;\r\n }\r\n\r\n @media (prefers-reduced-motion) {\r\n .row:not(.multi-year),\r\n .row.multi-year,\r\n .view:not(.no-animate),\r\n svg {\r\n transition: none;\r\n }\r\n }\r\n `;\r\n\r\n /** @private */ #transitionComplete?: Promise<void>;\r\n /** @private */ @state() private _today = new Date();\r\n /** @private */ @state() private _activeView: CalendarView = \"month\";\r\n /** @private */ @state() private _activeDate: Date = new Date();\r\n /** @private */ @query(\".active\") private readonly _view?: CalendarViewElementBase;\r\n /** @private */ @query(\".body\") private readonly _body!: HTMLElement;\r\n\r\n /**\r\n * The initial view used to select a date.\r\n * @default \"month\"\r\n */\r\n @property({ attribute: \"start-view\" }) startView: CalendarView = \"month\";\r\n\r\n /**\r\n * The selected date.\r\n * @default null\r\n */\r\n @property({ converter: dateConverter }) date: Date | null = null;\r\n\r\n /**\r\n * A date specifying the period (month or year) to start the calendar in.\r\n * @default null\r\n */\r\n @property({ attribute: \"start-at\", converter: dateConverter }) startAt: Date | null = null;\r\n\r\n /**\r\n * The minimum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"min-date\", converter: dateConverter }) minDate: Date | null = null;\r\n\r\n /**\r\n * The maximum date that can be selected.\r\n * @default null\r\n */\r\n @property({ attribute: \"max-date\", converter: dateConverter }) maxDate: Date | null = null;\r\n\r\n /**\r\n * Start of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-start\", converter: dateConverter }) rangeStart: Date | null = null;\r\n\r\n /**\r\n * End of a date range.\r\n * @default null\r\n */\r\n @property({ attribute: \"range-end\", converter: dateConverter }) rangeEnd: Date | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date cannot be selected.\r\n * @default null\r\n */\r\n @property({ attribute: false }) blackoutDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * A function used to determine whether a date is special.\r\n * @default null\r\n */\r\n @property({ attribute: false }) specialDates: ((date: Date) => boolean) | null = null;\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous month.\r\n * @default \"Previous month\"\r\n */\r\n @property({ attribute: \"previous-month-label\" }) previousMonthLabel = \"Previous month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous year.\r\n * @default \"Previous year\"\r\n */\r\n @property({ attribute: \"previous-year-label\" }) previousYearLabel = \"Previous year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the previous 24 years.\r\n * @default \"Previous 24 years\"\r\n */\r\n @property({ attribute: \"previous-multi-year-label\" }) previousMultiYearLabel = \"Previous 24 years\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next month.\r\n * @default \"Next month\"\r\n */\r\n @property({ attribute: \"next-month-label\" }) nextMonthLabel = \"Next month\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next year.\r\n * @default \"Next year\"\r\n */\r\n @property({ attribute: \"next-year-label\" }) nextYearLabel = \"Next year\";\r\n\r\n /**\r\n * The accessible label given to the button used to move to the next 24 years.\r\n * @default \"Next 24 years\"\r\n */\r\n @property({ attribute: \"next-multi-year-label\" }) nextMultiYearLabel = \"Next 24 years\";\r\n\r\n /** The label to present for the current period. */\r\n get periodLabel(): string {\r\n switch (this._activeView) {\r\n case \"month\":\r\n return new Intl.DateTimeFormat(navigator.language, { month: \"short\", year: \"numeric\" }).format(\r\n this._activeDate,\r\n );\r\n\r\n case \"year\":\r\n return new Intl.DateTimeFormat(navigator.language, { year: \"numeric\" }).format(\r\n new Date(this._activeDate.getFullYear(), 0, 1),\r\n );\r\n\r\n case \"multi-year\":\r\n return new Intl.DateTimeFormat(navigator.language, { year: \"numeric\" }).formatRange(\r\n new Date(minYearOfPage(this._activeDate, this.minDate, this.maxDate), 0, 1),\r\n new Date(maxYearOfPage(this._activeDate, this.minDate, this.maxDate), 0, 1),\r\n );\r\n }\r\n }\r\n\r\n /** Whether the calendar can move to the previous period. */\r\n get canMovePreviousPeriod(): boolean {\r\n if (!this.minDate) return true;\r\n switch (this._activeView) {\r\n case \"month\":\r\n return new Date(this._activeDate.getFullYear(), this._activeDate.getMonth(), 0) >= this.minDate;\r\n\r\n case \"year\":\r\n return new Date(this._activeDate.getFullYear() - 1, 12, 1) >= this.minDate;\r\n\r\n case \"multi-year\":\r\n return new Date(minYearOfPage(this._activeDate, this.minDate, this.maxDate) - 1, 12, 1) >= this.minDate;\r\n }\r\n }\r\n\r\n /** Whether the calendar can move to the next period. */\r\n get canMoveNextPeriod(): boolean {\r\n if (!this.maxDate) return true;\r\n switch (this._activeView) {\r\n case \"month\":\r\n return new Date(this._activeDate.getFullYear(), this._activeDate.getMonth() + 1, 1) <= this.maxDate;\r\n\r\n case \"year\":\r\n return new Date(this._activeDate.getFullYear() + 1, 1, 1) <= this.maxDate;\r\n\r\n case \"multi-year\":\r\n return new Date(maxYearOfPage(this._activeDate, this.minDate, this.maxDate) + 1, 12, 1) <= this.maxDate;\r\n }\r\n }\r\n\r\n /**\r\n * Asynchronously focuses the active date.\r\n * @returns {Promise<void>} A promise that resolves after the active date has been focused.\r\n */\r\n async focusActiveCell(): Promise<void> {\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n await this._view?.focusActiveCell();\r\n }\r\n\r\n /** Updates today's date. */\r\n updateTodayDate(): void {\r\n this._today = new Date();\r\n }\r\n\r\n /**\r\n * Moves the calendar to the previous period.\r\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\r\n */\r\n async movePreviousPeriod(): Promise<void> {\r\n if (!this.canMovePreviousPeriod) return;\r\n if (prefersReducedMotion()) {\r\n this._activeDate = this.#getPreviousPeriod(this._activeView);\r\n return;\r\n }\r\n\r\n await this.#transitionComplete;\r\n\r\n const views = [...(this.shadowRoot?.querySelectorAll<HTMLElement>(`.row.${this._activeView} .view`) ?? [])];\r\n if (views.length != 3) return;\r\n\r\n this.#transitionComplete = new Promise<void>((resolve) => {\r\n views[0].addEventListener(\r\n \"transitionend\",\r\n () => {\r\n this._activeDate = this.#getPreviousPeriod(this._activeView);\r\n views.forEach((x) => x.classList.add(\"no-animate\"));\r\n views[1].classList.remove(\"after\");\r\n views[0].classList.add(\"before\");\r\n setTimeout(() => {\r\n views.forEach((x) => x.classList.remove(\"no-animate\"));\r\n resolve();\r\n });\r\n },\r\n { once: true },\r\n );\r\n });\r\n\r\n this._body.style.overflow = \"hidden\";\r\n views[1].classList.add(\"after\");\r\n views[0].classList.remove(\"before\");\r\n\r\n await this.#transitionComplete;\r\n this._body.style.overflow = \"\";\r\n }\r\n\r\n /**\r\n * Moves the calendar to the next period.\r\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\r\n */\r\n async moveNextPeriod(): Promise<void> {\r\n if (!this.canMoveNextPeriod) return;\r\n if (prefersReducedMotion()) {\r\n this._activeDate = this.#getNextPeriod(this._activeView);\r\n return;\r\n }\r\n\r\n await this.#transitionComplete;\r\n\r\n const views = [...(this.shadowRoot?.querySelectorAll<HTMLElement>(`.row.${this._activeView} .view`) ?? [])];\r\n if (views.length != 3) return;\r\n\r\n this.#transitionComplete = new Promise<void>((resolve) => {\r\n views[2].addEventListener(\r\n \"transitionend\",\r\n () => {\r\n this._activeDate = this.#getNextPeriod(this._activeView);\r\n views.forEach((x) => x.classList.add(\"no-animate\"));\r\n views[1].classList.remove(\"before\");\r\n views[2].classList.add(\"after\");\r\n setTimeout(() => {\r\n views.forEach((x) => x.classList.remove(\"no-animate\"));\r\n resolve();\r\n });\r\n },\r\n { once: true },\r\n );\r\n });\r\n\r\n this._body.style.overflow = \"hidden\";\r\n views[1].classList.add(\"before\");\r\n views[2].classList.remove(\"after\");\r\n\r\n await this.#transitionComplete;\r\n this._body.style.overflow = \"\";\r\n }\r\n\r\n /**\r\n * Toggles the current period.\r\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\r\n */\r\n async togglePeriod(): Promise<void> {\r\n await this.#transitionComplete;\r\n this._activeView = this._activeView === \"month\" ? \"multi-year\" : \"month\";\r\n await this.focusActiveCell();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if (changedProperties.has(\"date\")) {\r\n this._activeDate = new Date(this.date ?? this._today);\r\n }\r\n if (changedProperties.has(\"startAt\")) {\r\n this._activeDate = new Date(this.startAt ?? this.date ?? this._today);\r\n }\r\n if (changedProperties.has(\"startView\")) {\r\n this._activeView = this.startView;\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (this._view instanceof M3eMonthViewElement) {\r\n if (_changedProperties.has(\"specialDates\") || _changedProperties.has(\"blackoutDates\")) {\r\n this.shadowRoot?.querySelectorAll(\"m3e-month-view\").forEach((x) => {\r\n x.specialDates = this.specialDates;\r\n x.blackoutDates = this.blackoutDates;\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <slot name=\"header\">${this.#renderHeader()}</slot>\r\n <div class=\"body ${this._activeView}\">\r\n <div class=\"row multi-year\">\r\n ${this.#renderView(\"multi-year\", -1)}${this.#renderView(\"multi-year\", 0)}${this.#renderView(\"multi-year\", 1)}\r\n </div>\r\n <div class=\"row year\">\r\n ${this.#renderView(\"year\", -1)}${this.#renderView(\"year\", 0)}${this.#renderView(\"year\", 1)}\r\n </div>\r\n <div class=\"row month\">\r\n ${this.#renderView(\"month\", -1)}${this.#renderView(\"month\", 0)}${this.#renderView(\"month\", 1)}\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderHeader(): unknown {\r\n return html`<div class=\"header\">\r\n <m3e-button @click=\"${this.togglePeriod}\">\r\n ${this.periodLabel}\r\n <svg\r\n class=\"${classMap({ rotate: this._activeView !== \"month\" })}\"\r\n slot=\"trailing-icon\"\r\n viewBox=\"0 -960 960 960\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M480-360 280-560h400L480-360Z\" />\r\n </svg>\r\n </m3e-button>\r\n <div class=\"spacer\"></div>\r\n <m3e-icon-button\r\n ?disabled=\"${!this.canMovePreviousPeriod}\"\r\n @click=\"${this.movePreviousPeriod}\"\r\n aria-label=\"${this._activeView === \"month\"\r\n ? this.previousMonthLabel\r\n : this._activeView === \"year\"\r\n ? this.previousYearLabel\r\n : this.previousMultiYearLabel}\"\r\n >\r\n ${M3eDirectionality.current === \"ltr\"\r\n ? html`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\r\n </svg>`\r\n : html`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\r\n </svg>`}\r\n </m3e-icon-button>\r\n <m3e-icon-button\r\n ?disabled=\"${!this.canMoveNextPeriod}\"\r\n @click=\"${this.moveNextPeriod}\"\r\n aria-label=\"${this._activeView === \"month\"\r\n ? this.nextMonthLabel\r\n : this._activeView === \"year\"\r\n ? this.nextYearLabel\r\n : this.nextMultiYearLabel}\"\r\n >\r\n ${M3eDirectionality.current === \"ltr\"\r\n ? html`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\r\n </svg>`\r\n : html`<svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\r\n </svg>`}\r\n </m3e-icon-button>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderView(view: CalendarView, offset: -1 | 0 | 1): unknown {\r\n const activeDate =\r\n offset < 0 ? this.#getPreviousPeriod(view) : offset > 0 ? this.#getNextPeriod(view) : new Date(this._activeDate);\r\n\r\n switch (view) {\r\n case \"month\":\r\n return html`<m3e-month-view\r\n class=\"view ${classMap({\r\n before: offset < 0,\r\n after: offset > 0,\r\n active: view === this._activeView && offset === 0,\r\n })}\"\r\n ?inert=\"${offset !== 0}\"\r\n today=\"${this._today.toISOString()}\"\r\n date=\"${ifDefined(this.date?.toISOString())}\"\r\n active-date=\"${activeDate.toISOString()}\"\r\n min-date=\"${ifDefined(this.minDate?.toISOString())}\"\r\n max-date=\"${ifDefined(this.maxDate?.toISOString())}\"\r\n range-start=\"${ifDefined(this.rangeStart?.toISOString())}\"\r\n range-end=\"${ifDefined(this.rangeEnd?.toISOString())}\"\r\n @active-change=\"${offset === 0 ? this.#handleActiveChange : undefined}\"\r\n @change=\"${offset === 0 ? this.#handleDateChange : undefined}\"\r\n >\r\n </m3e-month-view>`;\r\n\r\n case \"year\":\r\n return html`<m3e-year-view\r\n class=\"view ${classMap({\r\n before: offset < 0,\r\n after: offset > 0,\r\n active: view === this._activeView && offset === 0,\r\n })}\"\r\n ?inert=\"${offset !== 0}\"\r\n today=\"${this._today.toISOString()}\"\r\n date=\"${ifDefined(this.date?.toISOString())}\"\r\n active-date=\"${activeDate.toISOString()}\"\r\n min-date=\"${ifDefined(this.minDate?.toISOString())}\"\r\n max-date=\"${ifDefined(this.maxDate?.toISOString())}\"\r\n @active-change=\"${offset === 0 ? this.#handleActiveChange : undefined}\"\r\n @change=\"${offset === 0 ? this.#handleMonthChange : undefined}\"\r\n ></m3e-year-view>`;\r\n\r\n case \"multi-year\":\r\n return html`<m3e-multi-year-view\r\n class=\"view ${classMap({\r\n before: offset < 0,\r\n after: offset > 0,\r\n active: view === this._activeView && offset === 0,\r\n })}\"\r\n ?inert=\"${offset !== 0}\"\r\n today=\"${this._today.toISOString()}\"\r\n date=\"${ifDefined(this.date?.toISOString())}\"\r\n active-date=\"${activeDate.toISOString()}\"\r\n min-date=\"${ifDefined(this.minDate?.toISOString())}\"\r\n max-date=\"${ifDefined(this.maxDate?.toISOString())}\"\r\n @active-change=\"${offset === 0 ? this.#handleActiveChange : undefined}\"\r\n @change=\"${offset === 0 ? this.#handleYearChange : undefined}\"\r\n >\r\n </m3e-multi-year-view>`;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDateChange(e: Event): void {\r\n const monthView = e.currentTarget as M3eMonthViewElement;\r\n this._activeDate = new Date(monthView.activeDate);\r\n this.rangeStart = monthView.rangeStart;\r\n this.rangeEnd = monthView.rangeEnd;\r\n this.date = new Date(this._activeDate);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n async #handleMonthChange(e: Event): Promise<void> {\r\n this._activeDate = new Date((e.currentTarget as CalendarViewElementBase).activeDate);\r\n this._activeView = \"month\";\r\n this.focusActiveCell();\r\n }\r\n\r\n /** @private */\r\n #handleYearChange(e: Event): void {\r\n this._activeDate = new Date((e.currentTarget as CalendarViewElementBase).activeDate);\r\n this._activeView = \"year\";\r\n this.focusActiveCell();\r\n }\r\n\r\n /** @private */\r\n async #handleActiveChange(e: Event): Promise<void> {\r\n if (this._view instanceof M3eMonthViewElement) {\r\n this._view._suppressFocusHighlight = false;\r\n }\r\n\r\n this._activeDate = new Date((e.currentTarget as CalendarViewElementBase).activeDate);\r\n await this.focusActiveCell();\r\n\r\n if (this._view instanceof M3eMonthViewElement) {\r\n this._view._suppressFocusHighlight = false;\r\n }\r\n }\r\n\r\n /** @private */\r\n #getPreviousPeriod(view: CalendarView): Date {\r\n const activeDate = new Date(this._activeDate);\r\n switch (view) {\r\n case \"month\":\r\n activeDate.setMonth(this._activeDate.getMonth() - 1);\r\n while (activeDate.getMonth() === this._activeDate.getMonth()) {\r\n activeDate.setDate(activeDate.getDate() - 1);\r\n }\r\n\r\n break;\r\n\r\n case \"year\":\r\n activeDate.setFullYear(this._activeDate.getFullYear() - 1);\r\n break;\r\n\r\n case \"multi-year\": {\r\n activeDate.setDate(1);\r\n activeDate.setFullYear(minYearOfPage(this._activeDate, this.minDate, this.maxDate) - 1);\r\n }\r\n }\r\n return activeDate;\r\n }\r\n\r\n /** @private */\r\n #getNextPeriod(view: CalendarView): Date {\r\n const activeDate = new Date(this._activeDate);\r\n switch (view) {\r\n case \"month\":\r\n activeDate.setMonth(this._activeDate.getMonth() + 1);\r\n while (activeDate.getMonth() === this._activeDate.getMonth()) {\r\n activeDate.setDate(activeDate.getDate() + 1);\r\n }\r\n break;\r\n\r\n case \"year\":\r\n activeDate.setFullYear(this._activeDate.getFullYear() + 1);\r\n break;\r\n\r\n case \"multi-year\":\r\n activeDate.setDate(1);\r\n activeDate.setFullYear(maxYearOfPage(this._activeDate, this.minDate, this.maxDate) + 1);\r\n break;\r\n }\r\n return activeDate;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-calendar\": M3eCalendarElement;\r\n }\r\n}\r\n"],"names":["createDateWithOverflow","year","month","day","date","Date","setFullYear","setHours","addCalendarDays","days","getFullYear","getMonth","getDate","addCalendarMonths","months","newDate","addCalendarYears","years","compareDate","first","second","sameDate","getActiveOffset","activeDate","minDate","maxDate","a","YEARS_PER_PAGE","getStartingYear","b","minYearOfPage","maxYearOfPage","clampDate","CalendarViewElementBase","LitElement","constructor","this","today","focusActiveCell","isUpdatePending","updateComplete","_activeItem","focusWhenReady","_changeActiveDate","style","setProperty","blur","removeProperty","dispatchEvent","Event","bubbles","styles","css","DesignToken","shape","corner","full","color","onPrimary","primary","onSurface","__decorate","query","prototype","property","converter","dateConverter","attribute","M3eMonthViewElement","_suppressFocusHighlight","rangeStart","rangeEnd","blackoutDates","specialDates","render","setDate","getDay","weekdays","Array","narrowFormat","Intl","DateTimeFormat","navigator","language","weekday","longFormat","i","push","id","narrow","format","long","firstDate","numDays","weeks","dayOfWeek","length","filter","x","html","map","row","nothing","y","__classPrivateFieldGet","_M3eMonthViewElement_instances","_M3eMonthViewElement_renderItem","call","value","special","selected","active","current","disabled","range","rangeStartRange","classMap","toISOString","ifDefined","undefined","_M3eMonthViewElement_handleItemClick","_M3eMonthViewElement_handleItemMouseEnter","_M3eMonthViewElement_handleItemFocus","_M3eMonthViewElement_clearRangeHighlight","_M3eMonthViewElement_handleItemKeyDown","e","item","currentTarget","ariaDisabled","dataset","key","preventDefault","click","M3eDirectionality","altKey","parentElement","classList","add","cell","closest","querySelectorAll","shadowRoot","forEach","remove","typescale","standard","title","small","fontSize","fontWeight","lineHeight","tracking","body","medium","onTertiaryContainer","tertiaryContainer","primaryContainer","onPrimaryContainer","customElement","M3eMultiYearViewElement","minYear","yearFormat","_M3eMultiYearViewElement_instances","_M3eMultiYearViewElement_handleItemClick","_M3eMultiYearViewElement_handleItemKeyDown","Number","M3eYearViewElement","shortFormat","_M3eYearViewElement_instances","_M3eYearViewElement_handleItemClick","_M3eYearViewElement_handleItemKeyDown","M3eCalendarElement","_M3eCalendarElement_transitionComplete","set","_today","_activeView","_activeDate","startView","startAt","previousMonthLabel","previousYearLabel","previousMultiYearLabel","nextMonthLabel","nextYearLabel","nextMultiYearLabel","periodLabel","formatRange","canMovePreviousPeriod","canMoveNextPeriod","_view","updateTodayDate","movePreviousPeriod","prefersReducedMotion","_M3eCalendarElement_instances","_M3eCalendarElement_getPreviousPeriod","views","__classPrivateFieldSet","Promise","resolve","addEventListener","setTimeout","once","_body","overflow","moveNextPeriod","_M3eCalendarElement_getNextPeriod","togglePeriod","willUpdate","changedProperties","super","has","updated","_changedProperties","_M3eCalendarElement_renderHeader","_M3eCalendarElement_renderView","rotate","view","offset","before","after","_M3eCalendarElement_handleActiveChange","_M3eCalendarElement_handleDateChange","_M3eCalendarElement_handleMonthChange","_M3eCalendarElement_handleYearChange","monthView","async","setMonth","onSurfaceVariant","motion","spring","fastEffects","unsafeCSS","duration","long2","easing","state"],"mappings":"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"}
package/dist/card.js CHANGED
@@ -380,10 +380,12 @@ __decorate([query(".focus-ring")], M3eCardElement.prototype, "_focusRing", void
380
380
  __decorate([query(".state-layer")], M3eCardElement.prototype, "_stateLayer", void 0);
381
381
  __decorate([query(".ripple")], M3eCardElement.prototype, "_ripple", void 0);
382
382
  __decorate([property({
383
- type: Boolean
383
+ type: Boolean,
384
+ reflect: true
384
385
  })], M3eCardElement.prototype, "inline", void 0);
385
386
  __decorate([property({
386
- type: Boolean
387
+ type: Boolean,
388
+ reflect: true
387
389
  })], M3eCardElement.prototype, "actionable", void 0);
388
390
  __decorate([property({
389
391
  reflect: true
package/dist/card.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sources":["../../src/card/styles/CardToken.ts","../../src/card/styles/CardVariantToken.ts","../../src/card/styles/CardStyle.ts","../../src/card/styles/CardVariantStyle.ts","../../src/card/CardElement.ts"],"sourcesContent":["import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardToken = {\r\n padding: unsafeCSS(\"var(--m3e-card-padding, 1rem)\"),\r\n shape: unsafeCSS(`var(--m3e-card-shape, ${DesignToken.shape.corner.medium});`),\r\n} as const;\r\n","import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\n/** @private */\r\ntype _CardVariantToken = {\r\n textColor: CSSResult;\r\n containerColor: CSSResult;\r\n containerElevation: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineThickness?: CSSResult;\r\n disabled: {\r\n textColor: CSSResult;\r\n textOpacity: CSSResult;\r\n imageOpacity: CSSResult;\r\n containerColor?: CSSResult;\r\n containerOpacity?: CSSResult;\r\n containerElevation: CSSResult;\r\n containerElevationColor: CSSResult;\r\n containerElevationOpacity: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineOpacity?: CSSResult;\r\n };\r\n hover: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n focus: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n pressed: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n};\r\n\r\n/**\r\n * Component design tokens that control the appearance variants of `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantToken: Record<CardVariant, _CardVariantToken> = {\r\n filled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerHighest}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surfaceVariant}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n },\r\n elevated: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerLow}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level2}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n },\r\n outlined: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-outline-color, var(--m3e-card-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n outlineThickness: unsafeCSS(\"var(--m3e-outlined-card-outline-thickness, var(--m3e-card-outline-thickness, 1px))\"),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-color, var(--m3e-card-disabled-outline-color, ${DesignToken.color.outline}))`,\r\n ),\r\n outlineOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-opacity, var(--m3e-card-disabled-outline-opacity, 12%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-outline-color, var(--m3e-card-hover-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-outline-color, var(--m3e-card-focus-outline-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-outline-color, var(--m3e-card-pressed-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n },\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardToken } from \"./CardToken\";\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardStyle: CSSResult = css`\r\n :host {\r\n outline: none;\r\n }\r\n :host(:not([inline])) {\r\n display: block;\r\n }\r\n :host(:not([inline])) .base {\r\n display: flex;\r\n }\r\n :host([inline]) {\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n :host([inline]) .base {\r\n display: inline-flex;\r\n }\r\n .base {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n box-sizing: border-box;\r\n border-radius: ${CardToken.shape};\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n border-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host([actionable]) {\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host([actionable]:not(:disabled):not([disabled-interactive])) {\r\n cursor: pointer;\r\n }\r\n :host([actionable][disabled-interactive]) {\r\n cursor: not-allowed;\r\n }\r\n :host(:not([actionable])) .focus-ring,\r\n :host(:not([actionable])) .state-layer,\r\n :host(:not([actionable])) .ripple {\r\n display: none;\r\n }\r\n :host([variant=\"outlined\"]) .base {\r\n border-style: solid;\r\n }\r\n ::slotted([slot=\"content\"]) {\r\n flex: 1 1 auto;\r\n }\r\n ::slotted(img),\r\n ::slotted(video) {\r\n inset: 0;\r\n object-fit: cover;\r\n }\r\n ::slotted(img[slot=\"header\"]),\r\n ::slotted(video[slot=\"header\"]) {\r\n border-radius: ${CardToken.shape};\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n ::slotted([slot=\"header\"]),\r\n ::slotted([slot=\"actions\"]),\r\n ::slotted([slot=\"footer\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([orientation=\"vertical\"]) .base,\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: column;\r\n }\r\n :host([orientation=\"horizontal\"]) .base,\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: row;\r\n }\r\n :host([orientation=\"horizontal\"]) ::slotted(img),\r\n :host([orientation=\"horizontal\"]) ::slotted(video) {\r\n aspect-ratio: 16 / 9;\r\n }\r\n .has-content:not(.has-default) slot[name=\"content\"],\r\n .has-content.has-default slot:not([name]) {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: 1 1 auto;\r\n }\r\n .has-header slot[name=\"header\"],\r\n .has-actions slot[name=\"actions\"],\r\n .has-footer slot[name=\"footer\"] {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: none;\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-inline: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n .has-actions slot[name=\"actions\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-footer slot[name=\"footer\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-footer slot[name=\"footer\"] {\r\n margin-block: ${CardToken.padding};\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n a {\r\n all: unset;\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: 1;\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n :host([variant]) .base {\r\n border-style: solid;\r\n border-color: CanvasText;\r\n border-width: ${CardVariantToken.outlined.outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant]:disabled) .base,\r\n :host([actionable][variant][disabled-interactive]) .base {\r\n color: GrayText;\r\n border-color: GrayText;\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/** @private */\r\nfunction cardVariantStyle(variant: CardVariant): CSSResult {\r\n return css`\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n background-color: ${CardVariantToken[variant].containerColor ?? unsafeCSS(\"unset\")};\r\n box-shadow: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n border-width: ${CardVariantToken[variant].outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base {\r\n --m3e-state-layer-hover-color: ${CardVariantToken[variant].hover.stateLayerColor};\r\n --m3e-state-layer-hover-opacity: ${CardVariantToken[variant].hover.stateLayerOpacity};\r\n --m3e-state-layer-focus-color: ${CardVariantToken[variant].focus.stateLayerColor};\r\n --m3e-state-layer-focus-opacity: ${CardVariantToken[variant].focus.stateLayerOpacity};\r\n --m3e-ripple-color: ${CardVariantToken[variant].pressed.stateLayerColor};\r\n --m3e-ripple-opacity: ${CardVariantToken[variant].pressed.stateLayerOpacity};\r\n --m3e-elevation-level: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-hover-level: ${CardVariantToken[variant].hover.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-focus-level: ${CardVariantToken[variant].focus.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-pressed-level: ${CardVariantToken[variant].pressed.containerElevation ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n border-color: ${CardVariantToken[variant].outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus .base) {\r\n border-color: ${CardVariantToken[variant].focus.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover .base) {\r\n border-color: ${CardVariantToken[variant].hover.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n border-color: ${CardVariantToken[variant].pressed.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n color: ${CardVariantToken[variant].textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus) .base {\r\n color: ${CardVariantToken[variant].focus.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover) .base {\r\n color: ${CardVariantToken[variant].hover.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n color: ${CardVariantToken[variant].pressed.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) .base,\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) .base {\r\n --m3e-elevation-level: ${CardVariantToken[variant].disabled.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerElevationColor}\r\n ${CardVariantToken[variant].disabled.containerElevationOpacity},\r\n transparent\r\n );\r\n color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.textColor} ${CardVariantToken[variant].disabled.textOpacity},\r\n transparent\r\n );\r\n background-color: ${CardVariantToken[variant].disabled.containerColor &&\r\n CardVariantToken[variant].disabled.containerOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerColor} ${CardVariantToken[variant].disabled.containerOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n border-color: ${CardVariantToken[variant].disabled.outlineColor &&\r\n CardVariantToken[variant].disabled.outlineOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.outlineColor} ${CardVariantToken[variant].disabled.outlineOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(video),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(video) {\r\n opacity: ${CardVariantToken[variant].disabled.imageOpacity};\r\n }\r\n `;\r\n}\r\n\r\n/**\r\n * Appearance variant styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantStyle: CSSResultGroup = [\r\n cardVariantStyle(\"filled\"),\r\n cardVariantStyle(\"elevated\"),\r\n cardVariantStyle(\"outlined\"),\r\n];\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n renderPseudoLink,\r\n AttachInternals,\r\n Disabled,\r\n DisabledInteractive,\r\n Focusable,\r\n FormSubmitter,\r\n LinkButton,\r\n M3eElevationElement,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n PressedController,\r\n KeyboardClick,\r\n hasAssignedNodes,\r\n customElement,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"./CardVariant\";\r\n\r\nimport { CardStyle, CardVariantStyle } from \"./styles\";\r\nimport { CardOrientation } from \"./CardOrientation\";\r\n\r\n/**\r\n * A content container for text, images (or other media), and actions in the context of a single subject.\r\n *\r\n * @description\r\n * The `m3e-card` component is a flexible, expressive container for presenting a unified subject—text,\r\n * media, and actions—on a visually distinct surface. It supports multiple appearance variants via the\r\n * `variant` attribute: `filled` (default, for solid emphasis), `outlined` (for subtle framing with a border),\r\n * and `elevated` (for depth and motion with shadow elevation).\r\n *\r\n * Cards can be made actionable, responding to user interaction when the `actionable` attribute is set, and can be\r\n * presented inline with surrounding content using the `inline` attribute.\r\n *\r\n * It supports both vertical and horizontal layouts through the `orientation` attribute. Content organization is\r\n * enabled via dedicated slots for `header`, `content`, `actions`, and `footer`, or developers can use the default\r\n * slot for custom layouts.\r\n *\r\n * The component provides dynamic elevation, adaptive shape, and expressive color theming, and responds to interaction states\r\n * (hover, focus, press, disabled) with smooth motion and visual feedback, ensuring clarity, accessibility,\r\n * and a cohesive user experience in accordance with Material Design 3 guidelines.\r\n *\r\n * @example\r\n * The following example illustrates each of the dedicated slots of a card.\r\n * ```html\r\n * <m3e-card>\r\n * <div slot=\"header\">Header section</div>\r\n * <div slot=\"content\">Content section</div>\r\n * <div slot=\"actions\">Actions section</div>\r\n * <div slot=\"footer\">Footer section</div>\r\n * </m3e-card>\r\n * ```\r\n *\r\n * @tag m3e-card\r\n *\r\n * @slot - Renders the content of the card without padding.\r\n * @slot header - Renders the header of the card.\r\n * @slot content - Renders the content of the card with padding.\r\n * @slot actions - Renders the actions of the card.\r\n * @slot footer - Renders the footer of the card.\r\n *\r\n * @attr actionable - Whether the card is \"actionable\" and will respond to use interaction.\r\n * @attr inline - Whether to present the card inline with surrounding content.\r\n * @attr orientation - The orientation of the card.\r\n * @attr variant - The appearance variant of the card.\r\n *\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-card-padding - Internal spacing for all slotted regions\r\n * @cssprop --m3e-card-shape - Corner radius of the card container.\r\n * @cssprop --m3e-filled-card-text-color - Foreground color for text content in filled cards.\r\n * @cssprop --m3e-filled-card-container-color - Background color of the filled card container.\r\n * @cssprop --m3e-filled-card-container-elevation - Elevation level for filled card container.\r\n * @cssprop --m3e-filled-card-disabled-text-color - Text color when filled card is disabled.\r\n * @cssprop --m3e-filled-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-filled-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-filled-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-filled-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-filled-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-filled-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-filled-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-elevated-card-text-color - Foreground color for text content in elevated cards.\r\n * @cssprop --m3e-elevated-card-container-color - Background color of the elevated card container.\r\n * @cssprop --m3e-elevated-card-container-elevation - Elevation level for elevated card container.\r\n * @cssprop --m3e-elevated-card-disabled-text-color - Text color when elevated card is disabled.\r\n * @cssprop --m3e-elevated-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-elevated-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-elevated-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-elevated-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-elevated-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-elevated-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-elevated-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-text-color - Foreground color for text content in outlined cards.\r\n * @cssprop --m3e-outlined-card-container-color - Background color of the outlined card container.\r\n * @cssprop --m3e-outlined-card-container-elevation - Elevation level for outlined card container.\r\n * @cssprop --m3e-outlined-card-outline-color - Border color for outlined cards.\r\n * @cssprop --m3e-outlined-card-outline-thickness - Border thickness for outlined cards.\r\n * @cssprop --m3e-outlined-card-disabled-text-color - Text color when outlined card is disabled.\r\n * @cssprop --m3e-outlined-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-color - Border color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-opacity - Border opacity when disabled.\r\n * @cssprop --m3e-outlined-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-outlined-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-outlined-card-hover-outline-color - Border color on hover.\r\n * @cssprop --m3e-outlined-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-outlined-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-outlined-card-focus-outline-color - Border color on focus.\r\n * @cssprop --m3e-outlined-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-outlined-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-pressed-outline-color - Border color on press.\r\n */\r\n@customElement(\"m3e-card\")\r\nexport class M3eCardElement extends KeyboardClick(\r\n LinkButton(FormSubmitter(Focusable(DisabledInteractive(Disabled(AttachInternals(LitElement), true))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [CardVariantStyle, CardStyle];\r\n\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".elevation\") private readonly _elevation?: M3eElevationElement;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, {\r\n isPressedKey: (key) => key === \" \",\r\n callback: (pressed) => {\r\n if (this.actionable && !this.disabled && !this.disabledInteractive) {\r\n this._base?.classList.toggle(\"pressed\", pressed);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether to present the card inline with surrounding content.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) inline = false;\r\n\r\n /**\r\n * Whether the card is \"actionable\" and will respond to use interaction.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) actionable = false;\r\n\r\n /**\r\n * The appearance variant of the card.\r\n * @default \"filled\"\r\n */\r\n @property({ reflect: true }) variant: CardVariant = \"filled\";\r\n\r\n /**\r\n * The orientation of the card.\r\n * @default \"vertical\"\r\n */\r\n @property({ reflect: true }) orientation: CardOrientation = \"vertical\";\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n if (this.hasAttribute(\"actionable\")) {\r\n // If href is specified, the LinkButton mixin changes this to \"link\" if role is \"button\".\r\n this.role = \"button\";\r\n }\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._base?.classList.toggle(\"pressed\", false);\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <m3e-elevation\r\n class=\"elevation\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-elevation>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${!this.actionable || this.disabled}\"></m3e-focus-ring>\r\n <m3e-state-layer\r\n class=\"state-layer\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-state-layer>\r\n <m3e-ripple\r\n class=\"ripple\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-ripple>\r\n ${this[renderPseudoLink]()}\r\n <slot name=\"header\" @slotchange=\"${this.#handleHeaderSlotChange}\"></slot>\r\n <slot name=\"content\" @slotchange=\"${this.#handleContentSlotChange}\">\r\n <slot @slotchange=\"${this.#handleDefaultSlotChange}\"></slot>\r\n </slot>\r\n <slot name=\"actions\" @slotchange=\"${this.#handleActionsSlotChange}\"></slot>\r\n <slot name=\"footer\" @slotchange=\"${this.#handleFooterSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderSlotChange(e: Event): void {\r\n const assignedNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true });\r\n const base = this.shadowRoot?.querySelector(\".base\");\r\n base?.classList.toggle(\"has-header\", assignedNodes.length > 0);\r\n base?.classList.toggle(\r\n \"has-header-media\",\r\n assignedNodes.some((x) => x instanceof HTMLElement && (x.tagName === \"IMG\" || x.tagName === \"VIDEO\")),\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleContentSlotChange(): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-content\", this.querySelector(\"[slot='content']\") !== null);\r\n }\r\n\r\n /** @private */\r\n #handleDefaultSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\r\n \"has-default\",\r\n hasAssignedNodes(e.target as HTMLSlotElement) && this.querySelector(\"[slot='content']\") === null,\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleActionsSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-actions\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @private */\r\n #handleFooterSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-footer\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n [this._elevation, this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled || this.disabledInteractive) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-card\": M3eCardElement;\r\n }\r\n}\r\n"],"names":["CardToken","padding","unsafeCSS","shape","DesignToken","corner","medium","CardVariantToken","filled","textColor","color","onSurface","containerColor","surfaceContainerHighest","containerElevation","elevation","level0","disabled","textOpacity","imageOpacity","surfaceVariant","containerElevationColor","containerElevationOpacity","containerOpacity","hover","stateLayerColor","stateLayerOpacity","state","hoverStateLayerOpacity","level1","focus","focusStateLayerOpacity","pressed","pressedStateLayerOpacity","elevated","surfaceContainerLow","surface","level2","outlined","outlineColor","outlineVariant","outlineThickness","outline","outlineOpacity","CardStyle","css","motion","duration","short4","easing","standard","cardVariantStyle","variant","CardVariantStyle","M3eCardElement","KeyboardClick","LinkButton","FormSubmitter","Focusable","DisabledInteractive","Disabled","AttachInternals","LitElement","constructor","_M3eCardElement_clickHandler","set","e","__classPrivateFieldGet","call","inline","actionable","orientation","PressedController","isPressedKey","key","callback","disabledInteractive","_base","classList","toggle","connectedCallback","hasAttribute","role","addEventListener","disconnectedCallback","removeEventListener","render","html","renderPseudoLink","_M3eCardElement_instances","_M3eCardElement_handleHeaderSlotChange","_M3eCardElement_handleContentSlotChange","_M3eCardElement_handleDefaultSlotChange","_M3eCardElement_handleActionsSlotChange","_M3eCardElement_handleFooterSlotChange","firstUpdated","_changedProperties","_elevation","_focusRing","_stateLayer","_ripple","forEach","x","attach","removeAttribute","update","changedProperties","assignedNodes","target","flatten","base","shadowRoot","querySelector","length","some","HTMLElement","tagName","hasAssignedNodes","preventDefault","stopImmediatePropagation","styles","__decorate","query","prototype","property","type","Boolean","reflect","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"card.js","sources":["../../src/card/styles/CardToken.ts","../../src/card/styles/CardVariantToken.ts","../../src/card/styles/CardStyle.ts","../../src/card/styles/CardVariantStyle.ts","../../src/card/CardElement.ts"],"sourcesContent":["import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardToken = {\r\n padding: unsafeCSS(\"var(--m3e-card-padding, 1rem)\"),\r\n shape: unsafeCSS(`var(--m3e-card-shape, ${DesignToken.shape.corner.medium});`),\r\n} as const;\r\n","import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\n/** @private */\r\ntype _CardVariantToken = {\r\n textColor: CSSResult;\r\n containerColor: CSSResult;\r\n containerElevation: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineThickness?: CSSResult;\r\n disabled: {\r\n textColor: CSSResult;\r\n textOpacity: CSSResult;\r\n imageOpacity: CSSResult;\r\n containerColor?: CSSResult;\r\n containerOpacity?: CSSResult;\r\n containerElevation: CSSResult;\r\n containerElevationColor: CSSResult;\r\n containerElevationOpacity: CSSResult;\r\n outlineColor?: CSSResult;\r\n outlineOpacity?: CSSResult;\r\n };\r\n hover: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n focus: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n pressed: {\r\n textColor: CSSResult;\r\n stateLayerColor: CSSResult;\r\n stateLayerOpacity: CSSResult;\r\n containerElevation?: CSSResult;\r\n outlineColor?: CSSResult;\r\n };\r\n};\r\n\r\n/**\r\n * Component design tokens that control the appearance variants of `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantToken: Record<CardVariant, _CardVariantToken> = {\r\n filled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerHighest}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surfaceVariant}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-filled-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n },\r\n },\r\n elevated: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surfaceContainerLow}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-color, var(--m3e-card-disabled-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n containerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-disabled-container-opacity, var(--m3e-card-disabled-container-opacity, 38%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level2}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-elevated-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n },\r\n },\r\n outlined: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-text-color, var(--m3e-card-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-container-color, var(--m3e-card-container-color, ${DesignToken.color.surface}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-container-elevation, var(--m3e-card-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-outline-color, var(--m3e-card-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n outlineThickness: unsafeCSS(\"var(--m3e-outlined-card-outline-thickness, var(--m3e-card-outline-thickness, 1px))\"),\r\n disabled: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-color, var(--m3e-card-disabled-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n textOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-text-opacity, var(--m3e-card-disabled-text-opacity, 38%))`,\r\n ),\r\n imageOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-image-opacity, var(--m3e-card-disabled-image-opacity, 38%))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation, var(--m3e-card-disabled-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n containerElevationColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-color, var(--m3e-card-disabled-container-elevation-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n containerElevationOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-container-elevation-opacity, var(--m3e-card-disabled-container-elevation-opacity, 38%))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-color, var(--m3e-card-disabled-outline-color, ${DesignToken.color.outline}))`,\r\n ),\r\n outlineOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-disabled-outline-opacity, var(--m3e-card-disabled-outline-opacity, 12%))`,\r\n ),\r\n },\r\n hover: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-text-color, var(--m3e-card-hover-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-color, var(--m3e-card-hover-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-state-layer-opacity, var(--m3e-card-hover-state-layer-opacity, ${DesignToken.state.hoverStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-container-elevation, var(--m3e-card-hover-container-elevation, ${DesignToken.elevation.level1}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-hover-outline-color, var(--m3e-card-hover-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n focus: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-text-color, var(--m3e-card-focus-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-color, var(--m3e-card-focus-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-state-layer-opacity, var(--m3e-card-focus-state-layer-opacity, ${DesignToken.state.focusStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-container-elevation, var(--m3e-card-focus-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-focus-outline-color, var(--m3e-card-focus-outline-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n },\r\n pressed: {\r\n textColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-text-color, var(--m3e-card-pressed-text-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-color, var(--m3e-card-pressed-state-layer-color, ${DesignToken.color.onSurface}))`,\r\n ),\r\n stateLayerOpacity: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-state-layer-opacity, var(--m3e-card-pressed-state-layer-opacity, ${DesignToken.state.pressedStateLayerOpacity}))`,\r\n ),\r\n containerElevation: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-container-elevation, var(--m3e-card-pressed-container-elevation, ${DesignToken.elevation.level0}))`,\r\n ),\r\n outlineColor: unsafeCSS(\r\n `var(--m3e-outlined-card-pressed-outline-color, var(--m3e-card-pressed-outline-color, ${DesignToken.color.outlineVariant}))`,\r\n ),\r\n },\r\n },\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { CardToken } from \"./CardToken\";\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardStyle: CSSResult = css`\r\n :host {\r\n outline: none;\r\n }\r\n :host(:not([inline])) {\r\n display: block;\r\n }\r\n :host(:not([inline])) .base {\r\n display: flex;\r\n }\r\n :host([inline]) {\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n :host([inline]) .base {\r\n display: inline-flex;\r\n }\r\n .base {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n box-sizing: border-box;\r\n border-radius: ${CardToken.shape};\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard},\r\n border-color ${DesignToken.motion.duration.short4} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n :host([actionable]) {\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n :host([actionable]:not(:disabled):not([disabled-interactive])) {\r\n cursor: pointer;\r\n }\r\n :host([actionable][disabled-interactive]) {\r\n cursor: not-allowed;\r\n }\r\n :host(:not([actionable])) .focus-ring,\r\n :host(:not([actionable])) .state-layer,\r\n :host(:not([actionable])) .ripple {\r\n display: none;\r\n }\r\n :host([variant=\"outlined\"]) .base {\r\n border-style: solid;\r\n }\r\n ::slotted([slot=\"content\"]) {\r\n flex: 1 1 auto;\r\n }\r\n ::slotted(img),\r\n ::slotted(video) {\r\n inset: 0;\r\n object-fit: cover;\r\n }\r\n ::slotted(img[slot=\"header\"]),\r\n ::slotted(video[slot=\"header\"]) {\r\n border-radius: ${CardToken.shape};\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n ::slotted([slot=\"header\"]),\r\n ::slotted([slot=\"actions\"]),\r\n ::slotted([slot=\"footer\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([orientation=\"vertical\"]) .base,\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"horizontal\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: column;\r\n }\r\n :host([orientation=\"horizontal\"]) .base,\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"header\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"actions\"]),\r\n :host([orientation=\"vertical\"]) ::slotted([slot=\"footer\"]) {\r\n flex-direction: row;\r\n }\r\n :host([orientation=\"horizontal\"]) ::slotted(img),\r\n :host([orientation=\"horizontal\"]) ::slotted(video) {\r\n aspect-ratio: 16 / 9;\r\n }\r\n .has-content:not(.has-default) slot[name=\"content\"],\r\n .has-content.has-default slot:not([name]) {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: 1 1 auto;\r\n }\r\n .has-header slot[name=\"header\"],\r\n .has-actions slot[name=\"actions\"],\r\n .has-footer slot[name=\"footer\"] {\r\n display: inherit;\r\n flex-direction: inherit;\r\n flex: none;\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-inline: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default) slot[name=\"content\"] {\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-content:not(.has-default):not(.has-header) slot[name=\"content\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"])\r\n .has-content:not(.has-default):not(.has-actions):not(.has-footer)\r\n slot[name=\"content\"] {\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-start: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-header:not(.has-header-media) slot[name=\"header\"] {\r\n margin-inline-start: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n .has-actions slot[name=\"actions\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block: ${CardToken.padding};\r\n }\r\n :host([orientation=\"vertical\"]) .has-footer slot[name=\"footer\"] {\r\n margin-inline: ${CardToken.padding};\r\n margin-block-end: ${CardToken.padding};\r\n }\r\n :host([orientation=\"horizontal\"]) .has-footer slot[name=\"footer\"] {\r\n margin-block: ${CardToken.padding};\r\n margin-inline-end: ${CardToken.padding};\r\n }\r\n a {\r\n all: unset;\r\n display: block;\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n right: 0px;\r\n bottom: 0px;\r\n z-index: 1;\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n :host([variant]) .base {\r\n border-style: solid;\r\n border-color: CanvasText;\r\n border-width: ${CardVariantToken.outlined.outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant]:disabled) .base,\r\n :host([actionable][variant][disabled-interactive]) .base {\r\n color: GrayText;\r\n border-color: GrayText;\r\n }\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { CardVariant } from \"../CardVariant\";\r\n\r\nimport { CardVariantToken } from \"./CardVariantToken\";\r\n\r\n/** @private */\r\nfunction cardVariantStyle(variant: CardVariant): CSSResult {\r\n return css`\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n background-color: ${CardVariantToken[variant].containerColor ?? unsafeCSS(\"unset\")};\r\n box-shadow: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n border-width: ${CardVariantToken[variant].outlineThickness ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base {\r\n --m3e-state-layer-hover-color: ${CardVariantToken[variant].hover.stateLayerColor};\r\n --m3e-state-layer-hover-opacity: ${CardVariantToken[variant].hover.stateLayerOpacity};\r\n --m3e-state-layer-focus-color: ${CardVariantToken[variant].focus.stateLayerColor};\r\n --m3e-state-layer-focus-opacity: ${CardVariantToken[variant].focus.stateLayerOpacity};\r\n --m3e-ripple-color: ${CardVariantToken[variant].pressed.stateLayerColor};\r\n --m3e-ripple-opacity: ${CardVariantToken[variant].pressed.stateLayerOpacity};\r\n --m3e-elevation-level: ${CardVariantToken[variant].containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-hover-level: ${CardVariantToken[variant].hover.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-focus-level: ${CardVariantToken[variant].focus.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-pressed-level: ${CardVariantToken[variant].pressed.containerElevation ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n border-color: ${CardVariantToken[variant].outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus .base) {\r\n border-color: ${CardVariantToken[variant].focus.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover .base) {\r\n border-color: ${CardVariantToken[variant].hover.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n border-color: ${CardVariantToken[variant].pressed.outlineColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([variant=\"${unsafeCSS(variant)}\"]) .base {\r\n color: ${CardVariantToken[variant].textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:focus) .base {\r\n color: ${CardVariantToken[variant].focus.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:hover) .base {\r\n color: ${CardVariantToken[variant].hover.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]) .base.pressed {\r\n color: ${CardVariantToken[variant].pressed.textColor ?? unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) .base,\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) .base {\r\n --m3e-elevation-level: ${CardVariantToken[variant].disabled.containerElevation ?? unsafeCSS(\"unset\")};\r\n --m3e-elevation-color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerElevationColor}\r\n ${CardVariantToken[variant].disabled.containerElevationOpacity},\r\n transparent\r\n );\r\n color: color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.textColor} ${CardVariantToken[variant].disabled.textOpacity},\r\n transparent\r\n );\r\n background-color: ${CardVariantToken[variant].disabled.containerColor &&\r\n CardVariantToken[variant].disabled.containerOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.containerColor} ${CardVariantToken[variant].disabled.containerOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n border-color: ${CardVariantToken[variant].disabled.outlineColor &&\r\n CardVariantToken[variant].disabled.outlineOpacity\r\n ? unsafeCSS(`color-mix(\r\n in srgb,\r\n ${CardVariantToken[variant].disabled.outlineColor} ${CardVariantToken[variant].disabled.outlineOpacity},\r\n transparent\r\n )`)\r\n : unsafeCSS(\"unset\")};\r\n }\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(img),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"]:disabled) ::slotted(video),\r\n :host([actionable][variant=\"${unsafeCSS(variant)}\"][disabled-interactive]) ::slotted(video) {\r\n opacity: ${CardVariantToken[variant].disabled.imageOpacity};\r\n }\r\n `;\r\n}\r\n\r\n/**\r\n * Appearance variant styles for `M3eCardElement`.\r\n * @internal\r\n */\r\nexport const CardVariantStyle: CSSResultGroup = [\r\n cardVariantStyle(\"filled\"),\r\n cardVariantStyle(\"elevated\"),\r\n cardVariantStyle(\"outlined\"),\r\n];\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n renderPseudoLink,\r\n AttachInternals,\r\n Disabled,\r\n DisabledInteractive,\r\n Focusable,\r\n FormSubmitter,\r\n LinkButton,\r\n M3eElevationElement,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n PressedController,\r\n KeyboardClick,\r\n hasAssignedNodes,\r\n customElement,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { CardVariant } from \"./CardVariant\";\r\n\r\nimport { CardStyle, CardVariantStyle } from \"./styles\";\r\nimport { CardOrientation } from \"./CardOrientation\";\r\n\r\n/**\r\n * A content container for text, images (or other media), and actions in the context of a single subject.\r\n *\r\n * @description\r\n * The `m3e-card` component is a flexible, expressive container for presenting a unified subject—text,\r\n * media, and actions—on a visually distinct surface. It supports multiple appearance variants via the\r\n * `variant` attribute: `filled` (default, for solid emphasis), `outlined` (for subtle framing with a border),\r\n * and `elevated` (for depth and motion with shadow elevation).\r\n *\r\n * Cards can be made actionable, responding to user interaction when the `actionable` attribute is set, and can be\r\n * presented inline with surrounding content using the `inline` attribute.\r\n *\r\n * It supports both vertical and horizontal layouts through the `orientation` attribute. Content organization is\r\n * enabled via dedicated slots for `header`, `content`, `actions`, and `footer`, or developers can use the default\r\n * slot for custom layouts.\r\n *\r\n * The component provides dynamic elevation, adaptive shape, and expressive color theming, and responds to interaction states\r\n * (hover, focus, press, disabled) with smooth motion and visual feedback, ensuring clarity, accessibility,\r\n * and a cohesive user experience in accordance with Material Design 3 guidelines.\r\n *\r\n * @example\r\n * The following example illustrates each of the dedicated slots of a card.\r\n * ```html\r\n * <m3e-card>\r\n * <div slot=\"header\">Header section</div>\r\n * <div slot=\"content\">Content section</div>\r\n * <div slot=\"actions\">Actions section</div>\r\n * <div slot=\"footer\">Footer section</div>\r\n * </m3e-card>\r\n * ```\r\n *\r\n * @tag m3e-card\r\n *\r\n * @slot - Renders the content of the card without padding.\r\n * @slot header - Renders the header of the card.\r\n * @slot content - Renders the content of the card with padding.\r\n * @slot actions - Renders the actions of the card.\r\n * @slot footer - Renders the footer of the card.\r\n *\r\n * @attr actionable - Whether the card is \"actionable\" and will respond to use interaction.\r\n * @attr inline - Whether to present the card inline with surrounding content.\r\n * @attr orientation - The orientation of the card.\r\n * @attr variant - The appearance variant of the card.\r\n *\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-card-padding - Internal spacing for all slotted regions\r\n * @cssprop --m3e-card-shape - Corner radius of the card container.\r\n * @cssprop --m3e-filled-card-text-color - Foreground color for text content in filled cards.\r\n * @cssprop --m3e-filled-card-container-color - Background color of the filled card container.\r\n * @cssprop --m3e-filled-card-container-elevation - Elevation level for filled card container.\r\n * @cssprop --m3e-filled-card-disabled-text-color - Text color when filled card is disabled.\r\n * @cssprop --m3e-filled-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-filled-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-filled-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-filled-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-filled-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-filled-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-filled-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-filled-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-filled-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-filled-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-filled-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-elevated-card-text-color - Foreground color for text content in elevated cards.\r\n * @cssprop --m3e-elevated-card-container-color - Background color of the elevated card container.\r\n * @cssprop --m3e-elevated-card-container-elevation - Elevation level for elevated card container.\r\n * @cssprop --m3e-elevated-card-disabled-text-color - Text color when elevated card is disabled.\r\n * @cssprop --m3e-elevated-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-color - Background color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-elevated-card-disabled-container-opacity - Overall container opacity when disabled.\r\n * @cssprop --m3e-elevated-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-elevated-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-elevated-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-elevated-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-elevated-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-elevated-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-elevated-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-elevated-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-elevated-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-text-color - Foreground color for text content in outlined cards.\r\n * @cssprop --m3e-outlined-card-container-color - Background color of the outlined card container.\r\n * @cssprop --m3e-outlined-card-container-elevation - Elevation level for outlined card container.\r\n * @cssprop --m3e-outlined-card-outline-color - Border color for outlined cards.\r\n * @cssprop --m3e-outlined-card-outline-thickness - Border thickness for outlined cards.\r\n * @cssprop --m3e-outlined-card-disabled-text-color - Text color when outlined card is disabled.\r\n * @cssprop --m3e-outlined-card-disabled-text-opacity - Opacity applied to text when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation - Elevation level when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-color - Shadow color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-container-elevation-opacity - Shadow opacity when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-color - Border color when disabled.\r\n * @cssprop --m3e-outlined-card-disabled-outline-opacity - Border opacity when disabled.\r\n * @cssprop --m3e-outlined-card-hover-text-color - Text color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-color - State layer color on hover.\r\n * @cssprop --m3e-outlined-card-hover-state-layer-opacity - State layer opacity on hover.\r\n * @cssprop --m3e-outlined-card-hover-container-elevation - Elevation level on hover.\r\n * @cssprop --m3e-outlined-card-hover-outline-color - Border color on hover.\r\n * @cssprop --m3e-outlined-card-focus-text-color - Text color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-color - State layer color on focus.\r\n * @cssprop --m3e-outlined-card-focus-state-layer-opacity - State layer opacity on focus.\r\n * @cssprop --m3e-outlined-card-focus-container-elevation - Elevation level on focus.\r\n * @cssprop --m3e-outlined-card-focus-outline-color - Border color on focus.\r\n * @cssprop --m3e-outlined-card-pressed-text-color - Text color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-color - State layer color on press.\r\n * @cssprop --m3e-outlined-card-pressed-state-layer-opacity - State layer opacity on press.\r\n * @cssprop --m3e-outlined-card-pressed-container-elevation - Elevation level on press.\r\n * @cssprop --m3e-outlined-card-pressed-outline-color - Border color on press.\r\n */\r\n@customElement(\"m3e-card\")\r\nexport class M3eCardElement extends KeyboardClick(\r\n LinkButton(FormSubmitter(Focusable(DisabledInteractive(Disabled(AttachInternals(LitElement), true))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [CardVariantStyle, CardStyle];\r\n\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".elevation\") private readonly _elevation?: M3eElevationElement;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n constructor() {\r\n super();\r\n\r\n new PressedController(this, {\r\n isPressedKey: (key) => key === \" \",\r\n callback: (pressed) => {\r\n if (this.actionable && !this.disabled && !this.disabledInteractive) {\r\n this._base?.classList.toggle(\"pressed\", pressed);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Whether to present the card inline with surrounding content.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) inline = false;\r\n\r\n /**\r\n * Whether the card is \"actionable\" and will respond to use interaction.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) actionable = false;\r\n\r\n /**\r\n * The appearance variant of the card.\r\n * @default \"filled\"\r\n */\r\n @property({ reflect: true }) variant: CardVariant = \"filled\";\r\n\r\n /**\r\n * The orientation of the card.\r\n * @default \"vertical\"\r\n */\r\n @property({ reflect: true }) orientation: CardOrientation = \"vertical\";\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n if (this.hasAttribute(\"actionable\")) {\r\n // If href is specified, the LinkButton mixin changes this to \"link\" if role is \"button\".\r\n this.role = \"button\";\r\n }\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._base?.classList.toggle(\"pressed\", false);\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"base\">\r\n <m3e-elevation\r\n class=\"elevation\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-elevation>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${!this.actionable || this.disabled}\"></m3e-focus-ring>\r\n <m3e-state-layer\r\n class=\"state-layer\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-state-layer>\r\n <m3e-ripple\r\n class=\"ripple\"\r\n ?disabled=\"${!this.actionable || this.disabled || this.disabledInteractive}\"\r\n ></m3e-ripple>\r\n ${this[renderPseudoLink]()}\r\n <slot name=\"header\" @slotchange=\"${this.#handleHeaderSlotChange}\"></slot>\r\n <slot name=\"content\" @slotchange=\"${this.#handleContentSlotChange}\">\r\n <slot @slotchange=\"${this.#handleDefaultSlotChange}\"></slot>\r\n </slot>\r\n <slot name=\"actions\" @slotchange=\"${this.#handleActionsSlotChange}\"></slot>\r\n <slot name=\"footer\" @slotchange=\"${this.#handleFooterSlotChange}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleHeaderSlotChange(e: Event): void {\r\n const assignedNodes = (e.target as HTMLSlotElement).assignedNodes({ flatten: true });\r\n const base = this.shadowRoot?.querySelector(\".base\");\r\n base?.classList.toggle(\"has-header\", assignedNodes.length > 0);\r\n base?.classList.toggle(\r\n \"has-header-media\",\r\n assignedNodes.some((x) => x instanceof HTMLElement && (x.tagName === \"IMG\" || x.tagName === \"VIDEO\")),\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleContentSlotChange(): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-content\", this.querySelector(\"[slot='content']\") !== null);\r\n }\r\n\r\n /** @private */\r\n #handleDefaultSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\r\n \"has-default\",\r\n hasAssignedNodes(e.target as HTMLSlotElement) && this.querySelector(\"[slot='content']\") === null,\r\n );\r\n }\r\n\r\n /** @private */\r\n #handleActionsSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-actions\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @private */\r\n #handleFooterSlotChange(e: Event): void {\r\n this.shadowRoot\r\n ?.querySelector(\".base\")\r\n ?.classList.toggle(\"has-footer\", hasAssignedNodes(e.target as HTMLSlotElement));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n [this._elevation, this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (!this.actionable && this.hasAttribute(\"tabindex\")) {\r\n this.removeAttribute(\"tabindex\");\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled || this.disabledInteractive) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-card\": M3eCardElement;\r\n }\r\n}\r\n"],"names":["CardToken","padding","unsafeCSS","shape","DesignToken","corner","medium","CardVariantToken","filled","textColor","color","onSurface","containerColor","surfaceContainerHighest","containerElevation","elevation","level0","disabled","textOpacity","imageOpacity","surfaceVariant","containerElevationColor","containerElevationOpacity","containerOpacity","hover","stateLayerColor","stateLayerOpacity","state","hoverStateLayerOpacity","level1","focus","focusStateLayerOpacity","pressed","pressedStateLayerOpacity","elevated","surfaceContainerLow","surface","level2","outlined","outlineColor","outlineVariant","outlineThickness","outline","outlineOpacity","CardStyle","css","motion","duration","short4","easing","standard","cardVariantStyle","variant","CardVariantStyle","M3eCardElement","KeyboardClick","LinkButton","FormSubmitter","Focusable","DisabledInteractive","Disabled","AttachInternals","LitElement","constructor","_M3eCardElement_clickHandler","set","e","__classPrivateFieldGet","call","inline","actionable","orientation","PressedController","isPressedKey","key","callback","disabledInteractive","_base","classList","toggle","connectedCallback","hasAttribute","role","addEventListener","disconnectedCallback","removeEventListener","render","html","renderPseudoLink","_M3eCardElement_instances","_M3eCardElement_handleHeaderSlotChange","_M3eCardElement_handleContentSlotChange","_M3eCardElement_handleDefaultSlotChange","_M3eCardElement_handleActionsSlotChange","_M3eCardElement_handleFooterSlotChange","firstUpdated","_changedProperties","_elevation","_focusRing","_stateLayer","_ripple","forEach","x","attach","removeAttribute","update","changedProperties","assignedNodes","target","flatten","base","shadowRoot","querySelector","length","some","HTMLElement","tagName","hasAssignedNodes","preventDefault","stopImmediatePropagation","styles","__decorate","query","prototype","property","type","Boolean","reflect","customElement"],"mappings":"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"}