blixify-ui-web-mcp 0.1.1 → 0.1.3

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 (28) hide show
  1. package/lib/components/chart/ganttChart/README.md +96 -110
  2. package/lib/components/chart/ganttChart/ganttChart.stories.tsx +132 -116
  3. package/lib/components/chart/heatmapChart/README.md +93 -82
  4. package/lib/components/chart/heatmapChart/heatmapChart.stories.tsx +118 -74
  5. package/lib/components/chat/chatAnchor/README.md +61 -79
  6. package/lib/components/chat/chatBase/README.md +166 -199
  7. package/lib/components/chat/chatBase/chatBase.stories.tsx +243 -265
  8. package/lib/components/chat/chatDashboard/README.md +87 -129
  9. package/lib/components/chat/chatDashboard/chatDashboard.stories.tsx +84 -107
  10. package/lib/components/data/dataGraph/README.md +135 -1
  11. package/lib/components/data/dataGraph/dataGraph.stories.tsx +86 -67
  12. package/lib/components/data/dataReference/README.md +141 -43
  13. package/lib/components/data/dataReference/dataReference.stories.tsx +107 -35
  14. package/lib/components/data/dataWrapper/README.md +2 -1
  15. package/lib/components/display/table/README.md +1 -1
  16. package/lib/components/navigation/bars/README.md +90 -17
  17. package/lib/components/navigation/bars/bars.stories.tsx +125 -51
  18. package/lib/components/navigation/breadcrumb/README.md +40 -20
  19. package/lib/components/navigation/breadcrumb/breadcrumb.stories.tsx +30 -4
  20. package/lib/components/navigation/header/README.md +67 -108
  21. package/lib/components/navigation/header/header.stories.tsx +143 -39
  22. package/lib/components/navigation/leftNav/README.md +121 -66
  23. package/lib/components/navigation/leftNav/leftNav.stories.tsx +176 -83
  24. package/lib/components/navigation/tabs/tabs.stories.tsx +53 -29
  25. package/lib/mcp/server.d.ts +1 -0
  26. package/lib/mcp/server.js +1 -0
  27. package/lib/mcp/server.js.map +1 -1
  28. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
 
5
5
  <hr>
6
6
 
7
- Multiple bars selection for navigation
7
+ A flexible navigation bar component that supports vertical and horizontal layouts, grouped collapsible items, drag-to-reorder, custom colors, and dark mode.
8
8
 
9
9
  ##### Import
10
10
 
@@ -14,27 +14,100 @@ import { Bars } from "blixify-ui-web/components/navigation/bars";
14
14
 
15
15
  ##### Usage
16
16
 
17
+ Basic vertical nav:
18
+
19
+ ```jsx
20
+ <Bars
21
+ bars={navigation}
22
+ selectedId="reports"
23
+ primaryColor={true}
24
+ onClick={(id) => setSelectedId(id)}
25
+ />
26
+ ```
27
+
28
+ Horizontal nav bar:
29
+
30
+ ```jsx
31
+ <Bars
32
+ bars={navigation}
33
+ selectedId={selectedId}
34
+ primaryColor={true}
35
+ horizontal={true}
36
+ onClick={(id) => setSelectedId(id)}
37
+ />
38
+ ```
39
+
40
+ Grouped items (collapsible via Disclosure):
41
+
42
+ ```jsx
43
+ const navigation = [
44
+ { id: "dashboard", name: "Dashboard", href: "#", icon: HomeIcon },
45
+ {
46
+ id: "projects",
47
+ name: "Projects",
48
+ href: "#",
49
+ icon: FolderIcon,
50
+ groupId: "Activity",
51
+ },
52
+ {
53
+ id: "calendar",
54
+ name: "Calendar",
55
+ href: "#",
56
+ icon: CalendarIcon,
57
+ groupId: "Activity",
58
+ },
59
+ ];
60
+
61
+ <Bars
62
+ bars={navigation}
63
+ selectedId={selectedId}
64
+ onClick={(id) => setSelectedId(id)}
65
+ />;
66
+ ```
67
+
68
+ Draggable with reorder callbacks:
69
+
17
70
  ```jsx
18
- <Bars bars={navigation} selectedId={"reports"} />
71
+ <Bars
72
+ bars={navigation}
73
+ selectedId={selectedId}
74
+ draggable={true}
75
+ onClick={(id) => setSelectedId(id)}
76
+ handleChangeBars={(value) => setNavigation(value)}
77
+ handleDropEnd={() => {}}
78
+ />
19
79
  ```
