@kaio-xyz/design-system 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/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # @kaio-xyz/design-system
2
+
3
+ React design system for Kaio/Libre projects.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @kaio-xyz/design-system
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Import styles once in your entry point (e.g. `App.tsx` or `main.tsx`):
14
+
15
+ ```tsx
16
+ import "@kaio-xyz/design-system/styles.css";
17
+ ```
18
+
19
+ Then use the components:
20
+
21
+ ```tsx
22
+ import { Badge } from "@kaio-xyz/design-system";
23
+
24
+ function App() {
25
+ return (
26
+ <Badge text="Success" status="success" />
27
+ );
28
+ }
29
+ ```
30
+
31
+ ## Development
32
+
33
+ ```bash
34
+ # Install dependencies
35
+ pnpm install
36
+
37
+ # Start Storybook
38
+ pnpm storybook
39
+
40
+ # Build the library
41
+ pnpm build
42
+
43
+ # Watch mode
44
+ pnpm dev
45
+ ```
46
+
47
+ ## Storybook
48
+
49
+ View all components and their variants:
50
+
51
+ ```bash
52
+ pnpm storybook
53
+ ```
54
+
55
+ Open http://localhost:6006
56
+
57
+ ## Requirements
58
+
59
+ - React 18+ or 19+
60
+ - React DOM 18+ or 19+
61
+
62
+ ## License
63
+
64
+ ISC
@@ -0,0 +1,11 @@
1
+ export type BadgeStatus = "success" | "rejected" | "info" | "warning" | undefined;
2
+ export declare const badgeStatuses: BadgeStatus[];
3
+ export type BadgeProps = {
4
+ text: string;
5
+ fullWidth?: boolean;
6
+ size?: "xs" | "s" | "m" | "l";
7
+ dataTest?: string;
8
+ isLeftAlign?: boolean;
9
+ status?: BadgeStatus;
10
+ };
11
+ export declare const Badge: ({ text, status, fullWidth, size, dataTest, isLeftAlign, }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import type { StoryObj } from "@storybook/react";
2
+ declare const meta: {
3
+ title: string;
4
+ component: ({ text, status, fullWidth, size, dataTest, isLeftAlign, }: import("./badge").BadgeProps) => import("react/jsx-runtime").JSX.Element;
5
+ parameters: {
6
+ layout: string;
7
+ };
8
+ tags: string[];
9
+ args: {
10
+ text: string;
11
+ fullWidth: false;
12
+ };
13
+ argTypes: {
14
+ text: {
15
+ description: string;
16
+ };
17
+ fullWidth: {
18
+ description: string;
19
+ };
20
+ };
21
+ };
22
+ export default meta;
23
+ type Story = StoryObj<typeof meta>;
24
+ export declare const Default: Story;
25
+ export declare const Success: Story;
26
+ export declare const Rejected: Story;
27
+ export declare const Info: Story;
28
+ export declare const Warning: Story;
29
+ export declare const FullWidth: Story;
@@ -0,0 +1 @@
1
+ export { Badge } from "./badge";
@@ -0,0 +1 @@
1
+ export { Label } from './label';
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ type LabelProps = {
3
+ id?: string;
4
+ label?: ReactNode;
5
+ className?: string;
6
+ hasMargin?: boolean;
7
+ hasHalfMargin?: boolean;
8
+ hasCursorPointer?: boolean;
9
+ };
10
+ export declare const Label: ({ id, label, className, hasMargin, hasHalfMargin, hasCursorPointer }: LabelProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var clsx = require('clsx');
5
+
6
+ var baseStyle = {"root":"badge-base-module__root__oUZlm"};
7
+
8
+ var style = {"root":"badge-module__root__rXpaz"};
9
+
10
+ var Badge = function (_a) {
11
+ var text = _a.text, status = _a.status, _b = _a.fullWidth, fullWidth = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? "m" : _c, dataTest = _a.dataTest, _d = _a.isLeftAlign, isLeftAlign = _d === void 0 ? false : _d;
12
+ return (jsxRuntime.jsx("label", { className: clsx(baseStyle.root, style.root), title: text, "data-status": status, "data-full-width": fullWidth, "data-size": size, "data-test": dataTest, "data-is-left-align": isLeftAlign, children: text }));
13
+ };
14
+
15
+ exports.Badge = Badge;
16
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/atoms/badge/badge.tsx"],"sourcesContent":["import clsx from 'clsx';\n\nimport baseStyle from './badge-base.module.css';\nimport style from './badge.module.css';\n\nexport type BadgeStatus = \"success\" | \"rejected\" | \"info\" | \"warning\" | undefined;\n\nexport const badgeStatuses: BadgeStatus[] = [\"warning\", \"info\", undefined, \"success\"];\n\nexport type BadgeProps = {\n text: string;\n fullWidth?: boolean;\n size?: \"xs\" | \"s\" | \"m\" | \"l\";\n dataTest?: string;\n isLeftAlign?: boolean;\n status?: BadgeStatus;\n};\n\nexport const Badge = ({\n text,\n status,\n fullWidth = false,\n size = \"m\",\n dataTest,\n isLeftAlign = false,\n}: BadgeProps) => (\n <label\n className={clsx(baseStyle.root, style.root)}\n title={text}\n data-status={status}\n data-full-width={fullWidth}\n data-size={size}\n data-test={dataTest}\n data-is-left-align={isLeftAlign}\n >\n {text}\n </label>\n);"],"names":["_jsx"],"mappings":";;;;;;;;;AAkBO,IAAM,KAAK,GAAG,UAAC,EAOT,EAAA;QANT,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACjB,EAAA,GAAA,EAAA,CAAA,IAAU,EAAV,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,GAAG,GAAA,EAAA,EACV,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,WAAmB,EAAnB,WAAW,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA;AACL,IAAA,QACdA,cAAA,CAAA,OAAA,EAAA,EACI,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAC3C,KAAK,EAAE,IAAI,EAAA,aAAA,EACE,MAAM,EAAA,iBAAA,EACF,SAAS,EAAA,WAAA,EACf,IAAI,EAAA,WAAA,EACJ,QAAQ,EAAA,oBAAA,EACC,WAAW,EAAA,QAAA,EAE9B,IAAI,GACD;AAXM;;;;"}
@@ -0,0 +1,2 @@
1
+ import "./styles/_vars.css";
2
+ export { Badge } from "@/components/atoms/badge";
@@ -0,0 +1,14 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+
4
+ var baseStyle = {"root":"badge-base-module__root__oUZlm"};
5
+
6
+ var style = {"root":"badge-module__root__rXpaz"};
7
+
8
+ var Badge = function (_a) {
9
+ var text = _a.text, status = _a.status, _b = _a.fullWidth, fullWidth = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? "m" : _c, dataTest = _a.dataTest, _d = _a.isLeftAlign, isLeftAlign = _d === void 0 ? false : _d;
10
+ return (jsx("label", { className: clsx(baseStyle.root, style.root), title: text, "data-status": status, "data-full-width": fullWidth, "data-size": size, "data-test": dataTest, "data-is-left-align": isLeftAlign, children: text }));
11
+ };
12
+
13
+ export { Badge };
14
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/atoms/badge/badge.tsx"],"sourcesContent":["import clsx from 'clsx';\n\nimport baseStyle from './badge-base.module.css';\nimport style from './badge.module.css';\n\nexport type BadgeStatus = \"success\" | \"rejected\" | \"info\" | \"warning\" | undefined;\n\nexport const badgeStatuses: BadgeStatus[] = [\"warning\", \"info\", undefined, \"success\"];\n\nexport type BadgeProps = {\n text: string;\n fullWidth?: boolean;\n size?: \"xs\" | \"s\" | \"m\" | \"l\";\n dataTest?: string;\n isLeftAlign?: boolean;\n status?: BadgeStatus;\n};\n\nexport const Badge = ({\n text,\n status,\n fullWidth = false,\n size = \"m\",\n dataTest,\n isLeftAlign = false,\n}: BadgeProps) => (\n <label\n className={clsx(baseStyle.root, style.root)}\n title={text}\n data-status={status}\n data-full-width={fullWidth}\n data-size={size}\n data-test={dataTest}\n data-is-left-align={isLeftAlign}\n >\n {text}\n </label>\n);"],"names":["_jsx"],"mappings":";;;;;;;AAkBO,IAAM,KAAK,GAAG,UAAC,EAOT,EAAA;QANT,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACjB,EAAA,GAAA,EAAA,CAAA,IAAU,EAAV,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,GAAG,GAAA,EAAA,EACV,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,WAAmB,EAAnB,WAAW,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA;AACL,IAAA,QACdA,GAAA,CAAA,OAAA,EAAA,EACI,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAC3C,KAAK,EAAE,IAAI,EAAA,aAAA,EACE,MAAM,EAAA,iBAAA,EACF,SAAS,EAAA,WAAA,EACf,IAAI,EAAA,WAAA,EACJ,QAAQ,EAAA,oBAAA,EACC,WAAW,EAAA,QAAA,EAE9B,IAAI,GACD;AAXM;;;;"}
@@ -0,0 +1 @@
1
+ :root{--primary-100:225,71%,55%;--primary-80:225,71%,60%;--primary-50:225,71%,80%;--primary-20:225,71%,90%;--neutral-0:0,0%,100%;--neutral-10:0,0%,95%;--neutral-20:0,0%,90%;--neutral-30:0,0%,85%;--neutral-40:0,0%,80%;--neutral-80:0,0%,30%;--neutral-100:0,0%,10%;--support-white:0,0%,100%;--support-white-93:0,0%,93%;--support-white-80:0,0%,80%;--support-white-96:0,0%,96%;--support-white-98:0,0%,98%;--support-black:0,0%,0%;--support-black-80:0,0%,0%,80%;--support-black-50:0,0%,0%,50%;--support-black-40:0,0%,0%,40%;--support-gray:211,25%,84%;--support-gray-dark:211,7%,47%;--support-gray-medium:240,13%,65%;--support-gray-light:0,0%,95%;--support-blue:211,61%,43%;--support-blue-light:202,81%,86%;--support-gold:45,51%,50%;--semantic-success:104,71%,31%;--semantic-success-light:124,45%,61%;--semantic-warning:43,100%,52%;--semantic-warning-light:52,92%,56%;--semantic-warning-dark:35,100%,34%;--semantic-error:0,76%,57%;--semantic-error-light:0,76%,90%;--semantic-info:195,100%,68%;--semantic-info-dark:196,100%,31%;--small-container:820px;--medium-container:1024px;--large-container:1440px;--space-2-px:2px;--space-4-px:4px;--space-6-px:6px;--space-8-px:8px;--space-12-px:12px;--space-14-px:14px;--space-16-px:16px;--space-20-px:20px;--space-24-px:24px;--space-28-px:28px;--space-32-px:32px;--space-42-px:42px;--space-64-px:64px;--radius-3-px:3px;--radius-6-px:6px;--radius-16-px:16px;--font-size-10-px:10px;--font-size-12-px:12px;--font-size-14-px:14px;--font-size-16-px:16px;--font-size-18-px:18px;--font-size-20-px:20px;--font-size-26-px:26px;--font-size-40-px:40px;--time-100-ms:100ms;--time-200-ms:200ms;--time-250-ms:250ms;--time-300-ms:300ms;--time-500-ms:500ms;--font-weight-light:300;--font-weight-regular:400;--font-weight-semibold:600;--blur-filter:1px;--header-height:70px;--navigation-menu-height:46px;--sidebar-width:200px;--sidebar-width--mobile:120px;--sidebar-collapsed-width:79px;--shadow-low:0 2px 0px rgba(0,0,0,.1),0 2px rgba(0,0,0,.05);--shadow-base:0 4px 8px rgba(0,0,0,.1),0 0 4px rgba(0,0,0,.05);--shadow-mid:0px 5px 20px -5px rgba(61,62,63,.225),0px 5px 11px -7px rgba(61,62,63,.13);--shadow-warning-mid:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px hsl(var(--semantic-warning));--shadow-error-mid:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px hsl(var(--semantic-error));--shadow-info-mid:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px hsl(var(--semantic-info));--ease-standard-css:cubic-bezier(0.3,0.07,0.034,1)}.badge-base-module__root__oUZlm{background-color:hsla(var(--support-gray),20%);border-radius:var(--radius-3-px);color:hsl(var(--support-gray-dark));display:inline-block;font-size:var(--font-size-14-px);font-weight:var(--font-weight-semibold);min-width:120px;padding:var(--space-6-px) var(--space-12-px);pointer-events:none;text-align:center}.badge-base-module__root__oUZlm[data-full-width=true]{width:100%}.badge-base-module__root__oUZlm[data-is-left-align=true]{text-align:left}.badge-base-module__root__oUZlm[data-size=xs]{font-size:var(--font-size-10-px);min-width:60px;padding:var(--space-2-px) var(--space-4-px)}.badge-base-module__root__oUZlm[data-size=s]{font-size:var(--font-size-12-px);min-width:80px;padding:var(--space-4-px) var(--space-4-px)}.badge-base-module__root__oUZlm[data-size=m]{font-size:var(--font-size-14-px);min-width:120px;padding:var(--space-4-px) var(--space-8-px)}.badge-base-module__root__oUZlm[data-size=l]{font-size:var(--font-size-16-px);min-width:160px;padding:var(--space-8-px) var(--space-12-px)}.badge-module__root__rXpaz[data-status=success]{background-color:hsla(var(--semantic-success),20%);color:hsl(var(--semantic-success))}.badge-module__root__rXpaz[data-status=info]{background-color:hsla(var(--semantic-info),20%);color:hsl(var(--semantic-info-dark))}.badge-module__root__rXpaz[data-status=warning]{background-color:hsla(var(--semantic-warning-light),20%);color:hsl(var(--semantic-warning-dark))}.badge-module__root__rXpaz[data-status=rejected]{background-color:hsla(var(--semantic-error),20%);color:hsl(var(--semantic-error))}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@kaio-xyz/design-system",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "scripts": {
10
+ "build": "rollup -c",
11
+ "dev": "rollup -c -w",
12
+ "storybook": "storybook dev -p 6006",
13
+ "build-storybook": "storybook build"
14
+ },
15
+ "keywords": [],
16
+ "author": "",
17
+ "license": "ISC",
18
+ "packageManager": "pnpm@10.24.0",
19
+ "peerDependencies": {
20
+ "react": "^18.0.0 || ^19.0.0",
21
+ "react-dom": "^18.0.0 || ^19.0.0"
22
+ },
23
+ "devDependencies": {
24
+ "@csstools/postcss-design-tokens": "^4.0.5",
25
+ "@rollup/plugin-typescript": "12.3.0",
26
+ "@storybook/addon-docs": "^10.1.4",
27
+ "@storybook/blocks": "^8.6.14",
28
+ "@storybook/react": "^10.1.4",
29
+ "@storybook/react-vite": "^10.1.4",
30
+ "@types/react": "19.2.7",
31
+ "clsx": "^2.1.1",
32
+ "postcss": "8.5.6",
33
+ "postcss-custom-media": "11.0.6",
34
+ "postcss-import": "^16.1.1",
35
+ "postcss-normalize": "^13.0.1",
36
+ "postcss-preset-env": "10.5.0",
37
+ "react": "19.2.1",
38
+ "react-dom": "19.2.1",
39
+ "rollup": "4.53.3",
40
+ "rollup-plugin-postcss": "4.0.2",
41
+ "storybook": "^10.1.4",
42
+ "tslib": "2.8.1",
43
+ "typescript": "5.9.3"
44
+ },
45
+ "exports": {
46
+ ".": {
47
+ "types": "./dist/index.d.ts",
48
+ "import": "./dist/index.esm.js",
49
+ "require": "./dist/index.cjs.js"
50
+ },
51
+ "./styles.css": "./dist/styles.css"
52
+ },
53
+ "files": [
54
+ "dist"
55
+ ],
56
+ "sideEffects": [
57
+ "**/*.css"
58
+ ]
59
+ }