@grantcodes/ui 2.15.7 → 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 +60 -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,34 +1,35 @@
1
- import { html } from "lit/static-html.js";
2
- import { getStorybookHelpers } from "@wc-toolkit/storybook-helpers";
3
- const { events, args, argTypes, template } =
4
- getStorybookHelpers("grantcodes-card");
5
- import "./card.js";
6
- import "../button-group/button-group.js";
7
- import "../button/button.js";
1
+ import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
2
+ import { html } from 'lit/static-html.js';
3
+
4
+ const { events, args, argTypes, template } = getStorybookHelpers('grantcodes-card');
5
+
6
+ import './card.js';
7
+ import '../button-group/button-group.js';
8
+ import '../button/button.js';
8
9
 
9
10
  const meta = {
10
- title: "Components/Card",
11
- component: "grantcodes-card",
12
- args: {
13
- ...args,
14
- content: "Here is the card content",
15
- },
16
- argTypes,
17
- render: (args) =>
18
- template(
19
- args,
20
- html`<h3 slot="header">Card Header</h3>
11
+ title: 'Components/Card',
12
+ component: 'grantcodes-card',
13
+ args: {
14
+ ...args,
15
+ content: 'Here is the card content',
16
+ },
17
+ argTypes,
18
+ render: (args) =>
19
+ template(
20
+ args,
21
+ html`<h3 slot="header">Card Header</h3>
21
22
  <p>${args.content}</p>
22
23
  <grantcodes-button-group slot="footer">
23
24
  <grantcodes-button>Action 1</grantcodes-button>
24
25
  <grantcodes-button>Action 2</grantcodes-button>
25
26
  </grantcodes-button-group>`,
26
- ),
27
- parameters: {
28
- actions: {
29
- handles: events,
30
- },
31
- },
27
+ ),
28
+ parameters: {
29
+ actions: {
30
+ handles: events,
31
+ },
32
+ },
32
33
  };
33
34
 
34
35
  export default meta;
@@ -36,8 +37,8 @@ export default meta;
36
37
  export const Card = {};
37
38
 
38
39
  export const CardInLink = {
39
- render: () =>
40
- html`<a
40
+ render: () =>
41
+ html`<a
41
42
  href="#"
42
43
  style="text-decoration: none; color: inherit; display: block;"
43
44
  >
@@ -1,57 +1,57 @@
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 "./card.js";
5
-
6
- describe("Card 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-card");
15
- assert.ok(element, "Element should be created");
16
- assert.ok(element.shadowRoot, "Element should have shadow root");
17
- });
18
-
19
- it("should have default slot", async () => {
20
- element = await fixture("grantcodes-card");
21
- const slot = element.shadowRoot.querySelector("slot:not([name])");
22
- assert.ok(slot, "Default slot should exist");
23
- });
24
-
25
- it("should have header slot", async () => {
26
- element = await fixture("grantcodes-card");
27
- const headerSlot = element.shadowRoot.querySelector('slot[name="header"]');
28
- assert.ok(headerSlot, "Header slot should exist");
29
- });
30
-
31
- it("should have footer slot", async () => {
32
- element = await fixture("grantcodes-card");
33
- const footerSlot = element.shadowRoot.querySelector('slot[name="footer"]');
34
- assert.ok(footerSlot, "Footer slot should exist");
35
- });
36
-
37
- it("should render card wrapper", async () => {
38
- element = await fixture("grantcodes-card");
39
- const card = element.shadowRoot.querySelector(".card");
40
- assert.ok(card, "Card wrapper should exist");
41
- });
42
-
43
- it("should support slotted content", async () => {
44
- element = await fixture("grantcodes-card");
45
- const content = document.createElement("p");
46
- content.textContent = "Card content";
47
- element.appendChild(content);
48
-
49
- await element.updateComplete;
50
-
51
- assert.strictEqual(
52
- element.querySelector("p").textContent,
53
- "Card content",
54
- "Slotted content should be present",
55
- );
56
- });
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 './card.js';
5
+
6
+ describe('Card 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-card');
15
+ assert.ok(element, 'Element should be created');
16
+ assert.ok(element.shadowRoot, 'Element should have shadow root');
17
+ });
18
+
19
+ it('should have default slot', async () => {
20
+ element = await fixture('grantcodes-card');
21
+ const slot = element.shadowRoot.querySelector('slot:not([name])');
22
+ assert.ok(slot, 'Default slot should exist');
23
+ });
24
+
25
+ it('should have header slot', async () => {
26
+ element = await fixture('grantcodes-card');
27
+ const headerSlot = element.shadowRoot.querySelector('slot[name="header"]');
28
+ assert.ok(headerSlot, 'Header slot should exist');
29
+ });
30
+
31
+ it('should have footer slot', async () => {
32
+ element = await fixture('grantcodes-card');
33
+ const footerSlot = element.shadowRoot.querySelector('slot[name="footer"]');
34
+ assert.ok(footerSlot, 'Footer slot should exist');
35
+ });
36
+
37
+ it('should render card wrapper', async () => {
38
+ element = await fixture('grantcodes-card');
39
+ const card = element.shadowRoot.querySelector('.card');
40
+ assert.ok(card, 'Card wrapper should exist');
41
+ });
42
+
43
+ it('should support slotted content', async () => {
44
+ element = await fixture('grantcodes-card');
45
+ const content = document.createElement('p');
46
+ content.textContent = 'Card content';
47
+ element.appendChild(content);
48
+
49
+ await element.updateComplete;
50
+
51
+ assert.strictEqual(
52
+ element.querySelector('p').textContent,
53
+ 'Card content',
54
+ 'Slotted content should be present',
55
+ );
56
+ });
57
57
  });
@@ -1 +1 @@
1
- export * from "./card.js";
1
+ export * from './card.js';
@@ -1,53 +1,52 @@
1
- import { LitElement } from "lit";
2
- import { html } from "lit/static-html.js";
3
- import codePreviewStyles from "./code-preview.css" with { type: "css" };
1
+ import { LitElement } from 'lit';
2
+ import { html } from 'lit/static-html.js';
3
+ import codePreviewStyles from './code-preview.css' with { type: 'css' };
4
4
 
5
5
  export class GrantCodesCodePreview extends LitElement {
6
- static styles = [codePreviewStyles];
7
-
8
- static properties = {
9
- language: { type: String },
10
- theme: { type: String },
11
- };
12
-
13
- constructor() {
14
- super();
15
-
16
- this.language = "html";
17
- this.theme = "aurora-x";
18
- this.codePreview = null;
19
- }
20
-
21
- async doHighlight() {
22
- const rawCode = this.textContent ?? "";
23
- const { codeToHtml } = await import("shiki/bundle/web");
24
- const highlightedCode = await codeToHtml(rawCode.trim(), {
25
- lang: this.language,
26
- theme: this.theme,
27
- });
28
-
29
- this.codePreview.innerHTML = highlightedCode;
30
- }
31
-
32
- async firstUpdated() {
33
- this.codePreview = this.renderRoot.querySelector(".code-preview");
34
- // Only highlight if we have content and we're in a browser environment,
35
- // and not in a unit test environment
36
- const isTestEnv =
37
- typeof process !== "undefined" && process?.env?.NODE_ENV === "test";
38
- if (this.textContent && typeof window !== "undefined" && !isTestEnv) {
39
- try {
40
- await this.doHighlight();
41
- } catch (error) {
42
- // Silently fail in test environments
43
- console.warn("Code highlighting failed:", error);
44
- }
45
- }
46
- }
47
-
48
- render() {
49
- return html`<div class="code-preview">
6
+ static styles = [codePreviewStyles];
7
+
8
+ static properties = {
9
+ language: { type: String },
10
+ theme: { type: String },
11
+ };
12
+
13
+ constructor() {
14
+ super();
15
+
16
+ this.language = 'html';
17
+ this.theme = 'aurora-x';
18
+ this.codePreview = null;
19
+ }
20
+
21
+ async doHighlight() {
22
+ const rawCode = this.textContent ?? '';
23
+ const { codeToHtml } = await import('shiki/bundle/web');
24
+ const highlightedCode = await codeToHtml(rawCode.trim(), {
25
+ lang: this.language,
26
+ theme: this.theme,
27
+ });
28
+
29
+ this.codePreview.innerHTML = highlightedCode;
30
+ }
31
+
32
+ async firstUpdated() {
33
+ this.codePreview = this.renderRoot.querySelector('.code-preview');
34
+ // Only highlight if we have content and we're in a browser environment,
35
+ // and not in a unit test environment
36
+ const isTestEnv = typeof process !== 'undefined' && process?.env?.NODE_ENV === 'test';
37
+ if (this.textContent && typeof window !== 'undefined' && !isTestEnv) {
38
+ try {
39
+ await this.doHighlight();
40
+ } catch (error) {
41
+ // Silently fail in test environments
42
+ console.warn('Code highlighting failed:', error);
43
+ }
44
+ }
45
+ }
46
+
47
+ render() {
48
+ return html`<div class="code-preview">
50
49
  <pre><slot></slot></pre>
51
50
  </div> `;
52
- }
51
+ }
53
52
  }
