@aphexcms/ui 0.1.8 → 0.2.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 (53) hide show
  1. package/dist/components/sidebar-07/+page.svelte +1 -1
  2. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +1 -1
  3. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  4. package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
  5. package/dist/components/ui/calendar/calendar-day.svelte +1 -1
  6. package/dist/components/ui/calendar/calendar-header.svelte +1 -1
  7. package/dist/components/ui/calendar/calendar-month-select.svelte +2 -2
  8. package/dist/components/ui/calendar/calendar-next-button.svelte +1 -1
  9. package/dist/components/ui/calendar/calendar-prev-button.svelte +1 -1
  10. package/dist/components/ui/calendar/calendar-year-select.svelte +2 -2
  11. package/dist/components/ui/card/card-footer.svelte +1 -1
  12. package/dist/components/ui/card/card-header.svelte +1 -1
  13. package/dist/components/ui/card/card-title.svelte +1 -1
  14. package/dist/components/ui/checkbox/checkbox.svelte +1 -1
  15. package/dist/components/ui/command/command-dialog.svelte +1 -1
  16. package/dist/components/ui/command/command-input.svelte +2 -2
  17. package/dist/components/ui/command/command-item.svelte +1 -1
  18. package/dist/components/ui/command/command-link-item.svelte +1 -1
  19. package/dist/components/ui/command/command-list.svelte +1 -1
  20. package/dist/components/ui/dialog/dialog-content.svelte +2 -2
  21. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  22. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  23. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  24. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
  25. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  26. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  27. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
  28. package/dist/components/ui/input/input.svelte +2 -2
  29. package/dist/components/ui/label/label.svelte +1 -1
  30. package/dist/components/ui/popover/popover-content.svelte +1 -1
  31. package/dist/components/ui/radio-group/radio-group-item.svelte +2 -2
  32. package/dist/components/ui/select/select-content.svelte +2 -2
  33. package/dist/components/ui/select/select-item.svelte +1 -1
  34. package/dist/components/ui/select/select-trigger.svelte +1 -1
  35. package/dist/components/ui/separator/separator.svelte +1 -1
  36. package/dist/components/ui/sheet/sheet-content.svelte +1 -1
  37. package/dist/components/ui/sidebar/sidebar-inset.svelte +1 -1
  38. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte +1 -1
  39. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +1 -0
  40. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +1 -0
  41. package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte +1 -1
  42. package/dist/components/ui/sidebar/sidebar-rail.svelte +1 -1
  43. package/dist/components/ui/sidebar/sidebar.svelte +3 -3
  44. package/dist/components/ui/sonner/index.d.ts +1 -0
  45. package/dist/components/ui/sonner/index.js +1 -0
  46. package/dist/components/ui/sonner/sonner.svelte +34 -0
  47. package/dist/components/ui/sonner/sonner.svelte.d.ts +4 -0
  48. package/dist/components/ui/switch/switch.svelte +1 -1
  49. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -1
  50. package/dist/components/ui/textarea/textarea.svelte +1 -1
  51. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  52. package/package.json +189 -176
  53. package/LICENSE +0 -21
@@ -9,7 +9,7 @@
9
9
  <AppSidebar />
10
10
  <Sidebar.Inset>
11
11
  <header
12
- class="group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear"
12
+ class="flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12"
13
13
  >
14
14
  <div class="flex items-center gap-2 px-4">
15
15
  <Sidebar.Trigger class="-ml-1" />
@@ -19,7 +19,7 @@
19
19
  bind:ref
20
20
  data-slot="alert-dialog-content"
