@equal-experts/kuat-react 0.2.5 → 0.2.6
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 +64 -0
- package/dist/button-group-C55D9oj4.js +93 -0
- package/dist/button-group.d.ts +2 -0
- package/dist/button-group.js +9 -0
- package/dist/components/ui/button-group.d.ts +12 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +27 -22
- package/dist/style.css +1 -1
- package/package.json +8 -2
- package/scripts/copy-docs.js +88 -0
- package/scripts/setup-docs.js +169 -0
package/README.md
CHANGED
|
@@ -180,6 +180,70 @@ If you want to use different fonts or load them differently, you can override th
|
|
|
180
180
|
|
|
181
181
|
---
|
|
182
182
|
|
|
183
|
+
## AI Agent Documentation Setup
|
|
184
|
+
|
|
185
|
+
The Kuat Design System includes AI-friendly documentation optimized for LLM consumption. This documentation helps AI assistants understand the design system, generate code that follows design patterns, and maintain brand consistency.
|
|
186
|
+
|
|
187
|
+
### Setup Documentation
|
|
188
|
+
|
|
189
|
+
To make the agent documentation available in your repository for LLM context (e.g., Cursor), run the setup script:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Using pnpm exec (recommended)
|
|
193
|
+
pnpm exec @equal-experts/kuat-react setup-docs
|
|
194
|
+
|
|
195
|
+
# Using npm exec
|
|
196
|
+
npm exec @equal-experts/kuat-react setup-docs
|
|
197
|
+
|
|
198
|
+
# Or if you have the package installed locally
|
|
199
|
+
cd node_modules/@equal-experts/kuat-react && pnpm setup-docs
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This will copy the agent documentation to `.cursor/rules/kuat-docs/` in your repository root.
|
|
203
|
+
|
|
204
|
+
### What Gets Copied
|
|
205
|
+
|
|
206
|
+
The setup script copies the following documentation:
|
|
207
|
+
|
|
208
|
+
- **Design System** (`design/`) - Colors, typography, spacing, borders, layouts, logo usage
|
|
209
|
+
- **Component Guidelines** (`components/`) - Component development patterns and best practices
|
|
210
|
+
- **Content Guidelines** (`content/`) - Content writing guidelines for marketing, sales, and product interfaces
|
|
211
|
+
|
|
212
|
+
### Using the Documentation
|
|
213
|
+
|
|
214
|
+
Once copied, you can:
|
|
215
|
+
|
|
216
|
+
1. **Reference in Cursor Rules**: Add references to `.cursor/rules/kuat-docs/` in your `.cursorrules` file
|
|
217
|
+
2. **LLM Context**: The documentation is optimized for LLM consumption and provides context for:
|
|
218
|
+
- Understanding the design system
|
|
219
|
+
- Using components correctly
|
|
220
|
+
- Maintaining brand consistency
|
|
221
|
+
- Writing appropriate content
|
|
222
|
+
|
|
223
|
+
### Updating Documentation
|
|
224
|
+
|
|
225
|
+
After installing a new version of `@equal-experts/kuat-react`, run the setup script again to update the documentation:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
pnpm exec @equal-experts/kuat-react setup-docs
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
The script will automatically clean and replace the existing documentation.
|
|
232
|
+
|
|
233
|
+
### Documentation Location
|
|
234
|
+
|
|
235
|
+
The documentation is copied to:
|
|
236
|
+
```
|
|
237
|
+
.cursor/rules/kuat-docs/
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
This location is chosen because:
|
|
241
|
+
- It's within the `.cursor/` directory (typically gitignored)
|
|
242
|
+
- It's in the `rules/` subdirectory where Cursor looks for context files
|
|
243
|
+
- It's clearly namespaced as `kuat-docs/` to avoid conflicts
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
183
247
|
## Basic Usage
|
|
184
248
|
|
|
185
249
|
### Import Components
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { Slot as d } from "@radix-ui/react-slot";
|
|
3
|
+
import { c as u } from "./index-D5fkjZ2l.js";
|
|
4
|
+
import { c as e } from "./styles-qaFjX9_3.js";
|
|
5
|
+
import * as c from "react";
|
|
6
|
+
import * as n from "@radix-ui/react-separator";
|
|
7
|
+
const i = c.forwardRef(
|
|
8
|
+
({ className: o, orientation: t = "horizontal", decorative: r = !0, ...s }, l) => /* @__PURE__ */ a(
|
|
9
|
+
n.Root,
|
|
10
|
+
{
|
|
11
|
+
ref: l,
|
|
12
|
+
decorative: r,
|
|
13
|
+
orientation: t,
|
|
14
|
+
className: e(
|
|
15
|
+
"shrink-0 bg-border",
|
|
16
|
+
t === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
17
|
+
o
|
|
18
|
+
),
|
|
19
|
+
...s
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
i.displayName = n.Root.displayName;
|
|
24
|
+
const p = u(
|
|
25
|
+
"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
|
|
26
|
+
{
|
|
27
|
+
variants: {
|
|
28
|
+
orientation: {
|
|
29
|
+
horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
|
|
30
|
+
vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
orientation: "horizontal"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
function g({
|
|
39
|
+
className: o,
|
|
40
|
+
orientation: t,
|
|
41
|
+
...r
|
|
42
|
+
}) {
|
|
43
|
+
return /* @__PURE__ */ a(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
role: "group",
|
|
47
|
+
"data-slot": "button-group",
|
|
48
|
+
"data-orientation": t,
|
|
49
|
+
className: e(p({ orientation: t }), o),
|
|
50
|
+
...r
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
function v({
|
|
55
|
+
className: o,
|
|
56
|
+
asChild: t = !1,
|
|
57
|
+
...r
|
|
58
|
+
}) {
|
|
59
|
+
return /* @__PURE__ */ a(
|
|
60
|
+
t ? d : "div",
|
|
61
|
+
{
|
|
62
|
+
className: e(
|
|
63
|
+
"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
|
|
64
|
+
o
|
|
65
|
+
),
|
|
66
|
+
...r
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
function x({
|
|
71
|
+
className: o,
|
|
72
|
+
orientation: t = "vertical",
|
|
73
|
+
...r
|
|
74
|
+
}) {
|
|
75
|
+
return /* @__PURE__ */ a(
|
|
76
|
+
i,
|
|
77
|
+
{
|
|
78
|
+
"data-slot": "button-group-separator",
|
|
79
|
+
orientation: t,
|
|
80
|
+
className: e(
|
|
81
|
+
"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto",
|
|
82
|
+
o
|
|
83
|
+
),
|
|
84
|
+
...r
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
g as B,
|
|
90
|
+
x as a,
|
|
91
|
+
v as b,
|
|
92
|
+
p as c
|
|
93
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Separator } from './separator';
|
|
3
|
+
|
|
4
|
+
declare const buttonGroupVariants: (props?: ({
|
|
5
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
6
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
+
declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function ButtonGroupText({ className, asChild, ...props }: React.ComponentProps<"div"> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3
|
+
declare const Separator: React.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export { Separator };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,3 +5,4 @@ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from '.
|
|
|
5
5
|
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './components/ui/alert-dialog';
|
|
6
6
|
export { Badge, badgeVariants } from './components/ui/badge';
|
|
7
7
|
export type { BadgeProps } from './components/ui/badge';
|
|
8
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './components/ui/button-group';
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
import { c as r } from "./styles-qaFjX9_3.js";
|
|
2
|
-
import { B as e, b as
|
|
3
|
-
import { A as
|
|
4
|
-
import { A as
|
|
5
|
-
import { B as
|
|
2
|
+
import { B as e, b as s } from "./button-X-yV4Iwq.js";
|
|
3
|
+
import { A as i, c as n, a as g, b as A } from "./accordion-Da2BsKRK.js";
|
|
4
|
+
import { A as p, i as D, j as u, d as b, h as d, f as B, e as f, b as m, a as x, g as G, c as T } from "./alert-dialog-C769FFOM.js";
|
|
5
|
+
import { B as V, b as h } from "./badge-BXjC4NYJ.js";
|
|
6
|
+
import { B as v, a as y, b as F, c as H } from "./button-group-C55D9oj4.js";
|
|
6
7
|
export {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
i as Accordion,
|
|
9
|
+
n as AccordionContent,
|
|
10
|
+
g as AccordionItem,
|
|
11
|
+
A as AccordionTrigger,
|
|
12
|
+
p as AlertDialog,
|
|
13
|
+
D as AlertDialogAction,
|
|
14
|
+
u as AlertDialogCancel,
|
|
15
|
+
b as AlertDialogContent,
|
|
16
|
+
d as AlertDialogDescription,
|
|
17
|
+
B as AlertDialogFooter,
|
|
18
|
+
f as AlertDialogHeader,
|
|
19
|
+
m as AlertDialogOverlay,
|
|
20
|
+
x as AlertDialogPortal,
|
|
21
|
+
G as AlertDialogTitle,
|
|
22
|
+
T as AlertDialogTrigger,
|
|
23
|
+
V as Badge,
|
|
23
24
|
e as Button,
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
v as ButtonGroup,
|
|
26
|
+
y as ButtonGroupSeparator,
|
|
27
|
+
F as ButtonGroupText,
|
|
28
|
+
h as badgeVariants,
|
|
29
|
+
H as buttonGroupVariants,
|
|
30
|
+
s as buttonVariants,
|
|
26
31
|
r as cn
|
|
27
32
|
};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@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-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--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-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}:root{--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}@layer base{:root{--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--slate-50:oklch(97.8% .005 240);--slate-100:oklch(93.6% .01 240);--slate-200:oklch(92.9% .013 255.5);--slate-300:oklch(87% .022 255.5);--slate-500:oklch(55.4% .046 257.4);--slate-600:oklch(47.5% .04 257.4);--slate-700:oklch(39.5% .035 257.4);--slate-800:oklch(29.5% .03 257.4);--slate-900:oklch(17.6% .033 244.5);--slate-950:oklch(12.9% .042 264.7);--red-300:oklch(85% .08 25);--red-600:oklch(57.7% .245 27.3);--black:oklch(0% 0 0);--white:oklch(100% 0 0);--ee-blue-50:oklch(94.5% .028 237.5);--ee-blue-100:oklch(88.5% .055 237.5);--ee-blue-200:oklch(82.5% .082 237.5);--ee-blue-300:oklch(76.5% .109 237.5);--ee-blue-400:oklch(70.5% .136 237.5);--ee-blue-500:oklch(64.5% .163 237.5);--ee-blue-600:oklch(58.5% .145 237.5);--ee-blue-700:oklch(52.5% .127 237.5);--ee-blue-800:oklch(36.5% .109 237.5);--ee-blue-900:oklch(24.5% .082 237.5);--ee-blue-950:oklch(14.5% .055 237.5);--tech-blue-50:oklch(93.5% .015 240);--tech-blue-100:oklch(83.5% .03 240);--tech-blue-200:oklch(73.5% .045 240);--tech-blue-300:oklch(63.5% .06 240);--tech-blue-400:oklch(53.5% .075 240);--tech-blue-500:oklch(43.5% .09 240);--tech-blue-600:oklch(36.5% .08 240);--tech-blue-700:oklch(29.5% .07 240);--tech-blue-800:oklch(20.5% .06 240);--tech-blue-900:oklch(12.5% .04 240);--tech-blue-950:oklch(7.5% .025 240);--transform-teal-50:oklch(94.5% .02 185);--transform-teal-100:oklch(88.5% .04 185);--transform-teal-200:oklch(82.5% .06 185);--transform-teal-300:oklch(76.5% .08 185);--transform-teal-400:oklch(70.5% .1 185);--transform-teal-500:oklch(64.5% .12 185);--transform-teal-600:oklch(54.5% .105 185);--transform-teal-700:oklch(44.5% .09 185);--transform-teal-800:oklch(30.5% .075 185);--transform-teal-900:oklch(18.5% .055 185);--transform-teal-950:oklch(10.5% .035 185);--equal-ember-50:oklch(97.5% .035 65);--equal-ember-100:oklch(92.5% .07 65);--equal-ember-200:oklch(87.5% .105 65);--equal-ember-300:oklch(82.5% .14 65);--equal-ember-400:oklch(77.5% .175 65);--equal-ember-500:oklch(62.5% .2 65);--equal-ember-600:oklch(52.5% .18 65);--equal-ember-700:oklch(42.5% .16 65);--equal-ember-800:oklch(32.5% .14 65);--equal-ember-900:oklch(22.5% .12 65);--equal-ember-950:oklch(12.5% .1 65);--brand-ee-blue:var(--ee-blue-500);--brand-tech-blue:var(--tech-blue-500);--brand-transform-teal:var(--transform-teal-500);--brand-equal-ember:var(--equal-ember-500);--brand-dark-data:oklch(20.8% .01 240);--brand-the-cloud:var(--slate-100);--brand-byte-white:var(--white);--brand-ee-blue-accent:var(--ee-blue-50);--background:var(--brand-byte-white);--foreground:var(--slate-950);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-500);--accent:var(--brand-ee-blue-accent);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-200);--input:var(--brand-byte-white);--ring:var(--slate-300);--card:var(--brand-byte-white);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--brand-tech-blue);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--slate-200);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:oklch(20.8% .042 265.755);--shadow-2xs:0px 4px 8px -1px #0f172b0d;--shadow-xs:0px 4px 8px -1px #0f172b0d;--shadow-sm:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow-md:0px 4px 8px -1px #0f172b1a,0px 2px 4px -2px #0f172b1a;--shadow-lg:0px 4px 8px -1px #0f172b1a,0px 4px 6px -2px #0f172b1a;--shadow-xl:0px 4px 8px -1px #0f172b1a,0px 8px 10px -2px #0f172b1a;--shadow-2xl:0px 4px 8px -1px #0f172b40}.dark{--background:var(--slate-900);--foreground:var(--brand-byte-white);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-300);--accent:var(--ee-blue-800);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-700);--input:var(--slate-600);--ring:var(--slate-300);--card:var(--tech-blue-800);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--tech-blue-700);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--ee-blue-700);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:#000;--shadow-2xs:0px 4px 8px -1px #0000000d;--shadow-xs:0px 4px 8px -1px #0000000d;--shadow-sm:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow-md:0px 4px 8px -1px #0000001a,0px 2px 4px -2px #0000001a;--shadow-lg:0px 4px 8px -1px #0000001a,0px 4px 6px -2px #0000001a;--shadow-xl:0px 4px 8px -1px #0000001a,0px 8px 10px -2px #0000001a;--shadow-2xl:0px 4px 8px -1px #00000040}:root,:host{--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow:var(--shadow);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--tracking-normal:var(--tracking-normal);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}body{letter-spacing:var(--tracking-normal)}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer theme,components;@layer utilities{.fixed{position:fixed}.inset-0{inset:calc(var(--spacing)*0)}.top-\[50\%\]{top:50%}.left-\[50\%\]{left:50%}.z-50{z-index:50}.mt-2{margin-top:calc(var(--spacing)*2)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.w-4{width:calc(var(--spacing)*4)}.w-10{width:calc(var(--spacing)*10)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-black\/80{background-color:var(--black)}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--black)80%,transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + 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)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--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)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.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)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@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-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--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-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}:root{--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}@layer base{:root{--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--slate-50:oklch(97.8% .005 240);--slate-100:oklch(93.6% .01 240);--slate-200:oklch(92.9% .013 255.5);--slate-300:oklch(87% .022 255.5);--slate-500:oklch(55.4% .046 257.4);--slate-600:oklch(47.5% .04 257.4);--slate-700:oklch(39.5% .035 257.4);--slate-800:oklch(29.5% .03 257.4);--slate-900:oklch(17.6% .033 244.5);--slate-950:oklch(12.9% .042 264.7);--red-300:oklch(85% .08 25);--red-600:oklch(57.7% .245 27.3);--black:oklch(0% 0 0);--white:oklch(100% 0 0);--ee-blue-50:oklch(94.5% .028 237.5);--ee-blue-100:oklch(88.5% .055 237.5);--ee-blue-200:oklch(82.5% .082 237.5);--ee-blue-300:oklch(76.5% .109 237.5);--ee-blue-400:oklch(70.5% .136 237.5);--ee-blue-500:oklch(64.5% .163 237.5);--ee-blue-600:oklch(58.5% .145 237.5);--ee-blue-700:oklch(52.5% .127 237.5);--ee-blue-800:oklch(36.5% .109 237.5);--ee-blue-900:oklch(24.5% .082 237.5);--ee-blue-950:oklch(14.5% .055 237.5);--tech-blue-50:oklch(93.5% .015 240);--tech-blue-100:oklch(83.5% .03 240);--tech-blue-200:oklch(73.5% .045 240);--tech-blue-300:oklch(63.5% .06 240);--tech-blue-400:oklch(53.5% .075 240);--tech-blue-500:oklch(43.5% .09 240);--tech-blue-600:oklch(36.5% .08 240);--tech-blue-700:oklch(29.5% .07 240);--tech-blue-800:oklch(20.5% .06 240);--tech-blue-900:oklch(12.5% .04 240);--tech-blue-950:oklch(7.5% .025 240);--transform-teal-50:oklch(94.5% .02 185);--transform-teal-100:oklch(88.5% .04 185);--transform-teal-200:oklch(82.5% .06 185);--transform-teal-300:oklch(76.5% .08 185);--transform-teal-400:oklch(70.5% .1 185);--transform-teal-500:oklch(64.5% .12 185);--transform-teal-600:oklch(54.5% .105 185);--transform-teal-700:oklch(44.5% .09 185);--transform-teal-800:oklch(30.5% .075 185);--transform-teal-900:oklch(18.5% .055 185);--transform-teal-950:oklch(10.5% .035 185);--equal-ember-50:oklch(97.5% .035 65);--equal-ember-100:oklch(92.5% .07 65);--equal-ember-200:oklch(87.5% .105 65);--equal-ember-300:oklch(82.5% .14 65);--equal-ember-400:oklch(77.5% .175 65);--equal-ember-500:oklch(62.5% .2 65);--equal-ember-600:oklch(52.5% .18 65);--equal-ember-700:oklch(42.5% .16 65);--equal-ember-800:oklch(32.5% .14 65);--equal-ember-900:oklch(22.5% .12 65);--equal-ember-950:oklch(12.5% .1 65);--brand-ee-blue:var(--ee-blue-500);--brand-tech-blue:var(--tech-blue-500);--brand-transform-teal:var(--transform-teal-500);--brand-equal-ember:var(--equal-ember-500);--brand-dark-data:oklch(20.8% .01 240);--brand-the-cloud:var(--slate-100);--brand-byte-white:var(--white);--brand-ee-blue-accent:var(--ee-blue-50);--background:var(--brand-byte-white);--foreground:var(--slate-950);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-500);--accent:var(--brand-ee-blue-accent);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-200);--input:var(--brand-byte-white);--ring:var(--slate-300);--card:var(--brand-byte-white);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--brand-tech-blue);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--slate-200);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:oklch(20.8% .042 265.755);--shadow-2xs:0px 4px 8px -1px #0f172b0d;--shadow-xs:0px 4px 8px -1px #0f172b0d;--shadow-sm:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow-md:0px 4px 8px -1px #0f172b1a,0px 2px 4px -2px #0f172b1a;--shadow-lg:0px 4px 8px -1px #0f172b1a,0px 4px 6px -2px #0f172b1a;--shadow-xl:0px 4px 8px -1px #0f172b1a,0px 8px 10px -2px #0f172b1a;--shadow-2xl:0px 4px 8px -1px #0f172b40}.dark{--background:var(--slate-900);--foreground:var(--brand-byte-white);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-300);--accent:var(--ee-blue-800);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-700);--input:var(--slate-600);--ring:var(--slate-300);--card:var(--tech-blue-800);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--tech-blue-700);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--ee-blue-700);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:#000;--shadow-2xs:0px 4px 8px -1px #0000000d;--shadow-xs:0px 4px 8px -1px #0000000d;--shadow-sm:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow-md:0px 4px 8px -1px #0000001a,0px 2px 4px -2px #0000001a;--shadow-lg:0px 4px 8px -1px #0000001a,0px 4px 6px -2px #0000001a;--shadow-xl:0px 4px 8px -1px #0000001a,0px 8px 10px -2px #0000001a;--shadow-2xl:0px 4px 8px -1px #00000040}:root,:host{--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow:var(--shadow);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--tracking-normal:var(--tracking-normal);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}body{letter-spacing:var(--tracking-normal)}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer theme,components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-\[50\%\]{top:50%}.left-\[50\%\]{left:50%}.z-50{z-index:50}.\!m-0{margin:calc(var(--spacing)*0)!important}.mt-2{margin-top:calc(var(--spacing)*2)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-\[1px\]{height:1px}.h-full{height:100%}.w-4{width:calc(var(--spacing)*4)}.w-10{width:calc(var(--spacing)*10)}.w-\[1px\]{width:1px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-black\/80{background-color:var(--black)}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--black)80%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive{background-color:var(--destructive)}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:var(--shadow-xs);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + 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)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--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)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.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)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>\*\]\:focus-visible\:relative>:focus-visible{position:relative}.\[\&\>\*\]\:focus-visible\:z-10>:focus-visible{z-index:10}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equal-experts/kuat-react",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -26,12 +26,17 @@
|
|
|
26
26
|
"import": "./dist/badge.js",
|
|
27
27
|
"types": "./dist/badge.d.ts"
|
|
28
28
|
},
|
|
29
|
+
"./button-group": {
|
|
30
|
+
"import": "./dist/button-group.js",
|
|
31
|
+
"types": "./dist/button-group.d.ts"
|
|
32
|
+
},
|
|
29
33
|
"./styles": "./dist/style.css",
|
|
30
34
|
"./docs/*": "./docs/*"
|
|
31
35
|
},
|
|
32
36
|
"files": [
|
|
33
37
|
"dist",
|
|
34
38
|
"docs",
|
|
39
|
+
"scripts",
|
|
35
40
|
"README.md"
|
|
36
41
|
],
|
|
37
42
|
"keywords": [
|
|
@@ -64,7 +69,7 @@
|
|
|
64
69
|
"typescript": "^5.3.3",
|
|
65
70
|
"vite": "^5.1.0",
|
|
66
71
|
"vite-plugin-dts": "^3.6.4",
|
|
67
|
-
"@equal-experts/kuat-core": "0.2.
|
|
72
|
+
"@equal-experts/kuat-core": "0.2.6"
|
|
68
73
|
},
|
|
69
74
|
"peerDependencies": {
|
|
70
75
|
"react": "^18.2.0",
|
|
@@ -99,6 +104,7 @@
|
|
|
99
104
|
},
|
|
100
105
|
"scripts": {
|
|
101
106
|
"copy-docs": "node scripts/copy-docs.js",
|
|
107
|
+
"setup-docs": "node scripts/setup-docs.js",
|
|
102
108
|
"build": "vite build",
|
|
103
109
|
"dev": "vite build --watch",
|
|
104
110
|
"lint": "eslint . --max-warnings 0"
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
// Get __dirname equivalent in ES modules
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
// Paths
|
|
10
|
+
const docsSource = path.join(__dirname, '../../../docs/agent');
|
|
11
|
+
const docsTarget = path.join(__dirname, '../docs');
|
|
12
|
+
|
|
13
|
+
// Clean target directory
|
|
14
|
+
if (fs.existsSync(docsTarget)) {
|
|
15
|
+
fs.rmSync(docsTarget, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Create target directory
|
|
19
|
+
fs.mkdirSync(docsTarget, { recursive: true });
|
|
20
|
+
|
|
21
|
+
// Copy design docs
|
|
22
|
+
console.log('Copying design documentation...');
|
|
23
|
+
fs.cpSync(
|
|
24
|
+
path.join(docsSource, 'design'),
|
|
25
|
+
path.join(docsTarget, 'design'),
|
|
26
|
+
{ recursive: true }
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
// Copy component guidelines
|
|
30
|
+
console.log('Copying component guidelines...');
|
|
31
|
+
fs.mkdirSync(path.join(docsTarget, 'components'), { recursive: true });
|
|
32
|
+
fs.copyFileSync(
|
|
33
|
+
path.join(docsSource, 'technical/component-guidelines.md'),
|
|
34
|
+
path.join(docsTarget, 'components/guidelines.md')
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
// Copy content guidelines
|
|
38
|
+
console.log('Copying content guidelines...');
|
|
39
|
+
fs.cpSync(
|
|
40
|
+
path.join(docsSource, 'content'),
|
|
41
|
+
path.join(docsTarget, 'content'),
|
|
42
|
+
{ recursive: true }
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// Create README
|
|
46
|
+
console.log('Creating docs README...');
|
|
47
|
+
const readme = `# Agent Documentation
|
|
48
|
+
|
|
49
|
+
This directory contains AI-friendly documentation for the Kuat Design System React library.
|
|
50
|
+
|
|
51
|
+
## Contents
|
|
52
|
+
|
|
53
|
+
- **[Design System](./design/)** - Colors, typography, spacing, borders
|
|
54
|
+
- [Colours](./design/colours.md) - Brand colors and usage guidelines
|
|
55
|
+
- [Typography](./design/typography.md) - Font scales and text styling
|
|
56
|
+
- [Spacing](./design/spacing.md) - Spacing system and patterns
|
|
57
|
+
- [Borders](./design/borders.md) - Border usage and specifications
|
|
58
|
+
- [Design System Overview](./design/design-system.md) - Complete design system guide
|
|
59
|
+
|
|
60
|
+
- **[Component Guidelines](./components/guidelines.md)** - Component development patterns and best practices
|
|
61
|
+
|
|
62
|
+
- **[Content Guidelines](./content/)** - Content writing guidelines
|
|
63
|
+
- [Content Foundations](./content/content-foundations.md) - Universal content principles
|
|
64
|
+
- [Marketing & Sales](./content/content-marketing-sales.md) - Marketing content guidelines
|
|
65
|
+
- [Product & UX](./content/content-product-ux.md) - Product interface writing
|
|
66
|
+
|
|
67
|
+
## Purpose
|
|
68
|
+
|
|
69
|
+
These docs are optimized for LLM consumption and provide context for:
|
|
70
|
+
- Understanding the design system
|
|
71
|
+
- Using components correctly
|
|
72
|
+
- Maintaining brand consistency
|
|
73
|
+
- Writing appropriate content
|
|
74
|
+
|
|
75
|
+
## Version
|
|
76
|
+
|
|
77
|
+
These docs are synchronized with @equal-experts/kuat-react.
|
|
78
|
+
|
|
79
|
+
## Source
|
|
80
|
+
|
|
81
|
+
Documentation is sourced from the [Kuat monorepo](https://github.com/equal-experts/kuat) and copied during the build process.
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
fs.writeFileSync(path.join(docsTarget, 'README.md'), readme);
|
|
85
|
+
|
|
86
|
+
console.log('✓ Documentation copied successfully!');
|
|
87
|
+
console.log(` Target: ${docsTarget}`);
|
|
88
|
+
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
// Get __dirname equivalent in ES modules
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Find the consuming app's root directory by looking for package.json
|
|
11
|
+
* in parent directories starting from node_modules/@equal-experts/kuat-react
|
|
12
|
+
*/
|
|
13
|
+
function findAppRoot(startDir) {
|
|
14
|
+
let currentDir = startDir;
|
|
15
|
+
|
|
16
|
+
// First, go up from node_modules/@equal-experts/kuat-react to node_modules
|
|
17
|
+
// Then go up to the app root
|
|
18
|
+
while (currentDir !== path.dirname(currentDir)) {
|
|
19
|
+
const packageJsonPath = path.join(currentDir, 'package.json');
|
|
20
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
21
|
+
// Check if this is the app root (not the package itself)
|
|
22
|
+
const nodeModulesPath = path.join(currentDir, 'node_modules');
|
|
23
|
+
if (!fs.existsSync(nodeModulesPath) || !currentDir.includes('node_modules')) {
|
|
24
|
+
// This might be the app root, but let's check if we're in node_modules
|
|
25
|
+
// If we're in node_modules, the app root is typically 2 levels up
|
|
26
|
+
if (currentDir.includes('node_modules')) {
|
|
27
|
+
// Go up from node_modules/@equal-experts/kuat-react to app root
|
|
28
|
+
let checkDir = currentDir;
|
|
29
|
+
while (checkDir !== path.dirname(checkDir)) {
|
|
30
|
+
const checkPackageJson = path.join(checkDir, 'package.json');
|
|
31
|
+
const checkNodeModules = path.join(checkDir, 'node_modules');
|
|
32
|
+
if (fs.existsSync(checkPackageJson) && fs.existsSync(checkNodeModules)) {
|
|
33
|
+
return checkDir;
|
|
34
|
+
}
|
|
35
|
+
checkDir = path.dirname(checkDir);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return currentDir;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
currentDir = path.dirname(currentDir);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Fallback: assume we're in node_modules/@equal-experts/kuat-react
|
|
45
|
+
// App root should be 3 levels up (node_modules/@equal-experts/kuat-react -> node_modules/@equal-experts -> node_modules -> app root)
|
|
46
|
+
let fallbackDir = startDir;
|
|
47
|
+
for (let i = 0; i < 3; i++) {
|
|
48
|
+
fallbackDir = path.dirname(fallbackDir);
|
|
49
|
+
}
|
|
50
|
+
return fallbackDir;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Setup agent documentation by copying from package to .cursor/rules/kuat-docs/
|
|
55
|
+
*/
|
|
56
|
+
function setupDocs() {
|
|
57
|
+
try {
|
|
58
|
+
// Get the package directory (where this script is located)
|
|
59
|
+
const packageDir = path.dirname(__dirname);
|
|
60
|
+
const docsSource = path.join(packageDir, 'docs');
|
|
61
|
+
|
|
62
|
+
// Check if docs exist in the package
|
|
63
|
+
if (!fs.existsSync(docsSource)) {
|
|
64
|
+
console.error('❌ Error: Documentation not found in package.');
|
|
65
|
+
console.error(` Expected location: ${docsSource}`);
|
|
66
|
+
console.error(' Make sure the package is built and docs are included.');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Find the consuming app's root
|
|
71
|
+
const appRoot = findAppRoot(packageDir);
|
|
72
|
+
const docsTarget = path.join(appRoot, '.cursor', 'rules', 'kuat-docs');
|
|
73
|
+
|
|
74
|
+
// Create .cursor/rules directory if it doesn't exist
|
|
75
|
+
const cursorRulesDir = path.dirname(docsTarget);
|
|
76
|
+
if (!fs.existsSync(cursorRulesDir)) {
|
|
77
|
+
fs.mkdirSync(cursorRulesDir, { recursive: true });
|
|
78
|
+
console.log(`✓ Created directory: ${cursorRulesDir}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Clean existing docs if they exist
|
|
82
|
+
if (fs.existsSync(docsTarget)) {
|
|
83
|
+
fs.rmSync(docsTarget, { recursive: true });
|
|
84
|
+
console.log(`✓ Cleaned existing docs: ${docsTarget}`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Create target directory
|
|
88
|
+
fs.mkdirSync(docsTarget, { recursive: true });
|
|
89
|
+
|
|
90
|
+
// Copy all docs recursively
|
|
91
|
+
console.log('📚 Copying agent documentation...');
|
|
92
|
+
console.log(` From: ${docsSource}`);
|
|
93
|
+
console.log(` To: ${docsTarget}`);
|
|
94
|
+
|
|
95
|
+
fs.cpSync(docsSource, docsTarget, { recursive: true });
|
|
96
|
+
|
|
97
|
+
// Create a README in the destination explaining the source
|
|
98
|
+
const readmeContent = `# Kuat Design System - Agent Documentation
|
|
99
|
+
|
|
100
|
+
This directory contains AI-friendly documentation for the Kuat Design System.
|
|
101
|
+
|
|
102
|
+
## Source
|
|
103
|
+
|
|
104
|
+
These docs were copied from \`@equal-experts/kuat-react\` package.
|
|
105
|
+
|
|
106
|
+
**Version:** ${getPackageVersion(packageDir)}
|
|
107
|
+
**Last Updated:** ${new Date().toISOString()}
|
|
108
|
+
|
|
109
|
+
## Contents
|
|
110
|
+
|
|
111
|
+
- **[Design System](./design/)** - Colors, typography, spacing, borders, layouts
|
|
112
|
+
- **[Component Guidelines](./components/)** - Component development patterns
|
|
113
|
+
- **[Content Guidelines](./content/)** - Content writing guidelines
|
|
114
|
+
|
|
115
|
+
## Purpose
|
|
116
|
+
|
|
117
|
+
These docs are optimized for LLM consumption and provide context for:
|
|
118
|
+
- Understanding the design system
|
|
119
|
+
- Using components correctly
|
|
120
|
+
- Maintaining brand consistency
|
|
121
|
+
- Writing appropriate content
|
|
122
|
+
|
|
123
|
+
## Updating
|
|
124
|
+
|
|
125
|
+
To update these docs after installing a new version of \`@equal-experts/kuat-react\`, run:
|
|
126
|
+
|
|
127
|
+
\`\`\`bash
|
|
128
|
+
pnpm exec @equal-experts/kuat-react setup-docs
|
|
129
|
+
\`\`\`
|
|
130
|
+
|
|
131
|
+
Or if you have the package installed locally:
|
|
132
|
+
|
|
133
|
+
\`\`\`bash
|
|
134
|
+
cd node_modules/@equal-experts/kuat-react && pnpm setup-docs
|
|
135
|
+
\`\`\`
|
|
136
|
+
`;
|
|
137
|
+
|
|
138
|
+
fs.writeFileSync(path.join(docsTarget, 'README.md'), readmeContent);
|
|
139
|
+
|
|
140
|
+
console.log('✓ Documentation copied successfully!');
|
|
141
|
+
console.log(`\n📖 Documentation is now available at: ${docsTarget}`);
|
|
142
|
+
console.log(' You can reference these files in your Cursor rules or LLM context.\n');
|
|
143
|
+
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error('❌ Error setting up documentation:');
|
|
146
|
+
console.error(error.message);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Get package version from package.json
|
|
153
|
+
*/
|
|
154
|
+
function getPackageVersion(packageDir) {
|
|
155
|
+
try {
|
|
156
|
+
const packageJsonPath = path.join(packageDir, 'package.json');
|
|
157
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
158
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
159
|
+
return packageJson.version || 'unknown';
|
|
160
|
+
}
|
|
161
|
+
} catch (error) {
|
|
162
|
+
// Ignore errors
|
|
163
|
+
}
|
|
164
|
+
return 'unknown';
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Run the setup
|
|
168
|
+
setupDocs();
|
|
169
|
+
|