@statistikzh/leu 0.28.1 → 0.28.3

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 (351) hide show
  1. package/dist/{Accordion-CwkI7sfx.js → Accordion-EwJ1WHFd.js} +1 -1
  2. package/dist/Accordion.js +2 -2
  3. package/dist/{Button-DcuvEVkC.d.ts → Button-BywuwtT2.d.ts} +0 -1
  4. package/dist/{Button-D1aYnunQ.js → Button-q4GeKj_3.js} +3 -4
  5. package/dist/Button.d.ts +1 -1
  6. package/dist/Button.js +4 -4
  7. package/dist/{ButtonGroup-CqThYjzX.js → ButtonGroup-BeU3Prei.js} +2 -2
  8. package/dist/ButtonGroup.js +5 -5
  9. package/dist/{ChartWrapper-BjVT4x-H.js → ChartWrapper-Bdb0_n2z.js} +2 -2
  10. package/dist/ChartWrapper.js +3 -3
  11. package/dist/{Checkbox-HxYqp2w4.js → Checkbox-BC0gAuaH.js} +2 -2
  12. package/dist/Checkbox.js +3 -3
  13. package/dist/{CheckboxGroup-DYws2rwt.js → CheckboxGroup-CiOgcwmo.js} +2 -2
  14. package/dist/CheckboxGroup.js +4 -4
  15. package/dist/{Chip-gKxD6IaZ.js → Chip-CYlPzmTG.js} +1 -1
  16. package/dist/Chip.js +2 -2
  17. package/dist/{ChipGroup-ZvBzX_wd.js → ChipGroup-3IMW_Mp7.js} +1 -1
  18. package/dist/ChipGroup.js +3 -3
  19. package/dist/ChipLink.js +2 -2
  20. package/dist/ChipRemovable.js +3 -3
  21. package/dist/ChipSelectable.js +2 -2
  22. package/dist/{Dialog-BYpzTprV.js → Dialog-DCl5qSXY.js} +3 -4
  23. package/dist/Dialog.js +3 -3
  24. package/dist/{Dropdown-C4CgE4E-.js → Dropdown-COmpmOev.js} +5 -5
  25. package/dist/Dropdown.d.ts +1 -1
  26. package/dist/Dropdown.js +8 -8
  27. package/dist/{FileInput-nsnSQCaU.js → FileInput-DXjoqKB4.js} +4 -4
  28. package/dist/FileInput.d.ts +1 -1
  29. package/dist/FileInput.js +6 -6
  30. package/dist/{Icon-D8HTPEFH.js → Icon-Bmk7lLWY.js} +1 -1
  31. package/dist/Icon.js +2 -2
  32. package/dist/{Input-OrILqlax.js → Input-B9FwAPKO.js} +2 -2
  33. package/dist/Input.js +3 -3
  34. package/dist/{LeuElement-C_lcHzQI.js → LeuElement-CQJQi8TB.js} +1 -1
  35. package/dist/{Menu-CFLCnI34.js → Menu-bWCAn0rT.js} +2 -2
  36. package/dist/Menu.js +4 -4
  37. package/dist/{MenuItem-ICjLCGim.js → MenuItem-CzCFZi8o.js} +2 -2
  38. package/dist/MenuItem.js +3 -3
  39. package/dist/{Message-Dw5D_0i1.js → Message-DMaM9ukF.js} +2 -2
  40. package/dist/Message.js +3 -3
  41. package/dist/{Pagination-D1tP5FrM.js → Pagination-870u3UgQ.js} +4 -4
  42. package/dist/{Pagination-9eZ8WMvR.d.ts → Pagination-B-mTHZiw.d.ts} +1 -1
  43. package/dist/Pagination.d.ts +1 -1
  44. package/dist/Pagination.js +6 -6
  45. package/dist/{Placeholder-CnGzCZ5-.js → Placeholder-DvvzGB1p.js} +1 -1
  46. package/dist/Placeholder.js +2 -2
  47. package/dist/{Popup-BiN_tZDN.js → Popup-BpG_7twr.js} +1 -1
  48. package/dist/Popup.js +2 -2
  49. package/dist/{ProgressBar-BfJo_KyU.js → ProgressBar-BkskTLWK.js} +1 -1
  50. package/dist/ProgressBar.js +2 -2
  51. package/dist/{Radio-CV7vuQUj.js → Radio-BS7UUhR3.js} +1 -1
  52. package/dist/Radio.js +2 -2
  53. package/dist/{RadioGroup-C3XWSScc.js → RadioGroup-Cpo9kAjB.js} +2 -2
  54. package/dist/RadioGroup.js +3 -3
  55. package/dist/{Range-C8RVrIM9.js → Range-Dh0p5UWA.js} +1 -1
  56. package/dist/Range.js +2 -2
  57. package/dist/{ScrollTop-B_TJ_k4m.js → ScrollTop-CtPidICZ.js} +3 -3
  58. package/dist/ScrollTop.d.ts +1 -1
  59. package/dist/ScrollTop.js +5 -5
  60. package/dist/{Select-CbPTrL3G.js → Select-W1KqDOgx.js} +7 -7
  61. package/dist/Select.d.ts +1 -1
  62. package/dist/Select.js +9 -9
  63. package/dist/{Spinner-ChKJQJTN.js → Spinner-CmAYIFws.js} +1 -1
  64. package/dist/Spinner.js +2 -2
  65. package/dist/{Tab-BJbzY1xd.js → Tab-7Cww5fSx.js} +1 -1
  66. package/dist/Tab.js +2 -2
  67. package/dist/{TabGroup-BIaCHrKR.js → TabGroup-tURfCrlw.js} +3 -3
  68. package/dist/TabGroup.js +4 -4
  69. package/dist/{TabPanel-CTyw410b.js → TabPanel-DIZcmcMV.js} +1 -1
  70. package/dist/TabPanel.js +2 -2
  71. package/dist/{Table-D3QmePJd.js → Table-BVYjYXP9.js} +3 -3
  72. package/dist/Table.d.ts +1 -1
  73. package/dist/Table.js +7 -7
  74. package/dist/{Tag-nUnWtHYy.js → Tag-x0KmEDEa.js} +1 -1
  75. package/dist/Tag.js +2 -2
  76. package/dist/{VisuallyHidden-DF2q9pTa.js → VisuallyHidden-CXRfGsaZ.js} +1 -1
  77. package/dist/VisuallyHidden.js +2 -2
  78. package/dist/custom-elements.json +6445 -0
  79. package/dist/index.d.ts +2 -2
  80. package/dist/index.js +30 -30
  81. package/dist/leu-accordion.js +2 -2
  82. package/dist/leu-button-group.js +5 -5
  83. package/dist/leu-button.d.ts +1 -1
  84. package/dist/leu-button.js +4 -4
  85. package/dist/leu-chart-wrapper.js +3 -3
  86. package/dist/leu-checkbox-group.js +4 -4
  87. package/dist/leu-checkbox.js +3 -3
  88. package/dist/leu-chip-group.js +3 -3
  89. package/dist/leu-chip-link.js +2 -2
  90. package/dist/leu-chip-removable.js +3 -3
  91. package/dist/leu-chip-selectable.js +2 -2
  92. package/dist/leu-dialog.js +3 -3
  93. package/dist/leu-dropdown.js +8 -8
  94. package/dist/leu-file-input.js +6 -6
  95. package/dist/leu-icon.js +2 -2
  96. package/dist/leu-input.js +3 -3
  97. package/dist/leu-menu-item.js +3 -3
  98. package/dist/leu-menu.js +4 -4
  99. package/dist/leu-message.js +3 -3
  100. package/dist/leu-pagination.d.ts +1 -1
  101. package/dist/leu-pagination.js +6 -6
  102. package/dist/leu-placeholder.js +2 -2
  103. package/dist/leu-popup.js +2 -2
  104. package/dist/leu-progress-bar.js +2 -2
  105. package/dist/leu-radio-group.js +3 -3
  106. package/dist/leu-radio.js +2 -2
  107. package/dist/leu-range.js +2 -2
  108. package/dist/leu-scroll-top.js +5 -5
  109. package/dist/leu-select.js +9 -9
  110. package/dist/leu-spinner.js +2 -2
  111. package/dist/leu-tab-group.js +4 -4
  112. package/dist/leu-tab-panel.js +2 -2
  113. package/dist/leu-tab.js +2 -2
  114. package/dist/leu-table.js +7 -7
  115. package/dist/leu-tag.js +2 -2
  116. package/dist/leu-visually-hidden.js +2 -2
  117. package/dist/vscode.html-custom-data.json +11 -11
  118. package/dist/vue/index.d.ts +20 -20
  119. package/dist/web-types.json +28 -28
  120. package/package.json +4 -1
  121. package/.editorconfig +0 -29
  122. package/.github/workflows/ci.yml +0 -81
  123. package/.github/workflows/deploy-github-pages.yaml +0 -34
  124. package/.github/workflows/publish.yml +0 -28
  125. package/.github/workflows/release-please.yml +0 -19
  126. package/.husky/commit-msg +0 -1
  127. package/.husky/pre-commit +0 -1
  128. package/.nvmrc +0 -1
  129. package/.prettierignore +0 -2
  130. package/.release-please-manifest.json +0 -3
  131. package/.storybook/main.ts +0 -34
  132. package/.storybook/manager-head.html +0 -1
  133. package/.storybook/manager.ts +0 -6
  134. package/.storybook/preview.ts +0 -96
  135. package/.storybook/static/fonts/Inter-Black.woff2 +0 -0
  136. package/.storybook/static/fonts/Inter-Regular.woff2 +0 -0
  137. package/.storybook/static/fonts.css +0 -11
  138. package/.storybook/static/global.css +0 -5
  139. package/.storybook/static/logo.svg +0 -19
  140. package/.storybook/theme.ts +0 -8
  141. package/AGENTS.md +0 -162
  142. package/CHANGELOG.md +0 -601
  143. package/CODE_OF_CONDUCT.md +0 -128
  144. package/CONTRIBUTING.md +0 -42
  145. package/commitlint.config.cjs +0 -1
  146. package/custom-elements-manifest.config.js +0 -46
  147. package/eslint.config.mjs +0 -79
  148. package/postcss.config.cjs +0 -16
  149. package/release-please-config.json +0 -9
  150. package/scripts/generate-component/generate.js +0 -167
  151. package/scripts/generate-component/templates/[Name].ts +0 -31
  152. package/scripts/generate-component/templates/[name].css +0 -6
  153. package/scripts/generate-component/templates/[namespace]-[name].ts +0 -11
  154. package/scripts/generate-component/templates/stories/[name].stories.ts +0 -26
  155. package/scripts/generate-component/templates/test/[name].test.ts +0 -23
  156. package/scripts/postcss-leu-font-styles.cjs +0 -154
  157. package/src/components/accordion/Accordion.ts +0 -108
  158. package/src/components/accordion/accordion.css +0 -150
  159. package/src/components/accordion/leu-accordion.ts +0 -11
  160. package/src/components/accordion/stories/accordion.stories.ts +0 -62
  161. package/src/components/accordion/test/accordion.test.ts +0 -118
  162. package/src/components/button/Button.ts +0 -286
  163. package/src/components/button/button.css +0 -317
  164. package/src/components/button/leu-button.ts +0 -11
  165. package/src/components/button/stories/button.stories.ts +0 -366
  166. package/src/components/button/test/button.test.ts +0 -417
  167. package/src/components/button-group/ButtonGroup.ts +0 -97
  168. package/src/components/button-group/button-group.css +0 -5
  169. package/src/components/button-group/leu-button-group.ts +0 -11
  170. package/src/components/button-group/stories/button-group.stories.ts +0 -54
  171. package/src/components/button-group/test/button-group.test.ts +0 -105
  172. package/src/components/chart-wrapper/ChartWrapper.ts +0 -78
  173. package/src/components/chart-wrapper/chart-wrapper.css +0 -87
  174. package/src/components/chart-wrapper/leu-chart-wrapper.ts +0 -11
  175. package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +0 -58
  176. package/src/components/chart-wrapper/test/chart-wrapper.test.ts +0 -77
  177. package/src/components/checkbox/Checkbox.ts +0 -129
  178. package/src/components/checkbox/CheckboxGroup.ts +0 -57
  179. package/src/components/checkbox/checkbox-group.css +0 -29
  180. package/src/components/checkbox/checkbox.css +0 -81
  181. package/src/components/checkbox/leu-checkbox-group.ts +0 -11
  182. package/src/components/checkbox/leu-checkbox.ts +0 -11
  183. package/src/components/checkbox/stories/checkbox-group.stories.ts +0 -59
  184. package/src/components/checkbox/stories/checkbox.stories.ts +0 -72
  185. package/src/components/checkbox/test/checkbox-group.test.ts +0 -109
  186. package/src/components/checkbox/test/checkbox.test.ts +0 -247
  187. package/src/components/chip/Chip.ts +0 -19
  188. package/src/components/chip/ChipGroup.ts +0 -122
  189. package/src/components/chip/ChipLink.ts +0 -24
  190. package/src/components/chip/ChipRemovable.ts +0 -45
  191. package/src/components/chip/ChipSelectable.ts +0 -80
  192. package/src/components/chip/chip-group.css +0 -15
  193. package/src/components/chip/chip.css +0 -139
  194. package/src/components/chip/exports.ts +0 -4
  195. package/src/components/chip/leu-chip-group.ts +0 -11
  196. package/src/components/chip/leu-chip-link.ts +0 -11
  197. package/src/components/chip/leu-chip-removable.ts +0 -11
  198. package/src/components/chip/leu-chip-selectable.ts +0 -11
  199. package/src/components/chip/stories/chip-group.stories.ts +0 -159
  200. package/src/components/chip/stories/chip-link.stories.ts +0 -45
  201. package/src/components/chip/stories/chip-removable.stories.ts +0 -42
  202. package/src/components/chip/stories/chip-selectable.stories.ts +0 -54
  203. package/src/components/chip/test/chip-group.test.ts +0 -171
  204. package/src/components/chip/test/chip-link.test.ts +0 -54
  205. package/src/components/chip/test/chip-removable.test.ts +0 -105
  206. package/src/components/chip/test/chip-selectable.test.ts +0 -101
  207. package/src/components/chip/test/chip.test.ts +0 -22
  208. package/src/components/dialog/Dialog.ts +0 -86
  209. package/src/components/dialog/dialog.css +0 -157
  210. package/src/components/dialog/leu-dialog.ts +0 -11
  211. package/src/components/dialog/stories/dialog.stories.ts +0 -142
  212. package/src/components/dialog/test/dialog.test.ts +0 -85
  213. package/src/components/dropdown/Dropdown.ts +0 -152
  214. package/src/components/dropdown/dropdown.css +0 -16
  215. package/src/components/dropdown/leu-dropdown.ts +0 -11
  216. package/src/components/dropdown/stories/dropdown.stories.ts +0 -58
  217. package/src/components/dropdown/test/dropdown.test.ts +0 -59
  218. package/src/components/file-input/FileInput.ts +0 -324
  219. package/src/components/file-input/file-input.css +0 -118
  220. package/src/components/file-input/leu-file-input.ts +0 -11
  221. package/src/components/file-input/stories/file-input.stories.ts +0 -45
  222. package/src/components/file-input/test/file-input.test.ts +0 -62
  223. package/src/components/icon/Icon.ts +0 -47
  224. package/src/components/icon/icon.css +0 -10
  225. package/src/components/icon/leu-icon.ts +0 -11
  226. package/src/components/icon/paths.ts +0 -219
  227. package/src/components/icon/stories/icon.stories.ts +0 -79
  228. package/src/components/icon/test/icon.test.ts +0 -50
  229. package/src/components/input/Input.ts +0 -469
  230. package/src/components/input/input.css +0 -238
  231. package/src/components/input/leu-input.ts +0 -11
  232. package/src/components/input/stories/input.stories.ts +0 -204
  233. package/src/components/input/test/input.test.ts +0 -603
  234. package/src/components/menu/Menu.ts +0 -149
  235. package/src/components/menu/MenuItem.ts +0 -168
  236. package/src/components/menu/leu-menu-item.ts +0 -11
  237. package/src/components/menu/leu-menu.ts +0 -11
  238. package/src/components/menu/menu-item.css +0 -77
  239. package/src/components/menu/menu.css +0 -19
  240. package/src/components/menu/stories/menu-item.stories.ts +0 -81
  241. package/src/components/menu/stories/menu.stories.ts +0 -54
  242. package/src/components/menu/test/menu-item.test.ts +0 -210
  243. package/src/components/menu/test/menu.test.ts +0 -125
  244. package/src/components/message/Message.ts +0 -118
  245. package/src/components/message/leu-message.ts +0 -11
  246. package/src/components/message/message.css +0 -163
  247. package/src/components/message/stories/message.mdx +0 -76
  248. package/src/components/message/stories/message.stories.ts +0 -149
  249. package/src/components/message/test/message.test.ts +0 -96
  250. package/src/components/pagination/Pagination.ts +0 -192
  251. package/src/components/pagination/leu-pagination.ts +0 -11
  252. package/src/components/pagination/pagination.css +0 -54
  253. package/src/components/pagination/stories/pagination.stories.ts +0 -115
  254. package/src/components/pagination/test/pagination.test.ts +0 -210
  255. package/src/components/placeholder/Placeholder.ts +0 -33
  256. package/src/components/placeholder/leu-placeholder.ts +0 -11
  257. package/src/components/placeholder/placeholder.css +0 -59
  258. package/src/components/placeholder/stories/placeholder.stories.ts +0 -34
  259. package/src/components/placeholder/test/placeholder.test.ts +0 -31
  260. package/src/components/popup/Popup.ts +0 -264
  261. package/src/components/popup/leu-popup.ts +0 -11
  262. package/src/components/popup/popup.css +0 -24
  263. package/src/components/popup/stories/popup.stories.ts +0 -117
  264. package/src/components/popup/test/popup.test.ts +0 -90
  265. package/src/components/progress-bar/ProgressBar.ts +0 -52
  266. package/src/components/progress-bar/leu-progress-bar.ts +0 -11
  267. package/src/components/progress-bar/progress-bar.css +0 -97
  268. package/src/components/progress-bar/stories/progress-bar.stories.ts +0 -39
  269. package/src/components/progress-bar/test/progress-bar.test.ts +0 -61
  270. package/src/components/radio/Radio.ts +0 -59
  271. package/src/components/radio/RadioGroup.ts +0 -181
  272. package/src/components/radio/leu-radio-group.ts +0 -11
  273. package/src/components/radio/leu-radio.ts +0 -11
  274. package/src/components/radio/radio-group.css +0 -29
  275. package/src/components/radio/radio.css +0 -76
  276. package/src/components/radio/stories/radio-group.stories.ts +0 -54
  277. package/src/components/radio/stories/radio.stories.ts +0 -55
  278. package/src/components/radio/test/radio-group.test.ts +0 -83
  279. package/src/components/radio/test/radio.test.ts +0 -119
  280. package/src/components/range/Range.ts +0 -400
  281. package/src/components/range/leu-range.ts +0 -11
  282. package/src/components/range/range.css +0 -227
  283. package/src/components/range/stories/range.stories.ts +0 -185
  284. package/src/components/range/test/range.test.ts +0 -228
  285. package/src/components/scroll-top/ScrollTop.ts +0 -91
  286. package/src/components/scroll-top/leu-scroll-top.ts +0 -11
  287. package/src/components/scroll-top/scroll-top.css +0 -50
  288. package/src/components/scroll-top/stories/scroll-top.stories.ts +0 -217
  289. package/src/components/scroll-top/test/scroll-top.test.ts +0 -22
  290. package/src/components/select/Select.ts +0 -570
  291. package/src/components/select/leu-select.ts +0 -11
  292. package/src/components/select/select.css +0 -222
  293. package/src/components/select/stories/select.stories.ts +0 -173
  294. package/src/components/select/test/fixtures.ts +0 -162
  295. package/src/components/select/test/select.test.ts +0 -937
  296. package/src/components/spinner/Spinner.ts +0 -31
  297. package/src/components/spinner/leu-spinner.ts +0 -11
  298. package/src/components/spinner/spinner.css +0 -20
  299. package/src/components/spinner/stories/spinner.stories.ts +0 -29
  300. package/src/components/spinner/test/spinner.test.ts +0 -30
  301. package/src/components/tab/Tab.ts +0 -72
  302. package/src/components/tab/TabGroup.ts +0 -267
  303. package/src/components/tab/TabPanel.ts +0 -59
  304. package/src/components/tab/leu-tab-group.ts +0 -11
  305. package/src/components/tab/leu-tab-panel.ts +0 -11
  306. package/src/components/tab/leu-tab.ts +0 -11
  307. package/src/components/tab/stories/tab.stories.ts +0 -97
  308. package/src/components/tab/tab-group.css +0 -63
  309. package/src/components/tab/tab-panel.css +0 -10
  310. package/src/components/tab/tab.css +0 -54
  311. package/src/components/tab/test/tab-group.test.ts +0 -426
  312. package/src/components/tab/test/tab-panel.test.ts +0 -102
  313. package/src/components/tab/test/tab.test.ts +0 -139
  314. package/src/components/table/Table.ts +0 -253
  315. package/src/components/table/leu-table.ts +0 -11
  316. package/src/components/table/stories/table.stories.ts +0 -131
  317. package/src/components/table/table.css +0 -112
  318. package/src/components/table/test/table.test.ts +0 -37
  319. package/src/components/tag/Tag.ts +0 -28
  320. package/src/components/tag/leu-tag.ts +0 -11
  321. package/src/components/tag/stories/tag.stories.ts +0 -107
  322. package/src/components/tag/tag.css +0 -42
  323. package/src/components/tag/test/tag.test.ts +0 -28
  324. package/src/components/visually-hidden/VisuallyHidden.ts +0 -16
  325. package/src/components/visually-hidden/leu-visually-hidden.ts +0 -11
  326. package/src/components/visually-hidden/stories/visually-hidden.stories.ts +0 -22
  327. package/src/components/visually-hidden/test/visually-hidden.test.ts +0 -34
  328. package/src/components/visually-hidden/visually-hidden.css +0 -10
  329. package/src/docs/contributing.mdx +0 -154
  330. package/src/docs/installation.mdx +0 -35
  331. package/src/docs/theme.mdx +0 -400
  332. package/src/docs/usage.mdx +0 -73
  333. package/src/global.d.ts +0 -11
  334. package/src/index.ts +0 -29
  335. package/src/lib/LeuElement.ts +0 -43
  336. package/src/lib/a11y.ts +0 -26
  337. package/src/lib/hasSlotController.ts +0 -74
  338. package/src/lib/mixins/FormAssociatedMixin.ts +0 -115
  339. package/src/lib/styleMap.ts +0 -139
  340. package/src/lib/utils.ts +0 -45
  341. package/src/styles/common-styles.css +0 -14
  342. package/src/styles/custom-media.css +0 -6
  343. package/src/styles/font-definitions.json +0 -210
  344. package/src/styles/style.stories.ts +0 -64
  345. package/src/styles/theme.css +0 -90
  346. package/stat_zh.png +0 -0
  347. package/stylelint.config.mjs +0 -23
  348. package/tsconfig.build.json +0 -24
  349. package/tsconfig.json +0 -14
  350. package/tsdown.config.ts +0 -35
  351. package/web-test-runner.config.mjs +0 -102