@@ -1,18 +1,18 @@
1
1
  *,
2
2
  *::before,
3
3
  *::after {
4
- box-sizing: border-box;
4
+ box-sizing: border-box;
5
5
  }
6
6
 
7
7
  .code-preview > pre {
8
- display: block;
9
- font-family: var(--g-typography-font-family-code);
10
- line-height: 1.2;
11
- width: 100%;
12
- overflow: auto;
13
- border-radius: var(--g-border-radius-md);
14
- box-shadow: var(--g-box-shadow-sm);
15
- font-size: var(--g-typography-body-sm-font-size);
16
- font-weight: var(--g-typography-body-lg-font-weight);
17
- padding: var(--g-spacing-md);
8
+ display: block;
9
+ font-family: var(--g-typography-font-family-code);
10
+ line-height: 1.2;
11
+ width: 100%;
12
+ overflow: auto;
13
+ border-radius: var(--g-border-radius-md);
14
+ box-shadow: var(--g-box-shadow-sm);
15
+ font-size: var(--g-typography-body-sm-font-size);
16
+ font-weight: var(--g-typography-body-lg-font-weight);
17
+ padding: var(--g-spacing-md);
18
18
  }
@@ -1,6 +1,6 @@
1
- import { GrantCodesCodePreview } from "./code-preview.component.js";
1
+ import { GrantCodesCodePreview } from './code-preview.component.js';
2
2
 
