@grantcodes/ui 2.15.6 → 2.16.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 (300) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/custom-elements.json +476 -346
  3. package/package.json +23 -23
  4. package/src/components/accordion/accordion-item.component.js +17 -19
  5. package/src/components/accordion/accordion-item.css +40 -44
  6. package/src/components/accordion/accordion.component.js +7 -7
  7. package/src/components/accordion/accordion.css +5 -5
  8. package/src/components/accordion/accordion.js +6 -6
  9. package/src/components/accordion/accordion.react.js +6 -6
  10. package/src/components/accordion/accordion.stories.js +10 -10
  11. package/src/components/accordion/accordion.test.js +100 -100
  12. package/src/components/accordion/index.js +6 -6
  13. package/src/components/app-bar/app-bar.component.js +86 -92
  14. package/src/components/app-bar/app-bar.css +187 -203
  15. package/src/components/app-bar/app-bar.js +3 -3
  16. package/src/components/app-bar/app-bar.react.js +9 -9
  17. package/src/components/app-bar/app-bar.stories.js +20 -20
  18. package/src/components/app-bar/app-bar.test.js +190 -237
  19. package/src/components/app-bar/index.js +1 -1
  20. package/src/components/app-bar/nav-link.component.js +7 -9
  21. package/src/components/app-bar/nav-link.css +23 -28
  22. package/src/components/app-bar/nav-link.js +3 -3
  23. package/src/components/app-bar/nav-link.react.js +6 -6
  24. package/src/components/avatar/avatar.component.js +79 -68
  25. package/src/components/avatar/avatar.css +18 -18
  26. package/src/components/avatar/avatar.js +3 -3
  27. package/src/components/avatar/avatar.react.js +6 -6
  28. package/src/components/avatar/avatar.stories.js +24 -23
  29. package/src/components/avatar/avatar.test.js +128 -84
  30. package/src/components/avatar/index.js +1 -1
  31. package/src/components/badge/badge.component.js +23 -23
  32. package/src/components/badge/badge.css +39 -52
  33. package/src/components/badge/badge.js +3 -3
  34. package/src/components/badge/badge.react.js +6 -6
  35. package/src/components/badge/badge.stories.js +23 -23
  36. package/src/components/badge/badge.test.js +53 -68
  37. package/src/components/badge/index.js +1 -1
  38. package/src/components/breadcrumb/breadcrumb.component.js +95 -96
  39. package/src/components/breadcrumb/breadcrumb.css +42 -44
  40. package/src/components/breadcrumb/breadcrumb.js +6 -9
  41. package/src/components/breadcrumb/breadcrumb.react.js +9 -12
  42. package/src/components/breadcrumb/breadcrumb.stories.js +5 -5
  43. package/src/components/breadcrumb/breadcrumb.test.js +139 -151
  44. package/src/components/breadcrumb/index.js +1 -1
  45. package/src/components/button/button.component.js +101 -103
  46. package/src/components/button/button.css +90 -94
  47. package/src/components/button/button.js +3 -3
  48. package/src/components/button/button.react.js +6 -6
  49. package/src/components/button/button.stories.js +25 -25
  50. package/src/components/button/button.test.js +324 -344
  51. package/src/components/button/index.js +1 -1
  52. package/src/components/button-group/button-group.component.js +18 -18
  53. package/src/components/button-group/button-group.css +16 -16
  54. package/src/components/button-group/button-group.js +3 -3
  55. package/src/components/button-group/button-group.react.js +6 -6
  56. package/src/components/button-group/button-group.stories.js +23 -23
  57. package/src/components/button-group/button-group.test.js +54 -54
  58. package/src/components/button-group/index.js +1 -1
  59. package/src/components/card/card.component.js +31 -33
  60. package/src/components/card/card.css +85 -85
  61. package/src/components/card/card.js +4 -4
  62. package/src/components/card/card.react.js +6 -6
  63. package/src/components/card/card.stories.js +27 -26
  64. package/src/components/card/card.test.js +56 -56
  65. package/src/components/card/index.js +1 -1
  66. package/src/components/code-preview/code-preview.component.js +47 -48
  67. package/src/components/code-preview/code-preview.css +11 -11
  68. package/src/components/code-preview/code-preview.js +3 -3
  69. package/src/components/code-preview/code-preview.react.js +6 -6
  70. package/src/components/code-preview/code-preview.stories.js +29 -29
  71. package/src/components/code-preview/code-preview.test.js +112 -135
  72. package/src/components/code-preview/index.js +1 -1
  73. package/src/components/container/container.component.js +27 -27
  74. package/src/components/container/container.css +22 -22
  75. package/src/components/container/container.js +3 -3
  76. package/src/components/container/container.react.js +6 -6
  77. package/src/components/container/container.stories.js +44 -44
  78. package/src/components/container/container.test.js +54 -66
  79. package/src/components/container/index.js +1 -1
  80. package/src/components/countdown/countdown.component.js +160 -162
  81. package/src/components/countdown/countdown.css +50 -34
  82. package/src/components/countdown/countdown.js +3 -3
  83. package/src/components/countdown/countdown.react.js +6 -6
  84. package/src/components/countdown/countdown.stories.js +34 -34
  85. package/src/components/countdown/index.js +1 -1
  86. package/src/components/cta/cta.component.js +77 -81
  87. package/src/components/cta/cta.css +24 -24
  88. package/src/components/cta/cta.js +3 -3
  89. package/src/components/cta/cta.react.js +6 -6
  90. package/src/components/cta/cta.stories.js +32 -32
  91. package/src/components/cta/index.js +1 -1
  92. package/src/components/dialog/dialog.component.js +95 -58
  93. package/src/components/dialog/dialog.css +45 -50
  94. package/src/components/dialog/dialog.js +3 -3
  95. package/src/components/dialog/dialog.react.js +6 -6
  96. package/src/components/dialog/dialog.stories.js +38 -29
  97. package/src/components/dialog/dialog.test.js +188 -102
  98. package/src/components/dialog/index.js +1 -1
  99. package/src/components/dropdown/dropdown.component.js +220 -201
  100. package/src/components/dropdown/dropdown.css +60 -84
  101. package/src/components/dropdown/dropdown.js +6 -9
  102. package/src/components/dropdown/dropdown.react.js +15 -15
  103. package/src/components/dropdown/dropdown.stories.js +10 -10
  104. package/src/components/dropdown/dropdown.test.js +211 -157
  105. package/src/components/dropdown/index.js +1 -1
  106. package/src/components/dropzone/dropzone.component.js +126 -129
  107. package/src/components/dropzone/dropzone.css +35 -37
  108. package/src/components/dropzone/dropzone.js +3 -3
  109. package/src/components/dropzone/dropzone.react.js +6 -6
  110. package/src/components/dropzone/dropzone.stories.js +28 -28
  111. package/src/components/dropzone/dropzone.test.js +91 -99
  112. package/src/components/dropzone/index.js +1 -1
  113. package/src/components/feature-list/feature-list.component.js +78 -86
  114. package/src/components/feature-list/feature-list.css +37 -37
  115. package/src/components/feature-list/feature-list.js +3 -3
  116. package/src/components/feature-list/feature-list.react.js +6 -6
  117. package/src/components/feature-list/feature-list.stories.js +86 -90
  118. package/src/components/feature-list/index.js +1 -1
  119. package/src/components/footer/footer-column.component.js +7 -7
  120. package/src/components/footer/footer-column.css +22 -22
  121. package/src/components/footer/footer.component.js +19 -19
  122. package/src/components/footer/footer.css +38 -38
  123. package/src/components/footer/footer.js +8 -8
  124. package/src/components/footer/footer.react.js +9 -9
  125. package/src/components/footer/footer.stories.js +9 -9
  126. package/src/components/footer/footer.test.js +101 -111
  127. package/src/components/footer/index.js +2 -2
  128. package/src/components/form-field/form-field.component.js +167 -125
  129. package/src/components/form-field/form-field.css +24 -24
  130. package/src/components/form-field/form-field.js +3 -3
  131. package/src/components/form-field/form-field.react.js +6 -6
  132. package/src/components/form-field/form-field.stories.js +53 -44
  133. package/src/components/form-field/form-field.test.js +280 -134
  134. package/src/components/form-field/index.js +1 -1
  135. package/src/components/gallery/gallery-image.component.js +30 -30
  136. package/src/components/gallery/gallery-image.js +3 -3
  137. package/src/components/gallery/gallery-image.react.js +6 -6
  138. package/src/components/gallery/gallery.component.js +24 -17
  139. package/src/components/gallery/gallery.css +79 -72
  140. package/src/components/gallery/gallery.js +3 -3
  141. package/src/components/gallery/gallery.react.js +6 -6
  142. package/src/components/gallery/gallery.stories.js +69 -68
  143. package/src/components/gallery/gallery.test.js +95 -88
  144. package/src/components/gallery/index.js +2 -2
  145. package/src/components/hero/hero.component.js +53 -57
  146. package/src/components/hero/hero.css +27 -27
  147. package/src/components/hero/hero.js +3 -3
  148. package/src/components/hero/hero.react.js +6 -6
  149. package/src/components/hero/hero.stories.js +39 -39
  150. package/src/components/hero/index.js +1 -1
  151. package/src/components/icon/icon.component.js +10 -10
  152. package/src/components/icon/icon.css +13 -13
  153. package/src/components/icon/icon.js +4 -4
  154. package/src/components/icon/icon.react.js +6 -6
  155. package/src/components/icon/icon.stories.js +8 -9
  156. package/src/components/icon/icon.test.js +54 -55
  157. package/src/components/icon/index.js +1 -1
  158. package/src/components/loading/index.js +1 -1
  159. package/src/components/loading/loading.component.js +41 -14
  160. package/src/components/loading/loading.css +47 -30
  161. package/src/components/loading/loading.js +4 -4
  162. package/src/components/loading/loading.react.js +6 -6
  163. package/src/components/loading/loading.stories.js +19 -18
  164. package/src/components/loading/loading.test.js +77 -54
  165. package/src/components/logo-cloud/index.js +1 -1
  166. package/src/components/logo-cloud/logo-cloud.component.js +39 -43
  167. package/src/components/logo-cloud/logo-cloud.css +31 -31
  168. package/src/components/logo-cloud/logo-cloud.js +3 -3
  169. package/src/components/logo-cloud/logo-cloud.react.js +6 -6
  170. package/src/components/logo-cloud/logo-cloud.stories.js +80 -80
  171. package/src/components/map/index.js +1 -1
  172. package/src/components/map/map.component.js +103 -107
  173. package/src/components/map/map.css +22 -22
  174. package/src/components/map/map.js +3 -3
  175. package/src/components/map/map.react.js +6 -6
  176. package/src/components/map/map.stories.js +38 -38
  177. package/src/components/media-text/index.js +1 -1
  178. package/src/components/media-text/media-text.component.js +76 -70
  179. package/src/components/media-text/media-text.css +32 -32
  180. package/src/components/media-text/media-text.js +3 -3
  181. package/src/components/media-text/media-text.react.js +6 -6
  182. package/src/components/media-text/media-text.stories.js +45 -45
  183. package/src/components/media-text/media-text.test.js +72 -0
  184. package/src/components/newsletter/index.js +1 -1
  185. package/src/components/newsletter/newsletter.component.js +56 -64
  186. package/src/components/newsletter/newsletter.css +48 -48
  187. package/src/components/newsletter/newsletter.js +3 -3
  188. package/src/components/newsletter/newsletter.react.js +6 -6
  189. package/src/components/newsletter/newsletter.stories.js +35 -35
  190. package/src/components/notice/index.js +1 -1
  191. package/src/components/notice/notice.component.js +66 -55
  192. package/src/components/notice/notice.css +37 -38
  193. package/src/components/notice/notice.js +3 -3
  194. package/src/components/notice/notice.react.js +6 -6
  195. package/src/components/notice/notice.stories.js +54 -53
  196. package/src/components/notice/notice.test.js +210 -156
  197. package/src/components/pagination/index.js +1 -1
  198. package/src/components/pagination/pagination.component.js +44 -44
  199. package/src/components/pagination/pagination.css +6 -6
  200. package/src/components/pagination/pagination.js +4 -4
  201. package/src/components/pagination/pagination.react.js +6 -6
  202. package/src/components/pagination/pagination.stories.js +20 -18
  203. package/src/components/pagination/pagination.test.js +95 -102
  204. package/src/components/person/index.js +1 -1
  205. package/src/components/person/person.component.js +29 -29
  206. package/src/components/person/person.css +17 -17
  207. package/src/components/person/person.js +4 -4
  208. package/src/components/person/person.react.js +6 -6
  209. package/src/components/person/person.stories.js +34 -33
  210. package/src/components/person/person.test.js +55 -68
  211. package/src/components/pricing/index.js +1 -1
  212. package/src/components/pricing/pricing.component.js +58 -70
  213. package/src/components/pricing/pricing.css +65 -65
  214. package/src/components/pricing/pricing.js +3 -3
  215. package/src/components/pricing/pricing.react.js +6 -6
  216. package/src/components/pricing/pricing.stories.js +96 -96
  217. package/src/components/sidebar/index.js +1 -1
  218. package/src/components/sidebar/sidebar.component.js +157 -130
  219. package/src/components/sidebar/sidebar.css +118 -115
  220. package/src/components/sidebar/sidebar.js +4 -4
  221. package/src/components/sidebar/sidebar.react.js +10 -10
  222. package/src/components/sidebar/sidebar.stories.js +10 -10
  223. package/src/components/sidebar/sidebar.test.js +250 -230
  224. package/src/components/stats/index.js +1 -1
  225. package/src/components/stats/stats.component.js +42 -50
  226. package/src/components/stats/stats.css +29 -29
  227. package/src/components/stats/stats.js +3 -3
  228. package/src/components/stats/stats.react.js +6 -6
  229. package/src/components/stats/stats.stories.js +40 -40
  230. package/src/components/tabs/index.js +2 -2
  231. package/src/components/tabs/internal/tabs-button.component.js +16 -27
  232. package/src/components/tabs/internal/tabs-button.js +3 -3
  233. package/src/components/tabs/internal/tabs-button.react.js +6 -6
  234. package/src/components/tabs/internal/tabs-item.component.js +30 -30
  235. package/src/components/tabs/tab.component.js +9 -11
  236. package/src/components/tabs/tab.js +3 -3
  237. package/src/components/tabs/tab.react.js +6 -6
  238. package/src/components/tabs/tabs.component.js +107 -109
  239. package/src/components/tabs/tabs.css +50 -59
  240. package/src/components/tabs/tabs.js +4 -4
  241. package/src/components/tabs/tabs.react.js +6 -6
  242. package/src/components/tabs/tabs.stories.js +23 -22
  243. package/src/components/tabs/tabs.test.js +201 -147
  244. package/src/components/testimonials/index.js +1 -1
  245. package/src/components/testimonials/testimonials.component.js +47 -51
  246. package/src/components/testimonials/testimonials.css +31 -31
  247. package/src/components/testimonials/testimonials.js +3 -3
  248. package/src/components/testimonials/testimonials.react.js +6 -6
  249. package/src/components/testimonials/testimonials.stories.js +49 -51
  250. package/src/components/toast/index.js +1 -1
  251. package/src/components/toast/toast.component.js +217 -148
  252. package/src/components/toast/toast.css +101 -99
  253. package/src/components/toast/toast.js +6 -9
  254. package/src/components/toast/toast.react.js +12 -12
  255. package/src/components/toast/toast.stories.js +75 -49
  256. package/src/components/toast/toast.test.js +260 -221
  257. package/src/components/tooltip/index.js +1 -1
  258. package/src/components/tooltip/tooltip.component.js +56 -49
  259. package/src/components/tooltip/tooltip.css +61 -50
  260. package/src/components/tooltip/tooltip.js +4 -4
  261. package/src/components/tooltip/tooltip.react.js +6 -6
  262. package/src/components/tooltip/tooltip.stories.js +24 -23
  263. package/src/components/tooltip/tooltip.test.js +143 -155
  264. package/src/constructor.test.js +31 -0
  265. package/src/css/base.css +1 -0
  266. package/src/css/colors.stories.js +120 -122
  267. package/src/css/elements/a.css +28 -28
  268. package/src/css/elements/forms/button.css +1 -1
  269. package/src/css/elements/forms/input.css +80 -80
  270. package/src/css/elements/forms/label.css +3 -3
  271. package/src/css/elements/media/image.css +2 -2
  272. package/src/css/elements.stories.js +48 -49
  273. package/src/css/helpers.css +8 -8
  274. package/src/css/layers.stories.js +5 -5
  275. package/src/css/reset.css +102 -102
  276. package/src/css/themes/todomap.css +1 -1
  277. package/src/css/tokens.stories.js +50 -53
  278. package/src/css/typography.css +30 -32
  279. package/src/css/typography.stories.js +92 -92
  280. package/src/css/util/focus-ring.css +12 -20
  281. package/src/css/view-transitions.css +16 -0
  282. package/src/exports.test.js +89 -105
  283. package/src/icons.js +1 -1
  284. package/src/lib/generate-id.js +1 -1
  285. package/src/lib/slot-presence-controller.js +48 -0
  286. package/src/lib/styles/all.css +38 -37
  287. package/src/lib/styles/focus-ring.css +12 -20
  288. package/src/lib/view-transition.js +42 -0
  289. package/src/lib/view-transition.test.js +105 -0
  290. package/src/main.js +29 -29
  291. package/src/pages/agency.stories.js +59 -59
  292. package/src/pages/blog-post.stories.js +48 -48
  293. package/src/pages/saas-landing.stories.js +180 -180
  294. package/src/react.js +44 -44
  295. package/src/react.test.js +42 -51
  296. package/src/test-utils/assert-helpers.js +39 -58
  297. package/src/test-utils/events.js +32 -34
  298. package/src/test-utils/fixture.js +31 -31
  299. package/src/test-utils/index.js +3 -3
  300. package/src/types.d.ts +3 -3
