@blips/ui 1.0.1 → 2.0.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 (59) hide show
  1. package/dist/index.cjs +3612 -2515
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +329 -484
  4. package/dist/index.d.ts +329 -484
  5. package/dist/index.js +3602 -2513
  6. package/dist/index.js.map +1 -1
  7. package/package.json +14 -12
  8. package/src/components/accordion.tsx +56 -46
  9. package/src/components/alert-dialog.tsx +166 -109
  10. package/src/components/alert.tsx +45 -38
  11. package/src/components/aspect-ratio.tsx +7 -1
  12. package/src/components/avatar.tsx +104 -45
  13. package/src/components/badge.tsx +25 -13
  14. package/src/components/breadcrumb.tsx +76 -82
  15. package/src/components/button-group.tsx +2 -2
  16. package/src/components/button.tsx +36 -28
  17. package/src/components/calendar.tsx +35 -28
  18. package/src/components/card.tsx +83 -70
  19. package/src/components/carousel.tsx +118 -137
  20. package/src/components/chart.tsx +197 -208
  21. package/src/components/checkbox.tsx +25 -21
  22. package/src/components/collapsible.tsx +25 -3
  23. package/src/components/command.tsx +138 -105
  24. package/src/components/context-menu.tsx +215 -161
  25. package/src/components/dialog.tsx +127 -91
  26. package/src/components/drawer.tsx +102 -83
  27. package/src/components/dropdown-menu.tsx +227 -170
  28. package/src/components/form.tsx +41 -52
  29. package/src/components/hover-card.tsx +36 -19
  30. package/src/components/input-group.tsx +4 -4
  31. package/src/components/input-otp.tsx +51 -43
  32. package/src/components/input.tsx +16 -17
  33. package/src/components/kbd.tsx +1 -1
  34. package/src/components/label.tsx +16 -18
  35. package/src/components/menubar.tsx +214 -192
  36. package/src/components/navigation-menu.tsx +140 -98
  37. package/src/components/pagination.tsx +97 -87
  38. package/src/components/popover.tsx +83 -23
  39. package/src/components/progress.tsx +23 -20
  40. package/src/components/radio-group.tsx +23 -20
  41. package/src/components/resizable.tsx +39 -31
  42. package/src/components/scroll-area.tsx +51 -39
  43. package/src/components/select.tsx +161 -131
  44. package/src/components/separator.tsx +13 -14
  45. package/src/components/sheet.tsx +112 -109
  46. package/src/components/sidebar.tsx +422 -470
  47. package/src/components/skeleton.tsx +4 -6
  48. package/src/components/slider.tsx +57 -20
  49. package/src/components/sonner.tsx +19 -24
  50. package/src/components/spinner.tsx +3 -3
  51. package/src/components/switch.tsx +28 -20
  52. package/src/components/table.tsx +94 -95
  53. package/src/components/tabs.tsx +88 -50
  54. package/src/components/textarea.tsx +5 -9
  55. package/src/components/toggle-group.tsx +52 -30
  56. package/src/components/toggle.tsx +24 -20
  57. package/src/components/tooltip.tsx +46 -19
  58. package/src/globals.css +213 -96
  59. package/src/index.ts +27 -6
@@ -1,52 +1,76 @@
1
1
  "use client"
2
2
 
3
3
  import * as React from "react"
4
+ import { type VariantProps } from "class-variance-authority"
4
5
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group"
5
- import type { VariantProps } from "class-variance-authority"
6
6
 
7
- import { cn } from "@/lib/utils"
8
- import { toggleVariants } from "@/components/toggle"
7
+ import { cn } from "../lib/utils"
8
+ import { toggleVariants } from "./toggle"
9
9
 
10
10
  const ToggleGroupContext = React.createContext<
11
- VariantProps<typeof toggleVariants>
11
+ VariantProps<typeof toggleVariants> & {
12
+ spacing?: number
13
+ }
12
14
  >({
13
15
  size: "default",
14
16
  variant: "default",
17
+ spacing: 0,
15
18
  })
16
19
 
