raft-ui 0.0.5 → 0.0.6

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 (110) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/button-CJqMhTPQ.mjs +621 -0
  3. package/dist/index-CpGciYPW.d.mts +267 -0
  4. package/dist/index.d.mts +11 -253
  5. package/dist/index.mjs +32 -587
  6. package/dist/wip.d.mts +133 -15
  7. package/dist/wip.mjs +289 -16
  8. package/package.json +5 -7
  9. package/src/components/alert-dialog/alert-dialog.tsx +215 -0
  10. package/src/components/alert-dialog/index.ts +30 -0
  11. package/src/components/avatar/avatar.tsx +3 -3
  12. package/src/components/avatar/index.ts +2 -2
  13. package/src/components/badge/badge.tsx +2 -2
  14. package/src/components/badge/index.ts +2 -2
  15. package/src/components/banner/banner.tsx +2 -2
  16. package/src/components/banner/index.ts +2 -2
  17. package/src/components/bottom-sheet/bottom-sheet.tsx +3 -3
  18. package/src/components/bottom-sheet/index.ts +2 -2
  19. package/src/components/button/button.tsx +7 -5
  20. package/src/components/button/index.ts +2 -2
  21. package/src/components/checkbox/checkbox-indicator.tsx +2 -2
  22. package/src/components/checkbox/checkbox.tsx +4 -4
  23. package/src/components/checkbox/index.ts +2 -2
  24. package/src/components/combobox/combobox.tsx +4 -4
  25. package/src/components/combobox/index.ts +1 -1
  26. package/src/components/context-menu/context-menu.tsx +4 -4
  27. package/src/components/context-menu/index.ts +2 -2
  28. package/src/components/conversation-preview-card/conversation-preview-card.tsx +2 -2
  29. package/src/components/conversation-preview-card/index.ts +2 -2
  30. package/src/components/description-list/description-list.tsx +2 -2
  31. package/src/components/description-list/index.ts +2 -2
  32. package/src/components/dialog/dialog.tsx +152 -0
  33. package/src/components/dialog/index.ts +26 -0
  34. package/src/components/dropdown-menu/dropdown-menu.tsx +5 -5
  35. package/src/components/dropdown-menu/index.ts +2 -2
  36. package/src/components/empty-state/empty-state.tsx +2 -2
  37. package/src/components/empty-state/index.ts +2 -2
  38. package/src/components/field/field.tsx +4 -4
  39. package/src/components/field/index.ts +2 -2
  40. package/src/components/inline-code/index.ts +2 -2
  41. package/src/components/inline-code/inline-code.tsx +2 -2
  42. package/src/components/input/index.ts +2 -2
  43. package/src/components/input/input.tsx +4 -4
  44. package/src/components/input-group/index.ts +2 -2
  45. package/src/components/input-group/input-group.tsx +5 -5
  46. package/src/components/kbd/index.ts +2 -2
  47. package/src/components/kbd/kbd.tsx +2 -2
  48. package/src/components/label/index.ts +2 -7
  49. package/src/components/label/label.tsx +2 -2
  50. package/src/components/lightbox/index.ts +2 -2
  51. package/src/components/lightbox/lightbox.tsx +3 -3
  52. package/src/components/list-item/index.ts +2 -2
  53. package/src/components/list-item/list-item.tsx +2 -2
  54. package/src/components/media-list-item/index.ts +2 -2
  55. package/src/components/media-list-item/media-list-item.tsx +4 -4
  56. package/src/components/notification-center/index.ts +2 -2
  57. package/src/components/notification-center/notification-center.tsx +5 -5
  58. package/src/components/panel-header/index.ts +2 -2
  59. package/src/components/panel-header/panel-header.tsx +2 -2
  60. package/src/components/popover/index.ts +2 -2
  61. package/src/components/popover/popover.tsx +3 -3
  62. package/src/components/preview-shell/index.ts +2 -2
  63. package/src/components/preview-shell/preview-shell.tsx +2 -2
  64. package/src/components/quoted-message-card/index.ts +2 -2
  65. package/src/components/quoted-message-card/quoted-message-card.tsx +3 -3
  66. package/src/components/radio-group/index.ts +2 -6
  67. package/src/components/radio-group/radio-group.tsx +4 -4
  68. package/src/components/section-header/index.ts +2 -2
  69. package/src/components/section-header/section-header.tsx +2 -2
  70. package/src/components/section-label/index.ts +2 -2
  71. package/src/components/section-label/section-label.tsx +2 -2
  72. package/src/components/segmented-control/index.ts +2 -2
  73. package/src/components/segmented-control/segmented-control.tsx +3 -3
  74. package/src/components/select/index.ts +2 -2
  75. package/src/components/select/select.tsx +4 -4
  76. package/src/components/separator/index.ts +2 -0
  77. package/src/components/separator/separator.tsx +40 -0
  78. package/src/components/spinner/index.ts +2 -2
  79. package/src/components/spinner/spinner.tsx +3 -3
  80. package/src/components/status/index.ts +2 -2
  81. package/src/components/status/status.tsx +2 -2
  82. package/src/components/tabs/index.ts +2 -2
  83. package/src/components/tabs/tabs.tsx +3 -3
  84. package/src/components/text/index.ts +2 -2
  85. package/src/components/text/text.tsx +1 -1
  86. package/src/components/textarea/index.ts +2 -2
  87. package/src/components/textarea/textarea.tsx +3 -3
  88. package/src/components/toggle-group/index.ts +2 -7
  89. package/src/components/toggle-group/toggle-group.tsx +3 -3
  90. package/src/components/tooltip/index.ts +2 -8
  91. package/src/components/tooltip/tooltip.tsx +3 -3
  92. package/src/index.ts +60 -57
  93. package/src/legacy/AvatarListRow.tsx +1 -1
  94. package/src/legacy/Checkbox.tsx +1 -1
  95. package/src/legacy/ConversationPreviewCard.tsx +1 -1
  96. package/src/legacy/DismissBackdrop.tsx +1 -1
  97. package/src/legacy/ExperimentalBadge.tsx +1 -1
  98. package/src/legacy/NotificationCenter.tsx +2 -2
  99. package/src/legacy/PanelHeader.tsx +1 -1
  100. package/src/legacy/QuotedMessageCard.tsx +1 -1
  101. package/src/legacy/SectionHeader.tsx +1 -1
  102. package/src/legacy/Spinner.tsx +1 -1
  103. package/src/legacy/SurfaceListItem.tsx +1 -1
  104. package/src/legacy/selection-popover.tsx +2 -2
  105. package/src/legacy/server-switcher-menu.tsx +2 -2
  106. package/src/lib/theme/theme-provider.tsx +1 -1
  107. package/src/lib/theme/use-theme.ts +1 -1
  108. package/src/wip.ts +82 -24
  109. package/dist/styled-props-B3SNekJg.d.mts +0 -16
  110. package/dist/use-theme-Y_h1DKll.mjs +0 -34
