Skip to content
# Nav **Also known as:** Tree, TreeView ## Description A navigation pane (Nav) provides links to the main areas of an app or site, and can also be used as a TreeView to show parent-child data in a tree. It renders a hierarchy of any depth, keeps its selection in sync with the current URL (matched exactly, by prefix, by wildcard or by regular expression) or leaves it to the app in the manual mode, and expands one branch at a time or all of them at once. The items can be grouped under expandable headers, reduced to a rail of icons, separated by rules, and rendered through templates, and the whole tree is reachable from the keyboard with the arrow keys, Home, End and type-ahead. ## Parameters | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | Accent | `BitColor?` | null | The accent color of the nav. | | AllExpanded | `bool` | false | Expands all items when they are first rendered. Items that arrive later are expanded as they arrive, while the items already on screen keep whatever the user has expanded or collapsed in the meantime. | | ChevronDownIcon | `BitIconInfo?` | null | The icon for the chevron-down element of each nav item. Takes precedence over ChevronDownIconName when both are set. | | ChevronDownIconName | `string?` | null | The custom icon name of the chevron-down element of each nav item. | | ChildContent | `RenderFragment?` | null | Items to render as children. | | Classes | `BitNavClassStyles?` | null | Custom CSS classes for different parts of the BitNav component. | | CollapseAriaLabel | `string?` | null | The default aria-label of the expand/collapse button of an expanded item. The CollapseAriaLabel of the item takes precedence over this value, and when neither is provided the text of the item is used. | | Color | `BitColor?` | null | The general color of the nav that is only used for colored parts like icons. | | DefaultSelectedItem | `TItem?` | null | The initially selected item in manual mode. | | ExpandAriaLabel | `string?` | null | The default aria-label of the expand/collapse button of a collapsed item. The ExpandAriaLabel of the item takes precedence over this value, and when neither is provided the text of the item is used. | | FitWidth | `bool` | false | Renders the nav in a width to only fit its content. | | FullWidth | `bool` | false | Renders the nav in full width of its container element. | | HeaderTemplate | `RenderFragment<TItem>?` | null | Used to customize how content inside the group header is rendered. | | HeaderTemplateRenderMode | `BitNavItemTemplateRenderMode` | BitNavItemTemplateRenderMode.Normal | The render mode of the custom HeaderTemplate. | | IconOnly | `bool` | false | Only renders the icon of each nav item. | | IndentPadding | `int` | 27 | The indentation padding in px for items without children (compensation space for chevron icon). | | IndentReversedPadding | `int` | 4 | The indentation padding in px for items in reversed mode. | | IndentValue | `int` | 16 | The indentation value in px for each level of depth of child item. | | Items | `IList<TItem>` | new List<TItem>() | A collection of items to display in the BitNav component. | | ItemTemplate | `RenderFragment<TItem>?` | null | Used to customize how content inside the item is rendered. | | ItemTemplateRenderMode | `BitNavItemTemplateRenderMode` | BitNavItemTemplateRenderMode.Normal | The render mode of the custom ItemTemplate. | | Match | `BitNavMatch?` | null | Gets or sets a value representing the global URL matching behavior of the nav. The Match of an item takes precedence over this value, and when neither is provided the URL of an item has to match the current one exactly. | | Mode | `BitNavMode` | BitNavMode.Automatic | Determines how the navigation will be handled. | | NameSelectors | `BitNavNameSelectors<TItem>?` | null | Names and selectors of the custom input type properties. | | NoCollapse | `bool` | false | Hides all collapse/expand buttons and remove their spaces at the start of each node. | | OnItemClick | `EventCallback<TItem>` | | Callback invoked when an item is clicked. | | OnItemToggle | `EventCallback<TItem>` | | Callback invoked when an item is expanded or collapsed. | | OnSelectItem | `EventCallback<TItem>` | | Callback invoked when an item is selected. | | Options | `RenderFragment?` | null | Alias of ChildContent. | | RenderType | `BitNavRenderType` | BitNavRenderType.Normal | The way to render nav items. | | Reselectable | `bool` | false | Enables recalling the select events when the same item is selected. | | ReversedChevron | `bool` | false | Reverses the location of the expander chevron. | | SelectedItem | `TItem?` | null | Selected item to show in the BitNav. | | Size | `BitSize?` | null | The size of the nav items. | | SingleExpand | `bool` | false | Enables the single-expand mode in the BitNav. | | Styles | `BitNavClassStyles?` | null | Custom CSS styles for different parts of the BitNav component. | | AriaLabel | `string?` | null | Gets or sets the accessible label for the component, used by assistive technologies. | | Class | `string?` | null | Gets or sets the CSS class name(s) to apply to the rendered element. | | Dir | `BitDir?` | null | Gets or sets the text directionality for the component's content. | | ForceAnimation | `bool` | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. | | HtmlAttributes | `Dictionary<string, object>` | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. | | Id | `string?` | null | Gets or sets the unique identifier for the component's root element. | | IsEnabled | `bool` | true | Gets or sets a value indicating whether the component is enabled and can respond to user interaction. | | Style | `string?` | null | Gets or sets the CSS style string to apply to the rendered element. | | TabIndex | `string?` | null | Gets or sets the tab order index for the component when navigating with the keyboard. | | Visibility | `BitVisibility` | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. | ## Public Members | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | CollapseAll | `Action<TItem? item>` | | Collapses all items and children. | | CollapseItem | `Func<TItem, Task>` | | Collapses an item, and does nothing when it is already collapsed. | | ExpandAll | `Action<TItem? item>` | | Expands all items and children in non-SingleExpand mode. | | ExpandItem | `Func<TItem, Task>` | | Expands an item, and does nothing when it is already expanded. | | FocusItem | `Func<TItem, ValueTask>` | | Moves the focus to an item of the nav, opening the branches it is nested in when it is not rendered yet. | | IsItemExpanded | `Func<TItem, bool>` | | Whether an item is currently expanded. | | SelectItem | `Func<TItem?, Task>` | | Selects an item programmatically, exactly like a click on that item would in the manual mode. | | ToggleItem | `Func<TItem, Task>` | | Toggles an item. | | UniqueId | `Guid` | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. | | RootElement | `ElementReference` | | Gets the reference to the root HTML element associated with this component. | ## Enums ### BitColor Enum | Name | Value | Description | | :--- | :--- | :---------- | | Primary | 0 | Info Primary general color. | | Secondary | 1 | Secondary general color. | | Tertiary | 2 | Tertiary general color. | | Info | 3 | Info general color. | | Success | 4 | Success general color. | | Warning | 5 | Warning general color. | | SevereWarning | 6 | SevereWarning general color. | | Error | 7 | Error general color. | | PrimaryBackground | 8 | Primary background color. | | SecondaryBackground | 9 | Secondary background color. | | TertiaryBackground | 10 | Tertiary background color. | | PrimaryForeground | 11 | Primary foreground color. | | SecondaryForeground | 12 | Secondary foreground color. | | TertiaryForeground | 13 | Tertiary foreground color. | | PrimaryBorder | 14 | Primary border color. | | SecondaryBorder | 15 | Secondary border color. | | TertiaryBorder | 16 | Tertiary border color. | ### BitNavMatch Enum | Name | Value | Description | | :--- | :--- | :---------- | | Exact | 0 | Specifies that the nav item should be active when it matches exactly the current URL. | | Prefix | 1 | Specifies that the nav item should be active when it matches any prefix of the current URL. | | Regex | 2 | Specifies that the nav item should be active when its provided regex matches the current URL. | | Wildcard | 3 | Specifies that the nav item should be active when its provided wildcard matches the current URL. | ### BitNavMode Enum | Name | Value | Description | | :--- | :--- | :---------- | | Automatic | 0 | The value of selected key will change using NavigationManager and the current url inside the component. | | Manual | 1 | Selected key changes will be sent back to the parent component and the component won't change its value. | ### BitNavRenderType Enum | Name | Value | Description | | :--- | :--- | :---------- | | Normal | 0 | All items will be rendered normally only based on their own properties. | | Grouped | 1 | Root elements are rendered in a specific way that resembles a grouped list of items. | ### BitNavAriaCurrent Enum | Name | Value | Description | | :--- | :--- | :---------- | | Page | 0 | | | Step | 1 | | | Location | 2 | | | Date | 3 | | | Time | 4 | | | True | 5 | | ### BitNavItemTemplateRenderMode Enum | Name | Value | Description | | :--- | :--- | :---------- | | Normal | 0 | Renders the template inside the button/anchor root element of the item. | | Replace | 1 | Replaces the button/anchor root element of the item. | ### BitSize Enum | Name | Value | Description | | :--- | :--- | :---------- | | Small | 0 | The small size. | | Medium | 1 | The medium size. | | Large | 2 | The large size. | ### BitVisibility Enum | Name | Value | Description | | :--- | :--- | :---------- | | Visible | 0 | The content of the component is visible. | | Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). | | Collapsed | 2 | The component is hidden (display:none). | ### BitDir Enum | Name | Value | Description | | :--- | :--- | :---------- | | Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). | | Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). | | Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. | ## Sub Classes ### BitNavItem Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | AriaCurrent | `BitNavAriaCurrent` | BitNavAriaCurrent.Page | Aria-current token for active nav item. Must be a valid token value, and defaults to 'page'. | | AriaLabel | `string?` | null | Aria label for nav item. Ignored if CollapseAriaLabel or ExpandAriaLabel is provided. | | Class | `string?` | null | Custom CSS class for the nav item. | | ChildItems | `List<BitNavItem>` | [] | A list of items to render as children of the current nav item. | | CollapseAriaLabel | `string?` | null | Aria label of the toggle button when the nav item is expanded and can be collapsed. | | Data | `object?` | null | The custom data for the nav item to provide additional state. | | Description | `string?` | null | The description for the nav item. | | ExpandAriaLabel | `string?` | null | Aria label of the toggle button when the nav item is collapsed and can be expanded. | | ForceAnchor | `bool` | false | Forces an anchor element render instead of button. | | Icon | `BitIconInfo?` | null | The icon to render next to the nav item. Takes precedence over IconName when both are set. | | IconName | `string?` | null | Name of an icon to render next to the nav item. | | IsEnabled | `bool` | true | Whether or not the nav item is enabled. | | IsExpanded | `bool` | false | Whether or not the nav item is in an expanded state. | | IsSeparator | `bool` | false | Indicates that the nav item should render as a separator. | | Key | `string?` | null | A unique value to use as a key or id of the nav item. | | Match | `BitNavMatch?` | null | Gets or sets a value representing the URL matching behavior of the nav item. | | Style | `string?` | null | Custom CSS style for the nav item. | | Target | `string?` | null | Link target, specifies how to open the nav item's link. | | Template | `RenderFragment<BitNavItem>?` | null | The custom template for the nav item to render. | | TemplateRenderMode | `BitNavItemTemplateRenderMode` | BitNavItemTemplateRenderMode.Normal | The render mode of the nav item's custom template. | | Text | `string` | string.Empty | Text to render for the nav item. | | Title | `string?` | null | Text for the tooltip of the nav item. | | Url | `string?` | null | The nav item's link URL. | | AdditionalUrls | `IEnumerable<string>?` | null | Alternative URLs to be considered when auto mode tries to detect the selected nav item by the current URL. | ### BitNavOption Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | AriaCurrent | `BitNavAriaCurrent` | BitNavAriaCurrent.Page | Aria-current token for active nav option. Must be a valid token value, and defaults to 'page'. | | AriaLabel | `string?` | null | Aria label for nav option. Ignored if CollapseAriaLabel or ExpandAriaLabel is provided. | | Class | `string?` | null | Custom CSS class for the nav option. | | ChildContent | `RenderFragment?` | null | A list of options to render as children of the current nav option. | | CollapseAriaLabel | `string?` | null | Aria label of the toggle button when the nav option is expanded and can be collapsed. | | Data | `object?` | null | The custom data for the nav option to provide additional state. | | Description | `string?` | null | The description for the nav option. | | ExpandAriaLabel | `string?` | null | Aria label of the toggle button when the nav option is collapsed and can be expanded. | | ForceAnchor | `bool` | false | Forces an anchor element render instead of button. | | Icon | `BitIconInfo?` | null | The icon to render next to the nav option. Takes precedence over IconName when both are set. | | IconName | `string?` | null | Name of an icon to render next to the nav option. | | IsEnabled | `bool` | true | Whether or not the nav option is enabled. | | IsExpanded | `bool` | false | Whether or not the nav option is in an expanded state. | | IsSeparator | `bool` | false | Indicates that the nav option should render as a separator. | | Key | `string?` | null | A unique value to use as a key or id of the nav option. | | Match | `BitNavMatch?` | null | Gets or sets a value representing the URL matching behavior of the nav option. | | Style | `string?` | null | Custom CSS style for the nav option. | | Target | `string?` | null | Link target, specifies how to open the nav option's link. | | Template | `RenderFragment<BitNavOption>?` | null | The custom template for the nav option to render. | | TemplateRenderMode | `BitNavItemTemplateRenderMode` | BitNavItemTemplateRenderMode.Normal | The render mode of the nav option's custom template. | | Text | `string` | string.Empty | Text to render for the nav option. | | Title | `string?` | null | Text for the tooltip of the nav option. | | Url | `string?` | null | The nav option's link URL. | | AdditionalUrls | `IEnumerable<string>?` | null | Alternative URLs to be considered when auto mode tries to detect the selected nav option by the current URL. | ### BitNavNameSelectors<TItem> Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | AriaCurrent | `BitNameSelectorPair<TItem, BitNavAriaCurrent?>` | new(nameof(BitNavItem.AriaCurrent)) | The AriaCurrent field name and selector of the custom input class. | | AriaLabel | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.AriaLabel)) | The AriaLabel field name and selector of the custom input class. | | Class | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Class)) | The Class field name and selector of the custom input class. | | ChildItems | `BitNameSelectorPair<TItem, List<TItem>?>` | new(nameof(BitNavItem.ChildItems)) | The ChildItems field name and selector of the custom input class. | | CollapseAriaLabel | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.CollapseAriaLabel)) | The CollapseAriaLabel field name and selector of the custom input class. | | Data | `BitNameSelectorPair<TItem, object?>` | new(nameof(BitNavItem.Data)) | The Data field name and selector of the custom input class. | | Description | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Description)) | The Description field name and selector of the custom input class. | | ExpandAriaLabel | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.ExpandAriaLabel)) | The ExpandAriaLabel field name and selector of the custom input class. | | ForceAnchor | `BitNameSelectorPair<TItem, bool?>` | new(nameof(BitNavItem.ForceAnchor)) | The ForceAnchor field name and selector of the custom input class. | | Icon | `BitNameSelectorPair<TItem, BitIconInfo?>` | new(nameof(BitNavItem.Icon)) | The Icon field name and selector of the custom input class. | | IconName | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.IconName)) | The IconName field name and selector of the custom input class. | | IsEnabled | `BitNameSelectorPair<TItem, bool?>` | new(nameof(BitNavItem.IsEnabled)) | The IsEnabled field name and selector of the custom input class. | | IsExpanded | `BitNameSelectorPair<TItem, bool?>` | new(nameof(BitNavItem.IsExpanded)) | The IsExpanded field name and selector of the custom input class. | | IsSeparator | `BitNameSelectorPair<TItem, bool?>` | new(nameof(BitNavItem.IsSeparator)) | The IsSeparator field name and selector of the custom input class. | | Key | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Key)) | The Key field name and selector of the custom input class. | | Match | `BitNameSelectorPair<TItem, BitNavMatch?>` | new(nameof(BitNavItem.Match)) | The Match field name and selector of the custom input class. | | Style | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Style)) | The Style field name and selector of the custom input class. | | Target | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Target)) | The Target field name and selector of the custom input class. | | Template | `BitNameSelectorPair<TItem, RenderFragment<TItem>?>` | new(nameof(BitNavItem.Template)) | The Template field name and selector of the custom input class. | | TemplateRenderMode | `BitNameSelectorPair<TItem, BitNavItemTemplateRenderMode?>` | new(nameof(BitNavItem.TemplateRenderMode)) | The TemplateRenderMode field name and selector of the custom input class. | | Text | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Text)) | The Text field name and selector of the custom input class. | | Title | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Title)) | The Title field name and selector of the custom input class. | | Url | `BitNameSelectorPair<TItem, string?>` | new(nameof(BitNavItem.Url)) | The Url field name and selector of the custom input class. | | AdditionalUrls | `BitNameSelectorPair<TItem, IEnumerable<string>?>` | new(nameof(BitNavItem.AdditionalUrls)) | The AdditionalUrls field name and selector of the custom input class. | ### BitNavClassStyles Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | Root | `string?` | null | Custom CSS classes/styles for the root element of the BitNav. | | Description | `string?` | null | Custom CSS classes/styles for the description of the BitNav. | | Header | `string?` | null | Custom CSS classes/styles for the group header button of the BitNav in the Grouped render type. | | HeaderText | `string?` | null | Custom CSS classes/styles for the text of the group header of the BitNav in the Grouped render type. | | Item | `string?` | null | Custom CSS classes/styles for the item of the BitNav. | | SelectedItem | `string?` | null | Custom CSS classes/styles for the selected item of the BitNav. | | ItemContainer | `string?` | null | Custom CSS classes/styles for the item container of the BitNav. | | ItemIcon | `string?` | null | Custom CSS classes/styles for the item icon of the BitNav. | | ItemText | `string?` | null | Custom CSS classes/styles for the item text of the BitNav. | | SelectedItemContainer | `string?` | null | Custom CSS classes/styles for the selected item container of the BitNav. | | ToggleButton | `string?` | null | Custom CSS classes/styles for the toggle button of the BitNav. | | ToggleIcon | `string?` | null | Custom CSS classes/styles for the chevron icon inside the toggle button of the BitNav. | | Separator | `string?` | null | Custom CSS classes/styles for the separator of the BitNav. | ### BitIconInfo Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | Name | `string?` | null | Gets or sets the name of the icon. | | BaseClass | `string?` | null | Gets or sets the base CSS class for the icon. For built-in Fluent UI icons, this defaults to "bit-icon". For external icon libraries like FontAwesome, you might set this to "fa" or leave empty. | | Prefix | `string?` | null | Gets or sets the CSS class prefix used before the icon name. For built-in Fluent UI icons, this defaults to "bit-icon--". For external icon libraries, you might set this to "fa-" or leave empty. | ## Examples
\n**Basic**: ```razor ``` ```csharp private static readonly List basicNavItems = [ new() { Text = "bit platform", Description = "the bit platform description", ChildItems = [ new() { Text = "Home", IconName = BitIconName.Home, Url = "https://bitplatform.dev/" }, new() { Text = "Products & Services", ChildItems = [ new() { Text = "Project Templates", ChildItems = [ new() { Text = "Todo sample", IconName = BitIconName.ToDoLogoOutline, Url = "https://bitplatform.dev/templates/overview" }, new() { Text = "AdminPanel sample", IconName = BitIconName.LocalAdmin, Url = "https://bitplatform.dev/templates/overview" }, ] }, new() { Text = "BlazorUI", IconName = BitIconName.F12DevTools, Url = "https://bitplatform.dev/components" }, new() { Text = "Cloud hosting solutions", IconName = BitIconName.Cloud, Url = "https://bitplatform.dev/#", IsEnabled = false }, new() { Text = "Bit academy", IconName = BitIconName.LearningTools, Url = "https://bitplatform.dev/#", IsEnabled = false }, ] }, new() { Text = "Pricing", IconName = BitIconName.Money, Url = "https://bitplatform.dev/pricing" }, new() { Text = "About", IconName = BitIconName.Info, Url = "https://bitplatform.dev/about-us" }, new() { Text = "Contact us", IconName = BitIconName.Contact, Url = "https://bitplatform.dev/contact-us" }, ], }, new() { Text = "Community", ChildItems = [ new() { Text = "LinkedIn", IconName = BitIconName.LinkedInLogo, Url = "https://www.linkedin.com/company/bitplatformhq" }, new() { Text = "Twitter", IconName = BitIconName.Globe, Url = "https://twitter.com/bitplatformhq" }, new() { Text = "GitHub repo", IconName = BitIconName.GitGraph, Url = "https://github.com/bitfoundation/bitplatform" }, ] }, new() { Text = "Iconography", IconName = BitIconName.AppIconDefault, Url = "/iconography" }, ]; ``` \n**Grouped**: ```razor ``` ```csharp private static readonly List carNavItems = [ new() { Text = "Mercedes-Benz", ExpandAriaLabel = "Mercedes-Benz Expanded", CollapseAriaLabel = "Mercedes-Benz Collapsed", Title = "Mercedes-Benz Car Models", IsExpanded = true, Description = "Cars manufactured under the brand of Mercedes-Benz", ChildItems = [ new() { Text = "SUVs", ChildItems = [ new() { Text = "GLA", Url = "https://www.mbusa.com/en/vehicles/class/gla/suv", Target = "_blank" }, new() { Text = "GLB", Url = "https://www.mbusa.com/en/vehicles/class/glb/suv", Target = "_blank" }, new() { Text = "GLC", Url = "https://www.mbusa.com/en/vehicles/class/glc/suv", Target = "_blank" }, ] }, new() { Text = "Sedans & Wagons", ChildItems = [ new() { Text = "A Class", Url = "https://www.mbusa.com/en/vehicles/class/a-class/sedan", Target = "_blank" }, new() { Text = "C Class", Url = "https://www.mbusa.com/en/vehicles/class/c-class/sedan", Target = "_blank" }, new() { Text = "E Class", Url = "https://www.mbusa.com/en/vehicles/class/e-class/sedan", Target = "_blank" }, ] }, new() { Text = "Coupes", ChildItems = [ new() { Text = "CLA Coupe", Url = "https://www.mbusa.com/en/vehicles/class/cla/coupe", Target = "_blank" }, new() { Text = "C Class Coupe", Url = "https://www.mbusa.com/en/vehicles/class/c-class/coupe", Target = "_blank" }, new() { Text = "E Class Coupe", Url = "https://www.mbusa.com/en/vehicles/class/e-class/coupe", Target = "_blank" }, ] }, ] }, new() { Text = "Tesla", ExpandAriaLabel = "Tesla Expanded", CollapseAriaLabel = "Tesla Collapsed", Title = "Tesla Car Models", ChildItems = [ new() { Text = "Model S", Url = "https://www.tesla.com/models", Target = "_blank" }, new() { Text = "Model X", Url = "https://www.tesla.com/modelx", Target = "_blank" }, new() { Text = "Model Y", Url = "https://www.tesla.com/modely", Target = "_blank" }, ] }, ]; ``` \n**Separator**: ```razor ``` ```csharp private static readonly List separatorNavItems = [ new() { Text = "Home", IconName = BitIconName.Home, Url = "https://bitplatform.dev/" }, new() { Text = "Pricing", IconName = BitIconName.Money, Url = "https://bitplatform.dev/pricing" }, new() { IsSeparator = true }, new() { Text = "LinkedIn", IconName = BitIconName.LinkedInLogo, Url = "https://www.linkedin.com/company/bitplatformhq" }, new() { Text = "GitHub repo", IconName = BitIconName.GitGraph, Url = "https://github.com/bitfoundation/bitplatform" }, new() { IsSeparator = true }, new() { Text = "Contact us", IconName = BitIconName.Contact, Url = "https://bitplatform.dev/contact-us" }, ]; ``` \n**Manual Mode**: ```razor ``` ```csharp private static readonly List foodNavItems = [ new() { Text = "Fast foods", IconName = BitIconName.HeartBroken, IsExpanded = true, Description = "List of fast foods", ChildItems = [ new() { Text = "Burgers", Description = "List of burgers", ChildItems = [ new() { Text = "Beef Burger" }, new() { Text = "Veggie Burger" }, new() { Text = "Bison Burger" }, new() { Text = "Wild Salmon Burger" }, ] }, new() { Text = "Pizza", ChildItems = [ new() { Text = "Cheese Pizza" }, new() { Text = "Veggie Pizza" }, new() { Text = "Pepperoni Pizza" }, new() { Text = "Meat Pizza" }, ] }, new() { Text = "French Fries" }, ] }, new() { Text = "Fruits", IconName = BitIconName.Health, ChildItems = [ new() { Text = "Apple" }, new() { Text = "Orange" }, new() { Text = "Banana" }, ] }, new() { Text = "Ice Cream" }, new() { Text = "Cookie" }, ]; private static List Flatten(IList e) => e.SelectMany(c => Flatten(c.ChildItems)).Concat(e).ToList(); private BitNavItem SelectedItemNav = foodNavItems[0].ChildItems[2]; private string? SelectedItemText = foodNavItems[0].ChildItems[2].Text; private static readonly List> FoodMenuDropdownItems = [ new() { Text = "Beef Burger", Value = "Beef Burger" }, new() { Text = "Veggie Burger", Value = "Veggie Burger" }, new() { Text = "Bison Burger", Value = "Bison Burger" }, new() { Text = "Wild Salmon Burger", Value = "Wild Salmon Burger" }, new() { Text = "Cheese Pizza", Value = "Cheese Pizza" }, new() { Text = "Veggie Pizza", Value = "Veggie Pizza" }, new() { Text = "Pepperoni Pizza", Value = "Pepperoni Pizza" }, new() { Text = "Meat Pizza", Value = "Meat Pizza" }, new() { Text = "French Fries", Value = "French Fries" }, new() { Text = "Apple", Value = "Apple" }, new() { Text = "Orange", Value = "Orange" }, new() { Text = "Banana", Value = "Banana" }, new() { Text = "Ice Cream", Value = "Ice Cream" }, new() { Text = "Cookie", Value = "Cookie" }, ]; ``` \n**SingleExpand**: ```razor ``` ```csharp private static readonly List singleExpandNavItems = [ new() { Text = "Fast foods", IconName = BitIconName.HeartBroken, ChildItems = [ new() { Text = "Burgers", ChildItems = [new() { Text = "Beef Burger" }, new() { Text = "Veggie Burger" }] }, new() { Text = "Pizza", ChildItems = [new() { Text = "Cheese Pizza" }, new() { Text = "Meat Pizza" }] }, new() { Text = "French Fries" }, ] }, new() { Text = "Fruits", IconName = BitIconName.Health, ChildItems = [new() { Text = "Apple" }, new() { Text = "Orange" }, new() { Text = "Banana" }] }, new() { Text = "Drinks", IconName = BitIconName.Coffee, ChildItems = [new() { Text = "Water" }, new() { Text = "Tea" }] }, ]; ``` \n**Custom Templates**: ```razor ``` ```csharp private static readonly List colorNavItems = [ new() { Text = "Home", IconName = BitIconName.Home }, new() { Text = "Products", IconName = BitIconName.Product }, new() { Text = "Settings", IconName = BitIconName.Settings }, ]; ``` \n**Events**: ```razor
Clicked Item: @ClickedItem?.Text
Selected Item: @SelectedItem?.Text
Toggled Item: @(ToggledItem is null ? "N/A" : $"{ToggledItem.Text} ({(ToggledItem.IsExpanded ? "Expanded" : "Collapsed")})")
``` ```csharp private BitNavItem ClickedItem = default!; private BitNavItem SelectedItem = default!; private BitNavItem ToggledItem = default!; ``` \n**External Icons**: ```razor ``` ```csharp private static readonly List externalIconNavItems = [ new() { Text = "bit platform", Description = "Nav with external icons (FontAwesome)", ChildItems = [ new() { Text = "Home", Icon = BitIconInfo.Css("fa-solid fa-house"), Url = "https://bitplatform.dev/" }, new() { Text = "Products & Services", ChildItems = [ new() { Text = "BlazorUI", Icon = BitIconInfo.Fa("solid code"), Url = "https://bitplatform.dev/components" }, new() { Text = "Pricing", Icon = BitIconInfo.Css("fa-solid fa-tag"), Url = "https://bitplatform.dev/pricing" }, ] }, new() { Text = "About", Icon = BitIconInfo.Fa("solid circle-info"), Url = "https://bitplatform.dev/about-us" }, new() { Text = "Contact us", Icon = BitIconInfo.Css("fa-solid fa-envelope"), Url = "https://bitplatform.dev/contact-us" }, ], }, new() { Text = "Iconography", Icon = BitIconInfo.Css("fa-solid fa-icons"), Url = "/iconography" }, ]; private static readonly BitIconInfo bootstrapChevronIcon = BitIconInfo.Bi("chevron-right"); private static readonly List bootstrapIconNavItems = [ new() { Text = "bit platform", Description = "Nav with external icons (Bootstrap Icons)", ChildItems = [ new() { Text = "Home", Icon = BitIconInfo.Bi("house-fill"), Url = "https://bitplatform.dev/" }, new() { Text = "BlazorUI", Icon = BitIconInfo.Bi("code-slash"), Url = "https://bitplatform.dev/components" }, new() { Text = "Pricing", Icon = BitIconInfo.Bi("tag-fill"), Url = "https://bitplatform.dev/pricing" }, ], }, new() { Text = "Iconography", Icon = BitIconInfo.Bi("emoji-smile"), Url = "/iconography" }, ]; ``` \n**Style & Class**: ```razor ``` ```csharp private static readonly List styleClassNavItems = [ new() { Text = "Home", IconName = BitIconName.Home, Style = "background: rgba(255,99,71,0.2);" }, new() { Text = "Products", IconName = BitIconName.Product, Class = "custom-item-list" }, new() { Text = "Settings", IconName = BitIconName.Settings }, ]; private static readonly List customStyleNavItems = [ new() { Text = "bit platform", Description = "the bit platform description", ChildItems = [ new() { Text = "Home", IconName = BitIconName.Home, Url = "https://bitplatform.dev/" }, new() { Text = "BlazorUI", IconName = BitIconName.F12DevTools, Url = "https://bitplatform.dev/components" }, ], }, new() { Text = "Iconography", IconName = BitIconName.AppIconDefault, Url = "/iconography" }, new() { IsSeparator = true }, new() { Text = "Contact us", IconName = BitIconName.Contact, Url = "https://bitplatform.dev/contact-us" }, ]; private static readonly List customClassNavItems = [ new() { Text = "bit platform", IconName = BitIconName.Website, Description = "the bit platform description", ChildItems = [ new() { Text = "Home", IconName = BitIconName.Home, Url = "https://bitplatform.dev/" }, new() { Text = "BlazorUI", IconName = BitIconName.F12DevTools, Url = "https://bitplatform.dev/components" }, ], }, new() { Text = "Community", IconName = BitIconName.Group, ChildItems = [new() { Text = "GitHub repo", IconName = BitIconName.GitGraph, Url = "https://github.com/bitfoundation/bitplatform" }] }, ]; ``` \n**RTL**: ```razor
``` ```csharp private static readonly List rtlNavItems = [ new() { Text = "پلتفرمِ بیت", Description = "توضیحاتِ پلتفرمِ بیت", ChildItems = [ new() { Text = "خانه", IconName = BitIconName.Home, Url = "https://bitplatform.dev/" }, new() { Text = "محصولات و خدمات", ChildItems = [ new() { Text = "قالب های پروژه", ChildItems = [ new() { Text = "نمونه ی Todo", IconName = BitIconName.ToDoLogoOutline, Url = "https://bitplatform.dev/templates/overview" }, new() { Text = "نمونه ی AdminPanel", IconName = BitIconName.LocalAdmin, Url = "https://bitplatform.dev/templates/overview" }, ] }, new() { Text = "رابط کاربری Blazor", IconName = BitIconName.F12DevTools, Url = "https://blazorui-ai.bitplatform.dev/" }, new() { Text = "راه های هاست ابری", IconName = BitIconName.Cloud, Url = "https://bitplatform.dev/#", IsEnabled = false }, new() { Text = "آکادمی بیت", IconName = BitIconName.LearningTools, Url = "https://bitplatform.dev/#", IsEnabled = false }, ] }, new() { Text = "قیمت", IconName = BitIconName.Money, Url = "https://bitplatform.dev/pricing" }, new() { Text = "درباره ما", IconName = BitIconName.Info, Url = "https://bitplatform.dev/about-us" }, new() { Text = "ارتباط با ما", IconName = BitIconName.Contact, Url = "https://bitplatform.dev/contact-us" }, ], }, new() { Text = "انجمن ها", ChildItems = [ new() { Text = "لینکدین", IconName = BitIconName.LinkedInLogo, Url = "https://www.linkedin.com/company/bitplatformhq" }, new() { Text = "توییتر", IconName = BitIconName.Globe, Url = "https://twitter.com/bitplatformhq" }, new() { Text = "گیتهاب", IconName = BitIconName.GitGraph, Url = "https://github.com/bitfoundation/bitplatform" }, ] }, new() { Text = "شمایل نگاری", IconName = BitIconName.AppIconDefault, Url = "/iconography" }, ]; ```