@statistikzh/leu 0.4.0 → 0.5.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 (216) hide show
  1. package/.storybook/preview.js +1 -2
  2. package/CHANGELOG.md +24 -0
  3. package/custom-elements-manifest.config.js +46 -0
  4. package/dist/Accordion.d.ts +31 -0
  5. package/dist/Accordion.d.ts.map +1 -0
  6. package/dist/Accordion.js +257 -0
  7. package/dist/Breadcrumb.d.ts +69 -0
  8. package/dist/Breadcrumb.d.ts.map +1 -0
  9. package/dist/Breadcrumb.js +392 -0
  10. package/dist/Button-da11d064.d.ts +84 -0
  11. package/dist/Button-da11d064.d.ts.map +1 -0
  12. package/dist/Button-da11d064.js +542 -0
  13. package/dist/Button.d.ts +2 -0
  14. package/dist/Button.d.ts.map +1 -0
  15. package/dist/Button.js +6 -420
  16. package/dist/ButtonGroup.d.ts +24 -0
  17. package/dist/ButtonGroup.d.ts.map +1 -0
  18. package/dist/ButtonGroup.js +70 -39
  19. package/dist/Checkbox.d.ts +13 -0
  20. package/dist/Checkbox.d.ts.map +1 -0
  21. package/dist/Checkbox.js +2 -2
  22. package/dist/CheckboxGroup.d.ts +13 -0
  23. package/dist/CheckboxGroup.d.ts.map +1 -0
  24. package/dist/CheckboxGroup.js +3 -3
  25. package/dist/Chip.d.ts +5 -0
  26. package/dist/Chip.d.ts.map +1 -0
  27. package/dist/{Chip-dac7337d.js → Chip.js} +16 -5
  28. package/dist/ChipGroup.d.ts +28 -0
  29. package/dist/ChipGroup.d.ts.map +1 -0
  30. package/dist/ChipGroup.js +62 -5
  31. package/dist/ChipLink.d.ts +15 -0
  32. package/dist/ChipLink.d.ts.map +1 -0
  33. package/dist/ChipLink.js +1 -1
  34. package/dist/ChipRemovable.d.ts +13 -0
  35. package/dist/ChipRemovable.d.ts.map +1 -0
  36. package/dist/ChipRemovable.js +2 -2
  37. package/dist/ChipSelectable.d.ts +22 -0
  38. package/dist/ChipSelectable.d.ts.map +1 -0
  39. package/dist/ChipSelectable.js +5 -5
  40. package/dist/Dropdown.d.ts +15 -0
  41. package/dist/Dropdown.d.ts.map +1 -0
  42. package/dist/Dropdown.js +25 -7
  43. package/dist/Input.d.ts +154 -0
  44. package/dist/Input.d.ts.map +1 -0
  45. package/dist/Input.js +13 -7
  46. package/dist/Menu.d.ts +8 -0
  47. package/dist/Menu.d.ts.map +1 -0
  48. package/dist/MenuItem.d.ts +21 -0
  49. package/dist/MenuItem.d.ts.map +1 -0
  50. package/dist/MenuItem.js +3 -3
  51. package/dist/Pagination.d.ts +27 -0
  52. package/dist/Pagination.d.ts.map +1 -0
  53. package/dist/Pagination.js +93 -61
  54. package/dist/Popup.d.ts +18 -0
  55. package/dist/Popup.d.ts.map +1 -0
  56. package/dist/{leu-popup-4bf6f1f4.js → Popup.js} +4 -5
  57. package/dist/Radio.d.ts +12 -0
  58. package/dist/Radio.d.ts.map +1 -0
  59. package/dist/Radio.js +2 -2
  60. package/dist/RadioGroup.d.ts +20 -0
  61. package/dist/RadioGroup.d.ts.map +1 -0
  62. package/dist/RadioGroup.js +3 -3
  63. package/dist/ScrollTop.d.ts +19 -0
  64. package/dist/ScrollTop.d.ts.map +1 -0
  65. package/dist/ScrollTop.js +122 -0
  66. package/dist/Select.d.ts +98 -0
  67. package/dist/Select.d.ts.map +1 -0
  68. package/dist/Select.js +27 -82
  69. package/dist/Table.d.ts +48 -0
  70. package/dist/Table.d.ts.map +1 -0
  71. package/dist/Table.js +7 -4
  72. package/dist/VisuallyHidden.d.ts +8 -0
  73. package/dist/VisuallyHidden.d.ts.map +1 -0
  74. package/dist/VisuallyHidden.js +28 -0
  75. package/dist/_rollupPluginBabelHelpers-20f659f4.d.ts +3 -0
  76. package/dist/_rollupPluginBabelHelpers-20f659f4.d.ts.map +1 -0
  77. package/dist/defineElement-40372b4b.d.ts +9 -0
  78. package/dist/defineElement-40372b4b.d.ts.map +1 -0
  79. package/dist/{defineElement-47d4f665.js → defineElement-40372b4b.js} +1 -1
  80. package/dist/icon-03e86700.d.ts +11 -0
  81. package/dist/icon-03e86700.d.ts.map +1 -0
  82. package/dist/index.js.d.ts +21 -0
  83. package/dist/index.js.d.ts.map +1 -0
  84. package/dist/{index.js → index.js.js} +14 -8
  85. package/dist/leu-accordion.d.ts +3 -0
  86. package/dist/leu-accordion.d.ts.map +1 -0
  87. package/dist/leu-accordion.js +9 -0
  88. package/dist/leu-breadcrumb.d.ts +3 -0
  89. package/dist/leu-breadcrumb.d.ts.map +1 -0
  90. package/dist/leu-breadcrumb.js +23 -0
  91. package/dist/leu-button-group.d.ts +3 -0
  92. package/dist/leu-button-group.d.ts.map +1 -0
  93. package/dist/leu-button-group.js +1 -5
  94. package/dist/leu-button.d.ts +3 -0
  95. package/dist/leu-button.d.ts.map +1 -0
  96. package/dist/leu-button.js +3 -2
  97. package/dist/leu-checkbox-group.d.ts +3 -0
  98. package/dist/leu-checkbox-group.d.ts.map +1 -0
  99. package/dist/leu-checkbox-group.js +1 -1
  100. package/dist/leu-checkbox.d.ts +3 -0
  101. package/dist/leu-checkbox.d.ts.map +1 -0
  102. package/dist/leu-checkbox.js +1 -1
  103. package/dist/leu-chip-group.d.ts +3 -0
  104. package/dist/leu-chip-group.d.ts.map +1 -0
  105. package/dist/leu-chip-group.js +2 -1
  106. package/dist/leu-chip-link.d.ts +3 -0
  107. package/dist/leu-chip-link.d.ts.map +1 -0
  108. package/dist/leu-chip-link.js +2 -2
  109. package/dist/leu-chip-removable.d.ts +3 -0
  110. package/dist/leu-chip-removable.d.ts.map +1 -0
  111. package/dist/leu-chip-removable.js +2 -2
  112. package/dist/leu-chip-selectable.d.ts +3 -0
  113. package/dist/leu-chip-selectable.d.ts.map +1 -0
  114. package/dist/leu-chip-selectable.js +2 -2
  115. package/dist/leu-dropdown.d.ts +3 -0
  116. package/dist/leu-dropdown.d.ts.map +1 -0
  117. package/dist/leu-dropdown.js +5 -4
  118. package/dist/leu-input.d.ts +3 -0
  119. package/dist/leu-input.d.ts.map +1 -0
  120. package/dist/leu-input.js +1 -1
  121. package/dist/leu-menu-item.d.ts +3 -0
  122. package/dist/leu-menu-item.d.ts.map +1 -0
  123. package/dist/leu-menu-item.js +1 -1
  124. package/dist/leu-menu.d.ts +3 -0
  125. package/dist/leu-menu.d.ts.map +1 -0
  126. package/dist/leu-menu.js +1 -1
  127. package/dist/leu-pagination.d.ts +3 -0
  128. package/dist/leu-pagination.d.ts.map +1 -0
  129. package/dist/leu-pagination.js +5 -2
  130. package/dist/leu-popup.d.ts +3 -0
  131. package/dist/leu-popup.d.ts.map +1 -0
  132. package/dist/leu-popup.js +9 -0
  133. package/dist/leu-radio-group.d.ts +3 -0
  134. package/dist/leu-radio-group.d.ts.map +1 -0
  135. package/dist/leu-radio-group.js +1 -1
  136. package/dist/leu-radio.d.ts +3 -0
  137. package/dist/leu-radio.d.ts.map +1 -0
  138. package/dist/leu-radio.js +1 -1
  139. package/dist/leu-scroll-top.d.ts +3 -0
  140. package/dist/leu-scroll-top.d.ts.map +1 -0
  141. package/dist/leu-scroll-top.js +14 -0
  142. package/dist/leu-select.d.ts +3 -0
  143. package/dist/leu-select.d.ts.map +1 -0
  144. package/dist/leu-select.js +4 -3
  145. package/dist/leu-table.d.ts +3 -0
  146. package/dist/leu-table.d.ts.map +1 -0
  147. package/dist/leu-table.js +5 -2
  148. package/dist/leu-visually-hidden.d.ts +3 -0
  149. package/dist/leu-visually-hidden.d.ts.map +1 -0
  150. package/dist/leu-visually-hidden.js +8 -0
  151. package/dist/theme.css +386 -2
  152. package/dist/utils-65469421.d.ts +16 -0
  153. package/dist/utils-65469421.d.ts.map +1 -0
  154. package/dist/utils-65469421.js +35 -0
  155. package/index.js +3 -0
  156. package/package.json +30 -12
  157. package/postcss.config.cjs +2 -0
  158. package/rollup.config.js +21 -40
  159. package/scripts/generate-component/templates/[name].css +2 -2
  160. package/scripts/postcss-leu-font-styles.cjs +160 -0
  161. package/src/components/accordion/accordion.css +2 -2
  162. package/src/components/accordion/stories/accordion.stories.js +2 -1
  163. package/src/components/accordion/test/accordion.test.js +4 -2
  164. package/src/components/breadcrumb/Breadcrumb.js +2 -1
  165. package/src/components/breadcrumb/breadcrumb.css +2 -13
  166. package/src/components/button/Button.js +69 -8
  167. package/src/components/button/button.css +10 -2
  168. package/src/components/button/stories/button.stories.js +43 -90
  169. package/src/components/button/test/button.test.js +90 -19
  170. package/src/components/button-group/ButtonGroup.js +76 -34
  171. package/src/components/button-group/stories/button-group.stories.js +13 -6
  172. package/src/components/button-group/test/button-group.test.js +38 -31
  173. package/src/components/checkbox/checkbox-group.css +2 -2
  174. package/src/components/checkbox/checkbox.css +1 -1
  175. package/src/components/chip/ChipGroup.js +42 -2
  176. package/src/components/chip/ChipRemovable.js +1 -1
  177. package/src/components/chip/ChipSelectable.js +4 -4
  178. package/src/components/chip/chip-group.css +12 -2
  179. package/src/components/chip/chip.css +14 -3
  180. package/src/components/chip/stories/chip-group.stories.js +100 -46
  181. package/src/components/chip/test/chip-removable.test.js +3 -3
  182. package/src/components/dropdown/Dropdown.js +23 -3
  183. package/src/components/input/Input.js +7 -4
  184. package/src/components/input/input.css +2 -2
  185. package/src/components/input/stories/input.stories.js +13 -0
  186. package/src/components/input/test/input.test.js +1 -0
  187. package/src/components/menu/menu-item.css +3 -3
  188. package/src/components/pagination/Pagination.js +91 -60
  189. package/src/components/pagination/pagination.css +6 -1
  190. package/src/components/pagination/stories/pagination.stories.js +15 -2
  191. package/src/components/pagination/test/pagination.test.js +15 -15
  192. package/src/components/popup/popup.css +2 -2
  193. package/src/components/popup/stories/popup.stories.js +1 -1
  194. package/src/components/radio/radio-group.css +2 -2
  195. package/src/components/radio/radio.css +1 -1
  196. package/src/components/scroll-top/ScrollTop.js +87 -0
  197. package/src/components/scroll-top/leu-scroll-top.js +6 -0
  198. package/src/components/scroll-top/scroll-top.css +34 -0
  199. package/src/components/scroll-top/stories/scroll-top.stories.js +217 -0
  200. package/src/components/scroll-top/test/scroll-top.test.js +22 -0
  201. package/src/components/select/Select.js +24 -6
  202. package/src/components/select/select.css +2 -2
  203. package/src/components/table/table.css +2 -2
  204. package/src/components/visually-hidden/VisuallyHidden.js +13 -0
  205. package/src/components/visually-hidden/leu-visually-hidden.js +6 -0
  206. package/src/components/visually-hidden/stories/visually-hidden.stories.js +22 -0
  207. package/src/components/visually-hidden/test/visually-hidden.test.js +36 -0
  208. package/src/components/visually-hidden/visually-hidden.css +10 -0
  209. package/src/lib/defineElement.js +1 -1
  210. package/src/lib/hasSlotController.js +5 -3
  211. package/src/lib/utils.js +21 -3
  212. package/src/styles/custom-properties.css +6 -2
  213. package/src/styles/font-definitions.json +202 -0
  214. package/stylelint.config.mjs +2 -0
  215. package/tsconfig.build.json +21 -0
  216. package/tsconfig.json +16 -0
