@akira-io/ui 1.3.1 → 2.1.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.
- package/README.md +2 -2
- package/dist/blocks.d.ts +100 -10
- package/dist/blocks.js +547 -270
- package/dist/blocks.js.map +1 -1
- package/dist/{chunk-3Z2VGVPI.js → chunk-53V4J7MC.js} +17 -7
- package/dist/chunk-53V4J7MC.js.map +1 -0
- package/dist/chunk-BH3B26DK.js +394 -0
- package/dist/chunk-BH3B26DK.js.map +1 -0
- package/dist/chunk-BP2YDMMI.js +29 -0
- package/dist/chunk-BP2YDMMI.js.map +1 -0
- package/dist/chunk-BR3JI3KN.js +458 -0
- package/dist/chunk-BR3JI3KN.js.map +1 -0
- package/dist/{chunk-YBXRJSR3.js → chunk-CAUTXZ4U.js} +15 -7
- package/dist/chunk-CAUTXZ4U.js.map +1 -0
- package/dist/{chunk-I6VVCFZ2.js → chunk-DPLCEU34.js} +342 -238
- package/dist/chunk-DPLCEU34.js.map +1 -0
- package/dist/chunk-IQMRJXEO.js +5 -4
- package/dist/chunk-IQMRJXEO.js.map +1 -1
- package/dist/chunk-L2H5GIF7.js +5 -4
- package/dist/chunk-L2H5GIF7.js.map +1 -1
- package/dist/{chunk-2V6HUWST.js → chunk-NKPFIA32.js} +19 -6
- package/dist/chunk-NKPFIA32.js.map +1 -0
- package/dist/{chunk-QNF4LJVT.js → chunk-OS7YY5R4.js} +8 -6
- package/dist/chunk-OS7YY5R4.js.map +1 -0
- package/dist/{chunk-IDNOI4OK.js → chunk-PCYYU332.js} +15 -8
- package/dist/chunk-PCYYU332.js.map +1 -0
- package/dist/{chunk-KHOA4TEI.js → chunk-PPWJK5T3.js} +60 -25
- package/dist/chunk-PPWJK5T3.js.map +1 -0
- package/dist/{chunk-N2KIFFI7.js → chunk-QZRSQVCN.js} +30 -34
- package/dist/chunk-QZRSQVCN.js.map +1 -0
- package/dist/{chunk-SZUXATOF.js → chunk-XLAOE5MV.js} +170 -76
- package/dist/chunk-XLAOE5MV.js.map +1 -0
- package/dist/{chunk-B3L6PRLX.js → chunk-ZQXZ4UGE.js} +208 -100
- package/dist/chunk-ZQXZ4UGE.js.map +1 -0
- package/dist/code.d.ts +2 -2
- package/dist/code.js +96 -52
- package/dist/code.js.map +1 -1
- package/dist/{context-OwSoVEri.d.ts → context-2wTOwxCk.d.ts} +13 -5
- package/dist/editor.d.ts +1 -1
- package/dist/editor.js +135 -52
- package/dist/editor.js.map +1 -1
- package/dist/{field-DWm5NXeV.d.ts → field-C1TdmC2t.d.ts} +1 -1
- package/dist/index.d.ts +15 -12
- package/dist/index.js +1105 -633
- package/dist/index.js.map +1 -1
- package/dist/inertia.d.ts +11 -3
- package/dist/inertia.js +66 -12
- package/dist/inertia.js.map +1 -1
- package/dist/{input-Dxnsxi-f.d.ts → input-B4uEClxB.d.ts} +1 -1
- package/dist/{json-viewer-BARA2RCW.d.ts → json-viewer-Bssv9mTD.d.ts} +1 -1
- package/dist/locales/fr.d.ts +44 -0
- package/dist/locales/fr.js +248 -0
- package/dist/locales/fr.js.map +1 -0
- package/dist/locales/pt.d.ts +10 -9
- package/dist/locales/pt.js +40 -3
- package/dist/locales/pt.js.map +1 -1
- package/dist/shells.d.ts +46 -5
- package/dist/shells.js +211 -71
- package/dist/shells.js.map +1 -1
- package/dist/{sidebar-Bp6Q46j-.d.ts → sidebar-BLL2tgTt.d.ts} +2 -2
- package/dist/types-1LUmNJf_.d.ts +41 -0
- package/dist/{types-cmBL8zOc.d.ts → types-CMZRvMV5.d.ts} +1 -1
- package/dist/{types-B-eGPoFD.d.ts → types-CfAUvz--.d.ts} +1 -1
- package/package.json +8 -2
- package/theme.css +11 -0
- package/dist/chunk-2V6HUWST.js.map +0 -1
- package/dist/chunk-3Z2VGVPI.js.map +0 -1
- package/dist/chunk-B3L6PRLX.js.map +0 -1
- package/dist/chunk-I6VVCFZ2.js.map +0 -1
- package/dist/chunk-IDNOI4OK.js.map +0 -1
- package/dist/chunk-KHOA4TEI.js.map +0 -1
- package/dist/chunk-N2KIFFI7.js.map +0 -1
- package/dist/chunk-NGMG2UWX.js +0 -172
- package/dist/chunk-NGMG2UWX.js.map +0 -1
- package/dist/chunk-QNF4LJVT.js.map +0 -1
- package/dist/chunk-SZUXATOF.js.map +0 -1
- package/dist/chunk-YBXRJSR3.js.map +0 -1
- package/dist/types-u1qfmJQi.d.ts +0 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/lib/language.ts","../src/components/ui/spinner.tsx","../src/components/ui/button.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const surfaceRadius = 'rounded-3xl';\n\nexport const controlRadius = 'rounded-2xl';\n\nexport const compactRadius = 'rounded-xl';\n\nexport const glassEdge =\n 'ring-1 ring-surface-ring backdrop-blur-2xl backdrop-saturate-150';\n\nexport const elevatedSurface = `${glassEdge} ${surfaceRadius} border-0 shadow-(--glass-elevation)`;\n\nexport const floatingSurface = `${glassEdge} border-0 bg-popover/85 text-popover-foreground shadow-(--glass-elevation)`;\n\nexport const modalSurface = `${floatingSurface} ${surfaceRadius}`;\n\nexport const panelSurface = `${floatingSurface} ${controlRadius}`;\n\nexport const menuSurface = `${panelSurface} bg-popover/80`;\n\nexport const flatSurface = 'shadow-none ring-0';\n\nexport const recessedSurface = `${controlRadius} border-0 bg-surface-recessed/30 text-foreground shadow-none ring-0 backdrop-blur-none`;\n\nexport const nestedRadius = controlRadius;\n\nexport const nestedSurfaceReset =\n 'nested-surface:border-0 nested-surface:ring-0 nested-surface:bg-transparent nested-surface:shadow-none nested-surface:backdrop-blur-none';\n\nexport const nestedEdgeToEdge = 'nested-surface:rounded-none';\n\nexport const glassControl =\n 'ring-1 ring-surface-ring border-0 shadow-(--glass-shadow) backdrop-blur-md backdrop-saturate-150';\n\nexport const controlFill = 'bg-surface-control';\n\nexport const fieldText = 'text-base sm:text-sm';\n\nexport const fieldSurface = `${glassControl} ${controlFill} ${controlRadius} ${fieldText} text-foreground`;\n\nexport const focusRing =\n 'focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring';\n\nexport const fieldFocus = `${focusRing} focus-visible:shadow-(--glass-elevation)`;\n\nexport const menuHighlight =\n 'outline-hidden focus:bg-accent focus:text-accent-foreground';\n\nexport const scrollEdgeTransition = 'transition-shadow duration-200 ease-out';\n\nexport const scrollShadowFromTop = 'shadow-(--scroll-shadow-top)';\n\nexport const scrollShadowFromBottom = 'shadow-(--scroll-shadow-bottom)';\n\nexport interface SurfaceProps {\n inset?: boolean;\n}\n\nexport interface FlatSurfaceProps extends SurfaceProps {\n flat?: boolean;\n}\n\nexport function surface(inset?: boolean | null): string {\n return inset ? `${elevatedSurface} ${recessedSurface}` : elevatedSurface;\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { LoaderCircle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst spinnerVariants = cva('inline-flex shrink-0', {\n variants: {\n size: {\n sm: 'size-3.5',\n default: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\ninterface SpinnerProps\n extends React.ComponentProps<'span'>, VariantProps<typeof spinnerVariants> {\n label?: string;\n}\n\nfunction Spinner({\n className,\n label = 'Loading',\n size = 'default',\n slotName = 'spinner',\n ...props\n}: SpinnerProps & SlotNameProps) {\n return (\n <span\n {...props}\n data-size={size}\n role=\"status\"\n className={cn(spinnerVariants({ size }), className)}\n data-slot={slotName}\n >\n <LoaderCircle\n aria-hidden=\"true\"\n className=\"animate-spin size-full text-current motion-reduce:animate-none\"\n />\n <span className=\"sr-only\">{label}</span>\n </span>\n );\n}\n\nexport { Spinner, spinnerVariants, type SpinnerProps };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport {\n Spinner,\n spinnerVariants,\n type SpinnerProps,\n} from '@/components/ui/spinner';\nimport { controlFill, focusRing, glassControl } from '@/lib/language';\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n `inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-2xl text-sm font-semibold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 aria-invalid:ring-destructive/20 aria-invalid:border-destructive ${focusRing}`,\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground shadow-xl hover:bg-primary/90 hover:scale-[1.02] active:scale-[0.98]',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:outline-destructive',\n outline: `${glassControl} ${controlFill} hover:bg-accent hover:text-accent-foreground`,\n secondary: `${glassControl} bg-secondary/80 text-secondary-foreground hover:bg-secondary`,\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-11 px-4 has-[>svg]:gap-3',\n sm: 'h-9 rounded-xl px-3 has-[>svg]:gap-2.5',\n lg: 'h-12 px-6 has-[>svg]:gap-4 text-base',\n icon: 'size-11',\n 'icon-sm': 'size-9 rounded-xl',\n 'icon-lg': 'size-12',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\ntype ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;\n\ninterface ButtonProps\n extends\n React.ComponentProps<'button'>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n loadingLabel?: string;\n slotName?: string;\n}\n\nfunction spinnerSize(size: ButtonSize): SpinnerProps['size'] {\n if (size === 'sm' || size === 'icon-sm') return 'sm';\n if (size === 'lg' || size === 'icon-lg') return 'lg';\n return 'default';\n}\n\nconst ICON_PADDING: Record<ButtonSize, { leading: string; trailing: string }> =\n {\n default: { leading: 'pl-3', trailing: 'pr-2' },\n sm: { leading: 'pl-2.5', trailing: 'pr-1.5' },\n lg: { leading: 'pl-4', trailing: 'pr-3' },\n icon: { leading: '', trailing: '' },\n 'icon-sm': { leading: '', trailing: '' },\n 'icon-lg': { leading: '', trailing: '' },\n };\n\nfunction iconPadding(size: ButtonSize, children: React.ReactNode): string {\n const parts = React.Children.toArray(children).filter(\n (part) => typeof part !== 'string' || part.trim() !== '',\n );\n\n if (parts.length < 2) {\n return '';\n }\n\n const edges = ICON_PADDING[size];\n\n return cn(\n React.isValidElement(parts[0]) && edges.leading,\n React.isValidElement(parts[parts.length - 1]) && edges.trailing,\n );\n}\n\nfunction loadingPadding(size: ButtonSize): string | undefined {\n if (size === 'sm') return 'px-2.5';\n if (size === 'lg') return 'px-5';\n if (size === 'default') return 'px-3';\n return undefined;\n}\n\nfunction Button({\n className,\n variant = 'default',\n size = 'default',\n asChild = false,\n loading,\n loadingLabel = 'Loading',\n slotName = 'button',\n disabled,\n children,\n onClick,\n ...props\n}: ButtonProps) {\n const isLoading = loading === true;\n const hasLoadingState = loading !== undefined;\n const resolvedSize: ButtonSize = size ?? 'default';\n const baseClasses = buttonVariants({ variant, size: resolvedSize });\n const classes = cn(\n baseClasses,\n iconPadding(resolvedSize, children),\n className,\n );\n const loadingClasses = cn(\n baseClasses,\n loadingPadding(resolvedSize),\n className,\n );\n\n if (asChild) {\n const Comp = asChild ? Slot : 'button';\n const mappedSpinnerSize = spinnerSize(resolvedSize);\n const slottedChild = React.isValidElement<\n React.HTMLAttributes<HTMLElement>\n >(children)\n ? children\n : undefined;\n const items = React.Children.toArray(slottedChild?.props.children);\n const first = items[0];\n const iconOnly = resolvedSize.startsWith('icon');\n const hasLeadingVisual =\n React.isValidElement(first) && (items.length > 1 || iconOnly);\n const leadingVisual = hasLeadingVisual ? first : undefined;\n const label = hasLeadingVisual ? items.slice(1) : items;\n const slottedChildren =\n hasLoadingState && slottedChild\n ? React.cloneElement(\n slottedChild,\n isLoading\n ? {\n onClick(event) {\n event.preventDefault();\n event.stopPropagation();\n },\n }\n : undefined,\n <span\n data-slot=\"button-content\"\n className=\"inline-flex items-center gap-[inherit]\"\n >\n <span\n data-slot=\"button-leading\"\n className={cn(\n 'inline-grid shrink-0 place-items-center',\n spinnerVariants({ size: mappedSpinnerSize }),\n )}\n >\n {isLoading ? (\n <Spinner\n size={mappedSpinnerSize}\n label={loadingLabel}\n className=\"size-full\"\n />\n ) : (\n leadingVisual\n )}\n </span>\n <span data-slot=\"button-label\">{label}</span>\n {!hasLeadingVisual && !iconOnly && (\n <span\n aria-hidden=\"true\"\n data-slot=\"button-balance\"\n className={spinnerVariants({\n size: mappedSpinnerSize,\n })}\n />\n )}\n </span>,\n )\n : children;\n\n return (\n <Comp\n {...props}\n data-slot={slotName}\n data-variant={variant}\n data-size={resolvedSize}\n data-loading={isLoading || undefined}\n className={hasLoadingState ? loadingClasses : classes}\n disabled={disabled || isLoading}\n aria-busy={isLoading ? true : props['aria-busy']}\n aria-disabled={isLoading ? true : props['aria-disabled']}\n onClick={isLoading ? undefined : onClick}\n >\n {slottedChildren}\n </Comp>\n );\n }\n\n if (loading === undefined) {\n return (\n <button\n {...props}\n data-slot={slotName}\n data-variant={variant}\n data-size={resolvedSize}\n className={classes}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </button>\n );\n }\n\n const items = React.Children.toArray(children);\n const first = items[0];\n const iconOnly = resolvedSize.startsWith('icon');\n const hasLeadingVisual =\n React.isValidElement(first) && (items.length > 1 || iconOnly);\n const leadingVisual = hasLeadingVisual ? first : undefined;\n const label = hasLeadingVisual ? items.slice(1) : items;\n const mappedSpinnerSize = spinnerSize(resolvedSize);\n\n return (\n <button\n {...props}\n data-slot={slotName}\n data-variant={variant}\n data-size={resolvedSize}\n data-loading={isLoading || undefined}\n className={loadingClasses}\n disabled={disabled || isLoading}\n aria-busy={isLoading ? true : props['aria-busy']}\n onClick={onClick}\n >\n <span\n data-slot=\"button-content\"\n className=\"inline-flex items-center gap-[inherit]\"\n >\n <span\n data-slot=\"button-leading\"\n className={cn(\n 'inline-grid shrink-0 place-items-center',\n spinnerVariants({ size: mappedSpinnerSize }),\n )}\n >\n {isLoading ? (\n <Spinner\n size={mappedSpinnerSize}\n label={loadingLabel}\n className=\"size-full\"\n />\n ) : (\n leadingVisual\n )}\n </span>\n <span data-slot=\"button-label\">{label}</span>\n {!hasLeadingVisual && !iconOnly && (\n <span\n aria-hidden=\"true\"\n data-slot=\"button-balance\"\n className={spinnerVariants({\n size: mappedSpinnerSize,\n })}\n />\n )}\n </span>\n </button>\n );\n}\n\nexport { Button, buttonVariants, type ButtonProps };\n"],"mappings":"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","names":["cva","jsx","jsxs","cva","mappedSpinnerSize","items","first","iconOnly","hasLeadingVisual","leadingVisual","label"]}
|
|
@@ -1,32 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
1
|
+
import {
|
|
2
|
+
cn,
|
|
3
|
+
modalSurface
|
|
4
|
+
} from "./chunk-PPWJK5T3.js";
|
|
6
5
|
|
|
6
|
+
// src/components/ui/dialog.tsx
|
|
7
|
+
import { XIcon } from "lucide-react";
|
|
8
|
+
import { Dialog as DialogPrimitive } from "radix-ui";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
10
|
function Dialog({
|
|
8
11
|
slotName = "dialog",
|
|
9
12
|
...props
|
|
10
13
|
}) {
|
|
11
|
-
return /* @__PURE__ */ jsx(
|
|
14
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, "data-slot": slotName });
|
|
12
15
|
}
|
|
13
16
|
function DialogTrigger({
|
|
14
17
|
slotName = "dialog-trigger",
|
|
15
18
|
...props
|
|
16
19
|
}) {
|
|
17
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...props, "data-slot": slotName });
|
|
18
21
|
}
|
|
19
22
|
function DialogPortal({
|
|
20
23
|
slotName = "dialog-portal",
|
|
21
24
|
...props
|
|
22
25
|
}) {
|
|
23
|
-
return /* @__PURE__ */ jsx(
|
|
26
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...props, "data-slot": slotName });
|
|
24
27
|
}
|
|
25
28
|
function DialogClose({
|
|
26
29
|
slotName = "dialog-close",
|
|
27
30
|
...props
|
|
28
31
|
}) {
|
|
29
|
-
return /* @__PURE__ */ jsx(
|
|
32
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...props, "data-slot": slotName });
|
|
30
33
|
}
|
|
31
34
|
function DialogOverlay({
|
|
32
35
|
className,
|
|
@@ -34,7 +37,7 @@ function DialogOverlay({
|
|
|
34
37
|
...props
|
|
35
38
|
}) {
|
|
36
39
|
return /* @__PURE__ */ jsx(
|
|
37
|
-
|
|
40
|
+
DialogPrimitive.Overlay,
|
|
38
41
|
{
|
|
39
42
|
className: cn(
|
|
40
43
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/60 backdrop-blur-sm fixed z-50",
|
|
@@ -55,7 +58,7 @@ function DialogContent({
|
|
|
55
58
|
return /* @__PURE__ */ jsxs(DialogPortal, { slotName: "dialog-portal", children: [
|
|
56
59
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
57
60
|
/* @__PURE__ */ jsxs(
|
|
58
|
-
|
|
61
|
+
DialogPrimitive.Content,
|
|
59
62
|
{
|
|
60
63
|
className: cn(
|
|
61
64
|
`${modalSurface} 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 gap-6 p-6 sm:w-full sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-[calc(100%-2rem)] max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] overflow-hidden duration-200`,
|
|
@@ -65,7 +68,7 @@ function DialogContent({
|
|
|
65
68
|
"data-slot": slotName,
|
|
66
69
|
children: [
|
|
67
70
|
children,
|
|
68
|
-
!hideCloseButton && /* @__PURE__ */ jsxs(
|
|
71
|
+
!hideCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "top-6 right-6 h-10 w-10 shadow-xs absolute z-50 flex items-center justify-center rounded-full border border-border bg-muted text-muted-foreground transition-colors hover:bg-accent hover:text-foreground", children: [
|
|
69
72
|
/* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5" }),
|
|
70
73
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
71
74
|
] })
|
|
@@ -114,7 +117,7 @@ function DialogTitle({
|
|
|
114
117
|
...props
|
|
115
118
|
}) {
|
|
116
119
|
return /* @__PURE__ */ jsx(
|
|
117
|
-
|
|
120
|
+
DialogPrimitive.Title,
|
|
118
121
|
{
|
|
119
122
|
className: cn(
|
|
120
123
|
"text-2xl font-bold tracking-tight md:text-3xl text-foreground",
|
|
@@ -131,7 +134,7 @@ function DialogDescription({
|
|
|
131
134
|
...props
|
|
132
135
|
}) {
|
|
133
136
|
return /* @__PURE__ */ jsx(
|
|
134
|
-
|
|
137
|
+
DialogPrimitive.Description,
|
|
135
138
|
{
|
|
136
139
|
className: cn(
|
|
137
140
|
"text-base font-medium leading-relaxed text-muted-foreground",
|
|
@@ -142,24 +145,17 @@ function DialogDescription({
|
|
|
142
145
|
}
|
|
143
146
|
);
|
|
144
147
|
}
|
|
145
|
-
function Label({
|
|
146
|
-
className,
|
|
147
|
-
slotName = "label",
|
|
148
|
-
...props
|
|
149
|
-
}) {
|
|
150
|
-
return /* @__PURE__ */ jsx(
|
|
151
|
-
LabelPrimitive.Root,
|
|
152
|
-
{
|
|
153
|
-
className: cn(
|
|
154
|
-
"text-sm font-medium text-foreground select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
155
|
-
className
|
|
156
|
-
),
|
|
157
|
-
...props,
|
|
158
|
-
"data-slot": slotName
|
|
159
|
-
}
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
148
|
|
|
163
|
-
export {
|
|
164
|
-
|
|
165
|
-
|
|
149
|
+
export {
|
|
150
|
+
Dialog,
|
|
151
|
+
DialogTrigger,
|
|
152
|
+
DialogPortal,
|
|
153
|
+
DialogClose,
|
|
154
|
+
DialogOverlay,
|
|
155
|
+
DialogContent,
|
|
156
|
+
DialogHeader,
|
|
157
|
+
DialogFooter,
|
|
158
|
+
DialogTitle,
|
|
159
|
+
DialogDescription
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=chunk-QZRSQVCN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/dialog.tsx"],"sourcesContent":["import { XIcon } from 'lucide-react';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { modalSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Dialog({\n slotName = 'dialog',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root> & SlotNameProps) {\n return <DialogPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction DialogTrigger({\n slotName = 'dialog-trigger',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger> & SlotNameProps) {\n return <DialogPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DialogPortal({\n slotName = 'dialog-portal',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal> & SlotNameProps) {\n return <DialogPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DialogClose({\n slotName = 'dialog-close',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close> & SlotNameProps) {\n return <DialogPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction DialogOverlay({\n className,\n slotName = 'dialog-overlay',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay> & SlotNameProps) {\n return (\n <DialogPrimitive.Overlay\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/60 backdrop-blur-sm fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\ninterface DialogContentProps extends React.ComponentProps<\n typeof DialogPrimitive.Content\n> {\n hideCloseButton?: boolean;\n}\n\nfunction DialogContent({\n className,\n children,\n hideCloseButton = false,\n slotName = 'dialog-content',\n ...props\n}: DialogContentProps & SlotNameProps) {\n return (\n <DialogPortal slotName=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n className={cn(\n `${modalSurface} 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 gap-6 p-6 sm:w-full sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-[calc(100%-2rem)] max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] overflow-hidden duration-200`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n {!hideCloseButton && (\n <DialogPrimitive.Close className=\"top-6 right-6 h-10 w-10 shadow-xs absolute z-50 flex items-center justify-center rounded-full border border-border bg-muted text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\">\n <XIcon className=\"h-5 w-5\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({\n className,\n slotName = 'dialog-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-2 p-6 md:p-8 flex flex-col text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n slotName = 'dialog-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-3 p-6 md:p-8 sm:flex-row sm:justify-end flex flex-col-reverse border-t border-border',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n slotName = 'dialog-title',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title> & SlotNameProps) {\n return (\n <DialogPrimitive.Title\n className={cn(\n 'text-2xl font-bold tracking-tight md:text-3xl text-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n slotName = 'dialog-description',\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description> & SlotNameProps) {\n return (\n <DialogPrimitive.Description\n className={cn(\n 'text-base font-medium leading-relaxed text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":";;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,UAAU,uBAAuB;AAW/B,cAmES,YAnET;AAJX,SAAS,OAAO;AAAA,EACZ,WAAW;AAAA,EACX,GAAG;AACP,GAAsE;AAClE,SAAO,oBAAC,gBAAgB,MAAhB,EAAsB,GAAG,OAAO,aAAW,UAAU;AACjE;AAEA,SAAS,cAAc;AAAA,EACnB,WAAW;AAAA,EACX,GAAG;AACP,GAAyE;AACrE,SAAO,oBAAC,gBAAgB,SAAhB,EAAyB,GAAG,OAAO,aAAW,UAAU;AACpE;AAEA,SAAS,aAAa;AAAA,EAClB,WAAW;AAAA,EACX,GAAG;AACP,GAAwE;AACpE,SAAO,oBAAC,gBAAgB,QAAhB,EAAwB,GAAG,OAAO,aAAW,UAAU;AACnE;AAEA,SAAS,YAAY;AAAA,EACjB,WAAW;AAAA,EACX,GAAG;AACP,GAAuE;AACnE,SAAO,oBAAC,gBAAgB,OAAhB,EAAuB,GAAG,OAAO,aAAW,UAAU;AAClE;AAEA,SAAS,cAAc;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAAyE;AACrE,SACI;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MACJ,aAAW;AAAA;AAAA,EACf;AAER;AAQA,SAAS,cAAc;AAAA,EACnB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,GAAG;AACP,GAAuC;AACnC,SACI,qBAAC,gBAAa,UAAS,iBACnB;AAAA,wBAAC,iBAAc;AAAA,IACf;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACG,WAAW;AAAA,UACP,GAAG,YAAY;AAAA,UACf;AAAA,QACJ;AAAA,QACC,GAAG;AAAA,QACJ,aAAW;AAAA,QAEV;AAAA;AAAA,UACA,CAAC,mBACE,qBAAC,gBAAgB,OAAhB,EAAsB,WAAU,6MAC7B;AAAA,gCAAC,SAAM,WAAU,WAAU;AAAA,YAC3B,oBAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACnC;AAAA;AAAA;AAAA,IAER;AAAA,KACJ;AAER;AAEA,SAAS,aAAa;AAAA,EAClB;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAAgD;AAC5C,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MACJ,aAAW;AAAA;AAAA,EACf;AAER;AAEA,SAAS,aAAa;AAAA,EAClB;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAAgD;AAC5C,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MACJ,aAAW;AAAA;AAAA,EACf;AAER;AAEA,SAAS,YAAY;AAAA,EACjB;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAAuE;AACnE,SACI;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MACJ,aAAW;AAAA;AAAA,EACf;AAER;AAEA,SAAS,kBAAkB;AAAA,EACvB;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAA6E;AACzE,SACI;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MACJ,aAAW;AAAA;AAAA,EACf;AAER;","names":[]}
|