17
- const ToggleGroup = React.forwardRef<
18
- React.ElementRef<typeof ToggleGroupPrimitive.Root>,
19
- React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &
20
- VariantProps<typeof toggleVariants>
21
- >(({ className, variant, size, children, ...props }, ref) => (
22
- <ToggleGroupPrimitive.Root
23
- ref={ref}
24
- className={cn("flex items-center justify-center gap-1", className)}
25
- {...props}
26
- >
27
- <ToggleGroupContext.Provider value={{ variant, size }}>
28
- {children}
29
- </ToggleGroupContext.Provider>
30
- </ToggleGroupPrimitive.Root>
31
- ))
32
-
33
- ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName
20
+ function ToggleGroup({
21
+ className,
22
+ variant,
23
+ size,
24
+ spacing = 0,
25
+ children,
26
+ ...props
27
+ }: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &
28
+ VariantProps<typeof toggleVariants> & {
29
+ spacing?: number
30
+ }) {
31
+ return (
32
+ <ToggleGroupPrimitive.Root
33
+ data-slot="toggle-group"
34
+ data-variant={variant}
35
+ data-size={size}
36
+ data-spacing={spacing}
37
+ style={{ "--gap": spacing } as React.CSSProperties}
38
+ className={cn(
39
+ "group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs",
40
+ className
41
+ )}
42
+ {...props}
43
+ >
44
+ <ToggleGroupContext.Provider value={{ variant, size, spacing }}>
45
+ {children}
46
+ </ToggleGroupContext.Provider>
47
+ </ToggleGroupPrimitive.Root>
48
+ )
49
+ }
34
50
 
35
- const ToggleGroupItem = React.forwardRef<
36
- React.ElementRef<typeof ToggleGroupPrimitive.Item>,
37
- React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &
38
- VariantProps<typeof toggleVariants>
39
- >(({ className, children, variant, size, ...props }, ref) => {
51
+ function ToggleGroupItem({
52
+ className,
53
+ children,
54
+ variant,
55
+ size,
56
+ ...props
57
+ }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &
58
+ VariantProps<typeof toggleVariants>) {
40
59
  const context = React.useContext(ToggleGroupContext)
41
60
 
42
61
  return (
43
62
  <ToggleGroupPrimitive.Item
44
- ref={ref}
63
+ data-slot="toggle-group-item"
64
+ data-variant={context.variant || variant}
65
+ data-size={context.size || size}
66
+ data-spacing={context.spacing}
45
67
  className={cn(
46
68
  toggleVariants({
47
69
  variant: context.variant || variant,
48
70
  size: context.size || size,
49
71
  }),
72
+ "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10",
73
+ "data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l",
50
74
  className
51
75
  )}
52
76
  {...props}
@@ -54,8 +78,6 @@ const ToggleGroupItem = React.forwardRef<
54
78
  {children}
55
79
  </ToggleGroupPrimitive.Item>
56
80
  )
57
- })
58
-
59
- ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName
81
+ }
60
82
 
61
83
  export { ToggleGroup, ToggleGroupItem }
@@ -1,22 +1,24 @@
1
+ "use client"
2
+
1
3
  import * as React from "react"
2
- import * as TogglePrimitive from "@radix-ui/react-toggle"
3
4
  import { cva, type VariantProps } from "class-variance-authority"
5
+ import * as TogglePrimitive from "@radix-ui/react-toggle"
4
6
 
5
- import { cn } from "@/lib/utils"
7
+ import { cn } from "../lib/utils"
6
8
 
