@material/web 2.4.2-nightly.2fe7e22.0 → 2.4.2-nightly.5088d91.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 (210) hide show
  1. package/button/internal/_touch-target.scss +1 -1
  2. package/button/internal/button.d.ts +0 -4
  3. package/button/internal/button.js.map +1 -1
  4. package/button/internal/shared-styles.css +1 -1
  5. package/button/internal/shared-styles.css.map +1 -1
  6. package/button/internal/shared-styles.cssresult.js +1 -1
  7. package/button/internal/shared-styles.cssresult.js.map +1 -1
  8. package/checkbox/internal/checkbox.d.ts +2 -2
  9. package/checkbox/internal/checkbox.js.map +1 -1
  10. package/chips/internal/chip.d.ts +2 -0
  11. package/custom-elements.json +41872 -0
  12. package/icon/internal/icon.d.ts +1 -1
  13. package/icon/internal/icon.js +1 -1
  14. package/icon/internal/icon.js.map +1 -1
  15. package/iconbutton/internal/icon-button.d.ts +0 -4
  16. package/iconbutton/internal/icon-button.js.map +1 -1
  17. package/internal/aria/aria.d.ts +1 -1
  18. package/internal/events/dispatch-hooks.js +31 -35
  19. package/internal/events/dispatch-hooks.js.map +1 -1
  20. package/labs/behaviors/form-associated.d.ts +0 -22
  21. package/labs/behaviors/form-associated.js +0 -11
  22. package/labs/behaviors/form-associated.js.map +1 -1
  23. package/labs/gb/components/button/_button-tokens.scss +30 -30
  24. package/labs/gb/components/button/button.css +1 -1
  25. package/labs/gb/components/button/button.css.map +1 -1
  26. package/labs/gb/components/button/button.cssresult.js +1 -1
  27. package/labs/gb/components/button/button.cssresult.js.map +1 -1
  28. package/labs/gb/components/button/button.d.ts +1 -16
  29. package/labs/gb/components/button/button.js +10 -33
  30. package/labs/gb/components/button/button.js.map +1 -1
  31. package/labs/gb/components/button/button.scss +25 -25
  32. package/labs/gb/components/button/md-button.d.ts +10 -2
  33. package/labs/gb/components/button/md-button.js +92 -11
  34. package/labs/gb/components/button/md-button.js.map +1 -1
  35. package/labs/gb/components/card/card.d.ts +1 -11
  36. package/labs/gb/components/card/card.js +6 -13
  37. package/labs/gb/components/card/card.js.map +1 -1
  38. package/labs/gb/components/card/md-card.d.ts +9 -1
  39. package/labs/gb/components/card/md-card.js +85 -8
  40. package/labs/gb/components/card/md-card.js.map +1 -1
  41. package/labs/gb/components/checkbox/checkbox.css +1 -1
  42. package/labs/gb/components/checkbox/checkbox.css.map +1 -1
  43. package/labs/gb/components/checkbox/checkbox.cssresult.js +1 -1
  44. package/labs/gb/components/checkbox/checkbox.cssresult.js.map +1 -1
  45. package/labs/gb/components/checkbox/checkbox.d.ts +1 -16
  46. package/labs/gb/components/checkbox/checkbox.js +8 -31
  47. package/labs/gb/components/checkbox/checkbox.js.map +1 -1
  48. package/labs/gb/components/checkbox/checkbox.scss +13 -13
  49. package/labs/gb/components/checkbox/md-checkbox.d.ts +4 -4
  50. package/labs/gb/components/checkbox/md-checkbox.js +10 -10
  51. package/labs/gb/components/checkbox/md-checkbox.js.map +1 -1
  52. package/labs/gb/components/divider/divider.d.ts +1 -11
  53. package/labs/gb/components/divider/divider.js +4 -11
  54. package/labs/gb/components/divider/divider.js.map +1 -1
  55. package/labs/gb/components/fab/fab.d.ts +1 -16
  56. package/labs/gb/components/fab/fab.js +8 -31
  57. package/labs/gb/components/fab/fab.js.map +1 -1
  58. package/labs/gb/components/fab/md-fab.js +4 -4
  59. package/labs/gb/components/fab/md-fab.js.map +1 -1
  60. package/labs/gb/components/focus/focus-ring.js +1 -1
  61. package/labs/gb/components/focus/focus-ring.js.map +1 -1
  62. package/labs/gb/components/iconbutton/_icon-button-tokens.scss +202 -0
  63. package/labs/gb/components/iconbutton/icon-button.css +4 -0
  64. package/labs/gb/components/iconbutton/icon-button.css.map +1 -0
  65. package/labs/gb/components/iconbutton/icon-button.cssresult.d.ts +3 -0
  66. package/labs/gb/components/iconbutton/icon-button.cssresult.js +14 -0
  67. package/labs/gb/components/iconbutton/icon-button.cssresult.js.map +1 -0
  68. package/labs/gb/components/iconbutton/icon-button.d.ts +97 -0
  69. package/labs/gb/components/iconbutton/icon-button.js +122 -0
  70. package/labs/gb/components/iconbutton/icon-button.js.map +1 -0
  71. package/labs/gb/components/iconbutton/icon-button.scss +153 -0
  72. package/labs/gb/components/iconbutton/md-icon-button.d.ts +73 -0
  73. package/labs/gb/components/iconbutton/md-icon-button.js +176 -0
  74. package/labs/gb/components/iconbutton/md-icon-button.js.map +1 -0
  75. package/labs/gb/components/list/_list-tokens.scss +102 -0
  76. package/labs/gb/components/list/list.css +4 -0
  77. package/labs/gb/components/list/list.css.map +1 -0
  78. package/labs/gb/components/list/list.cssresult.d.ts +3 -0
  79. package/labs/gb/components/list/list.cssresult.js +14 -0
  80. package/labs/gb/components/list/list.cssresult.js.map +1 -0
  81. package/labs/gb/components/list/list.d.ts +103 -0
  82. package/labs/gb/components/list/list.js +109 -0
  83. package/labs/gb/components/list/list.js.map +1 -0
  84. package/labs/gb/components/list/list.scss +212 -0
  85. package/labs/gb/components/list/md-list-item.d.ts +44 -0
  86. package/labs/gb/components/list/md-list-item.js +122 -0
  87. package/labs/gb/components/list/md-list-item.js.map +1 -0
  88. package/labs/gb/components/list/md-list.d.ts +26 -0
  89. package/labs/gb/components/list/md-list.js +51 -0
  90. package/labs/gb/components/list/md-list.js.map +1 -0
  91. package/labs/gb/components/menu/_menu-tokens.scss +128 -0
  92. package/labs/gb/components/menu/md-menu-group.d.ts +26 -0
  93. package/labs/gb/components/menu/md-menu-group.js +65 -0
  94. package/labs/gb/components/menu/md-menu-group.js.map +1 -0
  95. package/labs/gb/components/menu/md-menu-item.d.ts +30 -0
  96. package/labs/gb/components/menu/md-menu-item.js +165 -0
  97. package/labs/gb/components/menu/md-menu-item.js.map +1 -0
  98. package/labs/gb/components/menu/md-menu.d.ts +28 -0
  99. package/labs/gb/components/menu/md-menu.js +141 -0
  100. package/labs/gb/components/menu/md-menu.js.map +1 -0
  101. package/labs/gb/components/menu/menu.css +4 -0
  102. package/labs/gb/components/menu/menu.css.map +1 -0
  103. package/labs/gb/components/menu/menu.cssresult.d.ts +3 -0
  104. package/labs/gb/components/menu/menu.cssresult.js +14 -0
  105. package/labs/gb/components/menu/menu.cssresult.js.map +1 -0
  106. package/labs/gb/components/menu/menu.d.ts +117 -0
  107. package/labs/gb/components/menu/menu.js +107 -0
  108. package/labs/gb/components/menu/menu.js.map +1 -0
  109. package/labs/gb/components/menu/menu.scss +171 -0
  110. package/labs/gb/components/radio/md-radio.d.ts +4 -4
  111. package/labs/gb/components/radio/md-radio.js +11 -11
  112. package/labs/gb/components/radio/md-radio.js.map +1 -1
  113. package/labs/gb/components/radio/radio.css +1 -1
  114. package/labs/gb/components/radio/radio.css.map +1 -1
  115. package/labs/gb/components/radio/radio.cssresult.js +1 -1
  116. package/labs/gb/components/radio/radio.cssresult.js.map +1 -1
  117. package/labs/gb/components/radio/radio.d.ts +1 -14
  118. package/labs/gb/components/radio/radio.js +8 -23
  119. package/labs/gb/components/radio/radio.js.map +1 -1
  120. package/labs/gb/components/radio/radio.scss +4 -5
  121. package/labs/gb/components/ripple/ripple.d.ts +1 -10
  122. package/labs/gb/components/ripple/ripple.js +28 -32
  123. package/labs/gb/components/ripple/ripple.js.map +1 -1
  124. package/labs/gb/components/shared/directives.d.ts +93 -0
  125. package/labs/gb/components/shared/directives.js +111 -0
  126. package/labs/gb/components/shared/directives.js.map +1 -0
  127. package/labs/gb/components/shared/has-slotted.d.ts +10 -0
  128. package/labs/gb/components/shared/has-slotted.js +19 -0
  129. package/labs/gb/components/shared/has-slotted.js.map +1 -0
  130. package/labs/gb/components/shared/pseudo-classes.d.ts +7 -0
  131. package/labs/gb/components/shared/pseudo-classes.js +9 -0
  132. package/labs/gb/components/shared/pseudo-classes.js.map +1 -1
  133. package/labs/gb/components/splitbutton/_split-button-tokens.scss +135 -0
  134. package/labs/gb/components/splitbutton/md-split-button.d.ts +26 -0
  135. package/labs/gb/components/splitbutton/md-split-button.js +119 -0
  136. package/labs/gb/components/splitbutton/md-split-button.js.map +1 -0
  137. package/labs/gb/components/splitbutton/split-button.css +4 -0
  138. package/labs/gb/components/splitbutton/split-button.css.map +1 -0
  139. package/labs/gb/components/splitbutton/split-button.cssresult.d.ts +3 -0
  140. package/labs/gb/components/splitbutton/split-button.cssresult.js +14 -0
  141. package/labs/gb/components/splitbutton/split-button.cssresult.js.map +1 -0
  142. package/labs/gb/components/splitbutton/split-button.d.ts +47 -0
  143. package/labs/gb/components/splitbutton/split-button.js +46 -0
  144. package/labs/gb/components/splitbutton/split-button.js.map +1 -0
  145. package/labs/gb/components/splitbutton/split-button.scss +164 -0
  146. package/labs/gb/components/switch/_switch-tokens.scss +56 -0
  147. package/labs/gb/components/switch/md-switch.d.ts +66 -0
  148. package/labs/gb/components/switch/md-switch.js +162 -0
  149. package/labs/gb/components/switch/md-switch.js.map +1 -0
  150. package/labs/gb/components/switch/switch.css +4 -0
  151. package/labs/gb/components/switch/switch.css.map +1 -0
  152. package/labs/gb/components/switch/switch.cssresult.d.ts +3 -0
  153. package/labs/gb/components/switch/switch.cssresult.js +14 -0
  154. package/labs/gb/components/switch/switch.cssresult.js.map +1 -0
  155. package/labs/gb/components/switch/switch.d.ts +54 -0
  156. package/labs/gb/components/switch/switch.js +85 -0
  157. package/labs/gb/components/switch/switch.js.map +1 -0
  158. package/labs/gb/components/switch/switch.scss +109 -0
  159. package/labs/gb/styles/icon/md-icon.css +1 -1
  160. package/labs/gb/styles/icon/md-icon.css.map +1 -1
  161. package/labs/gb/styles/icon/md-icon.cssresult.js +1 -1
  162. package/labs/gb/styles/icon/md-icon.cssresult.js.map +1 -1
  163. package/labs/gb/styles/icon/md-icon.d.ts +20 -0
  164. package/labs/gb/styles/icon/md-icon.js +24 -0
  165. package/labs/gb/styles/icon/md-icon.js.map +1 -0
  166. package/labs/gb/styles/icon/md-icon.scss +2 -1
  167. package/labs/gb/styles/m3.css +5 -2
  168. package/labs/gb/styles/m3.css.map +1 -1
  169. package/labs/gb/styles/m3.cssresult.js +5 -2
  170. package/labs/gb/styles/m3.cssresult.js.map +1 -1
  171. package/labs/gb/styles/m3.scss +1 -0
  172. package/labs/gb/styles/space/md-space-tokens.css +4 -0
  173. package/labs/gb/styles/space/md-space-tokens.css.map +1 -0
  174. package/labs/gb/styles/space/md-space-tokens.cssresult.d.ts +3 -0
  175. package/labs/gb/styles/space/md-space-tokens.cssresult.js +14 -0
  176. package/labs/gb/styles/space/md-space-tokens.cssresult.js.map +1 -0
  177. package/labs/gb/styles/space/md-space-tokens.scss +28 -0
  178. package/labs/gb/styles/tailwind.css +4 -0
  179. package/labs/gb/styles/tailwind.css.map +1 -0
  180. package/labs/gb/styles/tailwind.cssresult.d.ts +3 -0
  181. package/labs/gb/styles/tailwind.cssresult.js +14 -0
  182. package/labs/gb/styles/tailwind.cssresult.js.map +1 -0
  183. package/labs/gb/styles/tailwind.scss +349 -0
  184. package/labs/gb/styles/typography/internal/_typography-tokens.scss +85 -16
  185. package/labs/gb/styles/typography/md-typography-tokens.css +1 -1
  186. package/labs/gb/styles/typography/md-typography-tokens.css.map +1 -1
  187. package/labs/gb/styles/typography/md-typography-tokens.cssresult.js +1 -1
  188. package/labs/gb/styles/typography/md-typography-tokens.cssresult.js.map +1 -1
  189. package/list/internal/listitem/list-item.d.ts +6 -1
  190. package/list/internal/listitem/list-item.js +4 -1
  191. package/list/internal/listitem/list-item.js.map +1 -1
  192. package/menu/internal/menuitem/menu-item.d.ts +2 -0
  193. package/menu/internal/submenu/sub-menu.d.ts +5 -1
  194. package/menu/internal/submenu/sub-menu.js +5 -1
  195. package/menu/internal/submenu/sub-menu.js.map +1 -1
  196. package/package.json +26 -4
  197. package/radio/internal/radio.d.ts +0 -2
  198. package/radio/internal/radio.js.map +1 -1
  199. package/select/internal/select.d.ts +2 -2
  200. package/select/internal/select.js.map +1 -1
  201. package/select/internal/selectoption/select-option.d.ts +2 -0
  202. package/slider/internal/slider.d.ts +0 -2
  203. package/slider/internal/slider.js.map +1 -1
  204. package/switch/internal/_switch.scss +1 -0
  205. package/switch/internal/switch-styles.css +1 -1
  206. package/switch/internal/switch-styles.css.map +1 -1
  207. package/switch/internal/switch-styles.cssresult.js +1 -1
  208. package/switch/internal/switch-styles.cssresult.js.map +1 -1
  209. package/switch/internal/switch.d.ts +0 -2
  210. package/switch/internal/switch.js.map +1 -1
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Copyright 2026 Google LLC
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */@layer md.sys, md.comp.ripple, md.comp.focus-ring, md.comp.checkbox, md.comp.radio;@layer md.comp.list{.list{--container-shape: var(--md-sys-shape-corner-lg);--gap: 0}.list.list-segmented{--gap: 2px;--list-segmented: true}.list{display:flex;flex-direction:column;margin:unset;padding:unset;list-style:none;gap:var(--gap);border-radius:var(--container-shape)}.list>:first-child:not(slot),.list ::slotted(:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;--first-child: true}.list>:last-child:not(slot),.list ::slotted(:last-child){border-end-start-radius:inherit;border-end-end-radius:inherit;--last-child: true}.list slot{border-radius:inherit}.list-select,.list-select::picker(select){appearance:base-select}.list-select{border:none;background:none;height:fit-content}.list-item{--container-height: 56px;--container-color: transparent;--container-shape: var(--md-sys-shape-corner-xs);--label-text-color: var(--md-sys-color-on-surface);--label-text: var(--md-sys-typescale-body-lg);--label-text-tracking: var(--md-sys-typescale-body-lg-tracking);--leading-space: 16px;--trailing-space: 16px;--between-space: 12px;--top-space: 10px;--bottom-space: 10px;--avatar-size: 40px;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-color: var(--md-sys-color-primary-container);--avatar-label: var(--md-sys-typescale-title-md);--avatar-label-tracking: var(--md-sys-typescale-title-md-tracking);--avatar-label-color: var(--md-sys-color-on-primary-container);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 20px;--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 20px;--overline: var(--md-sys-typescale-label-sm);--overline-tracking: var(--md-sys-typescale-label-sm-tracking);--overline-color: var(--md-sys-color-on-surface-variant);--supporting-text: var(--md-sys-typescale-body-md);--supporting-text-tracking: var(--md-sys-typescale-body-md-tracking);--supporting-text-color: var(--md-sys-color-on-surface-variant);--trailing-supporting-text: var(--md-sys-typescale-label-sm);--trailing-supporting-text-tracking: var( --md-sys-typescale-label-sm-tracking );--trailing-supporting-text-color: var(--md-sys-color-on-surface-variant)}@container style(--list-segmented: true){.list-item{--container-color: var(--md-sys-color-surface)}}.list-item:where(:not(.list-item-static)):is(:hover,.hover){--container-shape: var(--md-sys-shape-corner-md);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:focus-within,.focus){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:active,.active){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:is(:checked,.checked){--container-shape: var(--md-sys-shape-corner-lg);--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--trailing-icon-color: var(--md-sys-color-on-secondary-container);--overline-color: var(--md-sys-color-on-secondary-container);--supporting-text-color: var(--md-sys-color-on-secondary-container);--trailing-supporting-text-color: var( --md-sys-color-on-secondary-container )}.list-item:is(:disabled,.disabled){--container-shape: var(--md-sys-shape-corner-xs);--container-color: hsl(from var(--md-sys-color-on-surface) h s l / 10%);--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--leading-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--overline-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% )}.list-item{display:flex;align-items:center;gap:var(--between-space);box-sizing:border-box;min-height:var(--container-height);border-radius:var(--container-shape);background-color:var(--container-color);padding-inline:var(--leading-space) var(--trailing-space);padding-block:var(--top-space) var(--bottom-space);color:var(--label-text-color);font:var(--label-text);letter-spacing:var(--label-text-tracking);appearance:none;border:none;text-align:unset;text-decoration:unset;width:stretch}@container style(--first-child: true){.list-item{border-start-start-radius:inherit;border-start-end-radius:inherit}}@container style(--last-child: true){.list-item{border-end-start-radius:inherit;border-end-end-radius:inherit}}.list-item:not(:disabled,.disabled,.list-item-static){cursor:pointer}.list-item .list-item-content{display:flex;flex-direction:column;flex:1}.list-item .list-item-leading,.list-item .list-item-trailing{display:flex;align-items:center;gap:8px;min-height:28px}.list-item .list-item-leading{--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.list-item .list-item-trailing{--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}.list-item .list-item-overline{font:var(--overline);letter-spacing:var(--overline-tracking);color:var(--overline-color)}.list-item .list-item-supporting-text{font:var(--supporting-text);letter-spacing:var(--supporting-text-tracking);color:var(--supporting-text-color)}.list-item .list-item-trailing-text{font:var(--trailing-supporting-text);letter-spacing:var(--trailing-supporting-text-tracking);color:var(--trailing-supporting-text-color)}.list-item .list-item-avatar{display:grid;place-items:center;background-color:var(--avatar-color);border-radius:var(--avatar-shape);aspect-ratio:1;width:var(--avatar-size);font:var(--avatar-label);letter-spacing:var(--avatar-label-tracking);color:var(--avatar-label-color)}.list-item::checkmark{font:var(--leading-icon-size) var(--md-icon-font);color:var(--leading-icon-color);content:"check"}.list-item:has(.list-item-radio,.list-item-checkbox)::checkmark{display:none}.list-item .list-item-radio,.list-item .list-item-checkbox{width:min-content;height:min-content;--ripple: none;--focus-ring-outline: none}.list-item:is(:checked,.checked) .list-item-radio{--icon-color: var(--md-sys-color-primary);--state-layer-color: var(--md-sys-color-primary);--icon: "radio_button_checked"}.list-item:is(:checked,.checked) .list-item-checkbox{--outline-width: 0;--container-color: var(--md-sys-color-primary);--icon-color: var(--md-sys-color-on-primary)}}/*# sourceMappingURL=list.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["list.scss","_list-tokens.scss","../radio/_radio-tokens.scss","../checkbox/_checkbox-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GAWA,mFACA,oBAEI,MCRF,iDACA,SDWE,qBCPF,WDSI,uBAGF,MACE,aACA,sBACA,aACA,cACA,gBACA,eACA,qCAGF,2DAEE,kCACA,gCACA,oBAGF,yDAEE,gCACA,8BACA,mBAGF,WACE,sBAKF,0CAIE,uBALJ,aAQE,YACA,gBACA,mBAIA,WCnDF,yBACA,+BACA,iDACA,mDACA,8CACA,gEACA,sBACA,uBACA,sBACA,kBACA,qBACA,oBACA,gDACA,sDACA,iDACA,mEACA,+DACA,6DACA,0BACA,8DACA,2BACA,6CACA,+DACA,yDACA,mDACA,qEACA,gEACA,6DACA,iFAGA,yEDuBI,yCAHF,WChBF,gDDyBI,4DCrBJ,iDACA,qDACA,sDDuBI,mECnBJ,iDACA,qDACA,sDDqBI,8DCjBJ,iDACA,qDACA,sDDoBE,iCChBF,iDACA,2DACA,+DACA,iEACA,kEACA,6DACA,oEACA,+EDaE,mCCPF,iDACA,wEACA,yEACA,6EAGA,8EAGA,uEACA,gFAGA,yFDFE,WACE,aACA,mBACA,yBACA,sBACA,mCACA,qCACA,wCACA,0DACA,mDACA,8BACA,uBACA,0CACA,gBACA,YACA,iBACA,sBACA,cAGF,sCAnDF,WAoDI,kCACA,iCAGF,qCAxDF,WAyDI,gCACA,+BAGF,sDACE,eAGF,8BACE,aACA,sBACA,OAGF,6DAEE,aACA,mBACA,QACA,gBAGF,8BACE,2CACA,yCAGF,+BACE,4CACA,0CAGF,+BACE,qBACA,wCACA,4BAGF,sCACE,4BACA,+CACA,mCAGF,oCACE,qCACA,wDACA,4CAGF,6BACE,aACA,mBACA,qCACA,kCACA,eACA,yBACA,yBACA,4CACA,gCAGF,sBACE,kDACA,gCACA,gBAGF,gEACE,aAGF,2DAEE,kBACA,mBACA,eACA,2BAGF,kDEhLF,0CACA,iDFiLI,+BAGF,qDG9KF,mBACA,+CACA","file":"list.css"}
@@ -0,0 +1,3 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ declare const _default: CSSStyleSheet;
3
+ export default _default;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ // Generated stylesheet for ./labs/gb/components/list/list.css.
7
+ import { css } from 'lit';
8
+ export const styles = css `/*!
9
+ * Copyright 2026 Google LLC
10
+ * SPDX-License-Identifier: Apache-2.0
11
+ */@layer md.sys, md.comp.ripple, md.comp.focus-ring, md.comp.checkbox, md.comp.radio;@layer md.comp.list{.list{--container-shape: var(--md-sys-shape-corner-lg);--gap: 0}.list.list-segmented{--gap: 2px;--list-segmented: true}.list{display:flex;flex-direction:column;margin:unset;padding:unset;list-style:none;gap:var(--gap);border-radius:var(--container-shape)}.list>:first-child:not(slot),.list ::slotted(:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;--first-child: true}.list>:last-child:not(slot),.list ::slotted(:last-child){border-end-start-radius:inherit;border-end-end-radius:inherit;--last-child: true}.list slot{border-radius:inherit}.list-select,.list-select::picker(select){appearance:base-select}.list-select{border:none;background:none;height:fit-content}.list-item{--container-height: 56px;--container-color: transparent;--container-shape: var(--md-sys-shape-corner-xs);--label-text-color: var(--md-sys-color-on-surface);--label-text: var(--md-sys-typescale-body-lg);--label-text-tracking: var(--md-sys-typescale-body-lg-tracking);--leading-space: 16px;--trailing-space: 16px;--between-space: 12px;--top-space: 10px;--bottom-space: 10px;--avatar-size: 40px;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-color: var(--md-sys-color-primary-container);--avatar-label: var(--md-sys-typescale-title-md);--avatar-label-tracking: var(--md-sys-typescale-title-md-tracking);--avatar-label-color: var(--md-sys-color-on-primary-container);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 20px;--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 20px;--overline: var(--md-sys-typescale-label-sm);--overline-tracking: var(--md-sys-typescale-label-sm-tracking);--overline-color: var(--md-sys-color-on-surface-variant);--supporting-text: var(--md-sys-typescale-body-md);--supporting-text-tracking: var(--md-sys-typescale-body-md-tracking);--supporting-text-color: var(--md-sys-color-on-surface-variant);--trailing-supporting-text: var(--md-sys-typescale-label-sm);--trailing-supporting-text-tracking: var( --md-sys-typescale-label-sm-tracking );--trailing-supporting-text-color: var(--md-sys-color-on-surface-variant)}@container style(--list-segmented: true){.list-item{--container-color: var(--md-sys-color-surface)}}.list-item:where(:not(.list-item-static)):is(:hover,.hover){--container-shape: var(--md-sys-shape-corner-md);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:focus-within,.focus){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:active,.active){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:is(:checked,.checked){--container-shape: var(--md-sys-shape-corner-lg);--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--trailing-icon-color: var(--md-sys-color-on-secondary-container);--overline-color: var(--md-sys-color-on-secondary-container);--supporting-text-color: var(--md-sys-color-on-secondary-container);--trailing-supporting-text-color: var( --md-sys-color-on-secondary-container )}.list-item:is(:disabled,.disabled){--container-shape: var(--md-sys-shape-corner-xs);--container-color: hsl(from var(--md-sys-color-on-surface) h s l / 10%);--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--leading-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--overline-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% )}.list-item{display:flex;align-items:center;gap:var(--between-space);box-sizing:border-box;min-height:var(--container-height);border-radius:var(--container-shape);background-color:var(--container-color);padding-inline:var(--leading-space) var(--trailing-space);padding-block:var(--top-space) var(--bottom-space);color:var(--label-text-color);font:var(--label-text);letter-spacing:var(--label-text-tracking);appearance:none;border:none;text-align:unset;text-decoration:unset;width:stretch}@container style(--first-child: true){.list-item{border-start-start-radius:inherit;border-start-end-radius:inherit}}@container style(--last-child: true){.list-item{border-end-start-radius:inherit;border-end-end-radius:inherit}}.list-item:not(:disabled,.disabled,.list-item-static){cursor:pointer}.list-item .list-item-content{display:flex;flex-direction:column;flex:1}.list-item .list-item-leading,.list-item .list-item-trailing{display:flex;align-items:center;gap:8px;min-height:28px}.list-item .list-item-leading{--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.list-item .list-item-trailing{--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}.list-item .list-item-overline{font:var(--overline);letter-spacing:var(--overline-tracking);color:var(--overline-color)}.list-item .list-item-supporting-text{font:var(--supporting-text);letter-spacing:var(--supporting-text-tracking);color:var(--supporting-text-color)}.list-item .list-item-trailing-text{font:var(--trailing-supporting-text);letter-spacing:var(--trailing-supporting-text-tracking);color:var(--trailing-supporting-text-color)}.list-item .list-item-avatar{display:grid;place-items:center;background-color:var(--avatar-color);border-radius:var(--avatar-shape);aspect-ratio:1;width:var(--avatar-size);font:var(--avatar-label);letter-spacing:var(--avatar-label-tracking);color:var(--avatar-label-color)}.list-item::checkmark{font:var(--leading-icon-size) var(--md-icon-font);color:var(--leading-icon-color);content:"check"}.list-item:has(.list-item-radio,.list-item-checkbox)::checkmark{display:none}.list-item .list-item-radio,.list-item .list-item-checkbox{width:min-content;height:min-content;--ripple: none;--focus-ring-outline: none}.list-item:is(:checked,.checked) .list-item-radio{--icon-color: var(--md-sys-color-primary);--state-layer-color: var(--md-sys-color-primary);--icon: "radio_button_checked"}.list-item:is(:checked,.checked) .list-item-checkbox{--outline-width: 0;--container-color: var(--md-sys-color-primary);--icon-color: var(--md-sys-color-on-primary)}}
12
+ `;
13
+ export default styles.styleSheet;
14
+ //# sourceMappingURL=list.cssresult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.cssresult.js","sourceRoot":"","sources":["list.cssresult.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,+DAA+D;AAC/D,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;CAIxB,CAAC;AACF,eAAe,MAAM,CAAC,UAAW,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./labs/gb/components/list/list.css.\nimport {css} from 'lit';\nexport const styles = css`/*!\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */@layer md.sys, md.comp.ripple, md.comp.focus-ring, md.comp.checkbox, md.comp.radio;@layer md.comp.list{.list{--container-shape: var(--md-sys-shape-corner-lg);--gap: 0}.list.list-segmented{--gap: 2px;--list-segmented: true}.list{display:flex;flex-direction:column;margin:unset;padding:unset;list-style:none;gap:var(--gap);border-radius:var(--container-shape)}.list>:first-child:not(slot),.list ::slotted(:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;--first-child: true}.list>:last-child:not(slot),.list ::slotted(:last-child){border-end-start-radius:inherit;border-end-end-radius:inherit;--last-child: true}.list slot{border-radius:inherit}.list-select,.list-select::picker(select){appearance:base-select}.list-select{border:none;background:none;height:fit-content}.list-item{--container-height: 56px;--container-color: transparent;--container-shape: var(--md-sys-shape-corner-xs);--label-text-color: var(--md-sys-color-on-surface);--label-text: var(--md-sys-typescale-body-lg);--label-text-tracking: var(--md-sys-typescale-body-lg-tracking);--leading-space: 16px;--trailing-space: 16px;--between-space: 12px;--top-space: 10px;--bottom-space: 10px;--avatar-size: 40px;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-color: var(--md-sys-color-primary-container);--avatar-label: var(--md-sys-typescale-title-md);--avatar-label-tracking: var(--md-sys-typescale-title-md-tracking);--avatar-label-color: var(--md-sys-color-on-primary-container);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 20px;--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 20px;--overline: var(--md-sys-typescale-label-sm);--overline-tracking: var(--md-sys-typescale-label-sm-tracking);--overline-color: var(--md-sys-color-on-surface-variant);--supporting-text: var(--md-sys-typescale-body-md);--supporting-text-tracking: var(--md-sys-typescale-body-md-tracking);--supporting-text-color: var(--md-sys-color-on-surface-variant);--trailing-supporting-text: var(--md-sys-typescale-label-sm);--trailing-supporting-text-tracking: var( --md-sys-typescale-label-sm-tracking );--trailing-supporting-text-color: var(--md-sys-color-on-surface-variant)}@container style(--list-segmented: true){.list-item{--container-color: var(--md-sys-color-surface)}}.list-item:where(:not(.list-item-static)):is(:hover,.hover){--container-shape: var(--md-sys-shape-corner-md);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:focus-within,.focus){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:where(:not(.list-item-static)):is(:active,.active){--container-shape: var(--md-sys-shape-corner-lg);--leading-icon-color: var(--md-sys-color-on-surface);--trailing-icon-color: var(--md-sys-color-on-surface)}.list-item:is(:checked,.checked){--container-shape: var(--md-sys-shape-corner-lg);--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--trailing-icon-color: var(--md-sys-color-on-secondary-container);--overline-color: var(--md-sys-color-on-secondary-container);--supporting-text-color: var(--md-sys-color-on-secondary-container);--trailing-supporting-text-color: var( --md-sys-color-on-secondary-container )}.list-item:is(:disabled,.disabled){--container-shape: var(--md-sys-shape-corner-xs);--container-color: hsl(from var(--md-sys-color-on-surface) h s l / 10%);--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--leading-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-icon-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--overline-color: hsl(from var(--md-sys-color-on-surface) h s l / 38%);--supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% );--trailing-supporting-text-color: hsl( from var(--md-sys-color-on-surface) h s l / 38% )}.list-item{display:flex;align-items:center;gap:var(--between-space);box-sizing:border-box;min-height:var(--container-height);border-radius:var(--container-shape);background-color:var(--container-color);padding-inline:var(--leading-space) var(--trailing-space);padding-block:var(--top-space) var(--bottom-space);color:var(--label-text-color);font:var(--label-text);letter-spacing:var(--label-text-tracking);appearance:none;border:none;text-align:unset;text-decoration:unset;width:stretch}@container style(--first-child: true){.list-item{border-start-start-radius:inherit;border-start-end-radius:inherit}}@container style(--last-child: true){.list-item{border-end-start-radius:inherit;border-end-end-radius:inherit}}.list-item:not(:disabled,.disabled,.list-item-static){cursor:pointer}.list-item .list-item-content{display:flex;flex-direction:column;flex:1}.list-item .list-item-leading,.list-item .list-item-trailing{display:flex;align-items:center;gap:8px;min-height:28px}.list-item .list-item-leading{--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.list-item .list-item-trailing{--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}.list-item .list-item-overline{font:var(--overline);letter-spacing:var(--overline-tracking);color:var(--overline-color)}.list-item .list-item-supporting-text{font:var(--supporting-text);letter-spacing:var(--supporting-text-tracking);color:var(--supporting-text-color)}.list-item .list-item-trailing-text{font:var(--trailing-supporting-text);letter-spacing:var(--trailing-supporting-text-tracking);color:var(--trailing-supporting-text-color)}.list-item .list-item-avatar{display:grid;place-items:center;background-color:var(--avatar-color);border-radius:var(--avatar-shape);aspect-ratio:1;width:var(--avatar-size);font:var(--avatar-label);letter-spacing:var(--avatar-label-tracking);color:var(--avatar-label-color)}.list-item::checkmark{font:var(--leading-icon-size) var(--md-icon-font);color:var(--leading-icon-color);content:\"check\"}.list-item:has(.list-item-radio,.list-item-checkbox)::checkmark{display:none}.list-item .list-item-radio,.list-item .list-item-checkbox{width:min-content;height:min-content;--ripple: none;--focus-ring-outline: none}.list-item:is(:checked,.checked) .list-item-radio{--icon-color: var(--md-sys-color-primary);--state-layer-color: var(--md-sys-color-primary);--icon: \"radio_button_checked\"}.list-item:is(:checked,.checked) .list-item-checkbox{--outline-width: 0;--container-color: var(--md-sys-color-primary);--icon-color: var(--md-sys-color-on-primary)}}\n`;\nexport default styles.styleSheet!;\n"]}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ClassInfo } from 'lit/directives/class-map.js';
7
+ /** List classes. */
8
+ export declare const LIST_CLASSES: {
9
+ readonly list: "list";
10
+ readonly listSegmented: "list-segmented";
11
+ };
12
+ /** The state provided to the `listClasses()` function. */
13
+ export interface ListClassesState {
14
+ /** Whether to render the list with segmented items. */
15
+ segmented?: boolean;
16
+ }
17
+ /**
18
+ * Returns the list classes to apply to an element based on the given state.
19
+ *
20
+ * @param state The state of the list.
21
+ * @return An object of class names and truthy values if they apply.
22
+ */
23
+ export declare function listClasses({ segmented, }?: ListClassesState): ClassInfo;
24
+ /**
25
+ * A Lit directive that adds list styling and functionality to its element.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * html`
30
+ * <ul class="${list()}">
31
+ * <li><button class="${listItem()}">List item 1</button></li>
32
+ * <li><button class="${listItem()}">List item 2</button></li>
33
+ * <li><button class="${listItem()}">List item 3</button></li>
34
+ * </ul>
35
+ * `;
36
+ * ```
37
+ */
38
+ export declare const list: (state?: ListClassesState & import("../shared/directives.js").AdditionalClasses) => import("lit-html/directive.js").DirectiveResult;
39
+ /** List item classes. */
40
+ export declare const LIST_ITEM_CLASSES: {
41
+ readonly listItem: "list-item";
42
+ readonly listItemStatic: "list-item-static";
43
+ readonly listItemContent: "list-item-content";
44
+ readonly listItemLeading: "list-item-leading";
45
+ readonly listItemTrailing: "list-item-trailing";
46
+ readonly listItemOverline: "list-item-overline";
47
+ readonly listItemSupportingText: "list-item-supporting-text";
48
+ readonly listItemTrailingText: "list-item-trailing-text";
49
+ readonly listItemAvatar: "list-item-avatar";
50
+ readonly checked: string;
51
+ readonly hover: string;
52
+ readonly focus: string;
53
+ readonly active: string;
54
+ readonly disabled: string;
55
+ };
56
+ /** The state provided to the `listItemClasses()` function. */
57
+ export interface ListItemClassesState {
58
+ /** Whether the list item is non-interactive. */
59
+ static?: boolean;
60
+ /** Emulates `:checked`. */
61
+ checked?: boolean;
62
+ /** Emulates `:hover`. */
63
+ hover?: boolean;
64
+ /** Emulates `:focus`. */
65
+ focus?: boolean;
66
+ /** Emulates `:active`. */
67
+ active?: boolean;
68
+ /** Emulates `:disabled`. */
69
+ disabled?: boolean;
70
+ }
71
+ /**
72
+ * Returns the list item classes to apply to an element based on the given
73
+ * state.
74
+ *
75
+ * @param state The state of the list item.
76
+ * @return An object of class names and truthy values if they apply.
77
+ */
78
+ export declare function listItemClasses({ static: staticItem, checked, hover, focus, active, disabled, }?: ListItemClassesState): ClassInfo;
79
+ /**
80
+ * Sets up list item functionality for the given element.
81
+ *
82
+ * @param listItem The element on which to set up list item functionality.
83
+ * @param opts Setup options, supports a cleanup `signal`.
84
+ */
85
+ export declare function setupListItem(listItem: HTMLElement, opts?: {
86
+ signal?: AbortSignal;
87
+ }): void;
88
+ /**
89
+ * A Lit directive that adds list item styling and functionality to its element.
90
+ *
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * html`
95
+ * <ul class="${list()}">
96
+ * <li><button class="${listItem()}">List item 1</button></li>
97
+ * <li><button class="${listItem()}">List item 2</button></li>
98
+ * <li><button class="${listItem()}">List item 3</button></li>
99
+ * </ul>
100
+ * `;
101
+ * ```
102
+ */
103
+ export declare const listItem: (state?: ListItemClassesState & import("../shared/directives.js").AdditionalClasses) => import("lit-html/directive.js").DirectiveResult;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FOCUS_RING_CLASSES } from '../focus/focus-ring.js';
7
+ import { RIPPLE_CLASSES, setupRipple } from '../ripple/ripple.js';
8
+ import { createClassMapDirective } from '../shared/directives.js';
9
+ import { PSEUDO_CLASSES } from '../shared/pseudo-classes.js';
10
+ /** List classes. */
11
+ export const LIST_CLASSES = {
12
+ list: 'list',
13
+ listSegmented: 'list-segmented',
14
+ };
15
+ /**
16
+ * Returns the list classes to apply to an element based on the given state.
17
+ *
18
+ * @param state The state of the list.
19
+ * @return An object of class names and truthy values if they apply.
20
+ */
21
+ export function listClasses({ segmented = false, } = {}) {
22
+ return {
23
+ [LIST_CLASSES.list]: true,
24
+ [LIST_CLASSES.listSegmented]: segmented,
25
+ };
26
+ }
27
+ /**
28
+ * A Lit directive that adds list styling and functionality to its element.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * html`
33
+ * <ul class="${list()}">
34
+ * <li><button class="${listItem()}">List item 1</button></li>
35
+ * <li><button class="${listItem()}">List item 2</button></li>
36
+ * <li><button class="${listItem()}">List item 3</button></li>
37
+ * </ul>
38
+ * `;
39
+ * ```
40
+ */
41
+ export const list = createClassMapDirective({
42
+ getClasses: listClasses,
43
+ });
44
+ /** List item classes. */
45
+ export const LIST_ITEM_CLASSES = {
46
+ listItem: 'list-item',
47
+ listItemStatic: 'list-item-static',
48
+ listItemContent: 'list-item-content',
49
+ listItemLeading: 'list-item-leading',
50
+ listItemTrailing: 'list-item-trailing',
51
+ listItemOverline: 'list-item-overline',
52
+ listItemSupportingText: 'list-item-supporting-text',
53
+ listItemTrailingText: 'list-item-trailing-text',
54
+ listItemAvatar: 'list-item-avatar',
55
+ checked: PSEUDO_CLASSES.checked,
56
+ hover: PSEUDO_CLASSES.hover,
57
+ focus: PSEUDO_CLASSES.focus,
58
+ active: PSEUDO_CLASSES.active,
59
+ disabled: PSEUDO_CLASSES.disabled,
60
+ };
61
+ /**
62
+ * Returns the list item classes to apply to an element based on the given
63
+ * state.
64
+ *
65
+ * @param state The state of the list item.
66
+ * @return An object of class names and truthy values if they apply.
67
+ */
68
+ export function listItemClasses({ static: staticItem = false, checked = false, hover = false, focus = false, active = false, disabled = false, } = {}) {
69
+ return {
70
+ [RIPPLE_CLASSES.ripple]: !staticItem,
71
+ [FOCUS_RING_CLASSES.focusRingInner]: !staticItem,
72
+ [LIST_ITEM_CLASSES.listItem]: true,
73
+ [LIST_ITEM_CLASSES.listItemStatic]: staticItem,
74
+ [LIST_ITEM_CLASSES.checked]: checked,
75
+ [LIST_ITEM_CLASSES.hover]: hover,
76
+ [LIST_ITEM_CLASSES.focus]: focus,
77
+ [LIST_ITEM_CLASSES.active]: active,
78
+ [LIST_ITEM_CLASSES.disabled]: disabled,
79
+ };
80
+ }
81
+ /**
82
+ * Sets up list item functionality for the given element.
83
+ *
84
+ * @param listItem The element on which to set up list item functionality.
85
+ * @param opts Setup options, supports a cleanup `signal`.
86
+ */
87
+ export function setupListItem(listItem, opts) {
88
+ setupRipple(listItem, opts);
89
+ }
90
+ /**
91
+ * A Lit directive that adds list item styling and functionality to its element.
92
+ *
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * html`
97
+ * <ul class="${list()}">
98
+ * <li><button class="${listItem()}">List item 1</button></li>
99
+ * <li><button class="${listItem()}">List item 2</button></li>
100
+ * <li><button class="${listItem()}">List item 3</button></li>
101
+ * </ul>
102
+ * `;
103
+ * ```
104
+ */
105
+ export const listItem = createClassMapDirective({
106
+ getClasses: listItemClasses,
107
+ setupElement: setupListItem,
108
+ });
109
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAE3D,oBAAoB;AACpB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,gBAAgB;CACvB,CAAC;AAQX;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,GAAG,KAAK,MACG,EAAE;IACtB,OAAO;QACL,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI;QACzB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,SAAS;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAC;IAC1C,UAAU,EAAE,WAAW;CACxB,CAAC,CAAC;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,kBAAkB;IAClC,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,gBAAgB,EAAE,oBAAoB;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,sBAAsB,EAAE,2BAA2B;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,cAAc,EAAE,kBAAkB;IAClC,OAAO,EAAE,cAAc,CAAC,OAAO;IAC/B,KAAK,EAAE,cAAc,CAAC,KAAK;IAC3B,KAAK,EAAE,cAAc,CAAC,KAAK;IAC3B,MAAM,EAAE,cAAc,CAAC,MAAM;IAC7B,QAAQ,EAAE,cAAc,CAAC,QAAQ;CACzB,CAAC;AAkBX;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EAAE,UAAU,GAAG,KAAK,EAC1B,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,KAAK,EACd,QAAQ,GAAG,KAAK,MACQ,EAAE;IAC1B,OAAO;QACL,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU;QACpC,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU;QAChD,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI;QAClC,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,UAAU;QAC9C,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO;QACpC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM;QAClC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ;KACvC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAqB,EACrB,IAA6B;IAE7B,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;IAC9C,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,aAAa;CAC5B,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {type ClassInfo} from 'lit/directives/class-map.js';\nimport {FOCUS_RING_CLASSES} from '../focus/focus-ring.js';\nimport {RIPPLE_CLASSES, setupRipple} from '../ripple/ripple.js';\nimport {createClassMapDirective} from '../shared/directives.js';\nimport {PSEUDO_CLASSES} from '../shared/pseudo-classes.js';\n\n/** List classes. */\nexport const LIST_CLASSES = {\n list: 'list',\n listSegmented: 'list-segmented',\n} as const;\n\n/** The state provided to the `listClasses()` function. */\nexport interface ListClassesState {\n /** Whether to render the list with segmented items. */\n segmented?: boolean;\n}\n\n/**\n * Returns the list classes to apply to an element based on the given state.\n *\n * @param state The state of the list.\n * @return An object of class names and truthy values if they apply.\n */\nexport function listClasses({\n segmented = false,\n}: ListClassesState = {}): ClassInfo {\n return {\n [LIST_CLASSES.list]: true,\n [LIST_CLASSES.listSegmented]: segmented,\n };\n}\n\n/**\n * A Lit directive that adds list styling and functionality to its element.\n *\n * @example\n * ```ts\n * html`\n * <ul class=\"${list()}\">\n * <li><button class=\"${listItem()}\">List item 1</button></li>\n * <li><button class=\"${listItem()}\">List item 2</button></li>\n * <li><button class=\"${listItem()}\">List item 3</button></li>\n * </ul>\n * `;\n * ```\n */\nexport const list = createClassMapDirective({\n getClasses: listClasses,\n});\n\n/** List item classes. */\nexport const LIST_ITEM_CLASSES = {\n listItem: 'list-item',\n listItemStatic: 'list-item-static',\n listItemContent: 'list-item-content',\n listItemLeading: 'list-item-leading',\n listItemTrailing: 'list-item-trailing',\n listItemOverline: 'list-item-overline',\n listItemSupportingText: 'list-item-supporting-text',\n listItemTrailingText: 'list-item-trailing-text',\n listItemAvatar: 'list-item-avatar',\n checked: PSEUDO_CLASSES.checked,\n hover: PSEUDO_CLASSES.hover,\n focus: PSEUDO_CLASSES.focus,\n active: PSEUDO_CLASSES.active,\n disabled: PSEUDO_CLASSES.disabled,\n} as const;\n\n/** The state provided to the `listItemClasses()` function. */\nexport interface ListItemClassesState {\n /** Whether the list item is non-interactive. */\n static?: boolean;\n /** Emulates `:checked`. */\n checked?: boolean;\n /** Emulates `:hover`. */\n hover?: boolean;\n /** Emulates `:focus`. */\n focus?: boolean;\n /** Emulates `:active`. */\n active?: boolean;\n /** Emulates `:disabled`. */\n disabled?: boolean;\n}\n\n/**\n * Returns the list item classes to apply to an element based on the given\n * state.\n *\n * @param state The state of the list item.\n * @return An object of class names and truthy values if they apply.\n */\nexport function listItemClasses({\n static: staticItem = false,\n checked = false,\n hover = false,\n focus = false,\n active = false,\n disabled = false,\n}: ListItemClassesState = {}): ClassInfo {\n return {\n [RIPPLE_CLASSES.ripple]: !staticItem,\n [FOCUS_RING_CLASSES.focusRingInner]: !staticItem,\n [LIST_ITEM_CLASSES.listItem]: true,\n [LIST_ITEM_CLASSES.listItemStatic]: staticItem,\n [LIST_ITEM_CLASSES.checked]: checked,\n [LIST_ITEM_CLASSES.hover]: hover,\n [LIST_ITEM_CLASSES.focus]: focus,\n [LIST_ITEM_CLASSES.active]: active,\n [LIST_ITEM_CLASSES.disabled]: disabled,\n };\n}\n\n/**\n * Sets up list item functionality for the given element.\n *\n * @param listItem The element on which to set up list item functionality.\n * @param opts Setup options, supports a cleanup `signal`.\n */\nexport function setupListItem(\n listItem: HTMLElement,\n opts?: {signal?: AbortSignal},\n): void {\n setupRipple(listItem, opts);\n}\n\n/**\n * A Lit directive that adds list item styling and functionality to its element.\n *\n *\n * @example\n * ```ts\n * html`\n * <ul class=\"${list()}\">\n * <li><button class=\"${listItem()}\">List item 1</button></li>\n * <li><button class=\"${listItem()}\">List item 2</button></li>\n * <li><button class=\"${listItem()}\">List item 3</button></li>\n * </ul>\n * `;\n * ```\n */\nexport const listItem = createClassMapDirective({\n getClasses: listItemClasses,\n setupElement: setupListItem,\n});\n"]}
@@ -0,0 +1,212 @@
1
+ /*!
2
+ * Copyright 2026 Google LLC
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ // go/keep-sorted start by_regex='(.+) prefix_order=sass:
7
+ @use '../checkbox/checkbox-tokens';
8
+ @use '../radio/radio-tokens';
9
+ @use 'list-tokens';
10
+ // go/keep-sorted end
11
+
12
+ @layer md.sys, md.comp.ripple, md.comp.focus-ring, md.comp.checkbox, md.comp.radio;
13
+ @layer md.comp.list {
14
+ .list {
15
+ & {
16
+ @include list-tokens.root;
17
+ }
18
+
19
+ &.list-segmented {
20
+ @include list-tokens.segmented;
21
+ --list-segmented: true;
22
+ }
23
+
24
+ & {
25
+ display: flex;
26
+ flex-direction: column;
27
+ margin: unset;
28
+ padding: unset;
29
+ list-style: none;
30
+ gap: var(--gap);
31
+ border-radius: var(--container-shape);
32
+ }
33
+
34
+ > :first-child:not(slot),
35
+ ::slotted(:first-child) {
36
+ border-start-start-radius: inherit;
37
+ border-start-end-radius: inherit;
38
+ --first-child: true;
39
+ }
40
+
41
+ > :last-child:not(slot),
42
+ ::slotted(:last-child) {
43
+ border-end-start-radius: inherit;
44
+ border-end-end-radius: inherit;
45
+ --last-child: true;
46
+ }
47
+
48
+ slot {
49
+ border-radius: inherit;
50
+ }
51
+ }
52
+
53
+ .list-select {
54
+ &,
55
+ &::picker(select) {
56
+ // stylelint-disable-next-line scss/declaration-property-value-no-unknown --
57
+ // Uses customizable select
58
+ appearance: base-select;
59
+ }
60
+
61
+ border: none;
62
+ background: none;
63
+ height: fit-content;
64
+ }
65
+
66
+ .list-item {
67
+ & {
68
+ @include list-tokens.item;
69
+
70
+ @container style(--list-segmented: true) {
71
+ @include list-tokens.item-segmented;
72
+ }
73
+ }
74
+
75
+ &:where(:not(.list-item-static)) {
76
+ &:is(:hover, .hover) {
77
+ @include list-tokens.item-hovered;
78
+ }
79
+
80
+ &:is(:focus-within, .focus) {
81
+ @include list-tokens.item-focused;
82
+ }
83
+
84
+ &:is(:active, .active) {
85
+ @include list-tokens.item-pressed;
86
+ }
87
+ }
88
+
89
+ &:is(:checked, .checked) {
90
+ @include list-tokens.item-selected;
91
+ }
92
+
93
+ &:is(:disabled, .disabled) {
94
+ @include list-tokens.item-disabled;
95
+ }
96
+
97
+ & {
98
+ display: flex;
99
+ align-items: center;
100
+ gap: var(--between-space);
101
+ box-sizing: border-box;
102
+ min-height: var(--container-height);
103
+ border-radius: var(--container-shape);
104
+ background-color: var(--container-color);
105
+ padding-inline: var(--leading-space) var(--trailing-space);
106
+ padding-block: var(--top-space) var(--bottom-space);
107
+ color: var(--label-text-color);
108
+ font: var(--label-text);
109
+ letter-spacing: var(--label-text-tracking);
110
+ appearance: none;
111
+ border: none;
112
+ text-align: unset;
113
+ text-decoration: unset;
114
+ width: stretch;
115
+ }
116
+
117
+ @container style(--first-child: true) {
118
+ border-start-start-radius: inherit;
119
+ border-start-end-radius: inherit;
120
+ }
121
+
122
+ @container style(--last-child: true) {
123
+ border-end-start-radius: inherit;
124
+ border-end-end-radius: inherit;
125
+ }
126
+
127
+ &:not(:disabled, .disabled, .list-item-static) {
128
+ cursor: pointer;
129
+ }
130
+
131
+ .list-item-content {
132
+ display: flex;
133
+ flex-direction: column;
134
+ flex: 1;
135
+ }
136
+
137
+ .list-item-leading,
138
+ .list-item-trailing {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 8px;
142
+ min-height: 28px;
143
+ }
144
+
145
+ .list-item-leading {
146
+ --md-icon-color: var(--leading-icon-color);
147
+ --md-icon-size: var(--leading-icon-size);
148
+ }
149
+
150
+ .list-item-trailing {
151
+ --md-icon-color: var(--trailing-icon-color);
152
+ --md-icon-size: var(--trailing-icon-size);
153
+ }
154
+
155
+ .list-item-overline {
156
+ font: var(--overline);
157
+ letter-spacing: var(--overline-tracking);
158
+ color: var(--overline-color);
159
+ }
160
+
161
+ .list-item-supporting-text {
162
+ font: var(--supporting-text);
163
+ letter-spacing: var(--supporting-text-tracking);
164
+ color: var(--supporting-text-color);
165
+ }
166
+
167
+ .list-item-trailing-text {
168
+ font: var(--trailing-supporting-text);
169
+ letter-spacing: var(--trailing-supporting-text-tracking);
170
+ color: var(--trailing-supporting-text-color);
171
+ }
172
+
173
+ .list-item-avatar {
174
+ display: grid;
175
+ place-items: center;
176
+ background-color: var(--avatar-color);
177
+ border-radius: var(--avatar-shape);
178
+ aspect-ratio: 1;
179
+ width: var(--avatar-size);
180
+ font: var(--avatar-label);
181
+ letter-spacing: var(--avatar-label-tracking);
182
+ color: var(--avatar-label-color);
183
+ }
184
+
185
+ &::checkmark {
186
+ font: var(--leading-icon-size) var(--md-icon-font);
187
+ color: var(--leading-icon-color);
188
+ content: 'check';
189
+ }
190
+
191
+ &:has(.list-item-radio, .list-item-checkbox)::checkmark {
192
+ display: none;
193
+ }
194
+
195
+ .list-item-radio,
196
+ .list-item-checkbox {
197
+ width: min-content;
198
+ height: min-content;
199
+ --ripple: none;
200
+ --focus-ring-outline: none;
201
+ }
202
+
203
+ &:is(:checked, .checked) .list-item-radio {
204
+ @include radio-tokens.selected;
205
+ --icon: 'radio_button_checked';
206
+ }
207
+
208
+ &:is(:checked, .checked) .list-item-checkbox {
209
+ @include checkbox-tokens.selected;
210
+ }
211
+ }
212
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CSSResultOrNative, LitElement } from 'lit';
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ /** A Material Design list item component. */
10
+ 'md-list-item': ListItem;
11
+ }
12
+ }
13
+ declare const baseClass: import("@material/web/labs/behaviors/mixin.js").MixinReturn<import("@material/web/labs/behaviors/mixin.js").MixinReturn<typeof LitElement, import("../../../behaviors/element-internals.js").WithElementInternals>>;
14
+ /**
15
+ * A Material Design list item component.
16
+ */
17
+ export declare class ListItem extends baseClass {
18
+ /** @nocollapse */
19
+ static shadowRootOptions: {
20
+ delegatesFocus: boolean;
21
+ clonable?: boolean;
22
+ customElementRegistry?: CustomElementRegistry;
23
+ mode: ShadowRootMode;
24
+ serializable?: boolean;
25
+ slotAssignment?: SlotAssignmentMode;
26
+ };
27
+ static styles: CSSResultOrNative[];
28
+ constructor();
29
+ /**
30
+ * Whether the list item is selected.
31
+ */
32
+ checked: boolean;
33
+ /**
34
+ * Whether the list item is disabled.
35
+ */
36
+ disabled: boolean;
37
+ /**
38
+ * Whether the list item is non-interactive.
39
+ */
40
+ nonInteractive: boolean;
41
+ protected render(): import("lit-html").TemplateResult<1>;
42
+ private renderContent;
43
+ }
44
+ export {};