package/dist/theme.css CHANGED
@@ -42,10 +42,394 @@
42
42
  --leu-color-func-red: #d93c1a;
43
43
  --leu-color-func-green: #1a7f1f;
44
44
 
45
- --leu-font-regular: HelveticaNowRegular, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
46
- --leu-font-black: HelveticaNowBlack, Arial Black, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
45
+ --leu-font-family-regular: HelveticaNowRegular, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
46
+ --leu-font-family-black: HelveticaNowBlack, Arial Black, Helvetica, sans-serif; /* stylelint-disable-line value-keyword-case */
47
47
 
48
48
  --leu-box-shadow-short: 0px 0px 2px var(--leu-color-black-transp-40);
49
49
  --leu-box-shadow-regular: 0px 0px 16px var(--leu-color-black-transp-20);
50
50
  --leu-box-shadow-long: 0px 0px 80px var(--leu-color-black-transp-20);
51
+
52
+ --leu-t-30-regular-font-size: 0.75rem;
53
+
54
+ --leu-t-30-regular-line-height: 1.5;
55
+
56
+ --leu-t-30-regular-spacing: 0.5625rem;
57
+
58
+ --leu-t-30-regular-font: var(--leu-t-30-regular-font-size) / var(--leu-t-30-regular-line-height) var(--leu-font-family-regular);
59
+
60
+ --leu-t-30-black-font-size: 0.75rem;
61
+
62
+ --leu-t-30-black-line-height: 1.5;
63
+
64
+ --leu-t-30-black-spacing: 0.5625rem;
65
+
66
+ --leu-t-30-black-font: var(--leu-t-30-black-font-size) / var(--leu-t-30-black-line-height) var(--leu-font-family-black);
67
+
68
+ --leu-t-35-regular-font-size: 0.875rem;
69
+
70
+ --leu-t-35-regular-line-height: 1.4;
71
+
72
+ --leu-t-35-regular-spacing: 0.625rem;
73
+
74
+ --leu-t-35-regular-font: var(--leu-t-35-regular-font-size) / var(--leu-t-35-regular-line-height) var(--leu-font-family-regular);
75
+
76
+ --leu-t-35-black-font-size: 0.875rem;
77
+
78
+ --leu-t-35-black-line-height: 1.4;
79
+
80
+ --leu-t-35-black-spacing: 0.625rem;
81
+
82
+ --leu-t-35-black-font: var(--leu-t-35-black-font-size) / var(--leu-t-35-black-line-height) var(--leu-font-family-black);
83
+
84
+ --leu-t-40-regular-font-size: 1rem;
85
+
86
+ --leu-t-40-regular-line-height: 1.5;
87
+
88
+ --leu-t-40-regular-spacing: 0.75rem;
89
+
90
+ --leu-t-40-regular-font: var(--leu-t-40-regular-font-size) / var(--leu-t-40-regular-line-height) var(--leu-font-family-regular);
91
+
92
+ --leu-t-40-black-font-size: 1rem;
93
+
94
+ --leu-t-40-black-line-height: 1.5;
95
+
96
+ --leu-t-40-black-spacing: 0.75rem;
97
+
98
+ --leu-t-40-black-font: var(--leu-t-40-black-font-size) / var(--leu-t-40-black-line-height) var(--leu-font-family-black);
99
+
100
+ --leu-t-45-regular-font-size: 1.125rem;
101
+
102
+ --leu-t-45-regular-line-height: 1.5;
103
+
104
+ --leu-t-45-regular-spacing: 0.8125rem;
105
+
106
+ --leu-t-45-regular-font: var(--leu-t-45-regular-font-size) / var(--leu-t-45-regular-line-height) var(--leu-font-family-regular);
107
+
108
+ --leu-t-45-black-font-size: 1.125rem;
109
+
110
+ --leu-t-45-black-line-height: 1.3;
111
+
112
+ --leu-t-45-black-spacing: 0.75rem;
113
+
114
+ --leu-t-45-black-font: var(--leu-t-45-black-font-size) / var(--leu-t-45-black-line-height) var(--leu-font-family-black);
115
+
116
+ --leu-t-50-regular-font-size: 1.25rem;
117
+
118
+ --leu-t-50-regular-line-height: 1.5;
119
+
120
+ --leu-t-50-regular-spacing: 0.9375rem;
121
+
122
+ --leu-t-50-regular-font: var(--leu-t-50-regular-font-size) / var(--leu-t-50-regular-line-height) var(--leu-font-family-regular);
123
+
124
+ --leu-t-50-black-font-size: 1.25rem;
125
+
126
+ --leu-t-50-black-line-height: 1.3;
127
+
128
+ --leu-t-50-black-spacing: 0.8125rem;
129
+
130
+ --leu-t-50-black-font: var(--leu-t-50-black-font-size) / var(--leu-t-50-black-line-height) var(--leu-font-family-black);
131
+
132
+ --leu-t-60-regular-font-size: 1.5rem;
133
+
134
+ --leu-t-60-regular-line-height: 1.5;
135
+
136
+ --leu-t-60-regular-spacing: 1.125rem;
137
+
138
+ --leu-t-60-regular-font: var(--leu-t-60-regular-font-size) / var(--leu-t-60-regular-line-height) var(--leu-font-family-regular);
139
+
140
+ --leu-t-60-black-font-size: 1.5rem;
141
+
142
+ --leu-t-60-black-line-height: 1.3;
143
+
144
+ --leu-t-60-black-spacing: 0.9375rem;
145
+
146
+ --leu-t-60-black-font: var(--leu-t-60-black-font-size) / var(--leu-t-60-black-line-height) var(--leu-font-family-black);
147
+
148
+ --leu-t-70-black-font-size: 1.75rem;
149
+
150
+ --leu-t-70-black-line-height: 1.2;
151
+
152
+ --leu-t-70-black-spacing: 1.0625rem;
153
+
154
+ --leu-t-70-black-font: var(--leu-t-70-black-font-size) / var(--leu-t-70-black-line-height) var(--leu-font-family-black);
155
+
156
+ --leu-t-80-black-font-size: 2rem;
157
+
158
+ --leu-t-80-black-line-height: 1.2;
159
+
160
+ --leu-t-80-black-spacing: 1.1875rem;
161
+
162
+ --leu-t-80-black-font: var(--leu-t-80-black-font-size) / var(--leu-t-80-black-line-height) var(--leu-font-family-black);
163
+
164
+ --leu-t-100-black-font-size: 2.5rem;
165
+
166
+ --leu-t-100-black-line-height: 1.2;
167
+
168
+ --leu-t-100-black-spacing: 1.5rem;
169
+
170
+ --leu-t-100-black-font: var(--leu-t-100-black-font-size) / var(--leu-t-100-black-line-height) var(--leu-font-family-black);
171
+
172
+ --leu-t-120-black-font-size: 3rem;
173
+
174
+ --leu-t-120-black-line-height: 1;
175
+
176
+ --leu-t-120-black-spacing: 1.5rem;
177
+
178
+ --leu-t-120-black-font: var(--leu-t-120-black-font-size) / var(--leu-t-120-black-line-height) var(--leu-font-family-black);
179
+
180
+ --leu-t-140-black-font-size: 3.5rem;
181
+
182
+ --leu-t-140-black-line-height: 1;
183
+
184
+ --leu-t-140-black-spacing: 1.75rem;
185
+
186
+ --leu-t-140-black-font: var(--leu-t-140-black-font-size) / var(--leu-t-140-black-line-height) var(--leu-font-family-black);
187
+
188
+ --leu-t-180-black-font-size: 4.5rem;
189
+
190
+ --leu-t-180-black-line-height: 1;
191
+
192
+ --leu-t-180-black-spacing: 2.25rem;
193
+
194
+ --leu-t-180-black-font: var(--leu-t-180-black-font-size) / var(--leu-t-180-black-line-height) var(--leu-font-family-black);
195
+
196
+ --leu-t-curve-35-black-font-size: var(--leu-t-30-black-font-size);
197
+
198
+ --leu-t-curve-35-black-line-height: var(--leu-t-30-black-line-height);
199
+
200
+ --leu-t-curve-35-black-spacing: var(--leu-t-30-black-spacing);
201
+
202
+ --leu-t-curve-35-black-font: var(--leu-t-30-black-font);
203
+
204
+ --leu-t-curve-45-black-font-size: var(--leu-t-35-black-font-size);
205
+
206
+ --leu-t-curve-45-black-line-height: var(--leu-t-35-black-line-height);
207
+
208
+ --leu-t-curve-45-black-spacing: var(--leu-t-35-black-spacing);
209
+
210
+ --leu-t-curve-45-black-font: var(--leu-t-35-black-font);
211
+
212
+ --leu-t-curve-50-black-font-size: var(--leu-t-40-black-font-size);
213
+
214
+ --leu-t-curve-50-black-line-height: var(--leu-t-40-black-line-height);
215
+
216
+ --leu-t-curve-50-black-spacing: var(--leu-t-40-black-spacing);
217
+
218
+ --leu-t-curve-50-black-font: var(--leu-t-40-black-font);
219
+
220
+ --leu-t-curve-60-black-font-size: var(--leu-t-45-black-font-size);
221
+
222
+ --leu-t-curve-60-black-line-height: var(--leu-t-45-black-line-height);
223
+
224
+ --leu-t-curve-60-black-spacing: var(--leu-t-45-black-spacing);
225
+
226
+ --leu-t-curve-60-black-font: var(--leu-t-45-black-font);
227
+
228
+ --leu-t-curve-70-black-font-size: var(--leu-t-45-black-font-size);
229
+
230
+ --leu-t-curve-70-black-line-height: var(--leu-t-45-black-line-height);
231
+
232
+ --leu-t-curve-70-black-spacing: var(--leu-t-45-black-spacing);
233
+
234
+ --leu-t-curve-70-black-font: var(--leu-t-45-black-font);
235
+
236
+ --leu-t-curve-80-black-font-size: var(--leu-t-45-black-font-size);
237
+
238
+ --leu-t-curve-80-black-line-height: var(--leu-t-45-black-line-height);
239
+
240
+ --leu-t-curve-80-black-spacing: var(--leu-t-45-black-spacing);
241
+
242
+ --leu-t-curve-80-black-font: var(--leu-t-45-black-font);
243
+
244
+ --leu-t-curve-120-black-font-size: var(--leu-t-60-black-font-size);
245
+
246
+ --leu-t-curve-120-black-line-height: var(--leu-t-60-black-line-height);
247
+
248
+ --leu-t-curve-120-black-spacing: var(--leu-t-60-black-spacing);
249
+
250
+ --leu-t-curve-120-black-font: var(--leu-t-60-black-font);
251
+
252
+ --leu-t-curve-180-black-font-size: var(--leu-t-70-black-font-size);
253
+
254
+ --leu-t-curve-180-black-line-height: var(--leu-t-70-black-line-height);
255
+
256
+ --leu-t-curve-180-black-spacing: var(--leu-t-70-black-spacing);
257
+
258
+ --leu-t-curve-180-black-font: var(--leu-t-70-black-font);
259
+ }
260
+ @media (min-width: 600px) {
261
+ :root {
262
+ --leu-t-curve-35-black-font-size: var(--leu-t-35-black-font-size);
263
+ --leu-t-curve-35-black-line-height: var(--leu-t-35-black-line-height);
264
+ --leu-t-curve-35-black-spacing: var(--leu-t-35-black-spacing);
265
+ --leu-t-curve-35-black-font: var(--leu-t-35-black-font);
266
+ }
267
+ }
268
+ @media (min-width: 600px) {
269
+ :root {
270
+ --leu-t-curve-45-black-font-size: var(--leu-t-40-black-font-size);
271
+ --leu-t-curve-45-black-line-height: var(--leu-t-40-black-line-height);
272
+ --leu-t-curve-45-black-spacing: var(--leu-t-40-black-spacing);
273
+ --leu-t-curve-45-black-font: var(--leu-t-40-black-font);
274
+ }
275
+ }
276
+ @media (min-width: 1024px) {
277
+ :root {
278
+ --leu-t-curve-45-black-font-size: var(--leu-t-45-black-font-size);
279
+ --leu-t-curve-45-black-line-height: var(--leu-t-45-black-line-height);
280
+ --leu-t-curve-45-black-spacing: var(--leu-t-45-black-spacing);
281
+ --leu-t-curve-45-black-font: var(--leu-t-45-black-font);
282
+ }
283
+ }
284
+ @media (min-width: 400px) {
285
+ :root {
286
+ --leu-t-curve-50-black-font-size: var(--leu-t-45-black-font-size);
287
+ --leu-t-curve-50-black-line-height: var(--leu-t-45-black-line-height);
288
+ --leu-t-curve-50-black-spacing: var(--leu-t-45-black-spacing);
289
+ --leu-t-curve-50-black-font: var(--leu-t-45-black-font);
290
+ }
291
+ }
292
+ @media (min-width: 1280px) {
293
+ :root {
294
+ --leu-t-curve-50-black-font-size: var(--leu-t-50-black-font-size);
295
+ --leu-t-curve-50-black-line-height: var(--leu-t-50-black-line-height);
296
+ --leu-t-curve-50-black-spacing: var(--leu-t-50-black-spacing);
297
+ --leu-t-curve-50-black-font: var(--leu-t-50-black-font);
298
+ }
299
+ }
300
+ @media (min-width: 600px) {
301
+ :root {
302
+ --leu-t-curve-60-black-font-size: var(--leu-t-50-black-font-size);
303
+ --leu-t-curve-60-black-line-height: var(--leu-t-50-black-line-height);
304
+ --leu-t-curve-60-black-spacing: var(--leu-t-50-black-spacing);
305
+ --leu-t-curve-60-black-font: var(--leu-t-50-black-font);
306
+ }
307
+ }
308
+ @media (min-width: 1280px) {
309
+ :root {
310
+ --leu-t-curve-60-black-font-size: var(--leu-t-60-black-font-size);
311
+ --leu-t-curve-60-black-line-height: var(--leu-t-60-black-line-height);
312
+ --leu-t-curve-60-black-spacing: var(--leu-t-60-black-spacing);
313
+ --leu-t-curve-60-black-font: var(--leu-t-60-black-font);
314
+ }
315
+ }
316
+ @media (min-width: 400px) {
317
+ :root {
318
+ --leu-t-curve-70-black-font-size: var(--leu-t-50-black-font-size);
319
+ --leu-t-curve-70-black-line-height: var(--leu-t-50-black-line-height);
320
+ --leu-t-curve-70-black-spacing: var(--leu-t-50-black-spacing);
321
+ --leu-t-curve-70-black-font: var(--leu-t-50-black-font);
322
+ }
323
+ }
324
+ @media (min-width: 1024px) {
325
+ :root {
326
+ --leu-t-curve-70-black-font-size: var(--leu-t-60-black-font-size);
327
+ --leu-t-curve-70-black-line-height: var(--leu-t-60-black-line-height);
328
+ --leu-t-curve-70-black-spacing: var(--leu-t-60-black-spacing);
329
+ --leu-t-curve-70-black-font: var(--leu-t-60-black-font);
330
+ }
331
+ }
332
+ @media (min-width: 1280px) {
333
+ :root {
334
+ --leu-t-curve-70-black-font-size: var(--leu-t-70-black-font-size);
335
+ --leu-t-curve-70-black-line-height: var(--leu-t-70-black-line-height);
336
+ --leu-t-curve-70-black-spacing: var(--leu-t-70-black-spacing);
337
+ --leu-t-curve-70-black-font: var(--leu-t-70-black-font);
338
+ }
339
+ }
340
+ @media (min-width: 600px) {
341
+ :root {
342
+ --leu-t-curve-80-black-font-size: var(--leu-t-60-black-font-size);
343
+ --leu-t-curve-80-black-line-height: var(--leu-t-60-black-line-height);
344
+ --leu-t-curve-80-black-spacing: var(--leu-t-60-black-spacing);
345
+ --leu-t-curve-80-black-font: var(--leu-t-60-black-font);
346
+ }
347
+ }
348
+ @media (min-width: 1024px) {
349
+ :root {
350
+ --leu-t-curve-80-black-font-size: var(--leu-t-70-black-font-size);
351
+ --leu-t-curve-80-black-line-height: var(--leu-t-70-black-line-height);
352
+ --leu-t-curve-80-black-spacing: var(--leu-t-70-black-spacing);
353
+ --leu-t-curve-80-black-font: var(--leu-t-70-black-font);
354
+ }
355
+ }
356
+ @media (min-width: 1280px) {
357
+ :root {
358
+ --leu-t-curve-80-black-font-size: var(--leu-t-80-black-font-size);
359
+ --leu-t-curve-80-black-line-height: var(--leu-t-80-black-line-height);
360
+ --leu-t-curve-80-black-spacing: var(--leu-t-80-black-spacing);
361
+ --leu-t-curve-80-black-font: var(--leu-t-80-black-font);
362
+ }
363
+ }
364
+ @media (min-width: 600px) {
365
+ :root {
366
+ --leu-t-curve-120-black-font-size: var(--leu-t-70-black-font-size);
367
+ --leu-t-curve-120-black-line-height: var(--leu-t-70-black-line-height);
368
+ --leu-t-curve-120-black-spacing: var(--leu-t-70-black-spacing);
369
+ --leu-t-curve-120-black-font: var(--leu-t-70-black-font);
370
+ }
371
+ }
372
+ @media (min-width: 840px) {
373
+ :root {
374
+ --leu-t-curve-120-black-font-size: var(--leu-t-80-black-font-size);
375
+ --leu-t-curve-120-black-line-height: var(--leu-t-80-black-line-height);
376
+ --leu-t-curve-120-black-spacing: var(--leu-t-80-black-spacing);
377
+ --leu-t-curve-120-black-font: var(--leu-t-80-black-font);
378
+ }
379
+ }
380
+ @media (min-width: 1024px) {
381
+ :root {
382
+ --leu-t-curve-120-black-font-size: var(--leu-t-100-black-font-size);
383
+ --leu-t-curve-120-black-line-height: var(--leu-t-100-black-line-height);
384
+ --leu-t-curve-120-black-spacing: var(--leu-t-100-black-spacing);
385
+ --leu-t-curve-120-black-font: var(--leu-t-100-black-font);
386
+ }
387
+ }
388
+ @media (min-width: 1280px) {
389
+ :root {
390
+ --leu-t-curve-120-black-font-size: var(--leu-t-120-black-font-size);
391
+ --leu-t-curve-120-black-line-height: var(--leu-t-120-black-line-height);
392
+ --leu-t-curve-120-black-spacing: var(--leu-t-120-black-spacing);
393
+ --leu-t-curve-120-black-font: var(--leu-t-120-black-font);
394
+ }
395
+ }
396
+ @media (min-width: 400px) {
397
+ :root {
398
+ --leu-t-curve-180-black-font-size: var(--leu-t-80-black-font-size);
399
+ --leu-t-curve-180-black-line-height: var(--leu-t-80-black-line-height);
400
+ --leu-t-curve-180-black-spacing: var(--leu-t-80-black-spacing);
401
+ --leu-t-curve-180-black-font: var(--leu-t-80-black-font);
402
+ }
403
+ }
404
+ @media (min-width: 600px) {
405
+ :root {
406
+ --leu-t-curve-180-black-font-size: var(--leu-t-100-black-font-size);
407
+ --leu-t-curve-180-black-line-height: var(--leu-t-100-black-line-height);
408
+ --leu-t-curve-180-black-spacing: var(--leu-t-100-black-spacing);
409
+ --leu-t-curve-180-black-font: var(--leu-t-100-black-font);
410
+ }
411
+ }
412
+ @media (min-width: 840px) {
413
+ :root {
414
+ --leu-t-curve-180-black-font-size: var(--leu-t-120-black-font-size);
415
+ --leu-t-curve-180-black-line-height: var(--leu-t-120-black-line-height);
416
+ --leu-t-curve-180-black-spacing: var(--leu-t-120-black-spacing);
417
+ --leu-t-curve-180-black-font: var(--leu-t-120-black-font);
418
+ }
419
+ }
420
+ @media (min-width: 1024px) {
421
+ :root {
422
+ --leu-t-curve-180-black-font-size: var(--leu-t-140-black-font-size);
423
+ --leu-t-curve-180-black-line-height: var(--leu-t-140-black-line-height);
424
+ --leu-t-curve-180-black-spacing: var(--leu-t-140-black-spacing);
425
+ --leu-t-curve-180-black-font: var(--leu-t-140-black-font);
426
+ }
427
+ }
428
+ @media (min-width: 1280px) {
429
+ :root {
430
+ --leu-t-curve-180-black-font-size: var(--leu-t-180-black-font-size);
431
+ --leu-t-curve-180-black-line-height: var(--leu-t-180-black-line-height);
432
+ --leu-t-curve-180-black-spacing: var(--leu-t-180-black-spacing);
433
+ --leu-t-curve-180-black-font: var(--leu-t-180-black-font);
434
+ }
51
435
  }