20
80
 
21
81
  ##### Required props
22
82
 
23
- | Name | Type | Description |
24
- | ------------ | ------------ | --------------- |
25
- | `bars` | `Bars Class` | Bar Class List |
26
- | `selectedId` | `string` | Selected Tab ID |
83
+ | Name | Type | Description |
84
+ | ------------ | -------- | ------------------------------------------------ |
85
+ | `bars` | `Bar[]` | Ordered list of navigation items — see Bar below |
86
+ | `selectedId` | `string` | The `id` of the currently active item |
27
87
 
28
88
  ##### Optional props
29
89
 
30
- | Name | Type | Default | Description |
31
- | ------------------ | ------------------ | ---------------------------------------------- | -------------------------------------------- |
32
- | `primaryColor` | `boolean` | `false` | |
33
- | `draggable` | `boolean` | `false` | Make component items draggable |
34
- | `collapse` | `boolean` | `false` | Required when leftNav transition is not null |
35
- | `customColor` | `string` | `""` | Rainbow color for bar |
36
- | `linkProps` | `Link Props Class` | Refer to Link Component for more documentation | |
37
- | `onClick` | `function` | `() => {}` | |
38
- | `handleChangeBars` | `function` | `(value) => {setBars(value)}` | Required when draggable is true |
39
- | `handleDropEnd` | `function` | `() => {}` | Required when draggable is true |
40
- | `horizontal` | `boolean` | `false` | When `true`, display horizontal bar |
90
+ | Name | Type | Default | Description |
91
+ | ------------------ | ---------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------- |
92
+ | `onClick` | `(id: string) => void` | — | When provided, items render as clickable divs instead of links. Called with the item's `id`. |
93
+ | `primaryColor` | `boolean` | `false` | Highlights the selected item and hover state with the primary brand color. |
94
+ | `customColor` | `"red" \| "orange" \| "yellow" \| "green" \| "blue" \| "indigo" \| "violet"` | — | Overrides the highlight color for selected and hovered items. Takes precedence over `primaryColor`. |
95
+ | `horizontal` | `boolean` | `false` | Lays items out in a row instead of a column. Useful for top navigation bars. |
96
+ | `darkMode` | `boolean` | `false` | Switches item text to white for use on dark backgrounds. |
97
+ | `draggable` | `boolean` | `false` | Makes items reorderable via drag-and-drop. Requires `handleChangeBars` and `handleDropEnd`. |
98
+ | `handleChangeBars` | `(value: Bar[]) => void` | — | Called with the updated bars array after each drag move. Required when `draggable` is `true`. |
99
+ | `handleDropEnd` | `() => void` | — | Called when a drag interaction ends. Required when `draggable` is `true`. |
100
+ | `collapse` | `boolean` | `false` | Hides item labels and shows only icons. Used when the parent `LeftNav` is in collapsed state. |
101
+ | `linkType` | `"react" \| "gatsby" \| "next" \| "external" \| "default"` | — | Router adapter for link rendering when `onClick` is not provided. |
102
+ | `custom` | `any` | — | The custom link component to use when `linkType` is `"react"`, `"gatsby"`, or `"next"`. |
103
+
104
+ ##### Bar
105
+
106
+ | Name | Type | Description |
107
+ | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------- |
108
+ | `id` | `string` | Unique identifier for the item |
109
+ | `name` | `string` | Display label |
110
+ | `href` | `string` | URL used when `onClick` is not provided |
111
+ | `icon` | `any` | Heroicon or any SVG component rendered to the left of the label |
112
+ | `groupId` | `string` | Optional — items sharing the same `groupId` are nested under a collapsible Disclosure group with that label |
113
+ | `additionalIcon` | `ReactElement` | Optional — extra icon/element rendered to the right of the item label |
@@ -9,6 +9,7 @@ import {
9
9
  import { storiesOf } from "@storybook/react";
10
10
  import React, { useState } from "react";
11
11
  import { Bars } from ".";
12
+ import { StorySection } from "../../storyUtils";
12
13
  import README from "./README.md";
13
14
 
14
15
  const stories = storiesOf("Navigation", module);
@@ -19,67 +20,140 @@ stories.addParameters({
19
20
  },
20
21
  });
