asheeui 0.6.13 → 0.6.15

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.
Files changed (2) hide show
  1. package/README.md +210 -0
  2. package/package.json +27 -2
package/README.md ADDED
@@ -0,0 +1,210 @@
1
+ # asheeui
2
+
3
+ A config-driven React component library built on Tailwind CSS v4. Accessible, styled components with a unified configuration system — set defaults once, override them anywhere.
4
+
5
+ ## Features
6
+
7
+ - **Config-driven** — Define theme, variant, color, and radius defaults in one place (`asheeui.config.ts`) and override at the component or instance level.
8
+ - **Tailwind CSS v4** — Built on the latest Tailwind with CSS-variable-driven theming.
9
+ - **Light & dark themes** — Ships with built-in `light`, `dark`, and `system` themes, plus full support for custom themes.
10
+ - **Accessible components** — Every component is designed with accessibility in mind.
11
+ - **Runtime theming** — Switch themes on the fly with the `useTheme` hook; preferences persist via `localStorage`.
12
+ - **TypeScript-first** — Fully typed config, theme registry, and component props.
13
+
14
+ ## Requirements
15
+
16
+ - React 18 or newer
17
+ - Tailwind CSS v4
18
+ - Node.js 18 or newer
19
+
20
+ ## Installation
21
+
22
+ The fastest way to get started is with the CLI. Run this in your project root:
23
+
24
+ ```bash
25
+ npx asheeui@latest init
26
+ ```
27
+
28
+ The CLI detects your framework, installs dependencies, adds the provider to your root layout, and configures Tailwind.
29
+
30
+ ### Manual setup
31
+
32
+ Install the package:
33
+
34
+ ```bash
35
+ npm install asheeui@latest
36
+ ```
37
+
38
+ Add the styles import to your global CSS file (must come **after** the Tailwind import):
39
+
40
+ ```css
41
+ @import "tailwindcss";
42
+ @import "asheeui/styles";
43
+ ```
44
+
45
+ Wrap your app with `AsheeUIProvider`:
46
+
47
+ ```jsx
48
+ import { AsheeUIProvider } from "asheeui";
49
+
50
+ export default function RootLayout({ children }) {
51
+ return (
52
+ <html suppressHydrationWarning>
53
+ <body>
54
+ <AsheeUIProvider>{children}</AsheeUIProvider>
55
+ </body>
56
+ </html>
57
+ );
58
+ }
59
+ ```
60
+
61
+ > **Note:** `suppressHydrationWarning` is required on the `<html>` element to prevent hydration mismatches from theme switching.
62
+
63
+ ### Framework guides
64
+
65
+ - [Next.js](/docs/installation/nextjs) — App Router and Pages Router
66
+ - [TanStack Start](/docs/installation/tanstack-start) — Full-stack React with TanStack Router
67
+ - [Vite + React](/docs/installation/vite) — Lightweight React SPA
68
+
69
+ ## Quick start
70
+
71
+ Render a component:
72
+
73
+ ```jsx
74
+ import { Button } from "asheeui";
75
+
76
+ function App() {
77
+ return <Button>Hello AsheeUI</Button>;
78
+ }
79
+ ```
80
+
81
+ You should see a styled button using the default theme.
82
+
83
+ ## Configuration
84
+
85
+ AsheeUI is configured through an optional `asheeui.config.ts` file at your project root. Sensible defaults apply with no config at all.
86
+
87
+ ```ts
88
+ // asheeui.config.ts
89
+ import type { ExternalConfig } from "asheeui";
90
+
91
+ export const config: ExternalConfig = {
92
+ defaultTheme: "system", // "light" | "dark" | "system"
93
+ defaultVariant: "solid", // "solid" | "ghost" | "bordered" | "faded" | "underlined"
94
+ defaultColor: "primary", // "none" | "default" | "primary" | "secondary" | "danger" | "warning" | "success"
95
+ defaultRadius: "md", // "none" | "xs" | "sm" | "md" | "lg" | "xl" | "full"
96
+ };
97
+ ```
98
+
99
+ Values are resolved in this order (highest priority first):
100
+
101
+ 1. **Instance prop** — `<Button variant="solid" />`
102
+ 2. **Component config** — `components.button.variant`
103
+ 3. **Theme default** — top-level `defaultVariant`, `defaultColor`, etc.
104
+ 4. **Built-in fallback** — the library's internal default
105
+
106
+ ### Per-component defaults
107
+
108
+ Set defaults for specific components while keeping global defaults for everything else:
109
+
110
+ ```ts
111
+ export const config: ExternalConfig = {
112
+ defaultVariant: "bordered", // applies to all components
113
+ components: {
114
+ button: { variant: "solid" }, // overrides for Button only
115
+ input: { variant: "bordered", radius: "sm" },
116
+ toast: { variant: "bordered", placement: "bottom-right" },
117
+ },
118
+ };
119
+ ```
120
+
121
+ See the [Configuration docs](/docs/configuration) for the full reference.
122
+
123
+ ## Theming
124
+
125
+ AsheeUI's theming system is CSS-variable-driven. It ships with `light`, `dark`, and `system` themes, and you can override tokens or define entirely custom themes.
126
+
127
+ ### Switch themes at runtime
128
+
129
+ ```jsx
130
+ import { useTheme } from "asheeui";
131
+
132
+ function ThemeSwitcher() {
133
+ const { theme, setTheme, toggleTheme } = useTheme();
134
+
135
+ return (
136
+ <div>
137
+ <p>Current theme: {theme}</p>
138
+ <button onClick={() => setTheme("dark")}>Dark</button>
139
+ <button onClick={() => setTheme("light")}>Light</button>
140
+ <button onClick={toggleTheme}>Toggle</button>
141
+ </div>
142
+ );
143
+ }
144
+ ```
145
+
146
+ `useTheme` returns:
147
+
148
+ | Property | Type | Description |
149
+ |---|---|---|
150
+ | `theme` | `ThemeSelection` | Current selected theme (`"light"` \| `"dark"` \| `"system"`) |
151
+ | `resolvedTheme` | `ThemeName` | Actual resolved theme (after system fallback) |
152
+ | `setTheme` | `(theme: ThemeSelection) => void` | Set the active theme |
153
+ | `toggleTheme` | `() => void` | Cycle to the next theme in sequence |
154
+ | `availableThemes` | `readonly string[]` | All registered theme names |
155
+
156
+ Theme preference persists across page reloads via `localStorage`.
157
+
158
+ ### Override a built-in theme
159
+
160
+ ```ts
161
+ export const config: ExternalConfig = {
162
+ color: {
163
+ light: { primary: "#7c3aed", background: "#faf5ff" },
164
+ dark: { primary: "#8b5cf6", border: "#3b3b3b" },
165
+ },
166
+ };
167
+ ```
168
+
169
+ Only the tokens you specify are overridden — everything else stays at the built-in default.
170
+
171
+ ### Add a custom theme
172
+
173
+ Extend `light` or `dark` and override only what you need:
174
+
175
+ ```ts
176
+ export const config: ExternalConfig = {
177
+ defaultTheme: "company-red",
178
+ color: {
179
+ "company-red": {
180
+ extends: "dark",
181
+ background: "#1a0505",
182
+ foreground: "#fef2f2",
183
+ primary: "#dc2626",
184
+ // ...other tokens inherit from dark
185
+ },
186
+ },
187
+ };
188
+ ```
189
+
190
+ > **TypeScript:** Register custom theme names so `useTheme` and `setTheme` recognize them:
191
+ >
192
+ > ```ts
193
+ > declare module "asheeui" {
194
+ > interface AsheeColorRegistry {
195
+ > "company-red": true;
196
+ > }
197
+ > }
198
+ > ```
199
+
200
+ See the [Theming docs](/docs/theming) for the full token list.
201
+
202
+ ## Links
203
+
204
+ - [Documentation](/docs)
205
+ - [Configuration reference](/docs/configuration)
206
+ - [Theming reference](/docs/theming)
207
+
208
+ ## License
209
+
210
+ MIT
package/package.json CHANGED
@@ -1,10 +1,34 @@
1
1
  {
2
2
  "name": "asheeui",
3
- "version": "0.6.13",
3
+ "version": "0.6.15",
4
+ "description": "Accessible and customizable React primitives engineered with Tailwind CSS.",
5
+ "author": "Ashee Softworks <asheesoftworks@gmail.com>",
6
+ "homepage": "https://asheeui.com",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/AsheeSoftworks/AsheeUI.git",
10
+ "directory": "packages/ui"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/AsheeSoftworks/AsheeUI/issues"
14
+ },
15
+ "keywords": [
16
+ "react",
17
+ "react-components",
18
+ "component-library",
19
+ "design-system",
20
+ "ui-kit",
21
+ "tailwindcss",
22
+ "tailwind",
23
+ "typescript",
24
+ "accessible",
25
+ "a11y",
26
+ "floating-ui",
27
+ "headless"
28
+ ],
4
29
  "type": "module",
5
30
  "main": "./dist/index.js",
6
31
  "types": "./dist/index.d.ts",
7
- "style": "./src/index.css",
8
32
  "exports": {
9
33
  ".": {
10
34
  "types": "./dist/index.d.ts",
@@ -18,6 +42,7 @@
18
42
  "./styles.css": "./dist/index.css"
19
43
  },
20
44
  "publishConfig": {
45
+ "provenance": true,
21
46
  "style": "./dist/index.css"
22
47
  },
23
48
  "files": [