@@ -0,0 +1,26 @@
1
+ export {
2
+ Dialog,
3
+ DialogBody,
4
+ DialogClose,
5
+ DialogContent,
6
+ DialogDescription,
7
+ DialogFooter,
8
+ DialogHeader,
9
+ DialogOverlay,
10
+ DialogPortal,
11
+ DialogTitle,
12
+ DialogTrigger,
13
+ } from "./dialog";
14
+ export type {
15
+ DialogBodyProps,
16
+ DialogCloseProps,
17
+ DialogContentProps,
18
+ DialogDescriptionProps,
19
+ DialogFooterProps,
20
+ DialogHeaderProps,
21
+ DialogOverlayProps,
22
+ DialogPortalProps,
23
+ DialogProps,
24
+ DialogTitleProps,
25
+ DialogTriggerProps,
26
+ } from "./dialog";
@@ -1,10 +1,10 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
2
  import { Menu as BaseMenu } from "@base-ui/react/menu";
3
- import { tv } from "../../lib/tv.ts";
4
- import { Badge, type BadgeProps } from "../badge/index.ts";
5
- import { Kbd, type KbdProps } from "../kbd/index.ts";
6
- import type { StyledProps } from "../../lib/styled-props.ts";
7
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import { Badge, type BadgeProps } from "../badge/index";
5
+ import { Kbd, type KbdProps } from "../kbd/index";
6
+ import type { StyledProps } from "../../lib/styled-props";
7
+ import { useThemeFamily } from "../../lib/theme/use-theme";
8
8
 
