@tylertech/forge 3.10.5 → 3.12.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 (257) hide show
  1. package/custom-elements.json +594 -226
  2. package/dist/app-bar/forge-app-bar.css +13 -5
  3. package/dist/button/forge-button.css +14 -6
  4. package/dist/checkbox/forge-checkbox.css +23 -17
  5. package/dist/chips/forge-chips.css +12 -4
  6. package/dist/field/forge-field.css +7 -5
  7. package/dist/floating-action-button/forge-floating-action-button.css +12 -6
  8. package/dist/forge.css +6 -1
  9. package/dist/icon-button/forge-icon-button.css +12 -4
  10. package/dist/lib.js +22 -22
  11. package/dist/lib.js.map +4 -4
  12. package/dist/list/forge-list.css +59 -3
  13. package/dist/radio/forge-radio.css +22 -12
  14. package/dist/skip-link/forge-skip-link.css +38 -32
  15. package/dist/state-layer/forge-state-layer.css +2 -0
  16. package/dist/switch/forge-switch.css +9 -5
  17. package/dist/table/forge-table.css +6 -1
  18. package/dist/vscode.html-custom-data.json +104 -79
  19. package/esm/accordion/accordion.d.ts +2 -0
  20. package/esm/accordion/accordion.js +2 -0
  21. package/esm/app-bar/app-bar/app-bar-adapter.js +2 -2
  22. package/esm/app-bar/app-bar/app-bar.d.ts +1 -1
  23. package/esm/app-bar/app-bar/app-bar.js +1 -1
  24. package/esm/app-bar/help-button/app-bar-help-button.d.ts +1 -1
  25. package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
  26. package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +1 -1
  27. package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
  28. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +2 -0
  29. package/esm/app-bar/notification-button/app-bar-notification-button.js +2 -0
  30. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +2 -1
  31. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +2 -0
  32. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +2 -0
  33. package/esm/app-bar/profile-button/app-bar-profile-button.js +2 -0
  34. package/esm/app-bar/search/app-bar-search.d.ts +2 -0
  35. package/esm/app-bar/search/app-bar-search.js +2 -0
  36. package/esm/autocomplete/autocomplete-core.js +16 -3
  37. package/esm/autocomplete/autocomplete.d.ts +2 -0
  38. package/esm/autocomplete/autocomplete.js +2 -0
  39. package/esm/avatar/avatar.d.ts +1 -1
  40. package/esm/avatar/avatar.js +1 -1
  41. package/esm/backdrop/backdrop.d.ts +2 -0
  42. package/esm/backdrop/backdrop.js +2 -0
  43. package/esm/badge/badge.d.ts +2 -0
  44. package/esm/badge/badge.js +2 -0
  45. package/esm/banner/banner.d.ts +1 -1
  46. package/esm/banner/banner.js +1 -1
  47. package/esm/button/base/base-button-adapter.js +2 -2
  48. package/esm/button/button.d.ts +1 -6
  49. package/esm/button/button.js +1 -6
  50. package/esm/button-area/button-area-adapter.js +2 -2
  51. package/esm/button-area/button-area.d.ts +1 -4
  52. package/esm/button-area/button-area.js +1 -4
  53. package/esm/button-toggle/button-toggle/button-toggle-adapter.js +2 -2
  54. package/esm/button-toggle/button-toggle/button-toggle.d.ts +2 -0
  55. package/esm/button-toggle/button-toggle/button-toggle.js +2 -0
  56. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +1 -1
  57. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +1 -1
  58. package/esm/calendar/calendar-menu/calendar-menu.js +1 -1
  59. package/esm/calendar/calendar.d.ts +2 -0
  60. package/esm/calendar/calendar.js +3 -1
  61. package/esm/card/card.d.ts +2 -0
  62. package/esm/card/card.js +2 -0
  63. package/esm/chip-field/chip-field.d.ts +2 -0
  64. package/esm/chip-field/chip-field.js +2 -0
  65. package/esm/chips/chip/chip-adapter.d.ts +3 -0
  66. package/esm/chips/chip/chip-adapter.js +14 -4
  67. package/esm/chips/chip/chip-constants.d.ts +2 -0
  68. package/esm/chips/chip/chip-constants.js +2 -1
  69. package/esm/chips/chip/chip-core.d.ts +4 -0
  70. package/esm/chips/chip/chip-core.js +9 -0
  71. package/esm/chips/chip/chip.d.ts +6 -0
  72. package/esm/chips/chip/chip.js +10 -0
  73. package/esm/chips/chip-set/chip-set.d.ts +1 -1
  74. package/esm/chips/chip-set/chip-set.js +1 -1
  75. package/esm/circular-progress/circular-progress.d.ts +1 -2
  76. package/esm/circular-progress/circular-progress.js +1 -2
  77. package/esm/color-picker/color-picker.d.ts +2 -0
  78. package/esm/color-picker/color-picker.js +3 -1
  79. package/esm/core/utils/a11y-utils.js +17 -0
  80. package/esm/core/utils/utils.js +8 -2
  81. package/esm/date-picker/date-picker.d.ts +2 -0
  82. package/esm/date-picker/date-picker.js +2 -0
  83. package/esm/date-range-picker/date-range-picker.d.ts +2 -0
  84. package/esm/date-range-picker/date-range-picker.js +2 -0
  85. package/esm/deprecated/button/deprecated-button.js +3 -3
  86. package/esm/deprecated/icon-button/deprecated-icon-button.js +2 -2
  87. package/esm/dialog/dialog.d.ts +1 -1
  88. package/esm/dialog/dialog.js +1 -1
  89. package/esm/divider/divider.d.ts +1 -1
  90. package/esm/divider/divider.js +1 -1
  91. package/esm/drawer/base/base-drawer-adapter.d.ts +2 -0
  92. package/esm/drawer/base/base-drawer-adapter.js +3 -0
  93. package/esm/drawer/base/base-drawer-core.js +3 -0
  94. package/esm/drawer/drawer/drawer.d.ts +2 -0
  95. package/esm/drawer/drawer/drawer.js +3 -1
  96. package/esm/drawer/mini-drawer/mini-drawer.d.ts +2 -0
  97. package/esm/drawer/mini-drawer/mini-drawer.js +3 -1
  98. package/esm/drawer/modal-drawer/modal-drawer.d.ts +2 -0
  99. package/esm/drawer/modal-drawer/modal-drawer.js +3 -1
  100. package/esm/expansion-panel/expansion-panel.d.ts +1 -1
  101. package/esm/expansion-panel/expansion-panel.js +1 -1
  102. package/esm/field/field-adapter.js +2 -2
  103. package/esm/field/field-core.d.ts +3 -3
  104. package/esm/field/field.d.ts +1 -2
  105. package/esm/field/field.js +1 -2
  106. package/esm/file-picker/file-picker.d.ts +2 -3
  107. package/esm/file-picker/file-picker.js +2 -3
  108. package/esm/floating-action-button/floating-action-button.d.ts +1 -1
  109. package/esm/floating-action-button/floating-action-button.js +1 -1
  110. package/esm/focus-indicator/focus-indicator-constants.d.ts +1 -11
  111. package/esm/focus-indicator/focus-indicator-constants.js +2 -17
  112. package/esm/focus-indicator/focus-indicator.d.ts +53 -26
  113. package/esm/focus-indicator/focus-indicator.js +139 -62
  114. package/esm/focus-indicator/index.d.ts +0 -2
  115. package/esm/focus-indicator/index.js +0 -2
  116. package/esm/icon/icon.d.ts +1 -1
  117. package/esm/icon/icon.js +1 -1
  118. package/esm/icon-button/icon-button.d.ts +2 -0
  119. package/esm/icon-button/icon-button.js +2 -0
  120. package/esm/inline-message/inline-message.d.ts +1 -1
  121. package/esm/inline-message/inline-message.js +1 -1
  122. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +2 -0
  123. package/esm/keyboard-shortcut/keyboard-shortcut.js +2 -0
  124. package/esm/label/label.d.ts +1 -1
  125. package/esm/label/label.js +1 -1
  126. package/esm/label-value/label-value.d.ts +1 -1
  127. package/esm/label-value/label-value.js +1 -1
  128. package/esm/linear-progress/linear-progress.d.ts +1 -2
  129. package/esm/linear-progress/linear-progress.js +1 -2
  130. package/esm/list/list/list.d.ts +1 -1
  131. package/esm/list/list/list.js +2 -2
  132. package/esm/list/list-item/list-item-constants.js +1 -1
  133. package/esm/list/list-item/list-item-core.d.ts +2 -0
  134. package/esm/list/list-item/list-item-core.js +29 -6
  135. package/esm/list/list-item/list-item.d.ts +1 -0
  136. package/esm/list/list-item/list-item.js +2 -1
  137. package/esm/list-dropdown/list-dropdown-constants.d.ts +11 -1
  138. package/esm/list-dropdown/list-dropdown-constants.js +6 -1
  139. package/esm/list-dropdown/list-dropdown-utils.d.ts +3 -1
  140. package/esm/list-dropdown/list-dropdown-utils.js +69 -21
  141. package/esm/menu/menu-adapter.d.ts +2 -0
  142. package/esm/menu/menu-adapter.js +12 -8
  143. package/esm/menu/menu-constants.d.ts +1 -0
  144. package/esm/menu/menu-constants.js +3 -2
  145. package/esm/menu/menu-core.d.ts +5 -0
  146. package/esm/menu/menu-core.js +41 -2
  147. package/esm/menu/menu.d.ts +17 -0
  148. package/esm/menu/menu.js +15 -1
  149. package/esm/open-icon/open-icon.d.ts +2 -1
  150. package/esm/open-icon/open-icon.js +2 -1
  151. package/esm/overlay/overlay.d.ts +1 -2
  152. package/esm/overlay/overlay.js +1 -2
  153. package/esm/page-state/page-state.d.ts +2 -1
  154. package/esm/page-state/page-state.js +2 -1
  155. package/esm/paginator/paginator-core.d.ts +16 -0
  156. package/esm/paginator/paginator-core.js +29 -9
  157. package/esm/paginator/paginator.d.ts +38 -0
  158. package/esm/paginator/paginator.js +46 -0
  159. package/esm/popover/popover-adapter.js +1 -1
  160. package/esm/popover/popover-constants.d.ts +4 -0
  161. package/esm/popover/popover-constants.js +4 -2
  162. package/esm/popover/popover-core.d.ts +5 -1
  163. package/esm/popover/popover-core.js +13 -0
  164. package/esm/popover/popover.d.ts +6 -2
  165. package/esm/popover/popover.js +10 -2
  166. package/esm/profile-card/profile-card.d.ts +3 -0
  167. package/esm/profile-card/profile-card.js +3 -0
  168. package/esm/radio/radio/radio.d.ts +1 -2
  169. package/esm/radio/radio/radio.js +1 -2
  170. package/esm/scaffold/scaffold.d.ts +1 -1
  171. package/esm/scaffold/scaffold.js +1 -1
  172. package/esm/select/core/base-select-constants.d.ts +4 -0
  173. package/esm/select/core/base-select-core.d.ts +22 -2
  174. package/esm/select/core/base-select-core.js +217 -40
  175. package/esm/select/option/option.d.ts +2 -0
  176. package/esm/select/option/option.js +2 -0
  177. package/esm/select/option-group/option-group.d.ts +2 -0
  178. package/esm/select/option-group/option-group.js +2 -0
  179. package/esm/select/select/select-constants.d.ts +5 -0
  180. package/esm/select/select/select-constants.js +5 -2
  181. package/esm/select/select/select.d.ts +14 -2
  182. package/esm/select/select/select.js +23 -2
  183. package/esm/select/select-dropdown/select-dropdown.d.ts +2 -0
  184. package/esm/select/select-dropdown/select-dropdown.js +2 -0
  185. package/esm/skeleton/skeleton.d.ts +1 -1
  186. package/esm/skeleton/skeleton.js +1 -1
  187. package/esm/skip-link/skip-link.d.ts +1 -1
  188. package/esm/skip-link/skip-link.js +1 -1
  189. package/esm/slider/slider.d.ts +1 -1
  190. package/esm/slider/slider.js +1 -1
  191. package/esm/split-button/split-button.d.ts +1 -1
  192. package/esm/split-button/split-button.js +2 -2
  193. package/esm/split-view/split-view/split-view.d.ts +2 -0
  194. package/esm/split-view/split-view/split-view.js +2 -0
  195. package/esm/split-view/split-view-panel/split-view-panel.d.ts +2 -0
  196. package/esm/split-view/split-view-panel/split-view-panel.js +3 -1
  197. package/esm/stack/stack.d.ts +1 -8
  198. package/esm/stack/stack.js +1 -8
  199. package/esm/state-layer/state-layer.d.ts +1 -1
  200. package/esm/state-layer/state-layer.js +2 -2
  201. package/esm/stepper/step/step.d.ts +2 -0
  202. package/esm/stepper/step/step.js +3 -1
  203. package/esm/stepper/stepper/stepper.d.ts +2 -0
  204. package/esm/stepper/stepper/stepper.js +2 -0
  205. package/esm/table/table-adapter.d.ts +4 -4
  206. package/esm/table/table-adapter.js +4 -4
  207. package/esm/table/table-core.js +2 -2
  208. package/esm/table/table-utils.d.ts +2 -2
  209. package/esm/table/table-utils.js +25 -18
  210. package/esm/table/table.d.ts +3 -1
  211. package/esm/table/table.js +4 -1
  212. package/esm/tabs/tab/tab-adapter.js +2 -2
  213. package/esm/tabs/tab/tab.d.ts +2 -0
  214. package/esm/tabs/tab/tab.js +2 -0
  215. package/esm/tabs/tab-bar/tab-bar.d.ts +1 -1
  216. package/esm/tabs/tab-bar/tab-bar.js +1 -1
  217. package/esm/text-field/text-field-adapter.d.ts +6 -4
  218. package/esm/text-field/text-field-adapter.js +11 -4
  219. package/esm/text-field/text-field-core.d.ts +4 -0
  220. package/esm/text-field/text-field-core.js +13 -2
  221. package/esm/text-field/text-field.d.ts +1 -1
  222. package/esm/text-field/text-field.js +1 -1
  223. package/esm/time-picker/time-picker-adapter.js +1 -0
  224. package/esm/time-picker/time-picker-core.js +3 -3
  225. package/esm/time-picker/time-picker.d.ts +2 -0
  226. package/esm/time-picker/time-picker.js +2 -0
  227. package/esm/toast/toast-adapter.d.ts +20 -0
  228. package/esm/toast/toast-adapter.js +30 -0
  229. package/esm/toast/toast-core.d.ts +17 -0
  230. package/esm/toast/toast-core.js +66 -0
  231. package/esm/toast/toast.d.ts +9 -2
  232. package/esm/toast/toast.js +10 -1
  233. package/esm/toolbar/toolbar.d.ts +1 -3
  234. package/esm/toolbar/toolbar.js +1 -3
  235. package/esm/tooltip/tooltip-adapter.d.ts +6 -0
  236. package/esm/tooltip/tooltip-adapter.js +9 -0
  237. package/esm/tooltip/tooltip-constants.d.ts +1 -0
  238. package/esm/tooltip/tooltip-constants.js +2 -1
  239. package/esm/tooltip/tooltip-core.d.ts +20 -0
  240. package/esm/tooltip/tooltip-core.js +96 -2
  241. package/esm/tooltip/tooltip.d.ts +1 -1
  242. package/esm/tooltip/tooltip.js +2 -2
  243. package/esm/view-switcher/view/view.d.ts +2 -0
  244. package/esm/view-switcher/view/view.js +2 -0
  245. package/esm/view-switcher/view-switcher.d.ts +2 -0
  246. package/esm/view-switcher/view-switcher.js +2 -0
  247. package/package.json +4 -4
  248. package/sass/focus-indicator/focus-indicator.scss +1 -1
  249. package/sass/icon-button/forge-icon-button.scss +3 -3
  250. package/sass/list/forge-list.scss +6 -6
  251. package/sass/state-layer/_core.scss +2 -0
  252. package/sass/table/_core.scss +13 -1
  253. package/sass/tooltip/_core.scss +0 -2
  254. package/esm/focus-indicator/focus-indicator-adapter.d.ts +0 -29
  255. package/esm/focus-indicator/focus-indicator-adapter.js +0 -37
  256. package/esm/focus-indicator/focus-indicator-core.d.ts +0 -48
  257. package/esm/focus-indicator/focus-indicator-core.js +0 -129
