@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,117 +1,113 @@
1
- import { getStorybookHelpers } from "@wc-toolkit/storybook-helpers";
2
- import "./feature-list.js";
1
+ import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
2
+ import './feature-list.js';
3
3
 
4
- const { events, args, argTypes } = getStorybookHelpers(
5
- "grantcodes-feature-list",
6
- );
4
+ const { events, args, argTypes } = getStorybookHelpers('grantcodes-feature-list');
7
5
 
8
6
  const meta = {
9
- title: "Blocks/FeatureList",
10
- component: "grantcodes-feature-list",
11
- args,
12
- argTypes,
13
- parameters: {
14
- actions: {
15
- handles: events,
16
- },
17
- layout: "fullscreen",
18
- },
7
+ title: 'Blocks/FeatureList',
8
+ component: 'grantcodes-feature-list',
9
+ args,
10
+ argTypes,
11
+ parameters: {
12
+ actions: {
13
+ handles: events,
14
+ },
15
+ layout: 'fullscreen',
16
+ },
19
17
  };
20
18
 
21
19
  export default meta;
22
20
 
23
21
  const sampleItems = JSON.stringify([
24
- {
25
- title: "Fast by default",
26
- description: "Zero-runtime CSS with design tokens baked in at build time.",
27
- icon: "⚡",
28
- },
29
- {
30
- title: "Accessible",
31
- description:
32
- "WAI-ARIA compliant components with keyboard navigation support.",
33
- icon: "♿",
34
- },
35
- {
36
- title: "Themeable",
37
- description: "Switch between themes without touching component code.",
38
- icon: "🎨",
39
- },
40
- {
41
- title: "Framework-agnostic",
42
- description: "Standard web components that work anywhere.",
43
- icon: "🔌",
44
- },
45
- {
46
- title: "Tree-shakeable",
47
- description: "Import only the components you use.",
48
- icon: "🌲",
49
- },
50
- {
51
- title: "Well documented",
52
- description: "Storybook stories and JSDoc for every component.",
53
- icon: "📚",
54
- },
22
+ {
23
+ title: 'Fast by default',
24
+ description: 'Zero-runtime CSS with design tokens baked in at build time.',
25
+ icon: '⚡',
26
+ },
27
+ {
28
+ title: 'Accessible',
29
+ description: 'WAI-ARIA compliant components with keyboard navigation support.',
30
+ icon: '♿',
31
+ },
32
+ {
33
+ title: 'Themeable',
34
+ description: 'Switch between themes without touching component code.',
35
+ icon: '🎨',
36
+ },
37
+ {
38
+ title: 'Framework-agnostic',
39
+ description: 'Standard web components that work anywhere.',
40
+ icon: '🔌',
41
+ },
42
+ {
43
+ title: 'Tree-shakeable',
44
+ description: 'Import only the components you use.',
45
+ icon: '🌲',
46
+ },
47
+ {
48
+ title: 'Well documented',
49
+ description: 'Storybook stories and JSDoc for every component.',
50
+ icon: '📚',
51
+ },
55
52
  ]);
56
53
 
57
54
  /**
58
55
  * Default 3-column feature grid with heading and subtitle.
59
56
  */
60
57
  export const Default = {
61
- args: {
62
- title: "Everything you need",
63
- subtitle: "Built for developers who care about quality.",
64
- items: sampleItems,
65
- columns: 3,
66
- },
58
+ args: {
59
+ title: 'Everything you need',
60
+ subtitle: 'Built for developers who care about quality.',
61
+ items: sampleItems,
62
+ columns: 3,
63
+ },
67
64
  };
68
65
 
69
66
  /**
70
67
  * Two-column layout — useful for simpler feature sets.
71
68
  */
72
69
  export const TwoColumn = {
73
- args: {
74
- title: "Key features",
75
- items: JSON.stringify([
76
- {
77
- title: "Design tokens",
78
- description:
79
- "Consistent spacing, colour, and typography across your entire UI.",
80
- icon: "🎯",
81
- },
82
- {
83
- title: "Lit-powered",
84
- description: "Lightweight reactive web components built with Lit.",
85
- icon: "🔥",
86
- },
87
- ]),
88
- columns: 2,
89
- },
70
+ args: {
71
+ title: 'Key features',
72
+ items: JSON.stringify([
73
+ {
74
+ title: 'Design tokens',
75
+ description: 'Consistent spacing, colour, and typography across your entire UI.',
76
+ icon: '🎯',
77
+ },
78
+ {
79
+ title: 'Lit-powered',
80
+ description: 'Lightweight reactive web components built with Lit.',
81
+ icon: '🔥',
82
+ },
83
+ ]),
84
+ columns: 2,
85
+ },
90
86
  };