9
9
  const dropdownMenu = tv({
10
10
  slots: {
@@ -16,7 +16,7 @@ export {
16
16
  DropdownMenuSubmenuTrigger,
17
17
  DropdownMenuPopup,
18
18
  DropdownMenuTrigger,
19
- } from "./dropdown-menu.tsx";
19
+ } from "./dropdown-menu";
20
20
  export type {
21
21
  DropdownMenuCheckboxItemIndicatorProps,
22
22
  DropdownMenuCheckboxItemProps,
@@ -35,4 +35,4 @@ export type {
35
35
  DropdownMenuSubmenuTriggerProps,
36
36
  DropdownMenuPopupProps,
37
37
  DropdownMenuTriggerProps,
38
- } from "./dropdown-menu.tsx";
38
+ } from "./dropdown-menu";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv } from "../../lib/tv.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
5
 
6
6
  // EmptyState family: a quiet "nothing here yet" surface — muted icon, muted
7
7
  // title, optional description + action. Composed from a centered root, a
@@ -5,7 +5,7 @@ export {
5
5
  EmptyStateTitle,
6
6
  EmptyStateDescription,
7
7
  EmptyStateActions,
8
- } from "./empty-state.tsx";
8
+ } from "./empty-state";
9
9
  export type {
10
10
  EmptyStateProps,
11
11
  EmptyStateContentProps,
@@ -13,4 +13,4 @@ export type {
13
13
  EmptyStateTitleProps,
14
14
  EmptyStateDescriptionProps,
15
15
  EmptyStateActionsProps,
16
- } from "./empty-state.tsx";
16
+ } from "./empty-state";
@@ -1,8 +1,8 @@
1
1
  import { Field as BaseField } from "@base-ui/react/field";
2
- import { tv, type VariantProps } from "../../lib/tv.ts";
3
- import { LabelAsterisk, LabelOptional } from "../label/label.tsx";
4
- import type { StyledProps } from "../../lib/styled-props.ts";
5
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
2
+ import { tv, type VariantProps } from "../../lib/tv";
3
+ import { LabelAsterisk, LabelOptional } from "../label/label";
4
+ import type { StyledProps } from "../../lib/styled-props";
5
+ import { useThemeFamily } from "../../lib/theme/use-theme";
6
6
 
