@scrippsproduct/networks-ui-library 1.1.9 → 1.1.10-alpha.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 (120) hide show
  1. package/dist/{Form.module-Cd8qH2rj.mjs → Form.module-CarfWK5T.mjs} +1 -1
  2. package/dist/ResultsTable.module-wcNUQEKe.mjs +14 -0
  3. package/dist/_commonjsHelpers-DaMA6jEr.mjs +8 -0
  4. package/dist/assets/ResultsTable.css +1 -1
  5. package/dist/{chevron-left-DRvpaLmK.mjs → chevron-left-D0UjbrKw.mjs} +1 -1
  6. package/dist/{chevron-right-C8yCnmfx.mjs → chevron-right-0ZF3LruR.mjs} +1 -1
  7. package/dist/components/ActionButton/ActionButton.test.js +209 -0
  8. package/dist/components/AdBlock/AdBlock.test.js +286 -0
  9. package/dist/components/AdjustableTwoColumnGrid/AdjustableTwoColumnGrid.test.js +295 -0
  10. package/dist/components/AirDateFormatter/AirDateFormatter.test.js +192 -0
  11. package/dist/components/AnchorTag/AnchorTag.test.js +463 -0
  12. package/dist/components/BCVideoPlayer/BCVideoPlayer.test.js +295 -0
  13. package/dist/components/BasicGridModule/BasicGridModule.js +41 -37
  14. package/dist/components/BasicGridModule/BasicGridModule.test.js +227 -0
  15. package/dist/components/Button/Button.test.js +434 -0
  16. package/dist/components/Carousel/Carousel.js +2 -2
  17. package/dist/components/Carousel/Carousel.test.js +705 -0
  18. package/dist/components/CarouselSlide/CarouselSlide.test.js +378 -0
  19. package/dist/components/CarouselSlide/slide-layouts/TwoColumn/TwoColumnSlide.js +1 -1
  20. package/dist/components/CastInfoLayout/CastInfoLayout.test.js +294 -0
  21. package/dist/components/ChannelSearch/ChannelSearch.test.js +565 -0
  22. package/dist/components/ChoicesItem/ChoicesItem.test.js +428 -0
  23. package/dist/components/Concat/Concat.js +1 -1
  24. package/dist/components/Concat/Concat.test.js +115 -0
  25. package/dist/components/CtaBlock/CtaBlock.js +1 -1
  26. package/dist/components/CtaBlock/CtaBlock.test.js +226 -0
  27. package/dist/components/CustomDataList/CustomDataList.js +4 -4
  28. package/dist/components/CustomSelect/CustomSelect.js +86 -86
  29. package/dist/components/CustomSelect/CustomSelect.test.js +313 -0
  30. package/dist/components/DateNavigation/DateNavigation.js +10 -10
  31. package/dist/components/DateNavigation/DateNavigation.test.js +370 -0
  32. package/dist/components/DatePicker/DatePicker.js +1 -1
  33. package/dist/components/DeviceAndPlatformLists/DeviceAndPlatformLists.test.js +288 -0
  34. package/dist/components/DrawerNavigation/DrawerNavigation.test.js +316 -0
  35. package/dist/components/EqualSizeFlexRow/EqualSizeFlexRow.test.js +337 -0
  36. package/dist/components/EqualSizeGrid/EqualSizeGrid.test.js +358 -0
  37. package/dist/components/ErrorHandler/ErrorHandler.js +2 -2
  38. package/dist/components/ErrorHandler/ErrorHandler.test.js +158 -0
  39. package/dist/components/FeaturedList/FeaturedList.test.js +353 -0
  40. package/dist/components/Figure/Figure.js +1 -1
  41. package/dist/components/Figure/Figure.test.js +198 -0
  42. package/dist/components/FindUs/FindUs.test.js +499 -0
  43. package/dist/components/FooterNavigation/FooterNavigation.test.js +310 -0
  44. package/dist/components/GenericList/GenericList.js +1 -1
  45. package/dist/components/GenericList/GenericList.test.js +288 -0
  46. package/dist/components/GetAirdateWrapper/GetAirdateWrapper.test.js +689 -0
  47. package/dist/components/GradientButton/GradientButton.d.ts +1 -1
  48. package/dist/components/GradientButton/GradientButton.js +33 -31
  49. package/dist/components/GradientButton/GradientButton.test.js +457 -0
  50. package/dist/components/GridList/GridList.test.js +371 -0
  51. package/dist/components/ImageCard/ImageCard.test.js +668 -0
  52. package/dist/components/ImageCard/ImageCardCore.js +28 -28
  53. package/dist/components/ImageCard/ImageCardCore.test.js +577 -0
  54. package/dist/components/ImageReplacementAnchor/ImageReplacementAnchor.test.js +379 -0
  55. package/dist/components/InfoPanel/InfoPanel.js +1 -1
  56. package/dist/components/InlineNavigation/InlineNavigation.test.js +149 -0
  57. package/dist/components/Input/Input.js +1 -1
  58. package/dist/components/Input/Input.test.js +263 -0
  59. package/dist/components/InstructionsList/InstructionsList.js +11 -11
  60. package/dist/components/InstructionsList/InstructionsList.test.js +181 -0
  61. package/dist/components/LogoListItem/LogoListItem.test.js +303 -0
  62. package/dist/components/LogoNavigation/LogoNavigation.test.js +352 -0
  63. package/dist/components/ModalContainer/ModalContainer.js +2 -2
  64. package/dist/components/NavList/NavList.test.js +332 -0
  65. package/dist/components/Overlay/Overlay.js +24 -23
  66. package/dist/components/Overlay/Overlay.test.js +198 -0
  67. package/dist/components/PageHero/PageHero.test.js +241 -0
  68. package/dist/components/PageHero/page-hero-layouts/IONShow/IONShowHero.js +1 -1
  69. package/dist/components/ProgramAirdate/ProgramAirdate.js +1 -1
  70. package/dist/components/ProgramAirdate/ProgramAirdate.test.js +414 -0
  71. package/dist/components/PromotionBlock/PromotionBlock.test.js +208 -0
  72. package/dist/components/PromotionsRowBlock/PromotionsRowBlock.test.js +221 -0
  73. package/dist/components/PromotionsRowModule/PromotionsRowModule.test.js +349 -0
  74. package/dist/components/RescanInstructions/RescanInstructions.test.js +218 -0
  75. package/dist/components/ResponsiveImage/ResponsiveImage.test.js +264 -0
  76. package/dist/components/ResultsTable/ResultsTable.js +9 -2
  77. package/dist/components/ResultsTable/ResultsTable.test.js +402 -0
  78. package/dist/components/ResultsTableBody/ResultsTableBody.js +1 -1
  79. package/dist/components/ResultsTableBody/ResultsTableBody.test.js +445 -0
  80. package/dist/components/ResultsTableHeader/ResultsTableHeader.js +37 -15
  81. package/dist/components/ResultsTableHeader/ResultsTableHeader.test.js +275 -0
  82. package/dist/components/ScheduleLayout/ScheduleContext.js +654 -626
  83. package/dist/components/ScheduleLayout/ScheduleLayout.js +1 -1
  84. package/dist/components/ScheduleLayout/useScheduleContext.js +5 -10
  85. package/dist/components/ScheduleList/ScheduleList.js +1 -1
  86. package/dist/components/SectionedContent/SectionedContent.js +1 -1
  87. package/dist/components/SectionedContent/SectionedContent.test.js +341 -0
  88. package/dist/components/Select/Select.js +24 -24
  89. package/dist/components/Select/Select.test.js +367 -0
  90. package/dist/components/ShowAboutContent/ShowAboutContent.js +1 -1
  91. package/dist/components/ShowAboutContent/ShowAboutContent.test.js +535 -0
  92. package/dist/components/ShowAboutLayout/ShowAboutLayout.test.js +570 -0
  93. package/dist/components/SocialLinks/SocialLinks.js +1 -1
  94. package/dist/components/StringList/StringList.js +1 -1
  95. package/dist/components/StringList/StringList.test.js +311 -0
  96. package/dist/components/TabContent/TabContent.js +1 -1
  97. package/dist/components/TabContent/TabContent.test.js +274 -0
  98. package/dist/components/TabNavigation/TabNavigation.js +21 -21
  99. package/dist/components/TabNavigation/TabNavigation.test.js +535 -0
  100. package/dist/components/TabbedContent/TabbedContent.test.js +654 -0
  101. package/dist/components/TextArea/TextArea.js +1 -1
  102. package/dist/components/UpcomingList/UpcomingList.test.js +471 -0
  103. package/dist/{index-VjANCDXC.mjs → index-06PEPfBQ.mjs} +1 -1
  104. package/dist/index-BUN4jQ3m.mjs +3098 -0
  105. package/dist/index-BVxBrkZB.mjs +3 -0
  106. package/dist/{index-DC2JJV3a.mjs → index-D3kkcgee.mjs} +1 -1
  107. package/dist/{index-C-kn9Zhn.mjs → index-DzfYkULW.mjs} +2 -1
  108. package/dist/magic-string.es-uPKorP4O.mjs +663 -0
  109. package/dist/matchers-35e4d3bd-BBPNTlen.mjs +2404 -0
  110. package/dist/react.esm-DLSrfVwM.mjs +23410 -0
  111. package/dist/test/setupTests.d.ts +1 -0
  112. package/dist/test/setupTests.js +55 -0
  113. package/dist/{triangle-PcCcGXjr.mjs → triangle-C4z906Wf.mjs} +1 -1
  114. package/dist/useScheduleContext-D7FdzNxe.mjs +17 -0
  115. package/dist/utils/analytics.js +1 -1
  116. package/dist/utils/getOnNowProgram.js +10 -10
  117. package/dist/{x-C-QzJ-qD.mjs → x-Ck9Vk5Fo.mjs} +1 -1
  118. package/package.json +4 -1
  119. package/dist/ResultsTable.module-1zxhXaem.mjs +0 -14
  120. package/dist/_commonjsHelpers-C6fGbg64.mjs +0 -6
