@dilipod/ui 0.4.25 → 0.4.26

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dilipod/ui",
3
- "version": "0.4.25",
3
+ "version": "0.4.26",
4
4
  "description": "Dilipod Design System - Shared UI components and styles",
5
5
  "author": "Dilipod <hello@dilipod.com>",
6
6
  "license": "MIT",
@@ -7,7 +7,7 @@ import { cva, type VariantProps } from 'class-variance-authority'
7
7
  import { cn } from '../lib/utils'
8
8
 
9
9
  const buttonVariants = cva(
10
- 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',
10
+ 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-semibold transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',
11
11
  {
12
12
  variants: {
13
13
  variant: {
@@ -124,7 +124,7 @@ const DateRangeSelect = React.forwardRef<HTMLSelectElement, DateRangeSelectProps
124
124
  value={value}
125
125
  onChange={(e) => onChange(e.target.value as DateRangePreset)}
126
126
  className={cn(
127
- 'h-9 rounded-sm border border-input bg-background px-3 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
127
+ 'h-9 rounded-sm border border-input bg-background px-3 text-sm focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',
128
128
  className
129
129
  )}
130
130
  >
@@ -44,7 +44,7 @@ const DialogContent = React.forwardRef<
44
44
  {...props}
45
45
  >
46
46
  {children}
47
- <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100">
47
+ <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-gray-100">
48
48
  <X className="h-4 w-4" />
49
49
  <span className="sr-only">Close</span>
50
50
  </DialogPrimitive.Close>
@@ -39,7 +39,7 @@ const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(
39
39
  'aria-describedby': error ? errorId : helperText ? helperId : undefined,
40
40
  className: cn(
41
41
  childProps.className,
42
- error && 'border-red-500 focus-visible:ring-red-500'
42
+ error && 'border-red-500'
43
43
  ),
44
44
  })
45
45
  }
@@ -205,7 +205,7 @@ export function ImpactMetricsForm({
205
205
  ...prev,
206
206
  time_saved_minutes_per_run: parseInt(e.target.value) || 0
207
207
  }))}
208
- className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background"
208
+ className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none bg-background"
209
209
  min="0"
210
210
  />
211
211
  <span className="text-sm text-muted-foreground">min</span>
@@ -230,7 +230,7 @@ export function ImpactMetricsForm({
230
230
  ...prev,
231
231
  hourly_rate_euros: parseFloat(e.target.value) || 0
232
232
  }))}
233
- className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background"
233
+ className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none bg-background"
234
234
  min="0"
235
235
  step="0.5"
236
236
  />
@@ -255,7 +255,7 @@ export function ImpactMetricsForm({
255
255
  ...prev,
256
256
  fte_equivalent: (parseFloat(e.target.value) || 0) / 100
257
257
  }))}
258
- className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background"
258
+ className="w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none bg-background"
259
259
  min="0"
260
260
  max="1000"
261
261
  step="5"
@@ -15,10 +15,10 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
15
15
  <input
16
16
  type={type}
17
17
  className={cn(
18
- 'flex h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--black)] placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',
18
+ 'flex h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--black)] placeholder:text-gray-500 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',
19
19
  error
20
- ? 'border-red-500 focus-visible:ring-red-500'
21
- : 'border-gray-300 focus-visible:ring-[var(--cyan)]',
20
+ ? 'border-red-500'
21
+ : 'border-gray-300',
22
22
  className
23
23
  )}
24
24
  ref={ref}
@@ -27,7 +27,7 @@ const RadioGroupItem = React.forwardRef<
27
27
  <RadioGroupPrimitive.Item
28
28
  ref={ref}
29
29
  className={cn(
30
- 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
30
+ 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',
31
31
  className
32
32
  )}
33
33
  {...props}
@@ -91,7 +91,7 @@ const RadioGroupCard = React.forwardRef<
91
91
  ref={ref}
92
92
  id={cardId}
93
93
  className={cn(
94
- 'relative flex cursor-pointer rounded-lg border bg-background p-4 transition-all hover:border-[var(--cyan)]/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=checked]:border-[var(--cyan)] data-[state=checked]:ring-1 data-[state=checked]:ring-[var(--cyan)] disabled:cursor-not-allowed disabled:opacity-50',
94
+ 'relative flex cursor-pointer rounded-lg border bg-background p-4 transition-all hover:border-[var(--cyan)]/50 focus:outline-none focus-visible:outline-none data-[state=checked]:border-[var(--cyan)] data-[state=checked]:ring-1 data-[state=checked]:ring-[var(--cyan)] disabled:cursor-not-allowed disabled:opacity-50',
95
95
  className
96
96
  )}
