quickit-ui 0.1.20 → 0.1.21

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 CHANGED
@@ -17,13 +17,13 @@ import "quickit-ui/styles.css";
17
17
  Si tu app también usa utilidades propias de Tailwind con `dark:`, declara esto en tu CSS global:
18
18
 
19
19
  ```css
20
- @import "tailwindcss";
21
20
  @import "quickit-ui/styles.css";
21
+ @import "tailwindcss";
22
22
 
23
23
  @custom-variant dark (&:where(.dark, .dark *));
24
24
  ```
25
25
 
26
- Eso hace que tu app y Quickit reaccionen a la misma clase `dark`.
26
+ Con Tailwind 4, ese orden evita conflictos entre la hoja de estilos de Quickit y las utilidades de tu app. Además hace que tu app y Quickit reaccionen a la misma clase `dark`.
27
27
 
28
28
  ## Uso rápido
29
29
 
@@ -60,7 +60,32 @@ export default function App() {
60
60
  }
61
61
  ```
62
62
 
63
- Si prefieres que Quickit gestione el toggle y la persistencia, usa `QuickitThemeProvider` con `useQuickitThemeController`:
63
+ `useQuickitTheme()` solo lee el tema efectivo actual (`light` o `dark`).
64
+
65
+ Si prefieres que Quickit gestione el toggle, la persistencia y el modo `system`, usa `QuickitThemeProvider` con `useQuickitThemeController`. No hace falta envolver además con `QuickitProvider`, porque `QuickitThemeProvider` ya lo incluye internamente.
66
+
67
+ Arranque recomendado:
68
+
69
+ ```jsx
70
+ import { StrictMode } from "react";
71
+ import { createRoot } from "react-dom/client";
72
+ import "./index.css";
73
+ import App from "./App.jsx";
74
+ import { QuickitThemeProvider } from "quickit-ui";
75
+
76
+ createRoot(document.getElementById("root")).render(
77
+ <StrictMode>
78
+ <QuickitThemeProvider
79
+ defaultTheme="system"
80
+ storageKey="ava-quickit-theme"
81
+ >
82
+ <App />
83
+ </QuickitThemeProvider>
84
+ </StrictMode>,
85
+ );
86
+ ```
87
+
88
+ Controlador persistente:
64
89
 
65
90
  ```jsx
66
91
  import "quickit-ui/styles.css";
@@ -104,12 +129,51 @@ export default function App() {
104
129
  }
105
130
  ```
106
131
 
132
+ Patrón real con `Switch`:
133
+
134
+ ```jsx
135
+ import {
136
+ QuickitThemeProvider,
137
+ Switch,
138
+ Tooltip,
139
+ useQuickitThemeController,
140
+ } from "quickit-ui";
141
+
142
+ function ToggleTheme() {
143
+ const { resolvedTheme, toggleTheme } = useQuickitThemeController();
144
+
145
+ return (
146
+ <Tooltip content={`Alternar tema (actual: ${resolvedTheme})`}>
147
+ <Switch
148
+ color="brand"
149
+ size="md"
150
+ checked={resolvedTheme === "dark"}
151
+ onCheckedChange={() => toggleTheme()}
152
+ />
153
+ </Tooltip>
154
+ );
155
+ }
156
+
157
+ export function App() {
158
+ return (
159
+ <QuickitThemeProvider
160
+ defaultTheme="system"
161
+ storageKey="ava-quickit-theme"
162
+ >
163
+ <ToggleTheme />
164
+ </QuickitThemeProvider>
165
+ );
166
+ }
167
+ ```
168
+
107
169
  Notas:
108
170
 
109
171
  - el storage key por defecto es `quickit-ui-theme`
110
172
  - `defaultTheme` ahora soporta `system | light | dark`
111
173
  - `QuickitThemeProvider` aplica la clase `dark` sobre `document.documentElement`
174
+ - `QuickitThemeProvider` ya envuelve a `QuickitProvider`
112
175
  - puedes sobrescribir el storage key con `storageKey`
176
+ - `useQuickitTheme()` solo lee el tema resuelto actual
113
177
  - `useQuickitThemeController()` expone `theme`, `resolvedTheme`, `systemTheme`, `setTheme` y `toggleTheme`
114
178
  - `theme` es la preferencia persistida; `resolvedTheme` es el modo que Quickit está aplicando realmente
115
179
  - si usas clases propias como `dark:bg-zinc-950`, añade `@custom-variant dark (&:where(.dark, .dark *));` a tu CSS global
@@ -135,39 +199,6 @@ function Shell() {
135
199
  }
136
200
  ```
137
201
 
138
- Patrón con `Switch`:
139
-
140
- ```jsx
141
- import {
142
- QuickitThemeProvider,
143
- Switch,
144
- Tooltip,
145
- useQuickitThemeController,
146
- } from "quickit-ui";
147
-
148
- function ToggleTheme() {
149
- const { resolvedTheme, theme, toggleTheme } = useQuickitThemeController();
150
-
151
- return (
152
- <Tooltip content="Alternar tema">
153
- <Switch
154
- color="brand"
155
- checked={resolvedTheme === "dark"}
156
- onCheckedChange={toggleTheme}
157
- />
158
- </Tooltip>
159
- );
160
- }
161
-
162
- export function App() {
163
- return (
164
- <QuickitThemeProvider storageKey="ava-quickit-theme">
165
- <ToggleTheme />
166
- </QuickitThemeProvider>
167
- );
168
- }
169
- ```
170
-
171
202
  También puedes controlar el focus ring y el efecto de presión globalmente desde el provider:
172
203
 
173
204
  ```jsx