@@ -1,115 +0,0 @@
1
- /* eslint-disable max-classes-per-file */
2
- import { property } from "lit/decorators.js"
3
- import { LeuElement } from "../LeuElement.js"
4
-
5
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
6
- type AbstractConstructor<T = object> = abstract new (...args: any[]) => T
7
-
8
- // @todo define sensible eslint settings for classes
9
- /* eslint-disable max-classes-per-file */
10
- export declare abstract class FormAssociatedMixinType {
11
- static formAssociated: boolean
12
-
13
- protected readonly internals: ElementInternals
14
-
15
- name: string | null
16
-
17
- disabled: boolean
18
-
19
- required: boolean
20
-
21
- protected hasInteracted: boolean
22
-
23
- form: HTMLFormElement | null
24
-
25
- validity: ValidityState
26
-
27
- validationMessage: string
28
-
29
- willValidate: boolean
30
-
31
- checkValidity(): boolean
32
-
33
- reportValidity(): boolean
34
-
35
- resetValidity(): void
36
-
37
- formDisabledCallback(isDisabled: boolean): void
38
-
39
- formResetCallback(): void
40
-
41
- formStateRestoreCallback(_state: string | FormData | null): void
42
-
43
- protected abstract setFormValue(): void
44
- }
45
-
46
- export const FormAssociatedMixin = <T extends AbstractConstructor<LeuElement>>(
47
- superClass: T,
48
- ) => {
49
- abstract class FormAssociatedMixinClass extends superClass {
50
- static formAssociated = true
51
-
52
- protected readonly internals: ElementInternals = this.attachInternals()
53
-
54
- get form() {
55
- return this.internals.form
56
- }
57
-
58
- /** The name of the form control. Is submitted with the `value` as key-value pair. */
59
- @property({ reflect: true })
60
- name: string | null = null
61
-
62
- /** Disables the form control. */
63
- @property({ type: Boolean })
64
- disabled: boolean = false
65
-
66
- // Treat every form control that doesn't implement its own `required` property as "not required"
67
- required: boolean = false
68
-
69
- /** Whether the user has interacted with the form control. */
70
- @property({ state: true, attribute: false })
71
- protected hasInteracted: boolean = false
72
-
73
- get validity() {
74
- return this.internals.validity
75
- }
76
-
77
- get validationMessage() {
78
- return this.internals.validationMessage
79
- }
80
-
81
- get willValidate() {
82
- return this.internals.willValidate
83
- }
84
-
85
- checkValidity() {
86
- return this.internals.checkValidity()
87
- }
88
-
89
- reportValidity() {
90
- return this.internals.reportValidity()
91
- }
92
-
93
- resetValidity() {
94
- this.internals.setValidity({})
95
- }
96
-
97
- public formDisabledCallback(isDisabled: boolean) {
98
- this.disabled = isDisabled
99
- }
100
-
101
- public formResetCallback() {
102
- this.hasInteracted = false
103
- this.resetValidity()
104
- }
105
-
106
- public formStateRestoreCallback(_state: string | FormData | null) {
107
- this.resetValidity()
108
- }
109
-
110
- protected abstract setFormValue(): void
111
- }
112
-
113
- return FormAssociatedMixinClass as unknown as AbstractConstructor<FormAssociatedMixinType> &
114
- T
115
- }
@@ -1,139 +0,0 @@
1
- /* eslint-disable no-restricted-syntax */
2
-
3
- /**
4
- * The original lit styleMap directive is not compatible with a strict style-src content security policy.
5
- * There is an an open issue about this in the lit repository:
6
- * https://github.com/lit/lit/issues/4719
7
- *
8
- * This file contains a custom implementation of the styleMap directive that bypasses
9
- * the render method and directly updates the styles using the .style.setProperty and
10
- * .style.removeProperty methods.
11
- *
12
- * In the original implementation, the render method returns a string that is set as the
13
- * value of the style attribute. This approach is blocked by strict CSPs that disallow
14
- * inline styles.
15
- *
16
- * As we don't support SSR in this library, we can safely skip the render method.
17
- */
18
-
19
- import { AttributePart, noChange, nothing } from "lit"
20
- import {
21
- directive,
22
- Directive,
23
- DirectiveParameters,
24
- PartInfo,
25
- PartType,
26
- } from "lit/directive.js"
27
-
28
- /**
29
- * A key-value set of CSS properties and values.
30
- *
31
- * The key should be either a valid CSS property name string, like
32
- * `'background-color'`, or a valid JavaScript camel case property name
33
- * for CSSStyleDeclaration like `backgroundColor`.
34
- */
35
- export interface StyleInfo {
36
- [name: string]: string | number | undefined | null
37
- }
38
-
39
- const important = "important"
40
- // The leading space is important
41
- const importantFlag = " !" + important
42
- // How many characters to remove from a value, as a negative number
43
- const flagTrim = 0 - importantFlag.length
44
-
45
- class StyleMapDirective extends Directive {
46
- private _previousStyleProperties?: Set<string>
47
-
48
- constructor(partInfo: PartInfo) {
49
- super(partInfo)
50
- if (
51
- partInfo.type !== PartType.ATTRIBUTE ||
52
- partInfo.name !== "style" ||
53
- (partInfo.strings?.length as number) > 2
54
- ) {
55
- throw new Error(
56
- "The `styleMap` directive must be used in the `style` attribute " +
57
- "and must be the only part in the attribute.",
58
- )
59
- }
60
- }
61
-
62
- render(_styleInfo: Readonly<StyleInfo>) {
63
- return nothing
64
- }
65
-
66
- override update(part: AttributePart, [styleInfo]: DirectiveParameters<this>) {
67
- const { style } = part.element as HTMLElement
68
-
69
- if (this._previousStyleProperties === undefined) {
70
- this._previousStyleProperties = new Set(Object.keys(styleInfo))
71
- }
72
-
73
- // Remove old properties that no longer exist in styleInfo
74
- for (const name of this._previousStyleProperties) {
75
- // If the name isn't in styleInfo or it's null/undefined
76
- if (styleInfo[name] == null) {
77
- this._previousStyleProperties!.delete(name)
78
- if (name.includes("-")) {
79
- style.removeProperty(name)
80
- } else {
81
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
- ;(style as any)[name] = null
83
- }
84
- }
85
- }
86
-
87
- // Add or update properties
88
- for (const name in styleInfo) {
89
- const value = styleInfo[name]
90
- if (value != null) {
91
- this._previousStyleProperties.add(name)
92
- const isImportant =
93
- typeof value === "string" && value.endsWith(importantFlag)
94
- if (name.includes("-") || isImportant) {
95
- style.setProperty(
96
- name,
97
- isImportant
98
- ? (value as string).slice(0, flagTrim)
99
- : (value as string),
100
- isImportant ? important : "",
101
- )
102
- } else {
103
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
- ;(style as any)[name] = value
105
- }
106
- }
107
- }
108
- return noChange
109
- }
110
- }
111
-
112
- /**
113
- * !A custom implementation of lit's `styleMap` directive!
114
- * A directive that applies CSS properties to an element.
115
- *
116
- * `styleMap` can only be used in the `style` attribute and must be the only
117
- * expression in the attribute. It takes the property names in the
118
- * {@link StyleInfo styleInfo} object and adds the properties to the inline
119
- * style of the element.
120
- *
121
- * Property names with dashes (`-`) are assumed to be valid CSS
122
- * property names and set on the element's style object using `setProperty()`.
123
- * Names without dashes are assumed to be camelCased JavaScript property names
124
- * and set on the element's style object using property assignment, allowing the
125
- * style object to translate JavaScript-style names to CSS property names.
126
- *
127
- * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':
128
- * '0'})` sets the `background-color`, `border-top` and `--size` properties.
129
- *
130
- * @param styleInfo
131
- * @see {@link https://lit.dev/docs/templates/directives/#stylemap styleMap code samples on Lit.dev}
132
- */
133
- export const styleMap = directive(StyleMapDirective)
134
-
135
- /**
136
- * The type of the class that powers this directive. Necessary for naming the
137
- * directive's return type.
138
- */
139
- export type { StyleMapDirective }
package/src/lib/utils.ts DELETED
@@ -1,45 +0,0 @@
1
- /**
2
- * Return a debounced function that delays invoking func until after wait milliseconds have elapsed since the last time the debounced function was invoked.
3
- * @param {Function} func - Your function
4
- * @param {Number} timeout - Default is 500 ms
5
- * @returns {Function} - Your function wrapped in a timeout function
6
- */
7
- export const debounce = function debounce(func, timeout = 500) {
8
- let timer = null
9
- return (...args) => {
10
- clearTimeout(timer)
11
- timer = setTimeout(() => {
12
- func.apply(this, args)
13
- }, timeout)
14
- }
15
- }
16
-
17
- /**
18
- * Return a throttled function that only invokes func at most once per every wait milliseconds.
19
- * @param {Function} func - Your function
20
- * @param {Number} timeout - Default is 500 ms
21
- * @returns {Function} - Your function wrapped in a timeout function
22
- */
23
- export const throttle = function throttle(func, timeout = 500) {
24
- let timer = null
25
- return (...args) => {
26
- if (timer === null) {
27
- func(...args)
28
- timer = setTimeout(() => {
29
- timer = null
30
- }, timeout)
31
- }
32
- }
33
- }
34
-
35
- /**
36
- * Clamp a number between a minimum and maximum value.
37
- */
38
- export const clamp = (value: number, min: number, max: number) =>
39
- Math.min(Math.max(value, min), max)
40
-
41
- /**
42
- * Check if a value is a finite number.
43
- */
44
- export const isNumber = (value: unknown): value is number =>
45
- typeof value === "number" && Number.isFinite(value)
@@ -1,14 +0,0 @@
1
- :host,
2
- :host * {
3
- box-sizing: border-box;
4
- font-feature-settings: var(--leu-t-font-feature-settings);
5
- }
6
-
7
- /**
8
- * If a custom element sets the display property to any value
9
- * it will not be hidden by the [hidden] attribute.
10
- * That's why we need to specify this rule.
11
- */
12
- :host([hidden]) {
13
- display: none;
14
- }
@@ -1,6 +0,0 @@
1
- @custom-media --viewport-small (min-width: 400px);
2
- @custom-media --viewport-small-max (max-width: 599px);
3
- @custom-media --viewport-regular (min-width: 600px);
4
- @custom-media --viewport-medium (min-width: 840px);
5
- @custom-media --viewport-large (min-width: 1024px);
6
- @custom-media --viewport-xlarge (min-width: 1280px);
@@ -1,210 +0,0 @@
1
- {
2
- "definitions": [
3
- {
4
- "fontSize": "12px",
5
- "fontWeight": "regular",
6
- "lineHeight": 1.5,
7
- "spacing": "9px",
8
- "name": "tiny"
9
- },
10
- {
11
- "fontSize": "12px",
12
- "fontWeight": "black",
13
- "lineHeight": 1.5,
14
- "spacing": "9px",
15
- "name": "tiny"
16
- },
17
- {
18
- "fontSize": "14px",
19
- "fontWeight": "regular",
20
- "lineHeight": 1.4,
21
- "spacing": "10px",
22
- "name": "small"
23
- },
24
- {
25
- "fontSize": "14px",
26
- "fontWeight": "black",
27
- "lineHeight": 1.4,
28
- "spacing": "10px",
29
- "name": "small"
30
- },
31
- {
32
- "fontSize": "16px",
33
- "fontWeight": "regular",
34
- "lineHeight": 1.5,
35
- "spacing": "12px",
36
- "name": "regular"
37
- },
38
- {
39
- "fontSize": "16px",
40
- "fontWeight": "black",
41
- "lineHeight": 1.5,
42
- "spacing": "12px",
43
- "name": "regular"
44
- },
45
- {
46
- "fontSize": "18px",
47
- "fontWeight": "regular",
48
- "lineHeight": 1.5,
49
- "spacing": "13px",
50
- "name": "bigger-regular"
51
- },
52
- {
53
- "fontSize": "18px",
54
- "fontWeight": "black",
55
- "lineHeight": 1.3,
56
- "spacing": "12px",
57
- "name": "bigger-regular"
58
- },
59
- {
60
- "fontSize": "20px",
61
- "fontWeight": "regular",
62
- "lineHeight": 1.5,
63
- "spacing": "15px",
64
- "name": "medium"
65
- },
66
- {
67
- "fontSize": "20px",
68
- "fontWeight": "black",
69
- "lineHeight": 1.3,
70
- "spacing": "13px",
71
- "name": "medium"
72
- },
73
- {
74
- "fontSize": "24px",
75
- "fontWeight": "regular",
76
- "lineHeight": 1.5,
77
- "spacing": "18px",
78
- "name": "large"
79
- },
80
- {
81
- "fontSize": "24px",
82
- "fontWeight": "black",
83
- "lineHeight": 1.3,
84
- "spacing": "15px",
85
- "name": "large"
86
- },
87
- {
88
- "fontSize": "28px",
89
- "fontWeight": "black",
90
- "lineHeight": 1.2,
91
- "spacing": "17px",
92
- "name": "small-big"
93
- },
94
- {
95
- "fontSize": "32px",
96
- "fontWeight": "black",
97
- "lineHeight": 1.2,
98
- "spacing": "19px",
99
- "name": "big"
100
- },
101
- {
102
- "fontSize": "40px",
103
- "fontWeight": "black",
104
- "lineHeight": 1.2,
105
- "spacing": "24px",
106
- "name": "bigger-big"
107
- },
108
- {
109
- "fontSize": "48px",
110
- "fontWeight": "black",
111
- "lineHeight": 1,
112
- "spacing": "24px",
113
- "name": "small-huge"
114
- },
115
- {
116
- "fontSize": "56px",
117
- "fontWeight": "black",
118
- "lineHeight": 1,
119
- "spacing": "28px",
120
- "name": "huge"
121
- },
122
- {
123
- "fontSize": "72px",
124
- "fontWeight": "black",
125
- "lineHeight": 1,
126
- "spacing": "36px",
127
- "name": "giant"
128
- }
129
- ],
130
- "curves": [
131
- {
132
- "name": "tiny",
133
- "weights": ["regular", "black"],
134
- "steps": [
135
- [null, "tiny"],
136
- ["--viewport-regular", "small"]
137
- ]
138
- },
139
- {
140
- "name": "small",
141
- "weights": ["regular", "black"],
142
- "steps": [
143
- [null, "small"],
144
- ["--viewport-regular", "regular"],
145
- ["--viewport-large", "bigger-regular"]
146
- ]
147
- },
148
- {
149
- "name": "regular",
150
- "weights": ["regular", "black"],
151
- "steps": [
152
- [null, "regular"],
153
- ["--viewport-small", "bigger-regular"],
154
- ["--viewport-xlarge", "medium"]
155
- ]
156
- },
157
- {
158
- "name": "bigger-regular",
159
- "weights": ["regular", "black"],
160
- "steps": [
161
- [null, "bigger-regular"],
162
- ["--viewport-regular", "medium"],
163
- ["--viewport-xlarge", "large"]
164
- ]
165
- },
166
- {
167
- "name": "medium",
168
- "weights": ["black"],
169
- "steps": [
170
- [null, "bigger-regular"],
171
- ["--viewport-small", "medium"],
172
- ["--viewport-large", "large"],
173
- ["--viewport-xlarge", "small-big"]
174
- ]
175
- },
176
- {
177
- "name": "large",
178
- "weights": ["black"],
179
- "steps": [
180
- [null, "bigger-regular"],
181
- ["--viewport-regular", "large"],
182
- ["--viewport-large", "small-big"],
183
- ["--viewport-xlarge", "big"]
184
- ]
185
- },
186
- {
187
- "name": "big",
188
- "weights": ["black"],
189
- "steps": [
190
- [null, "large"],
191
- ["--viewport-regular", "small-big"],
192
- ["--viewport-medium", "big"],
193
- ["--viewport-large", "bigger-big"],
194
- ["--viewport-xlarge", "small-huge"]
195
- ]
196
- },
197
- {
198
- "name": "huge",
199
- "weights": ["black"],
200
- "steps": [
201
- [null, "small-big"],
202
- ["--viewport-small", "big"],
203
- ["--viewport-regular", "bigger-big"],
204
- ["--viewport-medium", "small-huge"],
205
- ["--viewport-large", "huge"],
206
- ["--viewport-xlarge", "giant"]
207
- ]
208
- }
209
- ]
210
- }
@@ -1,64 +0,0 @@
1
- import { html } from "lit"
2
-
3
- export default {
4
- title: "Components/Layout",
5
- }
6
-
7
- function Template() {
8
- return html` <style>
9
- .container {
10
- display: grid;
11
- grid-template-columns: var(--leu-grid-template-columns);
12
- gap: var(--leu-grid-gap);
13
- max-width: var(--leu-grid-max-width);
14
-
15
- margin: 0 auto;
16
- padding: 1rem;
17
-
18
- background-color: var(--leu-color-black-5);
19
- font-family: var(--leu-font-family-regular);
20
- font-feature-settings: var(--leu-t-font-feature-settings);
21
- }
22
-
23
- .container div {
24
- background-color: var(--leu-color-black-transp-5);
25
- padding: 1rem;
26
- }
27
- </style>
28
- <div class="container">
29
- <div style="grid-column-end: span 12;">
30
- <p>
31
- This story demonstrates the use of the predefined grid custom
32
- properties. It is not a component that can be reused.
33
- </p>
34
- </div>
35
- <div style="grid-column: var(--leu-grid-columns-full)">
36
- <pre>--leu-grid-columns-full</pre>
37
- <p>A preset to use the full width of the grid</p>
38
- </div>
39
- <div style="grid-column: var(--leu-grid-columns-offset)">
40
- <pre>--leu-grid-columns-offset</pre>
41
- <p>
42
- A preset that indents the content by two columns starting at the
43
- regular breakpoint. On smaller breakpoints it will use the full width.
44
- </p>
45
- </div>
46
-
47
- ${[
48
- [2, 2, 2, 2, 2, 2],
49
- [3, 3, 3, 3],
50
- [4, 4, 4],
51
- [6, 6],
52
- ]
53
- .flat()
54
- .map(
55
- (columns) =>
56
- html`<div style="grid-column-end: span ${columns}">
57
- ${columns}
58
- </div>`,
59
- )}
60
- </div>`
61
- }
62
-
63
- export const Regular = Template.bind({})
64
- Regular.args = {}
@@ -1,90 +0,0 @@
1
- @import url("./custom-media.css");
2
-
3
- :root,
4
- :host {
5
- --leu-color-black-100: #000;
6
- --leu-color-black-80: #333;
7
- --leu-color-black-60: #666;
8
- --leu-color-black-40: #949494;
9
- --leu-color-black-20: #ccc;
10
- --leu-color-black-10: #f0f0f0;
11
- --leu-color-black-5: #f7f7f7;
12
- --leu-color-black-0: #fffffe;
13
-
14
- --leu-color-black-transp-80: rgb(0 0 0 / 80%);
15
- --leu-color-black-transp-60: rgb(0 0 0 / 60%);
16
- --leu-color-black-transp-40: rgb(0 0 0 / 40%);
17
- --leu-color-black-transp-20: rgb(0 0 0 / 20%);
18
- --leu-color-black-transp-10: rgb(0 0 0 / 10%);
19
- --leu-color-black-transp-5: rgb(0 0 0 / 5%);
20
-
21
- --leu-color-white-transp-90: rgb(255 255 255 / 90%);
22
- --leu-color-white-transp-70: rgb(255 255 255 / 70%);
23
- --leu-color-white-transp-40: rgb(255 255 255 / 40%);
24
- --leu-color-white-transp-10: rgb(255 255 255 / 10%);
25
-
26
- --leu-color-accent-blue: #0076bd;
27
- --leu-color-accent-darkblue: #00407c;
28
- --leu-color-accent-turquoise: #00797b;
29
- --leu-color-accent-green: #1a7f1f;
30
- --leu-color-accent-bordeaux: #b01657;
31
- --leu-color-accent-magenta: #d40053;
32
- --leu-color-accent-violet: #7f3da7;
33
- --leu-color-accent-gray: var(--leu-color-black-60);
34
-
35
- --leu-color-accent-blue-soft: #edf5fa;
36
- --leu-color-accent-darkblue-soft: #e0e8ee;
37
- --leu-color-accent-turquoise-soft: #e8f3f2;
38
- --leu-color-accent-green-soft: #ebf6eb;
39
- --leu-color-accent-bordeaux-soft: #f6e3ea;
40
- --leu-color-accent-magenta-soft: #fcedf3;
41
- --leu-color-accent-violet-soft: #ece2f1;
42
- --leu-color-accent-gray-soft: var(--leu-color-black-10);
43
-
44
- --leu-color-func-cyan: #009ee0;
45
- --leu-color-func-red: #d93c1a;
46
- --leu-color-func-green: #1a7f1f;
47
-
48
- /* stylelint-disable value-keyword-case */
49
- --leu-font-family-regular:
50
- "InterRegular", "HelveticaNowRegular", "Helvetica", sans-serif;
51
- --leu-font-family-black:
52
- "InterBlack", "HelveticaNowBlack", "Arial Black", "Helvetica", sans-serif;
53
- /* stylelint-enable value-keyword-case */
54
-
55
- --leu-box-shadow-short: 0px 0px 2px var(--leu-color-black-transp-40);
56
- --leu-box-shadow-regular: 0px 0px 16px var(--leu-color-black-transp-20);
57
- --leu-box-shadow-long: 0px 0px 80px var(--leu-color-black-transp-20);
58
-
59
- --leu-z-index-popup: 100;
60
- --leu-z-index-scroll-top: 1099;
61
-
62
- @leu-font-styles './font-definitions.json';
63
- --leu-t-font-feature-settings: "ss07", "ss08", "cv03", "cv04", "cv10";
64
-
65
- /*
66
- * Grid system
67
- *
68
- * The design system uses a 6 columns system on smaller screens.
69
- * For simplicity we use a 12 column grid for all breakpoints (zh web implementation does the same).
70
- *
71
- * The goal is to keep the css footprint small
72
- * by not generating all classes for every cell width for every breakpoint.
73
- * Most components don't need a grid and those who do probably have a very simple configuration.
74
- * If we have enough use cases for a more complex grid system we can add it later.
75
- */
76
- --leu-grid-gap: 1rem;
77
- --leu-grid-template-columns: repeat(12, minmax(0, 4.25rem));
78
- --leu-grid-max-width: 73rem;
79
-
80
- --leu-grid-columns-full: 1 / -1;
81
- --leu-grid-columns-offset: 1 / -1;
82
-
83
- @media (--viewport-regular) {
84
- --leu-grid-columns-offset: 3 / -1;
85
- }
86
-
87
- @media (--viewport-medium) {
88
- --leu-grid-gap: 2rem;
89
- }
90
- }
package/stat_zh.png DELETED
Binary file