@borisj74/bv-ds 0.1.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 (310) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -0
  3. package/dist/index.cjs +33885 -0
  4. package/dist/index.d.cts +2715 -0
  5. package/dist/index.d.ts +2715 -0
  6. package/dist/index.js +33717 -0
  7. package/package.json +67 -0
  8. package/src/components/ActivityFeed/ActivityFeed.tsx +48 -0
  9. package/src/components/ActivityFeed/index.ts +2 -0
  10. package/src/components/ActivityGauge/ActivityGauge.tsx +155 -0
  11. package/src/components/ActivityGauge/index.ts +7 -0
  12. package/src/components/AdvancedFilterBar/AdvancedFilterBar.tsx +80 -0
  13. package/src/components/AdvancedFilterBar/index.ts +2 -0
  14. package/src/components/Alert/Alert.tsx +210 -0
  15. package/src/components/Alert/index.ts +2 -0
  16. package/src/components/Avatar/Avatar.tsx +111 -0
  17. package/src/components/Avatar/index.ts +2 -0
  18. package/src/components/AvatarAddButton/AvatarAddButton.tsx +65 -0
  19. package/src/components/AvatarAddButton/index.ts +5 -0
  20. package/src/components/AvatarGroup/AvatarGroup.tsx +79 -0
  21. package/src/components/AvatarGroup/index.ts +6 -0
  22. package/src/components/AvatarLabelGroup/AvatarLabelGroup.tsx +62 -0
  23. package/src/components/AvatarLabelGroup/index.ts +5 -0
  24. package/src/components/AvatarProfilePhoto/AvatarProfilePhoto.tsx +117 -0
  25. package/src/components/AvatarProfilePhoto/index.ts +5 -0
  26. package/src/components/Badge/ColorBadge.tsx +36 -0
  27. package/src/components/Badge/ModernBadge.tsx +38 -0
  28. package/src/components/Badge/PillBadge.tsx +36 -0
  29. package/src/components/Badge/badgeShared.tsx +139 -0
  30. package/src/components/Badge/index.ts +7 -0
  31. package/src/components/BadgeCloseX/BadgeCloseX.tsx +64 -0
  32. package/src/components/BadgeCloseX/index.ts +2 -0
  33. package/src/components/BadgeGroup/BadgeGroup.tsx +61 -0
  34. package/src/components/BadgeGroup/index.ts +7 -0
  35. package/src/components/BreadcrumbButtonBase/BreadcrumbButtonBase.tsx +75 -0
  36. package/src/components/BreadcrumbButtonBase/index.ts +5 -0
  37. package/src/components/Breadcrumbs/Breadcrumbs.tsx +62 -0
  38. package/src/components/Breadcrumbs/index.ts +2 -0
  39. package/src/components/Button/Button.tsx +71 -0
  40. package/src/components/Button/index.ts +2 -0
  41. package/src/components/ButtonCloseX/ButtonCloseX.tsx +54 -0
  42. package/src/components/ButtonCloseX/index.ts +2 -0
  43. package/src/components/ButtonDestructive/ButtonDestructive.tsx +67 -0
  44. package/src/components/ButtonDestructive/index.ts +6 -0
  45. package/src/components/ButtonGroup/ButtonGroup.tsx +28 -0
  46. package/src/components/ButtonGroup/index.ts +2 -0
  47. package/src/components/ButtonGroupSegment/ButtonGroupSegment.tsx +54 -0
  48. package/src/components/ButtonGroupSegment/index.ts +5 -0
  49. package/src/components/ButtonUtility/ButtonUtility.tsx +67 -0
  50. package/src/components/ButtonUtility/index.ts +6 -0
  51. package/src/components/CalendarCell/CalendarCell.tsx +82 -0
  52. package/src/components/CalendarCell/index.ts +2 -0
  53. package/src/components/CalendarCellDayWeekView/CalendarCellDayWeekView.tsx +56 -0
  54. package/src/components/CalendarCellDayWeekView/index.ts +2 -0
  55. package/src/components/CalendarColumnHeader/CalendarColumnHeader.tsx +45 -0
  56. package/src/components/CalendarColumnHeader/index.ts +5 -0
  57. package/src/components/CalendarDateIcon/CalendarDateIcon.tsx +25 -0
  58. package/src/components/CalendarDateIcon/index.ts +2 -0
  59. package/src/components/CalendarEvent/CalendarEvent.tsx +76 -0
  60. package/src/components/CalendarEvent/index.ts +2 -0
  61. package/src/components/CalendarEventDayWeekView/CalendarEventDayWeekView.tsx +76 -0
  62. package/src/components/CalendarEventDayWeekView/index.ts +2 -0
  63. package/src/components/CalendarHeader/CalendarHeader.tsx +47 -0
  64. package/src/components/CalendarHeader/index.ts +2 -0
  65. package/src/components/CalendarRowLabel/CalendarRowLabel.tsx +21 -0
  66. package/src/components/CalendarRowLabel/index.ts +2 -0
  67. package/src/components/CalendarTimemarker/CalendarTimemarker.tsx +46 -0
  68. package/src/components/CalendarTimemarker/index.ts +5 -0
  69. package/src/components/CalendarViewDropdown/CalendarViewDropdown.tsx +101 -0
  70. package/src/components/CalendarViewDropdown/index.ts +6 -0
  71. package/src/components/CardHeader/CardHeader.tsx +57 -0
  72. package/src/components/CardHeader/index.ts +2 -0
  73. package/src/components/CarouselArrow/CarouselArrow.tsx +47 -0
  74. package/src/components/CarouselArrow/index.ts +6 -0
  75. package/src/components/CarouselImage/CarouselImage.tsx +60 -0
  76. package/src/components/CarouselImage/index.ts +2 -0
  77. package/src/components/Change/Change.tsx +73 -0
  78. package/src/components/Change/index.ts +2 -0
  79. package/src/components/ChartLegend/ChartLegend.tsx +38 -0
  80. package/src/components/ChartLegend/index.ts +2 -0
  81. package/src/components/ChartMarker/ChartMarker.tsx +54 -0
  82. package/src/components/ChartMarker/index.ts +2 -0
  83. package/src/components/ChartMini/ChartMini.tsx +86 -0
  84. package/src/components/ChartMini/index.ts +2 -0
  85. package/src/components/ChartTooltip/ChartTooltip.tsx +44 -0
  86. package/src/components/ChartTooltip/index.ts +2 -0
  87. package/src/components/Checkbox/Checkbox.tsx +65 -0
  88. package/src/components/Checkbox/checkboxBase.tsx +81 -0
  89. package/src/components/Checkbox/index.ts +3 -0
  90. package/src/components/CodeSnippet/CodeSnippet.tsx +94 -0
  91. package/src/components/CodeSnippet/index.ts +2 -0
  92. package/src/components/CodeSnippetTabs/CodeSnippetTabs.tsx +44 -0
  93. package/src/components/CodeSnippetTabs/index.ts +2 -0
  94. package/src/components/CommandBar/CommandBar.tsx +80 -0
  95. package/src/components/CommandBar/index.ts +2 -0
  96. package/src/components/CommandBarFooter/CommandBarFooter.tsx +125 -0
  97. package/src/components/CommandBarFooter/index.ts +5 -0
  98. package/src/components/CommandBarMenuSection/CommandBarMenuSection.tsx +28 -0
  99. package/src/components/CommandBarMenuSection/index.ts +2 -0
  100. package/src/components/CommandBarNavigationIcon/CommandBarNavigationIcon.tsx +47 -0
  101. package/src/components/CommandBarNavigationIcon/index.ts +2 -0
  102. package/src/components/CommandDropdownMenuItem/CommandDropdownMenuItem.tsx +51 -0
  103. package/src/components/CommandDropdownMenuItem/index.ts +2 -0
  104. package/src/components/CommandInput/CommandInput.tsx +74 -0
  105. package/src/components/CommandInput/index.ts +2 -0
  106. package/src/components/CommandShortcut/CommandShortcut.tsx +26 -0
  107. package/src/components/CommandShortcut/index.ts +2 -0
  108. package/src/components/ContentDivider/ContentDivider.tsx +80 -0
  109. package/src/components/ContentDivider/index.ts +6 -0
  110. package/src/components/ContentFeatureText/ContentFeatureText.tsx +60 -0
  111. package/src/components/ContentFeatureText/index.ts +5 -0
  112. package/src/components/ContentHeading/ContentHeading.tsx +43 -0
  113. package/src/components/ContentHeading/index.ts +5 -0
  114. package/src/components/ContentParagraph/ContentParagraph.tsx +39 -0
  115. package/src/components/ContentParagraph/index.ts +5 -0
  116. package/src/components/ContentQuote/ContentQuote.tsx +114 -0
  117. package/src/components/ContentQuote/index.ts +6 -0
  118. package/src/components/ContentRule/ContentRule.tsx +31 -0
  119. package/src/components/ContentRule/index.ts +2 -0
  120. package/src/components/ContextMenu/ContextMenu.tsx +67 -0
  121. package/src/components/ContextMenu/index.ts +7 -0
  122. package/src/components/ContextMenu/useContextMenu.ts +41 -0
  123. package/src/components/DatePickerCell/DatePickerCell.tsx +77 -0
  124. package/src/components/DatePickerCell/index.ts +2 -0
  125. package/src/components/DatePickerListItem/DatePickerListItem.tsx +39 -0
  126. package/src/components/DatePickerListItem/index.ts +2 -0
  127. package/src/components/DatePickerMenu/DatePickerMenu.tsx +131 -0
  128. package/src/components/DatePickerMenu/index.ts +2 -0
  129. package/src/components/DropdownAccountListItem/DropdownAccountListItem.tsx +69 -0
  130. package/src/components/DropdownAccountListItem/index.ts +2 -0
  131. package/src/components/DropdownMenuFooter/DropdownMenuFooter.tsx +50 -0
  132. package/src/components/DropdownMenuFooter/index.ts +5 -0
  133. package/src/components/DropdownMenuHeader/DropdownMenuHeader.tsx +93 -0
  134. package/src/components/DropdownMenuHeader/index.ts +5 -0
  135. package/src/components/DropdownMenuItemInsetIcon/DropdownMenuItemInsetIcon.tsx +89 -0
  136. package/src/components/DropdownMenuItemInsetIcon/index.ts +5 -0
  137. package/src/components/DropdownMenuListItem/DropdownMenuListItem.tsx +84 -0
  138. package/src/components/DropdownMenuListItem/index.ts +2 -0
  139. package/src/components/EmptyState/EmptyState.tsx +65 -0
  140. package/src/components/EmptyState/index.ts +2 -0
  141. package/src/components/FeedItemBase/FeedItemBase.tsx +135 -0
  142. package/src/components/FeedItemBase/index.ts +2 -0
  143. package/src/components/FileUpload/FileUpload.tsx +112 -0
  144. package/src/components/FileUpload/index.ts +2 -0
  145. package/src/components/FileUploadBase/FileUploadBase.tsx +69 -0
  146. package/src/components/FileUploadBase/index.ts +2 -0
  147. package/src/components/FileUploadItemBase/FileUploadItemBase.tsx +190 -0
  148. package/src/components/FileUploadItemBase/index.ts +7 -0
  149. package/src/components/FilterBar/FilterBar.tsx +62 -0
  150. package/src/components/FilterBar/index.ts +2 -0
  151. package/src/components/FilterTabs/FilterTabs.tsx +41 -0
  152. package/src/components/FilterTabs/index.ts +2 -0
  153. package/src/components/FiltersDropdownMenu/FiltersDropdownMenu.tsx +104 -0
  154. package/src/components/FiltersDropdownMenu/index.ts +2 -0
  155. package/src/components/FiltersSlideoutMenu/FiltersSlideoutMenu.tsx +71 -0
  156. package/src/components/FiltersSlideoutMenu/index.ts +2 -0
  157. package/src/components/HeaderNavigation/HeaderNavigation.tsx +178 -0
  158. package/src/components/HeaderNavigation/index.ts +6 -0
  159. package/src/components/HelpIcon/HelpIcon.tsx +49 -0
  160. package/src/components/HelpIcon/index.ts +2 -0
  161. package/src/components/InputField/InputField.tsx +108 -0
  162. package/src/components/InputField/index.ts +3 -0
  163. package/src/components/InputField/inputFieldShared.tsx +68 -0
  164. package/src/components/LeadingInputField/LeadingInputField.tsx +60 -0
  165. package/src/components/LeadingInputField/index.ts +2 -0
  166. package/src/components/LineAndBarChart/LineAndBarChart.tsx +96 -0
  167. package/src/components/LineAndBarChart/index.ts +2 -0
  168. package/src/components/LinkMessage/LinkMessage.tsx +52 -0
  169. package/src/components/LinkMessage/index.ts +2 -0
  170. package/src/components/LoadingIndicator/LoadingIndicator.tsx +108 -0
  171. package/src/components/LoadingIndicator/index.ts +6 -0
  172. package/src/components/MediaMessage/MediaMessage.tsx +109 -0
  173. package/src/components/MediaMessage/index.ts +2 -0
  174. package/src/components/MegaInputFieldBase/MegaInputFieldBase.tsx +49 -0
  175. package/src/components/MegaInputFieldBase/index.ts +5 -0
  176. package/src/components/Message/Message.tsx +85 -0
  177. package/src/components/Message/index.ts +3 -0
  178. package/src/components/Message/messageShared.tsx +73 -0
  179. package/src/components/MessageAction/MessageAction.tsx +221 -0
  180. package/src/components/MessageAction/index.ts +2 -0
  181. package/src/components/MessageActionButton/MessageActionButton.tsx +36 -0
  182. package/src/components/MessageActionButton/index.ts +2 -0
  183. package/src/components/MessageActionPanel/MessageActionPanel.tsx +36 -0
  184. package/src/components/MessageActionPanel/index.ts +2 -0
  185. package/src/components/MessageReaction/MessageReaction.tsx +37 -0
  186. package/src/components/MessageReaction/index.ts +2 -0
  187. package/src/components/MessageStatusIcon/MessageStatusIcon.tsx +54 -0
  188. package/src/components/MessageStatusIcon/index.ts +2 -0
  189. package/src/components/MetricItem/MetricItem.tsx +147 -0
  190. package/src/components/MetricItem/index.ts +2 -0
  191. package/src/components/ModalActions/ModalActions.tsx +57 -0
  192. package/src/components/ModalActions/index.ts +2 -0
  193. package/src/components/ModalHeader/ModalHeader.tsx +99 -0
  194. package/src/components/ModalHeader/index.ts +2 -0
  195. package/src/components/MultiSelect/MultiSelect.tsx +118 -0
  196. package/src/components/MultiSelect/index.ts +2 -0
  197. package/src/components/NavAccountCard/NavAccountCard.tsx +124 -0
  198. package/src/components/NavAccountCard/index.ts +2 -0
  199. package/src/components/NavAccountCardMenuItem/NavAccountCardMenuItem.tsx +101 -0
  200. package/src/components/NavAccountCardMenuItem/index.ts +5 -0
  201. package/src/components/NavButton/NavButton.tsx +50 -0
  202. package/src/components/NavButton/index.ts +2 -0
  203. package/src/components/NavFeaturedCard/NavFeaturedCard.tsx +82 -0
  204. package/src/components/NavFeaturedCard/index.ts +2 -0
  205. package/src/components/NavItemBase/NavItemBase.tsx +79 -0
  206. package/src/components/NavItemBase/index.ts +2 -0
  207. package/src/components/NavItemDropdownBase/NavItemDropdownBase.tsx +74 -0
  208. package/src/components/NavItemDropdownBase/index.ts +2 -0
  209. package/src/components/NavMenuButton/NavMenuButton.tsx +47 -0
  210. package/src/components/NavMenuButton/index.ts +2 -0
  211. package/src/components/Notification/Notification.tsx +102 -0
  212. package/src/components/Notification/index.ts +2 -0
  213. package/src/components/NumberInput/NumberInput.tsx +114 -0
  214. package/src/components/NumberInput/index.ts +2 -0
  215. package/src/components/PageHeader/PageHeader.tsx +88 -0
  216. package/src/components/PageHeader/index.ts +2 -0
  217. package/src/components/Pagination/Pagination.tsx +124 -0
  218. package/src/components/Pagination/index.ts +2 -0
  219. package/src/components/PaginationButtonGroupBase/PaginationButtonGroupBase.tsx +69 -0
  220. package/src/components/PaginationButtonGroupBase/index.ts +5 -0
  221. package/src/components/PaginationCards/PaginationCards.tsx +72 -0
  222. package/src/components/PaginationCards/index.ts +2 -0
  223. package/src/components/PaginationDotGroup/PaginationDotGroup.tsx +66 -0
  224. package/src/components/PaginationDotGroup/index.ts +2 -0
  225. package/src/components/PaginationDotIndicator/PaginationDotIndicator.tsx +39 -0
  226. package/src/components/PaginationDotIndicator/index.ts +6 -0
  227. package/src/components/PaginationNumberBase/PaginationNumberBase.tsx +42 -0
  228. package/src/components/PaginationNumberBase/index.ts +5 -0
  229. package/src/components/PieChart/PieChart.tsx +73 -0
  230. package/src/components/PieChart/index.ts +2 -0
  231. package/src/components/ProgressBar/ProgressBar.tsx +75 -0
  232. package/src/components/ProgressBar/index.ts +2 -0
  233. package/src/components/ProgressCircle/ProgressCircle.tsx +89 -0
  234. package/src/components/ProgressCircle/index.ts +6 -0
  235. package/src/components/RadarChart/RadarChart.tsx +62 -0
  236. package/src/components/RadarChart/index.ts +2 -0
  237. package/src/components/Radio/Radio.tsx +55 -0
  238. package/src/components/Radio/index.ts +2 -0
  239. package/src/components/RadioGroup/RadioGroup.tsx +54 -0
  240. package/src/components/RadioGroup/index.ts +2 -0
  241. package/src/components/RadioGroupItem/RadioGroupItem.tsx +118 -0
  242. package/src/components/RadioGroupItem/index.ts +6 -0
  243. package/src/components/SectionFooter/SectionFooter.tsx +40 -0
  244. package/src/components/SectionFooter/index.ts +2 -0
  245. package/src/components/SectionHeader/SectionHeader.tsx +44 -0
  246. package/src/components/SectionHeader/index.ts +2 -0
  247. package/src/components/SectionLabel/SectionLabel.tsx +51 -0
  248. package/src/components/SectionLabel/index.ts +2 -0
  249. package/src/components/Select/Select.tsx +121 -0
  250. package/src/components/Select/index.ts +2 -0
  251. package/src/components/SelectMenuItem/SelectMenuItem.tsx +85 -0
  252. package/src/components/SelectMenuItem/index.ts +2 -0
  253. package/src/components/SidebarNavigation/SidebarNavigation.tsx +100 -0
  254. package/src/components/SidebarNavigation/index.ts +2 -0
  255. package/src/components/SlideOutMenuHeader/SlideOutMenuHeader.tsx +56 -0
  256. package/src/components/SlideOutMenuHeader/index.ts +2 -0
  257. package/src/components/Slider/Slider.tsx +125 -0
  258. package/src/components/Slider/index.ts +2 -0
  259. package/src/components/SocialButton/SocialButton.tsx +88 -0
  260. package/src/components/SocialButton/index.ts +2 -0
  261. package/src/components/StatusIcon/StatusIcon.tsx +75 -0
  262. package/src/components/StatusIcon/index.ts +2 -0
  263. package/src/components/StepBase/StepBase.tsx +90 -0
  264. package/src/components/StepBase/index.ts +2 -0
  265. package/src/components/StepIconBase/StepIconBase.tsx +65 -0
  266. package/src/components/StepIconBase/index.ts +7 -0
  267. package/src/components/TabButtonBase/TabButtonBase.tsx +88 -0
  268. package/src/components/TabButtonBase/index.ts +2 -0
  269. package/src/components/TableCell/TableCell.tsx +44 -0
  270. package/src/components/TableCell/index.ts +2 -0
  271. package/src/components/TableHeaderCell/TableHeaderCell.tsx +34 -0
  272. package/src/components/TableHeaderCell/index.ts +2 -0
  273. package/src/components/TableHeaderLabel/TableHeaderLabel.tsx +37 -0
  274. package/src/components/TableHeaderLabel/index.ts +2 -0
  275. package/src/components/Tabs/Tabs.tsx +80 -0
  276. package/src/components/Tabs/index.ts +2 -0
  277. package/src/components/Tag/Tag.tsx +91 -0
  278. package/src/components/Tag/index.ts +2 -0
  279. package/src/components/TagsInputField/TagsInputField.tsx +90 -0
  280. package/src/components/TagsInputField/index.ts +2 -0
  281. package/src/components/TextEditorToolbar/TextEditorToolbar.tsx +33 -0
  282. package/src/components/TextEditorToolbar/index.ts +2 -0
  283. package/src/components/TextEditorTooltip/TextEditorTooltip.tsx +28 -0
  284. package/src/components/TextEditorTooltip/index.ts +2 -0
  285. package/src/components/TextareaInputField/TextareaInputField.tsx +45 -0
  286. package/src/components/TextareaInputField/index.ts +2 -0
  287. package/src/components/Toggle/Toggle.tsx +87 -0
  288. package/src/components/Toggle/index.ts +2 -0
  289. package/src/components/Tooltip/Tooltip.tsx +59 -0
  290. package/src/components/Tooltip/index.ts +2 -0
  291. package/src/components/TrailingInputField/TrailingInputField.tsx +62 -0
  292. package/src/components/TrailingInputField/index.ts +2 -0
  293. package/src/components/TreeView/TreeView.tsx +86 -0
  294. package/src/components/TreeView/index.ts +2 -0
  295. package/src/components/TreeViewConnector/TreeViewConnector.tsx +36 -0
  296. package/src/components/TreeViewConnector/index.ts +2 -0
  297. package/src/components/TreeViewItem/TreeViewItem.tsx +111 -0
  298. package/src/components/TreeViewItem/index.ts +2 -0
  299. package/src/components/VerificationCodeInput/VerificationCodeInput.tsx +114 -0
  300. package/src/components/VerificationCodeInput/index.ts +2 -0
  301. package/src/illustrations/BoxIllustration.tsx +13 -0
  302. package/src/illustrations/CloudIllustration.tsx +18 -0
  303. package/src/illustrations/CreditCardIllustration.tsx +13 -0
  304. package/src/illustrations/DocumentsIllustration.tsx +13 -0
  305. package/src/illustrations/index.ts +4 -0
  306. package/src/index.ts +147 -0
  307. package/src/internal/chartTheme.ts +30 -0
  308. package/src/internal/ringBase.tsx +82 -0
  309. package/src/styles.css +3 -0
  310. package/tailwind-preset.js +295 -0