@@ -1,62 +1,62 @@
1
- import { LitElement } from "lit";
2
- import { html } from "lit/static-html.js";
3
- import paginationStyles from "./pagination.css" with { type: "css" };
4
- import { GrantCodesButton } from "../button/button.component.js";
5
- import "../button/button.js";
1
+ import { LitElement } from 'lit';
2
+ import { html } from 'lit/static-html.js';
3
+ import { GrantCodesButton } from '../button/button.component.js';
4
+ import paginationStyles from './pagination.css' with { type: 'css' };
5
+ import '../button/button.js';
6
6
 
7
7
  export class GrantCodesPagination extends LitElement {
8
- // Styles are scoped to this element: they won't conflict with styles
9
- // on the main page or in other components. Styling API can be exposed
10
- // via CSS custom properties.
11
- static styles = [paginationStyles];
12
-
13
- static dependencies = { "grantcodes-button": GrantCodesButton };
14
-
15
- static properties = {
16
- previousHref: { attribute: "previous-href" },
17
- nextHref: { attribute: "next-href" },
18
- page: { type: Number },
19
- pages: { type: Number },
20
- };
21
-
22
- constructor() {
23
- super();
24
-
25
- this.previousHref = "";
26
- this.nextHref = "";
27
- this.page = 1;
28
- this.pages = 1;
29
- }
30
-
31
- nextTemplate() {
32
- if (!this.nextHref) {
33
- return html``;
34
- }
35
-
36
- return html`
8
+ // Styles are scoped to this element: they won't conflict with styles
9
+ // on the main page or in other components. Styling API can be exposed
10
+ // via CSS custom properties.
11
+ static styles = [paginationStyles];
12
+
13
+ static dependencies = { 'grantcodes-button': GrantCodesButton };
14
+
15
+ static properties = {
16
+ previousHref: { attribute: 'previous-href' },
17
+ nextHref: { attribute: 'next-href' },
18
+ page: { type: Number },
19
+ pages: { type: Number },
20
+ };
21
+
22
+ constructor() {
23
+ super();
24
+
25
+ this.previousHref = '';
26
+ this.nextHref = '';
27
+ this.page = 1;
28
+ this.pages = 1;
29
+ }
30
+
31
+ nextTemplate() {
32
+ if (!this.nextHref) {
33
+ return html``;
34
+ }
35
+
36
+ return html`
37
37
  <grantcodes-button class="pagination__next" href=${this.nextHref}
38
38
  >Next</grantcodes-button
39
39
  >
40
40
  `;
41
- }
41
+ }
42
42
 
43
- previousTemplate() {
44
- if (!this.previousHref) {
45
- return html``;
46
- }
43
+ previousTemplate() {
44
+ if (!this.previousHref) {
45
+ return html``;
46
+ }
47
47
 
48
- return html`
48
+ return html`
49
49
  <grantcodes-button class="pagination__previous" href=${this.previousHref}
50
50
  >Previous</grantcodes-button
51
51
  >
52
52
  `;
53
- }
53
+ }
54
54
 