91
87
 
92
88
  /**
93
89
  * Features with links on each item.
94
90
  */
95
91
  export const WithLinks = {
96
- args: {
97
- title: "Explore components",
98
- items: JSON.stringify([
99
- {
100
- title: "Button",
101
- description: "Primary, secondary, ghost variants.",
102
- href: "/button",
103
- },
104
- {
105
- title: "Card",
106
- description: "Flexible content containers.",
107
- href: "/card",
108
- },
109
- {
110
- title: "Dialog",
111
- description: "Accessible modal dialogs.",
112
- href: "/dialog",
113
- },
114
- ]),
115
- columns: 3,
116
- },
92
+ args: {
93
+ title: 'Explore components',
94
+ items: JSON.stringify([
95
+ {
96
+ title: 'Button',
97
+ description: 'Primary, secondary, ghost variants.',
98
+ href: '/button',
99
+ },
100
+ {
101
+ title: 'Card',
102
+ description: 'Flexible content containers.',
103
+ href: '/card',
104
+ },
105
+ {
106
+ title: 'Dialog',
107
+ description: 'Accessible modal dialogs.',
108
+ href: '/dialog',
109
+ },
110
+ ]),
111
+ columns: 3,
112
+ },
117
113
  };
@@ -1 +1 @@
1
- export * from "./feature-list.js";
1
+ export * from './feature-list.js';
@@ -1,15 +1,15 @@
1
- import { LitElement } from "lit";
2
- import { html } from "lit/static-html.js";
3
- import footerColumnStyles from "./footer-column.css" with { type: "css" };
1
+ import { LitElement } from 'lit';
2
+ import { html } from 'lit/static-html.js';
3
+ import footerColumnStyles from './footer-column.css' with { type: 'css' };
4
4
 
5
5
  export class GrantCodesFooterColumn extends LitElement {
6
- static styles = [footerColumnStyles];
6
+ static styles = [footerColumnStyles];
7
7
 
8
- render() {
9
- return html`
8
+ render() {
9
+ return html`
10
10
  <div class="footer-column">
11
11
  <slot></slot>
12
12
  </div>
13
13
  `;
14
- }
14
+ }
15
15
  }
@@ -1,45 +1,45 @@
1
1
  :host {
2
- display: block;
2
+ display: block;
3
3
  }
4
4
 
5
5
  .footer-column {
6
- display: flex;
7
- flex-direction: column;
8
- gap: var(--g-spacing-sm);
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: var(--g-spacing-sm);
9
9
  }
10
10
 
11
11
  ::slotted(h3) {
12
- font: var(--g-typography-h6-font);
13
- color: var(--g-color-content-default);
14
- margin: 0 0 var(--g-spacing-sm) 0;
12
+ font: var(--g-typography-h6-font);
13
+ color: var(--g-color-content-default);
14
+ margin: 0 0 var(--g-spacing-sm) 0;
15
15
  }
16
16
 
17
17
  ::slotted(ul) {
18
- list-style: none;
19
- padding: 0;
20
- margin: 0;
21
- display: flex;
22
- flex-direction: column;
23
- gap: var(--g-spacing-sm);
18
+ list-style: none;
19
+ padding: 0;
20
+ margin: 0;
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: var(--g-spacing-sm);
24
24
  }
25
25
 
26
26
  ::slotted(li) {
27
- margin: 0;
27
+ margin: 0;
28
28
  }
29
29
 
30
30
  ::slotted(a) {
31
- color: var(--g-color-content-subtle);
32
- text-decoration: none;
33
- transition: color 0.2s ease;
31
+ color: var(--g-color-content-subtle);
32
+ text-decoration: none;
33
+ transition: color 0.2s ease;
34
34
  }
35
35
 
36
36
  ::slotted(a:hover) {
37
- color: var(--g-color-content-default);
38
- text-decoration: underline;
37
+ color: var(--g-color-content-default);
38
+ text-decoration: underline;
39
39
  }
40
40
 
41
41
  ::slotted(p) {
42
- margin: 0;
43
- color: var(--g-color-content-subtle);
44
- font: var(--g-typography-body-sm-font);
42
+ margin: 0;
43
+ color: var(--g-color-content-subtle);
44
+ font: var(--g-typography-body-sm-font);
45
45
  }
@@ -1,27 +1,27 @@
1
- import { LitElement } from "lit";
2
- import { html } from "lit/static-html.js";
3
- import footerStyles from "./footer.css" with { type: "css" };
4
- import "../container/container.js";
1
+ import { LitElement } from 'lit';
2
+ import { html } from 'lit/static-html.js';
3
+ import footerStyles from './footer.css' with { type: 'css' };
4
+ import '../container/container.js';
5
5
 
6
6
  export class GrantCodesFooter extends LitElement {
7
- static styles = [footerStyles];
7
+ static styles = [footerStyles];
8
8
 
9
- static properties = {
10
- columns: { type: Number },
11
- };
9
+ static properties = {
10
+ columns: { type: Number },
11
+ };
12
12
 
13
- constructor() {
14
- super();
13
+ constructor() {
14
+ super();
15
15
 
16
- /**
17
- * Number of columns in the footer
18
- * @type {number}
19
- */
20
- this.columns = 3;
21
- }
16
+ /**
17
+ * Number of columns in the footer
18
+ * @type {number}
19
+ */
20
+ this.columns = 3;
21
+ }
22
22
 
23
- render() {
24
- return html`
23
+ render() {
24
+ return html`
25
25
  <footer class="footer">
26
26
  <grantcodes-container align="wide">
27
27
  <div class="footer__columns" style="--footer-columns: ${this.columns}">
@@ -35,5 +35,5 @@ export class GrantCodesFooter extends LitElement {
35
35
  </grantcodes-container>
36
36
  </footer>
37
37
  `;
38
- }
38
+ }
39
39
  }
