@neuronix-tech/ui 0.1.0 → 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.
- package/dist/components/button/button.js +1 -1
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/button.variants.d.ts +5 -0
- package/dist/components/button/button.variants.js +6 -6
- package/dist/components/button/button.variants.js.map +1 -1
- package/dist/components/icon-button/icon-button.js +1 -1
- package/dist/components/icon-button/icon-button.js.map +1 -1
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.js +8 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast.d.ts +30 -0
- package/dist/components/toast/toast.js +75 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.types.d.ts +22 -0
- package/dist/components/toast/toast.types.js +1 -0
- package/dist/components/toast/toast.types.js.map +1 -0
- package/dist/components/toast/toast.variants.d.ts +23 -0
- package/dist/components/toast/toast.variants.js +19 -0
- package/dist/components/toast/toast.variants.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives/toast.d.ts +31 -0
- package/dist/primitives/toast.js +102 -0
- package/dist/primitives/toast.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +2 -2
|
@@ -20,8 +20,8 @@ function Button({
|
|
|
20
20
|
"data-slot": "button",
|
|
21
21
|
"aria-busy": isLoading || void 0,
|
|
22
22
|
disabled: disabled || isLoading,
|
|
23
|
-
className: cn(buttonVariants({ variant, size: "default" }), fullWidth && "nxui:w-full"),
|
|
24
23
|
...props,
|
|
24
|
+
className: cn(buttonVariants({ variant, size: "default" }), fullWidth && "nxui:w-full"),
|
|
25
25
|
children: isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26
26
|
/* @__PURE__ */ jsx("span", { className: "nxui:invisible nxui:contents", children }),
|
|
27
27
|
/* @__PURE__ */ jsx(SpinnerPrimitive, { className: cn("nxui:absolute nxui:inset-0 nxui:m-auto", spinnerSizes.default) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/button/button.tsx"],"sourcesContent":["\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\n\nimport type { ButtonProps } from \"./button.types.js\"\nimport { buttonVariants, spinnerSizes } from \"./button.variants.js\"\nimport { cn } from \"../../lib/cn.js\"\nimport { SpinnerPrimitive } from \"../../primitives/spinner.js\"\nimport { TooltipContent, TooltipRoot, TooltipTrigger } from \"../../primitives/tooltip.js\"\n\n/**\n * The Neuronix button. Pick a `variant`; the height/typography come from the\n * project's density tokens, so every button in the app is the same size.\n * For links, pass your router's Link via `render`:\n *\n * <Button render={<Link href=\"/clients\" />}>View clients</Button>\n */\nfunction Button({\n variant = \"default\",\n isLoading = false,\n fullWidth = false,\n disabled,\n children,\n tooltip,\n ...props\n}: ButtonProps) {\n const button = (\n <ButtonPrimitive\n data-slot=\"button\"\n aria-busy={isLoading || undefined}\n disabled={disabled || isLoading}\n className={cn(buttonVariants({ variant, size: \"default\" }), fullWidth && \"nxui:w-full\")}\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button/button.tsx"],"sourcesContent":["\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\n\nimport type { ButtonProps } from \"./button.types.js\"\nimport { buttonVariants, spinnerSizes } from \"./button.variants.js\"\nimport { cn } from \"../../lib/cn.js\"\nimport { SpinnerPrimitive } from \"../../primitives/spinner.js\"\nimport { TooltipContent, TooltipRoot, TooltipTrigger } from \"../../primitives/tooltip.js\"\n\n/**\n * The Neuronix button. Pick a `variant`; the height/typography come from the\n * project's density tokens, so every button in the app is the same size.\n * For links, pass your router's Link via `render`:\n *\n * <Button render={<Link href=\"/clients\" />}>View clients</Button>\n */\nfunction Button({\n variant = \"default\",\n isLoading = false,\n fullWidth = false,\n disabled,\n children,\n tooltip,\n ...props\n}: ButtonProps) {\n const button = (\n <ButtonPrimitive\n data-slot=\"button\"\n aria-busy={isLoading || undefined}\n disabled={disabled || isLoading}\n {...props}\n // className comes AFTER the spread: a Base UI `render` merge (e.g. Toast\n // Action/Close rendering this component) injects its own className prop,\n // and the sealed classes must always win.\n className={cn(buttonVariants({ variant, size: \"default\" }), fullWidth && \"nxui:w-full\")}\n >\n {isLoading ? (\n <>\n {/* `contents` keeps the children as direct flex items (gap, icon padding\n selectors, width all preserved); `invisible` hides them while their\n space is kept, so the button never resizes. */}\n <span className=\"nxui:invisible nxui:contents\">{children}</span>\n <SpinnerPrimitive className={cn(\"nxui:absolute nxui:inset-0 nxui:m-auto\", spinnerSizes.default)} />\n </>\n ) : (\n children\n )}\n </ButtonPrimitive>\n )\n\n if (!tooltip) return button\n\n return (\n <TooltipRoot>\n <TooltipTrigger render={button} />\n <TooltipContent>{tooltip}</TooltipContent>\n </TooltipRoot>\n )\n}\n\nexport { Button }\n"],"mappings":";AAsCQ,mBAIE,KAJF;AApCR,SAAS,UAAU,uBAAuB;AAG1C,SAAS,gBAAgB,oBAAoB;AAC7C,SAAS,UAAU;AACnB,SAAS,wBAAwB;AACjC,SAAS,gBAAgB,aAAa,sBAAsB;AAS5D,SAAS,OAAO;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgB;AACd,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW,aAAa;AAAA,MACxB,UAAU,YAAY;AAAA,MACrB,GAAG;AAAA,MAIJ,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,GAAG,aAAa,aAAa;AAAA,MAErF,sBACC,iCAIE;AAAA,4BAAC,UAAK,WAAU,gCAAgC,UAAS;AAAA,QACzD,oBAAC,oBAAiB,WAAW,GAAG,0CAA0C,aAAa,OAAO,GAAG;AAAA,SACnG,IAEA;AAAA;AAAA,EAEJ;AAGF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,qBAAC,eACC;AAAA,wBAAC,kBAAe,QAAQ,QAAQ;AAAA,IAChC,oBAAC,kBAAgB,mBAAQ;AAAA,KAC3B;AAEJ;","names":[]}
|
|
@@ -6,6 +6,11 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
6
6
|
* - every class carries the `nxui:` prefix (sealed, collision-free stylesheet)
|
|
7
7
|
* - fixed heights/text sizes became density tokens (h-7 → h-control-md,
|
|
8
8
|
* text-xs → text-body) so the project's density preset applies globally.
|
|
9
|
+
*
|
|
10
|
+
* Border COLOR lives per variant, never in the base: there is no tailwind-merge,
|
|
11
|
+
* so a base `border-transparent` plus outline's `border-border` would both apply
|
|
12
|
+
* and the stylesheet order (not the class order) would pick the winner — which
|
|
13
|
+
* silently erased the outline border. Every class axis is set exactly once.
|
|
9
14
|
*/
|
|
10
15
|
declare const buttonVariants: (props?: ({
|
|
11
16
|
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { cva } from "class-variance-authority";
|
|
2
2
|
const buttonVariants = cva(
|
|
3
|
-
"nxui:group/button nxui:relative nxui:inline-flex nxui:shrink-0 nxui:items-center nxui:justify-center nxui:rounded-md nxui:border nxui:
|
|
3
|
+
"nxui:group/button nxui:relative nxui:inline-flex nxui:shrink-0 nxui:items-center nxui:justify-center nxui:rounded-md nxui:border nxui:bg-clip-padding nxui:text-body/relaxed nxui:font-medium nxui:whitespace-nowrap nxui:transition-all nxui:outline-none nxui:select-none nxui:focus-visible:border-ring nxui:focus-visible:ring-2 nxui:focus-visible:ring-ring/30 nxui:active:not-aria-[haspopup]:translate-y-px nxui:disabled:pointer-events-none nxui:disabled:opacity-50 nxui:aria-invalid:border-destructive nxui:aria-invalid:ring-2 nxui:aria-invalid:ring-destructive/20 nxui:dark:aria-invalid:border-destructive/50 nxui:dark:aria-invalid:ring-destructive/40 nxui:[&_svg]:pointer-events-none nxui:[&_svg]:shrink-0 nxui:[&_svg:not([class*=size-])]:size-4",
|
|
4
4
|
{
|
|
5
5
|
variants: {
|
|
6
6
|
variant: {
|
|
7
|
-
default: "nxui:bg-primary nxui:text-primary-foreground nxui:hover:bg-primary/80",
|
|
7
|
+
default: "nxui:border-transparent nxui:bg-primary nxui:text-primary-foreground nxui:hover:bg-primary/80",
|
|
8
8
|
outline: "nxui:border-border nxui:hover:bg-input/50 nxui:hover:text-foreground nxui:aria-expanded:bg-muted nxui:aria-expanded:text-foreground nxui:dark:bg-input/30",
|
|
9
|
-
secondary: "nxui:bg-secondary nxui:text-secondary-foreground nxui:hover:bg-[color-mix(in_oklch,var(--nx-secondary),var(--nx-foreground)_5%)] nxui:aria-expanded:bg-secondary nxui:aria-expanded:text-secondary-foreground",
|
|
10
|
-
ghost: "nxui:hover:bg-muted nxui:hover:text-foreground nxui:aria-expanded:bg-muted nxui:aria-expanded:text-foreground nxui:dark:hover:bg-muted/50",
|
|
11
|
-
destructive: "nxui:bg-destructive/10 nxui:text-destructive nxui:hover:bg-destructive/20 nxui:focus-visible:border-destructive/40 nxui:focus-visible:ring-destructive/20 nxui:dark:bg-destructive/20 nxui:dark:hover:bg-destructive/30 nxui:dark:focus-visible:ring-destructive/40",
|
|
12
|
-
link: "nxui:text-primary nxui:underline-offset-4 nxui:hover:underline"
|
|
9
|
+
secondary: "nxui:border-transparent nxui:bg-secondary nxui:text-secondary-foreground nxui:hover:bg-[color-mix(in_oklch,var(--nx-secondary),var(--nx-foreground)_5%)] nxui:aria-expanded:bg-secondary nxui:aria-expanded:text-secondary-foreground",
|
|
10
|
+
ghost: "nxui:border-transparent nxui:hover:bg-muted nxui:hover:text-foreground nxui:aria-expanded:bg-muted nxui:aria-expanded:text-foreground nxui:dark:hover:bg-muted/50",
|
|
11
|
+
destructive: "nxui:border-transparent nxui:bg-destructive/10 nxui:text-destructive nxui:hover:bg-destructive/20 nxui:focus-visible:border-destructive/40 nxui:focus-visible:ring-destructive/20 nxui:dark:bg-destructive/20 nxui:dark:hover:bg-destructive/30 nxui:dark:focus-visible:ring-destructive/40",
|
|
12
|
+
link: "nxui:border-transparent nxui:text-primary nxui:underline-offset-4 nxui:hover:underline"
|
|
13
13
|
},
|
|
14
14
|
size: {
|
|
15
15
|
default: "nxui:h-control-md nxui:gap-1 nxui:px-2 nxui:text-body/relaxed nxui:has-data-[icon=inline-end]:pr-1.5 nxui:has-data-[icon=inline-start]:pl-1.5 nxui:[&_svg:not([class*=size-])]:size-3.5",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/button/button.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Ported from nx-automations ui/button.tsx with two systematic changes:\n * - every class carries the `nxui:` prefix (sealed, collision-free stylesheet)\n * - fixed heights/text sizes became density tokens (h-7 → h-control-md,\n * text-xs → text-body) so the project's density preset applies globally.\n */\nexport const buttonVariants = cva(\n \"nxui:group/button nxui:relative nxui:inline-flex nxui:shrink-0 nxui:items-center nxui:justify-center nxui:rounded-md nxui:border nxui:
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button/button.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Ported from nx-automations ui/button.tsx with two systematic changes:\n * - every class carries the `nxui:` prefix (sealed, collision-free stylesheet)\n * - fixed heights/text sizes became density tokens (h-7 → h-control-md,\n * text-xs → text-body) so the project's density preset applies globally.\n *\n * Border COLOR lives per variant, never in the base: there is no tailwind-merge,\n * so a base `border-transparent` plus outline's `border-border` would both apply\n * and the stylesheet order (not the class order) would pick the winner — which\n * silently erased the outline border. Every class axis is set exactly once.\n */\nexport const buttonVariants = cva(\n \"nxui:group/button nxui:relative nxui:inline-flex nxui:shrink-0 nxui:items-center nxui:justify-center nxui:rounded-md nxui:border nxui:bg-clip-padding nxui:text-body/relaxed nxui:font-medium nxui:whitespace-nowrap nxui:transition-all nxui:outline-none nxui:select-none nxui:focus-visible:border-ring nxui:focus-visible:ring-2 nxui:focus-visible:ring-ring/30 nxui:active:not-aria-[haspopup]:translate-y-px nxui:disabled:pointer-events-none nxui:disabled:opacity-50 nxui:aria-invalid:border-destructive nxui:aria-invalid:ring-2 nxui:aria-invalid:ring-destructive/20 nxui:dark:aria-invalid:border-destructive/50 nxui:dark:aria-invalid:ring-destructive/40 nxui:[&_svg]:pointer-events-none nxui:[&_svg]:shrink-0 nxui:[&_svg:not([class*=size-])]:size-4\",\n {\n variants: {\n variant: {\n default: \"nxui:border-transparent nxui:bg-primary nxui:text-primary-foreground nxui:hover:bg-primary/80\",\n outline:\n \"nxui:border-border nxui:hover:bg-input/50 nxui:hover:text-foreground nxui:aria-expanded:bg-muted nxui:aria-expanded:text-foreground nxui:dark:bg-input/30\",\n secondary:\n \"nxui:border-transparent nxui:bg-secondary nxui:text-secondary-foreground nxui:hover:bg-[color-mix(in_oklch,var(--nx-secondary),var(--nx-foreground)_5%)] nxui:aria-expanded:bg-secondary nxui:aria-expanded:text-secondary-foreground\",\n ghost:\n \"nxui:border-transparent nxui:hover:bg-muted nxui:hover:text-foreground nxui:aria-expanded:bg-muted nxui:aria-expanded:text-foreground nxui:dark:hover:bg-muted/50\",\n destructive:\n \"nxui:border-transparent nxui:bg-destructive/10 nxui:text-destructive nxui:hover:bg-destructive/20 nxui:focus-visible:border-destructive/40 nxui:focus-visible:ring-destructive/20 nxui:dark:bg-destructive/20 nxui:dark:hover:bg-destructive/30 nxui:dark:focus-visible:ring-destructive/40\",\n link: \"nxui:border-transparent nxui:text-primary nxui:underline-offset-4 nxui:hover:underline\",\n },\n size: {\n default:\n \"nxui:h-control-md nxui:gap-1 nxui:px-2 nxui:text-body/relaxed nxui:has-data-[icon=inline-end]:pr-1.5 nxui:has-data-[icon=inline-start]:pl-1.5 nxui:[&_svg:not([class*=size-])]:size-3.5\",\n xs: \"nxui:h-control-xs nxui:gap-1 nxui:rounded-sm nxui:px-2 nxui:text-body-xs nxui:has-data-[icon=inline-end]:pr-1.5 nxui:has-data-[icon=inline-start]:pl-1.5 nxui:[&_svg:not([class*=size-])]:size-2.5\",\n sm: \"nxui:h-control-sm nxui:gap-1 nxui:px-2 nxui:text-body/relaxed nxui:has-data-[icon=inline-end]:pr-1.5 nxui:has-data-[icon=inline-start]:pl-1.5 nxui:[&_svg:not([class*=size-])]:size-3\",\n lg: \"nxui:h-control-lg nxui:gap-1 nxui:px-2.5 nxui:text-body/relaxed nxui:has-data-[icon=inline-end]:pr-2 nxui:has-data-[icon=inline-start]:pl-2 nxui:[&_svg:not([class*=size-])]:size-4\",\n icon: \"nxui:size-control-md nxui:[&_svg:not([class*=size-])]:size-3.5\",\n \"icon-xs\": \"nxui:size-control-xs nxui:rounded-sm nxui:[&_svg:not([class*=size-])]:size-2.5\",\n \"icon-sm\": \"nxui:size-control-sm nxui:[&_svg:not([class*=size-])]:size-3\",\n \"icon-lg\": \"nxui:size-control-lg nxui:[&_svg:not([class*=size-])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n/** Loading-overlay spinner size per button size (mirrors the icon auto-size). */\nexport const spinnerSizes = {\n default: \"nxui:size-3.5\",\n xs: \"nxui:size-2.5\",\n sm: \"nxui:size-3\",\n lg: \"nxui:size-4\",\n icon: \"nxui:size-3.5\",\n \"icon-xs\": \"nxui:size-2.5\",\n \"icon-sm\": \"nxui:size-3\",\n \"icon-lg\": \"nxui:size-4\",\n} as const\n\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>\n"],"mappings":"AAAA,SAAS,WAA8B;AAahC,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,QACF,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SACE;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAGO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb;","names":[]}
|
|
@@ -12,8 +12,8 @@ function IconButton({ variant = "ghost", isLoading = false, disabled, children,
|
|
|
12
12
|
"data-slot": "icon-button",
|
|
13
13
|
"aria-busy": isLoading || void 0,
|
|
14
14
|
disabled: disabled || isLoading,
|
|
15
|
-
className: cn(buttonVariants({ variant, size: "icon" })),
|
|
16
15
|
...props,
|
|
16
|
+
className: cn(buttonVariants({ variant, size: "icon" })),
|
|
17
17
|
children: isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
18
|
/* @__PURE__ */ jsx("span", { className: "nxui:invisible nxui:contents", children }),
|
|
19
19
|
/* @__PURE__ */ jsx(SpinnerPrimitive, { className: cn("nxui:absolute nxui:inset-0 nxui:m-auto", spinnerSizes.icon) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\n\nimport type { IconButtonProps } from \"./icon-button.types.js\"\nimport { cn } from \"../../lib/cn.js\"\nimport { SpinnerPrimitive } from \"../../primitives/spinner.js\"\nimport { TooltipContent, TooltipRoot, TooltipTrigger } from \"../../primitives/tooltip.js\"\nimport { buttonVariants, spinnerSizes } from \"../button/button.variants.js\"\n\n/**\n * Square, icon-only button at the project's control size. Pass one icon as the\n * child; it is auto-sized. Give it a `tooltip` — an icon alone rarely explains\n * itself.\n *\n * <IconButton aria-label=\"Delete\" tooltip=\"Delete\" variant=\"destructive\">\n * <IconTrash />\n * </IconButton>\n */\nfunction IconButton({ variant = \"ghost\", isLoading = false, disabled, children, tooltip, ...props }: IconButtonProps) {\n const button = (\n <ButtonPrimitive\n data-slot=\"icon-button\"\n aria-busy={isLoading || undefined}\n disabled={disabled || isLoading}\n className={cn(buttonVariants({ variant, size: \"icon\" }))}\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\n\nimport type { IconButtonProps } from \"./icon-button.types.js\"\nimport { cn } from \"../../lib/cn.js\"\nimport { SpinnerPrimitive } from \"../../primitives/spinner.js\"\nimport { TooltipContent, TooltipRoot, TooltipTrigger } from \"../../primitives/tooltip.js\"\nimport { buttonVariants, spinnerSizes } from \"../button/button.variants.js\"\n\n/**\n * Square, icon-only button at the project's control size. Pass one icon as the\n * child; it is auto-sized. Give it a `tooltip` — an icon alone rarely explains\n * itself.\n *\n * <IconButton aria-label=\"Delete\" tooltip=\"Delete\" variant=\"destructive\">\n * <IconTrash />\n * </IconButton>\n */\nfunction IconButton({ variant = \"ghost\", isLoading = false, disabled, children, tooltip, ...props }: IconButtonProps) {\n const button = (\n <ButtonPrimitive\n data-slot=\"icon-button\"\n aria-busy={isLoading || undefined}\n disabled={disabled || isLoading}\n {...props}\n // className comes AFTER the spread: a Base UI `render` merge (e.g. Toast\n // Action/Close rendering this component) injects its own className prop,\n // and the sealed classes must always win.\n className={cn(buttonVariants({ variant, size: \"icon\" }))}\n >\n {isLoading ? (\n <>\n <span className=\"nxui:invisible nxui:contents\">{children}</span>\n <SpinnerPrimitive className={cn(\"nxui:absolute nxui:inset-0 nxui:m-auto\", spinnerSizes.icon)} />\n </>\n ) : (\n children\n )}\n </ButtonPrimitive>\n )\n\n if (!tooltip) return button\n\n return (\n <TooltipRoot>\n <TooltipTrigger render={button} />\n <TooltipContent>{tooltip}</TooltipContent>\n </TooltipRoot>\n )\n}\n\nexport { IconButton }\n"],"mappings":";AAgCQ,mBACE,KADF;AA9BR,SAAS,UAAU,uBAAuB;AAG1C,SAAS,UAAU;AACnB,SAAS,wBAAwB;AACjC,SAAS,gBAAgB,aAAa,sBAAsB;AAC5D,SAAS,gBAAgB,oBAAoB;AAW7C,SAAS,WAAW,EAAE,UAAU,SAAS,YAAY,OAAO,UAAU,UAAU,SAAS,GAAG,MAAM,GAAoB;AACpH,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW,aAAa;AAAA,MACxB,UAAU,YAAY;AAAA,MACrB,GAAG;AAAA,MAIJ,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,MAEtD,sBACC,iCACE;AAAA,4BAAC,UAAK,WAAU,gCAAgC,UAAS;AAAA,QACzD,oBAAC,oBAAiB,WAAW,GAAG,0CAA0C,aAAa,IAAI,GAAG;AAAA,SAChG,IAEA;AAAA;AAAA,EAEJ;AAGF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,qBAAC,eACC;AAAA,wBAAC,kBAAe,QAAQ,QAAQ;AAAA,IAChC,oBAAC,kBAAgB,mBAAQ;AAAA,KAC3B;AAEJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export { Toaster, successToast, warningToast, errorToast } from \"./toast.js\"\nexport type { ToastOptions, ToastActionOptions } from \"./toast.types.js\"\n"],"mappings":"AAAA,SAAS,SAAS,cAAc,cAAc,kBAAkB;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ToastOptions } from './toast.types.js';
|
|
3
|
+
|
|
4
|
+
/** Renders every live toast in the current provider. Internal — not exported publicly. */
|
|
5
|
+
declare function ToastList(): react.JSX.Element[];
|
|
6
|
+
/**
|
|
7
|
+
* Mount ONCE, at the root of the app (e.g. Next.js `app/layout.tsx`, as a
|
|
8
|
+
* sibling of `{children}`). It renders the toast viewport; every
|
|
9
|
+
* successToast / warningToast / errorToast call anywhere in the app shows up
|
|
10
|
+
* here. It takes no props: placement, timing, and stacking are library-owned.
|
|
11
|
+
*/
|
|
12
|
+
declare function Toaster(): react.JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* Confirms that something the user did worked ("Client saved"). The most
|
|
15
|
+
* common toast — fire it from a mutation's success callback, never on render.
|
|
16
|
+
*/
|
|
17
|
+
declare function successToast(title: string, options?: ToastOptions): void;
|
|
18
|
+
/**
|
|
19
|
+
* The action went through but something deserves attention ("Saved, but 2
|
|
20
|
+
* contacts were skipped"). Not for failures — those are errorToast.
|
|
21
|
+
*/
|
|
22
|
+
declare function warningToast(title: string, options?: ToastOptions): void;
|
|
23
|
+
/**
|
|
24
|
+
* Something the user asked for failed and was NOT applied ("Couldn't save the
|
|
25
|
+
* client"). Announced assertively to screen readers. Field-level validation
|
|
26
|
+
* errors belong on the field (the Form* `error` prop), never in a toast.
|
|
27
|
+
*/
|
|
28
|
+
declare function errorToast(title: string, options?: ToastOptions): void;
|
|
29
|
+
|
|
30
|
+
export { ToastList, Toaster, errorToast, successToast, warningToast };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { IconAlertOctagon, IconAlertTriangle, IconCircleCheck, IconX } from "@tabler/icons-react";
|
|
4
|
+
import { toastIconVariants, toastViewportClasses } from "./toast.variants.js";
|
|
5
|
+
import { Button } from "../button/index.js";
|
|
6
|
+
import { IconButton } from "../icon-button/index.js";
|
|
7
|
+
import {
|
|
8
|
+
ToastAction,
|
|
9
|
+
ToastClose,
|
|
10
|
+
ToastContent,
|
|
11
|
+
ToastDescription,
|
|
12
|
+
ToastPortal,
|
|
13
|
+
ToastProvider,
|
|
14
|
+
ToastRoot,
|
|
15
|
+
ToastTitle,
|
|
16
|
+
ToastViewport,
|
|
17
|
+
toastManager,
|
|
18
|
+
useToastManager
|
|
19
|
+
} from "../../primitives/toast.js";
|
|
20
|
+
const ICONS = {
|
|
21
|
+
success: IconCircleCheck,
|
|
22
|
+
warning: IconAlertTriangle,
|
|
23
|
+
error: IconAlertOctagon
|
|
24
|
+
};
|
|
25
|
+
function isToastType(type) {
|
|
26
|
+
return type !== void 0 && type in ICONS;
|
|
27
|
+
}
|
|
28
|
+
function ToastList() {
|
|
29
|
+
const { toasts } = useToastManager();
|
|
30
|
+
return toasts.map((item) => {
|
|
31
|
+
const type = isToastType(item.type) ? item.type : null;
|
|
32
|
+
const Icon = type ? ICONS[type] : null;
|
|
33
|
+
return /* @__PURE__ */ jsx(ToastRoot, { toast: item, children: /* @__PURE__ */ jsxs(ToastContent, { children: [
|
|
34
|
+
Icon && /* @__PURE__ */ jsx("span", { "data-slot": "toast-icon", className: toastIconVariants({ type }), children: /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true" }) }),
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { className: "nxui:flex nxui:min-w-0 nxui:flex-1 nxui:flex-col", children: [
|
|
36
|
+
/* @__PURE__ */ jsx(ToastTitle, {}),
|
|
37
|
+
/* @__PURE__ */ jsx(ToastDescription, {})
|
|
38
|
+
] }),
|
|
39
|
+
/* @__PURE__ */ jsx(ToastAction, { render: /* @__PURE__ */ jsx(Button, { variant: "outline" }) }),
|
|
40
|
+
/* @__PURE__ */ jsx(ToastClose, { render: /* @__PURE__ */ jsx(IconButton, { variant: "ghost", "aria-label": "Close" }), children: /* @__PURE__ */ jsx(IconX, { "aria-hidden": "true" }) })
|
|
41
|
+
] }) }, item.id);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function Toaster() {
|
|
45
|
+
return /* @__PURE__ */ jsx(ToastProvider, { toastManager, children: /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { className: toastViewportClasses, children: /* @__PURE__ */ jsx(ToastList, {}) }) }) });
|
|
46
|
+
}
|
|
47
|
+
function addToast(type, title, options = {}) {
|
|
48
|
+
const { description, action } = options;
|
|
49
|
+
toastManager.add({
|
|
50
|
+
type,
|
|
51
|
+
title,
|
|
52
|
+
description,
|
|
53
|
+
// Errors interrupt the screen reader (role="alert"); success and warning
|
|
54
|
+
// are announced politely so they never cut off what the user is hearing.
|
|
55
|
+
priority: type === "error" ? "high" : "low",
|
|
56
|
+
actionProps: action ? { children: action.label, onClick: action.onClick } : void 0
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function successToast(title, options) {
|
|
60
|
+
addToast("success", title, options);
|
|
61
|
+
}
|
|
62
|
+
function warningToast(title, options) {
|
|
63
|
+
addToast("warning", title, options);
|
|
64
|
+
}
|
|
65
|
+
function errorToast(title, options) {
|
|
66
|
+
addToast("error", title, options);
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
ToastList,
|
|
70
|
+
Toaster,
|
|
71
|
+
errorToast,
|
|
72
|
+
successToast,
|
|
73
|
+
warningToast
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/toast/toast.tsx"],"sourcesContent":["\"use client\"\n\nimport { IconAlertOctagon, IconAlertTriangle, IconCircleCheck, IconX } from \"@tabler/icons-react\"\n\nimport type { ToastOptions } from \"./toast.types.js\"\nimport { toastIconVariants, toastViewportClasses, type ToastType } from \"./toast.variants.js\"\nimport { Button } from \"../button/index.js\"\nimport { IconButton } from \"../icon-button/index.js\"\nimport {\n ToastAction,\n ToastClose,\n ToastContent,\n ToastDescription,\n ToastPortal,\n ToastProvider,\n ToastRoot,\n ToastTitle,\n ToastViewport,\n toastManager,\n useToastManager,\n} from \"../../primitives/toast.js\"\n\nconst ICONS = {\n success: IconCircleCheck,\n warning: IconAlertTriangle,\n error: IconAlertOctagon,\n} as const satisfies Record<ToastType, unknown>\n\nfunction isToastType(type: string | undefined): type is ToastType {\n return type !== undefined && type in ICONS\n}\n\n/** Renders every live toast in the current provider. Internal — not exported publicly. */\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map((item) => {\n const type = isToastType(item.type) ? item.type : null\n const Icon = type ? ICONS[type] : null\n return (\n <ToastRoot key={item.id} toast={item}>\n <ToastContent>\n {Icon && (\n <span data-slot=\"toast-icon\" className={toastIconVariants({ type })}>\n <Icon aria-hidden=\"true\" />\n </span>\n )}\n <div className=\"nxui:flex nxui:min-w-0 nxui:flex-1 nxui:flex-col\">\n <ToastTitle />\n <ToastDescription />\n </div>\n <ToastAction render={<Button variant=\"outline\" />} />\n <ToastClose render={<IconButton variant=\"ghost\" aria-label=\"Close\" />}>\n <IconX aria-hidden=\"true\" />\n </ToastClose>\n </ToastContent>\n </ToastRoot>\n )\n })\n}\n\n/**\n * Mount ONCE, at the root of the app (e.g. Next.js `app/layout.tsx`, as a\n * sibling of `{children}`). It renders the toast viewport; every\n * successToast / warningToast / errorToast call anywhere in the app shows up\n * here. It takes no props: placement, timing, and stacking are library-owned.\n */\nfunction Toaster() {\n return (\n <ToastProvider toastManager={toastManager}>\n <ToastPortal>\n <ToastViewport className={toastViewportClasses}>\n <ToastList />\n </ToastViewport>\n </ToastPortal>\n </ToastProvider>\n )\n}\n\nfunction addToast(type: ToastType, title: string, options: ToastOptions = {}) {\n const { description, action } = options\n toastManager.add({\n type,\n title,\n description,\n // Errors interrupt the screen reader (role=\"alert\"); success and warning\n // are announced politely so they never cut off what the user is hearing.\n priority: type === \"error\" ? \"high\" : \"low\",\n actionProps: action ? { children: action.label, onClick: action.onClick } : undefined,\n })\n}\n\n/**\n * Confirms that something the user did worked (\"Client saved\"). The most\n * common toast — fire it from a mutation's success callback, never on render.\n */\nfunction successToast(title: string, options?: ToastOptions) {\n addToast(\"success\", title, options)\n}\n\n/**\n * The action went through but something deserves attention (\"Saved, but 2\n * contacts were skipped\"). Not for failures — those are errorToast.\n */\nfunction warningToast(title: string, options?: ToastOptions) {\n addToast(\"warning\", title, options)\n}\n\n/**\n * Something the user asked for failed and was NOT applied (\"Couldn't save the\n * client\"). Announced assertively to screen readers. Field-level validation\n * errors belong on the field (the Form* `error` prop), never in a toast.\n */\nfunction errorToast(title: string, options?: ToastOptions) {\n addToast(\"error\", title, options)\n}\n\nexport { Toaster, ToastList, successToast, warningToast, errorToast }\n"],"mappings":";AA4Cc,cAGJ,YAHI;AA1Cd,SAAS,kBAAkB,mBAAmB,iBAAiB,aAAa;AAG5E,SAAS,mBAAmB,4BAA4C;AACxE,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,QAAQ;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEA,SAAS,YAAY,MAA6C;AAChE,SAAO,SAAS,UAAa,QAAQ;AACvC;AAGA,SAAS,YAAY;AACnB,QAAM,EAAE,OAAO,IAAI,gBAAgB;AAEnC,SAAO,OAAO,IAAI,CAAC,SAAS;AAC1B,UAAM,OAAO,YAAY,KAAK,IAAI,IAAI,KAAK,OAAO;AAClD,UAAM,OAAO,OAAO,MAAM,IAAI,IAAI;AAClC,WACE,oBAAC,aAAwB,OAAO,MAC9B,+BAAC,gBACE;AAAA,cACC,oBAAC,UAAK,aAAU,cAAa,WAAW,kBAAkB,EAAE,KAAK,CAAC,GAChE,8BAAC,QAAK,eAAY,QAAO,GAC3B;AAAA,MAEF,qBAAC,SAAI,WAAU,oDACb;AAAA,4BAAC,cAAW;AAAA,QACZ,oBAAC,oBAAiB;AAAA,SACpB;AAAA,MACA,oBAAC,eAAY,QAAQ,oBAAC,UAAO,SAAQ,WAAU,GAAI;AAAA,MACnD,oBAAC,cAAW,QAAQ,oBAAC,cAAW,SAAQ,SAAQ,cAAW,SAAQ,GACjE,8BAAC,SAAM,eAAY,QAAO,GAC5B;AAAA,OACF,KAfc,KAAK,EAgBrB;AAAA,EAEJ,CAAC;AACH;AAQA,SAAS,UAAU;AACjB,SACE,oBAAC,iBAAc,cACb,8BAAC,eACC,8BAAC,iBAAc,WAAW,sBACxB,8BAAC,aAAU,GACb,GACF,GACF;AAEJ;AAEA,SAAS,SAAS,MAAiB,OAAe,UAAwB,CAAC,GAAG;AAC5E,QAAM,EAAE,aAAa,OAAO,IAAI;AAChC,eAAa,IAAI;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,UAAU,SAAS,UAAU,SAAS;AAAA,IACtC,aAAa,SAAS,EAAE,UAAU,OAAO,OAAO,SAAS,OAAO,QAAQ,IAAI;AAAA,EAC9E,CAAC;AACH;AAMA,SAAS,aAAa,OAAe,SAAwB;AAC3D,WAAS,WAAW,OAAO,OAAO;AACpC;AAMA,SAAS,aAAa,OAAe,SAAwB;AAC3D,WAAS,WAAW,OAAO,OAAO;AACpC;AAOA,SAAS,WAAW,OAAe,SAAwB;AACzD,WAAS,SAAS,OAAO,OAAO;AAClC;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single follow-up action rendered as an outline button inside the toast
|
|
3
|
+
* (e.g. "Undo", "View", "Retry"). Clicking it runs `onClick`; the toast stays
|
|
4
|
+
* open unless the handler moves the user elsewhere or the timer runs out.
|
|
5
|
+
*/
|
|
6
|
+
interface ToastActionOptions {
|
|
7
|
+
label: string;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Everything a call site may decide about a toast. Placement, duration, icon,
|
|
12
|
+
* color, and stacking are library-owned — the function you call (success /
|
|
13
|
+
* warning / error) is the whole styling menu.
|
|
14
|
+
*/
|
|
15
|
+
interface ToastOptions {
|
|
16
|
+
/** Secondary line under the title, in muted text. Keep it to one sentence. */
|
|
17
|
+
description?: string;
|
|
18
|
+
/** Optional follow-up action. One per toast — a toast is not a dialog. */
|
|
19
|
+
action?: ToastActionOptions;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type { ToastActionOptions, ToastOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=toast.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Placement is a library decision: bottom-right on desktop, full-width (with a
|
|
6
|
+
* 16px gutter) on narrow screens — identical in every app.
|
|
7
|
+
*/
|
|
8
|
+
declare const toastViewportClasses = "nxui:fixed nxui:inset-x-4 nxui:bottom-4 nxui:z-50 nxui:mx-auto nxui:w-auto nxui:max-w-sm nxui:sm:right-4 nxui:sm:left-auto nxui:sm:mx-0 nxui:sm:w-full";
|
|
9
|
+
/**
|
|
10
|
+
* The type only tints the leading icon; the surface stays the neutral popover
|
|
11
|
+
* so a stack of mixed toasts reads as one family. nx-automations tinted only
|
|
12
|
+
* the error icon — every type gets its status color here (Law 14).
|
|
13
|
+
*
|
|
14
|
+
* The icon box is one control tall, like the title row and the action/close
|
|
15
|
+
* buttons, so the whole first line shares one center even when the
|
|
16
|
+
* description wraps below it.
|
|
17
|
+
*/
|
|
18
|
+
declare const toastIconVariants: (props?: ({
|
|
19
|
+
type?: "error" | "success" | "warning" | null | undefined;
|
|
20
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
21
|
+
type ToastType = NonNullable<VariantProps<typeof toastIconVariants>["type"]>;
|
|
22
|
+
|
|
23
|
+
export { type ToastType, toastIconVariants, toastViewportClasses };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
const toastViewportClasses = "nxui:fixed nxui:inset-x-4 nxui:bottom-4 nxui:z-50 nxui:mx-auto nxui:w-auto nxui:max-w-sm nxui:sm:right-4 nxui:sm:left-auto nxui:sm:mx-0 nxui:sm:w-full";
|
|
3
|
+
const toastIconVariants = cva(
|
|
4
|
+
"nxui:flex nxui:h-control-md nxui:shrink-0 nxui:items-center nxui:[&_svg]:pointer-events-none nxui:[&_svg:not([class*=size-])]:size-4",
|
|
5
|
+
{
|
|
6
|
+
variants: {
|
|
7
|
+
type: {
|
|
8
|
+
success: "nxui:text-success",
|
|
9
|
+
warning: "nxui:text-warning",
|
|
10
|
+
error: "nxui:text-destructive"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
export {
|
|
16
|
+
toastIconVariants,
|
|
17
|
+
toastViewportClasses
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=toast.variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/toast/toast.variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Placement is a library decision: bottom-right on desktop, full-width (with a\n * 16px gutter) on narrow screens — identical in every app.\n */\nexport const toastViewportClasses =\n \"nxui:fixed nxui:inset-x-4 nxui:bottom-4 nxui:z-50 nxui:mx-auto nxui:w-auto nxui:max-w-sm nxui:sm:right-4 nxui:sm:left-auto nxui:sm:mx-0 nxui:sm:w-full\"\n\n/**\n * The type only tints the leading icon; the surface stays the neutral popover\n * so a stack of mixed toasts reads as one family. nx-automations tinted only\n * the error icon — every type gets its status color here (Law 14).\n *\n * The icon box is one control tall, like the title row and the action/close\n * buttons, so the whole first line shares one center even when the\n * description wraps below it.\n */\nexport const toastIconVariants = cva(\n \"nxui:flex nxui:h-control-md nxui:shrink-0 nxui:items-center nxui:[&_svg]:pointer-events-none nxui:[&_svg:not([class*=size-])]:size-4\",\n {\n variants: {\n type: {\n success: \"nxui:text-success\",\n warning: \"nxui:text-warning\",\n error: \"nxui:text-destructive\",\n },\n },\n }\n)\n\nexport type ToastType = NonNullable<VariantProps<typeof toastIconVariants>[\"type\"]>\n"],"mappings":"AAAA,SAAS,WAA8B;AAMhC,MAAM,uBACX;AAWK,MAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export { FormTextInputProps, TextInputType } from './components/form-text-input/
|
|
|
12
12
|
export { IconButton } from './components/icon-button/icon-button.js';
|
|
13
13
|
export { IconButtonProps } from './components/icon-button/icon-button.types.js';
|
|
14
14
|
export { Spinner, SpinnerProps } from './components/spinner/spinner.js';
|
|
15
|
+
export { Toaster, errorToast, successToast, warningToast } from './components/toast/toast.js';
|
|
16
|
+
export { ToastActionOptions, ToastOptions } from './components/toast/toast.types.js';
|
|
15
17
|
import 'react';
|
|
16
18
|
import '@base-ui/react/button';
|
|
17
19
|
import './components/button/button.variants.js';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,12 @@ import {
|
|
|
14
14
|
} from "./components/form-text-input/index.js";
|
|
15
15
|
import { IconButton } from "./components/icon-button/index.js";
|
|
16
16
|
import { Spinner } from "./components/spinner/index.js";
|
|
17
|
+
import {
|
|
18
|
+
Toaster,
|
|
19
|
+
successToast,
|
|
20
|
+
warningToast,
|
|
21
|
+
errorToast
|
|
22
|
+
} from "./components/toast/index.js";
|
|
17
23
|
export {
|
|
18
24
|
Button,
|
|
19
25
|
FormCurrencyInput,
|
|
@@ -22,7 +28,11 @@ export {
|
|
|
22
28
|
FormTextInput,
|
|
23
29
|
IconButton,
|
|
24
30
|
Spinner,
|
|
31
|
+
Toaster,
|
|
32
|
+
errorToast,
|
|
25
33
|
fractionToPercent,
|
|
26
|
-
percentToFraction
|
|
34
|
+
percentToFraction,
|
|
35
|
+
successToast,
|
|
36
|
+
warningToast
|
|
27
37
|
};
|
|
28
38
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @neuronix-tech/ui — sealed catalog barrel. Only finished catalog components are\n * exported here; primitives stay internal by design.\n */\nexport { Button, type ButtonProps } from \"./components/button/index.js\"\nexport {\n FormCurrencyInput,\n type FormCurrencyInputProps,\n type CurrencyCode,\n} from \"./components/form-currency-input/index.js\"\nexport {\n FormNumberInput,\n type FormNumberInputProps,\n} from \"./components/form-number-input/index.js\"\nexport {\n FormPercentageInput,\n type FormPercentageInputProps,\n} from \"./components/form-percentage-input/index.js\"\nexport { percentToFraction, fractionToPercent } from \"./lib/format/percent.js\"\nexport {\n FormTextInput,\n type FormTextInputProps,\n type TextInputType,\n} from \"./components/form-text-input/index.js\"\nexport { IconButton, type IconButtonProps } from \"./components/icon-button/index.js\"\nexport { Spinner, type SpinnerProps } from \"./components/spinner/index.js\"\n"],"mappings":"AAIA,SAAS,cAAgC;AACzC;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,mBAAmB,yBAAyB;AACrD;AAAA,EACE;AAAA,OAGK;AACP,SAAS,kBAAwC;AACjD,SAAS,eAAkC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @neuronix-tech/ui — sealed catalog barrel. Only finished catalog components are\n * exported here; primitives stay internal by design.\n */\nexport { Button, type ButtonProps } from \"./components/button/index.js\"\nexport {\n FormCurrencyInput,\n type FormCurrencyInputProps,\n type CurrencyCode,\n} from \"./components/form-currency-input/index.js\"\nexport {\n FormNumberInput,\n type FormNumberInputProps,\n} from \"./components/form-number-input/index.js\"\nexport {\n FormPercentageInput,\n type FormPercentageInputProps,\n} from \"./components/form-percentage-input/index.js\"\nexport { percentToFraction, fractionToPercent } from \"./lib/format/percent.js\"\nexport {\n FormTextInput,\n type FormTextInputProps,\n type TextInputType,\n} from \"./components/form-text-input/index.js\"\nexport { IconButton, type IconButtonProps } from \"./components/icon-button/index.js\"\nexport { Spinner, type SpinnerProps } from \"./components/spinner/index.js\"\nexport {\n Toaster,\n successToast,\n warningToast,\n errorToast,\n type ToastOptions,\n type ToastActionOptions,\n} from \"./components/toast/index.js\"\n"],"mappings":"AAIA,SAAS,cAAgC;AACzC;AAAA,EACE;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,mBAAmB,yBAAyB;AACrD;AAAA,EACE;AAAA,OAGK;AACP,SAAS,kBAAwC;AACjD,SAAS,eAAkC;AAC3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as _base_ui_react from '@base-ui/react';
|
|
3
|
+
import { Toast } from '@base-ui/react/toast';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Internal toast primitives (ported from nx-automations ui/toast.tsx).
|
|
7
|
+
* NEVER exported publicly: apps mount the sealed <Toaster /> once and fire
|
|
8
|
+
* toasts through successToast / warningToast / errorToast — they never compose
|
|
9
|
+
* toast parts or touch the manager.
|
|
10
|
+
*
|
|
11
|
+
* The manager is a module singleton so the public toast functions work from
|
|
12
|
+
* anywhere (event handlers, mutation callbacks) without a hook or context.
|
|
13
|
+
*/
|
|
14
|
+
declare const toastManager: _base_ui_react.ToastManager<any>;
|
|
15
|
+
declare function ToastProvider({ ...props }: Toast.Provider.Props): react.JSX.Element;
|
|
16
|
+
declare function ToastPortal({ ...props }: Toast.Portal.Props): react.JSX.Element;
|
|
17
|
+
declare function ToastViewport({ className, ...props }: Toast.Viewport.Props): react.JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* Stacking/swipe geometry is driven by Base UI's runtime `--toast-*` variables;
|
|
20
|
+
* the library's own helpers are namespaced `--nxui-toast-*` so they can never
|
|
21
|
+
* collide with the runtime `--nx-*` token contract.
|
|
22
|
+
*/
|
|
23
|
+
declare function ToastRoot({ className, ...props }: Toast.Root.Props): react.JSX.Element;
|
|
24
|
+
declare function ToastContent({ className, ...props }: Toast.Content.Props): react.JSX.Element;
|
|
25
|
+
declare function ToastTitle({ className, ...props }: Toast.Title.Props): react.JSX.Element;
|
|
26
|
+
declare function ToastDescription({ className, ...props }: Toast.Description.Props): react.JSX.Element;
|
|
27
|
+
declare function ToastAction({ className, ...props }: Toast.Action.Props): react.JSX.Element;
|
|
28
|
+
declare function ToastClose({ className, ...props }: Toast.Close.Props): react.JSX.Element;
|
|
29
|
+
declare const useToastManager: typeof Toast.useToastManager;
|
|
30
|
+
|
|
31
|
+
export { ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastRoot, ToastTitle, ToastViewport, toastManager, useToastManager };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
const toastManager = ToastPrimitive.createToastManager();
|
|
6
|
+
function ToastProvider({ ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(ToastPrimitive.Provider, { ...props });
|
|
8
|
+
}
|
|
9
|
+
function ToastPortal({ ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsx(ToastPrimitive.Portal, { "data-slot": "toast-portal", ...props });
|
|
11
|
+
}
|
|
12
|
+
function ToastViewport({ className, ...props }) {
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
ToastPrimitive.Viewport,
|
|
15
|
+
{
|
|
16
|
+
"data-slot": "toast-viewport",
|
|
17
|
+
className: cn("nxui:pointer-events-none nxui:outline-none", className),
|
|
18
|
+
...props
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
function ToastRoot({ className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
ToastPrimitive.Root,
|
|
25
|
+
{
|
|
26
|
+
"data-slot": "toast",
|
|
27
|
+
className: cn(
|
|
28
|
+
"nxui:group/toast nxui:pointer-events-auto nxui:absolute nxui:right-0 nxui:bottom-0 nxui:z-[calc(1000-var(--toast-index))] nxui:w-full nxui:origin-bottom nxui:rounded-md nxui:border nxui:border-border nxui:bg-popover nxui:text-popover-foreground nxui:shadow-lg nxui:will-change-transform nxui:outline-none nxui:select-none nxui:focus-visible:border-ring nxui:focus-visible:ring-2 nxui:focus-visible:ring-ring/30",
|
|
29
|
+
"nxui:[--nxui-toast-gap:0.75rem] nxui:[--nxui-toast-height:var(--toast-frontmost-height,var(--toast-height))] nxui:[--nxui-toast-offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--nxui-toast-gap)*-1)+var(--toast-swipe-movement-y))] nxui:[--nxui-toast-peek:0.75rem] nxui:[--nxui-toast-scale:calc(max(0,1-(var(--toast-index)*0.1)))] nxui:[--nxui-toast-shrink:calc(1-var(--nxui-toast-scale))]",
|
|
30
|
+
"nxui:h-(--nxui-toast-height) nxui:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--nxui-toast-peek))-(var(--nxui-toast-shrink)*var(--nxui-toast-height))))_scale(var(--nxui-toast-scale))] nxui:[transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]",
|
|
31
|
+
"nxui:after:absolute nxui:after:top-full nxui:after:left-0 nxui:after:h-[calc(var(--nxui-toast-gap)+1px)] nxui:after:w-full nxui:after:content-['']",
|
|
32
|
+
"nxui:data-expanded:h-(--toast-height) nxui:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--nxui-toast-offset-y))]",
|
|
33
|
+
"nxui:data-limited:opacity-0 nxui:data-starting-style:[transform:translateY(150%)]",
|
|
34
|
+
"nxui:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]",
|
|
35
|
+
"nxui:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
|
|
36
|
+
"nxui:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--nxui-toast-offset-y))]",
|
|
37
|
+
"nxui:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--nxui-toast-offset-y))]",
|
|
38
|
+
"nxui:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
|
|
39
|
+
"nxui:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
|
|
40
|
+
"nxui:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--nxui-toast-offset-y))]",
|
|
41
|
+
"nxui:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--nxui-toast-offset-y))]",
|
|
42
|
+
"nxui:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
|
|
43
|
+
className
|
|
44
|
+
),
|
|
45
|
+
...props
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
function ToastContent({ className, ...props }) {
|
|
50
|
+
return /* @__PURE__ */ jsx(
|
|
51
|
+
ToastPrimitive.Content,
|
|
52
|
+
{
|
|
53
|
+
"data-slot": "toast-content",
|
|
54
|
+
className: cn(
|
|
55
|
+
"nxui:flex nxui:h-full nxui:items-start nxui:gap-3 nxui:overflow-hidden nxui:p-3 nxui:transition-opacity nxui:duration-250 nxui:ease-[cubic-bezier(0.22,1,0.36,1)] nxui:data-behind:opacity-0 nxui:data-expanded:opacity-100",
|
|
56
|
+
className
|
|
57
|
+
),
|
|
58
|
+
...props
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
function ToastTitle({ className, ...props }) {
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
64
|
+
ToastPrimitive.Title,
|
|
65
|
+
{
|
|
66
|
+
"data-slot": "toast-title",
|
|
67
|
+
className: cn("nxui:flex nxui:min-h-control-md nxui:items-center nxui:text-body nxui:font-medium", className),
|
|
68
|
+
...props
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
function ToastDescription({ className, ...props }) {
|
|
73
|
+
return /* @__PURE__ */ jsx(
|
|
74
|
+
ToastPrimitive.Description,
|
|
75
|
+
{
|
|
76
|
+
"data-slot": "toast-description",
|
|
77
|
+
className: cn("nxui:text-body nxui:text-muted-foreground", className),
|
|
78
|
+
...props
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
function ToastAction({ className, ...props }) {
|
|
83
|
+
return /* @__PURE__ */ jsx(ToastPrimitive.Action, { "data-slot": "toast-action", className, ...props });
|
|
84
|
+
}
|
|
85
|
+
function ToastClose({ className, ...props }) {
|
|
86
|
+
return /* @__PURE__ */ jsx(ToastPrimitive.Close, { "data-slot": "toast-close", "aria-label": "Close", className, ...props });
|
|
87
|
+
}
|
|
88
|
+
const useToastManager = ToastPrimitive.useToastManager;
|
|
89
|
+
export {
|
|
90
|
+
ToastAction,
|
|
91
|
+
ToastClose,
|
|
92
|
+
ToastContent,
|
|
93
|
+
ToastDescription,
|
|
94
|
+
ToastPortal,
|
|
95
|
+
ToastProvider,
|
|
96
|
+
ToastRoot,
|
|
97
|
+
ToastTitle,
|
|
98
|
+
ToastViewport,
|
|
99
|
+
toastManager,
|
|
100
|
+
useToastManager
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/primitives/toast.tsx"],"sourcesContent":["\"use client\"\n\nimport { Toast as ToastPrimitive } from \"@base-ui/react/toast\"\n\nimport { cn } from \"../lib/cn.js\"\n\n/**\n * Internal toast primitives (ported from nx-automations ui/toast.tsx).\n * NEVER exported publicly: apps mount the sealed <Toaster /> once and fire\n * toasts through successToast / warningToast / errorToast — they never compose\n * toast parts or touch the manager.\n *\n * The manager is a module singleton so the public toast functions work from\n * anywhere (event handlers, mutation callbacks) without a hook or context.\n */\nconst toastManager = ToastPrimitive.createToastManager()\n\nfunction ToastProvider({ ...props }: ToastPrimitive.Provider.Props) {\n return <ToastPrimitive.Provider {...props} />\n}\n\nfunction ToastPortal({ ...props }: ToastPrimitive.Portal.Props) {\n return <ToastPrimitive.Portal data-slot=\"toast-portal\" {...props} />\n}\n\nfunction ToastViewport({ className, ...props }: ToastPrimitive.Viewport.Props) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn(\"nxui:pointer-events-none nxui:outline-none\", className)}\n {...props}\n />\n )\n}\n\n/**\n * Stacking/swipe geometry is driven by Base UI's runtime `--toast-*` variables;\n * the library's own helpers are namespaced `--nxui-toast-*` so they can never\n * collide with the runtime `--nx-*` token contract.\n */\nfunction ToastRoot({ className, ...props }: ToastPrimitive.Root.Props) {\n return (\n <ToastPrimitive.Root\n data-slot=\"toast\"\n className={cn(\n \"nxui:group/toast nxui:pointer-events-auto nxui:absolute nxui:right-0 nxui:bottom-0 nxui:z-[calc(1000-var(--toast-index))] nxui:w-full nxui:origin-bottom nxui:rounded-md nxui:border nxui:border-border nxui:bg-popover nxui:text-popover-foreground nxui:shadow-lg nxui:will-change-transform nxui:outline-none nxui:select-none nxui:focus-visible:border-ring nxui:focus-visible:ring-2 nxui:focus-visible:ring-ring/30\",\n \"nxui:[--nxui-toast-gap:0.75rem] nxui:[--nxui-toast-height:var(--toast-frontmost-height,var(--toast-height))] nxui:[--nxui-toast-offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--nxui-toast-gap)*-1)+var(--toast-swipe-movement-y))] nxui:[--nxui-toast-peek:0.75rem] nxui:[--nxui-toast-scale:calc(max(0,1-(var(--toast-index)*0.1)))] nxui:[--nxui-toast-shrink:calc(1-var(--nxui-toast-scale))]\",\n \"nxui:h-(--nxui-toast-height) nxui:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--nxui-toast-peek))-(var(--nxui-toast-shrink)*var(--nxui-toast-height))))_scale(var(--nxui-toast-scale))] nxui:[transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]\",\n \"nxui:after:absolute nxui:after:top-full nxui:after:left-0 nxui:after:h-[calc(var(--nxui-toast-gap)+1px)] nxui:after:w-full nxui:after:content-['']\",\n \"nxui:data-expanded:h-(--toast-height) nxui:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--nxui-toast-offset-y))]\",\n \"nxui:data-limited:opacity-0 nxui:data-starting-style:[transform:translateY(150%)]\",\n \"nxui:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]\",\n \"nxui:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"nxui:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--nxui-toast-offset-y))]\",\n \"nxui:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--nxui-toast-offset-y))]\",\n \"nxui:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"nxui:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"nxui:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--nxui-toast-offset-y))]\",\n \"nxui:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--nxui-toast-offset-y))]\",\n \"nxui:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastContent({ className, ...props }: ToastPrimitive.Content.Props) {\n return (\n <ToastPrimitive.Content\n data-slot=\"toast-content\"\n className={cn(\n \"nxui:flex nxui:h-full nxui:items-start nxui:gap-3 nxui:overflow-hidden nxui:p-3 nxui:transition-opacity nxui:duration-250 nxui:ease-[cubic-bezier(0.22,1,0.36,1)] nxui:data-behind:opacity-0 nxui:data-expanded:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastTitle({ className, ...props }: ToastPrimitive.Title.Props) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn(\"nxui:flex nxui:min-h-control-md nxui:items-center nxui:text-body nxui:font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastDescription({ className, ...props }: ToastPrimitive.Description.Props) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn(\"nxui:text-body nxui:text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastAction({ className, ...props }: ToastPrimitive.Action.Props) {\n return <ToastPrimitive.Action data-slot=\"toast-action\" className={className} {...props} />\n}\n\nfunction ToastClose({ className, ...props }: ToastPrimitive.Close.Props) {\n return <ToastPrimitive.Close data-slot=\"toast-close\" aria-label=\"Close\" className={className} {...props} />\n}\n\nconst useToastManager = ToastPrimitive.useToastManager\n\nexport {\n toastManager,\n useToastManager,\n ToastProvider,\n ToastPortal,\n ToastViewport,\n ToastRoot,\n ToastContent,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n}\n"],"mappings":";AAkBS;AAhBT,SAAS,SAAS,sBAAsB;AAExC,SAAS,UAAU;AAWnB,MAAM,eAAe,eAAe,mBAAmB;AAEvD,SAAS,cAAc,EAAE,GAAG,MAAM,GAAkC;AAClE,SAAO,oBAAC,eAAe,UAAf,EAAyB,GAAG,OAAO;AAC7C;AAEA,SAAS,YAAY,EAAE,GAAG,MAAM,GAAgC;AAC9D,SAAO,oBAAC,eAAe,QAAf,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8CAA8C,SAAS;AAAA,MACpE,GAAG;AAAA;AAAA,EACN;AAEJ;AAOA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA8B;AACrE,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC3E,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAA+B;AACvE,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qFAAqF,SAAS;AAAA,MAC3G,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAqC;AACnF,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SAAO,oBAAC,eAAe,QAAf,EAAsB,aAAU,gBAAe,WAAuB,GAAG,OAAO;AAC1F;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAA+B;AACvE,SAAO,oBAAC,eAAe,OAAf,EAAqB,aAAU,eAAc,cAAW,SAAQ,WAAuB,GAAG,OAAO;AAC3G;AAEA,MAAM,kBAAkB,eAAe;","names":[]}
|
package/dist/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer nx-theme{:root,:host{--nxui-spacing:.25rem;--nxui-container-xs:20rem;--nxui-font-weight-normal:400;--nxui-font-weight-medium:500;--nxui-leading-snug:1.375;--nxui-leading-relaxed:1.625;--nxui-animate-spin:spin 1s linear infinite;--nxui-default-transition-duration:.15s;--nxui-default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer nx-base;@layer nx-utilities{.nxui\:pointer-events-none{pointer-events:none}.nxui\:invisible{visibility:hidden}.nxui\:absolute{position:absolute}.nxui\:relative{position:relative}.nxui\:inset-0{inset:calc(var(--nxui-spacing)*0)}.nxui\:top-1\/2{top:50%}.nxui\:right-2{right:calc(var(--nxui-spacing)*2)}.nxui\:isolate{isolation:isolate}.nxui\:z-50{z-index:50}.nxui\:order-first{order:-9999}.nxui\:order-last{order:9999}.nxui\:m-0\.5{margin:calc(var(--nxui-spacing)*.5)}.nxui\:m-auto{margin:auto}.nxui\:ml-4{margin-left:calc(var(--nxui-spacing)*4)}.nxui\:contents{display:contents}.nxui\:flex{display:flex}.nxui\:inline-flex{display:inline-flex}.nxui\:size-2\.5{width:calc(var(--nxui-spacing)*2.5);height:calc(var(--nxui-spacing)*2.5)}.nxui\:size-3{width:calc(var(--nxui-spacing)*3);height:calc(var(--nxui-spacing)*3)}.nxui\:size-3\.5{width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}.nxui\:size-4{width:calc(var(--nxui-spacing)*4);height:calc(var(--nxui-spacing)*4)}.nxui\:size-control-lg{width:var(--nx-control-lg);height:var(--nx-control-lg)}.nxui\:size-control-md{width:var(--nx-control-md);height:var(--nx-control-md)}.nxui\:size-control-sm{width:var(--nx-control-sm);height:var(--nx-control-sm)}.nxui\:size-control-xs{width:var(--nx-control-xs);height:var(--nx-control-xs)}.nxui\:h-auto{height:auto}.nxui\:h-control-lg{height:var(--nx-control-lg)}.nxui\:h-control-md{height:var(--nx-control-md)}.nxui\:h-control-sm{height:var(--nx-control-sm)}.nxui\:h-control-xs{height:var(--nx-control-xs)}.nxui\:w-fit{width:fit-content}.nxui\:w-full{width:100%}.nxui\:max-w-xs{max-width:var(--nxui-container-xs)}.nxui\:min-w-0{min-width:calc(var(--nxui-spacing)*0)}.nxui\:flex-1{flex:1}.nxui\:shrink-0{flex-shrink:0}.nxui\:origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.nxui\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:rotate-45{rotate:45deg}.nxui\:animate-spin{animation:var(--nxui-animate-spin)}.nxui\:cursor-text{cursor:text}.nxui\:list-disc{list-style-type:disc}.nxui\:flex-col{flex-direction:column}.nxui\:items-center{align-items:center}.nxui\:justify-center{justify-content:center}.nxui\:gap-1{gap:calc(var(--nxui-spacing)*1)}.nxui\:gap-1\.5{gap:calc(var(--nxui-spacing)*1.5)}.nxui\:gap-2{gap:calc(var(--nxui-spacing)*2)}.nxui\:rounded-\[2px\]{border-radius:2px}.nxui\:rounded-md{border-radius:calc(var(--nx-radius)*.8)}.nxui\:rounded-none{border-radius:0}.nxui\:rounded-sm{border-radius:calc(var(--nx-radius)*.6)}.nxui\:border{border-style:var(--tw-border-style);border-width:1px}.nxui\:border-0{border-style:var(--tw-border-style);border-width:0}.nxui\:border-border{border-color:var(--nx-border)}.nxui\:border-input{border-color:var(--nx-input)}.nxui\:border-transparent{border-color:#0000}.nxui\:bg-background{background-color:var(--nx-background)}.nxui\:bg-destructive\/10{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:bg-destructive\/10{background-color:color-mix(in oklab,var(--nx-destructive)10%,transparent)}}.nxui\:bg-foreground{background-color:var(--nx-foreground)}.nxui\:bg-input\/20{background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:bg-input\/20{background-color:color-mix(in oklab,var(--nx-input)20%,transparent)}}.nxui\:bg-primary{background-color:var(--nx-primary)}.nxui\:bg-secondary{background-color:var(--nx-secondary)}.nxui\:bg-transparent{background-color:#0000}.nxui\:bg-clip-padding{background-clip:padding-box}.nxui\:fill-foreground{fill:var(--nx-foreground)}.nxui\:px-2{padding-inline:calc(var(--nxui-spacing)*2)}.nxui\:px-2\.5{padding-inline:calc(var(--nxui-spacing)*2.5)}.nxui\:px-3{padding-inline:calc(var(--nxui-spacing)*3)}.nxui\:py-0\.5{padding-block:calc(var(--nxui-spacing)*.5)}.nxui\:py-1\.5{padding-block:calc(var(--nxui-spacing)*1.5)}.nxui\:py-2{padding-block:calc(var(--nxui-spacing)*2)}.nxui\:pr-2{padding-right:calc(var(--nxui-spacing)*2)}.nxui\:pr-8{padding-right:calc(var(--nxui-spacing)*8)}.nxui\:pr-12{padding-right:calc(var(--nxui-spacing)*12)}.nxui\:pl-2{padding-left:calc(var(--nxui-spacing)*2)}.nxui\:text-left{text-align:left}.nxui\:text-body\/relaxed{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}.nxui\:text-body{font-size:var(--nx-text-md)}.nxui\:text-body-lg{font-size:var(--nx-text-lg)}.nxui\:text-body-xs{font-size:var(--nx-text-xs)}.nxui\:leading-none{--tw-leading:1;line-height:1}.nxui\:leading-snug{--tw-leading:var(--nxui-leading-snug);line-height:var(--nxui-leading-snug)}.nxui\:font-medium{--tw-font-weight:var(--nxui-font-weight-medium);font-weight:var(--nxui-font-weight-medium)}.nxui\:font-normal{--tw-font-weight:var(--nxui-font-weight-normal);font-weight:var(--nxui-font-weight-normal)}.nxui\:whitespace-nowrap{white-space:nowrap}.nxui\:text-background{color:var(--nx-background)}.nxui\:text-destructive{color:var(--nx-destructive)}.nxui\:text-muted-foreground{color:var(--nx-muted-foreground)}.nxui\:text-primary{color:var(--nx-primary)}.nxui\:text-primary-foreground{color:var(--nx-primary-foreground)}.nxui\:text-secondary-foreground{color:var(--nx-secondary-foreground)}.nxui\:underline{text-decoration-line:underline}.nxui\:decoration-dotted{text-decoration-style:dotted}.nxui\:underline-offset-4{text-underline-offset:4px}.nxui\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--nxui-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nxui-default-transition-duration))}.nxui\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--nxui-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nxui-default-transition-duration))}.nxui\:outline-none{--tw-outline-style:none;outline-style:none}.nxui\:select-none{-webkit-user-select:none;user-select:none}:is(.nxui\:\*\:w-full>*){width:100%}.nxui\:group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.nxui\:group)[data-disabled=true] *){pointer-events:none}.nxui\:group-data-\[disabled\=true\]\:opacity-50:is(:where(.nxui\:group)[data-disabled=true] *),.nxui\:group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.nxui\:group\/field)[data-disabled=true] *),.nxui\:group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.nxui\:group\/input-group)[data-disabled=true] *){opacity:.5}.nxui\:peer-disabled\:cursor-not-allowed:is(:where(.nxui\:peer):disabled~*){cursor:not-allowed}.nxui\:peer-disabled\:opacity-50:is(:where(.nxui\:peer):disabled~*){opacity:.5}.nxui\:file\:inline-flex::file-selector-button{display:inline-flex}.nxui\:file\:h-control-sm::file-selector-button{height:var(--nx-control-sm)}.nxui\:file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.nxui\:file\:bg-transparent::file-selector-button{background-color:#0000}.nxui\:file\:text-body\/relaxed::file-selector-button{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}.nxui\:file\:font-medium::file-selector-button{--tw-font-weight:var(--nxui-font-weight-medium);font-weight:var(--nxui-font-weight-medium)}.nxui\:file\:text-foreground::file-selector-button{color:var(--nx-foreground)}.nxui\:placeholder\:text-muted-foreground::placeholder{color:var(--nx-muted-foreground)}@media (hover:hover){.nxui\:hover\:bg-\[color-mix\(in_oklch\,var\(--nx-secondary\)\,var\(--nx-foreground\)_5\%\)\]:hover{background-color:var(--nx-secondary)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-\[color-mix\(in_oklch\,var\(--nx-secondary\)\,var\(--nx-foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--nx-secondary),var(--nx-foreground)5%)}}.nxui\:hover\:bg-destructive\/20:hover{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:hover\:bg-input\/50:hover{background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-input\/50:hover{background-color:color-mix(in oklab,var(--nx-input)50%,transparent)}}.nxui\:hover\:bg-muted:hover{background-color:var(--nx-muted)}.nxui\:hover\:bg-primary\/80:hover{background-color:var(--nx-primary)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--nx-primary)80%,transparent)}}.nxui\:hover\:text-foreground:hover{color:var(--nx-foreground)}.nxui\:hover\:underline:hover{text-decoration-line:underline}}.nxui\:focus-visible\:border-destructive\/40:focus-visible{border-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:focus-visible\:border-ring:focus-visible{border-color:var(--nx-ring)}.nxui\:focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:var(--nx-ring)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-ring)30%,transparent)}}.nxui\:active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:disabled\:pointer-events-none:disabled{pointer-events:none}.nxui\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.nxui\:disabled\:opacity-50:disabled{opacity:.5}.nxui\:has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--nxui-spacing)*1.5)}.nxui\:has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--nxui-spacing)*2)}.nxui\:has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--nxui-spacing)*1.5)}.nxui\:has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--nxui-spacing)*2)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--nx-ring)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-2:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--nx-ring)}@supports (color:color-mix(in lab, red, red)){.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,var(--nx-ring)30%,transparent)}}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--nx-destructive)}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-2:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--nx-muted)}.nxui\:aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--nx-secondary)}.nxui\:aria-expanded\:text-foreground[aria-expanded=true]{color:var(--nx-foreground)}.nxui\:aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--nx-secondary-foreground)}.nxui\:aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--nx-destructive)}.nxui\:aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:aria-invalid\:ring-2[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.nxui\:data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.nxui\:data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.nxui\:data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.nxui\:data-\[invalid\=true\]\:text-destructive[data-invalid=true]{color:var(--nx-destructive)}.nxui\:data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--nxui-spacing)*1)}.nxui\:data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.nxui\:data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.nxui\:data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.nxui\:data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.nxui\:data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.nxui\:data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.nxui\:data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--nxui-spacing)*-2.5)}.nxui\:data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.nxui\:data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.nxui\:data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}@media (min-width:48rem){.nxui\:md\:text-body\/relaxed{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}}.nxui\:dark\:bg-destructive\/20:is(.dark *,[data-theme=dark] *){background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:bg-destructive\/20:is(.dark *,[data-theme=dark] *){background-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:dark\:bg-input\/30:is(.dark *,[data-theme=dark] *){background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:bg-input\/30:is(.dark *,[data-theme=dark] *){background-color:color-mix(in oklab,var(--nx-input)30%,transparent)}}.nxui\:dark\:bg-transparent:is(.dark *,[data-theme=dark] *){background-color:#0000}@media (hover:hover){.nxui\:dark\:hover\:bg-destructive\/30:is(.dark *,[data-theme=dark] *):hover{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:hover\:bg-destructive\/30:is(.dark *,[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--nx-destructive)30%,transparent)}}.nxui\:dark\:hover\:bg-muted\/50:is(.dark *,[data-theme=dark] *):hover{background-color:var(--nx-muted)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:hover\:bg-muted\/50:is(.dark *,[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--nx-muted)50%,transparent)}}}.nxui\:dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):focus-visible{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:dark\:aria-invalid\:border-destructive\/50:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{border-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:aria-invalid\:border-destructive\/50:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--nx-destructive)50%,transparent)}}.nxui\:dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.nxui\:\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-2\.5 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*2.5);height:calc(var(--nxui-spacing)*2.5)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3);height:calc(var(--nxui-spacing)*3)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*4);height:calc(var(--nxui-spacing)*4)}.nxui\:\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.nxui\:has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--nxui-spacing)*1.5)}.nxui\:has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--nxui-spacing)*1.5)}.nxui\:\[\&\>svg\:not\(\[class\*\=size-\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer nx-theme{:root,:host{--nxui-spacing:.25rem;--nxui-container-xs:20rem;--nxui-container-sm:24rem;--nxui-font-weight-normal:400;--nxui-font-weight-medium:500;--nxui-leading-snug:1.375;--nxui-leading-relaxed:1.625;--nxui-animate-spin:spin 1s linear infinite;--nxui-default-transition-duration:.15s;--nxui-default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer nx-base;@layer nx-utilities{.nxui\:pointer-events-auto{pointer-events:auto}.nxui\:pointer-events-none{pointer-events:none}.nxui\:invisible{visibility:hidden}.nxui\:absolute{position:absolute}.nxui\:fixed{position:fixed}.nxui\:relative{position:relative}.nxui\:inset-0{inset:calc(var(--nxui-spacing)*0)}.nxui\:inset-x-4{inset-inline:calc(var(--nxui-spacing)*4)}.nxui\:top-1\/2{top:50%}.nxui\:right-0{right:calc(var(--nxui-spacing)*0)}.nxui\:right-2{right:calc(var(--nxui-spacing)*2)}.nxui\:bottom-0{bottom:calc(var(--nxui-spacing)*0)}.nxui\:bottom-4{bottom:calc(var(--nxui-spacing)*4)}.nxui\:isolate{isolation:isolate}.nxui\:z-50{z-index:50}.nxui\:z-\[calc\(1000-var\(--toast-index\)\)\]{z-index:calc(1000 - var(--toast-index))}.nxui\:order-first{order:-9999}.nxui\:order-last{order:9999}.nxui\:m-0\.5{margin:calc(var(--nxui-spacing)*.5)}.nxui\:m-auto{margin:auto}.nxui\:mx-auto{margin-inline:auto}.nxui\:ml-4{margin-left:calc(var(--nxui-spacing)*4)}.nxui\:contents{display:contents}.nxui\:flex{display:flex}.nxui\:inline-flex{display:inline-flex}.nxui\:size-2\.5{width:calc(var(--nxui-spacing)*2.5);height:calc(var(--nxui-spacing)*2.5)}.nxui\:size-3{width:calc(var(--nxui-spacing)*3);height:calc(var(--nxui-spacing)*3)}.nxui\:size-3\.5{width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}.nxui\:size-4{width:calc(var(--nxui-spacing)*4);height:calc(var(--nxui-spacing)*4)}.nxui\:size-control-lg{width:var(--nx-control-lg);height:var(--nx-control-lg)}.nxui\:size-control-md{width:var(--nx-control-md);height:var(--nx-control-md)}.nxui\:size-control-sm{width:var(--nx-control-sm);height:var(--nx-control-sm)}.nxui\:size-control-xs{width:var(--nx-control-xs);height:var(--nx-control-xs)}.nxui\:h-\(--nxui-toast-height\){height:var(--nxui-toast-height)}.nxui\:h-auto{height:auto}.nxui\:h-control-lg{height:var(--nx-control-lg)}.nxui\:h-control-md{height:var(--nx-control-md)}.nxui\:h-control-sm{height:var(--nx-control-sm)}.nxui\:h-control-xs{height:var(--nx-control-xs)}.nxui\:h-full{height:100%}.nxui\:min-h-control-md{min-height:var(--nx-control-md)}.nxui\:w-auto{width:auto}.nxui\:w-fit{width:fit-content}.nxui\:w-full{width:100%}.nxui\:max-w-sm{max-width:var(--nxui-container-sm)}.nxui\:max-w-xs{max-width:var(--nxui-container-xs)}.nxui\:min-w-0{min-width:calc(var(--nxui-spacing)*0)}.nxui\:flex-1{flex:1}.nxui\:shrink-0{flex-shrink:0}.nxui\:origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.nxui\:origin-bottom{transform-origin:bottom}.nxui\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:rotate-45{rotate:45deg}.nxui\:\[transform\:translateX\(var\(--toast-swipe-movement-x\)\)_translateY\(calc\(var\(--toast-swipe-movement-y\)-\(var\(--toast-index\)\*var\(--nxui-toast-peek\)\)-\(var\(--nxui-toast-shrink\)\*var\(--nxui-toast-height\)\)\)\)_scale\(var\(--nxui-toast-scale\)\)\]{transform:translateX(var(--toast-swipe-movement-x))translateY(calc(var(--toast-swipe-movement-y) - (var(--toast-index)*var(--nxui-toast-peek)) - (var(--nxui-toast-shrink)*var(--nxui-toast-height))))scale(var(--nxui-toast-scale))}.nxui\:animate-spin{animation:var(--nxui-animate-spin)}.nxui\:cursor-text{cursor:text}.nxui\:list-disc{list-style-type:disc}.nxui\:flex-col{flex-direction:column}.nxui\:items-center{align-items:center}.nxui\:items-start{align-items:flex-start}.nxui\:justify-center{justify-content:center}.nxui\:gap-1{gap:calc(var(--nxui-spacing)*1)}.nxui\:gap-1\.5{gap:calc(var(--nxui-spacing)*1.5)}.nxui\:gap-2{gap:calc(var(--nxui-spacing)*2)}.nxui\:gap-3{gap:calc(var(--nxui-spacing)*3)}.nxui\:overflow-hidden{overflow:hidden}.nxui\:rounded-\[2px\]{border-radius:2px}.nxui\:rounded-md{border-radius:calc(var(--nx-radius)*.8)}.nxui\:rounded-none{border-radius:0}.nxui\:rounded-sm{border-radius:calc(var(--nx-radius)*.6)}.nxui\:border{border-style:var(--tw-border-style);border-width:1px}.nxui\:border-0{border-style:var(--tw-border-style);border-width:0}.nxui\:border-border{border-color:var(--nx-border)}.nxui\:border-input{border-color:var(--nx-input)}.nxui\:border-transparent{border-color:#0000}.nxui\:bg-background{background-color:var(--nx-background)}.nxui\:bg-destructive\/10{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:bg-destructive\/10{background-color:color-mix(in oklab,var(--nx-destructive)10%,transparent)}}.nxui\:bg-foreground{background-color:var(--nx-foreground)}.nxui\:bg-input\/20{background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:bg-input\/20{background-color:color-mix(in oklab,var(--nx-input)20%,transparent)}}.nxui\:bg-popover{background-color:var(--nx-popover)}.nxui\:bg-primary{background-color:var(--nx-primary)}.nxui\:bg-secondary{background-color:var(--nx-secondary)}.nxui\:bg-transparent{background-color:#0000}.nxui\:bg-clip-padding{background-clip:padding-box}.nxui\:fill-foreground{fill:var(--nx-foreground)}.nxui\:p-3{padding:calc(var(--nxui-spacing)*3)}.nxui\:px-2{padding-inline:calc(var(--nxui-spacing)*2)}.nxui\:px-2\.5{padding-inline:calc(var(--nxui-spacing)*2.5)}.nxui\:px-3{padding-inline:calc(var(--nxui-spacing)*3)}.nxui\:py-0\.5{padding-block:calc(var(--nxui-spacing)*.5)}.nxui\:py-1\.5{padding-block:calc(var(--nxui-spacing)*1.5)}.nxui\:py-2{padding-block:calc(var(--nxui-spacing)*2)}.nxui\:pr-2{padding-right:calc(var(--nxui-spacing)*2)}.nxui\:pr-8{padding-right:calc(var(--nxui-spacing)*8)}.nxui\:pr-12{padding-right:calc(var(--nxui-spacing)*12)}.nxui\:pl-2{padding-left:calc(var(--nxui-spacing)*2)}.nxui\:text-left{text-align:left}.nxui\:text-body\/relaxed{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}.nxui\:text-body{font-size:var(--nx-text-md)}.nxui\:text-body-lg{font-size:var(--nx-text-lg)}.nxui\:text-body-xs{font-size:var(--nx-text-xs)}.nxui\:leading-none{--tw-leading:1;line-height:1}.nxui\:leading-snug{--tw-leading:var(--nxui-leading-snug);line-height:var(--nxui-leading-snug)}.nxui\:font-medium{--tw-font-weight:var(--nxui-font-weight-medium);font-weight:var(--nxui-font-weight-medium)}.nxui\:font-normal{--tw-font-weight:var(--nxui-font-weight-normal);font-weight:var(--nxui-font-weight-normal)}.nxui\:whitespace-nowrap{white-space:nowrap}.nxui\:text-background{color:var(--nx-background)}.nxui\:text-destructive{color:var(--nx-destructive)}.nxui\:text-muted-foreground{color:var(--nx-muted-foreground)}.nxui\:text-popover-foreground{color:var(--nx-popover-foreground)}.nxui\:text-primary{color:var(--nx-primary)}.nxui\:text-primary-foreground{color:var(--nx-primary-foreground)}.nxui\:text-secondary-foreground{color:var(--nx-secondary-foreground)}.nxui\:text-success{color:var(--nx-success)}.nxui\:text-warning{color:var(--nx-warning)}.nxui\:underline{text-decoration-line:underline}.nxui\:decoration-dotted{text-decoration-style:dotted}.nxui\:underline-offset-4{text-underline-offset:4px}.nxui\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--nxui-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nxui-default-transition-duration))}.nxui\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--nxui-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nxui-default-transition-duration))}.nxui\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--nxui-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nxui-default-transition-duration))}.nxui\:duration-250{--tw-duration:.25s;transition-duration:.25s}.nxui\:ease-\[cubic-bezier\(0\.22\,1\,0\.36\,1\)\]{--tw-ease:cubic-bezier(.22,1,.36,1);transition-timing-function:cubic-bezier(.22,1,.36,1)}.nxui\:will-change-transform{will-change:transform}.nxui\:outline-none{--tw-outline-style:none;outline-style:none}.nxui\:select-none{-webkit-user-select:none;user-select:none}.nxui\:\[--nxui-toast-gap\:0\.75rem\]{--nxui-toast-gap:.75rem}.nxui\:\[--nxui-toast-height\:var\(--toast-frontmost-height\,var\(--toast-height\)\)\]{--nxui-toast-height:var(--toast-frontmost-height,var(--toast-height))}.nxui\:\[--nxui-toast-offset-y\:calc\(var\(--toast-offset-y\)\*-1\+calc\(var\(--toast-index\)\*var\(--nxui-toast-gap\)\*-1\)\+var\(--toast-swipe-movement-y\)\)\]{--nxui-toast-offset-y:calc(var(--toast-offset-y)*-1 + calc(var(--toast-index)*var(--nxui-toast-gap)*-1) + var(--toast-swipe-movement-y))}.nxui\:\[--nxui-toast-peek\:0\.75rem\]{--nxui-toast-peek:.75rem}.nxui\:\[--nxui-toast-scale\:calc\(max\(0\,1-\(var\(--toast-index\)\*0\.1\)\)\)\]{--nxui-toast-scale:calc(max(0,1 - (var(--toast-index)*.1)))}.nxui\:\[--nxui-toast-shrink\:calc\(1-var\(--nxui-toast-scale\)\)\]{--nxui-toast-shrink:calc(1 - var(--nxui-toast-scale))}.nxui\:\[transition\:transform_500ms_cubic-bezier\(0\.22\,1\,0\.36\,1\)\,opacity_500ms\,height_150ms\]{transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .5s,height .15s}:is(.nxui\:\*\:w-full>*){width:100%}.nxui\:group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.nxui\:group)[data-disabled=true] *){pointer-events:none}.nxui\:group-data-\[disabled\=true\]\:opacity-50:is(:where(.nxui\:group)[data-disabled=true] *),.nxui\:group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.nxui\:group\/field)[data-disabled=true] *),.nxui\:group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.nxui\:group\/input-group)[data-disabled=true] *){opacity:.5}.nxui\:peer-disabled\:cursor-not-allowed:is(:where(.nxui\:peer):disabled~*){cursor:not-allowed}.nxui\:peer-disabled\:opacity-50:is(:where(.nxui\:peer):disabled~*){opacity:.5}.nxui\:file\:inline-flex::file-selector-button{display:inline-flex}.nxui\:file\:h-control-sm::file-selector-button{height:var(--nx-control-sm)}.nxui\:file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.nxui\:file\:bg-transparent::file-selector-button{background-color:#0000}.nxui\:file\:text-body\/relaxed::file-selector-button{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}.nxui\:file\:font-medium::file-selector-button{--tw-font-weight:var(--nxui-font-weight-medium);font-weight:var(--nxui-font-weight-medium)}.nxui\:file\:text-foreground::file-selector-button{color:var(--nx-foreground)}.nxui\:placeholder\:text-muted-foreground::placeholder{color:var(--nx-muted-foreground)}.nxui\:after\:absolute:after{content:var(--tw-content);position:absolute}.nxui\:after\:top-full:after{content:var(--tw-content);top:100%}.nxui\:after\:left-0:after{content:var(--tw-content);left:calc(var(--nxui-spacing)*0)}.nxui\:after\:h-\[calc\(var\(--nxui-toast-gap\)\+1px\)\]:after{content:var(--tw-content);height:calc(var(--nxui-toast-gap) + 1px)}.nxui\:after\:w-full:after{content:var(--tw-content);width:100%}.nxui\:after\:content-\[\'\'\]:after{content:var(--tw-content);--tw-content:"";content:var(--tw-content)}@media (hover:hover){.nxui\:hover\:bg-\[color-mix\(in_oklch\,var\(--nx-secondary\)\,var\(--nx-foreground\)_5\%\)\]:hover{background-color:var(--nx-secondary)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-\[color-mix\(in_oklch\,var\(--nx-secondary\)\,var\(--nx-foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--nx-secondary),var(--nx-foreground)5%)}}.nxui\:hover\:bg-destructive\/20:hover{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:hover\:bg-input\/50:hover{background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-input\/50:hover{background-color:color-mix(in oklab,var(--nx-input)50%,transparent)}}.nxui\:hover\:bg-muted:hover{background-color:var(--nx-muted)}.nxui\:hover\:bg-primary\/80:hover{background-color:var(--nx-primary)}@supports (color:color-mix(in lab, red, red)){.nxui\:hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--nx-primary)80%,transparent)}}.nxui\:hover\:text-foreground:hover{color:var(--nx-foreground)}.nxui\:hover\:underline:hover{text-decoration-line:underline}}.nxui\:focus-visible\:border-destructive\/40:focus-visible{border-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:focus-visible\:border-ring:focus-visible{border-color:var(--nx-ring)}.nxui\:focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:var(--nx-ring)}@supports (color:color-mix(in lab, red, red)){.nxui\:focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-ring)30%,transparent)}}.nxui\:active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:disabled\:pointer-events-none:disabled{pointer-events:none}.nxui\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.nxui\:disabled\:opacity-50:disabled{opacity:.5}.nxui\:has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--nxui-spacing)*1.5)}.nxui\:has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--nxui-spacing)*2)}.nxui\:has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--nxui-spacing)*1.5)}.nxui\:has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--nxui-spacing)*2)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--nx-ring)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-2:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--nx-ring)}@supports (color:color-mix(in lab, red, red)){.nxui\:has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,var(--nx-ring)30%,transparent)}}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--nx-destructive)}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-2:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--nx-muted)}.nxui\:aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--nx-secondary)}.nxui\:aria-expanded\:text-foreground[aria-expanded=true]{color:var(--nx-foreground)}.nxui\:aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--nx-secondary-foreground)}.nxui\:aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--nx-destructive)}.nxui\:aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:aria-invalid\:ring-2[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nxui\:aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:data-behind\:opacity-0[data-behind]{opacity:0}.nxui\:data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.nxui\:data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.nxui\:data-expanded\:h-\(--toast-height\)[data-expanded]{height:var(--toast-height)}.nxui\:data-expanded\:\[transform\:translateX\(var\(--toast-swipe-movement-x\)\)_translateY\(var\(--nxui-toast-offset-y\)\)\][data-expanded]{transform:translateX(var(--toast-swipe-movement-x))translateY(var(--nxui-toast-offset-y))}.nxui\:data-expanded\:opacity-100[data-expanded]{opacity:1}.nxui\:data-limited\:opacity-0[data-limited]{opacity:0}.nxui\:data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.nxui\:data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.nxui\:data-starting-style\:\[transform\:translateY\(150\%\)\][data-starting-style]{transform:translateY(150%)}.nxui\:data-\[invalid\=true\]\:text-destructive[data-invalid=true]{color:var(--nx-destructive)}.nxui\:data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--nxui-spacing)*1)}.nxui\:data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.nxui\:data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.nxui\:data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.nxui\:data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.nxui\:data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.nxui\:data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.nxui\:data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--nxui-spacing)*-1)}.nxui\:data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.nxui\:data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.nxui\:data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--nxui-spacing)*-2.5)}.nxui\:data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.nxui\:data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.nxui\:data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.nxui\:data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.nxui\:data-ending-style\:data-\[swipe-direction\=down\]\:\[transform\:translateY\(calc\(var\(--toast-swipe-movement-y\)\+150\%\)\)\][data-ending-style][data-swipe-direction=down],.nxui\:data-expanded\:data-ending-style\:data-\[swipe-direction\=down\]\:\[transform\:translateY\(calc\(var\(--toast-swipe-movement-y\)\+150\%\)\)\][data-expanded][data-ending-style][data-swipe-direction=down]{transform:translateY(calc(var(--toast-swipe-movement-y) + 150%))}.nxui\:data-ending-style\:data-\[swipe-direction\=left\]\:\[transform\:translateX\(calc\(var\(--toast-swipe-movement-x\)-150\%\)\)_translateY\(var\(--nxui-toast-offset-y\)\)\][data-ending-style][data-swipe-direction=left],.nxui\:data-expanded\:data-ending-style\:data-\[swipe-direction\=left\]\:\[transform\:translateX\(calc\(var\(--toast-swipe-movement-x\)-150\%\)\)_translateY\(var\(--nxui-toast-offset-y\)\)\][data-expanded][data-ending-style][data-swipe-direction=left]{transform:translateX(calc(var(--toast-swipe-movement-x) - 150%))translateY(var(--nxui-toast-offset-y))}.nxui\:data-ending-style\:data-\[swipe-direction\=right\]\:\[transform\:translateX\(calc\(var\(--toast-swipe-movement-x\)\+150\%\)\)_translateY\(var\(--nxui-toast-offset-y\)\)\][data-ending-style][data-swipe-direction=right],.nxui\:data-expanded\:data-ending-style\:data-\[swipe-direction\=right\]\:\[transform\:translateX\(calc\(var\(--toast-swipe-movement-x\)\+150\%\)\)_translateY\(var\(--nxui-toast-offset-y\)\)\][data-expanded][data-ending-style][data-swipe-direction=right]{transform:translateX(calc(var(--toast-swipe-movement-x) + 150%))translateY(var(--nxui-toast-offset-y))}.nxui\:data-ending-style\:data-\[swipe-direction\=up\]\:\[transform\:translateY\(calc\(var\(--toast-swipe-movement-y\)-150\%\)\)\][data-ending-style][data-swipe-direction=up],.nxui\:data-expanded\:data-ending-style\:data-\[swipe-direction\=up\]\:\[transform\:translateY\(calc\(var\(--toast-swipe-movement-y\)-150\%\)\)\][data-expanded][data-ending-style][data-swipe-direction=up]{transform:translateY(calc(var(--toast-swipe-movement-y) - 150%))}@media (min-width:40rem){.nxui\:sm\:right-4{right:calc(var(--nxui-spacing)*4)}.nxui\:sm\:left-auto{left:auto}.nxui\:sm\:mx-0{margin-inline:calc(var(--nxui-spacing)*0)}.nxui\:sm\:w-full{width:100%}}@media (min-width:48rem){.nxui\:md\:text-body\/relaxed{font-size:var(--nx-text-md);line-height:var(--nxui-leading-relaxed)}}.nxui\:dark\:bg-destructive\/20:is(.dark *,[data-theme=dark] *){background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:bg-destructive\/20:is(.dark *,[data-theme=dark] *){background-color:color-mix(in oklab,var(--nx-destructive)20%,transparent)}}.nxui\:dark\:bg-input\/30:is(.dark *,[data-theme=dark] *){background-color:var(--nx-input)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:bg-input\/30:is(.dark *,[data-theme=dark] *){background-color:color-mix(in oklab,var(--nx-input)30%,transparent)}}.nxui\:dark\:bg-transparent:is(.dark *,[data-theme=dark] *){background-color:#0000}@media (hover:hover){.nxui\:dark\:hover\:bg-destructive\/30:is(.dark *,[data-theme=dark] *):hover{background-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:hover\:bg-destructive\/30:is(.dark *,[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--nx-destructive)30%,transparent)}}.nxui\:dark\:hover\:bg-muted\/50:is(.dark *,[data-theme=dark] *):hover{background-color:var(--nx-muted)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:hover\:bg-muted\/50:is(.dark *,[data-theme=dark] *):hover{background-color:color-mix(in oklab,var(--nx-muted)50%,transparent)}}}.nxui\:dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):focus-visible{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:focus-visible\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *,[data-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:dark\:aria-invalid\:border-destructive\/50:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{border-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:aria-invalid\:border-destructive\/50:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--nx-destructive)50%,transparent)}}.nxui\:dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{--tw-ring-color:var(--nx-destructive)}@supports (color:color-mix(in lab, red, red)){.nxui\:dark\:aria-invalid\:ring-destructive\/40:is(.dark *,[data-theme=dark] *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--nx-destructive)40%,transparent)}}.nxui\:\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.nxui\:\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-2\.5 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*2.5);height:calc(var(--nxui-spacing)*2.5)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3);height:calc(var(--nxui-spacing)*3)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}.nxui\:\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--nxui-spacing)*4);height:calc(var(--nxui-spacing)*4)}.nxui\:\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.nxui\:has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--nxui-spacing)*1.5)}.nxui\:has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--nxui-spacing)*1.5)}.nxui\:\[\&\>svg\:not\(\[class\*\=size-\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--nxui-spacing)*3.5);height:calc(var(--nxui-spacing)*3.5)}.nxui\:\[\&\[data-ending-style\]\:not\(\[data-limited\]\)\:not\(\[data-swipe-direction\]\)\]\:\[transform\:translateY\(150\%\)\][data-ending-style]:not([data-limited]):not([data-swipe-direction]){transform:translateY(150%)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neuronix-tech/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Neuronix sealed UI library: opinionated Lego-block components over Base UI primitives. Personalize once via `npx @neuronix-tech/ui init`, then just build.",
|
|
6
6
|
"repository": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"tsup": "^8.5.0",
|
|
60
60
|
"tw-animate-css": "^1.4.0",
|
|
61
61
|
"typescript": "^5.9.2",
|
|
62
|
-
"@neuronix/tokens": "0.
|
|
62
|
+
"@neuronix/tokens": "0.2.0"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|
|
65
65
|
"build": "pnpm run build:js && pnpm run build:css && pnpm run postbuild:verify",
|