11import type { Meta } from '@storybook/react-vite'
22import type React from 'react'
3- import { useState } from 'react'
43import type { ComponentProps } from '../utils/types'
54import Breadcrumbs from './Breadcrumbs'
65import TextInput from '../TextInput'
7- import { FeatureFlags } from '../FeatureFlags'
86
97export default {
108 title : 'Components/Breadcrumbs/Features' ,
@@ -25,23 +23,7 @@ export const OverflowWrap = () => (
2523 </ Breadcrumbs >
2624)
2725
28- export const OverflowMenuFeatureFlagEnabled = ( ) => (
29- < FeatureFlags flags = { { primer_react_breadcrumbs_overflow_menu : true } } >
30- < Breadcrumbs overflow = "menu" >
31- < Breadcrumbs . Item href = "#" > Home</ Breadcrumbs . Item >
32- < Breadcrumbs . Item href = "#" > Products</ Breadcrumbs . Item >
33- < Breadcrumbs . Item href = "#" > Category</ Breadcrumbs . Item >
34- < Breadcrumbs . Item href = "#" > Subcategory</ Breadcrumbs . Item >
35- < Breadcrumbs . Item href = "#" > Item</ Breadcrumbs . Item >
36- < Breadcrumbs . Item href = "#" > Details</ Breadcrumbs . Item >
37- < Breadcrumbs . Item href = "#" selected >
38- Current Page
39- </ Breadcrumbs . Item >
40- </ Breadcrumbs >
41- </ FeatureFlags >
42- )
43-
44- export const OverflowMenuFeatureFlagDisabled = ( ) => (
26+ export const OverflowMenu = ( ) => (
4527 < Breadcrumbs overflow = "menu" >
4628 < Breadcrumbs . Item href = "#" > Home</ Breadcrumbs . Item >
4729 < Breadcrumbs . Item href = "#" > Products</ Breadcrumbs . Item >
@@ -55,7 +37,7 @@ export const OverflowMenuFeatureFlagDisabled = () => (
5537 </ Breadcrumbs >
5638)
5739
58- export const OverflowMenuShowRootFeatureFlagDisabled = ( ) => (
40+ export const OverflowMenuShowRoot = ( ) => (
5941 < Breadcrumbs overflow = "menu-with-root" >
6042 < Breadcrumbs . Item href = "#" > github</ Breadcrumbs . Item >
6143 < Breadcrumbs . Item href = "#" > Teams</ Breadcrumbs . Item >
@@ -68,137 +50,20 @@ export const OverflowMenuShowRootFeatureFlagDisabled = () => (
6850 </ Breadcrumbs >
6951)
7052
71- export const OverflowMenuShowRootFeatureFlagEnabled = ( ) => (
72- < FeatureFlags flags = { { primer_react_breadcrumbs_overflow_menu : true } } >
73- < Breadcrumbs overflow = "menu-with-root" >
74- < Breadcrumbs . Item href = "#" > github</ Breadcrumbs . Item >
75- < Breadcrumbs . Item href = "#" > Teams</ Breadcrumbs . Item >
76- < Breadcrumbs . Item href = "#" > Engineering</ Breadcrumbs . Item >
77- < Breadcrumbs . Item href = "#" > core-productivity</ Breadcrumbs . Item >
78- < Breadcrumbs . Item href = "#" > collaboration-workflows-flex</ Breadcrumbs . Item >
79- < Breadcrumbs . Item href = "#" selected >
80- global-navigation-reviewers
81- </ Breadcrumbs . Item >
82- </ Breadcrumbs >
83- </ FeatureFlags >
84- )
85-
86- export const WithEditableNameInput = ( ) => (
87- < Breadcrumbs >
53+ export const SpaciousVariantWithOverflowMenu = ( ) => (
54+ < Breadcrumbs overflow = "menu" variant = "spacious" >
8855 < Breadcrumbs . Item href = "#" > Home</ Breadcrumbs . Item >
89- < Breadcrumbs . Item href = "#" > Documents</ Breadcrumbs . Item >
90- < Breadcrumbs . Item href = "#" > Project Alpha</ Breadcrumbs . Item >
91- < Breadcrumbs . Item >
92- < TextInput
93- defaultValue = "Untitled Document"
94- size = "small"
95- sx = { {
96- minWidth : '120px' ,
97- maxWidth : '180px' ,
98- fontSize : 'inherit' ,
99- border : '1px dashed var(--borderColor-muted)' ,
100- '&:focus' : {
101- border : '1px solid var(--borderColor-accent-emphasis)' ,
102- } ,
103- } }
104- aria-label = "Edit document name"
105- />
56+ < Breadcrumbs . Item href = "#" > Products</ Breadcrumbs . Item >
57+ < Breadcrumbs . Item href = "#" > Category</ Breadcrumbs . Item >
58+ < Breadcrumbs . Item href = "#" > Subcategory</ Breadcrumbs . Item >
59+ < Breadcrumbs . Item href = "#" > Item</ Breadcrumbs . Item >
60+ < Breadcrumbs . Item href = "#" > Details</ Breadcrumbs . Item >
61+ < Breadcrumbs . Item href = "#" selected >
62+ Current Page
10663 </ Breadcrumbs . Item >
10764 </ Breadcrumbs >
10865)
10966
110- export const DynamicChildren = ( ) => {
111- const [ items , setItems ] = useState ( [
112- { id : 1 , href : '#' , name : 'Home' } ,
113- { id : 2 , href : '#' , name : 'Docs' } ,
114- { id : 3 , href : '#' , name : 'Components' } ,
115- ] )
116-
117- const addItem = ( ) => {
118- const newId = Math . max ( ...items . map ( item => item . id ) ) + 1
119- const names = [ 'Advanced' , 'Examples' , 'Guides' , 'API' , 'Tutorials' , 'Reference' ]
120- const randomName = names [ Math . floor ( Math . random ( ) * names . length ) ]
121- setItems ( [ ...items , { id : newId , href : '#' , name : `${ randomName } -${ newId } ` } ] )
122- }
123-
124- const removeItem = ( ) => {
125- if ( items . length > 1 ) {
126- setItems ( items . slice ( 0 , - 1 ) )
127- }
128- }
129-
130- const addMultipleItems = ( ) => {
131- const newItems = [
132- { id : Date . now ( ) + 1 , href : '#' , name : 'Category' } ,
133- { id : Date . now ( ) + 2 , href : '#' , name : 'Subcategory' } ,
134- { id : Date . now ( ) + 3 , href : '#' , name : 'Item' } ,
135- { id : Date . now ( ) + 4 , href : '#' , name : 'Details' } ,
136- { id : Date . now ( ) + 5 , href : '#' , name : 'Specifications' } ,
137- ]
138- setItems ( [ ...items , ...newItems ] )
139- }
140-
141- const reset = ( ) => {
142- setItems ( [
143- { id : 1 , href : '#' , name : 'Home' } ,
144- { id : 2 , href : '#' , name : 'Docs' } ,
145- { id : 3 , href : '#' , name : 'Components' } ,
146- ] )
147- }
148-
149- return (
150- < div style = { { display : 'flex' , flexDirection : 'column' , gap : '16px' } } >
151- < div style = { { display : 'flex' , gap : '8px' , marginBottom : '16px' } } >
152- < button type = "button" onClick = { addItem } style = { { padding : '4px 8px' } } >
153- Add Item
154- </ button >
155- < button type = "button" onClick = { removeItem } style = { { padding : '4px 8px' } } >
156- Remove Item
157- </ button >
158- < button type = "button" onClick = { addMultipleItems } style = { { padding : '4px 8px' } } >
159- Add Many Items
160- </ button >
161- < button type = "button" onClick = { reset } style = { { padding : '4px 8px' } } >
162- Reset
163- </ button >
164- </ div >
165-
166- < div >
167- < h4 id = "dynamic-breadcrumbs-heading" style = { { margin : '0 0 8px 0' } } >
168- Dynamic breadcrumbs
169- </ h4 >
170- < Breadcrumbs overflow = "menu-with-root" >
171- { items . map ( ( item , index ) => (
172- < Breadcrumbs . Item key = { item . id } href = { item . href } selected = { index === items . length - 1 } >
173- { item . name }
174- </ Breadcrumbs . Item >
175- ) ) }
176- </ Breadcrumbs >
177- </ div >
178-
179- < div style = { { marginTop : '16px' , fontSize : '12px' } } >
180- Current items: { items . length } | Try adding/removing items to see how overflow behavior changes
181- </ div >
182- </ div >
183- )
184- }
185-
186- export const SpaciousVariantWithOverflowMenu = ( ) => (
187- < FeatureFlags flags = { { primer_react_breadcrumbs_overflow_menu : true } } >
188- < Breadcrumbs overflow = "menu" variant = "spacious" >
189- < Breadcrumbs . Item href = "#" > Home</ Breadcrumbs . Item >
190- < Breadcrumbs . Item href = "#" > Products</ Breadcrumbs . Item >
191- < Breadcrumbs . Item href = "#" > Category</ Breadcrumbs . Item >
192- < Breadcrumbs . Item href = "#" > Subcategory</ Breadcrumbs . Item >
193- < Breadcrumbs . Item href = "#" > Item</ Breadcrumbs . Item >
194- < Breadcrumbs . Item href = "#" > Details</ Breadcrumbs . Item >
195- < Breadcrumbs . Item href = "#" selected >
196- Current Page
197- </ Breadcrumbs . Item >
198- </ Breadcrumbs >
199- </ FeatureFlags >
200- )
201-
20267export const SpaciousVariantWithOverflowWrap = ( ) => (
20368 < Breadcrumbs variant = "spacious" >
20469 < Breadcrumbs . Item href = "#" > Home</ Breadcrumbs . Item >
0 commit comments