@ysk-kit/ui 1.0.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/LICENSE +21 -0
- package/dist/app-shell.d.ts +8 -0
- package/dist/app-shell.d.ts.map +1 -0
- package/dist/app-shell.js +5 -0
- package/dist/app-shell.js.map +1 -0
- package/dist/button.d.ts +10 -0
- package/dist/button.d.ts.map +1 -0
- package/dist/button.js +20 -0
- package/dist/button.js.map +1 -0
- package/dist/can.d.ts +8 -0
- package/dist/can.d.ts.map +1 -0
- package/dist/can.js +7 -0
- package/dist/can.js.map +1 -0
- package/dist/cn.d.ts +3 -0
- package/dist/cn.d.ts.map +1 -0
- package/dist/cn.js +4 -0
- package/dist/cn.js.map +1 -0
- package/dist/empty-state.d.ts +7 -0
- package/dist/empty-state.d.ts.map +1 -0
- package/dist/empty-state.js +5 -0
- package/dist/empty-state.js.map +1 -0
- package/dist/error-banner.d.ts +4 -0
- package/dist/error-banner.d.ts.map +1 -0
- package/dist/error-banner.js +5 -0
- package/dist/error-banner.js.map +1 -0
- package/dist/form-field.d.ts +8 -0
- package/dist/form-field.d.ts.map +1 -0
- package/dist/form-field.js +5 -0
- package/dist/form-field.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +3 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +6 -0
- package/dist/input.js.map +1 -0
- package/dist/page-header.d.ts +7 -0
- package/dist/page-header.d.ts.map +1 -0
- package/dist/page-header.js +5 -0
- package/dist/page-header.js.map +1 -0
- package/dist/spinner.d.ts +4 -0
- package/dist/spinner.d.ts.map +1 -0
- package/dist/spinner.js +6 -0
- package/dist/spinner.js.map +1 -0
- package/dist/table.d.ts +8 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +21 -0
- package/dist/table.js.map +1 -0
- package/dist/ui.test.d.ts +2 -0
- package/dist/ui.test.d.ts.map +1 -0
- package/dist/ui.test.js +43 -0
- package/dist/ui.test.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 YSK Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export declare function AppShell({ brand, nav, trailing, children, }: {
|
|
3
|
+
brand: ReactNode;
|
|
4
|
+
nav: ReactNode;
|
|
5
|
+
trailing?: ReactNode;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=app-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../src/app-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,GAAG,EACH,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAcA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function AppShell({ brand, nav, trailing, children, }) {
|
|
3
|
+
return (_jsxs("div", { className: "min-h-screen bg-zinc-50 text-zinc-900", children: [_jsx("header", { className: "border-b border-zinc-200 bg-white", children: _jsxs("nav", { className: "mx-auto flex max-w-4xl items-center gap-4 px-4 py-3 text-sm", children: [brand, nav, _jsx("span", { className: "ml-auto" }), trailing] }) }), _jsx("main", { className: "mx-auto max-w-4xl px-4 py-8", children: children })] }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=app-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell.js","sourceRoot":"","sources":["../src/app-shell.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,GAAG,EACH,QAAQ,EACR,QAAQ,GAMT;IACC,OAAO,CACL,eAAK,SAAS,EAAC,uCAAuC,aACpD,iBAAQ,SAAS,EAAC,mCAAmC,YACnD,eAAK,SAAS,EAAC,6DAA6D,aACzE,KAAK,EACL,GAAG,EACJ,eAAM,SAAS,EAAC,SAAS,GAAG,EAC3B,QAAQ,IACL,GACC,EACT,eAAM,SAAS,EAAC,6BAA6B,YAAE,QAAQ,GAAQ,IAC3D,CACP,CAAC;AACJ,CAAC"}
|
package/dist/button.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import type { ButtonHTMLAttributes } from 'react';
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "outline" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof buttonVariants>;
|
|
8
|
+
export declare function Button({ className, variant, size, type, ...props }: ButtonProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../src/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlD,QAAA,MAAM,cAAc;;;8EAenB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAC/D,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtC,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAe,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,+BAI1F"}
|
package/dist/button.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { cn } from './cn';
|
|
4
|
+
const buttonVariants = cva('inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50', {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: 'bg-zinc-900 text-white hover:bg-zinc-800',
|
|
8
|
+
outline: 'border border-zinc-300 bg-white hover:bg-zinc-50',
|
|
9
|
+
},
|
|
10
|
+
size: {
|
|
11
|
+
default: 'h-9 px-4 py-2',
|
|
12
|
+
sm: 'h-8 px-3 text-xs',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: { variant: 'default', size: 'default' },
|
|
16
|
+
});
|
|
17
|
+
export function Button({ className, variant, size, type = 'button', ...props }) {
|
|
18
|
+
return (_jsx("button", { type: type, className: cn(buttonVariants({ variant, size }), className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../src/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,cAAc,GAAG,GAAG,CACxB,2IAA2I,EAC3I;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE,kDAAkD;SAC5D;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,kBAAkB;SACvB;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;CACzD,CACF,CAAC;AAKF,MAAM,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAe;IACzF,OAAO,CACL,iBAAQ,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC/F,CAAC;AACJ,CAAC"}
|
package/dist/can.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Permission, UserRole } from '@ysk-kit/contracts';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export declare function Can({ role, permission, children, }: {
|
|
4
|
+
role: UserRole;
|
|
5
|
+
permission: Permission;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): ReactNode;
|
|
8
|
+
//# sourceMappingURL=can.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"can.d.ts","sourceRoot":"","sources":["../src/can.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,GAAG,CAAC,EAClB,IAAI,EACJ,UAAU,EACV,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,aAGA"}
|
package/dist/can.js
ADDED
package/dist/can.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"can.js","sourceRoot":"","sources":["../src/can.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,UAAU,GAAG,CAAC,EAClB,IAAI,EACJ,UAAU,EACV,QAAQ,GAKT;IACC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/cn.d.ts
ADDED
package/dist/cn.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../src/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,eAAO,MAAM,EAAE,GAAI,GAAG,QAAQ,UAAU,EAAE,KAAG,MAA+B,CAAC"}
|
package/dist/cn.js
ADDED
package/dist/cn.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../src/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAoB,EAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../src/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,+BAQA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function EmptyState({ title, description, action, }) {
|
|
3
|
+
return (_jsxs("div", { className: "rounded-md border border-dashed border-zinc-300 bg-white px-4 py-10 text-center", children: [_jsx("p", { className: "font-medium text-zinc-900", children: title }), description ? _jsx("p", { className: "mt-1 text-sm text-zinc-600", children: description }) : null, action ? _jsx("div", { className: "mt-4", children: action }) : null] }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=empty-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../src/empty-state.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,MAAM,GAKP;IACC,OAAO,CACL,eAAK,SAAS,EAAC,iFAAiF,aAC9F,YAAG,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAK,EACnD,WAAW,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,CAAC,CAAC,CAAC,IAAI,EAChF,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,IACjD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-banner.d.ts","sourceRoot":"","sources":["../src/error-banner.tsx"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,+BAS3D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function ErrorBanner({ message }) {
|
|
3
|
+
return (_jsx("p", { className: "rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700", role: "alert", children: message }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=error-banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-banner.js","sourceRoot":"","sources":["../src/error-banner.tsx"],"names":[],"mappings":";AAAA,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAuB;IAC1D,OAAO,CACL,YACE,SAAS,EAAC,2EAA2E,EACrF,IAAI,EAAC,OAAO,YAEX,OAAO,GACN,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export declare function FormField({ label, htmlFor, error, children, }: {
|
|
3
|
+
label: string;
|
|
4
|
+
htmlFor: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=form-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../src/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAYA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function FormField({ label, htmlFor, error, children, }) {
|
|
3
|
+
return (_jsxs("div", { className: "grid gap-1 text-sm", children: [_jsx("label", { htmlFor: htmlFor, children: label }), children, error ? (_jsx("p", { className: "text-red-600", role: "alert", children: error })) : null] }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=form-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.js","sourceRoot":"","sources":["../src/form-field.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,GAMT;IACC,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,gBAAO,OAAO,EAAE,OAAO,YAAG,KAAK,GAAS,EACvC,QAAQ,EACR,KAAK,CAAC,CAAC,CAAC,CACP,YAAG,SAAS,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,YACrC,KAAK,GACJ,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AppShell } from './app-shell';
|
|
2
|
+
export { Button } from './button';
|
|
3
|
+
export { Can } from './can';
|
|
4
|
+
export { cn } from './cn';
|
|
5
|
+
export { EmptyState } from './empty-state';
|
|
6
|
+
export { ErrorBanner } from './error-banner';
|
|
7
|
+
export { FormField } from './form-field';
|
|
8
|
+
export { Input } from './input';
|
|
9
|
+
export { PageHeader } from './page-header';
|
|
10
|
+
export { Spinner } from './spinner';
|
|
11
|
+
export { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './table';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AppShell } from './app-shell';
|
|
2
|
+
export { Button } from './button';
|
|
3
|
+
export { Can } from './can';
|
|
4
|
+
export { cn } from './cn';
|
|
5
|
+
export { EmptyState } from './empty-state';
|
|
6
|
+
export { ErrorBanner } from './error-banner';
|
|
7
|
+
export { FormField } from './form-field';
|
|
8
|
+
export { Input } from './input';
|
|
9
|
+
export { PageHeader } from './page-header';
|
|
10
|
+
export { Spinner } from './spinner';
|
|
11
|
+
export { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './table';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC"}
|
package/dist/input.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAGjD,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,+BAWvF"}
|
package/dist/input.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from './cn';
|
|
3
|
+
export function Input({ className, id, ...props }) {
|
|
4
|
+
return (_jsx("input", { id: id, className: cn('flex h-9 w-full rounded-md border border-zinc-300 bg-white px-3 py-1 text-sm shadow-sm outline-none focus:border-zinc-500', className), ...props }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAAyC;IACtF,OAAO,CACL,gBACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,EAAE,CACX,2HAA2H,EAC3H,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../src/page-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,+BAUA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function PageHeader({ title, description, actions, }) {
|
|
3
|
+
return (_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("h1", { className: "text-2xl font-semibold", children: title }), description ? _jsx("p", { className: "text-zinc-600", children: description }) : null] }), actions ? _jsx("div", { children: actions }) : null] }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=page-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.js","sourceRoot":"","sources":["../src/page-header.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,GAKR;IACC,OAAO,CACL,eAAK,SAAS,EAAC,kDAAkD,aAC/D,eAAK,SAAS,EAAC,WAAW,aACxB,aAAI,SAAS,EAAC,wBAAwB,YAAE,KAAK,GAAM,EAClD,WAAW,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,eAAe,YAAE,WAAW,GAAK,CAAC,CAAC,CAAC,IAAI,IAChE,EACL,OAAO,CAAC,CAAC,CAAC,wBAAM,OAAO,GAAO,CAAC,CAAC,CAAC,IAAI,IAClC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../src/spinner.tsx"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAY5D"}
|
package/dist/spinner.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from './cn';
|
|
3
|
+
export function Spinner({ className }) {
|
|
4
|
+
return (_jsx("div", { className: cn('h-5 w-5 animate-spin rounded-full border-2 border-zinc-300 border-t-zinc-900', className), role: "status", "aria-busy": "true", "aria-label": "Loading" }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../src/spinner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS,EAA0B;IAC3D,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,8EAA8E,EAC9E,SAAS,CACV,EACD,IAAI,EAAC,QAAQ,eACH,MAAM,gBACL,SAAS,GACpB,CACH,CAAC;AACJ,CAAC"}
|
package/dist/table.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
|
|
2
|
+
export declare function Table({ className, ...props }: HTMLAttributes<HTMLTableElement>): import("react").JSX.Element;
|
|
3
|
+
export declare function TableHeader({ className, ...props }: HTMLAttributes<HTMLTableSectionElement>): import("react").JSX.Element;
|
|
4
|
+
export declare function TableBody({ className, ...props }: HTMLAttributes<HTMLTableSectionElement>): import("react").JSX.Element;
|
|
5
|
+
export declare function TableRow({ className, ...props }: HTMLAttributes<HTMLTableRowElement>): import("react").JSX.Element;
|
|
6
|
+
export declare function TableHead({ className, ...props }: ThHTMLAttributes<HTMLTableCellElement>): import("react").JSX.Element;
|
|
7
|
+
export declare function TableCell({ className, ...props }: TdHTMLAttributes<HTMLTableCellElement>): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAGhF,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,gBAAgB,CAAC,+BAE9E;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,uBAAuB,CAAC,+BAE3F;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,uBAAuB,CAAC,+BAEzF;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,mBAAmB,CAAC,+BAEpF;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,+BAExF;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,+BAExF"}
|
package/dist/table.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from './cn';
|
|
3
|
+
export function Table({ className, ...props }) {
|
|
4
|
+
return _jsx("table", { className: cn('w-full caption-bottom text-sm', className), ...props });
|
|
5
|
+
}
|
|
6
|
+
export function TableHeader({ className, ...props }) {
|
|
7
|
+
return _jsx("thead", { className: cn('border-b border-zinc-200 text-left', className), ...props });
|
|
8
|
+
}
|
|
9
|
+
export function TableBody({ className, ...props }) {
|
|
10
|
+
return _jsx("tbody", { className: cn('[&_tr:last-child]:border-0', className), ...props });
|
|
11
|
+
}
|
|
12
|
+
export function TableRow({ className, ...props }) {
|
|
13
|
+
return _jsx("tr", { className: cn('border-b border-zinc-100', className), ...props });
|
|
14
|
+
}
|
|
15
|
+
export function TableHead({ className, ...props }) {
|
|
16
|
+
return _jsx("th", { className: cn('px-3 py-2 font-medium text-zinc-600', className), ...props });
|
|
17
|
+
}
|
|
18
|
+
export function TableCell({ className, ...props }) {
|
|
19
|
+
return _jsx("td", { className: cn('px-3 py-2', className), ...props });
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC;IAC7E,OAAO,gBAAO,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA2C;IAC1F,OAAO,gBAAO,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA2C;IACxF,OAAO,gBAAO,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAuC;IACnF,OAAO,aAAI,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0C;IACvF,OAAO,aAAI,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0C;IACvF,OAAO,aAAI,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.test.d.ts","sourceRoot":"","sources":["../src/ui.test.tsx"],"names":[],"mappings":""}
|
package/dist/ui.test.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cleanup, render, screen } from '@testing-library/react';
|
|
3
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
4
|
+
import { AppShell } from './app-shell';
|
|
5
|
+
import { Button } from './button';
|
|
6
|
+
import { Can } from './can';
|
|
7
|
+
import { cn } from './cn';
|
|
8
|
+
import { EmptyState } from './empty-state';
|
|
9
|
+
import { ErrorBanner } from './error-banner';
|
|
10
|
+
import { FormField } from './form-field';
|
|
11
|
+
import { Input } from './input';
|
|
12
|
+
import { PageHeader } from './page-header';
|
|
13
|
+
import { Spinner } from './spinner';
|
|
14
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './table';
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
cleanup();
|
|
17
|
+
});
|
|
18
|
+
describe('@ysk-kit/ui', () => {
|
|
19
|
+
it('merges class names', () => {
|
|
20
|
+
expect(cn('px-2', 'px-4')).toContain('px-4');
|
|
21
|
+
});
|
|
22
|
+
it('renders button variants', () => {
|
|
23
|
+
render(_jsxs(_Fragment, { children: [_jsx(Button, { children: "Save" }), _jsx(Button, { variant: "outline", size: "sm", children: "Cancel" })] }));
|
|
24
|
+
expect(screen.getByRole('button', { name: 'Save' })).toBeDefined();
|
|
25
|
+
expect(screen.getByRole('button', { name: 'Cancel' }).className).toContain('border');
|
|
26
|
+
});
|
|
27
|
+
it('gates Can by permission', () => {
|
|
28
|
+
const { rerender } = render(_jsx(Can, { role: "USER", permission: "user.create", children: _jsx("span", { children: "secret" }) }));
|
|
29
|
+
expect(screen.queryByText('secret')).toBeNull();
|
|
30
|
+
rerender(_jsx(Can, { role: "ADMIN", permission: "user.create", children: _jsx("span", { children: "secret" }) }));
|
|
31
|
+
expect(screen.getByText('secret')).toBeDefined();
|
|
32
|
+
});
|
|
33
|
+
it('renders form field error, empty state, banner, shell, table, spinner', () => {
|
|
34
|
+
render(_jsxs(AppShell, { brand: _jsx("span", { children: "YSK" }), nav: _jsx("a", { href: "/", children: "Home" }), trailing: _jsx("span", { children: "out" }), children: [_jsx(PageHeader, { title: "Users", description: "All accounts", actions: _jsx(Button, { children: "New" }) }), _jsx(FormField, { label: "Email", htmlFor: "e", error: "Required", children: _jsx(Input, { id: "e" }) }), _jsx(ErrorBanner, { message: "Nope" }), _jsx(EmptyState, { title: "None", description: "Add one", action: _jsx(Button, { children: "Add" }) }), _jsx(Spinner, {}), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsx(TableRow, { children: _jsx(TableHead, { children: "Name" }) }) }), _jsx(TableBody, { children: _jsx(TableRow, { children: _jsx(TableCell, { children: "Ki" }) }) })] })] }));
|
|
35
|
+
expect(screen.getByText('Users')).toBeDefined();
|
|
36
|
+
expect(screen.getByText('Required')).toBeDefined();
|
|
37
|
+
expect(screen.getByText('Nope')).toBeDefined();
|
|
38
|
+
expect(screen.getByText('None')).toBeDefined();
|
|
39
|
+
expect(screen.getByLabelText('Loading')).toBeDefined();
|
|
40
|
+
expect(screen.getByText('Ki')).toBeDefined();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=ui.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.test.js","sourceRoot":"","sources":["../src/ui.test.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ysk-kit/ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@ysk-kit/contracts": "1.0.0",
|
|
15
|
+
"@ysk-kit/ui-logic": "1.0.0",
|
|
16
|
+
"class-variance-authority": "^0.7.1",
|
|
17
|
+
"clsx": "^2.1.1",
|
|
18
|
+
"tailwind-merge": "^3.2.0"
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"react": "^19.0.0",
|
|
22
|
+
"react-dom": "^19.0.0"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^24.5.2",
|
|
26
|
+
"@types/react": "^19.1.2",
|
|
27
|
+
"@types/react-dom": "^19.1.2",
|
|
28
|
+
"react": "19.2.3",
|
|
29
|
+
"react-dom": "19.2.3",
|
|
30
|
+
"@testing-library/react": "^16.3.0",
|
|
31
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
32
|
+
"happy-dom": "^20.0.0",
|
|
33
|
+
"typescript": "^6.0.3",
|
|
34
|
+
"vitest": "^5.0.2"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"registry": "https://registry.npmjs.org",
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
43
|
+
"scripts": {
|
|
44
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
45
|
+
"test": "vitest run --passWithNoTests",
|
|
46
|
+
"build": "tsc -p tsconfig.build.json"
|
|
47
|
+
}
|
|
48
|
+
}
|