@neuronix-tech/ui 0.0.0-stage → 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/cli/index.js +4 -0
- package/dist/components/button/button.d.ts +18 -0
- package/dist/components/button/button.js +40 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/button.types.d.ts +36 -0
- package/dist/components/button/button.types.js +1 -0
- package/dist/components/button/button.types.js.map +1 -0
- package/dist/components/button/button.variants.d.ts +32 -0
- package/dist/components/button/button.variants.js +45 -0
- package/dist/components/button/button.variants.js.map +1 -0
- package/dist/components/button/index.d.ts +8 -0
- package/dist/components/button/index.js +5 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/form-currency-input/form-currency-input.d.ts +12 -0
- package/dist/components/form-currency-input/form-currency-input.js +62 -0
- package/dist/components/form-currency-input/form-currency-input.js.map +1 -0
- package/dist/components/form-currency-input/form-currency-input.types.d.ts +32 -0
- package/dist/components/form-currency-input/form-currency-input.types.js +1 -0
- package/dist/components/form-currency-input/form-currency-input.types.js.map +1 -0
- package/dist/components/form-currency-input/index.d.ts +4 -0
- package/dist/components/form-currency-input/index.js +5 -0
- package/dist/components/form-currency-input/index.js.map +1 -0
- package/dist/components/form-number-input/form-number-input.d.ts +13 -0
- package/dist/components/form-number-input/form-number-input.js +75 -0
- package/dist/components/form-number-input/form-number-input.js.map +1 -0
- package/dist/components/form-number-input/form-number-input.types.d.ts +34 -0
- package/dist/components/form-number-input/form-number-input.types.js +1 -0
- package/dist/components/form-number-input/form-number-input.types.js.map +1 -0
- package/dist/components/form-number-input/index.d.ts +4 -0
- package/dist/components/form-number-input/index.js +5 -0
- package/dist/components/form-number-input/index.js.map +1 -0
- package/dist/components/form-percentage-input/form-percentage-input.d.ts +12 -0
- package/dist/components/form-percentage-input/form-percentage-input.js +65 -0
- package/dist/components/form-percentage-input/form-percentage-input.js.map +1 -0
- package/dist/components/form-percentage-input/form-percentage-input.types.d.ts +33 -0
- package/dist/components/form-percentage-input/form-percentage-input.types.js +1 -0
- package/dist/components/form-percentage-input/form-percentage-input.types.js.map +1 -0
- package/dist/components/form-percentage-input/index.d.ts +4 -0
- package/dist/components/form-percentage-input/index.js +5 -0
- package/dist/components/form-percentage-input/index.js.map +1 -0
- package/dist/components/form-text-input/form-text-input.d.ts +19 -0
- package/dist/components/form-text-input/form-text-input.js +64 -0
- package/dist/components/form-text-input/form-text-input.js.map +1 -0
- package/dist/components/form-text-input/form-text-input.types.d.ts +45 -0
- package/dist/components/form-text-input/form-text-input.types.js +1 -0
- package/dist/components/form-text-input/form-text-input.types.js.map +1 -0
- package/dist/components/form-text-input/index.d.ts +4 -0
- package/dist/components/form-text-input/index.js +5 -0
- package/dist/components/form-text-input/index.js.map +1 -0
- package/dist/components/icon-button/icon-button.d.ts +20 -0
- package/dist/components/icon-button/icon-button.js +32 -0
- package/dist/components/icon-button/icon-button.js.map +1 -0
- package/dist/components/icon-button/icon-button.types.d.ts +24 -0
- package/dist/components/icon-button/icon-button.types.js +1 -0
- package/dist/components/icon-button/icon-button.types.js.map +1 -0
- package/dist/components/icon-button/index.d.ts +8 -0
- package/dist/components/icon-button/index.js +5 -0
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.js +5 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +15 -0
- package/dist/components/spinner/spinner.js +9 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- 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/hooks/use-number-mask.d.ts +24 -0
- package/dist/hooks/use-number-mask.js +59 -0
- package/dist/hooks/use-number-mask.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +10 -0
- package/dist/lib/cn.js +8 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/format/number.d.ts +6 -0
- package/dist/lib/format/number.js +26 -0
- package/dist/lib/format/number.js.map +1 -0
- package/dist/lib/format/percent.d.ts +15 -0
- package/dist/lib/format/percent.js +7 -0
- package/dist/lib/format/percent.js.map +1 -0
- package/dist/lib/sealed.d.ts +14 -0
- package/dist/lib/sealed.js +1 -0
- package/dist/lib/sealed.js.map +1 -0
- package/dist/primitives/field.d.ts +17 -0
- package/dist/primitives/field.js +74 -0
- package/dist/primitives/field.js.map +1 -0
- package/dist/primitives/form-field.d.ts +27 -0
- package/dist/primitives/form-field.js +27 -0
- package/dist/primitives/form-field.js.map +1 -0
- package/dist/primitives/input-group.d.ts +19 -0
- package/dist/primitives/input-group.js +87 -0
- package/dist/primitives/input-group.js.map +1 -0
- package/dist/primitives/input.d.ts +11 -0
- package/dist/primitives/input.js +22 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/label.d.ts +6 -0
- package/dist/primitives/label.js +19 -0
- package/dist/primitives/label.js.map +1 -0
- package/dist/primitives/spinner.d.ts +10 -0
- package/dist/primitives/spinner.js +19 -0
- package/dist/primitives/spinner.js.map +1 -0
- 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/primitives/tooltip.d.ts +17 -0
- package/dist/primitives/tooltip.js +51 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/dist/styles.css +2 -0
- package/package.json +70 -3
- package/README.md +0 -3
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Internal spinner primitive — accepts className because internal callers (Button's
|
|
5
|
+
* loading overlay) need exact placement/size control. Never exported publicly; the
|
|
6
|
+
* sealed surface is components/spinner.
|
|
7
|
+
*/
|
|
8
|
+
declare function SpinnerPrimitive({ className, ...props }: React.ComponentProps<"svg">): react.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { SpinnerPrimitive };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { IconLoader } from "@tabler/icons-react";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
function SpinnerPrimitive({ className, ...props }) {
|
|
5
|
+
return /* @__PURE__ */ jsx(
|
|
6
|
+
IconLoader,
|
|
7
|
+
{
|
|
8
|
+
"data-slot": "spinner",
|
|
9
|
+
role: "status",
|
|
10
|
+
"aria-label": "Loading",
|
|
11
|
+
className: cn("nxui:size-4 nxui:animate-spin", className),
|
|
12
|
+
...props
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
SpinnerPrimitive
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/primitives/spinner.tsx"],"sourcesContent":["import { IconLoader } from \"@tabler/icons-react\"\n\nimport { cn } from \"../lib/cn.js\"\n\n/**\n * Internal spinner primitive — accepts className because internal callers (Button's\n * loading overlay) need exact placement/size control. Never exported publicly; the\n * sealed surface is components/spinner.\n */\nfunction SpinnerPrimitive({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <IconLoader\n data-slot=\"spinner\"\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"nxui:size-4 nxui:animate-spin\", className)}\n {...props}\n />\n )\n}\n\nexport { SpinnerPrimitive }\n"],"mappings":"AAWI;AAXJ,SAAS,kBAAkB;AAE3B,SAAS,UAAU;AAOnB,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;","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":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { Tooltip } from '@base-ui/react/tooltip';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Internal tooltip primitives (ported from nx-automations ui/tooltip.tsx).
|
|
6
|
+
* NEVER exported publicly: in this library a tooltip is a PROP on the component
|
|
7
|
+
* that needs one (e.g. <Button tooltip="...">), not a wrapper devs compose.
|
|
8
|
+
*
|
|
9
|
+
* House rules baked in (instead of asked of every call site like in
|
|
10
|
+
* nx-automations): delay 0 via a local provider, and disableHoverablePopup so
|
|
11
|
+
* the popup never traps the pointer.
|
|
12
|
+
*/
|
|
13
|
+
declare function TooltipRoot({ ...props }: Tooltip.Root.Props): react.JSX.Element;
|
|
14
|
+
declare function TooltipTrigger({ ...props }: Tooltip.Trigger.Props): react.JSX.Element;
|
|
15
|
+
declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: Tooltip.Popup.Props & Pick<Tooltip.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react.JSX.Element;
|
|
16
|
+
|
|
17
|
+
export { TooltipContent, TooltipRoot, TooltipTrigger };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
function TooltipRoot({ ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delay: 0, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", disableHoverablePopup: true, ...props }) });
|
|
7
|
+
}
|
|
8
|
+
function TooltipTrigger({ ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
10
|
+
}
|
|
11
|
+
function TooltipContent({
|
|
12
|
+
className,
|
|
13
|
+
side = "top",
|
|
14
|
+
sideOffset = 4,
|
|
15
|
+
align = "center",
|
|
16
|
+
alignOffset = 0,
|
|
17
|
+
children,
|
|
18
|
+
...props
|
|
19
|
+
}) {
|
|
20
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
21
|
+
TooltipPrimitive.Positioner,
|
|
22
|
+
{
|
|
23
|
+
align,
|
|
24
|
+
alignOffset,
|
|
25
|
+
side,
|
|
26
|
+
sideOffset,
|
|
27
|
+
className: "nxui:isolate nxui:z-50",
|
|
28
|
+
children: /* @__PURE__ */ jsxs(
|
|
29
|
+
TooltipPrimitive.Popup,
|
|
30
|
+
{
|
|
31
|
+
"data-slot": "tooltip-content",
|
|
32
|
+
className: cn(
|
|
33
|
+
"nxui:z-50 nxui:inline-flex nxui:w-fit nxui:max-w-xs nxui:origin-(--transform-origin) nxui:items-center nxui:gap-1.5 nxui:rounded-md nxui:bg-foreground nxui:px-3 nxui:py-1.5 nxui:text-body nxui:text-background nxui:data-[side=bottom]:slide-in-from-top-2 nxui:data-[side=inline-end]:slide-in-from-left-2 nxui:data-[side=inline-start]:slide-in-from-right-2 nxui:data-[side=left]:slide-in-from-right-2 nxui:data-[side=right]:slide-in-from-left-2 nxui:data-[side=top]:slide-in-from-bottom-2 nxui:data-[state=delayed-open]:animate-in nxui:data-[state=delayed-open]:fade-in-0 nxui:data-[state=delayed-open]:zoom-in-95 nxui:data-open:animate-in nxui:data-open:fade-in-0 nxui:data-open:zoom-in-95 nxui:data-closed:animate-out nxui:data-closed:fade-out-0 nxui:data-closed:zoom-out-95",
|
|
34
|
+
className
|
|
35
|
+
),
|
|
36
|
+
...props,
|
|
37
|
+
children: [
|
|
38
|
+
children,
|
|
39
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "nxui:z-50 nxui:size-2.5 nxui:translate-y-[calc(-50%-2px)] nxui:rotate-45 nxui:rounded-[2px] nxui:bg-foreground nxui:fill-foreground nxui:data-[side=bottom]:top-1 nxui:data-[side=inline-end]:top-1/2! nxui:data-[side=inline-end]:-left-1 nxui:data-[side=inline-end]:-translate-y-1/2 nxui:data-[side=inline-start]:top-1/2! nxui:data-[side=inline-start]:-right-1 nxui:data-[side=inline-start]:-translate-y-1/2 nxui:data-[side=left]:top-1/2! nxui:data-[side=left]:-right-1 nxui:data-[side=left]:-translate-y-1/2 nxui:data-[side=right]:top-1/2! nxui:data-[side=right]:-left-1 nxui:data-[side=right]:-translate-y-1/2 nxui:data-[side=top]:-bottom-2.5" })
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
) });
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
TooltipContent,
|
|
48
|
+
TooltipRoot,
|
|
49
|
+
TooltipTrigger
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/primitives/tooltip.tsx"],"sourcesContent":["\"use client\"\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"../lib/cn.js\"\n\n/**\n * Internal tooltip primitives (ported from nx-automations ui/tooltip.tsx).\n * NEVER exported publicly: in this library a tooltip is a PROP on the component\n * that needs one (e.g. <Button tooltip=\"...\">), not a wrapper devs compose.\n *\n * House rules baked in (instead of asked of every call site like in\n * nx-automations): delay 0 via a local provider, and disableHoverablePopup so\n * the popup never traps the pointer.\n */\n\nfunction TooltipRoot({ ...props }: TooltipPrimitive.Root.Props) {\n return (\n <TooltipPrimitive.Provider delay={0}>\n <TooltipPrimitive.Root data-slot=\"tooltip\" disableHoverablePopup {...props} />\n </TooltipPrimitive.Provider>\n )\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<TooltipPrimitive.Positioner.Props, \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\">) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"nxui:isolate nxui:z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"nxui:z-50 nxui:inline-flex nxui:w-fit nxui:max-w-xs nxui:origin-(--transform-origin) nxui:items-center nxui:gap-1.5 nxui:rounded-md nxui:bg-foreground nxui:px-3 nxui:py-1.5 nxui:text-body nxui:text-background nxui:data-[side=bottom]:slide-in-from-top-2 nxui:data-[side=inline-end]:slide-in-from-left-2 nxui:data-[side=inline-start]:slide-in-from-right-2 nxui:data-[side=left]:slide-in-from-right-2 nxui:data-[side=right]:slide-in-from-left-2 nxui:data-[side=top]:slide-in-from-bottom-2 nxui:data-[state=delayed-open]:animate-in nxui:data-[state=delayed-open]:fade-in-0 nxui:data-[state=delayed-open]:zoom-in-95 nxui:data-open:animate-in nxui:data-open:fade-in-0 nxui:data-open:zoom-in-95 nxui:data-closed:animate-out nxui:data-closed:fade-out-0 nxui:data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"nxui:z-50 nxui:size-2.5 nxui:translate-y-[calc(-50%-2px)] nxui:rotate-45 nxui:rounded-[2px] nxui:bg-foreground nxui:fill-foreground nxui:data-[side=bottom]:top-1 nxui:data-[side=inline-end]:top-1/2! nxui:data-[side=inline-end]:-left-1 nxui:data-[side=inline-end]:-translate-y-1/2 nxui:data-[side=inline-start]:top-1/2! nxui:data-[side=inline-start]:-right-1 nxui:data-[side=inline-start]:-translate-y-1/2 nxui:data-[side=left]:top-1/2! nxui:data-[side=left]:-right-1 nxui:data-[side=left]:-translate-y-1/2 nxui:data-[side=right]:top-1/2! nxui:data-[side=right]:-left-1 nxui:data-[side=right]:-translate-y-1/2 nxui:data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { TooltipRoot, TooltipTrigger, TooltipContent }\n"],"mappings":";AAmBM,cA4BE,YA5BF;AAjBN,SAAS,WAAW,wBAAwB;AAE5C,SAAS,UAAU;AAYnB,SAAS,YAAY,EAAE,GAAG,MAAM,GAAgC;AAC9D,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,GAChC,8BAAC,iBAAiB,MAAjB,EAAsB,aAAU,WAAU,uBAAqB,MAAE,GAAG,OAAO,GAC9E;AAEJ;AAEA,SAAS,eAAe,EAAE,GAAG,MAAM,GAAmC;AACpE,SAAO,oBAAC,iBAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAC4F;AAC1F,SACE,oBAAC,iBAAiB,QAAjB,EACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,QAAC,iBAAiB;AAAA,QAAjB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,YACD,oBAAC,iBAAiB,OAAjB,EAAuB,WAAU,qoBAAooB;AAAA;AAAA;AAAA,MACxqB;AAAA;AAAA,EACF,GACF;AAEJ;","names":[]}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
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-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,73 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neuronix-tech/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
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
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/neuronix-tech/neuronux-ui.git",
|
|
9
|
+
"directory": "packages/ui"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"sideEffects": [
|
|
15
|
+
"*.css"
|
|
16
|
+
],
|
|
17
|
+
"bin": {
|
|
18
|
+
"neuronix-ui": "./dist/cli/index.js"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"default": "./dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./styles.css": "./dist/styles.css",
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"react": ">=18",
|
|
33
|
+
"react-dom": ">=18",
|
|
34
|
+
"react-hook-form": "^7.0.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependenciesMeta": {
|
|
37
|
+
"react-hook-form": {
|
|
38
|
+
"optional": true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@base-ui/react": "^1.6.0",
|
|
43
|
+
"@tabler/icons-react": "^3.34.0",
|
|
44
|
+
"class-variance-authority": "^0.7.1",
|
|
45
|
+
"clsx": "^2.1.1"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@clack/prompts": "^0.11.0",
|
|
49
|
+
"@storybook/react-vite": "^9.1.2",
|
|
50
|
+
"@tailwindcss/cli": "4.1.11",
|
|
51
|
+
"@types/react": "^19.1.9",
|
|
52
|
+
"@types/react-dom": "^19.1.7",
|
|
53
|
+
"picocolors": "^1.1.1",
|
|
54
|
+
"react": "^19.1.1",
|
|
55
|
+
"react-dom": "^19.1.1",
|
|
56
|
+
"react-hook-form": "^7.62.0",
|
|
57
|
+
"storybook": "^9.1.2",
|
|
58
|
+
"tailwindcss": "4.1.11",
|
|
59
|
+
"tsup": "^8.5.0",
|
|
60
|
+
"tw-animate-css": "^1.4.0",
|
|
61
|
+
"typescript": "^5.9.2",
|
|
62
|
+
"@neuronix/tokens": "0.2.0"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "pnpm run build:js && pnpm run build:css && pnpm run postbuild:verify",
|
|
66
|
+
"build:js": "tsup",
|
|
67
|
+
"build:css": "tailwindcss -i src/styles/index.css -o dist/styles.css --minify",
|
|
68
|
+
"postbuild:verify": "node scripts/verify-directives.mjs",
|
|
69
|
+
"dev:css": "tailwindcss -i src/styles/index.css -o dist/styles.css --watch",
|
|
70
|
+
"typecheck": "tsc --noEmit",
|
|
71
|
+
"test": "vitest run"
|
|
72
|
+
}
|
|
6
73
|
}
|
package/README.md
DELETED