21
22
 
23
+ const baseNavigation = [
24
+ { id: "dashboard", name: "Dashboard", href: "#", icon: HomeIcon },
25
+ { id: "team", name: "Team", href: "#", icon: UsersIcon },
26
+ { id: "documents", name: "Documents", href: "#", icon: InboxIcon },
27
+ { id: "reports", name: "Reports", href: "#", icon: ChartBarIcon },
28
+ ];
29
+
30
+ const groupedNavigation = [
31
+ { id: "dashboard", name: "Dashboard", href: "#", icon: HomeIcon },
32
+ { id: "team", name: "Team", href: "#", icon: UsersIcon },
33
+ {
34
+ id: "projects",
35
+ name: "Projects",
36
+ href: "#",
37
+ icon: FolderIcon,
38
+ groupId: "Activity",
39
+ },
40
+ {
41
+ id: "calendar",
42
+ name: "Calendar",
43
+ href: "#",
44
+ icon: CalendarIcon,
45
+ groupId: "Activity",
46
+ },
47
+ { id: "documents", name: "Documents", href: "#", icon: InboxIcon },
48
+ { id: "reports", name: "Reports", href: "#", icon: ChartBarIcon },
49
+ ];
50
+
22
51
  stories.add("Bars", () => {
23
52
  const [selectedId, setSelectedId] = useState("reports");
24
- const [navigation, setNavigation] = useState([
25
- {
26
- id: "dashboard",
27
- name: "Dashboard",
28
- href: "#",
29
- icon: HomeIcon,
30
- },
31
- { id: "team", name: "Team", href: "#", icon: UsersIcon, current: false },
32
- {
33
- id: "projects",
34
- name: "Projects",
35
- href: "#",
36
- icon: FolderIcon,
37
- groupId: "Activity",
38
- },
39
- {
40
- id: "calendar",
41
- name: "Calendar",
42
- href: "#",
43
- icon: CalendarIcon,
44
- groupId: "Activity",
45
- },
46
- {
47
- id: "documents",
48
- name: "Documents",
49
- href: "#",
50
- icon: InboxIcon,
51
- },
52
- {
53
- id: "reports",
54
- name: "Reports",
55
- href: "#",
56
- icon: ChartBarIcon,
57
- },
58
- ]);
53
+ const [draggableBars, setDraggableBars] = useState(baseNavigation);
59
54
 
60
55
  return (
61
56
  <>
62
- <Bars
63
- bars={navigation}
64
- selectedId={"reports"}
65
- primaryColor={true}
66
- horizontal={false}
67
- />
68
- <div className="bg-gray-900">
57
+ <StorySection
58
+ title="Default (Vertical)"
59
+ description="Basic vertical nav bar. Each item renders as a link using its href. primaryColor highlights the selected item with the primary brand color."
60
+ >
61
+ <div className="w-64">
62
+ <Bars
63
+ bars={baseNavigation}
64
+ selectedId="reports"
65
+ primaryColor={true}
66
+ />
67
+ </div>
68
+ </StorySection>
69
+
70
+ <StorySection
71
+ title="With onClick"
72
+ description="Pass onClick to handle selection programmatically instead of using href links. selectedId controls which item is highlighted."
73
+ >
74
+ <div className="w-64">
75
+ <Bars
76
+ bars={baseNavigation}
77
+ selectedId={selectedId}
78
+ primaryColor={true}
79
+ onClick={(id) => setSelectedId(id)}
80
+ />
81
+ </div>
82
+ </StorySection>
83
+
84
+ <StorySection
85
+ title="Grouped Items"
86
+ description="Items sharing the same groupId are nested under a collapsible Disclosure group labelled with that groupId string."
87
+ >
88
+ <div className="w-64">
89
+ <Bars
90
+ bars={groupedNavigation}
91
+ selectedId={selectedId}
92
+ primaryColor={true}
93
+ onClick={(id) => setSelectedId(id)}
94
+ />
95
+ </div>
96
+ </StorySection>
97
+
98
+ <StorySection
99
+ title="Draggable"
100
+ description="Set draggable=true and provide handleChangeBars to persist the new order. handleDropEnd fires when the drag interaction ends."
101
+ >
102
+ <div className="w-64">
103
+ <Bars
104
+ bars={draggableBars}
105
+ selectedId={selectedId}
106
+ primaryColor={true}
107
+ draggable={true}
108
+ onClick={(id) => setSelectedId(id)}
109
+ handleChangeBars={setDraggableBars}
110
+ handleDropEnd={() => {}}
111
+ />
112
+ </div>
113
+ </StorySection>
114
+
115
+ <StorySection
116
+ title="Horizontal"
117
+ description="horizontal=true lays items out in a row. Useful for top navigation bars."
118
+ >
69
119
  <Bars
70
- draggable={true}
71
- bars={navigation}
120
+ bars={baseNavigation}
72
121
  selectedId={selectedId}
73
122
  primaryColor={true}
74
- darkMode={true}
75
- onClick={(id) => {
76
- setSelectedId(id);
77
- }}
78
- handleChangeBars={setNavigation}
79
- handleDropEnd={() => {}}
80
123
  horizontal={true}
124
+ onClick={(id) => setSelectedId(id)}
81
125
  />
82
- </div>
126
+ </StorySection>
127
+
128
+ <StorySection
129
+ title="Custom Color"
130
+ description="customColor overrides the selected/hover highlight with a named color: red, orange, yellow, green, blue, indigo, or violet."
131
+ >
132
+ <div className="w-64">
133
+ <Bars
134
+ bars={baseNavigation}
135
+ selectedId={selectedId}
136
+ customColor="indigo"
137
+ onClick={(id) => setSelectedId(id)}
138
+ />
139
+ </div>
140
+ </StorySection>
141
+
142
+ <StorySection
143
+ title="Dark Mode"
144
+ description="Pass darkMode=true for use on dark backgrounds."
145
+ dark
146
+ >
147
+ <div className="w-64">
148
+ <Bars
149
+ bars={baseNavigation}
150
+ selectedId={selectedId}
151
+ primaryColor={true}
152
+ darkMode={true}
153
+ onClick={(id) => setSelectedId(id)}
154
+ />
155
+ </div>
156
+ </StorySection>
83
157
  </>
84
158
  );
85
159
  });
