@octanejs/shadcn 0.0.52 → 0.0.53

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 (83) hide show
  1. package/package.json +9 -9
  2. package/src/bases/base-ui/ui/accordion.tsrx +3 -1
  3. package/src/bases/base-ui/ui/alert-dialog.tsrx +6 -5
  4. package/src/bases/base-ui/ui/alert.tsrx +3 -2
  5. package/src/bases/base-ui/ui/aspect-ratio.tsrx +5 -3
  6. package/src/bases/base-ui/ui/badge.tsrx +2 -1
  7. package/src/bases/base-ui/ui/breadcrumb.tsrx +4 -4
  8. package/src/bases/base-ui/ui/button.tsrx +17 -10
  9. package/src/bases/base-ui/ui/context-menu.tsrx +37 -29
  10. package/src/bases/base-ui/ui/dialog.tsrx +6 -4
  11. package/src/bases/base-ui/ui/dropdown-menu.tsrx +37 -29
  12. package/src/bases/base-ui/ui/empty.tsrx +1 -1
  13. package/src/bases/base-ui/ui/field.tsrx +17 -11
  14. package/src/bases/base-ui/ui/hover-card.tsrx +15 -16
  15. package/src/bases/base-ui/ui/item.tsrx +3 -2
  16. package/src/bases/base-ui/ui/kbd.tsrx +1 -1
  17. package/src/bases/base-ui/ui/menubar.tsrx +38 -34
  18. package/src/bases/base-ui/ui/native-select.tsrx +3 -4
  19. package/src/bases/base-ui/ui/navigation-menu.tsrx +113 -87
  20. package/src/bases/base-ui/ui/pagination.tsrx +6 -2
  21. package/src/bases/base-ui/ui/popover.tsrx +15 -16
  22. package/src/bases/base-ui/ui/radio-group.tsrx +1 -3
  23. package/src/bases/base-ui/ui/scroll-area.tsrx +33 -27
  24. package/src/bases/base-ui/ui/select.tsrx +138 -106
  25. package/src/bases/base-ui/ui/sheet.tsrx +6 -4
  26. package/src/bases/base-ui/ui/sidebar.tsrx +65 -44
  27. package/src/bases/base-ui/ui/slider.tsrx +1 -3
  28. package/src/bases/base-ui/ui/tabs.tsrx +1 -1
  29. package/src/bases/base-ui/ui/toggle-group.tsrx +3 -3
  30. package/src/bases/base-ui/ui/toggle.tsrx +3 -2
  31. package/src/bases/base-ui/ui/tooltip.tsrx +17 -17
  32. package/src/bases/radix/ui/accordion.tsrx +3 -1
  33. package/src/bases/radix/ui/alert-dialog.tsrx +1 -1
  34. package/src/bases/radix/ui/alert.tsrx +15 -14
  35. package/src/bases/radix/ui/badge.tsrx +2 -1
  36. package/src/bases/radix/ui/button.tsrx +17 -10
  37. package/src/bases/radix/ui/context-menu.tsrx +20 -10
  38. package/src/bases/radix/ui/dropdown-menu.tsrx +16 -9
  39. package/src/bases/radix/ui/empty.tsrx +1 -1
  40. package/src/bases/radix/ui/field.tsrx +17 -11
  41. package/src/bases/radix/ui/item.tsrx +3 -2
  42. package/src/bases/radix/ui/menubar.tsrx +17 -14
  43. package/src/bases/radix/ui/native-select.tsrx +8 -8
  44. package/src/bases/radix/ui/navigation-menu.tsrx +2 -3
  45. package/src/bases/radix/ui/pagination.tsrx +6 -2
  46. package/src/bases/radix/ui/radio-group.tsrx +1 -3
  47. package/src/bases/radix/ui/scroll-area.tsrx +8 -2
  48. package/src/bases/radix/ui/select.tsrx +10 -5
  49. package/src/bases/radix/ui/sidebar.tsrx +61 -42
  50. package/src/bases/radix/ui/slider.tsrx +9 -7
  51. package/src/bases/radix/ui/tabs.tsrx +11 -5
  52. package/src/bases/radix/ui/toggle.tsrx +3 -2
  53. package/src/bases/radix/ui/tooltip.tsrx +2 -1
  54. package/src/bases/react-aria/ui/accordion.tsrx +58 -47
  55. package/src/bases/react-aria/ui/alert-dialog.tsrx +118 -92
  56. package/src/bases/react-aria/ui/alert.tsrx +39 -32
  57. package/src/bases/react-aria/ui/aspect-ratio.tsrx +12 -8
  58. package/src/bases/react-aria/ui/avatar.tsrx +73 -57
  59. package/src/bases/react-aria/ui/badge.tsrx +19 -12
  60. package/src/bases/react-aria/ui/breadcrumb.tsrx +66 -57
  61. package/src/bases/react-aria/ui/button.tsrx +17 -10
  62. package/src/bases/react-aria/ui/card.tsrx +63 -49
  63. package/src/bases/react-aria/ui/checkbox.tsrx +25 -19
  64. package/src/bases/react-aria/ui/dialog.tsrx +103 -83
  65. package/src/bases/react-aria/ui/empty.tsrx +58 -44
  66. package/src/bases/react-aria/ui/field.tsrx +142 -100
  67. package/src/bases/react-aria/ui/input.tsrx +2 -3
  68. package/src/bases/react-aria/ui/item.tsrx +98 -78
  69. package/src/bases/react-aria/ui/kbd.tsrx +1 -1
  70. package/src/bases/react-aria/ui/label.tsrx +12 -10
  71. package/src/bases/react-aria/ui/native-select.tsrx +38 -30
  72. package/src/bases/react-aria/ui/pagination.tsrx +76 -60
  73. package/src/bases/react-aria/ui/popover.tsrx +32 -22
  74. package/src/bases/react-aria/ui/radio-group.tsrx +30 -23
  75. package/src/bases/react-aria/ui/scroll-area.tsrx +12 -8
  76. package/src/bases/react-aria/ui/sheet.tsrx +92 -73
  77. package/src/bases/react-aria/ui/skeleton.tsrx +7 -5
  78. package/src/bases/react-aria/ui/slider.tsrx +44 -38
  79. package/src/bases/react-aria/ui/switch.tsrx +28 -20
  80. package/src/bases/react-aria/ui/table.tsrx +67 -51
  81. package/src/bases/react-aria/ui/tabs.tsrx +40 -31
  82. package/src/bases/react-aria/ui/textarea.tsrx +2 -3
  83. package/src/bases/react-aria/ui/toggle.tsrx +11 -8