@@ -0,0 +1,434 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { d as b, i as n, r as s, s as e, g as o, v as u } from "../../react.esm-DLSrfVwM.mjs";
3
+ import { u as i } from "../../index-BUN4jQ3m.mjs";
4
+ import "../../index-BVxBrkZB.mjs";
5
+ import { Button as a } from "./Button.js";
6
+ b("Button", () => {
7
+ b("Basic Rendering", () => {
8
+ n("should render a button element by default", () => {
9
+ s(/* @__PURE__ */ l(a, { label: "Click Me" }));
10
+ const t = e.getByRole("button");
11
+ o(t).toBeInTheDocument();
12
+ }), n("should render label text", () => {
13
+ s(/* @__PURE__ */ l(a, { label: "Test Button" })), o(e.getByText("Test Button")).toBeInTheDocument();
14
+ }), n("should render with empty label", () => {
15
+ s(/* @__PURE__ */ l(a, { label: "" }));
16
+ const t = e.getByRole("button");
17
+ o(t).toBeInTheDocument(), o(t.textContent).toBe("");
18
+ }), n("should render as anchor when href is provided", () => {
19
+ s(/* @__PURE__ */ l(a, { href: "https://example.com", label: "Link Button" }));
20
+ const t = e.getByRole("link");
21
+ o(t).toBeInTheDocument(), o(t).toHaveAttribute("href", "https://example.com");
22
+ }), n("should apply btn class", () => {
23
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
24
+ const t = e.getByRole("button");
25
+ o(t).toHaveClass("btn");
26
+ });
27
+ }), b("Default Props", () => {
28
+ n("should use default type of button", () => {
29
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
30
+ const t = e.getByRole("button");
31
+ o(t).toHaveAttribute("type", "button");
32
+ }), n("should use default label of empty string", () => {
33
+ const { container: t } = s(/* @__PURE__ */ l(a, {})), r = t.querySelector("button");
34
+ o(r == null ? void 0 : r.textContent).toBe("");
35
+ }), n("should use default href of empty string", () => {
36
+ s(/* @__PURE__ */ l(a, { label: "Test" })), o(e.getByRole("button")).toBeInTheDocument(), o(e.queryByRole("link")).not.toBeInTheDocument();
37
+ }), n("should use default varient of primary", () => {
38
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
39
+ const t = e.getByRole("button");
40
+ o(t.className).toContain("btn--primary");
41
+ }), n("should use default size of empty string", () => {
42
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
43
+ const t = e.getByRole("button");
44
+ o(t.className).not.toContain("btn--small"), o(t.className).not.toContain("btn--medium"), o(t.className).not.toContain("btn--large");
45
+ }), n("should use default classname of empty string", () => {
46
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
47
+ const t = e.getByRole("button");
48
+ o(t).toHaveClass("btn");
49
+ }), n("should use default empty onClick handler", () => {
50
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
51
+ const t = e.getByRole("button");
52
+ o(t).toBeInTheDocument();
53
+ });
54
+ }), b("Type Prop", () => {
55
+ n("should render with type button", () => {
56
+ s(/* @__PURE__ */ l(a, { label: "Test", type: "button" }));
57
+ const t = e.getByRole("button");
58
+ o(t).toHaveAttribute("type", "button");
59
+ }), n("should render with type submit", () => {
60
+ s(/* @__PURE__ */ l(a, { label: "Submit", type: "submit" }));
61
+ const t = e.getByRole("button");
62
+ o(t).toHaveAttribute("type", "submit");
63
+ }), n("should render with type reset", () => {
64
+ s(/* @__PURE__ */ l(a, { label: "Reset", type: "reset" }));
65
+ const t = e.getByRole("button");
66
+ o(t).toHaveAttribute("type", "reset");
67
+ });
68
+ }), b("Varient Prop", () => {
69
+ n("should apply primary varient class", () => {
70
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "primary" }));
71
+ const t = e.getByRole("button");
72
+ o(t.className).toContain("btn--primary");
73
+ }), n("should apply secondary varient class", () => {
74
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "secondary" }));
75
+ const t = e.getByRole("button");
76
+ o(t.className).toContain("btn--secondary");
77
+ }), n("should apply tertiary varient class", () => {
78
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "tertiary" }));
79
+ const t = e.getByRole("button");
80
+ o(t.className).toContain("btn--tertiary");
81
+ }), n("should apply outline varient class", () => {
82
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "outline" }));
83
+ const t = e.getByRole("button");
84
+ o(t.className).toContain("btn--outline");
85
+ }), n("should apply text varient class", () => {
86
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "text" }));
87
+ const t = e.getByRole("button");
88
+ o(t.className).toContain("btn--text");
89
+ }), n("should not apply varient class when empty string", () => {
90
+ s(/* @__PURE__ */ l(a, { label: "Test", varient: "" }));
91
+ const t = e.getByRole("button");
92
+ o(t.className).not.toContain("btn--");
93
+ });
94
+ }), b("Size Prop", () => {
95
+ n("should apply small size class", () => {
96
+ s(/* @__PURE__ */ l(a, { label: "Test", size: "small" }));
97
+ const t = e.getByRole("button");
98
+ o(t.className).toContain("btn--small");
99
+ }), n("should apply medium size class", () => {
100
+ s(/* @__PURE__ */ l(a, { label: "Test", size: "medium" }));
101
+ const t = e.getByRole("button");
102
+ o(t.className).toContain("btn--medium");
103
+ }), n("should apply large size class", () => {
104
+ s(/* @__PURE__ */ l(a, { label: "Test", size: "large" }));
105
+ const t = e.getByRole("button");
106
+ o(t.className).toContain("btn--large");
107
+ }), n("should not apply size class when empty string", () => {
108
+ s(/* @__PURE__ */ l(a, { label: "Test", size: "" }));
109
+ const t = e.getByRole("button");
110
+ o(t.className).not.toContain("btn--small"), o(t.className).not.toContain("btn--medium"), o(t.className).not.toContain("btn--large");
111
+ });
112
+ }), b("Classname Prop", () => {
113
+ n("should apply custom classname", () => {
114
+ s(/* @__PURE__ */ l(a, { classname: "custom-btn", label: "Test" }));
115
+ const t = e.getByRole("button");
116
+ o(t).toHaveClass("custom-btn");
117
+ }), n("should apply multiple custom classnames", () => {
118
+ s(/* @__PURE__ */ l(a, { classname: "custom-btn another-class", label: "Test" }));
119
+ const t = e.getByRole("button");
120
+ o(t).toHaveClass("custom-btn"), o(t).toHaveClass("another-class");
121
+ }), n("should apply custom classname along with default classes", () => {
122
+ s(/* @__PURE__ */ l(a, { classname: "custom", label: "Test" }));
123
+ const t = e.getByRole("button");
124
+ o(t).toHaveClass("custom"), o(t).toHaveClass("btn");
125
+ });
126
+ }), b("Href Prop", () => {
127
+ n("should render as button when href is empty", () => {
128
+ s(/* @__PURE__ */ l(a, { href: "", label: "Test" })), o(e.getByRole("button")).toBeInTheDocument(), o(e.queryByRole("link")).not.toBeInTheDocument();
129
+ }), n("should render as anchor when href is provided", () => {
130
+ s(/* @__PURE__ */ l(a, { href: "/page", label: "Test" })), o(e.queryByRole("button")).not.toBeInTheDocument(), o(e.getByRole("link")).toBeInTheDocument();
131
+ }), n("should set correct href on anchor", () => {
132
+ s(/* @__PURE__ */ l(a, { href: "https://example.com", label: "Test" }));
133
+ const t = e.getByRole("link");
134
+ o(t).toHaveAttribute("href", "https://example.com");
135
+ }), n("should apply same classes to anchor as button", () => {
136
+ s(/* @__PURE__ */ l(a, { href: "/page", label: "Test", varient: "secondary" }));
137
+ const t = e.getByRole("link");
138
+ o(t).toHaveClass("btn"), o(t.className).toContain("btn--secondary");
139
+ });
140
+ }), b("onClick Handler", () => {
141
+ n("should call onClick when button is clicked", async () => {
142
+ const t = i.setup(), r = u.fn();
143
+ s(/* @__PURE__ */ l(a, { label: "Click", onClick: r }));
144
+ const c = e.getByRole("button");
145
+ await t.click(c), o(r).toHaveBeenCalledTimes(1);
146
+ }), n("should pass event to onClick handler", async () => {
147
+ const t = i.setup(), r = u.fn();
148
+ s(/* @__PURE__ */ l(a, { label: "Click", onClick: r }));
149
+ const c = e.getByRole("button");
150
+ await t.click(c), o(r).toHaveBeenCalledWith(o.any(Object));
151
+ }), n("should not error when onClick is not provided", async () => {
152
+ const t = i.setup();
153
+ s(/* @__PURE__ */ l(a, { label: "Click" }));
154
+ const r = e.getByRole("button");
155
+ await t.click(r), o(r).toBeInTheDocument();
156
+ }), n("should not have onClick on anchor element", () => {
157
+ const t = u.fn();
158
+ s(/* @__PURE__ */ l(a, { href: "/page", label: "Link", onClick: t }));
159
+ const r = e.getByRole("link");
160
+ o(r.onclick).toBeNull();
161
+ });
162
+ }), b("Custom Colors", () => {
163
+ n("should apply custom bgColor CSS variable", () => {
164
+ s(
165
+ /* @__PURE__ */ l(
166
+ a,
167
+ {
168
+ customColors: { bgColor: "#ff0000" },
169
+ label: "Test"
170
+ }
171
+ )
172
+ );
173
+ const t = e.getByRole("button");
174
+ o(t).toHaveStyle({ "--button-bg-color": "#ff0000" });
175
+ }), n("should apply custom color CSS variable", () => {
176
+ s(
177
+ /* @__PURE__ */ l(
178
+ a,
179
+ {
180
+ customColors: { bgColor: "#000", color: "#fff" },
181
+ label: "Test"
182
+ }
183
+ )
184
+ );
185
+ const t = e.getByRole("button");
186
+ o(t).toHaveStyle({ "--button-color": "#fff" });
187
+ }), n("should apply custom bgHoverColor CSS variable", () => {
188
+ s(
189
+ /* @__PURE__ */ l(
190
+ a,
191
+ {
192
+ customColors: { bgColor: "#000", bgHoverColor: "#333" },
193
+ label: "Test"
194
+ }
195
+ )
196
+ );
197
+ const t = e.getByRole("button");
198
+ o(t).toHaveStyle({ "--button-hover-bg-color": "#333" });
199
+ }), n("should use bgColor as bgHoverColor when bgHoverColor is empty", () => {
200
+ s(
201
+ /* @__PURE__ */ l(
202
+ a,
203
+ {
204
+ customColors: { bgColor: "#000", bgHoverColor: "" },
205
+ label: "Test"
206
+ }
207
+ )
208
+ );
209
+ const t = e.getByRole("button");
210
+ o(t).toHaveStyle({ "--button-hover-bg-color": "#000" });
211
+ }), n("should apply custom hoverColor CSS variable", () => {
212
+ s(
213
+ /* @__PURE__ */ l(
214
+ a,
215
+ {
216
+ customColors: { bgColor: "#000", color: "#fff", hoverColor: "#ccc" },
217
+ label: "Test"
218
+ }
219
+ )
220
+ );
221
+ const t = e.getByRole("button");
222
+ o(t).toHaveStyle({ "--button-hover-color": "#ccc" });
223
+ }), n("should use color as hoverColor when hoverColor is empty", () => {
224
+ s(
225
+ /* @__PURE__ */ l(
226
+ a,
227
+ {
228
+ customColors: { bgColor: "#000", color: "#fff", hoverColor: "" },
229
+ label: "Test"
230
+ }
231
+ )
232
+ );
233
+ const t = e.getByRole("button");
234
+ o(t).toHaveStyle({ "--button-hover-color": "#fff" });
235
+ }), n("should apply custom borderColor CSS variable", () => {
236
+ s(
237
+ /* @__PURE__ */ l(
238
+ a,
239
+ {
240
+ customColors: { bgColor: "#000", borderColor: "#ff0000" },
241
+ label: "Test"
242
+ }
243
+ )
244
+ );
245
+ const t = e.getByRole("button");
246
+ o(t).toHaveStyle({ "--button-border-color": "#ff0000" });
247
+ }), n("should use bgColor as borderColor when borderColor is empty", () => {
248
+ s(
249
+ /* @__PURE__ */ l(
250
+ a,
251
+ {
252
+ customColors: { bgColor: "#000", borderColor: "" },
253
+ label: "Test"
254
+ }
255
+ )
256
+ );
257
+ const t = e.getByRole("button");
258
+ o(t).toHaveStyle({ "--button-border-color": "#000" });
259
+ }), n("should not apply custom colors when bgColor is empty", () => {
260
+ s(
261
+ /* @__PURE__ */ l(
262
+ a,
263
+ {
264
+ customColors: { bgColor: "", color: "#fff" },
265
+ label: "Test"
266
+ }
267
+ )
268
+ );
269
+ const t = e.getByRole("button");
270
+ o(t.style.getPropertyValue("--button-bg-color")).toBe("");
271
+ }), n("should apply custom colors to anchor element", () => {
272
+ s(
273
+ /* @__PURE__ */ l(
274
+ a,
275
+ {
276
+ customColors: { bgColor: "#ff0000" },
277
+ href: "/page",
278
+ label: "Test"
279
+ }
280
+ )
281
+ );
282
+ const t = e.getByRole("link");
283
+ o(t).toHaveStyle({ "--button-bg-color": "#ff0000" });
284
+ });
285
+ }), b("Additional Attributes", () => {
286
+ n("should spread additional attributes to button", () => {
287
+ s(/* @__PURE__ */ l(a, { "aria-label": "Accessible Button", label: "Test" }));
288
+ const t = e.getByRole("button");
289
+ o(t).toHaveAttribute("aria-label", "Accessible Button");
290
+ }), n("should spread additional attributes to anchor", () => {
291
+ s(/* @__PURE__ */ l(a, { "aria-label": "Accessible Link", href: "/page", label: "Test" }));
292
+ const t = e.getByRole("link");
293
+ o(t).toHaveAttribute("aria-label", "Accessible Link");
294
+ }), n("should accept data attributes", () => {
295
+ s(/* @__PURE__ */ l(a, { "data-testid": "custom-button", label: "Test" })), o(e.getByTestId("custom-button")).toBeInTheDocument();
296
+ }), n("should accept disabled attribute", () => {
297
+ s(/* @__PURE__ */ l(a, { disabled: !0, label: "Test" }));
298
+ const t = e.getByRole("button");
299
+ o(t).toBeDisabled();
300
+ });
301
+ }), b("Edge Cases", () => {
302
+ n("should handle very long labels", () => {
303
+ const t = "A".repeat(100);
304
+ s(/* @__PURE__ */ l(a, { label: t })), o(e.getByText(t)).toBeInTheDocument();
305
+ }), n("should handle labels with special characters", () => {
306
+ s(/* @__PURE__ */ l(a, { label: "<Click> & 'Go'" })), o(e.getByText("<Click> & 'Go'")).toBeInTheDocument();
307
+ }), n("should handle empty customColors object", () => {
308
+ s(/* @__PURE__ */ l(a, { customColors: {}, label: "Test" }));
309
+ const t = e.getByRole("button");
310
+ o(t).toBeInTheDocument();
311
+ }), n("should handle all custom colors at once", () => {
312
+ s(
313
+ /* @__PURE__ */ l(
314
+ a,
315
+ {
316
+ customColors: {
317
+ bgColor: "#000",
318
+ bgHoverColor: "#111",
319
+ color: "#fff",
320
+ hoverColor: "#eee",
321
+ borderColor: "#333",
322
+ borderHoverColor: "#444"
323
+ },
324
+ label: "Test"
325
+ }
326
+ )
327
+ );
328
+ const t = e.getByRole("button");
329
+ o(t).toHaveStyle({
330
+ "--button-bg-color": "#000",
331
+ "--button-hover-bg-color": "#111",
332
+ "--button-color": "#fff",
333
+ "--button-hover-color": "#eee",
334
+ "--button-border-color": "#333",
335
+ "--button-hover-border-color": "#444"
336
+ });
337
+ });
338
+ }), b("Combined Props", () => {
339
+ n("should render button with all props", () => {
340
+ const t = u.fn();
341
+ s(
342
+ /* @__PURE__ */ l(
343
+ a,
344
+ {
345
+ classname: "custom-btn",
346
+ label: "Submit Form",
347
+ onClick: t,
348
+ size: "large",
349
+ type: "submit",
350
+ varient: "secondary"
351
+ }
352
+ )
353
+ );
354
+ const r = e.getByRole("button");
355
+ o(r).toHaveAttribute("type", "submit"), o(r).toHaveClass("custom-btn"), o(r).toHaveClass("btn"), o(r.className).toContain("btn--secondary"), o(r.className).toContain("btn--large"), o(e.getByText("Submit Form")).toBeInTheDocument();
356
+ }), n("should render anchor with styling props", () => {
357
+ s(
358
+ /* @__PURE__ */ l(
359
+ a,
360
+ {
361
+ classname: "link-btn",
362
+ href: "https://example.com",
363
+ label: "External Link",
364
+ size: "small",
365
+ varient: "outline"
366
+ }
367
+ )
368
+ );
369
+ const t = e.getByRole("link");
370
+ o(t).toHaveAttribute("href", "https://example.com"), o(t).toHaveClass("link-btn"), o(t).toHaveClass("btn"), o(t.className).toContain("btn--outline"), o(t.className).toContain("btn--small");
371
+ }), n("should combine varient and size classes", () => {
372
+ s(/* @__PURE__ */ l(a, { label: "Test", size: "medium", varient: "tertiary" }));
373
+ const t = e.getByRole("button");
374
+ o(t.className).toContain("btn--tertiary"), o(t.className).toContain("btn--medium");
375
+ });
376
+ }), b("Accessibility", () => {
377
+ n("should be keyboard accessible", () => {
378
+ s(/* @__PURE__ */ l(a, { label: "Test" }));
379
+ const t = e.getByRole("button");
380
+ t.focus(), o(t).toHaveFocus();
381
+ }), n("should have proper button role", () => {
382
+ s(/* @__PURE__ */ l(a, { label: "Test" })), o(e.getByRole("button")).toBeInTheDocument();
383
+ }), n("should have proper link role when href is provided", () => {
384
+ s(/* @__PURE__ */ l(a, { href: "/page", label: "Test" })), o(e.getByRole("link")).toBeInTheDocument();
385
+ }), n("should support aria attributes", () => {
386
+ s(/* @__PURE__ */ l(a, { "aria-pressed": "true", label: "Toggle" }));
387
+ const t = e.getByRole("button");
388
+ o(t).toHaveAttribute("aria-pressed", "true");
389
+ });
390
+ }), b("Integration Tests", () => {
391
+ n("should render complete primary button", () => {
392
+ const t = u.fn();
393
+ s(
394
+ /* @__PURE__ */ l(
395
+ a,
396
+ {
397
+ classname: "primary-action",
398
+ label: "Save Changes",
399
+ onClick: t,
400
+ size: "large",
401
+ type: "submit",
402
+ varient: "primary"
403
+ }
404
+ )
405
+ );
406
+ const r = e.getByRole("button");
407
+ o(r).toHaveAttribute("type", "submit"), o(r).toHaveClass("primary-action", "btn"), o(r.className).toContain("btn--primary"), o(r.className).toContain("btn--large"), o(e.getByText("Save Changes")).toBeInTheDocument();
408
+ }), n("should render complete styled link button", () => {
409
+ s(
410
+ /* @__PURE__ */ l(
411
+ a,
412
+ {
413
+ classname: "nav-link",
414
+ customColors: {
415
+ bgColor: "#007bff",
416
+ color: "#ffffff",
417
+ bgHoverColor: "#0056b3"
418
+ },
419
+ href: "/dashboard",
420
+ label: "Go to Dashboard",
421
+ size: "medium",
422
+ varient: "primary"
423
+ }
424
+ )
425
+ );
426
+ const t = e.getByRole("link");
427
+ o(t).toHaveAttribute("href", "/dashboard"), o(t).toHaveClass("nav-link", "btn"), o(t.className).toContain("btn--primary"), o(t.className).toContain("btn--medium"), o(t).toHaveStyle({
428
+ "--button-bg-color": "#007bff",
429
+ "--button-color": "#ffffff",
430
+ "--button-hover-bg-color": "#0056b3"
431
+ });
432
+ });
433
+ });
434
+ });
@@ -4,8 +4,8 @@ import { chunkArray as X, classes as A } from "../../utils/helpers.js";
4
4
  import Y from "./CarouselUtils.class.js";
5
5
  import { CarouselSlide as Z } from "../CarouselSlide/CarouselSlide.js";
6
6
  import { c as a } from "../../Carousel.module-CNJzZW2-.mjs";
7
- import { C as ee } from "../../chevron-left-DRvpaLmK.mjs";
8
- import { C as re } from "../../chevron-right-C8yCnmfx.mjs";
7
+ import { C as ee } from "../../chevron-left-D0UjbrKw.mjs";
8
+ import { C as re } from "../../chevron-right-0ZF3LruR.mjs";
9
9
  const _ = window.matchMedia("(width <= 600px)"), P = window.matchMedia("(width <= 800px"), b = window.matchMedia("(width <= 1024px"), z = window.matchMedia("(width <= 1280px");
10
10
  function ue({
11
11
  id: E,