7
7
  const field = tv({
8
8
  slots: {
@@ -6,7 +6,7 @@ export {
6
6
  FieldItem,
7
7
  FieldLabel,
8
8
  FieldValidity,
9
- } from "./field.tsx";
9
+ } from "./field";
10
10
  export type {
11
11
  FieldControlProps,
12
12
  FieldProps,
@@ -15,4 +15,4 @@ export type {
15
15
  FieldErrorProps,
16
16
  FieldItemProps,
17
17
  FieldValidityProps,
18
- } from "./field.tsx";
18
+ } from "./field";
@@ -1,2 +1,2 @@
1
- export { InlineCode } from "./inline-code.tsx";
2
- export type { InlineCodeProps } from "./inline-code.tsx";
1
+ export { InlineCode } from "./inline-code";
2
+ export type { InlineCodeProps } from "./inline-code";
@@ -1,6 +1,6 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
- import { tv } from "../../lib/tv.ts";
3
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
2
+ import { tv } from "../../lib/tv";
3
+ import { useThemeFamily } from "../../lib/theme/use-theme";
4
4
 
5
5
  const inlineCode = tv({
6
6
  slots: {
@@ -1,2 +1,2 @@
1
- export { Input } from "./input.tsx";
2
- export type { InputProps } from "./input.tsx";
1
+ export { Input } from "./input";
2
+ export type { InputProps } from "./input";
@@ -1,8 +1,8 @@
1
1
  import { Input as BaseInput } from "@base-ui/react/input";
2
- import { tv } from "../../lib/tv.ts";
3
- import type { StyledProps } from "../../lib/styled-props.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
5
- import type { WithoutChildren } from "../../lib/without-children.ts";
2
+ import { tv } from "../../lib/tv";
3
+ import type { StyledProps } from "../../lib/styled-props";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
+ import type { WithoutChildren } from "../../lib/without-children";
6
6
 
7
7
  // The brutal field visual (formerly the app's `.input-brutal` class). The error
8
8
  // state is driven by `aria-invalid` so the control styles itself while Field /
@@ -1,7 +1,7 @@
1
- export { InputGroup, InputGroupAddon, InputGroupInput } from "./input-group.tsx";
1
+ export { InputGroup, InputGroupAddon, InputGroupInput } from "./input-group";
2
2
  export type {
3
3
  InputGroupProps,
4
4
  InputGroupAddonProps,
5
5
  InputGroupInputProps,
6
6
  InputGroupAddonTextProps,
7
- } from "./input-group.tsx";
7
+ } from "./input-group";
@@ -1,10 +1,10 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
2
  import { Input as BaseInput } from "@base-ui/react/input";
3
- import { tv, type VariantProps } from "../../lib/tv.ts";
4
- import type { StyledProps } from "../../lib/styled-props.ts";
5
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
6
- import type { WithoutChildren } from "../../lib/without-children.ts";
7
- import { type InputBehaviorProps } from "../input/input.tsx";
3
+ import { tv, type VariantProps } from "../../lib/tv";
4
+ import type { StyledProps } from "../../lib/styled-props";
5
+ import { useThemeFamily } from "../../lib/theme/use-theme";
6
+ import type { WithoutChildren } from "../../lib/without-children";
7
+ import { type InputBehaviorProps } from "../input/input";
8
8
 
9
9
  // InputGroup moves the input shell onto the wrapper so addons can live inside the
10
10
  // bordered box. State styling is driven by the inner control via `has-*`.
@@ -1,2 +1,2 @@
1
- export { Kbd, KbdGroup } from "./kbd.tsx";
2
- export type { KbdGroupProps, KbdProps } from "./kbd.tsx";
1
+ export { Kbd, KbdGroup } from "./kbd";
2
+ export type { KbdGroupProps, KbdProps } from "./kbd";
@@ -1,6 +1,6 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
- import { tv } from "../../lib/tv.ts";
3
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
2
+ import { tv } from "../../lib/tv";
3
+ import { useThemeFamily } from "../../lib/theme/use-theme";
4
4
 
5
5
  const kbd = tv({
6
6
  slots: {
@@ -1,7 +1,2 @@
1
- export { Label, LabelAsterisk, LabelOptional, LabelSub } from "./label.tsx";
2
- export type {
3
- LabelAsteriskProps,
4
- LabelOptionalProps,
5
- LabelProps,
6
- LabelSubProps,
7
- } from "./label.tsx";
1
+ export { Label, LabelAsterisk, LabelOptional, LabelSub } from "./label";
2
+ export type { LabelAsteriskProps, LabelOptionalProps, LabelProps, LabelSubProps } from "./label";
@@ -1,8 +1,8 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
3
  import type { ComponentPropsWithRef } from "react";
4
- import { tv, type VariantProps } from "../../lib/tv.ts";
5
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
4
+ import { tv, type VariantProps } from "../../lib/tv";
5
+ import { useThemeFamily } from "../../lib/theme/use-theme";
6
6
 
7
7
  const label = tv({
8
8
  slots: {
@@ -9,7 +9,7 @@ export {
9
9
  LightboxStage,
10
10
  LightboxTitle,
11
11
  LightboxTrigger,
12
- } from "./lightbox.tsx";
12
+ } from "./lightbox";
13
13
  export type {
14
14
  LightboxActionsProps,
15
15
  LightboxCloseProps,
@@ -21,4 +21,4 @@ export type {
21
21
  LightboxStageProps,
22
22
  LightboxTitleProps,
23
23
  LightboxTriggerProps,
24
- } from "./lightbox.tsx";
24
+ } from "./lightbox";
@@ -3,9 +3,9 @@ import { mergeProps } from "@base-ui/react/merge-props";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  import { useHotkey } from "@tanstack/react-hotkeys";
5
5
  import { useCallback, useRef, useState, type ReactNode, type RefObject } from "react";
6
- import { tv } from "../../lib/tv.ts";
7
- import type { StyledProps } from "../../lib/styled-props.ts";
8
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
6
+ import { tv } from "../../lib/tv";
7
+ import type { StyledProps } from "../../lib/styled-props";
8
+ import { useThemeFamily } from "../../lib/theme/use-theme";
9
9
 
10
10
  const lightbox = tv({
11
11
  slots: {
@@ -7,7 +7,7 @@ export {
7
7
  ListItemRow,
8
8
  ListItemMeta,
9
9
  ListItemTitle,
10
- } from "./list-item.tsx";
10
+ } from "./list-item";
11
11
  export type {
12
12
  ListItemActionGroupProps,
13
13
  ListItemBodyProps,
@@ -17,4 +17,4 @@ export type {
17
17
  ListItemMetaProps,
18
18
  ListItemProps,
19
19
  ListItemTitleProps,
20
- } from "./list-item.tsx";
20
+ } from "./list-item";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv, type VariantProps } from "../../lib/tv.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv, type VariantProps } from "../../lib/tv";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
5
 
6
6
  const listItem = tv({
7
7
  slots: {
@@ -7,7 +7,7 @@ export {
7
7
  MediaListItemSubtitle,
8
8
  MediaListItemAside,
9
9
  MediaListItemVisual,
10
- } from "./media-list-item.tsx";
10
+ } from "./media-list-item";
11
11
  export type {
12
12
  MediaListItemProps,
13
13
  MediaListItemActionGroupProps,
@@ -17,4 +17,4 @@ export type {
17
17
  MediaListItemSubtitleProps,
18
18
  MediaListItemAsideProps,
19
19
  MediaListItemVisualProps,
20
- } from "./media-list-item.tsx";
20
+ } from "./media-list-item";
@@ -2,10 +2,10 @@ import type { ComponentPropsWithRef } from "react";
2
2
  import { Button as BaseButton } from "@base-ui/react/button";
3
3
  import { mergeProps } from "@base-ui/react/merge-props";
4
4
  import { useRender } from "@base-ui/react/use-render";
5
- import { tv, type VariantProps } from "../../lib/tv.ts";
6
- import { cn } from "../../lib/cn.ts";
7
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
8
- import { ListItem, type ListItemProps } from "../list-item/list-item.tsx";
5
+ import { tv, type VariantProps } from "../../lib/tv";
6
+ import { cn } from "../../lib/cn";
7
+ import { useThemeFamily } from "../../lib/theme/use-theme";
8
+ import { ListItem, type ListItemProps } from "../list-item/list-item";
9
9
 
10
10
  const mediaItem = tv({
11
11
  slots: {
@@ -17,7 +17,7 @@ export type {
17
17
  NotificationCenterScrollerProps,
18
18
  NotificationCenterTitleProps,
19
19
  NotificationCenterTriggerProps,
20
- } from "./notification-center.tsx";
20
+ } from "./notification-center";
21
21
  export {
22
22
  NotificationCenter,
23
23
  NotificationCenterActionButton,
@@ -36,4 +36,4 @@ export {
36
36
  NotificationCenterScroller,
37
37
  NotificationCenterTitle,
38
38
  NotificationCenterTrigger,
39
- } from "./notification-center.tsx";
39
+ } from "./notification-center";
@@ -2,11 +2,11 @@ import { Popover as BasePopover } from "@base-ui/react/popover";
2
2
  import { mergeProps } from "@base-ui/react/merge-props";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  import { AlertTriangle, CheckCircle2, Info } from "lucide-react";
5
- import { tv, type VariantProps } from "../../lib/tv.ts";
6
- import { EmptyState, type EmptyStateProps } from "../empty-state/empty-state.tsx";
7
- import { Button, type ButtonProps } from "../button/button.tsx";
8
- import type { StyledProps } from "../../lib/styled-props.ts";
9
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
5
+ import { tv, type VariantProps } from "../../lib/tv";
6
+ import { EmptyState, type EmptyStateProps } from "../empty-state/empty-state";
7
+ import { Button, type ButtonProps } from "../button/button";
8
+ import type { StyledProps } from "../../lib/styled-props";
9
+ import { useThemeFamily } from "../../lib/theme/use-theme";
10
10
 
11
11
  const notificationCenter = tv({
12
12
  slots: {
@@ -8,7 +8,7 @@ export {
8
8
  PanelHeaderTitle,
9
9
  PanelHeaderTitleRow,
10
10
  PanelHeaderVisual,
11
- } from "./panel-header.tsx";
11
+ } from "./panel-header";
12
12
  export type {
13
13
  PanelHeaderActionsProps,
14
14
  PanelHeaderContentProps,
@@ -19,4 +19,4 @@ export type {
19
19
  PanelHeaderTitleProps,
20
20
  PanelHeaderTitleRowProps,
21
21
  PanelHeaderVisualProps,
22
- } from "./panel-header.tsx";
22
+ } from "./panel-header";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv } from "../../lib/tv.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
5
 
6
6
  const panelHeader = tv({
7
7
  slots: {
@@ -12,7 +12,7 @@ export {
12
12
  PopoverTitle,
13
13
  PopoverTrigger,
14
14
  PopoverViewport,
15
- } from "./popover.tsx";
15
+ } from "./popover";
16
16
  export type {
17
17
  PopoverArrowProps,
18
18
  PopoverBackdropProps,
@@ -27,4 +27,4 @@ export type {
27
27
  PopoverTitleProps,
28
28
  PopoverTriggerProps,
29
29
  PopoverViewportProps,
30
- } from "./popover.tsx";
30
+ } from "./popover";
@@ -1,8 +1,8 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
2
  import { Popover as BasePopover } from "@base-ui/react/popover";
3
- import { tv } from "../../lib/tv.ts";
4
- import type { StyledProps } from "../../lib/styled-props.ts";
5
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import type { StyledProps } from "../../lib/styled-props";
5
+ import { useThemeFamily } from "../../lib/theme/use-theme";
6
6
 
7
7
  const popover = tv({
8
8
  slots: {
@@ -1,2 +1,2 @@
1
- export { PreviewShell } from "./preview-shell.tsx";
2
- export type { PreviewShellProps } from "./preview-shell.tsx";
1
+ export { PreviewShell } from "./preview-shell";
2
+ export type { PreviewShellProps } from "./preview-shell";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv, type VariantProps } from "../../lib/tv.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv, type VariantProps } from "../../lib/tv";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
5
 
6
6
  const previewShell = tv({
7
7
  slots: {
@@ -15,7 +15,7 @@ export {
15
15
  QuotedMessageCardThread,
16
16
  QuotedMessageCardTimestamp,
17
17
  QuotedMessageCardUnavailable,
18
- } from "./quoted-message-card.tsx";
18
+ } from "./quoted-message-card";
19
19
  export type {
20
20
  QuotedMessageCardAttachmentsProps,
21
21
  QuotedMessageCardAuthorNameProps,
@@ -33,4 +33,4 @@ export type {
33
33
  QuotedMessageCardThreadProps,
34
34
  QuotedMessageCardTimestampProps,
35
35
  QuotedMessageCardUnavailableProps,
36
- } from "./quoted-message-card.tsx";
36
+ } from "./quoted-message-card";
@@ -1,9 +1,9 @@
1
1
  import { MessageSquare } from "lucide-react";
2
2
  import { mergeProps } from "@base-ui/react/merge-props";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
- import { tv } from "../../lib/tv.ts";
5
- import { PreviewShell, type PreviewShellProps } from "../preview-shell/preview-shell.tsx";
6
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
4
+ import { tv } from "../../lib/tv";
5
+ import { PreviewShell, type PreviewShellProps } from "../preview-shell/preview-shell";
6
+ import { useThemeFamily } from "../../lib/theme/use-theme";
7
7
 
8
8
  // A quoted-message preview routed through PreviewShell. The source's app-domain
9
9
  // fields (channel object, author fetching, markdown rendering, attachments
@@ -1,6 +1,2 @@
1
- export { RadioGroup, RadioGroupIndicator, RadioGroupItem } from "./radio-group.tsx";
2
- export type {
3
- RadioGroupIndicatorProps,
4
- RadioGroupItemProps,
5
- RadioGroupProps,
6
- } from "./radio-group.tsx";
1
+ export { RadioGroup, RadioGroupIndicator, RadioGroupItem } from "./radio-group";
2
+ export type { RadioGroupIndicatorProps, RadioGroupItemProps, RadioGroupProps } from "./radio-group";
@@ -1,9 +1,9 @@
1
1
  import { Radio as BaseRadio } from "@base-ui/react/radio";
2
2
  import { RadioGroup as BaseRadioGroup } from "@base-ui/react/radio-group";
3
- import { tv } from "../../lib/tv.ts";
4
- import { cn } from "../../lib/cn.ts";
5
- import type { StyledProps } from "../../lib/styled-props.ts";
6
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import { cn } from "../../lib/cn";
5
+ import type { StyledProps } from "../../lib/styled-props";
6
+ import { useThemeFamily } from "../../lib/theme/use-theme";
7
7
 
8
8
  const radioGroup = tv({
9
9
  slots: {
@@ -5,7 +5,7 @@ export {
5
5
  SectionHeaderCount,
6
6
  SectionHeaderIcon,
7
7
  SectionHeaderTitle,
8
- } from "./section-header.tsx";
8
+ } from "./section-header";
9
9
  export type {
10
10
  SectionHeaderActionsProps,
11
11
  SectionHeaderContentProps,
@@ -13,4 +13,4 @@ export type {
13
13
  SectionHeaderIconProps,
14
14
  SectionHeaderProps,
15
15
  SectionHeaderTitleProps,
16
- } from "./section-header.tsx";
16
+ } from "./section-header";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv } from "../../lib/tv.ts";
4
- import { SectionLabel, type SectionLabelProps } from "../section-label/section-label.tsx";
3
+ import { tv } from "../../lib/tv";
4
+ import { SectionLabel, type SectionLabelProps } from "../section-label/section-label";
5
5
 
6
6
  const sectionHeader = tv({
7
7
  slots: {
@@ -1,2 +1,2 @@
1
- export { SectionLabel } from "./section-label.tsx";
2
- export type { SectionLabelProps } from "./section-label.tsx";
1
+ export { SectionLabel } from "./section-label";
2
+ export type { SectionLabelProps } from "./section-label";
@@ -1,7 +1,7 @@
1
1
  import { mergeProps } from "@base-ui/react/merge-props";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
- import { tv } from "../../lib/tv.ts";
4
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
3
+ import { tv } from "../../lib/tv";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
5
 
6
6
  const sectionLabel = tv({
7
7
  slots: {
@@ -3,10 +3,10 @@ export {
3
3
  SegmentedControlCount,
4
4
  SegmentedControlItem,
5
5
  SegmentedControlLabel,
6
- } from "./segmented-control.tsx";
6
+ } from "./segmented-control";
7
7
  export type {
8
8
  SegmentedControlCountProps,
9
9
  SegmentedControlItemProps,
10
10
  SegmentedControlLabelProps,
11
11
  SegmentedControlProps,
12
- } from "./segmented-control.tsx";
12
+ } from "./segmented-control";
@@ -1,9 +1,9 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
2
  import { Radio as BaseRadio } from "@base-ui/react/radio";
3
3
  import { RadioGroup as BaseRadioGroup } from "@base-ui/react/radio-group";
4
- import { tv, type VariantProps } from "../../lib/tv.ts";
5
- import type { StyledProps } from "../../lib/styled-props.ts";
6
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
4
+ import { tv, type VariantProps } from "../../lib/tv";
5
+ import type { StyledProps } from "../../lib/styled-props";
6
+ import { useThemeFamily } from "../../lib/theme/use-theme";
7
7
 
8
8
  const segmentedControl = tv({
9
9
  slots: {
@@ -17,7 +17,7 @@ export {
17
17
  SelectSeparator,
18
18
  SelectTrigger,
19
19
  SelectValue,
20
- } from "./select.tsx";
20
+ } from "./select";
21
21
  export type {
22
22
  SelectArrowProps,
23
23
  SelectContentProps,
@@ -37,4 +37,4 @@ export type {
37
37
  SelectSeparatorProps,
38
38
  SelectTriggerProps,
39
39
  SelectValueProps,
40
- } from "./select.tsx";
40
+ } from "./select";
@@ -1,10 +1,10 @@
1
1
  import type { ComponentPropsWithRef } from "react";
2
2
  import { Select as BaseSelect } from "@base-ui/react/select";
3
3
  import { Check, ChevronDown } from "lucide-react";
4
- import { tv } from "../../lib/tv.ts";
5
- import type { StyledProps } from "../../lib/styled-props.ts";
6
- import { useThemeFamily } from "../../lib/theme/use-theme.ts";
7
- import { Button } from "../button/index.ts";
4
+ import { tv } from "../../lib/tv";
5
+ import type { StyledProps } from "../../lib/styled-props";
6
+ import { useThemeFamily } from "../../lib/theme/use-theme";
7
+ import { Button } from "../button/index";
8
8
 
9
9
  const select = tv({
10
10
  slots: {
@@ -0,0 +1,2 @@
1
+ export { Separator } from "./separator";
2
+ export type { SeparatorProps } from "./separator";
@@ -0,0 +1,40 @@
1
+ import { Separator as BaseSeparator } from "@base-ui/react/separator";
2
+ import { tv } from "../../lib/tv";
3
+ import type { StyledProps } from "../../lib/styled-props";
4
+ import { useThemeFamily } from "../../lib/theme/use-theme";
5
+
6
+ const separator = tv({
7
+ base: [
8
+ "shrink-0",
9
+ "data-[orientation=horizontal]:w-full",
10
+ "data-[orientation=vertical]:self-stretch",
11
+ ],
12
+ variants: {
13
+ theme: {
14
+ brutal: [
15
+ "data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t-2 data-[orientation=horizontal]:border-black",
16
+ "data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l-2 data-[orientation=vertical]:border-black",
17
+ ],
18
+ elegant: [
19
+ "bg-line-muted",
20
+ "data-[orientation=horizontal]:h-px",
21
+ "data-[orientation=vertical]:w-px",
22
+ ],
23
+ },
24
+ },
25
+ });
26
+
27
+ export type SeparatorProps = StyledProps<BaseSeparator.Props>;
28
+
29
+ export function Separator({ className, orientation = "horizontal", ...props }: SeparatorProps) {
30
+ const theme = useThemeFamily();
31
+
32
+ return (
33
+ <BaseSeparator
34
+ data-slot="separator"
35
+ orientation={orientation}
36
+ className={separator({ theme, className })}
37
+ {...props}
38
+ />
39
+ );
40
+ }
@@ -1,2 +1,2 @@
1
- export { Spinner } from "./spinner.tsx";
2
- export type { SpinnerProps } from "./spinner.tsx";
1
+ export { Spinner } from "./spinner";
2
+ export type { SpinnerProps } from "./spinner";