@@ -4,7 +4,7 @@
4
4
 
5
5
  <hr>
6
6
 
7
- Breadcrumb for selected item navigation
7
+ A breadcrumb trail for hierarchical navigation. Renders a home icon followed by a chevron-separated list of pages. Non-current pages are links; the current page is plain text.
8
8
 
9
9
  ##### Import
10
10
 
@@ -14,35 +14,55 @@ import { Breadcrumb } from "blixify-ui-web/components/navigation/breadcrumb";
14
14
 
15
15
  ##### Usage
16
16
 
17
+ Link-based navigation:
18
+
17
19
  ```jsx
18
20
  const pages = [
19
- { name: "Projects", href: "#", current: false },
20
- { name: "Project Nero", href: "#", current: true },
21
+ { name: "Projects", href: "/projects", current: false },
22
+ { name: "Project Nero", href: "/projects/nero", current: true },
21
23
  ];
22
24
 
23
- stories.add("Breadcrumb", () => {
24
- return <Breadcrumb pages={pages} />;
25
- });
25
+ <Breadcrumb pages={pages} />;
26
+ ```
27
+
28
+ Programmatic navigation with onClick:
29
+
30
+ ```jsx
31
+ <Breadcrumb
32
+ pages={pages}
33
+ onClick={(name) => {
34
+ // name is the page.name of the clicked item
35
+ router.push(name);
36
+ }}
37
+ />
38
+ ```
39
+
40
+ Dark mode:
41
+
42
+ ```jsx
43
+ <Breadcrumb pages={pages} darkMode={true} />
26
44
  ```