@@ -57,12 +57,14 @@ export function useSidebar(): SidebarContextProps {
57
57
  return context;
58
58
  }
59
59
 
60
- export function SidebarProvider(props: Props & {
61
- defaultOpen?: boolean;
62
- open?: boolean;
63
- onOpenChange?: (open: boolean) => void;
64
- style?: Record<string, string>;
65
- }) {
60
+ export function SidebarProvider(
61
+ props: Props & {
62
+ defaultOpen?: boolean;
63
+ open?: boolean;
64
+ onOpenChange?: (open: boolean) => void;
65
+ style?: Record<string, string>;
66
+ },
67
+ ) {
66
68
  const {
67
69
  defaultOpen = true,
68
70
  open: openProp,
@@ -80,8 +82,7 @@ export function SidebarProvider(props: Props & {
80
82
  const [_open, _setOpen] = useState(defaultOpen);
81
83
  const open = openProp ?? _open;
82
84
  const setOpen = useCallback((value: boolean | ((value: boolean) => boolean)) => {
83
- const openState =
84
- typeof value === 'function' ? value(open) : value;
85
+ const openState = typeof value === 'function' ? value(open) : value;
85
86
  if (setOpenProp) {
86
87
  setOpenProp(openState);
87
88
  } else {
@@ -89,8 +90,7 @@ export function SidebarProvider(props: Props & {
89
90
  }
90
91
 
91
92
  // This sets the cookie to keep the sidebar state.
92
- document.cookie =
93
- `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
93
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
94
94
  });
95
95
 
96
96
  // Helper to toggle the sidebar.
@@ -115,17 +115,15 @@ export function SidebarProvider(props: Props & {
115
115
  // This makes it easier to style the sidebar with Tailwind classes.
116
116
  const state = open ? 'expanded' : 'collapsed';
117
117
 
118
- const contextValue = useMemo<SidebarContextProps>(
119
- () => ({
120
- state,
121
- open,
122
- setOpen,
123
- isMobile,
124
- openMobile,
125
- setOpenMobile,
126
- toggleSidebar,
127
- }),
128
- );
118
+ const contextValue = useMemo<SidebarContextProps>(() => ({
119
+ state,
120
+ open,
121
+ setOpen,
122
+ isMobile,
123
+ openMobile,
124
+ setOpenMobile,
125
+ toggleSidebar,
126
+ }));
129
127
 
130
128
  return createElement(
131
129
  SidebarContext,
@@ -150,12 +148,14 @@ export function SidebarProvider(props: Props & {
150
148
  );
151
149
  }
152
150
 
153
- export function Sidebar(props: Props & {
154
- side?: 'left' | 'right';
155
- variant?: 'sidebar' | 'floating' | 'inset';
156
- collapsible?: 'offcanvas' | 'icon' | 'none';
157
- dir?: string;
158
- }) {
151
+ export function Sidebar(
152
+ props: Props & {
153
+ side?: 'left' | 'right';
154
+ variant?: 'sidebar' | 'floating' | 'inset';
155
+ collapsible?: 'offcanvas' | 'icon' | 'none';
156
+ dir?: string;
157
+ },
158
+ ) {
159
159
  const {
160
160
  side = 'left',
161
161
  variant = 'sidebar',
@@ -256,7 +256,8 @@ export function Sidebar(props: Props & {
256
256
  {
257
257
  'data-sidebar': 'sidebar',
258
258
  'data-slot': 'sidebar-inner',
259
- className: 'flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',
259
+ className:
260
+ 'flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',
260
261
  },
261
262
  props.children,
262
263
  ),
@@ -264,7 +265,11 @@ export function Sidebar(props: Props & {
264
265
  );
265
266
  }
266
267
 
267
- export function SidebarTrigger({ className, onClick, ...props }: Props & {
268
+ export function SidebarTrigger({
269
+ className,
270
+ onClick,
271
+ ...props
272
+ }: Props & {
268
273
  onClick?: (event: MouseEvent) => void;
269
274
  }) @{
270
275
  const { toggleSidebar } = useSidebar();
@@ -377,7 +382,11 @@ export function SidebarGroup({ className, ...props }: Props) @{
377
382
  />
378
383
  }
379
384
 
380
- export function SidebarGroupLabel({ className, asChild = false, ...props }: Props & {
385
+ export function SidebarGroupLabel({
386
+ className,
387
+ asChild = false,
388
+ ...props
389
+ }: Props & {
381
390
  asChild?: boolean;
382
391
  }) @{
383
392
  @if (asChild) {
@@ -403,7 +412,11 @@ export function SidebarGroupLabel({ className, asChild = false, ...props }: Prop
403
412
  }
404
413
  }
405
414
 
406
- export function SidebarGroupAction({ className, asChild = false, ...props }: Props & {
415
+ export function SidebarGroupAction({
416
+ className,
417
+ asChild = false,
418
+ ...props
419
+ }: Props & {
407
420
  asChild?: boolean;
408
421
  }) @{
409
422
  @if (asChild) {
@@ -462,7 +475,8 @@ const sidebarMenuButtonVariants = cva(
462
475
  variants: {
463
476
  variant: {
464
477
  default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
465
- outline: 'bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]',
478
+ outline:
479
+ 'bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]',
466
480
  },
467
481
  size: {
468
482
  default: 'h-8 text-sm',
@@ -477,13 +491,15 @@ const sidebarMenuButtonVariants = cva(
477
491
  },
478
492
  );
479
493
 
480
- export function SidebarMenuButton(props: Props & {
481
- asChild?: boolean;
482
- isActive?: boolean;
483
- tooltip?: string | Record<string, unknown>;
484
- variant?: VariantProps<typeof sidebarMenuButtonVariants>['variant'];
485
- size?: VariantProps<typeof sidebarMenuButtonVariants>['size'];
486
- }) {
494
+ export function SidebarMenuButton(
495
+ props: Props & {
496
+ asChild?: boolean;
497
+ isActive?: boolean;
498
+ tooltip?: string | Record<string, unknown>;
499
+ variant?: VariantProps<typeof sidebarMenuButtonVariants>['variant'];
500
+ size?: VariantProps<typeof sidebarMenuButtonVariants>['size'];
501
+ },
502
+ ) {
487
503
  const {
488
504
  asChild = false,
489
505
  isActive = false,
@@ -513,8 +529,7 @@ export function SidebarMenuButton(props: Props & {
513
529
  return button;
514
530
  }
515
531
 
516
- const tooltipProps =
517
- typeof tooltip === 'string' ? { children: tooltip } : tooltip;
532
+ const tooltipProps = typeof tooltip === 'string' ? { children: tooltip } : tooltip;
518
533
 
519
534
  return createElement(
520
535
  Tooltip,
@@ -578,7 +593,11 @@ export function SidebarMenuBadge({ className, ...props }: Props) @{
578
593
  />
579
594
  }
580
595
 
581
- export function SidebarMenuSkeleton({ className, showIcon = false, ...props }: Props & {
596
+ export function SidebarMenuSkeleton({
597
+ className,
598
+ showIcon = false,
599
+ ...props
600
+ }: Props & {
582
601
  showIcon?: boolean;
583
602
  }) @{
584
603
  // Random width between 50 to 90%.
@@ -28,7 +28,7 @@ export function Slider({
28
28
  ...props
29
29
  }: SliderProps) {
30
30
  const _values = useMemo(
31
- () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
31
+ () => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),
32
32
  [value, defaultValue, min, max],
33
33
  );
34
34
 
@@ -50,19 +50,21 @@ export function Slider({
50
50
  SliderPrimitive.Track,
51
51
  {
52
52
  'data-slot': 'slider-track',
53
- className: 'relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5',
53
+ className:
54
+ 'relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5',
54
55
  },
55
56
  createElement(SliderPrimitive.Range, {
56
57
  'data-slot': 'slider-range',
57
- className: 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',
58
+ className:
59
+ 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',
58
60
  }),
59
61
  ),
60
- ...Array.from(
61
- { length: _values.length },
62
- (_, index) => createElement(SliderPrimitive.Thumb, {
62
+ ...Array.from({ length: _values.length }, (_, index) =>
63
+ createElement(SliderPrimitive.Thumb, {
63
64
  'data-slot': 'slider-thumb',
64
65
  key: index,
65
- className: 'block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50',
66
+ className:
67
+ 'block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50',
66
68
  }),
67
69
  ),
68
70
  );
@@ -8,7 +8,11 @@ import { cn } from 'cn';
8
8
 
9
9
  type Props = { className?: string } & Record<string, unknown>;
10
10
 
11
- export function Tabs({ className, orientation = 'horizontal', ...props }: Props & {
11
+ export function Tabs({
12
+ className,
13
+ orientation = 'horizontal',
14
+ ...props
15
+ }: Props & {
12
16
  orientation?: 'horizontal' | 'vertical';
13
17
  }) @{
14
18
  <TabsPrimitive.Root
@@ -35,9 +39,11 @@ export const tabsListVariants = cva(
35
39
  },
36
40
  );
37
41
 
38
- export function TabsList({ className, variant = 'default', ...props }: Props & VariantProps<
39
- typeof tabsListVariants
40
- >) @{
42
+ export function TabsList({
43
+ className,
44
+ variant = 'default',
45
+ ...props
46
+ }: Props & VariantProps<typeof tabsListVariants>) @{
41
47
  <TabsPrimitive.List
42
48
  data-slot="tabs-list"
43
49
  data-variant={variant}
@@ -50,7 +56,7 @@ export function TabsTrigger({ className, ...props }: Props) @{
50
56
  <TabsPrimitive.Trigger
51
57
  data-slot="tabs-trigger"
52
58
  className={cn(
53
- 'relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
59
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
54
60
  'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',
55
61
  'data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground',
56
62
  'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',
@@ -7,12 +7,13 @@ import { Toggle as TogglePrimitive } from '@octanejs/radix';
7
7
  import { cn } from 'cn';
8
8
 
9
9
  export const toggleVariants = cva(
10
- 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
10
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
11
11
  {
12
12
  variants: {
13
13
  variant: {
14
14
  default: 'bg-transparent',
15
- outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',
15
+ outline:
16
+ 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',
16
17
  },
17
18
  size: {
18
19
  default: 'h-9 min-w-9 px-2',
@@ -57,7 +57,8 @@ export function TooltipContent({
57
57
  children,
58
58
  createElement(TooltipPrimitive.Arrow, {
59
59
  key: 'arrow',
60
- className: 'z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground',
60
+ className:
61
+ 'z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground',
61
62
  }),
62
63
  ],
63
64
  }),
@@ -15,59 +15,70 @@ import { cn } from 'cn';
15
15
  import { ChevronDownIcon, ChevronUpIcon } from '@octanejs/lucide';
16
16
 
17
17
  export function Accordion({ className, ...props }: DisclosureGroupProps) {
18
- return <AccordionPrimitive
19
- data-slot="accordion"
20
- className={cn('flex w-full flex-col', className)}
21
- {...props}
22
- />;
18
+ return (
19
+ <AccordionPrimitive
20
+ data-slot="accordion"
21
+ className={cn('flex w-full flex-col', className)}
22
+ {...props}
23
+ />
24
+ );
23
25
  }
24
26
 
25
27
  export function AccordionItem({ className, ...props }: DisclosureProps) {
26
- return <AccordionItemPrimitive
27
- data-slot="accordion-item"
28
- className={cn('not-last:border-b', className)}
29
- {...props}
30
- />;
28
+ return (
29
+ <AccordionItemPrimitive
30
+ data-slot="accordion-item"
31
+ className={cn('not-last:border-b', className)}
32
+ {...props}
33
+ />
34
+ );
31
35
  }
32
36
 
33
- export function AccordionTrigger({ className, children, ...props }: Omit<
34
- ButtonProps,
35
- 'children'
36
- > & { children: OctaneNode }) {
37
- return <AccordionHeaderPrimitive className="flex">
38
- <AccordionTriggerPrimitive
39
- slot="trigger"
40
- data-slot="accordion-trigger"
41
- className={cn(
42
- 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',
43
- className,
44
- )}
45
- {...props}
46
- >
47
- {children}
48
- <ChevronDownIcon
49
- data-slot="accordion-trigger-icon"
50
- className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
51
- />
52
- <ChevronUpIcon
53
- data-slot="accordion-trigger-icon"
54
- className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
55
- />
56
- </AccordionTriggerPrimitive>
57
- </AccordionHeaderPrimitive>;
37
+ export function AccordionTrigger({
38
+ className,
39
+ children,
40
+ ...props
41
+ }: Omit<ButtonProps, 'children'> & { children: OctaneNode }) {
42
+ return (
43
+ <AccordionHeaderPrimitive className="flex">
44
+ <AccordionTriggerPrimitive
45
+ slot="trigger"
46
+ data-slot="accordion-trigger"
47
+ className={cn(
48
+ 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',
49
+ className,
50
+ )}
51
+ {...props}
52
+ >
53
+ {children}
54
+ <ChevronDownIcon
55
+ data-slot="accordion-trigger-icon"
56
+ className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
57
+ />
58
+ <ChevronUpIcon
59
+ data-slot="accordion-trigger-icon"
60
+ className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
61
+ />
62
+ </AccordionTriggerPrimitive>
63
+ </AccordionHeaderPrimitive>
64
+ );
58
65
  }
59
66
 
60
67
  export function AccordionContent({ className, children, ...props }: DisclosurePanelProps) {
61
- return <AccordionContentPrimitive
62
- data-slot="accordion-content"
63
- className="h-(--disclosure-panel-height) overflow-clip text-sm transition-[height] data-open:animate-accordion-down data-closed:animate-accordion-up"
64
- {...props}
65
- >
66
- <div
67
- className={cn(
68
- 'pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',
69
- className,
70
- )}
71
- >{children}</div>
72
- </AccordionContentPrimitive>;
68
+ return (
69
+ <AccordionContentPrimitive
70
+ data-slot="accordion-content"
71
+ className="h-(--disclosure-panel-height) overflow-clip text-sm transition-[height] data-open:animate-accordion-down data-closed:animate-accordion-up"
72
+ {...props}
73
+ >
74
+ <div
75
+ className={cn(
76
+ 'pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',
77
+ className,
78
+ )}
79
+ >
80
+ {children}
81
+ </div>
82
+ </AccordionContentPrimitive>
83
+ );
73
84
  }