3
- export * from "./code-preview.component.js";
3
+ export * from './code-preview.component.js';
4
4
  export default GrantCodesCodePreview;
5
5
 
6
- customElements.define("grantcodes-code-preview", GrantCodesCodePreview);
6
+ customElements.define('grantcodes-code-preview', GrantCodesCodePreview);
@@ -1,9 +1,9 @@
1
- import React from "react";
2
- import { createComponent } from "@lit/react";
3
- import { GrantCodesCodePreview } from "./code-preview.js";
1
+ import { createComponent } from '@lit/react';
2
+ import React from 'react';
3
+ import { GrantCodesCodePreview } from './code-preview.js';
4
4
 
5
5
  export const CodePreview = createComponent({
6
- tagName: "grantcodes-code-preview",
7
- elementClass: GrantCodesCodePreview,
8
- react: React,
6
+ tagName: 'grantcodes-code-preview',
7
+ elementClass: GrantCodesCodePreview,
8
+ react: React,
9
9
  });
@@ -1,9 +1,9 @@
1
- import { html } from "lit/static-html.js";
2
- import { getStorybookHelpers } from "@wc-toolkit/storybook-helpers";
3
- const { events, args, argTypes, template } = getStorybookHelpers(
4
- "grantcodes-code-preview",
5
- );
6
- import "./code-preview.js";
1
+ import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
2
+ import { html } from 'lit/static-html.js';
3
+
4
+ const { events, args, argTypes, template } = getStorybookHelpers('grantcodes-code-preview');
5
+
6
+ import './code-preview.js';
7
7
 
8
8
  const jsCode = `
9
9
  import { thing } from "module";
@@ -31,21 +31,21 @@ body {
31
31
  `;
32
32
 
33
33
  const meta = {
34
- title: "Components/CodePreview",
35
- component: "grantcodes-code-preview",
36
- args: {
37
- ...args,
38
- language: "javascript",
39
- theme: "aurora-x",
40
- code: jsCode,
41
- },
42
- argTypes,
43
- render: (args) => template(args, html`${args.code}`),
44
- parameters: {
45
- actions: {
46
- handles: events,
47
- },
48
- },
34
+ title: 'Components/CodePreview',
35
+ component: 'grantcodes-code-preview',
36
+ args: {
37
+ ...args,
38
+ language: 'javascript',
39
+ theme: 'aurora-x',
40
+ code: jsCode,
41
+ },
42
+ argTypes,
43
+ render: (args) => template(args, html`${args.code}`),
44
+ parameters: {
45
+ actions: {
46
+ handles: events,
47
+ },
48
+ },
49
49
  };
50
50
 
51
51
  export default meta;
@@ -53,15 +53,15 @@ export default meta;
53
53
  export const CodePreview = {};
54
54
 
55
55
  export const HTMLCodePreview = {
56
- args: {
57
- language: "html",
58
- code: htmlCode,
59
- },
56
+ args: {
57
+ language: 'html',
58
+ code: htmlCode,
59
+ },
60
60
  };
61
61
 
62
62
  export const CSSCodePreview = {
63
- args: {
64
- language: "css",
65
- code: cssCode,
66
- },
63
+ args: {
64
+ language: 'css',
65
+ code: cssCode,
66
+ },
67
67
  };