@@ -15,6 +15,8 @@ declare global {
15
15
  /**
16
16
  * @tag forge-accordion
17
17
  *
18
+ * @summary Accordions wrap a collection of expansion panels to ensure that only one panel is expanded at a time.
19
+ *
18
20
  * @dependency forge-expansion-panel
19
21
  *
20
22
  * @fires {CustomEvent<IExpansionPanelComponent>} forge-accordion-toggle - Dispatched when a child expansion panel is toggled. Includes the related expansion panel element in the event detail.
@@ -13,6 +13,8 @@ import { AccordionCore } from './accordion-core';
13
13
  /**
14
14
  * @tag forge-accordion
15
15
  *
16
+ * @summary Accordions wrap a collection of expansion panels to ensure that only one panel is expanded at a time.
17
+ *
16
18
  * @dependency forge-expansion-panel
17
19
  *
18
20
  * @fires {CustomEvent<IExpansionPanelComponent>} forge-accordion-toggle - Dispatched when a child expansion panel is toggled. Includes the related expansion panel element in the event detail.
@@ -8,7 +8,7 @@ import { replaceElement } from '../../core/utils/utils';
8
8
  import { BaseAdapter } from '../../core/base/base-adapter';
9
9
  import { APP_BAR_CONSTANTS } from './app-bar-constants';
10
10
  import { STATE_LAYER_CONSTANTS } from '../../state-layer';
11
- import { FOCUS_INDICATOR_CONSTANTS } from '../../focus-indicator';
11
+ import { FOCUS_INDICATOR_TAG_NAME } from '../../focus-indicator';
12
12
  export class AppBarAdapter extends BaseAdapter {
13
13
  constructor(component) {
14
14
  super(component);
@@ -50,7 +50,7 @@ export class AppBarAdapter extends BaseAdapter {
50
50
  this._logoTitleContainerElement = replaceElement(this._logoTitleContainerElement, document.createElement('div'));
51
51
  this._logoTitleContainerElement.classList.add(APP_BAR_CONSTANTS.classes.LOGO_TITLE_CONTAINER);
52
52
  this._logoTitleContainerElement.querySelector(STATE_LAYER_CONSTANTS.elementName)?.remove();
53
- this._logoTitleContainerElement.querySelector(FOCUS_INDICATOR_CONSTANTS.elementName)?.remove();
53
+ this._logoTitleContainerElement.querySelector(FOCUS_INDICATOR_TAG_NAME)?.remove();
54
54
  }
55
55
  }
56
56
  setTarget(value) {
@@ -24,7 +24,7 @@ declare global {
24
24
  /**
25
25
  * @tag forge-app-bar
26
26
  *
27
- * @description App bars are a collection of components placed as a horizontal bar at the top of the screen. They typically contain a logo, title, and optional application-wide actions.
27
+ * @summary App bars are headers used to display branding, navigation, and actions at the top of an application. They typically contain a logo, title, and various action items.
28
28
  *
29
29
  * @property {string} titleText - The text to display in the title.
30
30
  * @property {AppBarElevation} [elevation="raised"] - The elevation of the app bar.
@@ -14,7 +14,7 @@ const styles = ':host{--_app-bar-background:var(--forge-app-bar-background, var(
14
14
  /**
15
15
  * @tag forge-app-bar
16
16
  *
17
- * @description App bars are a collection of components placed as a horizontal bar at the top of the screen. They typically contain a logo, title, and optional application-wide actions.
17
+ * @summary App bars are headers used to display branding, navigation, and actions at the top of an application. They typically contain a logo, title, and various action items.
18
18
  *
19
19
  * @property {string} titleText - The text to display in the title.
20
20
  * @property {AppBarElevation} [elevation="raised"] - The elevation of the app bar.
@@ -17,7 +17,7 @@ declare global {
17
17
  /**
18
18
  * @tag forge-app-bar-help-button
19
19
  *
20
- * @description A utility component with predefined icon and descriptions for use in an app bar `end` slot.
20
+ * @summary A help button component with a predefined help icon that displays a dropdown menu when clicked, designed for use in an app bar's end slot.
21
21
  *
22
22
  * @property {IMenuOption[]} [options=[]] - The menu options to display when the button is clicked
23
23
  * @property {string} [icon=help] - The name of an alternative icon to display.
@@ -18,7 +18,7 @@ const template = '<template><forge-menu placement=\"bottom-end\"><forge-icon-but
18
18
  /**
19
19
  * @tag forge-app-bar-help-button
20
20
  *
21
- * @description A utility component with predefined icon and descriptions for use in an app bar `end` slot.
21
+ * @summary A help button component with a predefined help icon that displays a dropdown menu when clicked, designed for use in an app bar's end slot.
22
22
  *
23
23
  * @property {IMenuOption[]} [options=[]] - The menu options to display when the button is clicked
24
24
  * @property {string} [icon=help] - The name of an alternative icon to display.
@@ -15,7 +15,7 @@ declare global {
15
15
  /**
16
16
  * @tag forge-app-bar-menu-button
17
17
  *
18
- * @description A utility component with predefined icon and descriptions for use in an app bar `start` slot.
18
+ * @summary A menu toggle button component with a predefined hamburger menu icon, typically used in an app bar's start slot to open navigation menus.
19
19
  *
20
20
  * @property {string} [icon=menu] - The name of an alternative icon to display.
21
21
  *
@@ -16,7 +16,7 @@ const template = '<template><forge-icon-button theme=\"app-bar\"><forge-icon nam
16
16
  /**
17
17
  * @tag forge-app-bar-menu-button
18
18
  *
19
- * @description A utility component with predefined icon and descriptions for use in an app bar `start` slot.
19
+ * @summary A menu toggle button component with a predefined hamburger menu icon, typically used in an app bar's start slot to open navigation menus.
20
20
  *
21
21
  * @property {string} [icon=menu] - The name of an alternative icon to display.
22
22
  *
@@ -19,6 +19,8 @@ export interface IAppBarNotificationButtonComponent extends IBaseComponent {
19
19
  /**
20
20
  * @tag forge-app-bar-notification-button
21
21
  *
22
+ * @summary A notification button component with a predefined notification bell icon that can display a badge with count or dot indicator, designed for use in app bars.
23
+ *
22
24
  * @property {number | string} [count = 0] - The number to display in the badge.
23
25
  * @property {boolean} [dot = false] - Whether to display the dot variant of the badge or not.
24
26
  * @property {boolean} [showBadge = false] - Whether to display the badge or not.
@@ -18,6 +18,8 @@ const template = '<template><forge-icon-button theme=\"app-bar\"><forge-icon></f
18
18
  /**
19
19
  * @tag forge-app-bar-notification-button
20
20
  *
21
+ * @summary A notification button component with a predefined notification bell icon that can display a badge with count or dot indicator, designed for use in app bars.
22
+ *
21
23
  * @property {number | string} [count = 0] - The number to display in the badge.
22
24
  * @property {boolean} [dot = false] - Whether to display the dot variant of the badge or not.
23
25
  * @property {boolean} [showBadge = false] - Whether to display the badge or not.
@@ -6,7 +6,7 @@
6
6
  import { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';
7
7
  import { IAppBarProfileButtonComponent } from './app-bar-profile-button';
8
8
  import { IAppBarProfileCardConfig } from './app-bar-profile-button-constants';
9
- import { IPopoverComponent } from '../../popover';
9
+ import { type IPopoverComponent } from '../../popover';
10
10
  export interface IAppBarProfileButtonAdapter extends IBaseAdapter {
11
11
  popupElement: IPopoverComponent | undefined;
12
12
  initialize(): void;
@@ -25,6 +25,7 @@ export interface IAppBarProfileButtonAdapter extends IBaseAdapter {
25
25
  }
26
26
  export declare class AppBarProfileButtonAdapter extends BaseAdapter<IAppBarProfileButtonComponent> implements IAppBarProfileButtonAdapter {
27
27
  private _avatarElement;
28
+ private _tooltipElement;
28
29
  private _iconButtonElement;
29
30
  private _popupElement?;
30
31
  private _profileCardElement?;
@@ -20,6 +20,7 @@ export class AppBarProfileButtonAdapter extends BaseAdapter {
20
20
  }
21
21
  initialize() {
22
22
  this._avatarElement = getLightElement(this._component, AVATAR_CONSTANTS.elementName);
23
+ this._tooltipElement = getLightElement(this._component, 'forge-tooltip');
23
24
  this._iconButtonElement = getLightElement(this._component, ICON_BUTTON_CONSTANTS.elementName);
24
25
  const originalAriaLabelledBy = this._iconButtonElement.getAttribute('aria-labelledby'); // Set by tooltip
25
26
  this._forwardObserver = forwardAttributes(this._component, APP_BAR_PROFILE_BUTTON_CONSTANTS.forwardedAttributes, (name, value) => {
@@ -97,6 +98,7 @@ export class AppBarProfileButtonAdapter extends BaseAdapter {
97
98
  }
98
99
  setAvatarText(value) {
99
100
  this._avatarElement.text = value;
101
+ this._tooltipElement.textContent = `View ${value}'s profile`;
100
102
  removeAllChildren(this._avatarElement);
101
103
  }
102
104
  setAvatarIcon(value) {
@@ -29,6 +29,8 @@ declare global {
29
29
  /**
30
30
  * @tag forge-app-bar-profile-button
31
31
  *
32
+ * @summary A user profile button component that displays an avatar and opens a profile card popup with user information and action buttons when clicked.
33
+ *
32
34
  * @property {string} avatarImageUrl - The url of the avatar image to display.
33
35
  * @property {number} [avatarLetterCount=2] - The number of letters to display in the avatar.
34
36
  * @property {string} avatarText - The text to display in the avatar.
@@ -18,6 +18,8 @@ const template = '<template><forge-icon-button theme=\"app-bar\"><forge-avatar a
18
18
  /**
19
19
  * @tag forge-app-bar-profile-button
20
20
  *
21
+ * @summary A user profile button component that displays an avatar and opens a profile card popup with user information and action buttons when clicked.
22
+ *
21
23
  * @property {string} avatarImageUrl - The url of the avatar image to display.
22
24
  * @property {number} [avatarLetterCount=2] - The number of letters to display in the avatar.
23
25
  * @property {string} avatarText - The text to display in the avatar.
@@ -21,6 +21,8 @@ declare global {
21
21
  /**
22
22
  * @tag forge-app-bar-search
23
23
  *
24
+ * @summary A search input component with integrated search icon and styling optimized for use within app bars, supporting keyboard interaction and customizable actions.
25
+ *
24
26
  * @slot - The default (unnamed) slot is where child `<input>` elements will be placed.
25
27
  * @slot action - Places actions at the end of the input.
26
28
  *
@@ -17,6 +17,8 @@ const styles = ':host{display:block;color:var(--_app-bar-theme-foreground)}:host
17
17
  /**
18
18
  * @tag forge-app-bar-search
19
19
  *
20
+ * @summary A search input component with integrated search icon and styling optimized for use within app bars, supporting keyboard interaction and customizable actions.
21
+ *
20
22
  * @slot - The default (unnamed) slot is where child `<input>` elements will be placed.
21
23
  * @slot action - Places actions at the end of the input.
22
24
  *
@@ -138,6 +138,7 @@ export class AutocompleteCore extends ListDropdownAwareCore {
138
138
  }
139
139
  }
140
140
  _onClear(evt) {
141
+ evt.preventDefault();
141
142
  this._filterText = '';
142
143
  this._clearValue();
143
144
  this._adapter.setSelectedText(this._getSelectedText());
@@ -352,14 +353,26 @@ export class AutocompleteCore extends ListDropdownAwareCore {
352
353
  asyncStyle: ListDropdownAsyncStyle.Skeleton,
353
354
  headerBuilder: this._popupHeaderBuilder,
354
355
  footerBuilder: this._popupFooterBuilder,
355
- transform: label => {
356
- if (this._filterText) {
357
- // Highlight the filter text within the label
356
+ transform: (label, option, isSelected) => {
357
+ const inputValue = this._adapter.getInputValue();
358
+ const isUserTyping = this._filterText &&
359
+ inputValue?.length &&
360
+ inputValue !== label && // User hasn't just selected this exact option
361
+ this._adapter.hasFocus();
362
+ if (isUserTyping) {
363
+ // When filtering: highlight only the matching search text
358
364
  const highlightElement = highlightTextHTML(label, this._filterText);
359
365
  if (highlightElement) {
360
366
  return highlightElement;
361
367
  }
362
368
  }
369
+ else if (isSelected) {
370
+ // When not filtering: bold the entire text of selected options
371
+ const boldElement = document.createElement('span');
372
+ boldElement.style.fontWeight = 'bold';
373
+ boldElement.textContent = label;
374
+ return boldElement;
375
+ }
363
376
  return label;
364
377
  },
365
378
  allowBusy: true,
@@ -41,6 +41,8 @@ declare global {
41
41
  /**
42
42
  * @tag forge-autocomplete
43
43
  *
44
+ * @summary Autocomplete components provide real-time typeahead suggestions as users type in a text field. Use autocompletes to help users quickly find and select from a list of options, improving form usability and data accuracy.
45
+ *
44
46
  * @event {CustomEvent<any>} forge-autocomplete-change - Fired when the value changes.
45
47
  * @event {CustomEvent<IAutocompleteSelectEventData>} forge-autocomplete-select - Fired when an option is selected. Only applies when in "stateless" `mode`.
46
48
  * @event {CustomEvent<void>} forge-autocomplete-scrolled-bottom - Fired when the dropdown is scrolled to the bottom. Only applies when `observe-scroll` is enabled.
@@ -22,6 +22,8 @@ const styles = ':host{display:block}:host([hidden]){display:none}';
22
22
  /**
23
23
  * @tag forge-autocomplete
24
24
  *
25
+ * @summary Autocomplete components provide real-time typeahead suggestions as users type in a text field. Use autocompletes to help users quickly find and select from a list of options, improving form usability and data accuracy.
26
+ *
25
27
  * @event {CustomEvent<any>} forge-autocomplete-change - Fired when the value changes.
26
28
  * @event {CustomEvent<IAutocompleteSelectEventData>} forge-autocomplete-select - Fired when an option is selected. Only applies when in "stateless" `mode`.
27
29
  * @event {CustomEvent<void>} forge-autocomplete-scrolled-bottom - Fired when the dropdown is scrolled to the bottom. Only applies when `observe-scroll` is enabled.
@@ -20,7 +20,7 @@ export declare const AVATAR_TAG_NAME: keyof HTMLElementTagNameMap;
20
20
  /**
21
21
  * @tag forge-avatar
22
22
  *
23
- * @summary Avatars represent an entity via text or image.
23
+ * @summary Avatars represent an entity via text or image. Use avatars to visually represent users, objects, or identifiers in your application.
24
24
  *
25
25
  * @cssproperty {string} --forge-avatar-background - The background color of the avatar.
26
26
  * @cssproperty {number} --forge-avatar-shape - The border radius of the avatar, defaults to 50%.
@@ -28,7 +28,7 @@ export const AVATAR_TAG_NAME = 'forge-avatar';
28
28
  /**
29
29
  * @tag forge-avatar
30
30
  *
31
- * @summary Avatars represent an entity via text or image.
31
+ * @summary Avatars represent an entity via text or image. Use avatars to visually represent users, objects, or identifiers in your application.
32
32
  *
33
33
  * @cssproperty {string} --forge-avatar-background - The background color of the avatar.
34
34
  * @cssproperty {number} --forge-avatar-shape - The border radius of the avatar, defaults to 50%.
@@ -20,6 +20,8 @@ declare global {
20
20
  /**
21
21
  * @tag forge-backdrop
22
22
  *
23
+ * @summary Backdrops provide a semi-transparent overlay behind modal content like dialogs and drawers. These are building blocks for creating modal experiences, not intended to be used directly.
24
+ *
23
25
  * @property {boolean} [visible=false] - Whether the backdrop is visible.
24
26
  * @property {boolean} [fixed=false] - Whether the backdrop uses "fixed" or "relative" positioning.
25
27
  *
@@ -12,6 +12,8 @@ const styles = '@keyframes enter{from{opacity:0}to{opacity:var(--_backdrop-opaci
12
12
  /**
13
13
  * @tag forge-backdrop
14
14
  *
15
+ * @summary Backdrops provide a semi-transparent overlay behind modal content like dialogs and drawers. These are building blocks for creating modal experiences, not intended to be used directly.
16
+ *
15
17
  * @property {boolean} [visible=false] - Whether the backdrop is visible.
16
18
  * @property {boolean} [fixed=false] - Whether the backdrop uses "fixed" or "relative" positioning.
17
19
  *
@@ -22,6 +22,8 @@ export declare const BADGE_TAG_NAME: keyof HTMLElementTagNameMap;
22
22
  /**
23
23
  * @tag forge-badge
24
24
  *
25
+ * @summary Badges display small amounts of non-interactive information like counts, status indicators, or notifications.
26
+ *
25
27
  * @cssproperty --forge-badge-background - The background color.
26
28
  * @cssproperty --forge-badge-color - The text color.
27
29
  * @cssproperty --forge-badge-shape - The shape radius.
@@ -15,6 +15,8 @@ export const BADGE_TAG_NAME = 'forge-badge';
15
15
  /**
16
16
  * @tag forge-badge
17
17
  *
18
+ * @summary Badges display small amounts of non-interactive information like counts, status indicators, or notifications.
19
+ *
18
20
  * @cssproperty --forge-badge-background - The background color.
19
21
  * @cssproperty --forge-badge-color - The text color.
20
22
  * @cssproperty --forge-badge-shape - The shape radius.
@@ -25,7 +25,7 @@ declare global {
25
25
  /**
26
26
  * @tag forge-banner
27
27
  *
28
- * @summary Banners are used to inform users of important information, such as errors, warnings, or success messages.
28
+ * @summary Banners are used to inform users of important information, such as errors, warnings, or success messages. Use banners for non-critical messages that require user attention but do not interrupt workflow.
29
29
  *
30
30
  * @property {boolean} [dismissed=false] - Controls the visibility of the banner.
31
31
  * @property {boolean} [persistent=false] - Controls the visibility of the built-in dismiss button.
@@ -18,7 +18,7 @@ const styles = ':host{display:block;container-type:inline-size}:host([hidden]){d
18
18
  /**
19
19
  * @tag forge-banner
20
20
  *
21
- * @summary Banners are used to inform users of important information, such as errors, warnings, or success messages.
21
+ * @summary Banners are used to inform users of important information, such as errors, warnings, or success messages. Use banners for non-critical messages that require user attention but do not interrupt workflow.
22
22
  *
23
23
  * @property {boolean} [dismissed=false] - Controls the visibility of the banner.
24
24
  * @property {boolean} [persistent=false] - Controls the visibility of the built-in dismiss button.
@@ -6,7 +6,7 @@
6
6
  import { getShadowElement } from '@tylertech/forge-core';
7
7
  import { tylIconArrowDropDown } from '@tylertech/tyler-icons';
8
8
  import { BaseAdapter } from '../../core/base/base-adapter';
9
- import { FOCUS_INDICATOR_CONSTANTS } from '../../focus-indicator';
9
+ import { FOCUS_INDICATOR_TAG_NAME } from '../../focus-indicator';
10
10
  import { STATE_LAYER_CONSTANTS } from '../../state-layer';
11
11
  import { BASE_BUTTON_CONSTANTS } from './base-button-constants';
12
12
  import { BUTTON_FORM_ATTRIBUTES, cloneAttributes } from '../../core/utils/reflect-utils';
@@ -16,7 +16,7 @@ export class BaseButtonAdapter extends BaseAdapter {
16
16
  constructor(component) {
17
17
  super(component);
18
18
  this._rootElement = getShadowElement(this._component, BASE_BUTTON_CONSTANTS.selectors.ROOT);
19
- this._focusIndicatorElement = getShadowElement(this._component, FOCUS_INDICATOR_CONSTANTS.elementName);
19
+ this._focusIndicatorElement = getShadowElement(this._component, FOCUS_INDICATOR_TAG_NAME);
20
20
  this._stateLayerElement = getShadowElement(this._component, STATE_LAYER_CONSTANTS.elementName);
21
21
  this._defaultSlotElement = getShadowElement(this._component, BASE_BUTTON_CONSTANTS.selectors.DEFAULT_SLOT);
22
22
  this._endSlotElement = getShadowElement(this._component, BASE_BUTTON_CONSTANTS.selectors.END_SLOT);
@@ -20,12 +20,7 @@ declare global {
20
20
  /**
21
21
  * @tag forge-button
22
22
  *
23
- * @summary Buttons represent actions that a user can take.
24
- *
25
- * @description
26
- * Buttons are used when a user needs to take an action, such as submitting a form or opening a dialog.
27
- * Buttons can be used to trigger an action or to navigate to a new location. Buttons can be styled with
28
- * a variety of themes and variants.
23
+ * @summary Buttons are used when a user needs to take an action. They can be used to trigger an action, navigate to a new location, and can be styled with a variety of themes and variants.
29
24
  *
30
25
  * @dependency forge-icon
31
26
  * @dependency forge-focus-indicator
@@ -18,12 +18,7 @@ const styles = ':host{--_button-display:var(--forge-button-display, inline-grid)
18
18
  /**
19
19
  * @tag forge-button
20
20
  *
21
- * @summary Buttons represent actions that a user can take.
22
- *
23
- * @description
24
- * Buttons are used when a user needs to take an action, such as submitting a form or opening a dialog.
25
- * Buttons can be used to trigger an action or to navigate to a new location. Buttons can be styled with
26
- * a variety of themes and variants.
21
+ * @summary Buttons are used when a user needs to take an action. They can be used to trigger an action, navigate to a new location, and can be styled with a variety of themes and variants.
27
22
  *
28
23
  * @dependency forge-icon
29
24
  * @dependency forge-focus-indicator
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { getShadowElement } from '@tylertech/forge-core';
7
7
  import { BaseAdapter } from '../core';
8
- import { FOCUS_INDICATOR_CONSTANTS } from '../focus-indicator';
8
+ import { FOCUS_INDICATOR_TAG_NAME } from '../focus-indicator';
9
9
  import { STATE_LAYER_CONSTANTS } from '../state-layer';
10
10
  import { BUTTON_AREA_CONSTANTS } from './button-area-constants';
11
11
  export class ButtonAreaAdapter extends BaseAdapter {
@@ -14,7 +14,7 @@ export class ButtonAreaAdapter extends BaseAdapter {
14
14
  this._rootElement = getShadowElement(component, BUTTON_AREA_CONSTANTS.selectors.ROOT);
15
15
  this._buttonSlotElement = getShadowElement(component, BUTTON_AREA_CONSTANTS.selectors.BUTTON_SLOT);
16
16
  this._contentSlotElement = getShadowElement(component, BUTTON_AREA_CONSTANTS.selectors.CONTENT_SLOT);
17
- this._focusIndicatorElement = getShadowElement(component, FOCUS_INDICATOR_CONSTANTS.elementName);
17
+ this._focusIndicatorElement = getShadowElement(component, FOCUS_INDICATOR_TAG_NAME);
18
18
  this._stateLayerElement = getShadowElement(component, STATE_LAYER_CONSTANTS.elementName);
19
19
  }
20
20
  setDisabled(value) {
@@ -15,10 +15,7 @@ declare global {
15
15
  /**
16
16
  * @tag forge-button-area
17
17
  *
18
- * @summary Button areas are used to create a clickable area that group related information and actions about a single subject.
19
- *
20
- * @description
21
- * The button area component wraps any arbitrary content with a `<button>` element to enable accessible clickable interfaces including nested controls and other complex content.
18
+ * @summary Button areas are used to create clickable areas that group related information and actions about a single subject. The button area component wraps any arbitrary content with a `<button>` element to enable accessible, clickable interfaces including nested controls and other complex content.
22
19
  *
23
20
  * @property {boolean} [disabled=false] - Sets whether the button area and slotted button are disabled. Setting this on one will also set it on the other.
24
21
  *
@@ -16,10 +16,7 @@ const styles = ':host{display:block;position:relative}:host .forge-button-area{c
16
16
  /**
17
17
  * @tag forge-button-area
18
18
  *
19
- * @summary Button areas are used to create a clickable area that group related information and actions about a single subject.
20
- *
21
- * @description
22
- * The button area component wraps any arbitrary content with a `<button>` element to enable accessible clickable interfaces including nested controls and other complex content.
19
+ * @summary Button areas are used to create clickable areas that group related information and actions about a single subject. The button area component wraps any arbitrary content with a `<button>` element to enable accessible, clickable interfaces including nested controls and other complex content.
23
20
  *
24
21
  * @property {boolean} [disabled=false] - Sets whether the button area and slotted button are disabled. Setting this on one will also set it on the other.
25
22
  *
@@ -7,11 +7,11 @@ import { getShadowElement } from '@tylertech/forge-core';
7
7
  import { BaseAdapter } from '../../core/base/base-adapter';
8
8
  import { isFocusable, setDefaultAria } from '../../constants';
9
9
  import { STATE_LAYER_CONSTANTS } from '../../state-layer/state-layer-constants';
10
- import { FOCUS_INDICATOR_CONSTANTS } from '../../focus-indicator/focus-indicator-constants';
10
+ import { FOCUS_INDICATOR_TAG_NAME } from '../../focus-indicator/focus-indicator';
11
11
  export class ButtonToggleAdapter extends BaseAdapter {
12
12
  constructor(component) {
13
13
  super(component);
14
- this._focusIndicatorElement = getShadowElement(component, FOCUS_INDICATOR_CONSTANTS.elementName);
14
+ this._focusIndicatorElement = getShadowElement(component, FOCUS_INDICATOR_TAG_NAME);
15
15
  this._stateLayerElement = getShadowElement(component, STATE_LAYER_CONSTANTS.elementName);
16
16
  }
17
17
  initialize() {
@@ -27,6 +27,8 @@ declare const ButtonToggleComponent_base: import("../../constants").AbstractCons
27
27
  /**
28
28
  * @tag forge-button-toggle
29
29
  *
30
+ * @summary Button toggles allow users to select from a group of choices with single or multiple selection.
31
+ *
30
32
  * @property {unknown} value - The value of the button toggle.
31
33
  * @property {boolean} [selected=false] - Whether or not the button is selected.
32
34
  * @property {boolean} [disabled=false] - Whether or not the button is disabled.
@@ -19,6 +19,8 @@ const styles = ':host{--_button-toggle-display:var(--forge-button-toggle-display
19
19
  /**
20
20
  * @tag forge-button-toggle
21
21
  *
22
+ * @summary Button toggles allow users to select from a group of choices with single or multiple selection.
23
+ *
22
24
  * @property {unknown} value - The value of the button toggle.
23
25
  * @property {boolean} [selected=false] - Whether or not the button is selected.
24
26
  * @property {boolean} [disabled=false] - Whether or not the button is disabled.
@@ -36,7 +36,7 @@ declare const ButtonToggleGroupComponent_base: import("../../constants").Abstrac
36
36
  /**
37
37
  * @tag forge-button-toggle-group
38
38
  *
39
- * @description Button toggle groups allow users to select one or more options from a set of related options.
39
+ * @summary Button toggle groups allow users to select one or more options from a set of button toggles.
40
40
  *
41
41
  * @property {any} value - The value of the selected button toggle(s).
42
42
  * @property {boolean} [outlined=true] - Whether or not the group should be outlined.
@@ -21,7 +21,7 @@ const styles = ':host{--_button-toggle-group-display:var(--forge-button-toggle-g
21
21
  /**
22
22
  * @tag forge-button-toggle-group
23
23
  *
24
- * @description Button toggle groups allow users to select one or more options from a set of related options.
24
+ * @summary Button toggle groups allow users to select one or more options from a set of button toggles.
25
25
  *
26
26
  * @property {any} value - The value of the selected button toggle(s).
27
27
  * @property {boolean} [outlined=true] - Whether or not the group should be outlined.
@@ -12,7 +12,7 @@ import { CALENDAR_MENU_CONSTANTS } from './calendar-menu-constants';
12
12
  import { CalendarMenuCore } from './calendar-menu-core';
13
13
  import { BaseComponent } from '../../core/base/base-component';
14
14
  const template = '<template><div class=\"forge-calendar-menu\" part=\"root\"></div></template>';
15
- const styles = '.forge-calendar-menu{background-color:var(--forge-theme-surface,#fff);position:relative;height:100%;width:100%;overflow:hidden}.forge-calendar-menu__view{position:absolute;top:0;left:0;height:100%;width:100%;background-color:inherit}.forge-calendar-menu__grid{max-height:var(--forge-calendar-menu-max-height,320px);display:grid;gap:16px;justify-items:center;align-items:center;padding:8px;box-sizing:border-box}.forge-calendar-menu__grid--three-col{grid-template-columns:repeat(3,1fr)}.forge-calendar-menu__grid--four-col{grid-template-columns:repeat(4,1fr)}.forge-calendar-menu__list{position:relative;background-color:inherit}.forge-calendar-menu__list__wrapper{position:relative;height:100%;overflow:auto}.forge-calendar-menu__list__wrapper::-webkit-scrollbar{height:var(--forge-scrollbar-height,16px);width:var(--forge-scrollbar-width,16px)}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-track{background-color:var(--forge-scrollbar-track-container,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-track:hover{background-color:var(--forge-scrollbar-track-container-hover,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-corner{background-color:var(--forge-scrollbar-track-container,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-thumb{height:var(--forge-scrollbar-thumb-min-height,32px);width:var(--forge-scrollbar-thumb-min-width,32px);border-radius:var(--forge-scrollbar-border-radius,calc(var(--forge-shape-full,9999px) * var(--forge-shape-factor,1)));border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-color:var(--forge-scrollbar-thumb-container,var(--forge-theme-surface-container-medium,#c2c2c2));background-clip:content-box}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--forge-scrollbar-thumb-container-hover,var(--forge-theme-surface-container-high,#9e9e9e))}.forge-calendar-menu__item--grid{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);display:flex;justify-content:center;align-items:center;position:relative;width:100%;height:100%;border-radius:4px;overflow:hidden;font-weight:500;user-select:none}.forge-calendar-menu__item--grid:not([disabled]){border:1px solid var(--forge-theme-outline,#e0e0e0);cursor:pointer}.forge-calendar-menu__item--grid[disabled]{color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar-menu__item--grid.forge-calendar-menu__item--selected{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar-menu__item--grid.forge-calendar-menu__item--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container, #d1d5ed)}.forge-calendar-menu__item--list{display:flex;align-items:center;justify-content:center;margin:0 4px;width:calc(100% - 8px);height:48px;border-radius:4px;overflow:hidden;text-align:center;cursor:pointer;position:relative}.forge-calendar-menu__item--list.forge-calendar-menu__item--selected{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar-menu__item--list.forge-calendar-menu__item--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container)}.forge-calendar-menu__item--focused,.forge-calendar-menu__item:focus{outline:0}.forge-calendar-menu--open{animation-duration:.2s;animation-name:scale-open;transform-origin:top center}.forge-calendar-menu--open[data-animation=fade]{animation-name:fade-in}.forge-calendar-menu--open[data-animation=none]{animation-duration:1ms}@media (prefers-reduced-motion){.forge-calendar-menu--open{animation-name:fade-in}}.forge-calendar-menu--closing{animation-duration:.2s;animation-name:scale-closed;transform-origin:top center}.forge-calendar-menu--closing[data-animation=fade]{animation-name:fade-out}.forge-calendar-menu--closing[data-animation=none]{animation-duration:1ms}@media (prefers-reduced-motion){.forge-calendar-menu--closing{animation-name:fade-out}}.forge-calendar-menu--slide-right .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:slide-out-to-right}@media (prefers-reduced-motion){.forge-calendar-menu--slide-right .forge-calendar-menu__view:first-child{animation-name:fade-out}}.forge-calendar-menu--slide-right .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:slide-in-from-left}@media (prefers-reduced-motion){.forge-calendar-menu--slide-right .forge-calendar-menu__view:last-child{animation-name:fade-in}}.forge-calendar-menu--slide-left .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:slide-out-to-left}@media (prefers-reduced-motion){.forge-calendar-menu--slide-left .forge-calendar-menu__view:first-child{animation-name:fade-out}}.forge-calendar-menu--slide-left .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:slide-in-from-right}@media (prefers-reduced-motion){.forge-calendar-menu--slide-left .forge-calendar-menu__view:last-child{animation-name:fade-in}}.forge-calendar-menu--replacing-view .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:fade-out}.forge-calendar-menu--replacing-view .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:fade-in}#scroll-spy-bottom{position:absolute;bottom:0;height:48px;pointer-events:none}#scroll-spy-top{position:absolute;top:0;height:48px;pointer-events:none}@keyframes scale-open{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes scale-closed{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.4)}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes slide-in-from-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-in-from-right{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-out-to-right{from{transform:translateX(0)}to{transform:translateX(100%)}}:host{display:block;position:absolute;top:0;left:0;height:100%;width:100%}:host([hidden]){display:none}:host([forge-popover-context=true]) .forge-calendar-menu{background-color:var(--forge-theme-surface-bright,#fff)}';
15
+ const styles = '.forge-calendar-menu{background-color:var(--forge-theme-surface,#fff);position:relative;height:100%;width:100%;overflow:hidden}.forge-calendar-menu__view{position:absolute;top:0;left:0;height:100%;width:100%;background-color:inherit}.forge-calendar-menu__grid{max-height:var(--forge-calendar-menu-max-height,320px);display:grid;gap:16px;justify-items:center;align-items:center;padding:8px;box-sizing:border-box}.forge-calendar-menu__grid--three-col{grid-template-columns:repeat(3,1fr)}.forge-calendar-menu__grid--four-col{grid-template-columns:repeat(4,1fr)}.forge-calendar-menu__list{position:relative;background-color:inherit}.forge-calendar-menu__list__wrapper::-webkit-scrollbar{height:var(--forge-scrollbar-height,16px);width:var(--forge-scrollbar-width,16px)}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-track{background-color:var(--forge-scrollbar-track-container,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-track:hover{background-color:var(--forge-scrollbar-track-container-hover,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-corner{background-color:var(--forge-scrollbar-track-container,var(--forge-theme-surface-container-low,#ebebeb))}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-thumb{height:var(--forge-scrollbar-thumb-min-height,32px);width:var(--forge-scrollbar-thumb-min-width,32px);border-radius:var(--forge-scrollbar-border-radius,calc(var(--forge-shape-full,9999px) * var(--forge-shape-factor,1)));border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-color:var(--forge-scrollbar-thumb-container,var(--forge-theme-surface-container-medium,#c2c2c2));background-clip:content-box}.forge-calendar-menu__list__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--forge-scrollbar-thumb-container-hover,var(--forge-theme-surface-container-high,#9e9e9e))}.forge-calendar-menu__list__wrapper{position:relative;height:100%;overflow:auto}.forge-calendar-menu__item--grid{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);display:flex;justify-content:center;align-items:center;position:relative;width:100%;height:100%;border-radius:4px;overflow:hidden;font-weight:500;user-select:none}.forge-calendar-menu__item--grid:not([disabled]){border:1px solid var(--forge-theme-outline,#e0e0e0);cursor:pointer}.forge-calendar-menu__item--grid[disabled]{color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar-menu__item--grid.forge-calendar-menu__item--selected{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar-menu__item--grid.forge-calendar-menu__item--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container, #d1d5ed)}.forge-calendar-menu__item--list{display:flex;align-items:center;justify-content:center;margin:0 4px;width:calc(100% - 8px);height:48px;border-radius:4px;overflow:hidden;text-align:center;cursor:pointer;position:relative}.forge-calendar-menu__item--list.forge-calendar-menu__item--selected{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar-menu__item--list.forge-calendar-menu__item--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container)}.forge-calendar-menu__item--focused,.forge-calendar-menu__item:focus{outline:0}.forge-calendar-menu--open{animation-duration:.2s;animation-name:scale-open;transform-origin:top center}.forge-calendar-menu--open[data-animation=fade]{animation-name:fade-in}.forge-calendar-menu--open[data-animation=none]{animation-duration:1ms}@media (prefers-reduced-motion){.forge-calendar-menu--open{animation-name:fade-in}}.forge-calendar-menu--closing{animation-duration:.2s;animation-name:scale-closed;transform-origin:top center}.forge-calendar-menu--closing[data-animation=fade]{animation-name:fade-out}.forge-calendar-menu--closing[data-animation=none]{animation-duration:1ms}@media (prefers-reduced-motion){.forge-calendar-menu--closing{animation-name:fade-out}}.forge-calendar-menu--slide-right .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:slide-out-to-right}@media (prefers-reduced-motion){.forge-calendar-menu--slide-right .forge-calendar-menu__view:first-child{animation-name:fade-out}}.forge-calendar-menu--slide-right .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:slide-in-from-left}@media (prefers-reduced-motion){.forge-calendar-menu--slide-right .forge-calendar-menu__view:last-child{animation-name:fade-in}}.forge-calendar-menu--slide-left .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:slide-out-to-left}@media (prefers-reduced-motion){.forge-calendar-menu--slide-left .forge-calendar-menu__view:first-child{animation-name:fade-out}}.forge-calendar-menu--slide-left .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:slide-in-from-right}@media (prefers-reduced-motion){.forge-calendar-menu--slide-left .forge-calendar-menu__view:last-child{animation-name:fade-in}}.forge-calendar-menu--replacing-view .forge-calendar-menu__view:first-child{animation-duration:.2s;animation-name:fade-out}.forge-calendar-menu--replacing-view .forge-calendar-menu__view:last-child{animation-duration:.2s;animation-name:fade-in}#scroll-spy-bottom{position:absolute;bottom:0;height:48px;pointer-events:none}#scroll-spy-top{position:absolute;top:0;height:48px;pointer-events:none}@keyframes scale-open{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes scale-closed{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.4)}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes slide-in-from-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-in-from-right{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-out-to-right{from{transform:translateX(0)}to{transform:translateX(100%)}}:host{display:block;position:absolute;top:0;left:0;height:100%;width:100%}:host([hidden]){display:none}:host([forge-popover-context=true]) .forge-calendar-menu{background-color:var(--forge-theme-surface-bright,#fff)}';
16
16
  /**
17
17
  * @internal
18
18
  * @tag forge-calendar-menu
@@ -42,6 +42,8 @@ declare global {
42
42
  }
43
43
  }
44
44
  /**
45
+ * @summary A flexible calendar component for date selection with support for single dates, ranges, multiple selections, and extensive customization options.
46
+ *
45
47
  * @tag forge-calendar
46
48
  *
47
49
  * @property {Date} activeDate - The currently active date in the calendar.
@@ -18,8 +18,10 @@ import { StateLayerComponent } from '../state-layer';
18
18
  import { FocusIndicatorComponent } from '../focus-indicator';
19
19
  import { BaseComponent } from '../core/base/base-component';
20
20
  const template = '<template><div class=\"forge-calendar\" part=\"root\"><div id=\"view\" class=\"forge-calendar__view\" part=\"view\"><div id=\"date-view\" class=\"forge-calendar__date-view\" role=\"grid\" part=\"date-view\"><div role=\"rowgroup\" part=\"date-view-container\"><div id=\"day-row\" class=\"forge-calendar__date-view__row\" role=\"row\" part=\"date-view-row\"></div></div><div id=\"date-grid\" class=\"forge-calendar__date-grid\" role=\"rowgroup\" part=\"date-grid-container\"></div></div><forge-calendar-menu id=\"menu\" part=\"calendar-menu\"></forge-calendar-menu></div></div></template>';
21
- const styles = '.forge-calendar{width:var(--forge-calendar-width,100%);height:fit-content;position:relative}.forge-calendar__header{padding:var(--forge-calendar-controls-padding,0);display:flex;align-items:center;justify-content:space-between}.forge-calendar__footer{padding:var(--forge-calendar-controls-padding,0);display:flex;align-items:center;justify-content:space-between}.forge-calendar__view{position:relative}.forge-calendar__date-view{display:block}.forge-calendar__date-view__row{display:grid;grid-template-columns:repeat(7,1fr)}.forge-calendar__date-grid{display:grid}.forge-calendar__day{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label2-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .8125)));font-weight:var(--forge-typography-label2-font-weight,400);line-height:var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label2-letter-spacing, .0096153846em);text-transform:var(--forge-typography-label2-text-transform,inherit);text-decoration:var(--forge-typography-label2-text-decoration,inherit);display:flex;justify-content:center;align-items:center;min-width:0;padding:0;font-weight:700;user-select:none}.forge-calendar__day::after{float:left;padding-top:100%;content:\"\"}.forge-calendar__date{margin-top:var(--forge-calendar-row-gap,2px);min-width:0;padding:0;border-radius:50%;position:relative;outline:0;cursor:default;user-select:none}.forge-calendar__date::after{float:left;padding-top:100%;content:\"\"}.forge-calendar__date forge-focus-indicator{--forge-focus-indicator-shape:50%}.forge-calendar__date__inner{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);position:absolute;width:calc(100% - 2px);height:calc(100% - 2px);top:calc(2px / 2);left:calc(2px / 2);display:flex;justify-content:center;align-items:center;border-radius:inherit;box-sizing:border-box}.forge-calendar--show-today .forge-calendar__date--today:not([disabled]){color:var(--forge-theme-primary,#3f51b5);border-color:var(--forge-theme-primary,#3f51b5)}.forge-calendar--show-today .forge-calendar__date--today .forge-calendar__date__inner{border-color:inherit;border-width:1px;border-style:solid;font-weight:700}.forge-calendar--show-today .forge-calendar__date--today.forge-calendar__date--selected{color:var(--forge-theme-on-primary,#fff)}.forge-calendar:not(.forge-calendar--readonly) .forge-calendar__date:not([disabled]){cursor:pointer}.forge-calendar__date--selected:not([disabled]) .forge-calendar__date__inner{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar__date--selected[disabled] .forge-calendar__date__inner{background-color:var(--forge-theme-primary-container-minimum,#f7f8fc);color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar__date--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container)}.forge-calendar__date[disabled]{color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar__date-spacer{pointer-events:none}.forge-calendar--fixed-height .forge-calendar__date-spacer{margin-top:var(--forge-calendar-row-gap,2px)}.forge-calendar--fixed-height .forge-calendar__date-spacer::after{float:left;padding-top:100%;content:\"\"}.forge-calendar__range:not(.forge-calendar__date-spacer) .forge-calendar__range__target{background-color:var(--forge-theme-primary,#3f51b5);position:absolute;width:100%;height:100%;opacity:.14;border-radius:0}.forge-calendar__range:not(.forge-calendar__date-spacer).forge-calendar__range--start .forge-calendar__range__target{border-top-left-radius:50%;border-bottom-left-radius:50%}.forge-calendar__range:not(.forge-calendar__date-spacer).forge-calendar__range--end .forge-calendar__range__target{border-top-right-radius:50%;border-bottom-right-radius:50%}.forge-calendar__range:not(.forge-calendar__range--start):first-of-type .forge-calendar__range__target{border-top-left-radius:4px;border-bottom-left-radius:4px}.forge-calendar__range:not(.forge-calendar__range--end):last-of-type .forge-calendar__range__target{border-top-right-radius:4px;border-bottom-right-radius:4px}.forge-calendar--allow-single-date-range .forge-calendar__range--start.forge-calendar__range--end .forge-calendar__range__target{transition:transform .2s;transform:scale(1.15);transform-origin:center}.forge-calendar__event{font-size:var(--forge-calendar-event-dot-size, 12px)}.forge-calendar__event[data-event-theme=primary]{color:var(--forge-calendar-theme-event-primary-accent,#3f51b5)}.forge-calendar__event[data-event-theme=secondary]{color:var(--forge-calendar-theme-event-secondary-accent,#ffc107)}.forge-calendar__event[data-event-theme=blue]{color:var(--forge-calendar-theme-event-blue-accent,#2196f3)}.forge-calendar__event[data-event-theme=light-green]{color:var(--forge-calendar-theme-event-light-green-accent,#8bc34a)}.forge-calendar__event[data-event-theme=cyan]{color:var(--forge-calendar-theme-event-cyan-accent,#00bcd4)}.forge-calendar__event[data-event-theme=teal]{color:var(--forge-calendar-theme-event-teal-accent,#009688)}.forge-calendar__event[data-event-theme=orange]{color:var(--forge-calendar-theme-event-orange-accent,#ff9800)}.forge-calendar__event[data-event-theme=blue-grey]{color:var(--forge-calendar-theme-event-blue-grey-accent,#607d8b)}.forge-calendar__event[data-event-theme=grey]{color:var(--forge-calendar-theme-event-grey-accent,#9e9e9e)}.forge-calendar__event[data-event-theme=red]{color:var(--forge-calendar-theme-event-red-accent,#f44336)}.forge-calendar__event[data-event-theme=pink]{color:var(--forge-calendar-theme-event-pink-accent,#e91e63)}.forge-calendar__event[data-event-theme=purple]{color:var(--forge-calendar-theme-event-purple-accent,#9c27b0)}.forge-calendar__event[data-event-theme=light-blue]{color:var(--forge-calendar-theme-event-light-blue-accent,#03a9f4)}.forge-calendar__event[data-event-theme=deep-purple]{color:var(--forge-calendar-theme-event-deep-purple-accent,#673ab7)}.forge-calendar__event[data-event-theme=green]{color:var(--forge-calendar-theme-event-green-accent,#4caf50)}.forge-calendar__event[data-event-theme=lime]{color:var(--forge-calendar-theme-event-lime-accent,#cddc39)}.forge-calendar__event[data-event-theme=yellow]{color:var(--forge-calendar-theme-event-yellow-accent,#ffeb3b)}.forge-calendar__event[data-event-theme=brown]{color:var(--forge-calendar-theme-event-brown-accent,#795548)}.forge-calendar__event[data-event-theme=deep-orange]{color:var(--forge-calendar-theme-event-deep-orange-accent,#ff5722)}.forge-calendar__date[disabled] .forge-calendar__event{opacity:.14}.forge-calendar__event--overflow{background-color:var(--forge-theme-surface,#fff);color:var(--forge-theme-on-surface,#000);border-radius:50%}.forge-calendar__event__wrapper{display:flex;justify-content:center;gap:2px;position:absolute;bottom:0;left:0;width:100%;padding-bottom:2px;pointer-events:none}.forge-calendar__date-spacer .forge-calendar__event__wrapper{display:none}.forge-calendar--rtl .forge-calendar__header forge-icon-button forge-icon{transform:rotate(180deg)}#accessible-header{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}#month-button forge-icon{transition:transform .2s}.forge-calendar--month-menu-open #month-button forge-icon{transform:rotate(180deg)}#year-button forge-icon{transition:transform .2s}.forge-calendar--year-menu-open #year-button forge-icon{transform:rotate(180deg)}:host{--forge-calendar-event-stroke-color:var(--forge-theme-surface, #ffffff);display:inline-block}:host([hidden]){display:none}:host([forge-popover-context=true]){--forge-calendar-event-stroke-color:var(--forge-theme-surface-bright, #ffffff)}';
21
+ const styles = '.forge-calendar{width:var(--forge-calendar-width,100%);height:fit-content;position:relative}.forge-calendar__header{padding:var(--forge-calendar-controls-padding,0);display:flex;align-items:center;justify-content:space-between}.forge-calendar__footer{padding:var(--forge-calendar-controls-padding,0);display:flex;align-items:center;justify-content:space-between}.forge-calendar__view{position:relative}.forge-calendar__date-view{display:block}.forge-calendar__date-view__row{display:grid;grid-template-columns:repeat(7,1fr)}.forge-calendar__date-grid{display:grid}.forge-calendar__day{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label2-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .8125)));font-weight:var(--forge-typography-label2-font-weight,400);line-height:var(--forge-typography-label2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label2-letter-spacing, .0096153846em);text-transform:var(--forge-typography-label2-text-transform,inherit);text-decoration:var(--forge-typography-label2-text-decoration,inherit)}.forge-calendar__day::after{float:left;padding-top:100%;content:\"\"}.forge-calendar__day{display:flex;justify-content:center;align-items:center;min-width:0;padding:0;font-weight:700;user-select:none}.forge-calendar__date::after{float:left;padding-top:100%;content:\"\"}.forge-calendar__date{margin-top:var(--forge-calendar-row-gap,2px);min-width:0;padding:0;border-radius:50%;position:relative;outline:0;cursor:default;user-select:none}.forge-calendar__date forge-focus-indicator{--forge-focus-indicator-shape:50%}.forge-calendar__date__inner{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);position:absolute;width:calc(100% - 2px);height:calc(100% - 2px);top:calc(2px / 2);left:calc(2px / 2);display:flex;justify-content:center;align-items:center;border-radius:inherit;box-sizing:border-box}.forge-calendar--show-today .forge-calendar__date--today:not([disabled]){color:var(--forge-theme-primary,#3f51b5);border-color:var(--forge-theme-primary,#3f51b5)}.forge-calendar--show-today .forge-calendar__date--today .forge-calendar__date__inner{border-color:inherit;border-width:1px;border-style:solid;font-weight:700}.forge-calendar--show-today .forge-calendar__date--today.forge-calendar__date--selected{color:var(--forge-theme-on-primary,#fff)}.forge-calendar:not(.forge-calendar--readonly) .forge-calendar__date:not([disabled]){cursor:pointer}.forge-calendar__date--selected:not([disabled]) .forge-calendar__date__inner{background-color:var(--forge-theme-primary,#3f51b5);color:var(--forge-theme-on-primary,#fff)}.forge-calendar__date--selected[disabled] .forge-calendar__date__inner{background-color:var(--forge-theme-primary-container-minimum,#f7f8fc);color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar__date--selected forge-focus-indicator{--forge-focus-indicator-color:var(--forge-theme-primary-container)}.forge-calendar__date[disabled]{color:var(--forge-theme-text-low,rgba(0,0,0,.38))}.forge-calendar__date-spacer{pointer-events:none}.forge-calendar--fixed-height .forge-calendar__date-spacer::after{float:left;padding-top:100%;content:\"\"}.forge-calendar--fixed-height .forge-calendar__date-spacer{margin-top:var(--forge-calendar-row-gap,2px)}.forge-calendar__range:not(.forge-calendar__date-spacer) .forge-calendar__range__target{background-color:var(--forge-theme-primary,#3f51b5);position:absolute;width:100%;height:100%;opacity:.14;border-radius:0}.forge-calendar__range:not(.forge-calendar__date-spacer).forge-calendar__range--start .forge-calendar__range__target{border-top-left-radius:50%;border-bottom-left-radius:50%}.forge-calendar__range:not(.forge-calendar__date-spacer).forge-calendar__range--end .forge-calendar__range__target{border-top-right-radius:50%;border-bottom-right-radius:50%}.forge-calendar__range:not(.forge-calendar__range--start):first-of-type .forge-calendar__range__target{border-top-left-radius:4px;border-bottom-left-radius:4px}.forge-calendar__range:not(.forge-calendar__range--end):last-of-type .forge-calendar__range__target{border-top-right-radius:4px;border-bottom-right-radius:4px}.forge-calendar--allow-single-date-range .forge-calendar__range--start.forge-calendar__range--end .forge-calendar__range__target{transition:transform .2s;transform:scale(1.15);transform-origin:center}.forge-calendar__event[data-event-theme=primary]{color:var(--forge-calendar-theme-event-primary-accent,#3f51b5)}.forge-calendar__event[data-event-theme=secondary]{color:var(--forge-calendar-theme-event-secondary-accent,#ffc107)}.forge-calendar__event[data-event-theme=blue]{color:var(--forge-calendar-theme-event-blue-accent,#2196f3)}.forge-calendar__event[data-event-theme=light-green]{color:var(--forge-calendar-theme-event-light-green-accent,#8bc34a)}.forge-calendar__event[data-event-theme=cyan]{color:var(--forge-calendar-theme-event-cyan-accent,#00bcd4)}.forge-calendar__event[data-event-theme=teal]{color:var(--forge-calendar-theme-event-teal-accent,#009688)}.forge-calendar__event[data-event-theme=orange]{color:var(--forge-calendar-theme-event-orange-accent,#ff9800)}.forge-calendar__event[data-event-theme=blue-grey]{color:var(--forge-calendar-theme-event-blue-grey-accent,#607d8b)}.forge-calendar__event[data-event-theme=grey]{color:var(--forge-calendar-theme-event-grey-accent,#9e9e9e)}.forge-calendar__event[data-event-theme=red]{color:var(--forge-calendar-theme-event-red-accent,#f44336)}.forge-calendar__event[data-event-theme=pink]{color:var(--forge-calendar-theme-event-pink-accent,#e91e63)}.forge-calendar__event[data-event-theme=purple]{color:var(--forge-calendar-theme-event-purple-accent,#9c27b0)}.forge-calendar__event[data-event-theme=light-blue]{color:var(--forge-calendar-theme-event-light-blue-accent,#03a9f4)}.forge-calendar__event[data-event-theme=deep-purple]{color:var(--forge-calendar-theme-event-deep-purple-accent,#673ab7)}.forge-calendar__event[data-event-theme=green]{color:var(--forge-calendar-theme-event-green-accent,#4caf50)}.forge-calendar__event[data-event-theme=lime]{color:var(--forge-calendar-theme-event-lime-accent,#cddc39)}.forge-calendar__event[data-event-theme=yellow]{color:var(--forge-calendar-theme-event-yellow-accent,#ffeb3b)}.forge-calendar__event[data-event-theme=brown]{color:var(--forge-calendar-theme-event-brown-accent,#795548)}.forge-calendar__event[data-event-theme=deep-orange]{color:var(--forge-calendar-theme-event-deep-orange-accent,#ff5722)}.forge-calendar__event{font-size:var(--forge-calendar-event-dot-size, 12px)}.forge-calendar__date[disabled] .forge-calendar__event{opacity:.14}.forge-calendar__event--overflow{background-color:var(--forge-theme-surface,#fff);color:var(--forge-theme-on-surface,#000);border-radius:50%}.forge-calendar__event__wrapper{display:flex;justify-content:center;gap:2px;position:absolute;bottom:0;left:0;width:100%;padding-bottom:2px;pointer-events:none}.forge-calendar__date-spacer .forge-calendar__event__wrapper{display:none}.forge-calendar--rtl .forge-calendar__header forge-icon-button forge-icon{transform:rotate(180deg)}#accessible-header{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}#month-button forge-icon{transition:transform .2s}.forge-calendar--month-menu-open #month-button forge-icon{transform:rotate(180deg)}#year-button forge-icon{transition:transform .2s}.forge-calendar--year-menu-open #year-button forge-icon{transform:rotate(180deg)}:host{--forge-calendar-event-stroke-color:var(--forge-theme-surface, #ffffff);display:inline-block}:host([hidden]){display:none}:host([forge-popover-context=true]){--forge-calendar-event-stroke-color:var(--forge-theme-surface-bright, #ffffff)}';
22
22
  /**
23
+ * @summary A flexible calendar component for date selection with support for single dates, ranges, multiple selections, and extensive customization options.
24
+ *
23
25
  * @tag forge-calendar
24
26
  *
25
27
  * @property {Date} activeDate - The currently active date in the calendar.
@@ -18,6 +18,8 @@ export declare const CARD_TAG_NAME: keyof HTMLElementTagNameMap;
18
18
  /**
19
19
  * @tag forge-card
20
20
  *
21
+ * @summary Cards group related content and actions together in a single container.
22
+ *
21
23
  * @attribute {boolean} [no-padding=false] - Removes the default padding from the card.
22
24
  *
23
25
  * @cssproperty --forge-card-background - The background color of the card.