@@ -0,0 +1,2 @@
1
+ export { CodeSnippetTabs } from "./CodeSnippetTabs";
2
+ export type { CodeSnippetTabsProps } from "./CodeSnippetTabs";
@@ -0,0 +1,80 @@
1
+ import { type ReactNode } from "react";
2
+ import clsx from "clsx";
3
+ import { CommandInput } from "../CommandInput";
4
+ import { CommandBarFooter, type CommandBarFooterHint } from "../CommandBarFooter";
5
+
6
+ export interface CommandBarProps {
7
+ open?: boolean;
8
+ onClose?: () => void;
9
+ /** Search value (controlled). */
10
+ value?: string;
11
+ onValueChange?: (value: string) => void;
12
+ placeholder?: string;
13
+ /** Trailing shortcut hint in the input (e.g. a `CommandShortcut`). */
14
+ shortcut?: ReactNode;
15
+ onHelp?: () => void;
16
+ /** Body — typically `CommandBarMenuSection` children. */
17
+ children?: ReactNode;
18
+ /** Footer hints; omit to use the default set. `false` hides the footer. */
19
+ footerHints?: CommandBarFooterHint[] | false;
20
+ onSettings?: () => void;
21
+ /** Render a dimmed backdrop behind the panel (click closes). */
22
+ withBackdrop?: boolean;
23
+ className?: string;
24
+ }
25
+
26
+ /**
27
+ * Command palette — thin assembly of the `Command*` primitives: `CommandInput`
28
+ * (search) + a scrollable body of `CommandBarMenuSection`s (`children`) +
29
+ * `CommandBarFooter`. Controlled via `open`; renders nothing when closed. Pass an
30
+ * optional `withBackdrop` for the dimmed overlay.
31
+ */
32
+ export function CommandBar({
33
+ open = false,
34
+ onClose,
35
+ value,
36
+ onValueChange,
37
+ placeholder = "Search...",
38
+ shortcut,
39
+ onHelp,
40
+ children,
41
+ footerHints,
42
+ onSettings,
43
+ withBackdrop = true,
44
+ className,
45
+ }: CommandBarProps) {
46
+ if (!open) return null;
47
+
48
+ const panel = (
49
+ <div
50
+ role="dialog"
51
+ aria-modal={withBackdrop || undefined}
52
+ className={clsx(
53
+ "flex w-[640px] max-w-full flex-col overflow-hidden rounded-xl border border-border-secondary-alt bg-bg-primary font-body shadow-xl",
54
+ className,
55
+ )}
56
+ >
57
+ <CommandInput
58
+ autoFocus
59
+ value={value}
60
+ placeholder={placeholder}
61
+ shortcut={shortcut}
62
+ onHelp={onHelp}
63
+ onChange={(e) => onValueChange?.(e.target.value)}
64
+ />
65
+ <div className="flex max-h-[360px] flex-col gap-px overflow-y-auto p-xs">{children}</div>
66
+ {footerHints !== false && (
67
+ <CommandBarFooter hints={footerHints || undefined} onSettings={onSettings} />
68
+ )}
69
+ </div>
70
+ );
71
+
72
+ if (!withBackdrop) return panel;
73
+
74
+ return (
75
+ <div className="fixed inset-0 z-50 flex items-start justify-center p-4xl">
76
+ <div className="absolute inset-0 bg-bg-overlay/70 backdrop-blur-md" onClick={onClose} aria-hidden />
77
+ <div className="relative">{panel}</div>
78
+ </div>
79
+ );
80
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandBar } from "./CommandBar";
2
+ export type { CommandBarProps } from "./CommandBar";
@@ -0,0 +1,125 @@
1
+ import type { ReactNode } from "react";
2
+ import clsx from "clsx";
3
+ import { CommandBarNavigationIcon } from "../CommandBarNavigationIcon";
4
+
5
+ export interface CommandBarFooterHint {
6
+ /** Key cap(s) for this hint — one or more CommandBarNavigationIcon elements. */
7
+ keys: ReactNode;
8
+ /** Description shown after the keys, e.g. "to navigate". */
9
+ label: string;
10
+ }
11
+
12
+ export interface CommandBarFooterProps {
13
+ /**
14
+ * Hint groups shown left-to-right. Defaults to the standard
15
+ * navigate / select / close / return-to-parent set.
16
+ */
17
+ hints?: CommandBarFooterHint[];
18
+ /** When provided, renders the trailing settings button. */
19
+ onSettings?: () => void;
20
+ className?: string;
21
+ }
22
+
23
+ function ArrowIcon({ d }: { d: string }) {
24
+ return (
25
+ <svg viewBox="0 0 16 16" fill="none" className="size-full" aria-hidden>
26
+ <path
27
+ d={d}
28
+ stroke="currentColor"
29
+ strokeWidth="1.333"
30
+ strokeLinecap="round"
31
+ strokeLinejoin="round"
32
+ />
33
+ </svg>
34
+ );
35
+ }
36
+
37
+ const ARROW_UP = "M8 13.333V2.667M8 2.667 3.333 7.333M8 2.667l4.667 4.666";
38
+ const ARROW_DOWN = "M8 2.667v10.666M8 13.333l4.667-4.666M8 13.333 3.333 8.667";
39
+ const ARROW_LEFT = "M13.333 8H2.667M2.667 8l4.666 4.667M2.667 8l4.666-4.667";
40
+ const CORNER_DOWN_LEFT = "M14 3.333V6a2.667 2.667 0 0 1-2.667 2.667H2.667M2.667 8.667 6 12M2.667 8.667 6 5.333";
41
+
42
+ /** Default hint set matching the Untitled UI command-bar footer. */
43
+ const defaultHints: CommandBarFooterHint[] = [
44
+ {
45
+ keys: (
46
+ <>
47
+ <CommandBarNavigationIcon>
48
+ <ArrowIcon d={ARROW_UP} />
49
+ </CommandBarNavigationIcon>
50
+ <CommandBarNavigationIcon>
51
+ <ArrowIcon d={ARROW_DOWN} />
52
+ </CommandBarNavigationIcon>
53
+ </>
54
+ ),
55
+ label: "to navigate",
56
+ },
57
+ {
58
+ keys: (
59
+ <CommandBarNavigationIcon>
60
+ <ArrowIcon d={CORNER_DOWN_LEFT} />
61
+ </CommandBarNavigationIcon>
62
+ ),
63
+ label: "to select",
64
+ },
65
+ {
66
+ keys: <CommandBarNavigationIcon type="text" label="esc" />,
67
+ label: "to close",
68
+ },
69
+ {
70
+ keys: (
71
+ <CommandBarNavigationIcon>
72
+ <ArrowIcon d={ARROW_LEFT} />
73
+ </CommandBarNavigationIcon>
74
+ ),
75
+ label: "return to parent",
76
+ },
77
+ ];
78
+
79
+ /**
80
+ * Footer bar for a command menu — keyboard-navigation hints plus an optional
81
+ * settings button. Composes CommandBarNavigationIcon.
82
+ */
83
+ export function CommandBarFooter({
84
+ hints = defaultHints,
85
+ onSettings,
86
+ className,
87
+ }: CommandBarFooterProps) {
88
+ return (
89
+ <div
90
+ className={clsx(
91
+ "flex w-full items-center gap-lg border-t border-border-secondary-alt bg-white/80 py-md pl-[18px] pr-md font-body backdrop-blur-md",
92
+ className,
93
+ )}
94
+ >
95
+ <div className="flex min-w-0 flex-1 items-center gap-xl">
96
+ {hints.map((hint, i) => (
97
+ <div key={i} className="flex shrink-0 items-center gap-md">
98
+ <div className="flex items-center gap-sm">{hint.keys}</div>
99
+ <span className="whitespace-nowrap text-sm font-semibold text-text-quaternary">
100
+ {hint.label}
101
+ </span>
102
+ </div>
103
+ ))}
104
+ </div>
105
+ {onSettings ? (
106
+ <button
107
+ type="button"
108
+ onClick={onSettings}
109
+ aria-label="Settings"
110
+ className="flex shrink-0 items-center justify-center rounded-md p-md text-fg-quaternary transition-colors hover:text-fg-quaternary-hover"
111
+ >
112
+ <svg viewBox="0 0 20 20" fill="none" className="size-5" aria-hidden>
113
+ <path
114
+ d="M7.83 3.04A2.5 2.5 0 0 1 10 1.667h.003a2.5 2.5 0 0 1 2.166 1.374l.21.42a1.25 1.25 0 0 0 1.49.64l.45-.143a2.5 2.5 0 0 1 2.99 1.197l.003.005a2.5 2.5 0 0 1-.49 3.064l-.34.31a1.25 1.25 0 0 0 0 1.85l.34.31a2.5 2.5 0 0 1 .49 3.064l-.003.005a2.5 2.5 0 0 1-2.99 1.197l-.45-.143a1.25 1.25 0 0 0-1.49.64l-.21.42a2.5 2.5 0 0 1-2.169 1.374A2.5 2.5 0 0 1 7.83 16.96l-.21-.42a1.25 1.25 0 0 0-1.49-.64l-.45.143a2.5 2.5 0 0 1-2.99-1.197l-.003-.005a2.5 2.5 0 0 1 .49-3.064l.34-.31a1.25 1.25 0 0 0 0-1.85l-.34-.31a2.5 2.5 0 0 1-.49-3.064l.003-.005a2.5 2.5 0 0 1 2.99-1.197l.45.143a1.25 1.25 0 0 0 1.49-.64l.21-.42ZM10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z"
115
+ stroke="currentColor"
116
+ strokeWidth="1.667"
117
+ strokeLinecap="round"
118
+ strokeLinejoin="round"
119
+ />
120
+ </svg>
121
+ </button>
122
+ ) : null}
123
+ </div>
124
+ );
125
+ }
@@ -0,0 +1,5 @@
1
+ export { CommandBarFooter } from "./CommandBarFooter";
2
+ export type {
3
+ CommandBarFooterProps,
4
+ CommandBarFooterHint,
5
+ } from "./CommandBarFooter";
@@ -0,0 +1,28 @@
1
+ import type { ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export interface CommandBarMenuSectionProps {
5
+ /** Section heading (e.g. "Recent"). */
6
+ label?: string;
7
+ /** Section rows — typically CommandDropdownMenuItem instances. */
8
+ children: ReactNode;
9
+ className?: string;
10
+ }
11
+
12
+ /** A labelled group of command-bar results. */
13
+ export function CommandBarMenuSection({
14
+ label,
15
+ children,
16
+ className,
17
+ }: CommandBarMenuSectionProps) {
18
+ return (
19
+ <div role="group" aria-label={label} className={clsx("flex flex-col font-body", className)}>
20
+ {label ? (
21
+ <span className="px-md py-xs text-xs font-semibold text-text-primary">
22
+ {label}
23
+ </span>
24
+ ) : null}
25
+ <div className="flex flex-col">{children}</div>
26
+ </div>
27
+ );
28
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandBarMenuSection } from "./CommandBarMenuSection";
2
+ export type { CommandBarMenuSectionProps } from "./CommandBarMenuSection";
@@ -0,0 +1,47 @@
1
+ import type { ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export interface CommandBarNavigationIconProps {
5
+ /**
6
+ * `"icon"` renders a 16px icon slot (pass the glyph as `children`);
7
+ * `"text"` renders a short key label such as "esc" (pass it as `label`).
8
+ */
9
+ type?: "icon" | "text";
10
+ /** Icon glyph for `type="icon"`. */
11
+ children?: ReactNode;
12
+ /** Short key label for `type="text"`. */
13
+ label?: string;
14
+ className?: string;
15
+ }
16
+
17
+ /**
18
+ * A single key cap in a command-bar footer — either a 16px navigation icon
19
+ * (arrows, enter) or a short text key like "esc". Used by CommandBarFooter.
20
+ */
21
+ export function CommandBarNavigationIcon({
22
+ type = "icon",
23
+ children,
24
+ label,
25
+ className,
26
+ }: CommandBarNavigationIconProps) {
27
+ const isText = type === "text";
28
+ return (
29
+ <div
30
+ className={clsx(
31
+ "inline-flex items-start rounded-md border border-border-secondary bg-bg-primary font-body",
32
+ isText ? "px-sm py-xs" : "p-sm",
33
+ className,
34
+ )}
35
+ >
36
+ {isText ? (
37
+ <span className="text-sm font-semibold text-fg-quaternary">
38
+ {label}
39
+ </span>
40
+ ) : (
41
+ <span className="flex size-4 shrink-0 items-center justify-center text-fg-quaternary">
42
+ {children}
43
+ </span>
44
+ )}
45
+ </div>
46
+ );
47
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandBarNavigationIcon } from "./CommandBarNavigationIcon";
2
+ export type { CommandBarNavigationIconProps } from "./CommandBarNavigationIcon";
@@ -0,0 +1,51 @@
1
+ import type { ButtonHTMLAttributes, ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export interface CommandDropdownMenuItemProps
5
+ extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "title"> {
6
+ /** Primary label. */
7
+ title: string;
8
+ /** Secondary text shown next to the title (e.g. a @handle). */
9
+ subtitle?: string;
10
+ /** Leading slot — avatar, icon, or dot. */
11
+ icon?: ReactNode;
12
+ /** Trailing slot — typically a CommandShortcut. */
13
+ shortcut?: ReactNode;
14
+ /** Highlighted/active row. */
15
+ selected?: boolean;
16
+ }
17
+
18
+ /** A single result row inside a command bar menu. */
19
+ export function CommandDropdownMenuItem({
20
+ title,
21
+ subtitle,
22
+ icon,
23
+ shortcut,
24
+ selected = false,
25
+ className,
26
+ ...rest
27
+ }: CommandDropdownMenuItemProps) {
28
+ return (
29
+ <button
30
+ type="button"
31
+ role="option"
32
+ aria-selected={selected}
33
+ className={clsx(
34
+ "flex w-full items-center gap-md rounded-md px-md py-sm text-left font-body transition-colors",
35
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-brand",
36
+ selected ? "bg-bg-primary-hover" : "hover:bg-bg-primary-hover",
37
+ className,
38
+ )}
39
+ {...rest}
40
+ >
41
+ {icon ? <span className="shrink-0">{icon}</span> : null}
42
+ <span className="flex min-w-0 items-center gap-xs">
43
+ <span className="truncate text-sm font-medium text-text-secondary">{title}</span>
44
+ {subtitle ? (
45
+ <span className="truncate text-sm font-normal text-text-tertiary">{subtitle}</span>
46
+ ) : null}
47
+ </span>
48
+ {shortcut ? <span className="ml-auto shrink-0">{shortcut}</span> : null}
49
+ </button>
50
+ );
51
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandDropdownMenuItem } from "./CommandDropdownMenuItem";
2
+ export type { CommandDropdownMenuItemProps } from "./CommandDropdownMenuItem";
@@ -0,0 +1,74 @@
1
+ import type { InputHTMLAttributes, ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export interface CommandInputProps
5
+ extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"> {
6
+ /** Trailing shortcut hint (e.g. a CommandShortcut for "⌘/"). */
7
+ shortcut?: ReactNode;
8
+ /** Renders a help (?) button before the shortcut. */
9
+ onHelp?: () => void;
10
+ }
11
+
12
+ function SearchIcon() {
13
+ return (
14
+ <svg viewBox="0 0 20 20" fill="none" className="size-5 shrink-0 text-fg-quaternary" aria-hidden>
15
+ <path
16
+ d="m17.5 17.5-3.625-3.625M15.833 9.167a6.667 6.667 0 1 1-13.333 0 6.667 6.667 0 0 1 13.333 0Z"
17
+ stroke="currentColor"
18
+ strokeWidth="1.667"
19
+ strokeLinecap="round"
20
+ strokeLinejoin="round"
21
+ />
22
+ </svg>
23
+ );
24
+ }
25
+
26
+ function HelpIcon() {
27
+ return (
28
+ <svg viewBox="0 0 20 20" fill="none" className="size-5" aria-hidden>
29
+ <path
30
+ d="M7.575 7.5a2.5 2.5 0 0 1 4.858.833c0 1.667-2.5 2.5-2.5 2.5M10 14.167h.008M17.5 10a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z"
31
+ stroke="currentColor"
32
+ strokeWidth="1.667"
33
+ strokeLinecap="round"
34
+ strokeLinejoin="round"
35
+ />
36
+ </svg>
37
+ );
38
+ }
39
+
40
+ /** Search/command input row — the trigger field of a command bar. */
41
+ export function CommandInput({
42
+ shortcut,
43
+ onHelp,
44
+ className,
45
+ ...rest
46
+ }: CommandInputProps) {
47
+ return (
48
+ <div
49
+ className={clsx(
50
+ "flex items-center gap-md rounded-xl border border-border-secondary bg-bg-primary px-xl py-md font-body",
51
+ "focus-within:ring-2 focus-within:ring-border-brand focus-within:ring-offset-2 focus-within:ring-offset-bg-primary",
52
+ className,
53
+ )}
54
+ >
55
+ <SearchIcon />
56
+ <input
57
+ type="text"
58
+ className="min-w-0 flex-1 bg-transparent text-md text-text-primary outline-none placeholder:text-text-placeholder"
59
+ {...rest}
60
+ />
61
+ {onHelp ? (
62
+ <button
63
+ type="button"
64
+ onClick={onHelp}
65
+ aria-label="Help"
66
+ className="shrink-0 text-fg-quaternary transition-colors hover:text-fg-quaternary-hover"
67
+ >
68
+ <HelpIcon />
69
+ </button>
70
+ ) : null}
71
+ {shortcut ? <span className="shrink-0">{shortcut}</span> : null}
72
+ </div>
73
+ );
74
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandInput } from "./CommandInput";
2
+ export type { CommandInputProps } from "./CommandInput";
@@ -0,0 +1,26 @@
1
+ import clsx from "clsx";
2
+
3
+ export interface CommandShortcutProps {
4
+ /** Keys rendered as individual kbd badges, e.g. ["⌘", "C"] or ["⌘C"]. */
5
+ keys: string[];
6
+ className?: string;
7
+ }
8
+
9
+ /**
10
+ * Keyboard-shortcut hint (kbd badges). For multi-step sequences like
11
+ * "⌘K then → C", render two CommandShortcut with connector text between them.
12
+ */
13
+ export function CommandShortcut({ keys, className }: CommandShortcutProps) {
14
+ return (
15
+ <span className={clsx("inline-flex items-center gap-xs font-body", className)}>
16
+ {keys.map((key, i) => (
17
+ <kbd
18
+ key={i}
19
+ className="rounded-xs border border-border-secondary bg-bg-secondary-alt px-xs text-xs font-medium text-text-quaternary"
20
+ >
21
+ {key}
22
+ </kbd>
23
+ ))}
24
+ </span>
25
+ );
26
+ }
@@ -0,0 +1,2 @@
1
+ export { CommandShortcut } from "./CommandShortcut";
2
+ export type { CommandShortcutProps } from "./CommandShortcut";
@@ -0,0 +1,80 @@
1
+ import type { ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export type ContentDividerType =
5
+ | "heading"
6
+ | "text"
7
+ | "button"
8
+ | "button-icon"
9
+ | "button-group"
10
+ | "button-group-icon";
11
+
12
+ export type ContentDividerStyle = "single-line" | "dual-line" | "background-fill";
13
+
14
+ export interface ContentDividerProps {
15
+ /** What sits in the centre of the divider. */
16
+ type?: ContentDividerType;
17
+ /** How the divider rules/background are drawn. */
18
+ style?: ContentDividerStyle;
19
+ /** Text shown for `type="heading"` / `type="text"`. */
20
+ label?: string;
21
+ /**
22
+ * Centre content for the button variants (`button`, `button-icon`,
23
+ * `button-group`, `button-group-icon`) — pass a Button / ButtonGroup etc.
24
+ */
25
+ children?: ReactNode;
26
+ className?: string;
27
+ }
28
+
29
+ const isTextType = (t: ContentDividerType) => t === "heading" || t === "text";
30
+
31
+ /**
32
+ * A horizontal section divider with a centred label, button, or button group.
33
+ * `style` controls whether the rules sit on the sides (single line), top &
34
+ * bottom (dual line), or are replaced by a filled background.
35
+ */
36
+ export function ContentDivider({
37
+ type = "heading",
38
+ style = "single-line",
39
+ label,
40
+ children,
41
+ className,
42
+ }: ContentDividerProps) {
43
+ const center = isTextType(type) ? (
44
+ <span
45
+ className={clsx(
46
+ "shrink-0 whitespace-nowrap text-center",
47
+ type === "heading"
48
+ ? "text-md font-semibold text-text-primary"
49
+ : "text-sm font-medium text-text-tertiary",
50
+ )}
51
+ >
52
+ {label}
53
+ </span>
54
+ ) : (
55
+ <div className="shrink-0">{children}</div>
56
+ );
57
+
58
+ if (style === "single-line") {
59
+ return (
60
+ <div className={clsx("flex w-full items-center gap-md font-body", className)}>
61
+ <span className="h-px flex-1 bg-border-secondary" />
62
+ {center}
63
+ <span className="h-px flex-1 bg-border-secondary" />
64
+ </div>
65
+ );
66
+ }
67
+
68
+ return (
69
+ <div
70
+ className={clsx(
71
+ "flex w-full flex-col items-center gap-md font-body",
72
+ style === "dual-line" && "border-y border-border-secondary py-lg",
73
+ style === "background-fill" && "rounded-md bg-bg-secondary py-md",
74
+ className,
75
+ )}
76
+ >
77
+ {center}
78
+ </div>
79
+ );
80
+ }
@@ -0,0 +1,6 @@
1
+ export { ContentDivider } from "./ContentDivider";
2
+ export type {
3
+ ContentDividerProps,
4
+ ContentDividerType,
5
+ ContentDividerStyle,
6
+ } from "./ContentDivider";
@@ -0,0 +1,60 @@
1
+ import type { ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export type ContentFeatureTextSize = "sm" | "md";
5
+
6
+ export interface ContentFeatureTextProps {
7
+ /** Heading shown above the body. */
8
+ heading?: ReactNode;
9
+ /** Body content — typically one or more `<p>` elements. */
10
+ children: ReactNode;
11
+ /** Type / padding scale. */
12
+ size?: ContentFeatureTextSize;
13
+ className?: string;
14
+ }
15
+
16
+ // md verified (p-4xl, rounded-2xl, heading text-xl, body text-lg).
17
+ // sm inferred (scaled down a step).
18
+ const sizeConfig: Record<
19
+ ContentFeatureTextSize,
20
+ { box: string; heading: string; body: string }
21
+ > = {
22
+ sm: { box: "p-3xl rounded-xl", heading: "text-lg", body: "text-md" },
23
+ md: { box: "p-4xl rounded-2xl", heading: "text-xl", body: "text-lg" },
24
+ };
25
+
26
+ /**
27
+ * A highlighted block of feature copy (heading + body) on a filled
28
+ * background — used inside long-form content.
29
+ */
30
+ export function ContentFeatureText({
31
+ heading,
32
+ children,
33
+ size = "md",
34
+ className,
35
+ }: ContentFeatureTextProps) {
36
+ const cfg = sizeConfig[size];
37
+ return (
38
+ <div
39
+ className={clsx(
40
+ "flex w-full flex-col gap-lg bg-bg-secondary font-body",
41
+ cfg.box,
42
+ className,
43
+ )}
44
+ >
45
+ {heading ? (
46
+ <p className={clsx("font-semibold text-text-primary", cfg.heading)}>
47
+ {heading}
48
+ </p>
49
+ ) : null}
50
+ <div
51
+ className={clsx(
52
+ "font-normal text-text-tertiary [&>p+p]:mt-xl",
53
+ cfg.body,
54
+ )}
55
+ >
56
+ {children}
57
+ </div>
58
+ </div>
59
+ );
60
+ }
@@ -0,0 +1,5 @@
1
+ export { ContentFeatureText } from "./ContentFeatureText";
2
+ export type {
3
+ ContentFeatureTextProps,
4
+ ContentFeatureTextSize,
5
+ } from "./ContentFeatureText";
@@ -0,0 +1,43 @@
1
+ import type { ElementType, ReactNode } from "react";
2
+ import clsx from "clsx";
3
+
4
+ export type ContentHeadingSize = "xs" | "sm" | "md" | "lg" | "xl";
5
+
6
+ export interface ContentHeadingProps {
7
+ /** Type scale. xs/sm use the body font; md/lg/xl use the display font. */
8
+ size?: ContentHeadingSize;
9
+ /** Rendered element. Defaults to `h2`. */
10
+ as?: ElementType;
11
+ children: ReactNode;
12
+ className?: string;
13
+ }
14
+
15
+ // xs→text-lg, sm→text-xl, md→display-xs, lg→display-sm, xl→display-md
16
+ // (verified per-size against Figma "Content item / Heading").
17
+ const sizeClasses: Record<ContentHeadingSize, string> = {
18
+ xs: "font-body text-lg",
19
+ sm: "font-body text-xl",
20
+ md: "font-display text-display-xs",
21
+ lg: "font-display text-display-sm",
22
+ xl: "font-display text-display-md",
23
+ };
24
+
25
+ /** Long-form content heading (article/marketing body copy). */
26
+ export function ContentHeading({
27
+ size = "md",
28
+ as: Tag = "h2",
29
+ children,
30
+ className,
31
+ }: ContentHeadingProps) {
32
+ return (
33
+ <Tag
34
+ className={clsx(
35
+ "font-semibold text-text-primary",
36
+ sizeClasses[size],
37
+ className,
38
+ )}
39
+ >
40
+ {children}
41
+ </Tag>
42
+ );
43
+ }
@@ -0,0 +1,5 @@
1
+ export { ContentHeading } from "./ContentHeading";
2
+ export type {
3
+ ContentHeadingProps,
4
+ ContentHeadingSize,
5
+ } from "./ContentHeading";