@@ -0,0 +1,16 @@
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
+ declare function debounce(func: Function, timeout?: number): Function;
8
+ /**
9
+ * Return a throttled function that only invokes func at most once per every wait milliseconds.
10
+ * @param {Function} func - Your function
11
+ * @param {Number} timeout - Default is 500 ms
12
+ * @returns {Function} - Your function wrapped in a timeout function
13
+ */
14
+ declare function throttle(func: Function, timeout?: number): Function;
15
+ export { debounce as d, throttle as t };
16
+ //# sourceMappingURL=utils-65469421.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-65469421.d.ts","sourceRoot":"","sources":["utils-65469421.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,sEAQC;AAED;;;;;GAKG;AACH,sEAUC"}
@@ -0,0 +1,35 @@
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
+ 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
+ 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
+ export { debounce as d, throttle as t };
package/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ export * from "./src/components/accordion/Accordion.js"
2
+ export * from "./src/components/breadcrumb/Breadcrumb.js"
1
3
  export * from "./src/components/button/Button.js"
2
4
  export * from "./src/components/button-group/ButtonGroup.js"
3
5
  export * from "./src/components/checkbox/Checkbox.js"
@@ -8,6 +10,7 @@ export * from "./src/components/input/Input.js"
8
10
  export * from "./src/components/menu/Menu.js"