7
9
  const toggleVariants = cva(
8
- "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2",
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",
9
11
  {
10
12
  variants: {
11
13
  variant: {
12
14
  default: "bg-transparent",
13
15
  outline:
14
- "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",
16
+ "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground",
15
17
  },
16
18
  size: {
17
- default: "h-10 px-3 min-w-10",
18
- sm: "h-9 px-2.5 min-w-9",
19
- lg: "h-11 px-5 min-w-11",
19
+ default: "h-9 min-w-9 px-2",
20
+ sm: "h-8 min-w-8 px-1.5",
21
+ lg: "h-10 min-w-10 px-2.5",
20
22
  },
21
23
  },
22
24
  defaultVariants: {
@@ -26,18 +28,20 @@ const toggleVariants = cva(
26
28
  }
27
29
  )
28
30
 
29
- const Toggle = React.forwardRef<
30
- React.ElementRef<typeof TogglePrimitive.Root>,
31
- React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &
32
- VariantProps<typeof toggleVariants>
33
- >(({ className, variant, size, ...props }, ref) => (
34
- <TogglePrimitive.Root
35
- ref={ref}
36
- className={cn(toggleVariants({ variant, size, className }))}
37
- {...props}
38
- />
39
- ))
40
-
41
- Toggle.displayName = TogglePrimitive.Root.displayName
31
+ function Toggle({
32
+ className,
33
+ variant,
34
+ size,
35
+ ...props
36
+ }: React.ComponentProps<typeof TogglePrimitive.Root> &
37
+ VariantProps<typeof toggleVariants>) {
38
+ return (
39
+ <TogglePrimitive.Root
40
+ data-slot="toggle"
41
+ className={cn(toggleVariants({ variant, size, className }))}
42
+ {...props}
43
+ />
44
+ )
45
+ }
42
46
 
43
47
  export { Toggle, toggleVariants }
@@ -3,28 +3,55 @@
3
3
  import * as React from "react"
4
4
  import * as TooltipPrimitive from "@radix-ui/react-tooltip"
5
5
 
6
- import { cn } from "@/lib/utils"
6
+ import { cn } from "../lib/utils"
7
7
 
8
- const TooltipProvider = TooltipPrimitive.Provider
8
+ function TooltipProvider({
9
+ delayDuration = 0,
10
+ ...props
11
+ }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {
12
+ return (
13
+ <TooltipPrimitive.Provider
14
+ data-slot="tooltip-provider"
15
+ delayDuration={delayDuration}
16
+ {...props}
17
+ />
18
+ )
19
+ }
9
20
 
10
- const Tooltip = TooltipPrimitive.Root
21
+ function Tooltip({
22
+ ...props
23
+ }: React.ComponentProps<typeof TooltipPrimitive.Root>) {
24
+ return <TooltipPrimitive.Root data-slot="tooltip" {...props} />
25
+ }
11
26
 
12
- const TooltipTrigger = TooltipPrimitive.Trigger
27
+ function TooltipTrigger({
28
+ ...props
29
+ }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
30
+ return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
31
+ }
13
32
 
14
- const TooltipContent = React.forwardRef<
15
- React.ElementRef<typeof TooltipPrimitive.Content>,
16
- React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
17
- >(({ className, sideOffset = 4, ...props }, ref) => (
18
- <TooltipPrimitive.Content
19
- ref={ref}
20
- sideOffset={sideOffset}
21
- className={cn(
22
- "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
23
- className
24
- )}
25
- {...props}
26
- />
27
- ))
28
- TooltipContent.displayName = TooltipPrimitive.Content.displayName
33
+ function TooltipContent({
34
+ className,
35
+ sideOffset = 0,
36
+ children,
37
+ ...props
38
+ }: React.ComponentProps<typeof TooltipPrimitive.Content>) {
39
+ return (
40
+ <TooltipPrimitive.Portal>
41
+ <TooltipPrimitive.Content
42
+ data-slot="tooltip-content"
43
+ sideOffset={sideOffset}
44
+ className={cn(
45
+ "z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
46
+ className
47
+ )}
48
+ {...props}
49
+ >
50
+ {children}
51
+ <TooltipPrimitive.Arrow className="z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" />
52
+ </TooltipPrimitive.Content>
53
+ </TooltipPrimitive.Portal>
54
+ )
55
+ }
29
56
 
30
57
  export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
package/src/globals.css CHANGED
@@ -1,115 +1,231 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Quicksand:wght@500;600;700&family=JetBrains+Mono:wght@400;500&display=swap");
1
2
  @import "tailwindcss";
2
3
  @import "tw-animate-css";
3
4
 
4
- @custom-variant dark (&:is(.dark *));
5
-
6
- @theme {
7
- --color-background: hsl(0 0% 100%);
8
- --color-foreground: hsl(240 10% 3.9%);
9
-
10
- --color-card: hsl(0 0% 100%);
11
- --color-card-foreground: hsl(240 10% 3.9%);
12
-
13
- --color-popover: hsl(0 0% 100%);
14
- --color-popover-foreground: hsl(240 10% 3.9%);
15
-
16
- --color-primary: hsl(240 5.9% 10%);
17
- --color-primary-foreground: hsl(0 0% 98%);
18
-
19
- --color-secondary: hsl(240 4.8% 95.9%);
20
- --color-secondary-foreground: hsl(240 5.9% 10%);
5
+ /* Content sources — scan this package's own files and every app that
6
+ consumes it (shadcn monorepo pattern). Paths are relative to this file
7
+ (packages/ui/src/globals.css). */
8
+ @source "../**/*.{ts,tsx}";
9
+ @source "../../../apps/**/*.{ts,tsx}";
21
10
 
22
- --color-muted: hsl(240 4.8% 95.9%);
23
- --color-muted-foreground: hsl(240 3.8% 46.1%);
24
-
25
- --color-accent: hsl(240 4.8% 95.9%);
26
- --color-accent-foreground: hsl(240 5.9% 10%);
27
-
28
- --color-destructive: hsl(0 84.2% 60.2%);
29
- --color-destructive-foreground: hsl(0 0% 98%);
30
-
31
- --color-border: hsl(240 5.9% 90%);
32
- --color-input: hsl(240 5.9% 90%);
33
- --color-ring: hsl(240 5.9% 10%);
34
-
35
- --radius-sm: 0.25rem;
36
- --radius-md: 0.375rem;
37
- --radius-lg: 0.5rem;
38
- --radius-xl: 0.75rem;
39
- }
40
-
41
- @media (prefers-color-scheme: dark) {
42
- @theme {
43
- --color-background: hsl(240 10% 3.9%);
44
- --color-foreground: hsl(0 0% 98%);
45
-
46
- --color-card: hsl(240 10% 3.9%);
47
- --color-card-foreground: hsl(0 0% 98%);
48
-
49
- --color-popover: hsl(240 10% 3.9%);
50
- --color-popover-foreground: hsl(0 0% 98%);
51
-
52
- --color-primary: hsl(0 0% 98%);
53
- --color-primary-foreground: hsl(240 5.9% 10%);
54
-
55
- --color-secondary: hsl(240 3.7% 15.9%);
56
- --color-secondary-foreground: hsl(0 0% 98%);
11
+ @custom-variant dark (&:is(.dark *));
57
12
 
58
- --color-muted: hsl(240 3.7% 15.9%);
59
- --color-muted-foreground: hsl(240 5% 64.9%);
13
+ /* ============================================================
14
+ Blips UI tokens — shadcn/ui neutral palette, with the Blips
15
+ brand yellow (#FCBA28) kept as the single `primary` accent.
16
+ ============================================================ */
60
17
 
61
- --color-accent: hsl(240 3.7% 15.9%);
62
- --color-accent-foreground: hsl(0 0% 98%);
18
+ @theme inline {
19
+ --color-background: var(--background);
20
+ --color-foreground: var(--foreground);
21
+ --color-card: var(--card);
22
+ --color-card-foreground: var(--card-foreground);
23
+ --color-popover: var(--popover);
24
+ --color-popover-foreground: var(--popover-foreground);
25
+ --color-primary: var(--primary);
26
+ --color-primary-foreground: var(--primary-foreground);
27
+ --color-secondary: var(--secondary);
28
+ --color-secondary-foreground: var(--secondary-foreground);
29
+ --color-muted: var(--muted);
30
+ --color-muted-foreground: var(--muted-foreground);
31
+ --color-accent: var(--accent);
32
+ --color-accent-foreground: var(--accent-foreground);
33
+ --color-destructive: var(--destructive);
34
+ --color-destructive-foreground: var(--destructive-foreground);
35
+ --color-warning: var(--warning);
36
+ --color-warning-foreground: var(--warning-foreground);
37
+ --color-success: var(--success);
38
+ --color-success-foreground: var(--success-foreground);
39
+ --color-info: var(--info);
40
+ --color-info-foreground: var(--info-foreground);
41
+ --color-border: var(--border);
42
+ --color-input: var(--input);
43
+ --color-ring: var(--ring);
44
+
45
+ --color-chart-1: var(--chart-1);
46
+ --color-chart-2: var(--chart-2);
47
+ --color-chart-3: var(--chart-3);
48
+ --color-chart-4: var(--chart-4);
49
+ --color-chart-5: var(--chart-5);
63
50
 
64
- --color-destructive: hsl(0 62.8% 30.6%);
65
- --color-destructive-foreground: hsl(0 0% 98%);
51
+ --color-sidebar: var(--sidebar);
52
+ --color-sidebar-foreground: var(--sidebar-foreground);
53
+ --color-sidebar-primary: var(--sidebar-primary);
54
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
55
+ --color-sidebar-accent: var(--sidebar-accent);
56
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
57
+ --color-sidebar-border: var(--sidebar-border);
58
+ --color-sidebar-ring: var(--sidebar-ring);
66
59
 
67
- --color-border: hsl(240 3.7% 15.9%);
68
- --color-input: hsl(240 3.7% 15.9%);
69
- --color-ring: hsl(240 4.9% 83.9%);
60
+ --color-surface: var(--surface);
61
+ --color-surface-foreground: var(--surface-foreground);
62
+ --color-code: var(--code);
63
+ --color-code-foreground: var(--code-foreground);
64
+ --color-code-highlight: var(--code-highlight);
65
+ --color-code-number: var(--code-number);
66
+ --color-selection: var(--selection);
67
+ --color-selection-foreground: var(--selection-foreground);
68
+
69
+ /* Extended radius scale (shadcn). */
70
+ --radius-sm: calc(var(--radius) - 4px);
71
+ --radius-md: calc(var(--radius) - 2px);
72
+ --radius-lg: var(--radius);
73
+ --radius-xl: calc(var(--radius) + 4px);
74
+ --radius-2xl: calc(var(--radius) + 8px);
75
+
76
+ --breakpoint-3xl: 1600px;
77
+ --breakpoint-4xl: 2000px;
78
+
79
+ --font-sans: var(--font-sans);
80
+ --font-mono: var(--font-mono);
81
+ --font-heading: var(--font-heading);
82
+ --font-display: var(--font-display);
83
+
84
+ --animate-accordion-down: accordion-down 0.2s ease-out;
85
+ --animate-accordion-up: accordion-up 0.2s ease-out;
86
+
87
+ @keyframes accordion-down {
88
+ from {
89
+ height: 0;
90
+ }
91
+ to {
92
+ height: var(--radix-accordion-content-height);
93
+ }
70
94
  }
71
- }
72
-
73
- * {
74
- border-color: var(--color-border);
75
- }
76
95
 
77
- body {
78
- background-color: var(--color-background);
79
- color: var(--color-foreground);
96
+ @keyframes accordion-up {
97
+ from {
98
+ height: var(--radix-accordion-content-height);
99
+ }
100
+ to {
101
+ height: 0;
102
+ }
103
+ }
80
104
  }
81
105
 
106
+ /* ----- Light theme (default) — shadcn neutral + Blips yellow primary ----- */
82
107
  :root {
83
- --sidebar: hsl(0 0% 98%);
84
- --sidebar-foreground: hsl(240 5.3% 26.1%);
85
- --sidebar-primary: hsl(240 5.9% 10%);
86
- --sidebar-primary-foreground: hsl(0 0% 98%);
87
- --sidebar-accent: hsl(240 4.8% 95.9%);
88
- --sidebar-accent-foreground: hsl(240 5.9% 10%);
89
- --sidebar-border: hsl(220 13% 91%);
90
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
108
+ --radius: 0.625rem;
109
+
110
+ --background: oklch(1 0 0);
111
+ --foreground: oklch(0% 0 0);
112
+ --card: oklch(1 0 0);
113
+ --card-foreground: oklch(0% 0 0);
114
+ --popover: oklch(1 0 0);
115
+ --popover-foreground: oklch(0% 0 0);
116
+
117
+ --primary: #fcba28; /* Amarelo Blips — único token de marca */
118
+ --primary-foreground: #000000;
119
+
120
+ --secondary: oklch(0.97 0 0);
121
+ --secondary-foreground: oklch(0.205 0 0);
122
+ --muted: oklch(0.97 0 0);
123
+ --muted-foreground: oklch(0.556 0 0);
124
+ --accent: oklch(0.97 0 0);
125
+ --accent-foreground: oklch(0.205 0 0);
126
+
127
+ --destructive: oklch(0.577 0.245 27.325);
128
+ --destructive-foreground: oklch(0.97 0.01 17);
129
+
130
+ --warning: oklch(0.828 0.189 84.429);
131
+ --warning-foreground: oklch(0.205 0 0);
132
+ --success: oklch(0.62 0.13 155);
133
+ --success-foreground: oklch(0.985 0 0);
134
+ --info: oklch(0.546 0.215 262.881);
135
+ --info-foreground: oklch(0.985 0 0);
136
+
137
+ --border: oklch(0.922 0 0);
138
+ --input: oklch(0.922 0 0);
139
+ --ring: oklch(0.708 0 0);
140
+
141
+ --chart-1: oklch(0.646 0.222 41.116);
142
+ --chart-2: oklch(0.6 0.118 184.704);
143
+ --chart-3: oklch(0.398 0.07 227.392);
144
+ --chart-4: oklch(0.828 0.189 84.429);
145
+ --chart-5: oklch(0.769 0.188 70.08);
146
+
147
+ --sidebar: oklch(0.985 0 0);
148
+ --sidebar-foreground: oklch(0% 0 0);
149
+ --sidebar-primary: #fcba28;
150
+ --sidebar-primary-foreground: #000000;
151
+ --sidebar-accent: oklch(0.97 0 0);
152
+ --sidebar-accent-foreground: oklch(0.205 0 0);
153
+ --sidebar-border: oklch(0.922 0 0);
154
+ --sidebar-ring: oklch(0.708 0 0);
155
+
156
+ --surface: oklch(0.98 0 0);
157
+ --surface-foreground: var(--foreground);
158
+ --code: var(--surface);
159
+ --code-foreground: var(--surface-foreground);
160
+ --code-highlight: oklch(0.96 0 0);
161
+ --code-number: oklch(0.56 0 0);
162
+ --selection: oklch(0% 0 0);
163
+ --selection-foreground: oklch(1 0 0);
164
+
165
+ --font-sans:
166
+ "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
167
+ sans-serif;
168
+ --font-heading: var(--font-sans);
169
+ --font-display: "Quicksand", var(--font-sans);
170
+ --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
91
171
  }
92
172
 
173
+ /* ----- Dark theme — shadcn neutral + Blips yellow primary ----- */
93
174
  .dark {
94
- --sidebar: hsl(240 5.9% 10%);
95
- --sidebar-foreground: hsl(240 4.8% 95.9%);
96
- --sidebar-primary: hsl(224.3 76.3% 48%);
97
- --sidebar-primary-foreground: hsl(0 0% 100%);
98
- --sidebar-accent: hsl(240 3.7% 15.9%);
99
- --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
100
- --sidebar-border: hsl(240 3.7% 15.9%);
101
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
102
- }
103
-
104
- @theme inline {
105
- --color-sidebar: var(--sidebar);
106
- --color-sidebar-foreground: var(--sidebar-foreground);
107
- --color-sidebar-primary: var(--sidebar-primary);
108
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
109
- --color-sidebar-accent: var(--sidebar-accent);
110
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
111
- --color-sidebar-border: var(--sidebar-border);
112
- --color-sidebar-ring: var(--sidebar-ring);
175
+ --background: oklch(0.145 0 0);
176
+ --foreground: oklch(0.985 0 0);
177
+ --card: oklch(0.205 0 0);
178
+ --card-foreground: oklch(0.985 0 0);
179
+ --popover: oklch(0.205 0 0);
180
+ --popover-foreground: oklch(0.985 0 0);
181
+
182
+ --primary: #fcba28;
183
+ --primary-foreground: #000000;
184
+
185
+ --secondary: oklch(0.269 0 0);
186
+ --secondary-foreground: oklch(0.985 0 0);
187
+ --muted: oklch(0.269 0 0);
188
+ --muted-foreground: oklch(0.708 0 0);
189
+ --accent: oklch(0.371 0 0);
190
+ --accent-foreground: oklch(0.985 0 0);
191
+
192
+ --destructive: oklch(0.704 0.191 22.216);
193
+ --destructive-foreground: oklch(0.58 0.22 27);
194
+
195
+ --warning: oklch(0.828 0.189 84.429);
196
+ --warning-foreground: oklch(0.205 0 0);
197
+ --success: oklch(0.7 0.14 155);
198
+ --success-foreground: oklch(0.205 0 0);
199
+ --info: oklch(0.707 0.165 254.624);
200
+ --info-foreground: oklch(0.205 0 0);
201
+
202
+ --border: oklch(1 0 0 / 10%);
203
+ --input: oklch(1 0 0 / 15%);
204
+ --ring: oklch(0.556 0 0);
205
+
206
+ --chart-1: oklch(0.488 0.243 264.376);
207
+ --chart-2: oklch(0.696 0.17 162.48);
208
+ --chart-3: oklch(0.769 0.188 70.08);
209
+ --chart-4: oklch(0.627 0.265 303.9);
210
+ --chart-5: oklch(0.645 0.246 16.439);
211
+
212
+ --sidebar: oklch(0.205 0 0);
213
+ --sidebar-foreground: oklch(0.985 0 0);
214
+ --sidebar-primary: #fcba28;
215
+ --sidebar-primary-foreground: #000000;
216
+ --sidebar-accent: oklch(0.269 0 0);
217
+ --sidebar-accent-foreground: oklch(0.985 0 0);
218
+ --sidebar-border: oklch(1 0 0 / 10%);
219
+ --sidebar-ring: oklch(0.439 0 0);
220
+
221
+ --surface: oklch(0.2 0 0);
222
+ --surface-foreground: oklch(0.708 0 0);
223
+ --code: var(--surface);
224
+ --code-foreground: var(--surface-foreground);
225
+ --code-highlight: oklch(0.27 0 0);
226
+ --code-number: oklch(0.72 0 0);
227
+ --selection: oklch(0.922 0 0);
228
+ --selection-foreground: oklch(0.205 0 0);
113
229
  }
114
230
 
115
231
  @layer base {
@@ -118,5 +234,6 @@ body {
118
234
  }
119
235
  body {
120
236
  @apply bg-background text-foreground;
237
+ font-family: var(--font-sans);
121
238
  }
122
239
  }
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ export {
18
18
  AlertDialogDescription,
19
19
  AlertDialogFooter,
20
20
  AlertDialogHeader,
21
+ AlertDialogMedia,
21
22
  AlertDialogOverlay,
22
23
  AlertDialogPortal,
23
24
  AlertDialogTitle,
@@ -28,7 +29,14 @@ export {
28
29
  export { AspectRatio } from "./components/aspect-ratio";
29
30
 
30
31
  // Avatar
31
- export { Avatar, AvatarFallback, AvatarImage } from "./components/avatar";
32
+ export {
33
+ Avatar,
34
+ AvatarBadge,
35
+ AvatarFallback,
36
+ AvatarGroup,
37
+ AvatarGroupCount,
38
+ AvatarImage,
39
+ } from "./components/avatar";
32
40
 
33
41
  // Badge
34
42
  export { Badge, badgeVariants } from "./components/badge";
@@ -45,7 +53,7 @@ export {
45
53
  } from "./components/breadcrumb";
46
54
 
47
55
  // Button
48
- export { Button, type ButtonProps, buttonVariants } from "./components/button";
56
+ export { Button, buttonVariants } from "./components/button";
49
57
 
50
58
  // Calendar
51
59
  export { Calendar, CalendarDayButton } from "./components/calendar";
@@ -53,6 +61,7 @@ export { Calendar, CalendarDayButton } from "./components/calendar";
53
61
  // Card
54
62
  export {
55
63
  Card,
64
+ CardAction,
56
65
  CardContent,
57
66
  CardDescription,
58
67
  CardFooter,
@@ -225,7 +234,15 @@ export {
225
234
  } from "./components/pagination";
226
235
 
227
236
  // Popover
228
- export { Popover, PopoverContent, PopoverTrigger } from "./components/popover";
237
+ export {
238
+ Popover,
239
+ PopoverAnchor,
240
+ PopoverContent,
241
+ PopoverDescription,
242
+ PopoverHeader,
243
+ PopoverTitle,
244
+ PopoverTrigger,
245
+ } from "./components/popover";
229
246
 
230
247
  // Progress
231
248
  export { Progress } from "./components/progress";
@@ -268,8 +285,6 @@ export {
268
285
  SheetDescription,
269
286
  SheetFooter,
270
287
  SheetHeader,
271
- SheetOverlay,
272
- SheetPortal,
273
288
  SheetTitle,
274
289
  SheetTrigger,
275
290
  } from "./components/sheet";
@@ -299,7 +314,13 @@ export {
299
314
  } from "./components/table";
300
315
 
301
316
  // Tabs
302
- export { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/tabs";
317
+ export {
318
+ Tabs,
319
+ TabsContent,
320
+ TabsList,
321
+ TabsTrigger,
322
+ tabsListVariants,
323
+ } from "./components/tabs";
303
324
 
304
325
  // Textarea
305
326
  export { Textarea } from "./components/textarea";