27
45
 
28
46
  ##### Required props
29
47
 
30
- | Name | Type | Description |
31
- | ------- | ----------------- | --------------- |
32
- | `pages` | `Page Class List` | Page Class List |
48
+ | Name | Type | Description |
49
+ | ------- | -------- | ---------------------------------- |
50
+ | `pages` | `Page[]` | Ordered list of pages in the trail |
33
51
 
34
52
  ##### Optional props
35
53
 
36
- | Name | Type | Default | Description |
37
- | ----------- | ---------------- | ---------- | ----------- |
38
- | `className` | `tailwind class` | "" | |
39
- | `onClick` | `function` | `() => {}` | |
54
+ | Name | Type | Default | Description |
55
+ | ----------- | ---------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------- |
56
+ | `onClick` | `(name: string) => void` | — | When provided, non-current pages render as clickable divs instead of links. Called with the page's `name`. |
57
+ | `darkMode` | `boolean` | `false` | Switches the home icon and current-page text to white for use on dark backgrounds. |
58
+ | `className` | `string` | — | Tailwind classes applied to the outer `<nav>` element. |
59
+ | `linkType` | `"react" \| "gatsby" \| "next" \| "external" \| "default"` | — | Router adapter for link rendering. Pass alongside `custom` when using React Router, Gatsby, or Next.js. |
60
+ | `custom` | `any` | — | The custom link component to use when `linkType` is `"react"`, `"gatsby"`, or `"next"`. |
40
61
 
41
- ##### Page Class props
62
+ ##### Page
42
63
 
43
- | Name | Type | Default | Description |
44
- | ----------- | ------------------ | ---------------------------------------------- | ----------------------- |
45
- | `name` | `string` | "" | |
46
- | `href` | `string` | "" | |
47
- | `current` | `boolean` | false | Whether page is current |
48
- | `linkProps` | `Link Props Class` | Refer to Link Component for more documentation | |
64
+ | Name | Type | Description |
65
+ | --------- | --------- | ------------------------------------------------------------------------- |
66
+ | `name` | `string` | Display label for the breadcrumb item |
67
+ | `href` | `string` | URL for the link. Used when `onClick` is not provided. |
68
+ | `current` | `boolean` | Marks this item as the current page — rendered as plain text, not a link. |
@@ -1,7 +1,9 @@
1
1
  import { storiesOf } from "@storybook/react";
2
- import React from "react";
2
+ import React, { useState } from "react";
3
3
  import { Breadcrumb } from ".";
4
+ import { StorySection } from "../../storyUtils";
4
5
  import README from "./README.md";
6
+
5
7
  const stories = storiesOf("Navigation", module);
6
8
 
7
9
  stories.addParameters({
@@ -16,12 +18,36 @@ const pages = [
16
18
  ];
17
19
 
18
20
  stories.add("Breadcrumb", () => {
21
+ const [selected, setSelected] = useState("");
22
+
19
23
  return (
20
24
  <>
21
- <Breadcrumb pages={pages} />
22
- <div className="bg-gray-900 py-2">
25
+ <StorySection
26
+ title="Default"
27
+ description="Each non-current page renders as a link using its href. The current page is rendered as plain text."
28
+ >
29
+ <Breadcrumb pages={pages} />
30
+ </StorySection>
31
+
32
+ <StorySection
33
+ title="With onClick"
34
+ description="Pass onClick to handle navigation programmatically. The page name is passed as the argument. Useful for SPAs where you manage routing yourself."
35
+ >
36
+ <div className="flex flex-col items-center gap-2">
37
+ <Breadcrumb pages={pages} onClick={(name) => setSelected(name)} />
38
+ {selected && (
39
+ <p className="text-sm text-gray-500">Clicked: {selected}</p>
40
+ )}
41
+ </div>
42
+ </StorySection>
43
+
44
+ <StorySection
45
+ title="Dark Mode"
46
+ description="Pass darkMode=true for use on dark backgrounds."
47
+ dark
48
+ >
23
49
  <Breadcrumb pages={pages} darkMode={true} />
24
- </div>
50
+ </StorySection>
25
51
  </>
26
52
  );
27
53
  });