@usefragments/ui 1.1.1 → 1.3.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 (148) hide show
  1. package/dist/assets/ui.css +327 -274
  2. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  3. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  4. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  5. package/dist/components/Chip/Chip.module.scss.js +15 -15
  6. package/dist/components/Combobox/index.cjs +106 -9
  7. package/dist/components/Combobox/index.d.ts.map +1 -1
  8. package/dist/components/Combobox/index.js +106 -9
  9. package/dist/components/DataTable/DataTable.module.scss.cjs +37 -34
  10. package/dist/components/DataTable/DataTable.module.scss.js +37 -34
  11. package/dist/components/DataTable/index.d.ts.map +1 -1
  12. package/dist/components/Main/Main.module.scss.cjs +26 -0
  13. package/dist/components/Main/Main.module.scss.js +26 -0
  14. package/dist/components/Main/index.cjs +128 -0
  15. package/dist/components/Main/index.d.ts +22 -0
  16. package/dist/components/Main/index.d.ts.map +1 -0
  17. package/dist/components/Main/index.js +111 -0
  18. package/dist/components/Table/Table.module.scss.cjs +19 -19
  19. package/dist/components/Table/Table.module.scss.js +19 -19
  20. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  21. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  22. package/dist/components/TableOfContents/index.cjs +22 -42
  23. package/dist/components/TableOfContents/index.d.ts +3 -3
  24. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  25. package/dist/components/TableOfContents/index.js +22 -42
  26. package/dist/{components/DataTable/DataTable.virtual.cjs → data-table-virtual.cjs} +1 -1
  27. package/dist/{components/DataTable/DataTable.virtual.js → data-table-virtual.js} +1 -1
  28. package/dist/data-table.cjs +27 -9
  29. package/dist/data-table.js +19 -1
  30. package/dist/index.cjs +87 -88
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -3
  34. package/fragments.json +1 -1
  35. package/package.json +57 -2
  36. package/src/components/Checkbox/Checkbox.contract.json +5 -24
  37. package/src/components/Checkbox/Checkbox.module.scss +4 -2
  38. package/src/components/Chip/Chip.contract.json +11 -28
  39. package/src/components/Chip/Chip.module.scss +21 -45
  40. package/src/components/Combobox/Combobox.contract.json +6 -24
  41. package/src/components/Combobox/index.tsx +132 -6
  42. package/src/components/DataTable/DataTable.module.scss +31 -8
  43. package/src/components/DataTable/index.tsx +44 -16
  44. package/src/components/Main/Main.contract.json +79 -0
  45. package/src/components/Main/Main.module.scss +31 -0
  46. package/src/components/Main/index.tsx +124 -0
  47. package/src/components/Table/Table.module.scss +22 -5
  48. package/src/components/TableOfContents/TableOfContents.contract.json +6 -16
  49. package/src/components/TableOfContents/TableOfContents.module.scss +10 -13
  50. package/src/components/TableOfContents/index.tsx +27 -38
  51. package/src/index.ts +11 -9
  52. package/src/styles/styles.d.ts +8 -0
  53. package/src/tokens/_component-properties.scss +1 -0
  54. package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts +0 -33
  55. package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts.map +0 -1
  56. package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts +0 -11
  57. package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts.map +0 -1
  58. package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts +0 -5
  59. package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts.map +0 -1
  60. package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts +0 -4
  61. package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts.map +0 -1
  62. package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts +0 -3
  63. package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts.map +0 -1
  64. package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts +0 -86
  65. package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts.map +0 -1
  66. package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts +0 -2
  67. package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts.map +0 -1
  68. package/src/components/Accordion/Accordion.stories.tsx +0 -106
  69. package/src/components/Alert/Alert.stories.tsx +0 -119
  70. package/src/components/AppShell/AppShell.stories.tsx +0 -156
  71. package/src/components/Avatar/Avatar.stories.tsx +0 -74
  72. package/src/components/Badge/Badge.stories.tsx +0 -92
  73. package/src/components/BentoGrid/BentoGrid.stories.tsx +0 -98
  74. package/src/components/Box/Box.stories.tsx +0 -150
  75. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -87
  76. package/src/components/Button/Button.stories.tsx +0 -103
  77. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -97
  78. package/src/components/Card/Card.stories.tsx +0 -144
  79. package/src/components/Chart/Chart.stories.tsx +0 -119
  80. package/src/components/Checkbox/Checkbox.stories.tsx +0 -68
  81. package/src/components/Chip/Chip.stories.tsx +0 -70
  82. package/src/components/Cloud/CloudGovernanceShell.module.scss +0 -88
  83. package/src/components/Cloud/CloudGovernanceShell.stories.tsx +0 -446
  84. package/src/components/Cloud/ControlSizing.module.scss +0 -49
  85. package/src/components/Cloud/ControlSizing.stories.tsx +0 -238
  86. package/src/components/Cloud/DashboardLayoutPrototypes.module.scss +0 -462
  87. package/src/components/Cloud/DashboardLayoutPrototypes.shared.tsx +0 -375
  88. package/src/components/Cloud/DashboardLayoutPrototypes.shell.tsx +0 -147
  89. package/src/components/Cloud/DashboardLayoutPrototypes.stories.tsx +0 -328
  90. package/src/components/Cloud/PullRequestsPrototypes.content.tsx +0 -283
  91. package/src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx +0 -381
  92. package/src/components/Cloud/PullRequestsPrototypes.detail.tsx +0 -204
  93. package/src/components/Cloud/PullRequestsPrototypes.id-data.ts +0 -395
  94. package/src/components/Cloud/PullRequestsPrototypes.id-page.tsx +0 -349
  95. package/src/components/Cloud/PullRequestsPrototypes.stories.tsx +0 -81
  96. package/src/components/CodeBlock/CodeBlock.stories.tsx +0 -147
  97. package/src/components/Collapsible/Collapsible.stories.tsx +0 -94
  98. package/src/components/ColorPicker/ColorPicker.stories.tsx +0 -74
  99. package/src/components/Combobox/Combobox.stories.tsx +0 -133
  100. package/src/components/Command/Command.stories.tsx +0 -102
  101. package/src/components/ConversationList/ConversationList.stories.tsx +0 -93
  102. package/src/components/DataTable/DataTable.stories.tsx +0 -129
  103. package/src/components/DatePicker/DatePicker.stories.tsx +0 -129
  104. package/src/components/Dialog/Dialog.stories.tsx +0 -154
  105. package/src/components/Drawer/Drawer.stories.tsx +0 -144
  106. package/src/components/Editor/Editor.stories.tsx +0 -99
  107. package/src/components/EmptyState/EmptyState.stories.tsx +0 -97
  108. package/src/components/Field/Field.stories.tsx +0 -109
  109. package/src/components/Fieldset/Fieldset.stories.tsx +0 -116
  110. package/src/components/Form/Form.stories.tsx +0 -142
  111. package/src/components/Grid/Grid.stories.tsx +0 -125
  112. package/src/components/Header/Header.stories.tsx +0 -133
  113. package/src/components/Icon/Icon.stories.tsx +0 -80
  114. package/src/components/IconButton/IconButton.stories.tsx +0 -78
  115. package/src/components/Image/Image.stories.tsx +0 -109
  116. package/src/components/Input/Input.stories.tsx +0 -104
  117. package/src/components/Link/Link.stories.tsx +0 -67
  118. package/src/components/List/List.stories.tsx +0 -95
  119. package/src/components/Listbox/Listbox.stories.tsx +0 -81
  120. package/src/components/Loading/Loading.stories.tsx +0 -69
  121. package/src/components/Markdown/Markdown.stories.tsx +0 -75
  122. package/src/components/Menu/Menu.stories.tsx +0 -113
  123. package/src/components/Message/Message.stories.tsx +0 -85
  124. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -161
  125. package/src/components/Pagination/Pagination.stories.tsx +0 -81
  126. package/src/components/Popover/Popover.stories.tsx +0 -152
  127. package/src/components/Progress/Progress.stories.tsx +0 -64
  128. package/src/components/Prompt/Prompt.stories.tsx +0 -93
  129. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -107
  130. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -97
  131. package/src/components/Select/Select.stories.tsx +0 -127
  132. package/src/components/Separator/Separator.stories.tsx +0 -84
  133. package/src/components/Sidebar/Sidebar.stories.tsx +0 -122
  134. package/src/components/Skeleton/Skeleton.stories.tsx +0 -80
  135. package/src/components/Slider/Slider.stories.tsx +0 -73
  136. package/src/components/Stack/Stack.stories.tsx +0 -73
  137. package/src/components/Switch/Switch.stories.tsx +0 -59
  138. package/src/components/Table/Table.stories.tsx +0 -219
  139. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -120
  140. package/src/components/Tabs/Tabs.stories.tsx +0 -136
  141. package/src/components/Text/Text.stories.tsx +0 -133
  142. package/src/components/Textarea/Textarea.stories.tsx +0 -107
  143. package/src/components/Theme/Theme.stories.tsx +0 -95
  144. package/src/components/ThinkingIndicator/ThinkingIndicator.stories.tsx +0 -85
  145. package/src/components/Toast/Toast.stories.tsx +0 -91
  146. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -114
  147. package/src/components/Tooltip/Tooltip.stories.tsx +0 -95
  148. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -78