@@ -1,78 +1,78 @@
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;
9
- container-type: inline-size;
10
- container-name: footer;
8
+ display: block;
9
+ container-type: inline-size;
10
+ container-name: footer;
11
11
  }
12
12
 
13
13
  .footer {
14
- margin-block-start: auto;
15
- padding-block: var(--g-spacing-2xl) var(--g-spacing-xl);
16
- border-block-start: 1px solid var(--g-color-border-subtle);
17
- background-color: var(--g-color-background-subtle);
14
+ margin-block-start: auto;
15
+ padding-block: var(--g-spacing-2xl) var(--g-spacing-xl);
16
+ border-block-start: 1px solid var(--g-color-border-subtle);
17
+ background-color: var(--g-color-background-subtle);
18
18
  }
19
19
 
20
20
  .footer__columns {
21
- display: grid;
22
- grid-template-columns: repeat(var(--footer-columns, 3), 1fr);
23
- gap: var(--g-spacing-xl);
21
+ display: grid;
22
+ grid-template-columns: repeat(var(--footer-columns, 3), 1fr);
23
+ gap: var(--g-spacing-xl);
24
24
  }
25
25
 
26
26
  /* Responsive grid using container queries */
27
27
  @container footer (max-width: 768px) {
28
- .footer__columns {
29
- grid-template-columns: repeat(2, 1fr);
30
- }
28
+ .footer__columns {
29
+ grid-template-columns: repeat(2, 1fr);
30
+ }
31
31
  }
32
32
 
33
33
  @container footer (max-width: 480px) {
34
- .footer__columns {
35
- grid-template-columns: 1fr;
36
- }
34
+ .footer__columns {
35
+ grid-template-columns: 1fr;
36
+ }
37
37
  }
38
38
 
39
39
  /* Bottom section (copyright, social links, etc.) */
40
40
  .footer__bottom {
41
- margin-block-start: var(--g-spacing-xl);
42
- padding-block-start: var(--g-spacing-xl);
43
- border-block-start: 1px solid var(--g-color-border-default);
44
- display: flex;
45
- flex-wrap: wrap;
46
- justify-content: space-between;
47
- align-items: center;
48
- gap: var(--g-spacing-md);
41
+ margin-block-start: var(--g-spacing-xl);
42
+ padding-block-start: var(--g-spacing-xl);
43
+ border-block-start: 1px solid var(--g-color-border-default);
44
+ display: flex;
45
+ flex-wrap: wrap;
46
+ justify-content: space-between;
47
+ align-items: center;
48
+ gap: var(--g-spacing-md);
49
49
  }
50
50
 
51
51
  @container footer (max-width: 640px) {
52
- .footer__bottom {
53
- flex-direction: column;
54
- text-align: center;
55
- }
52
+ .footer__bottom {
53
+ flex-direction: column;
54
+ text-align: center;
55
+ }
56
56
  }
57
57
 
58
58
  /* Slotted content styling */
59
59
  ::slotted(*) {
60
- font: var(--g-typography-body-sm-font);
61
- color: var(--g-color-content-subtle);
60
+ font: var(--g-typography-body-sm-font);
61
+ color: var(--g-color-content-subtle);
62
62
  }
63
63
 
64
64
  ::slotted(p) {
65
- margin: 0;
66
- line-height: 1.5;
65
+ margin: 0;
66
+ line-height: 1.5;
67
67
  }
68
68
 
