1
- import type { Meta , StoryObj } from "@storybook/react" ;
1
+ import type { Meta , StoryFn , StoryObj } from "@storybook/react" ;
2
2
import * as React from "react" ;
3
3
4
4
import { StyleSheet } from "aphrodite" ;
@@ -168,6 +168,19 @@ const columns = [
168
168
169
169
type Story = StoryObj < typeof NavigationTabs > ;
170
170
171
+ const createPseudoStatesDecorator = ( state : string ) => ( Story : StoryFn ) => {
172
+ React . useEffect ( ( ) => {
173
+ // Apply classes directly after a short delay
174
+ const timer = setTimeout ( ( ) => {
175
+ document ?. querySelectorAll ( "a" ) . forEach ( ( a ) => {
176
+ a . classList . add ( `pseudo-${ state } ` ) ;
177
+ } ) ;
178
+ } , 200 ) ;
179
+ return ( ) => clearTimeout ( timer ) ;
180
+ } , [ ] ) ;
181
+ return < Story /> ;
182
+ } ;
183
+
171
184
/**
172
185
* The following stories are used to generate the pseudo states for the Switch
173
186
* component. This is only used for visual testing in Chromatic.
@@ -212,39 +225,45 @@ export const Default: Story = {};
212
225
213
226
export const Hover : Story = {
214
227
parameters : {
215
- pseudo : { hover : true } ,
228
+ // pseudo: {hover: true},
216
229
chromatic : {
217
230
// TODO(WB-1917): Temporarily disabled since snapshots with
218
231
// NavigationTabs and pseudo states are flaky. We still get state
219
232
// style coverage in NavigationTabItem AllVariants stories
220
233
// disableSnapshot: true,
221
234
} ,
222
235
} ,
236
+ decorators : [ createPseudoStatesDecorator ( "hover" ) ] ,
223
237
} ;
224
238
225
239
export const Focus : Story = {
226
240
parameters : {
227
- pseudo : { focusVisible : true } ,
241
+ // pseudo: {focusVisible: true},
228
242
chromatic : {
229
243
// TODO(WB-1917): Temporarily disabled since snapshots with
230
244
// NavigationTabs and pseudo states are flaky. We still get state
231
245
// style coverage in NavigationTabItem AllVariants stories
232
246
// disableSnapshot: true,
233
247
} ,
234
248
} ,
249
+ decorators : [ createPseudoStatesDecorator ( "focus-visible" ) ] ,
235
250
} ;
236
251
237
252
export const HoverFocus : Story = {
238
253
name : "Hover + Focus" ,
239
254
parameters : {
240
- pseudo : { hover : true , focusVisible : true } ,
255
+ // pseudo: {hover: true, focusVisible: true},
241
256
chromatic : {
242
257
// TODO(WB-1917): Temporarily disabled since snapshots with
243
258
// NavigationTabs and pseudo states are flaky. We still get state
244
259
// style coverage in NavigationTabItem AllVariants stories
245
260
// disableSnapshot: true,
246
261
} ,
247
262
} ,
263
+ decorators : [
264
+ createPseudoStatesDecorator ( "hover" ) ,
265
+ createPseudoStatesDecorator ( "focus-visible" ) ,
266
+ ] ,
248
267
} ;
249
268
250
269
export const Active : Story = {
@@ -257,6 +276,7 @@ export const Active: Story = {
257
276
// disableSnapshot: true,
258
277
} ,
259
278
} ,
279
+ decorators : [ createPseudoStatesDecorator ( "active" ) ] ,
260
280
} ;
261
281
262
282
export const Zoom : Story = {
0 commit comments