@@ -1,156 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { AppShell } from ".";
3
- import { Header } from "../Header";
4
- import { Sidebar } from "../Sidebar";
5
-
6
- /**
7
- * AppShell is the full application layout wrapper integrating header, sidebar,
8
- * main content, and an optional aside panel. It is a compound component:
9
- * compose AppShell.Header, AppShell.Sidebar, AppShell.Main, and AppShell.Aside.
10
- */
11
- const meta = {
12
- title: "Layout/AppShell",
13
- component: AppShell,
14
- tags: ["autodocs"],
15
- parameters: {
16
- docs: {
17
- description: {
18
- component:
19
- "Full layout wrapper integrating sidebar, header, main content, and optional aside panel.",
20
- },
21
- },
22
- },
23
- argTypes: {
24
- layout: {
25
- control: "select",
26
- options: ["default", "sidebar", "sidebar-floating", "floating"],
27
- description: "Structural layout for CSS grid areas",
28
- },
29
- bg: {
30
- control: "text",
31
- description: "Background color override for the shell container",
32
- },
33
- },
34
- args: {
35
- layout: "default",
36
- children: (
37
- <>
38
- <AppShell.Header>
39
- <Header>
40
- <Header.Brand>MyApp</Header.Brand>
41
- </Header>
42
- </AppShell.Header>
43
- <AppShell.Sidebar width="200px">
44
- <Sidebar.Nav>
45
- <Sidebar.Section label="Menu">
46
- <Sidebar.Item active>Home</Sidebar.Item>
47
- </Sidebar.Section>
48
- </Sidebar.Nav>
49
- </AppShell.Sidebar>
50
- <AppShell.Main padding="md">Content</AppShell.Main>
51
- </>
52
- ),
53
- },
54
- } satisfies Meta<typeof AppShell>;
55
-
56
- export default meta;
57
-
58
- type Story = StoryObj<typeof meta>;
59
-
60
- export const DefaultLayout: Story = {
61
- render: () => (
62
- <div style={{ height: "360px", overflow: "hidden" }}>
63
- <AppShell layout="default">
64
- <AppShell.Header>
65
- <Header>
66
- <Header.Brand>MyApp</Header.Brand>
67
- </Header>
68
- </AppShell.Header>
69
- <AppShell.Sidebar width="200px" collapsible="offcanvas">
70
- <Sidebar.Nav>
71
- <Sidebar.Section label="Menu">
72
- <Sidebar.Item active>Home</Sidebar.Item>
73
- <Sidebar.Item>Analytics</Sidebar.Item>
74
- <Sidebar.Item>Settings</Sidebar.Item>
75
- </Sidebar.Section>
76
- </Sidebar.Nav>
77
- </AppShell.Sidebar>
78
- <AppShell.Main padding="md">Header spans full width. Logo is in the header.</AppShell.Main>
79
- </AppShell>
80
- </div>
81
- ),
82
- };
83
-
84
- export const SidebarLayout: Story = {
85
- render: () => (
86
- <div style={{ height: "360px", overflow: "hidden" }}>
87
- <AppShell layout="sidebar">
88
- <AppShell.Header>
89
- <Header>
90
- <Header.Trigger />
91
- </Header>
92
- </AppShell.Header>
93
- <AppShell.Sidebar width="200px" collapsible="offcanvas">
94
- <Sidebar.Header>MyApp</Sidebar.Header>
95
- <Sidebar.Nav>
96
- <Sidebar.Section label="Menu">
97
- <Sidebar.Item active>Home</Sidebar.Item>
98
- <Sidebar.Item>Analytics</Sidebar.Item>
99
- </Sidebar.Section>
100
- </Sidebar.Nav>
101
- </AppShell.Sidebar>
102
- <AppShell.Main padding="md">Sidebar is full height. Logo is in the sidebar.</AppShell.Main>
103
- </AppShell>
104
- </div>
105
- ),
106
- };
107
-
108
- export const WithAside: Story = {
109
- render: () => (
110
- <div style={{ height: "360px", overflow: "hidden" }}>
111
- <AppShell layout="default">
112
- <AppShell.Header>
113
- <Header>
114
- <Header.Brand>App</Header.Brand>
115
- </Header>
116
- </AppShell.Header>
117
- <AppShell.Sidebar width="180px" collapsible="offcanvas">
118
- <Sidebar.Nav>
119
- <Sidebar.Section>
120
- <Sidebar.Item active>Home</Sidebar.Item>
121
- </Sidebar.Section>
122
- </Sidebar.Nav>
123
- </AppShell.Sidebar>
124
- <AppShell.Main padding="md">Content with an aside panel on the right.</AppShell.Main>
125
- <AppShell.Aside width="180px">
126
- Additional context, filters, or quick actions.
127
- </AppShell.Aside>
128
- </AppShell>
129
- </div>
130
- ),
131
- };
132
-
133
- export const FloatingMain: Story = {
134
- render: () => (
135
- <div style={{ height: "360px", overflow: "hidden" }}>
136
- <AppShell layout="sidebar">
137
- <AppShell.Header>
138
- <Header>
139
- <Header.Trigger />
140
- </Header>
141
- </AppShell.Header>
142
- <AppShell.Sidebar width="200px" collapsible="offcanvas" variant="floating">
143
- <Sidebar.Header>MyApp</Sidebar.Header>
144
- <Sidebar.Nav>
145
- <Sidebar.Section label="Menu">
146
- <Sidebar.Item active>Home</Sidebar.Item>
147
- </Sidebar.Section>
148
- </Sidebar.Nav>
149
- </AppShell.Sidebar>
150
- <AppShell.Main padding="md" variant="floating">
151
- Main content has rounded corners and visual separation from the sidebar.
152
- </AppShell.Main>
153
- </AppShell>
154
- </div>
155
- ),
156
- };
@@ -1,74 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Avatar } from '.';
3
-
4
- /**
5
- * Avatar is the visual representation of a user or entity. It renders an image
6
- * when available and falls back to initials or a placeholder icon. Use
7
- * Avatar.Group to stack multiple avatars in a row.
8
- */
9
- const meta = {
10
- title: 'Display/Avatar',
11
- component: Avatar,
12
- tags: ['autodocs'],
13
- parameters: {
14
- docs: {
15
- description: { component: 'Visual representation of a user or entity.' },
16
- },
17
- },
18
- argTypes: {
19
- size: {
20
- control: 'select',
21
- options: ['xs', 'sm', 'md', 'lg', 'xl'],
22
- description: 'Size variant',
23
- },
24
- shape: {
25
- control: 'select',
26
- options: ['circle', 'square'],
27
- description: 'Shape variant',
28
- },
29
- src: { control: 'text', description: 'Image source URL' },
30
- name: { control: 'text', description: 'Full name - used to generate initials' },
31
- initials: { control: 'text', description: 'Fallback initials (1-2 characters)' },
32
- },
33
- args: {
34
- name: 'Jane Doe',
35
- size: 'md',
36
- shape: 'circle',
37
- },
38
- } satisfies Meta<typeof Avatar>;
39
-
40
- export default meta;
41
-
42
- type Story = StoryObj<typeof meta>;
43
-
44
- export const WithImage: Story = {
45
- args: {
46
- src: 'https://i.pravatar.cc/150?u=jane',
47
- alt: 'Jane Doe',
48
- name: 'Jane Doe',
49
- },
50
- };
51
-
52
- export const WithInitials: Story = {
53
- args: { name: 'John Smith' },
54
- };
55
-
56
- export const Large: Story = {
57
- args: { name: 'Conan McNicholl', size: 'xl' },
58
- };
59
-
60
- export const Square: Story = {
61
- args: { name: 'App', shape: 'square' },
62
- };
63
-
64
- export const Group: Story = {
65
- render: () => (
66
- <Avatar.Group max={3} size="md">
67
- <Avatar name="Alice Johnson" />
68
- <Avatar name="Bob Smith" />
69
- <Avatar name="Carol Williams" />
70
- <Avatar name="David Brown" />
71
- <Avatar name="Eve Davis" />
72
- </Avatar.Group>
73
- ),
74
- };
@@ -1,92 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { Badge } from ".";
3
-
4
- /**
5
- * Badge is a compact label for status, counts, or categorization. It draws
6
- * attention to metadata without dominating the layout and supports semantic
7
- * variants, an optional status dot, and a removable affordance.
8
- */
9
- const meta = {
10
- title: "Display/Badge",
11
- component: Badge,
12
- tags: ["autodocs"],
13
- parameters: {
14
- docs: {
15
- description: {
16
- component: "Compact label for status, counts, or categorization.",
17
- },
18
- },
19
- },
20
- argTypes: {
21
- variant: {
22
- control: "select",
23
- options: ["default", "success", "warning", "error", "info", "outline"],
24
- description: "Visual style indicating severity or category",
25
- },
26
- size: {
27
- control: "select",
28
- options: ["sm", "md", "lg"],
29
- description: "Badge size",
30
- },
31
- dot: {
32
- control: "boolean",
33
- description: "Show a colored dot indicator before the label",
34
- },
35
- announce: {
36
- control: "boolean",
37
- description: 'Opt into role="status" live announcement semantics',
38
- },
39
- },
40
- args: {
41
- variant: "default",
42
- size: "md",
43
- children: "Default",
44
- },
45
- } satisfies Meta<typeof Badge>;
46
-
47
- export default meta;
48
-
49
- type Story = StoryObj<typeof meta>;
50
-
51
- export const Default: Story = {
52
- args: { variant: "default", children: "Default" },
53
- };
54
-
55
- export const Success: Story = {
56
- args: { variant: "success", children: "Active" },
57
- };
58
-
59
- export const Error: Story = {
60
- args: { variant: "error", children: "Failed" },
61
- };
62
-
63
- export const SemanticStatus: Story = {
64
- render: () => (
65
- <div style={{ display: "flex", gap: "var(--fui-space-2)", alignItems: "center" }}>
66
- <Badge variant="success" size="lg">
67
- Delivered
68
- </Badge>
69
- <Badge variant="error" size="lg">
70
- Bounced
71
- </Badge>
72
- <Badge variant="warning" size="lg">
73
- Delayed
74
- </Badge>
75
- <Badge variant="info" size="lg">
76
- Queued
77
- </Badge>
78
- </div>
79
- ),
80
- };
81
-
82
- export const WithDot: Story = {
83
- args: { variant: "success", dot: true, children: "Online" },
84
- };
85
-
86
- export const Outline: Story = {
87
- args: { variant: "outline", children: "Outline" },
88
- };
89
-
90
- export const Removable: Story = {
91
- args: { variant: "info", children: "React", onRemove: () => {} },
92
- };
@@ -1,98 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { BentoGrid } from '.';
3
-
4
- /**
5
- * BentoGrid is an asymmetric grid layout with responsive column/row spans and
6
- * built-in surface styling for bento-style feature sections. Compose
7
- * BentoGrid.Item children, optionally with colSpan and rowSpan.
8
- */
9
- const meta = {
10
- title: 'Layout/BentoGrid',
11
- component: BentoGrid,
12
- tags: ['autodocs'],
13
- parameters: {
14
- docs: {
15
- description: {
16
- component:
17
- 'Asymmetric grid layout with responsive spans and built-in surface styling.',
18
- },
19
- },
20
- },
21
- argTypes: {
22
- columns: {
23
- control: 'select',
24
- options: ['2', '3', '4'],
25
- description: 'Number of columns — auto-collapses responsively',
26
- },
27
- gap: {
28
- control: 'select',
29
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl'],
30
- description: 'Gap between grid items',
31
- },
32
- },
33
- args: {
34
- columns: 3,
35
- gap: 'md',
36
- children: (
37
- <>
38
- <BentoGrid.Item>Item 1</BentoGrid.Item>
39
- <BentoGrid.Item>Item 2</BentoGrid.Item>
40
- <BentoGrid.Item>Item 3</BentoGrid.Item>
41
- </>
42
- ),
43
- },
44
- } satisfies Meta<typeof BentoGrid>;
45
-
46
- export default meta;
47
-
48
- type Story = StoryObj<typeof meta>;
49
-
50
- export const Default: Story = {
51
- render: () => (
52
- <BentoGrid columns={3} gap="md">
53
- <BentoGrid.Item>Item 1</BentoGrid.Item>
54
- <BentoGrid.Item>Item 2</BentoGrid.Item>
55
- <BentoGrid.Item>Item 3</BentoGrid.Item>
56
- <BentoGrid.Item>Item 4</BentoGrid.Item>
57
- <BentoGrid.Item>Item 5</BentoGrid.Item>
58
- <BentoGrid.Item>Item 6</BentoGrid.Item>
59
- </BentoGrid>
60
- ),
61
- };
62
-
63
- export const HeroLayout: Story = {
64
- render: () => (
65
- <BentoGrid columns={3} gap="md">
66
- <BentoGrid.Item colSpan={{ base: 1, lg: 2 }} rowSpan={{ base: 1, lg: 2 }}>
67
- Hero content
68
- </BentoGrid.Item>
69
- <BentoGrid.Item>Item 2</BentoGrid.Item>
70
- <BentoGrid.Item>Item 3</BentoGrid.Item>
71
- <BentoGrid.Item>Item 4</BentoGrid.Item>
72
- <BentoGrid.Item>Item 5</BentoGrid.Item>
73
- </BentoGrid>
74
- ),
75
- };
76
-
77
- export const TwoColumn: Story = {
78
- render: () => (
79
- <BentoGrid columns={2} gap="md">
80
- <BentoGrid.Item>Item 1</BentoGrid.Item>
81
- <BentoGrid.Item>Item 2</BentoGrid.Item>
82
- <BentoGrid.Item colSpan={2}>Wide item</BentoGrid.Item>
83
- <BentoGrid.Item>Item 4</BentoGrid.Item>
84
- <BentoGrid.Item>Item 5</BentoGrid.Item>
85
- </BentoGrid>
86
- ),
87
- };
88
-
89
- export const FullWidthBanner: Story = {
90
- render: () => (
91
- <BentoGrid columns={3} gap="md">
92
- <BentoGrid.Item>Item 1</BentoGrid.Item>
93
- <BentoGrid.Item>Item 2</BentoGrid.Item>
94
- <BentoGrid.Item>Item 3</BentoGrid.Item>
95
- <BentoGrid.Item colSpan={3}>Full-width banner</BentoGrid.Item>
96
- </BentoGrid>
97
- ),
98
- };
@@ -1,150 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Box } from '.';
3
-
4
- /**
5
- * Box is the primitive layout container for applying spacing, backgrounds, and
6
- * borders. It renders any semantic element via the `as` prop and is the
7
- * building block for custom layouts not covered by Stack or Grid.
8
- */
9
- const meta = {
10
- title: 'Layout/Box',
11
- component: Box,
12
- tags: ['autodocs', 'canonical'],
13
- parameters: {
14
- docs: {
15
- description: {
16
- component:
17
- 'Primitive layout container for applying spacing, backgrounds, and borders.',
18
- },
19
- },
20
- },
21
- argTypes: {
22
- as: {
23
- control: 'select',
24
- options: ['div', 'section', 'article', 'aside', 'main', 'header', 'footer', 'nav', 'span'],
25
- description: 'HTML element to render',
26
- },
27
- padding: {
28
- control: 'select',
29
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl'],
30
- description: 'Padding on all sides',
31
- },
32
- paddingX: {
33
- control: 'select',
34
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl'],
35
- description: 'Horizontal padding',
36
- },
37
- paddingY: {
38
- control: 'select',
39
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl'],
40
- description: 'Vertical padding',
41
- },
42
- margin: {
43
- control: 'select',
44
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl', 'auto'],
45
- description: 'Margin on all sides',
46
- },
47
- marginX: {
48
- control: 'select',
49
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl', 'auto'],
50
- description: 'Horizontal margin',
51
- },
52
- marginY: {
53
- control: 'select',
54
- options: ['none', 'xs', 'sm', 'md', 'lg', 'xl', 'auto'],
55
- description: 'Vertical margin',
56
- },
57
- background: {
58
- control: 'select',
59
- options: ['none', 'primary', 'secondary', 'tertiary', 'elevated'],
60
- description: 'Background color',
61
- },
62
- rounded: {
63
- control: 'select',
64
- options: ['none', 'sm', 'md', 'lg', 'full'],
65
- description: 'Border radius',
66
- },
67
- borderColor: {
68
- control: 'select',
69
- options: ['default', 'strong', 'accent', 'danger'],
70
- description: 'Border color variant',
71
- },
72
- shadow: {
73
- control: 'select',
74
- options: ['none', 'sm', 'md', 'lg'],
75
- description: 'Box shadow',
76
- },
77
- overflow: {
78
- control: 'select',
79
- options: ['hidden', 'auto', 'scroll', 'visible'],
80
- description: 'Overflow behavior',
81
- },
82
- color: {
83
- control: 'select',
84
- options: ['primary', 'secondary', 'tertiary', 'accent', 'inverse'],
85
- description: 'Text color',
86
- },
87
- display: {
88
- control: 'select',
89
- options: ['none', 'block', 'inline', 'inline-block', 'flex', 'inline-flex', 'grid'],
90
- description: 'Display type',
91
- },
92
- border: { control: 'boolean', description: 'Show border' },
93
- borderTop: { control: 'boolean', description: 'Show top border only' },
94
- borderBottom: { control: 'boolean', description: 'Show bottom border only' },
95
- borderLeft: { control: 'boolean', description: 'Show left border only' },
96
- borderRight: { control: 'boolean', description: 'Show right border only' },
97
- },
98
- args: {
99
- padding: 'md',
100
- background: 'secondary',
101
- rounded: 'md',
102
- children: 'Content with padding and background',
103
- },
104
- } satisfies Meta<typeof Box>;
105
-
106
- export default meta;
107
-
108
- type Story = StoryObj<typeof meta>;
109
-
110
- export const Default: Story = {
111
- args: {
112
- padding: 'md',
113
- background: 'secondary',
114
- rounded: 'md',
115
- children: 'Content with padding and background',
116
- },
117
- };
118
-
119
- export const Bordered: Story = {
120
- args: { padding: 'lg', border: true, rounded: 'md', children: 'Bordered content area' },
121
- };
122
-
123
- export const Elevated: Story = {
124
- args: {
125
- padding: 'lg',
126
- rounded: 'md',
127
- shadow: 'md',
128
- background: 'primary',
129
- children: 'Elevated content with shadow',
130
- },
131
- };
132
-
133
- export const DirectionalPadding: Story = {
134
- args: {
135
- paddingX: 'xl',
136
- paddingY: 'sm',
137
- background: 'tertiary',
138
- rounded: 'sm',
139
- children: 'Wide horizontal padding, short vertical',
140
- },
141
- };
142
-
143
- export const DirectionalBorders: Story = {
144
- args: {
145
- padding: 'md',
146
- borderTop: true,
147
- borderBottom: true,
148
- children: 'Top and bottom borders only',
149
- },
150
- };
@@ -1,87 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Breadcrumbs } from '.';
3
-
4
- /**
5
- * Breadcrumbs show the current page location within a hierarchy and let users
6
- * navigate back through parent pages. It is a compound component: compose
7
- * Breadcrumbs.Item children, marking the last one with `current`.
8
- */
9
- const meta = {
10
- title: 'Navigation/Breadcrumbs',
11
- component: Breadcrumbs,
12
- tags: ['autodocs'],
13
- parameters: {
14
- docs: {
15
- description: {
16
- component:
17
- 'Breadcrumb navigation showing the current page location within a hierarchy.',
18
- },
19
- },
20
- },
21
- argTypes: {
22
- maxItems: {
23
- control: 'number',
24
- description: 'Maximum visible items before collapsing middle items with ellipsis',
25
- },
26
- label: {
27
- control: 'text',
28
- description: 'Custom aria-label for the breadcrumb nav landmark',
29
- },
30
- },
31
- args: {
32
- children: (
33
- <>
34
- <Breadcrumbs.Item href="#">Home</Breadcrumbs.Item>
35
- <Breadcrumbs.Item href="#">Products</Breadcrumbs.Item>
36
- <Breadcrumbs.Item current>Current Page</Breadcrumbs.Item>
37
- </>
38
- ),
39
- },
40
- } satisfies Meta<typeof Breadcrumbs>;
41
-
42
- export default meta;
43
-
44
- type Story = StoryObj<typeof meta>;
45
-
46
- export const Default: Story = {
47
- render: () => (
48
- <Breadcrumbs>
49
- <Breadcrumbs.Item href="#">Home</Breadcrumbs.Item>
50
- <Breadcrumbs.Item href="#">Products</Breadcrumbs.Item>
51
- <Breadcrumbs.Item href="#">Category</Breadcrumbs.Item>
52
- <Breadcrumbs.Item current>Current Page</Breadcrumbs.Item>
53
- </Breadcrumbs>
54
- ),
55
- };
56
-
57
- export const Collapsed: Story = {
58
- render: () => (
59
- <Breadcrumbs maxItems={3}>
60
- <Breadcrumbs.Item href="#">Home</Breadcrumbs.Item>
61
- <Breadcrumbs.Item href="#">Category</Breadcrumbs.Item>
62
- <Breadcrumbs.Item href="#">Subcategory</Breadcrumbs.Item>
63
- <Breadcrumbs.Item href="#">Section</Breadcrumbs.Item>
64
- <Breadcrumbs.Item current>Current Page</Breadcrumbs.Item>
65
- </Breadcrumbs>
66
- ),
67
- };
68
-
69
- export const CustomSeparator: Story = {
70
- render: () => (
71
- <Breadcrumbs separator=">">
72
- <Breadcrumbs.Item href="#">Home</Breadcrumbs.Item>
73
- <Breadcrumbs.Item href="#">Settings</Breadcrumbs.Item>
74
- <Breadcrumbs.Item current>Profile</Breadcrumbs.Item>
75
- </Breadcrumbs>
76
- ),
77
- };
78
-
79
- export const CustomLandmarkLabel: Story = {
80
- render: () => (
81
- <Breadcrumbs label="Documentation breadcrumbs">
82
- <Breadcrumbs.Item href="#">Docs</Breadcrumbs.Item>
83
- <Breadcrumbs.Item href="#">Components</Breadcrumbs.Item>
84
- <Breadcrumbs.Item current>Breadcrumbs</Breadcrumbs.Item>
85
- </Breadcrumbs>
86
- ),
87
- };