55
- render() {
56
- return html`
55
+ render() {
56
+ return html`
57
57
  <nav class="pagination" aria-label="Pagination navigation">
58
58
  ${this.previousTemplate()} ${this.nextTemplate()}
59
59
  </nav>
60
60
  `;
61
- }
61
+ }
62
62
  }
@@ -1,19 +1,19 @@
1
1
  *,
2
2
  *::before,
3
3
  *::after {
4
- box-sizing: border-box;
4
+ box-sizing: border-box;
5
5
  }
6
6
 
7
7
  .pagination {
8
- display: flex;
9
- flex-direction: row;
10
- align-items: center;
8
+ display: flex;
9
+ flex-direction: row;
10
+ align-items: center;
11
11
  }
12
12
 
13
13
  .pagination__next {
14
- margin-inline-start: auto;
14
+ margin-inline-start: auto;
15
15
  }
16
16
 
17
17
  .pagination__previous {
18
- margin-inline-end: auto;
18
+ margin-inline-end: auto;
19
19
  }
@@ -1,7 +1,7 @@
1
- import { GrantCodesPagination } from "./pagination.component.js";
2
- import "../button/button.js";
1
+ import { GrantCodesPagination } from './pagination.component.js';
2
+ import '../button/button.js';
3
3
 
4
- export * from "./pagination.component.js";
4
+ export * from './pagination.component.js';
5
5
  export default GrantCodesPagination;
6
6
 
7
- customElements.define("grantcodes-pagination", GrantCodesPagination);
7
+ customElements.define('grantcodes-pagination', GrantCodesPagination);
@@ -1,9 +1,9 @@
1
- import React from "react";
2
- import { createComponent } from "@lit/react";
3
- import { GrantCodesPagination } from "./pagination.js";
1
+ import { createComponent } from '@lit/react';
2
+ import React from 'react';
3
+ import { GrantCodesPagination } from './pagination.js';
4
4
 
5
5
  export const Pagination = createComponent({
6
- tagName: "grantcodes-pagination",
7
- elementClass: GrantCodesPagination,
8
- react: React,
6
+ tagName: 'grantcodes-pagination',
7
+ elementClass: GrantCodesPagination,
8
+ react: React,
9
9
  });
@@ -1,18 +1,20 @@
1
- import { html } from "lit/static-html.js";
2
- import { getStorybookHelpers } from "@wc-toolkit/storybook-helpers";
3
- const { events, args, argTypes } = getStorybookHelpers("grantcodes-pagination");
4
- import "./pagination.js";
1
+ import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
2
+ import { html } from 'lit/static-html.js';
3
+
4
+ const { events, args, argTypes } = getStorybookHelpers('grantcodes-pagination');
5
+
6
+ import './pagination.js';
5
7
 
6
8
  const meta = {
7
- title: "Components/Pagination",
8
- component: "grantcodes-pagination",
9
- args: {
10
- ...args,
11
- previousHref: "#1",
12
- nextHref: "#3",
13
- },
14
- argTypes,
15
- render: (args) => html`
9
+ title: 'Components/Pagination',
10
+ component: 'grantcodes-pagination',
11
+ args: {
12
+ ...args,
13
+ previousHref: '#1',
14
+ nextHref: '#3',
15
+ },
16
+ argTypes,
17
+ render: (args) => html`
16
18
  <grantcodes-pagination
17
19
  .previousHref=${args.previousHref}
18
20
  .nextHref=${args.nextHref}
@@ -20,11 +22,11 @@ const meta = {
20
22
  .pages=${args.pages ?? 1}
21
23
  ></grantcodes-pagination>
22
24
  `,
23
- parameters: {
24
- actions: {
25
- handles: events,
26
- },
27
- },
25
+ parameters: {
26
+ actions: {
27
+ handles: events,
28
+ },
29
+ },
28
30
  };