69
69
  ::slotted(a) {
70
- color: var(--g-color-content-subtle);
71
- text-decoration: none;
72
- transition: color 0.2s ease;
70
+ color: var(--g-color-content-subtle);
71
+ text-decoration: none;
72
+ transition: color 0.2s ease;
73
73
  }
74
74
 
75
75
  ::slotted(a:hover) {
76
- color: var(--g-color-content-default);
77
- text-decoration: underline;
76
+ color: var(--g-color-content-default);
77
+ text-decoration: underline;
78
78
  }
@@ -1,13 +1,13 @@
1
- import { GrantCodesFooter } from "./footer.component.js";
2
- import { GrantCodesFooterColumn } from "./footer-column.component.js";
1
+ import { GrantCodesFooter } from './footer.component.js';
2
+ import { GrantCodesFooterColumn } from './footer-column.component.js';
3
3
 
4
- export * from "./footer.component.js";
5
- export * from "./footer-column.component.js";
4
+ export * from './footer.component.js';
5
+ export * from './footer-column.component.js';
6
6
  export default GrantCodesFooter;
7
7
 
8
- if (!customElements.get("grantcodes-footer")) {
9
- customElements.define("grantcodes-footer", GrantCodesFooter);
8
+ if (!customElements.get('grantcodes-footer')) {
9
+ customElements.define('grantcodes-footer', GrantCodesFooter);
10
10
  }
11
- if (!customElements.get("grantcodes-footer-column")) {
12
- customElements.define("grantcodes-footer-column", GrantCodesFooterColumn);
11
+ if (!customElements.get('grantcodes-footer-column')) {
12
+ customElements.define('grantcodes-footer-column', GrantCodesFooterColumn);
13
13
  }
@@ -1,15 +1,15 @@
1
- import React from "react";
2
- import { createComponent } from "@lit/react";
3
- import { GrantCodesFooter, GrantCodesFooterColumn } from "./footer.js";
1
+ import { createComponent } from '@lit/react';
2
+ import React from 'react';
3
+ import { GrantCodesFooter, GrantCodesFooterColumn } from './footer.js';
4
4
 
5
5
  export const Footer = createComponent({
6
- tagName: "grantcodes-footer",
7
- elementClass: GrantCodesFooter,
8
- react: React,
6
+ tagName: 'grantcodes-footer',
7
+ elementClass: GrantCodesFooter,
8
+ react: React,
9
9
  });
10
10
 
11
11
  export const FooterColumn = createComponent({
12
- tagName: "grantcodes-footer-column",
13
- elementClass: GrantCodesFooterColumn,
14
- react: React,
12
+ tagName: 'grantcodes-footer-column',
13
+ elementClass: GrantCodesFooterColumn,
14
+ react: React,
15
15
  });
@@ -1,9 +1,9 @@
1
- import { html } from "lit";
2
- import "./footer.js";
1
+ import { html } from 'lit';
2
+ import './footer.js';
3
3
 
4
4
  const meta = {
5
- title: "Components/Footer",
6
- component: "grantcodes-footer",
5
+ title: 'Components/Footer',
6
+ component: 'grantcodes-footer',
7
7
  };
8
8
 
9
9
  export default meta;
@@ -44,7 +44,7 @@ const columns = html`
44
44
  * Basic footer with three columns
45
45
  */
46
46
  export const Footer = {
47
- render: () => html`
47
+ render: () => html`
48
48
  <grantcodes-footer>
49
49
  ${columns}
50
50
 
@@ -59,7 +59,7 @@ export const Footer = {
59
59
  * Footer with four columns
60
60
  */
61
61
  export const FourColumns = {
62
- render: () => html`
62
+ render: () => html`
63
63
  <grantcodes-footer columns="4">
64
64
  ${columns}
65
65
 
@@ -79,7 +79,7 @@ export const FourColumns = {
79
79
  * Footer with social links in bottom section
80
80
  */
81
81
  export const WithSocialLinks = {
82
- render: () => html`
82
+ render: () => html`
83
83
  <grantcodes-footer>
84
84
  ${columns}
85
85
 
@@ -105,7 +105,7 @@ export const WithSocialLinks = {
105
105
  * Simple footer with minimal content
106
106
  */
107
107
  export const Minimal = {
108
- render: () => html`
108
+ render: () => html`
109
109
  <grantcodes-footer columns="1">
110
110
  <grantcodes-footer-column>
111
111
  <p style="text-align: center;">&copy; 2024 MyCompany. All rights reserved.</p>
@@ -123,7 +123,7 @@ export const Minimal = {
123
123
  * Footer with rich content including description
124
124
  */
125
125
  export const WithDescription = {
126
- render: () => html`
126
+ render: () => html`
127
127
  <grantcodes-footer>
128
128
  <grantcodes-footer-column>
129
129
  <h3>MyCompany</h3>