97
97
  {...props}
@@ -15,14 +15,14 @@ const Select = React.forwardRef<HTMLSelectElement, SelectProps>(
15
15
  <select
16
16
  ref={ref}
17
17
  className={cn(
18
- 'h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background',
18
+ 'h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)]',
19
19
  'placeholder:text-gray-500',
20
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',
20
+ 'focus-visible:outline-none',
21
21
  'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',
22
22
  'appearance-none pr-10',
23
23
  error
24
- ? 'border-red-500 focus-visible:ring-red-500'
25
- : 'border-gray-300 focus-visible:ring-[var(--cyan)]',
24
+ ? 'border-red-500'
25
+ : 'border-gray-300',
26
26
  className
27
27
  )}
28
28
  aria-invalid={error ? 'true' : undefined}
@@ -68,7 +68,7 @@ const SheetContent = React.forwardRef<
68
68
  >
69
69
  {children}
70
70
  {/* @ts-expect-error - Radix Dialog Close accepts className and children at runtime */}
71
- <SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100">
71
+ <SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-gray-100">
72
72
  <X className="h-4 w-4" />
73
73
  <span className="sr-only">Close</span>
74
74
  </SheetPrimitive.Close>
@@ -56,8 +56,8 @@ const Slider = React.forwardRef<
56
56
  </SliderPrimitive.Track>
57
57
  <SliderPrimitive.Thumb
58
58
  className={cn(
59
- 'block rounded-full border-2 border-[var(--cyan)] bg-white shadow-md ring-offset-background transition-colors',
60
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--cyan)] focus-visible:ring-offset-2',
59
+ 'block rounded-full border-2 border-[var(--cyan)] bg-white shadow-md transition-colors',
60
+ 'focus-visible:outline-none',
61
61
  'disabled:pointer-events-none disabled:opacity-50',
62
62
  'hover:border-[var(--cyan-dark,#00bfaa)] cursor-pointer',
63
63
  sizeStyles[size].thumb
@@ -32,7 +32,7 @@ const Switch = React.forwardRef<
32
32
  return (
33
33
  <SwitchPrimitive.Root
34
34
  className={cn(
35
- 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--cyan)] data-[state=unchecked]:bg-input',
35
+ 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--cyan)] data-[state=unchecked]:bg-input',
36
36
  sizeStyles[size].root,
37
37
  className
38
38
  )}
@@ -28,7 +28,7 @@ const TabsTrigger = React.forwardRef<
28
28
  <TabsPrimitive.Trigger
29
29
  ref={ref}
30
30
  className={cn(
31
- 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all 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=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
31
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
32
32
  className
33
33
  )}
34
34
  {...props}
@@ -43,7 +43,7 @@ const TabsContent = React.forwardRef<
43
43
  <TabsPrimitive.Content
44
44
  ref={ref}
45
45
  className={cn(
46
- 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
46
+ 'mt-2 focus-visible:outline-none',
47
47
  className
48
48
  )}
49
49
  {...props}
@@ -14,10 +14,10 @@ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
14
14
  return (
15
15
  <textarea
16
16
  className={cn(
17
- 'flex min-h-[80px] w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors resize-none',
17
+ 'flex min-h-[80px] w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] placeholder:text-gray-500 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors resize-none',
18
18
  error
19
- ? 'border-red-500 focus-visible:ring-red-500'
20
- : 'border-gray-300 focus-visible:ring-[var(--cyan)]',
19
+ ? 'border-red-500'
20
+ : 'border-gray-300',
21
21
  className
22
22
  )}
23
23
  ref={ref}
@@ -63,7 +63,7 @@ const ToastAction = React.forwardRef<
63
63
  <ToastPrimitives.Action
64
64
  ref={ref}
65
65
  className={cn(
66
- 'inline-flex h-8 shrink-0 items-center justify-center rounded-sm border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
66
+ 'inline-flex h-8 shrink-0 items-center justify-center rounded-sm border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-gray-100 focus:outline-none disabled:pointer-events-none disabled:opacity-50',
67
67
  className
68
68
  )}
69
69
  {...props}
@@ -241,10 +241,9 @@ a:not([disabled]), button:not([disabled]) {
241
241
  cursor: pointer;
242
242
  }
243
243
 
244
- /* Better focus styles */
244
+ /* Remove default focus outline */
245
245
  *:focus-visible {
246
- outline: 2px solid hsl(var(--ring));
247
- outline-offset: 2px;
246
+ outline: none;
248
247
  }
249
248
 
250
249
  /* Smooth scroll */