29
31
 
30
32
  export default meta;
@@ -1,103 +1,96 @@
1
- import { describe, it, afterEach } from "node:test";
2
- import { strict as assert } from "node:assert";
3
- import { fixture, cleanup } from "../../test-utils/index.js";
4
- import "./pagination.js";
5
-
6
- describe("Pagination Component", () => {
7
- let element;
8
-
9
- afterEach(() => {
10
- cleanup(element);
11
- });
12
-
13
- it("should render with default properties", async () => {
14
- element = await fixture("grantcodes-pagination");
15
- assert.ok(element, "Element should be created");
16
- assert.ok(element.shadowRoot, "Element should have shadow root");
17
- });
18
-
19
- it("should have page property defaulting to 1", async () => {
20
- element = await fixture("grantcodes-pagination");
21
- assert.strictEqual(element.page, 1, "Page should default to 1");
22
- });
23
-
24
- it("should have pages property defaulting to 1", async () => {
25
- element = await fixture("grantcodes-pagination");
26
- assert.strictEqual(element.pages, 1, "Pages should default to 1");
27
- });
28
-
29
- it("should render navigation element", async () => {
30
- element = await fixture("grantcodes-pagination", {
31
- pages: 5,
32
- });
33
-
34
- const nav = element.shadowRoot.querySelector("nav");
35
- assert.ok(nav, "Navigation element should exist");
36
- });
37
-
38
- it("should render pagination list", async () => {
39
- element = await fixture("grantcodes-pagination", {
40
- pages: 5,
41
- });
42
-
43
- const list = element.shadowRoot.querySelector(".pagination");
44
- assert.ok(list, "Pagination list should exist");
45
- });
46
-
47
- it("should support href property for links", async () => {
48
- element = await fixture("grantcodes-pagination", {
49
- page: 2,
50
- pages: 5,
51
- href: "/page/{page}",
52
- });
53
-
54
- assert.strictEqual(
55
- element.href,
56
- "/page/{page}",
57
- "Href property should be set",
58
- );
59
- });
60
-
61
- it("should indicate current page", async () => {
62
- element = await fixture("grantcodes-pagination", {
63
- page: 3,
64
- pages: 5,
65
- });
66
-
67
- assert.strictEqual(element.page, 3, "Current page should be 3");
68
- });
69
-
70
- it("should handle single page", async () => {
71
- element = await fixture("grantcodes-pagination", {
72
- page: 1,
73
- pages: 1,
74
- });
75
-
76
- const list = element.shadowRoot.querySelector(".pagination");
77
- assert.ok(list, "Should render even with single page");
78
- });
79
-
80
- it("should handle multiple pages", async () => {
81
- element = await fixture("grantcodes-pagination", {
82
- page: 1,
83
- pages: 10,
84
- });
85
-
86
- const list = element.shadowRoot.querySelector(".pagination");
87
- assert.ok(list, "Should render pagination for multiple pages");
88
- });
89
-
90
- it("should support navigation to different pages", async () => {
91
- element = await fixture("grantcodes-pagination", {
92
- page: 5,
93
- pages: 10,
94
- });
95
-
96
- // The component should allow navigating to previous and next pages
97
- assert.ok(element.page > 1, "Should be able to go to previous page");
98
- assert.ok(
99
- element.page < element.pages,
100
- "Should be able to go to next page",
101
- );
102
- });
1
+ import { strict as assert } from 'node:assert';
2
+ import { afterEach, describe, it } from 'node:test';
3
+ import { cleanup, fixture } from '../../test-utils/index.js';
4
+ import './pagination.js';
5
+
6
+ describe('Pagination Component', () => {
7
+ let element;
8
+
9
+ afterEach(() => {
10
+ cleanup(element);
11
+ });
12
+
13
+ it('should render with default properties', async () => {
14
+ element = await fixture('grantcodes-pagination');
15
+ assert.ok(element, 'Element should be created');
16
+ assert.ok(element.shadowRoot, 'Element should have shadow root');
17
+ });
18
+
19
+ it('should have page property defaulting to 1', async () => {
20
+ element = await fixture('grantcodes-pagination');
21
+ assert.strictEqual(element.page, 1, 'Page should default to 1');
22
+ });
23
+
24
+ it('should have pages property defaulting to 1', async () => {
25
+ element = await fixture('grantcodes-pagination');
26
+ assert.strictEqual(element.pages, 1, 'Pages should default to 1');
27
+ });
28
+
29
+ it('should render navigation element', async () => {
30
+ element = await fixture('grantcodes-pagination', {
31
+ pages: 5,
32
+ });
33
+
34
+ const nav = element.shadowRoot.querySelector('nav');
35
+ assert.ok(nav, 'Navigation element should exist');
36
+ });
37
+
38
+ it('should render pagination list', async () => {
39
+ element = await fixture('grantcodes-pagination', {
40
+ pages: 5,
41
+ });
42
+
43
+ const list = element.shadowRoot.querySelector('.pagination');
44
+ assert.ok(list, 'Pagination list should exist');
45
+ });
46
+
47
+ it('should support href property for links', async () => {
48
+ element = await fixture('grantcodes-pagination', {
49
+ page: 2,
50
+ pages: 5,
51
+ href: '/page/{page}',
52
+ });
53
+
54
+ assert.strictEqual(element.href, '/page/{page}', 'Href property should be set');
55
+ });
56
+
57
+ it('should indicate current page', async () => {
58
+ element = await fixture('grantcodes-pagination', {
59
+ page: 3,
60
+ pages: 5,
61
+ });
62
+
63
+ assert.strictEqual(element.page, 3, 'Current page should be 3');
64
+ });
65
+
66
+ it('should handle single page', async () => {
67
+ element = await fixture('grantcodes-pagination', {
68
+ page: 1,
69
+ pages: 1,
70
+ });
71
+
72
+ const list = element.shadowRoot.querySelector('.pagination');
73
+ assert.ok(list, 'Should render even with single page');
74
+ });
75
+
76
+ it('should handle multiple pages', async () => {
77
+ element = await fixture('grantcodes-pagination', {
78
+ page: 1,
79
+ pages: 10,
80
+ });
81
+
82
+ const list = element.shadowRoot.querySelector('.pagination');
83
+ assert.ok(list, 'Should render pagination for multiple pages');
84
+ });
85
+
86
+ it('should support navigation to different pages', async () => {
87
+ element = await fixture('grantcodes-pagination', {
88
+ page: 5,
89
+ pages: 10,
90
+ });
91
+
92
+ // The component should allow navigating to previous and next pages
93
+ assert.ok(element.page > 1, 'Should be able to go to previous page');
94
+ assert.ok(element.page < element.pages, 'Should be able to go to next page');
95
+ });
103
96
  });
@@ -1 +1 @@
1
- export * from "./person.js";
1
+ export * from './person.js';
@@ -1,38 +1,38 @@
1
- import { LitElement, html } from "lit";
2
- import { ifDefined } from "lit/directives/if-defined.js";
3
- import personStyles from "./person.css" with { type: "css" };
4
- import "../avatar/avatar.js";
1
+ import { html, LitElement } from 'lit';
2
+ import { ifDefined } from 'lit/directives/if-defined.js';
3
+ import personStyles from './person.css' with { type: 'css' };
4
+ import '../avatar/avatar.js';
5
5
 
6
6
  export class GrantCodesPerson extends LitElement {
7
- static properties = {
8
- name: { type: String },
9
- role: { type: String },
10
- company: { type: String },
11
- avatar: { type: String },
12
- alt: { type: String },
13
- size: { type: String },
14
- };
7
+ static properties = {
8
+ name: { type: String },
9
+ role: { type: String },
10
+ company: { type: String },
11
+ avatar: { type: String },
12
+ alt: { type: String },
13
+ size: { type: String },
14
+ };
15
15
 
16
- static styles = [personStyles];
16
+ static styles = [personStyles];
17
17
 
18
- constructor() {
19
- super();
20
- this.name = "";
21
- this.role = "";
22
- this.company = "";
23
- this.avatar = "";
24
- this.alt = "";
25
- this.size = "medium";
26
- }
18
+ constructor() {
19
+ super();
20
+ this.name = '';
21
+ this.role = '';
22
+ this.company = '';
23
+ this.avatar = '';
24
+ this.alt = '';
25
+ this.size = 'medium';
26
+ }
27
27
 
28
- get meta() {
29
- return [this.role, this.company].filter(Boolean).join(", ");
30
- }
28
+ get meta() {
29
+ return [this.role, this.company].filter(Boolean).join(', ');
30
+ }
31
31
 
32
- render() {
33
- const meta = this.meta;
32
+ render() {
33
+ const meta = this.meta;
34
34
 
35
- return html`
35
+ return html`
36
36
  <div class="person">
37
37
  <grantcodes-avatar
38
38
  src=${ifDefined(this.avatar || undefined)}
@@ -47,5 +47,5 @@ export class GrantCodesPerson extends LitElement {
47
47
  </div>
48
48
  </div>
49
49
  `;
50
- }
50
+ }
51
51
  }
@@ -1,39 +1,39 @@
1
1
  *,
2
2
  *::before,
3
3
  *::after {
4
- box-sizing: border-box;
4
+ box-sizing: border-box;
5
5
  }
6
6
 
7
7
  :host {
8
- display: block;
8
+ display: block;
9
9
  }
10
10
 
11
11
  .person {
12
- display: flex;
13
- align-items: center;
14
- gap: var(--g-spacing-sm);
12
+ display: flex;
13
+ align-items: center;
14
+ gap: var(--g-spacing-sm);
15
15
  }
16
16
 
17
17
  .person__meta {
18
- display: flex;
19
- flex-direction: column;
20
- gap: var(--g-spacing-xs);
21
- min-inline-size: 0;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--g-spacing-xs);
21
+ min-inline-size: 0;
22
22
  }
23
23
 
24
24
  .person__name {
25
- font: var(--g-typography-body-font);
26
- font-style: normal;
27
- color: var(--g-color-content-default);
25
+ font: var(--g-typography-body-font);
26
+ font-style: normal;
27
+ color: var(--g-color-content-default);
28
28
  }
29
29
 
30
30
  .person__details {
31
- font: var(--g-typography-body-sm-font);
32
- color: var(--g-color-content-subtle);
31
+ font: var(--g-typography-body-sm-font);
32
+ color: var(--g-color-content-subtle);
33
33
  }
34
34
 
35
35
  ::slotted([slot="description"]) {
36
- font: var(--g-typography-body-sm-font);
37
- color: var(--g-color-content-subtle);
38
- margin-block-start: var(--g-spacing-xs);
36
+ font: var(--g-typography-body-sm-font);
37
+ color: var(--g-color-content-subtle);
38
+ margin-block-start: var(--g-spacing-xs);
39
39
  }
@@ -1,8 +1,8 @@
1
- import { GrantCodesPerson } from "./person.component.js";
1
+ import { GrantCodesPerson } from './person.component.js';
2
2
 
3
- export * from "./person.component.js";
3
+ export * from './person.component.js';
4
4
  export default GrantCodesPerson;
5
5
 
6
- if (!customElements.get("grantcodes-person")) {
7
- customElements.define("grantcodes-person", GrantCodesPerson);
6
+ if (!customElements.get('grantcodes-person')) {
7
+ customElements.define('grantcodes-person', GrantCodesPerson);
8
8
  }
@@ -1,9 +1,9 @@
1
- import React from "react";
2
- import { createComponent } from "@lit/react";
3
- import { GrantCodesPerson } from "./person.js";
1
+ import { createComponent } from '@lit/react';
2
+ import React from 'react';
3
+ import { GrantCodesPerson } from './person.js';
4
4
 
5
5
  export const Person = createComponent({
6
- tagName: "grantcodes-person",
7
- elementClass: GrantCodesPerson,
8
- react: React,
6
+ tagName: 'grantcodes-person',
7
+ elementClass: GrantCodesPerson,
8
+ react: React,
9
9
  });