diff --git a/resources/js/components/ui/button/Button.vue b/resources/js/components/ui/button/Button.vue index c6691f6..374320b 100644 --- a/resources/js/components/ui/button/Button.vue +++ b/resources/js/components/ui/button/Button.vue @@ -1,17 +1,19 @@ diff --git a/resources/js/components/ui/button/index.ts b/resources/js/components/ui/button/index.ts index 751d3fd..26e2c55 100644 --- a/resources/js/components/ui/button/index.ts +++ b/resources/js/components/ui/button/index.ts @@ -1,42 +1,38 @@ -import { cva, type VariantProps } from 'class-variance-authority' +import type { VariantProps } from "class-variance-authority" +import { cva } from "class-variance-authority" -export { default as Button } from './Button.vue' +export { default as Button } from "./Button.vue" export const buttonVariants = cva( - 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium shadow-sm active:shadow-none active:inset-shadow-2xs active:inset-shadow-black/15 active:border-none transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=\'size-\'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { default: - 'bg-slate-100 hover:bg-slate-200 dark:bg-neutral-700 dark:hover:bg-neutral-700/66 border-b-1 border-t-1 border-t-white/75 border-b-slate-300 dark:border-t-neutral-600 dark:border-b-neutral-800', - action: - 'bg-blue-600 border-b-1 border-t-1 border-t-blue-400 border-b-blue-800 active:bg-blue-700 hover:bg-blue-500 text-white', + "bg-primary text-primary-foreground hover:bg-primary/90", destructive: - 'bg-destructive dark:bg-red-700 text-white border-b-1 border-t-1 border-t-red-200 border-b-red-700 dark:border-t-red-400 dark:border-b-red-800 hover:bg-red-600 active:bg-red-500 active:inset-shadow-red-950 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40', - success: - 'bg-success text-success-foreground border-b-1 border-t-1 border-t-lime-200 border-b-lime-500 dark:border-t-lime-400 dark:border-b-lime-800 hover:bg-lime-500 active:bg-lime-500 active:inset-shadow-lime-600 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40', + "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", outline: - 'border bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", secondary: - 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + "bg-secondary text-secondary-foreground hover:bg-secondary/80", ghost: - 'border-none shadow-none hover:bg-slate-100 hover:text-accent-foreground dark:hover:bg-accent/50', - link: 'text-primary underline-offset-4 hover:underline', - pressed: - 'bg-slate-100 dark:bg-neutral-700 shadow-none inset-shadow-2xs inset-shadow-black/15 border-none', + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", }, size: { - default: 'h-8 px-6 active:pt-[1px] has-[>svg]:px-3', - sm: 'h-7 px-4 rounded-md gap-1.5 has-[>svg]:px-2.5', - lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', - icon: 'size-9', + "default": "h-9 px-4 py-2 has-[>svg]:px-3", + "sm": "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + "lg": "h-10 rounded-md px-6 has-[>svg]:px-4", + "icon": "size-9", + "icon-sm": "size-8", + "icon-lg": "size-10", }, }, defaultVariants: { - variant: 'default', - size: 'default', + variant: "default", + size: "default", }, }, ) - export type ButtonVariants = VariantProps diff --git a/resources/js/components/ui/crm-button/Button.vue b/resources/js/components/ui/crm-button/Button.vue new file mode 100644 index 0000000..c6691f6 --- /dev/null +++ b/resources/js/components/ui/crm-button/Button.vue @@ -0,0 +1,27 @@ + + + diff --git a/resources/js/components/ui/crm-button/index.ts b/resources/js/components/ui/crm-button/index.ts new file mode 100644 index 0000000..751d3fd --- /dev/null +++ b/resources/js/components/ui/crm-button/index.ts @@ -0,0 +1,42 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Button } from './Button.vue' + +export const buttonVariants = cva( + 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium shadow-sm active:shadow-none active:inset-shadow-2xs active:inset-shadow-black/15 active:border-none transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=\'size-\'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', + { + variants: { + variant: { + default: + 'bg-slate-100 hover:bg-slate-200 dark:bg-neutral-700 dark:hover:bg-neutral-700/66 border-b-1 border-t-1 border-t-white/75 border-b-slate-300 dark:border-t-neutral-600 dark:border-b-neutral-800', + action: + 'bg-blue-600 border-b-1 border-t-1 border-t-blue-400 border-b-blue-800 active:bg-blue-700 hover:bg-blue-500 text-white', + destructive: + 'bg-destructive dark:bg-red-700 text-white border-b-1 border-t-1 border-t-red-200 border-b-red-700 dark:border-t-red-400 dark:border-b-red-800 hover:bg-red-600 active:bg-red-500 active:inset-shadow-red-950 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40', + success: + 'bg-success text-success-foreground border-b-1 border-t-1 border-t-lime-200 border-b-lime-500 dark:border-t-lime-400 dark:border-b-lime-800 hover:bg-lime-500 active:bg-lime-500 active:inset-shadow-lime-600 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40', + outline: + 'border bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: + 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + ghost: + 'border-none shadow-none hover:bg-slate-100 hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + pressed: + 'bg-slate-100 dark:bg-neutral-700 shadow-none inset-shadow-2xs inset-shadow-black/15 border-none', + }, + size: { + default: 'h-8 px-6 active:pt-[1px] has-[>svg]:px-3', + sm: 'h-7 px-4 rounded-md gap-1.5 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type ButtonVariants = VariantProps diff --git a/resources/js/components/ui/crm-input-group/InputGroup.vue b/resources/js/components/ui/crm-input-group/InputGroup.vue new file mode 100644 index 0000000..5490005 --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroup.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/components/ui/crm-input-group/InputGroupAddon.vue b/resources/js/components/ui/crm-input-group/InputGroupAddon.vue new file mode 100644 index 0000000..709f482 --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroupAddon.vue @@ -0,0 +1,36 @@ + + + diff --git a/resources/js/components/ui/crm-input-group/InputGroupButton.vue b/resources/js/components/ui/crm-input-group/InputGroupButton.vue new file mode 100644 index 0000000..f9225ad --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroupButton.vue @@ -0,0 +1,21 @@ + + + diff --git a/resources/js/components/ui/crm-input-group/InputGroupInput.vue b/resources/js/components/ui/crm-input-group/InputGroupInput.vue new file mode 100644 index 0000000..a6cfac0 --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroupInput.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/crm-input-group/InputGroupText.vue b/resources/js/components/ui/crm-input-group/InputGroupText.vue new file mode 100644 index 0000000..e317337 --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroupText.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/crm-input-group/InputGroupTextarea.vue b/resources/js/components/ui/crm-input-group/InputGroupTextarea.vue new file mode 100644 index 0000000..b58a86f --- /dev/null +++ b/resources/js/components/ui/crm-input-group/InputGroupTextarea.vue @@ -0,0 +1,19 @@ + + +