9
11
  export * from "./src/components/menu/MenuItem.js"
10
12
  export * from "./src/components/pagination/Pagination.js"
13
+ export * from "./src/components/popup/Popup.js"
11
14
  export * from "./src/components/radio/Radio.js"
12
15
  export * from "./src/components/radio/RadioGroup.js"
13
16
  export * from "./src/components/select/Select.js"
package/package.json CHANGED
@@ -3,25 +3,37 @@
3
3
  "description": "UI component library of the canton of zurich",
4
4
  "license": "MIT",
5
5
  "author": "statistikzh",
6
- "version": "0.4.0",
6
+ "version": "0.5.0",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "customElements": "dist/custom-elements.json",
12
+ "web-types": "./dist/web-types.json",
13
+ "exports": {
14
+ ".": {
15
+ "default": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ },
18
+ "./*": "./dist/*"
19
+ },
10
20
  "repository": {
11
21
  "type": "git",
12
22
  "url": "https://github.com/statistikzh/leu.git"
13
23
  },
14
24
  "homepage": "https://github.com/statistikzh/leu/",
15
25
  "scripts": {
16
- "analyze": "cem analyze --litelement --globs \"src/**/*.js\"",
17
- "build": "rimraf dist && npm run build:js && npm run build:css",
26
+ "analyze": "cem analyze --config custom-elements-manifest.config.js",
27
+ "build": "rimraf dist && npm run build:js && npm run build:types && npm run build:css",
18
28
  "build:js": "rollup -c rollup.config.js",
29
+ "build:types": "tsc -p tsconfig.build.json",
19
30
  "build:css": "postcss src/styles/theme.css -o dist/theme.css && cp dist/theme.css .storybook/static/",
20
31
  "watch:css": "nodemon --watch 'src/styles/*' -e css --exec npm run build:css",
21
32
  "lint": "npm run lint:eslint && npm run lint:prettier",
22
33
  "lint:eslint": "eslint --ext .js,.mjs,.html . --ignore-path .gitignore ",
23
34
  "lint:prettier": "prettier \"**/*.{js,mjs,md,html,json}\" --check --ignore-path .gitignore",
24
35
  "lint:stylelint": "stylelint \"**/*.{js,css}\" --ignore-path .gitignore",
36
+ "lint:types": "tsc",
25
37
  "format": "npm run format:eslint && npm run format:prettier",
26
38
  "format:eslint": "eslint --ext .js,.mjs,.html . --fix --ignore-path .gitignore",
27
39
  "format:prettier": "prettier \"**/*.{js,mjs,md,html,json}\" --write --ignore-path .gitignore",
@@ -40,31 +52,36 @@
40
52
  "@babel/preset-env": "^7.23.3",
41
53
  "@commitlint/cli": "^17.7.1",
42
54
  "@commitlint/config-conventional": "^17.7.0",
43
- "@custom-elements-manifest/analyzer": "^0.4.17",
55
+ "@custom-elements-manifest/analyzer": "^0.9.2",
44
56
  "@open-wc/eslint-config": "^9.2.1",
45
57
  "@open-wc/testing": "^4.0.0",
46
58
  "@rollup/plugin-babel": "^6.0.4",
47
59
  "@rollup/plugin-commonjs": "^25.0.7",
48
60
  "@rollup/plugin-json": "^6.0.0",
61
+ "@rollup/plugin-typescript": "^11.1.6",
49
62
  "@storybook/addon-designs": "^7.0.9",
50
- "@storybook/addon-essentials": "^7.6.10",
51
- "@storybook/addon-links": "^7.6.10",
52
- "@storybook/blocks": "^7.6.10",
53
- "@storybook/web-components": "^7.6.10",
63
+ "@storybook/addon-essentials": "^7.6.17",
64
+ "@storybook/addon-links": "^7.6.17",
65
+ "@storybook/blocks": "^7.6.17",
66
+ "@storybook/web-components": "^7.6.17",
54
67
  "@web/dev-server": "^0.1.34",
55
68
  "@web/dev-server-rollup": "^0.5.2",
56
- "@web/storybook-builder": "^0.1.2",
69
+ "@web/storybook-builder": "^0.1.6",
57
70
  "@web/storybook-framework-web-components": "^0.1.1",
58
71
  "@web/test-runner": "^0.18.0",
59
72
  "@web/test-runner-commands": "^0.9.0",
60
73
  "@web/test-runner-playwright": "^0.11.0",
61
74
  "@whitespace/storybook-addon-html": "^5.1.6",
62
75
  "arg": "^5.0.2",
76
+ "custom-element-jet-brains-integration": "^1.4.4",
77
+ "custom-element-vs-code-integration": "^1.2.3",
78
+ "custom-element-vuejs-integration": "^1.1.0",
63
79
  "es-dev-server": "^2.1.0",
64
80
  "esbuild": "^0.20.0",
65
81
  "eslint": "^8.31.0",
66
82
  "eslint-config-prettier": "^8.3.0",
67
83
  "eslint-plugin-storybook": "^0.6.14",
84
+ "glob": "^10.3.10",
68
85
  "husky": "^8.0.0",
69
86
  "lint-staged": "^10.5.4",
70
87
  "nodemon": "^3.0.2",
@@ -83,11 +100,12 @@
83
100
  "rollup-plugin-postcss": "^4.0.2",
84
101
  "rollup-plugin-postcss-lit": "^2.1.0",
85
102
  "sinon": "^17.0.1",
86
- "storybook": "^7.6.10",
103
+ "storybook": "^7.6.17",
87
104
  "stylelint": "^15.10.3",
88
- "stylelint-config-standard": "^34.0.0"
105
+ "stylelint-config-standard": "^34.0.0",
106
+ "tslib": "^2.6.2",
107
+ "typescript": "^5.4.3"
89
108
  },