21
21
  class={cn(
22
- 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
22
+ 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  bind:this={ref}
15
15
  data-slot="breadcrumb-list"
16
16
  class={cn(
17
- 'text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm sm:gap-2.5',
17
+ 'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -12,7 +12,7 @@
12
12
  <CalendarPrimitive.Cell
13
13
  bind:ref
14
14
  class={cn(
15
- 'size-(--cell-size) relative p-0 text-center text-sm focus-within:z-20 [&:first-child[data-selected]_[data-bits-day]]:rounded-l-md [&:last-child[data-selected]_[data-bits-day]]:rounded-r-md',
15
+ 'relative size-(--cell-size) p-0 text-center text-sm focus-within:z-20 [&:first-child[data-selected]_[data-bits-day]]:rounded-l-md [&:last-child[data-selected]_[data-bits-day]]:rounded-r-md',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  class={cn(
16
16
  buttonVariants({ variant: 'ghost' }),
17
- 'size-(--cell-size) flex select-none flex-col items-center justify-center gap-1 whitespace-nowrap p-0 font-normal leading-none',
17
+ 'flex size-(--cell-size) flex-col items-center justify-center gap-1 p-0 leading-none font-normal whitespace-nowrap select-none',
18
18
  '[&[data-today]:not([data-selected])]:bg-accent [&[data-today]:not([data-selected])]:text-accent-foreground [&[data-today][data-disabled]]:text-muted-foreground',
19
19
  'data-[selected]:bg-primary dark:data-[selected]:hover:bg-accent/50 data-[selected]:text-primary-foreground',
20
20
  // Outside months
@@ -12,7 +12,7 @@
12
12
  <CalendarPrimitive.Header
13
13
  bind:ref
14
14
  class={cn(
15
- 'h-(--cell-size) flex w-full items-center justify-center gap-1.5 text-sm font-medium',
15
+ 'flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -14,7 +14,7 @@
14
14
 
15
15
  <span
16
16
  class={cn(
17
- 'has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative flex rounded-md border',
17
+ 'has-focus:border-ring border-input has-focus:ring-ring/50 relative flex rounded-md border shadow-xs has-focus:ring-[3px]',
18
18
  className
19
19
  )}
20
20
  >
@@ -33,7 +33,7 @@
33
33
  {/each}
34
34
  </select>
35
35
  <span
36
- class="[&>svg]:text-muted-foreground flex h-8 select-none items-center gap-1 rounded-md pl-2 pr-1 text-sm font-medium [&>svg]:size-3.5"
36
+ class="[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm font-medium select-none [&>svg]:size-3.5"
37
37
  aria-hidden="true"
38
38
  >
39
39
  {monthItems.find((item) => item.value === value)?.label || selectedMonthItem.label}
@@ -23,7 +23,7 @@
23
23
  bind:ref
24
24
  class={cn(
25
25
  buttonVariants({ variant }),
26
- 'size-(--cell-size) select-none bg-transparent p-0 disabled:opacity-50 rtl:rotate-180',
26
+ 'size-(--cell-size) bg-transparent p-0 select-none disabled:opacity-50 rtl:rotate-180',
27
27
  className
28
28
  )}
29
29
  children={children || Fallback}
@@ -23,7 +23,7 @@
23
23
  bind:ref
24
24
  class={cn(
25
25
  buttonVariants({ variant }),
26
- 'size-(--cell-size) select-none bg-transparent p-0 disabled:opacity-50 rtl:rotate-180',
26
+ 'size-(--cell-size) bg-transparent p-0 select-none disabled:opacity-50 rtl:rotate-180',
27
27
  className
28
28
  )}
29
29
  children={children || Fallback}
@@ -13,7 +13,7 @@
13
13
 
14
14
  <span
15
15
  class={cn(
16
- 'has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative flex rounded-md border',
16
+ 'has-focus:border-ring border-input has-focus:ring-ring/50 relative flex rounded-md border shadow-xs has-focus:ring-[3px]',
17
17
  className
18
18
  )}
19
19
  >
@@ -32,7 +32,7 @@
32
32
  {/each}
33
33
  </select>
34
34
  <span
35
- class="[&>svg]:text-muted-foreground flex h-8 select-none items-center gap-1 rounded-md pl-2 pr-1 text-sm font-medium [&>svg]:size-3.5"
35
+ class="[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm font-medium select-none [&>svg]:size-3.5"
36
36
  aria-hidden="true"
37
37
  >
38
38
  {yearItems.find((item) => item.value === value)?.label || selectedYearItem.label}
@@ -13,7 +13,7 @@
13
13
  <div
14
14
  bind:this={ref}
15
15
  data-slot="card-footer"
16
- class={cn('[.border-t]:pt-6 flex items-center px-6', className)}
16
+ class={cn('flex items-center px-6 [.border-t]:pt-6', className)}
17
17
  {...restProps}
18
18
  >
19
19
  {@render children?.()}
@@ -14,7 +14,7 @@
14
14
  bind:this={ref}
15
15
  data-slot="card-header"
16
16
  class={cn(
17
- '@container/card-header has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6 grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6',
17
+ '@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -13,7 +13,7 @@
13
13
  <div
14
14
  bind:this={ref}
15
15
  data-slot="card-title"
16
- class={cn('font-semibold leading-none', className)}
16
+ class={cn('leading-none font-semibold', className)}
17
17
  {...restProps}
18
18
  >
19
19
  {@render children?.()}
@@ -17,7 +17,7 @@
17
17
  bind:ref
18
18
  data-slot="checkbox"
19
19
  class={cn(
20
- 'border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive shadow-xs peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border outline-none transition-shadow focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
20
+ 'border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
21
21
  className
22
22
  )}
23
23
  bind:checked
@@ -30,7 +30,7 @@
30
30
  </Dialog.Header>
31
31
  <Dialog.Content class="overflow-hidden p-0" {portalProps}>
32
32
  <Command
33
- class="**:data-[slot=command-input-wrapper]:h-12 [&_[data-command-group]:not([hidden])_~[data-command-group]]:pt-0 [&_[data-command-group]]:px-2 [&_[data-command-input-wrapper]_svg]:h-5 [&_[data-command-input-wrapper]_svg]:w-5 [&_[data-command-input]]:h-12 [&_[data-command-item]]:px-2 [&_[data-command-item]]:py-3 [&_[data-command-item]_svg]:h-5 [&_[data-command-item]_svg]:w-5"
33
+ class="**:data-[slot=command-input-wrapper]:h-12 [&_[data-command-group]]:px-2 [&_[data-command-group]:not([hidden])_~[data-command-group]]:pt-0 [&_[data-command-input-wrapper]_svg]:h-5 [&_[data-command-input-wrapper]_svg]:w-5 [&_[data-command-input]]:h-12 [&_[data-command-item]]:px-2 [&_[data-command-item]]:py-3 [&_[data-command-item]_svg]:h-5 [&_[data-command-item]_svg]:w-5"
34
34
  {...restProps}
35
35
  bind:value
36
36
  bind:ref
@@ -11,12 +11,12 @@
11
11
  }: CommandPrimitive.InputProps = $props();
12
12
  </script>
13
13
 
14
- <div class="flex h-9 items-center gap-2 border-b pl-3 pr-8" data-slot="command-input-wrapper">
14
+ <div class="flex h-9 items-center gap-2 border-b pr-8 pl-3" data-slot="command-input-wrapper">
15
15
  <SearchIcon class="size-4 shrink-0 opacity-50" />
16
16
  <CommandPrimitive.Input
17
17
  data-slot="command-input"
18
18
  class={cn(
19
- 'placeholder:text-muted-foreground outline-hidden flex h-10 w-full rounded-md bg-transparent py-3 text-sm disabled:cursor-not-allowed disabled:opacity-50',
19
+ 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
20
20
  className
21
21
  )}
22
22
  bind:ref
@@ -13,7 +13,7 @@
13
13
  bind:ref
14
14
  data-slot="command-item"
15
15
  class={cn(
16
- "aria-selected:bg-accent aria-selected:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
16
+ "aria-selected:bg-accent aria-selected:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -13,7 +13,7 @@
13
13
  bind:ref
14
14
  data-slot="command-item"
15
15
  class={cn(
16
- "aria-selected:bg-accent aria-selected:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
16
+ "aria-selected:bg-accent aria-selected:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -12,6 +12,6 @@
12
12
  <CommandPrimitive.List
13
13
  bind:ref
14
14
  data-slot="command-list"
15
- class={cn('max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden', className)}
15
+ class={cn('max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto', className)}
16
16
  {...restProps}
17
17
  />
@@ -25,7 +25,7 @@
25
25
  bind:ref
26
26
  data-slot="dialog-content"
27
27
  class={cn(
28
- 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
28
+ 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
29
29
  className
30
30
  )}
31
31
  {...restProps}
@@ -33,7 +33,7 @@
33
33
  {@render children?.()}
34
34
  {#if showCloseButton}
35
35
  <DialogPrimitive.Close
36
- class="ring-offset-background focus:ring-ring rounded-xs focus:outline-hidden absolute end-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0"
36
+ class="ring-offset-background focus:ring-ring absolute end-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
37
37
  >
38
38
  <XIcon />
39
39
  <span class="sr-only">Close</span>
@@ -12,6 +12,6 @@
12
12
  <DialogPrimitive.Title
13
13
  bind:ref
14
14
  data-slot="dialog-title"
15
- class={cn('text-lg font-semibold leading-none', className)}
15
+ class={cn('text-lg leading-none font-semibold', className)}
16
16
  {...restProps}
17
17
  />
@@ -23,7 +23,7 @@
23
23
  bind:indeterminate
24
24
  data-slot="dropdown-menu-checkbox-item"
25
25
  class={cn(
26
- "focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
26
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
27
27
  className
28
28
  )}
29
29
  {...restProps}
@@ -19,7 +19,7 @@
19
19
  data-slot="dropdown-menu-content"
20
20
  {sideOffset}
21
21
  class={cn(
22
- 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 max-h-(--bits-dropdown-menu-content-available-height) origin-(--bits-dropdown-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md outline-none',
22
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 z-50 max-h-(--bits-dropdown-menu-content-available-height) min-w-[8rem] origin-(--bits-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md outline-none',
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -20,7 +20,7 @@
20
20
  data-inset={inset}
21
21
  data-variant={variant}
22
22
  class={cn(
23
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
23
+ "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
24
24
  className
25
25
  )}
26
26
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  bind:ref
16
16
  data-slot="dropdown-menu-radio-item"
17
17
  class={cn(
18
- "focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
18
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
19
19
  className
20
20
  )}
21
21
  {...restProps}
@@ -13,7 +13,7 @@
13
13
  bind:ref
14
14
  data-slot="dropdown-menu-sub-content"
15
15
  class={cn(
16
- 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 origin-(--bits-dropdown-menu-content-transform-origin) z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg',
16
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 z-50 min-w-[8rem] origin-(--bits-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -19,7 +19,7 @@
19
19
  data-slot="dropdown-menu-sub-trigger"
20
20
  data-inset={inset}
21
21
  class={cn(
22
- "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground outline-hidden [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
22
+ "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -25,7 +25,7 @@
25
25
  bind:this={ref}
26
26
  data-slot={dataSlot}
27
27
  class={cn(
28
- 'selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50',
28
+ 'selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50',
29
29
  'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',
30
30
  'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
31
31
  className
@@ -40,7 +40,7 @@
40
40
  bind:this={ref}
41
41
  data-slot={dataSlot}
42
42
  class={cn(
43
- 'border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
43
+ 'border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
44
44
  'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',
45
45
  'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
46
46
  className
@@ -13,7 +13,7 @@
13
13
  bind:ref
14
14
  data-slot="label"
15
15
  class={cn(
16
- 'flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50',
16
+ 'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -21,7 +21,7 @@
21
21
  {sideOffset}
22
22
  {align}
23
23
  class={cn(
24
- 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 origin-(--bits-popover-content-transform-origin) outline-hidden z-50 w-72 rounded-md border p-4 shadow-md',
24
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 z-50 w-72 origin-(--bits-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',
25
25
  className
26
26
  )}
27
27
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  data-slot="radio-group-item"
16
16
  class={cn(
17
- 'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 shadow-xs aspect-square size-4 shrink-0 rounded-full border outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
17
+ 'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -23,7 +23,7 @@
23
23
  <div data-slot="radio-group-indicator" class="relative flex items-center justify-center">
24
24
  {#if checked}
25
25
  <CircleIcon
26
- class="fill-primary absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2"
26
+ class="fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"
27
27
  />
28
28
  {/if}
29
29
  </div>
@@ -22,7 +22,7 @@
22
22
  {sideOffset}
23
23
  data-slot="select-content"
24
24
  class={cn(
25
- 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 max-h-(--bits-select-content-available-height) origin-(--bits-select-content-transform-origin) relative z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border shadow-md data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
25
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]: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 relative z-50 max-h-(--bits-select-content-available-height) min-w-[8rem] origin-(--bits-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
26
26
  className
27
27
  )}
28
28
  {...restProps}
@@ -30,7 +30,7 @@
30
30
  <SelectScrollUpButton />
31
31
  <SelectPrimitive.Viewport
32
32
  class={cn(
33
- 'h-(--bits-select-anchor-height) min-w-(--bits-select-anchor-width) w-full scroll-my-1 p-1'
33
+ 'h-(--bits-select-anchor-height) w-full min-w-(--bits-select-anchor-width) scroll-my-1 p-1'
34
34
  )}
35
35
  >
36
36
  {@render children?.()}
@@ -18,7 +18,7 @@
18
18
  {value}
19
19
  data-slot="select-item"
20
20
  class={cn(
21
- "data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-2 pr-8 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
21
+ "data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
22
22
  className
23
23
  )}
24
24
  {...restProps}
@@ -19,7 +19,7 @@
19
19
  data-slot="select-trigger"
20
20
  data-size={size}
21
21
  class={cn(
22
- "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 shadow-xs flex w-fit select-none items-center justify-between gap-2 whitespace-nowrap rounded-md border bg-transparent px-3 py-2 text-sm outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
22
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none select-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  data-slot={dataSlot}
16
16
  class={cn(
17
- 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px',
17
+ 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -51,7 +51,7 @@
51
51
  >
52
52
  {@render children?.()}
53
53
  <SheetPrimitive.Close
54
- class="ring-offset-background focus-visible:ring-ring rounded-xs focus-visible:outline-hidden absolute right-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none"
54
+ class="ring-offset-background focus-visible:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none"
55
55
  >
56
56
  <XIcon class="size-4" />
57
57
  <span class="sr-only">Close</span>
@@ -15,7 +15,7 @@
15
15
  data-slot="sidebar-inset"
16
16
  class={cn(
17
17
  'bg-background relative flex w-full flex-1 flex-col',
18
- 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',
18
+ 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
19
19
  className
20
20
  )}
21
21
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  data-slot="sidebar-menu-badge"
16
16
  data-sidebar="menu-badge"
17
17
  class={cn(
18
- 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums',
18
+ 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',
19
19
  'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
20
20
  'peer-data-[size=sm]/menu-button:top-1',
21
21
  'peer-data-[size=default]/menu-button:top-1.5',
@@ -46,6 +46,7 @@
46
46
  ...restProps
47
47
  }: WithElementRef<HTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {
48
48
  isActive?: boolean;
49
+ disabled?: boolean;
49
50
  variant?: SidebarMenuButtonVariant;
50
51
  size?: SidebarMenuButtonSize;
51
52
  tooltipContent?: Snippet | string;
@@ -38,6 +38,7 @@ import type { ComponentProps, Snippet } from 'svelte';
38
38
  import type { HTMLAttributes } from 'svelte/elements';
39
39
  type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {
40
40
  isActive?: boolean;
41
+ disabled?: boolean;
41
42
  variant?: SidebarMenuButtonVariant;
42
43
  size?: SidebarMenuButtonSize;
43
44
  tooltipContent?: Snippet | string;
@@ -28,7 +28,7 @@
28
28
  <Skeleton class="size-4 rounded-md" data-sidebar="menu-skeleton-icon" />
29
29
  {/if}
30
30
  <Skeleton
31
- class="max-w-(--skeleton-width) h-4 flex-1"
31
+ class="h-4 max-w-(--skeleton-width) flex-1"
32
32
  data-sidebar="menu-skeleton-text"
33
33
  style="--skeleton-width: {width};"
34
34
  />
@@ -22,7 +22,7 @@
22
22
  onclick={sidebar.toggle}
23
23
  title="Toggle Sidebar"
24
24
  class={cn(
25
- 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-[calc(1/2*100%-1px)] after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',
25
+ 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-[calc(1/2*100%-1px)] after:w-[2px] sm:flex',
26
26
  'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',
27
27
  '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',
28
28
  'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',
@@ -25,7 +25,7 @@
25
25
  {#if collapsible === 'none'}
26
26
  <div
27
27
  class={cn(
28
- 'bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col',
28
+ 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',
29
29
  className
30
30
  )}
31
31
  bind:this={ref}
@@ -66,7 +66,7 @@
66
66
  <div
67
67
  data-slot="sidebar-gap"
68
68
  class={cn(
69
- 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear',
69
+ 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',
70
70
  'group-data-[collapsible=offcanvas]:w-0',
71
71
  'group-data-[side=right]:rotate-180',
72
72
  variant === 'floating' || variant === 'inset'
@@ -77,7 +77,7 @@
77
77
  <div
78
78
  data-slot="sidebar-container"
79
79
  class={cn(
80
- 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex',
80
+ 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',
81
81
  side === 'left'
82
82
  ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
83
83
  : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
@@ -0,0 +1 @@
1
+ export { default as Toaster } from './sonner.svelte';
@@ -0,0 +1 @@
1
+ export { default as Toaster } from './sonner.svelte';
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import CircleCheckIcon from '@lucide/svelte/icons/circle-check';
3
+ import InfoIcon from '@lucide/svelte/icons/info';
4
+ import Loader2Icon from '@lucide/svelte/icons/loader-2';
5
+ import OctagonXIcon from '@lucide/svelte/icons/octagon-x';
6
+ import TriangleAlertIcon from '@lucide/svelte/icons/triangle-alert';
7
+
8
+ import { Toaster as Sonner, type ToasterProps as SonnerProps } from 'svelte-sonner';
9
+ import { mode } from 'mode-watcher';
10
+
11
+ let { ...restProps }: SonnerProps = $props();
12
+ </script>
13
+
14
+ <Sonner
15
+ theme={mode.current}
16
+ class="toaster group"
17
+ style="--normal-bg: var(--color-popover); --normal-text: var(--color-popover-foreground); --normal-border: var(--color-border);"
18
+ {...restProps}
19
+ >{#snippet loadingIcon()}
20
+ <Loader2Icon class="size-4 animate-spin" />
21
+ {/snippet}
22
+ {#snippet successIcon()}
23
+ <CircleCheckIcon class="size-4" />
24
+ {/snippet}
25
+ {#snippet errorIcon()}
26
+ <OctagonXIcon class="size-4" />
27
+ {/snippet}
28
+ {#snippet infoIcon()}
29
+ <InfoIcon class="size-4" />
30
+ {/snippet}
31
+ {#snippet warningIcon()}
32
+ <TriangleAlertIcon class="size-4" />
33
+ {/snippet}
34
+ </Sonner>
@@ -0,0 +1,4 @@
1
+ import { Toaster as Sonner, type ToasterProps as SonnerProps } from 'svelte-sonner';
2
+ declare const Sonner: import("svelte").Component<SonnerProps, {}, "">;
3
+ type Sonner = ReturnType<typeof Sonner>;
4
+ export default Sonner;
@@ -15,7 +15,7 @@
15
15
  bind:checked
16
16
  data-slot="switch"
17
17
  class={cn(
18
- 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 shadow-xs peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
18
+ 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
19
19
  className
20
20
  )}
21
21
  {...restProps}
@@ -13,7 +13,7 @@
13
13
  bind:ref
14
14
  data-slot="tabs-trigger"
15
15
  class={cn(
16
- "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-2 py-1 text-sm font-medium transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
16
+ "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  bind:this={ref}
15
15
  data-slot="textarea"
16
16
  class={cn(
17
- 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 field-sizing-content shadow-xs flex min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
17
+ 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
18
18
  className
19
19
  )}
20
20
  bind:value
@@ -22,7 +22,7 @@
22
22
  {sideOffset}
23
23
  {side}
24
24
  class={cn(
25
- 'bg-primary text-primary-foreground 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-(--bits-tooltip-content-transform-origin) z-50 w-fit text-balance rounded-md px-3 py-1.5 text-xs',
25
+ 'bg-primary text-primary-foreground 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 z-50 w-fit origin-(--bits-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',
26
26
  className
27
27
  )}
28
28
  {...restProps}
package/package.json CHANGED
@@ -1,177 +1,190 @@
1
1
  {
2
- "name": "@aphexcms/ui",
3
- "version": "0.1.8",
4
- "description": "Shared UI components for Aphex CMS (shadcn-svelte)",
5
- "type": "module",
6
- "exports": {
7
- "./package.json": "./package.json",
8
- "./shadcn/alert": {
9
- "types": "./dist/components/ui/alert/index.d.ts",
10
- "svelte": "./dist/components/ui/alert/index.js",
11
- "default": "./dist/components/ui/alert/index.js"
12
- },
13
- "./shadcn/alert-dialog": {
14
- "types": "./dist/components/ui/alert-dialog/index.d.ts",
15
- "svelte": "./dist/components/ui/alert-dialog/index.js",
16
- "default": "./dist/components/ui/alert-dialog/index.js"
17
- },
18
- "./shadcn/avatar": {
19
- "types": "./dist/components/ui/avatar/index.d.ts",
20
- "svelte": "./dist/components/ui/avatar/index.js",
21
- "default": "./dist/components/ui/avatar/index.js"
22
- },
23
- "./shadcn/badge": {
24
- "types": "./dist/components/ui/badge/index.d.ts",
25
- "svelte": "./dist/components/ui/badge/index.js",
26
- "default": "./dist/components/ui/badge/index.js"
27
- },
28
- "./shadcn/breadcrumb": {
29
- "types": "./dist/components/ui/breadcrumb/index.d.ts",
30
- "svelte": "./dist/components/ui/breadcrumb/index.js",
31
- "default": "./dist/components/ui/breadcrumb/index.js"
32
- },
33
- "./shadcn/button": {
34
- "types": "./dist/components/ui/button/index.d.ts",
35
- "svelte": "./dist/components/ui/button/index.js",
36
- "default": "./dist/components/ui/button/index.js"
37
- },
38
- "./shadcn/calendar": {
39
- "types": "./dist/components/ui/calendar/index.d.ts",
40
- "svelte": "./dist/components/ui/calendar/index.js",
41
- "default": "./dist/components/ui/calendar/index.js"
42
- },
43
- "./shadcn/card": {
44
- "types": "./dist/components/ui/card/index.d.ts",
45
- "svelte": "./dist/components/ui/card/index.js",
46
- "default": "./dist/components/ui/card/index.js"
47
- },
48
- "./shadcn/checkbox": {
49
- "types": "./dist/components/ui/checkbox/index.d.ts",
50
- "svelte": "./dist/components/ui/checkbox/index.js",
51
- "default": "./dist/components/ui/checkbox/index.js"
52
- },
53
- "./shadcn/collapsible": {
54
- "types": "./dist/components/ui/collapsible/index.d.ts",
55
- "svelte": "./dist/components/ui/collapsible/index.js",
56
- "default": "./dist/components/ui/collapsible/index.js"
57
- },
58
- "./shadcn/command": {
59
- "types": "./dist/components/ui/command/index.d.ts",
60
- "svelte": "./dist/components/ui/command/index.js",
61
- "default": "./dist/components/ui/command/index.js"
62
- },
63
- "./shadcn/dialog": {
64
- "types": "./dist/components/ui/dialog/index.d.ts",
65
- "svelte": "./dist/components/ui/dialog/index.js",
66
- "default": "./dist/components/ui/dialog/index.js"
67
- },
68
- "./shadcn/dropdown-menu": {
69
- "types": "./dist/components/ui/dropdown-menu/index.d.ts",
70
- "svelte": "./dist/components/ui/dropdown-menu/index.js",
71
- "default": "./dist/components/ui/dropdown-menu/index.js"
72
- },
73
- "./shadcn/input": {
74
- "types": "./dist/components/ui/input/index.d.ts",
75
- "svelte": "./dist/components/ui/input/index.js",
76
- "default": "./dist/components/ui/input/index.js"
77
- },
78
- "./shadcn/label": {
79
- "types": "./dist/components/ui/label/index.d.ts",
80
- "svelte": "./dist/components/ui/label/index.js",
81
- "default": "./dist/components/ui/label/index.js"
82
- },
83
- "./shadcn/popover": {
84
- "types": "./dist/components/ui/popover/index.d.ts",
85
- "svelte": "./dist/components/ui/popover/index.js",
86
- "default": "./dist/components/ui/popover/index.js"
87
- },
88
- "./shadcn/radio-group": {
89
- "types": "./dist/components/ui/radio-group/index.d.ts",
90
- "svelte": "./dist/components/ui/radio-group/index.js",
91
- "default": "./dist/components/ui/radio-group/index.js"
92
- },
93
- "./shadcn/select": {
94
- "types": "./dist/components/ui/select/index.d.ts",
95
- "svelte": "./dist/components/ui/select/index.js",
96
- "default": "./dist/components/ui/select/index.js"
97
- },
98
- "./shadcn/separator": {
99
- "types": "./dist/components/ui/separator/index.d.ts",
100
- "svelte": "./dist/components/ui/separator/index.js",
101
- "default": "./dist/components/ui/separator/index.js"
102
- },
103
- "./shadcn/sheet": {
104
- "types": "./dist/components/ui/sheet/index.d.ts",
105
- "svelte": "./dist/components/ui/sheet/index.js",
106
- "default": "./dist/components/ui/sheet/index.js"
107
- },
108
- "./shadcn/sidebar": {
109
- "types": "./dist/components/ui/sidebar/index.d.ts",
110
- "svelte": "./dist/components/ui/sidebar/index.js",
111
- "default": "./dist/components/ui/sidebar/index.js"
112
- },
113
- "./shadcn/skeleton": {
114
- "types": "./dist/components/ui/skeleton/index.d.ts",
115
- "svelte": "./dist/components/ui/skeleton/index.js",
116
- "default": "./dist/components/ui/skeleton/index.js"
117
- },
118
- "./shadcn/switch": {
119
- "types": "./dist/components/ui/switch/index.d.ts",
120
- "svelte": "./dist/components/ui/switch/index.js",
121
- "default": "./dist/components/ui/switch/index.js"
122
- },
123
- "./shadcn/tabs": {
124
- "types": "./dist/components/ui/tabs/index.d.ts",
125
- "svelte": "./dist/components/ui/tabs/index.js",
126
- "default": "./dist/components/ui/tabs/index.js"
127
- },
128
- "./shadcn/textarea": {
129
- "types": "./dist/components/ui/textarea/index.d.ts",
130
- "svelte": "./dist/components/ui/textarea/index.js",
131
- "default": "./dist/components/ui/textarea/index.js"
132
- },
133
- "./shadcn/tooltip": {
134
- "types": "./dist/components/ui/tooltip/index.d.ts",
135
- "svelte": "./dist/components/ui/tooltip/index.js",
136
- "default": "./dist/components/ui/tooltip/index.js"
137
- },
138
- "./shadcn/css": "./src/app.css",
139
- "./utils": {
140
- "types": "./dist/utils.d.ts",
141
- "default": "./dist/utils.js"
142
- }
143
- },
144
- "files": [
145
- "dist",
146
- "src/app.css"
147
- ],
148
- "peerDependencies": {
149
- "bits-ui": "^2.11.1",
150
- "clsx": "^2.1.1",
151
- "svelte": "^5.0.0",
152
- "tailwind-merge": "^3.3.1",
153
- "tailwind-variants": "^3.1.1"
154
- },
155
- "devDependencies": {
156
- "@internationalized/date": "^3.8.1",
157
- "@lucide/svelte": "^0.544.0",
158
- "@sveltejs/kit": "^2.22.0",
159
- "@sveltejs/package": "^2.5.4",
160
- "@sveltejs/vite-plugin-svelte": "^6.0.0",
161
- "@tailwindcss/vite": "^4.0.0",
162
- "bits-ui": "^2.11.0",
163
- "clsx": "^2.1.1",
164
- "svelte": "^5.0.0",
165
- "tailwind-merge": "^3.3.1",
166
- "tailwind-variants": "^3.1.1",
167
- "tailwindcss": "^4.0.0",
168
- "tw-animate-css": "^1.4.0",
169
- "typescript": "^5.0.0",
170
- "vite": "^7.0.4"
171
- },
172
- "scripts": {
173
- "build": "node scripts/generate-exports.js && svelte-package",
174
- "shadcn": "pnpm dlx shadcn-svelte@latest add",
175
- "dev:local": "node ../../scripts/swap-package-paths.js ./package.json src lib"
176
- }
177
- }
2
+ "name": "@aphexcms/ui",
3
+ "version": "0.2.0",
4
+ "description": "Shared UI components for Aphex CMS (shadcn-svelte)",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "scripts": {
10
+ "dev": "svelte-package --watch",
11
+ "build": "rm -rf .svelte-kit/__package__/__package_types_tmp__ && node scripts/generate-exports.js && svelte-package",
12
+ "shadcn": "pnpm dlx shadcn-svelte@latest add",
13
+ "dev:local": "node ../../scripts/swap-package-paths.js ./package.json src lib",
14
+ "prepack": "node ../../scripts/swap-package-paths.js ./package.json dist lib && pnpm build",
15
+ "postpack": "node ../../scripts/swap-package-paths.js ./package.json src lib"
16
+ },
17
+ "exports": {
18
+ "./package.json": "./package.json",
19
+ "./shadcn/alert": {
20
+ "types": "./dist/components/ui/alert/index.d.ts",
21
+ "svelte": "./dist/components/ui/alert/index.js",
22
+ "default": "./dist/components/ui/alert/index.js"
23
+ },
24
+ "./shadcn/alert-dialog": {
25
+ "types": "./dist/components/ui/alert-dialog/index.d.ts",
26
+ "svelte": "./dist/components/ui/alert-dialog/index.js",
27
+ "default": "./dist/components/ui/alert-dialog/index.js"
28
+ },
29
+ "./shadcn/avatar": {
30
+ "types": "./dist/components/ui/avatar/index.d.ts",
31
+ "svelte": "./dist/components/ui/avatar/index.js",
32
+ "default": "./dist/components/ui/avatar/index.js"
33
+ },
34
+ "./shadcn/badge": {
35
+ "types": "./dist/components/ui/badge/index.d.ts",
36
+ "svelte": "./dist/components/ui/badge/index.js",
37
+ "default": "./dist/components/ui/badge/index.js"
38
+ },
39
+ "./shadcn/breadcrumb": {
40
+ "types": "./dist/components/ui/breadcrumb/index.d.ts",
41
+ "svelte": "./dist/components/ui/breadcrumb/index.js",
42
+ "default": "./dist/components/ui/breadcrumb/index.js"
43
+ },
44
+ "./shadcn/button": {
45
+ "types": "./dist/components/ui/button/index.d.ts",
46
+ "svelte": "./dist/components/ui/button/index.js",
47
+ "default": "./dist/components/ui/button/index.js"
48
+ },
49
+ "./shadcn/calendar": {
50
+ "types": "./dist/components/ui/calendar/index.d.ts",
51
+ "svelte": "./dist/components/ui/calendar/index.js",
52
+ "default": "./dist/components/ui/calendar/index.js"
53
+ },
54
+ "./shadcn/card": {
55
+ "types": "./dist/components/ui/card/index.d.ts",
56
+ "svelte": "./dist/components/ui/card/index.js",
57
+ "default": "./dist/components/ui/card/index.js"
58
+ },
59
+ "./shadcn/checkbox": {
60
+ "types": "./dist/components/ui/checkbox/index.d.ts",
61
+ "svelte": "./dist/components/ui/checkbox/index.js",
62
+ "default": "./dist/components/ui/checkbox/index.js"
63
+ },
64
+ "./shadcn/collapsible": {
65
+ "types": "./dist/components/ui/collapsible/index.d.ts",
66
+ "svelte": "./dist/components/ui/collapsible/index.js",
67
+ "default": "./dist/components/ui/collapsible/index.js"
68
+ },
69
+ "./shadcn/command": {
70
+ "types": "./dist/components/ui/command/index.d.ts",
71
+ "svelte": "./dist/components/ui/command/index.js",
72
+ "default": "./dist/components/ui/command/index.js"
73
+ },
74
+ "./shadcn/dialog": {
75
+ "types": "./dist/components/ui/dialog/index.d.ts",
76
+ "svelte": "./dist/components/ui/dialog/index.js",
77
+ "default": "./dist/components/ui/dialog/index.js"
78
+ },
79
+ "./shadcn/dropdown-menu": {
80
+ "types": "./dist/components/ui/dropdown-menu/index.d.ts",
81
+ "svelte": "./dist/components/ui/dropdown-menu/index.js",
82
+ "default": "./dist/components/ui/dropdown-menu/index.js"
83
+ },
84
+ "./shadcn/input": {
85
+ "types": "./dist/components/ui/input/index.d.ts",
86
+ "svelte": "./dist/components/ui/input/index.js",
87
+ "default": "./dist/components/ui/input/index.js"
88
+ },
89
+ "./shadcn/label": {
90
+ "types": "./dist/components/ui/label/index.d.ts",
91
+ "svelte": "./dist/components/ui/label/index.js",
92
+ "default": "./dist/components/ui/label/index.js"
93
+ },
94
+ "./shadcn/popover": {
95
+ "types": "./dist/components/ui/popover/index.d.ts",
96
+ "svelte": "./dist/components/ui/popover/index.js",
97
+ "default": "./dist/components/ui/popover/index.js"
98
+ },
99
+ "./shadcn/radio-group": {
100
+ "types": "./dist/components/ui/radio-group/index.d.ts",
101
+ "svelte": "./dist/components/ui/radio-group/index.js",
102
+ "default": "./dist/components/ui/radio-group/index.js"
103
+ },
104
+ "./shadcn/select": {
105
+ "types": "./dist/components/ui/select/index.d.ts",
106
+ "svelte": "./dist/components/ui/select/index.js",
107
+ "default": "./dist/components/ui/select/index.js"
108
+ },
109
+ "./shadcn/separator": {
110
+ "types": "./dist/components/ui/separator/index.d.ts",
111
+ "svelte": "./dist/components/ui/separator/index.js",
112
+ "default": "./dist/components/ui/separator/index.js"
113
+ },
114
+ "./shadcn/sheet": {
115
+ "types": "./dist/components/ui/sheet/index.d.ts",
116
+ "svelte": "./dist/components/ui/sheet/index.js",
117
+ "default": "./dist/components/ui/sheet/index.js"
118
+ },
119
+ "./shadcn/sidebar": {
120
+ "types": "./dist/components/ui/sidebar/index.d.ts",
121
+ "svelte": "./dist/components/ui/sidebar/index.js",
122
+ "default": "./dist/components/ui/sidebar/index.js"
123
+ },
124
+ "./shadcn/skeleton": {
125
+ "types": "./dist/components/ui/skeleton/index.d.ts",
126
+ "svelte": "./dist/components/ui/skeleton/index.js",
127
+ "default": "./dist/components/ui/skeleton/index.js"
128
+ },
129
+ "./shadcn/sonner": {
130
+ "types": "./dist/components/ui/sonner/index.d.ts",
131
+ "svelte": "./dist/components/ui/sonner/index.js",
132
+ "default": "./dist/components/ui/sonner/index.js"
133
+ },
134
+ "./shadcn/switch": {
135
+ "types": "./dist/components/ui/switch/index.d.ts",
136
+ "svelte": "./dist/components/ui/switch/index.js",
137
+ "default": "./dist/components/ui/switch/index.js"
138
+ },
139
+ "./shadcn/tabs": {
140
+ "types": "./dist/components/ui/tabs/index.d.ts",
141
+ "svelte": "./dist/components/ui/tabs/index.js",
142
+ "default": "./dist/components/ui/tabs/index.js"
143
+ },
144
+ "./shadcn/textarea": {
145
+ "types": "./dist/components/ui/textarea/index.d.ts",
146
+ "svelte": "./dist/components/ui/textarea/index.js",
147
+ "default": "./dist/components/ui/textarea/index.js"
148
+ },
149
+ "./shadcn/tooltip": {
150
+ "types": "./dist/components/ui/tooltip/index.d.ts",
151
+ "svelte": "./dist/components/ui/tooltip/index.js",
152
+ "default": "./dist/components/ui/tooltip/index.js"
153
+ },
154
+ "./shadcn/css": "./src/app.css",
155
+ "./utils": {
156
+ "types": "./dist/utils.d.ts",
157
+ "default": "./dist/utils.js"
158
+ }
159
+ },
160
+ "files": [
161
+ "dist",
162
+ "src/app.css"
163
+ ],
164
+ "peerDependencies": {
165
+ "bits-ui": "^2.14.4",
166
+ "clsx": "^2.1.1",
167
+ "svelte": "^5.44.0",
168
+ "tailwind-merge": "^3.4.0",
169
+ "tailwind-variants": "^3.2.2"
170
+ },
171
+ "devDependencies": {
172
+ "@internationalized/date": "^3.10.0",
173
+ "@lucide/svelte": "^0.561.0",
174
+ "@sveltejs/kit": "^2.49.0",
175
+ "@sveltejs/package": "^2.5.6",
176
+ "@sveltejs/vite-plugin-svelte": "^6.2.1",
177
+ "@tailwindcss/vite": "^4.1.17",
178
+ "bits-ui": "^2.14.4",
179
+ "clsx": "^2.1.1",
180
+ "mode-watcher": "^1.1.0",
181
+ "svelte": "^5.44.0",
182
+ "svelte-sonner": "^1.0.7",
183
+ "tailwind-merge": "^3.4.0",
184
+ "tailwind-variants": "^3.2.2",
185
+ "tailwindcss": "^4.1.17",
186
+ "tw-animate-css": "^1.4.0",
187
+ "typescript": "^5.9.3",
188
+ "vite": "^7.2.4"
189
+ }
190
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Benjamin Sinidol
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.