90
- "customElements": "custom-elements.json",
91
109
  "prettier": {
92
110
  "semi": false
93
111
  },
@@ -1,10 +1,12 @@
1
1
  const postcssPresetEnv = require("postcss-preset-env")
2
2
  const atImport = require("postcss-import")
3
+ const leuFontStyles = require("./scripts/postcss-leu-font-styles.cjs")
3
4
 
4
5
  module.exports = {
5
6
  stage: 2,
6
7
  plugins: [
7
8
  atImport(),
9
+ leuFontStyles(),
8
10
  postcssPresetEnv({
9
11
  features: {
10
12
  "custom-media-queries": true,
package/rollup.config.js CHANGED
@@ -1,3 +1,6 @@
1
+ import { globSync } from "glob"
2
+ import path from "path"
3
+ import { fileURLToPath } from "url"
1
4
  import postcss from "rollup-plugin-postcss"
2
5
  import postcssLit from "rollup-plugin-postcss-lit"
3
6
  import { babel } from "@rollup/plugin-babel"
@@ -17,44 +20,25 @@ export const plugins = [
17
20
  },
18
21
  ]
19
22
 
23
+ /**
24
+ * @type {import("rollup").RollupOptions}
25
+ */
20
26
  export default {
21
- input: [
22
- "index.js",
23
- "./src/components/button/leu-button.js",
24
- "./src/components/button/Button.js",
25
- "./src/components/button-group/leu-button-group.js",
26
- "./src/components/button-group/ButtonGroup.js",
27
- "./src/components/checkbox/leu-checkbox.js",
28
- "./src/components/checkbox/leu-checkbox-group.js",
29
- "./src/components/checkbox/Checkbox.js",
30
- "./src/components/checkbox/CheckboxGroup.js",
31
- "./src/components/chip/leu-chip-group.js",
32
- "./src/components/chip/leu-chip-link.js",
33
- "./src/components/chip/leu-chip-removable.js",
34
- "./src/components/chip/leu-chip-selectable.js",
35
- "./src/components/chip/ChipGroup.js",
36
- "./src/components/chip/ChipLink.js",
37
- "./src/components/chip/ChipRemovable.js",
38
- "./src/components/chip/ChipSelectable.js",
39
- "./src/components/dropdown/leu-dropdown.js",
40
- "./src/components/dropdown/Dropdown.js",
41
- "./src/components/input/leu-input.js",
42
- "./src/components/input/Input.js",
43
- "./src/components/menu/leu-menu.js",
44
- "./src/components/menu/leu-menu-item.js",
45
- "./src/components/menu/Menu.js",
46
- "./src/components/menu/MenuItem.js",
47
- "./src/components/pagination/leu-pagination.js",
48
- "./src/components/pagination/Pagination.js",
49
- "./src/components/radio/leu-radio.js",
50
- "./src/components/radio/leu-radio-group.js",
51
- "./src/components/radio/Radio.js",
52
- "./src/components/radio/RadioGroup.js",
53
- "./src/components/select/leu-select.js",
54
- "./src/components/select/Select.js",
55
- "./src/components/table/leu-table.js",
56
- "./src/components/table/Table.js",
57
- ],
27
+ // Select all files in a direct subdirectory of src/components
28
+ // that have a name starting with
29
+ // - a capital letter
30
+ // - or "leu-"
31
+ input: {
32
+ "index.js": "index.js",
33
+ ...Object.fromEntries(
34
+ globSync("src/components/*/{[A-Z],leu-}*.js", { nocase: false }).map(
35
+ (file) => [
36
+ path.basename(file, path.extname(file)),
37
+ fileURLToPath(new URL(file, import.meta.url)),
38
+ ]
39
+ )
40
+ ),
41
+ },
58
42
  output: {
59
43
  dir: "./dist/",
60
44
  format: "esm",
@@ -66,6 +50,3 @@ export default {
66
50
  ],
67
51
  external: /^lit(\/.*\.js)?$/,
68
52
  }
69
-
70
- // TODO: add a second config for a bundle with esbuild
71
- // import esbuild from "rollup-plugin-esbuild"
@@ -4,8 +4,8 @@
4
4
  }
5
5
 
6
6
  :host {
7
- --[name]-font-regular: var(--leu-font-regular);
8
- --[name]-font-black: var(--leu-font-black);
7
+ --[name]-font-regular: var(--leu-font-family-regular);
8
+ --[name]-font-black: var(--leu-font-family-black);
9
9
 
10
10
  font-family: var(--[name]-font-regular);
11
11
  }