flysoft-react-ui 1.3.3 → 1.4.1
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 +4 -4
- package/claude/install-skill.mjs +86 -0
- package/claude/skills/flysoft-ui/SKILL.md +78 -0
- package/claude/skills/flysoft-ui/patterns.md +352 -0
- package/claude/skills/flysoft-ui/references/display.md +163 -0
- package/claude/skills/flysoft-ui/references/forms.md +203 -0
- package/claude/skills/flysoft-ui/references/hooks.md +374 -0
- package/claude/skills/flysoft-ui/references/layout.md +260 -0
- package/claude/skills/flysoft-ui/references/services.md +194 -0
- package/claude/skills/flysoft-ui/references/templates.md +155 -0
- package/claude/skills/flysoft-ui/references/theming.md +256 -0
- package/dist/components/layout/Collection.d.ts +2 -0
- package/dist/components/layout/Collection.d.ts.map +1 -1
- package/dist/contexts/AppLayoutContext.d.ts +13 -0
- package/dist/contexts/AppLayoutContext.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
<!-- Generado desde los tipos de flysoft-react-ui@1.4.1. No editar a mano. -->
|
|
2
|
+
<!-- Regenerar con: npm run docs:skill -->
|
|
3
|
+
|
|
4
|
+
# apiClient, helpers e interfaces
|
|
5
|
+
|
|
6
|
+
Cliente HTTP, funciones utilitarias y las interfaces compartidas.
|
|
7
|
+
|
|
8
|
+
## Tipos auxiliares
|
|
9
|
+
|
|
10
|
+
### `apiClient`
|
|
11
|
+
|
|
12
|
+
| Método | Devuelve | Descripción |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `setTokenProvider(provider: TokenProvider \| undefined)` | `void` | Establece el proveedor de token que se usará en todas las peticiones |
|
|
15
|
+
| `clearTokenProvider()` | `void` | Limpia el proveedor de token |
|
|
16
|
+
| `updateDefaults(config: ApiClientConfig)` | `void` | Actualiza la configuración por defecto del cliente |
|
|
17
|
+
| `get<T = unknown>(options: GetRequestOptions)` | `Promise<T>` | Realiza una petición GET |
|
|
18
|
+
| `post<T = unknown>(options: PostRequestOptions)` | `Promise<T>` | Realiza una petición POST |
|
|
19
|
+
| `put<T = unknown>(options: PutRequestOptions)` | `Promise<T>` | Realiza una petición PUT |
|
|
20
|
+
| `patch<T = unknown>(options: PatchRequestOptions)` | `Promise<T>` | Realiza una petición PATCH |
|
|
21
|
+
| `del<T = unknown>(options: DeleteRequestOptions)` | `Promise<T>` | Realiza una petición DELETE |
|
|
22
|
+
| `getFile(options: FileRequestOptions)` | `Promise<FileResponse>` | Obtiene un archivo como Blob |
|
|
23
|
+
| `getFileAsUrl(options: FileRequestOptions)` | `Promise<string>` | Obtiene un archivo y retorna su URL como objeto |
|
|
24
|
+
| `openFile(options: FileRequestOptions)` | `Promise<void>` | Abre un archivo en una nueva ventana |
|
|
25
|
+
| `downloadFile(options: FileRequestOptions)` | `Promise<void>` | Descarga un archivo |
|
|
26
|
+
| `uploadFile<T = unknown>(options: UploadFileOptions)` | `Promise<T>` | Sube uno o más archivos usando FormData |
|
|
27
|
+
|
|
28
|
+
**Formas de los parámetros**
|
|
29
|
+
|
|
30
|
+
`ApiClientConfig`
|
|
31
|
+
|
|
32
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
33
|
+
|---|---|---|---|---|
|
|
34
|
+
| `baseURL` | `string` | | — | |
|
|
35
|
+
| `timeout` | `number` | | — | |
|
|
36
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
37
|
+
|
|
38
|
+
`DeleteRequestOptions`
|
|
39
|
+
|
|
40
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
41
|
+
|---|---|---|---|---|
|
|
42
|
+
| `url` | `string` | **sí** | — | |
|
|
43
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
44
|
+
|
|
45
|
+
`FileRequestOptions`
|
|
46
|
+
|
|
47
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
| `url` | `string` | **sí** | — | |
|
|
50
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
51
|
+
|
|
52
|
+
`GetRequestOptions`
|
|
53
|
+
|
|
54
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
55
|
+
|---|---|---|---|---|
|
|
56
|
+
| `url` | `string` | **sí** | — | |
|
|
57
|
+
| `params` | `Record<string, unknown>` | | — | |
|
|
58
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
59
|
+
|
|
60
|
+
`PatchRequestOptions`
|
|
61
|
+
|
|
62
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
63
|
+
|---|---|---|---|---|
|
|
64
|
+
| `url` | `string` | **sí** | — | |
|
|
65
|
+
| `body` | `unknown` | | — | |
|
|
66
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
67
|
+
|
|
68
|
+
`PostRequestOptions`
|
|
69
|
+
|
|
70
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
71
|
+
|---|---|---|---|---|
|
|
72
|
+
| `url` | `string` | **sí** | — | |
|
|
73
|
+
| `body` | `unknown` | | — | |
|
|
74
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
75
|
+
|
|
76
|
+
`PutRequestOptions`
|
|
77
|
+
|
|
78
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
79
|
+
|---|---|---|---|---|
|
|
80
|
+
| `url` | `string` | **sí** | — | |
|
|
81
|
+
| `body` | `unknown` | | — | |
|
|
82
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
83
|
+
|
|
84
|
+
`UploadFileOptions`
|
|
85
|
+
|
|
86
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
87
|
+
|---|---|---|---|---|
|
|
88
|
+
| `url` | `string` | **sí** | — | |
|
|
89
|
+
| `files` | `FileList \| File[]` | **sí** | — | |
|
|
90
|
+
| `headers` | `{ paramName?: string; [key: string]: unknown; }` | | — | |
|
|
91
|
+
|
|
92
|
+
### `ApiClientConfig`
|
|
93
|
+
|
|
94
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
95
|
+
|---|---|---|---|---|
|
|
96
|
+
| `baseURL` | `string` | | — | |
|
|
97
|
+
| `timeout` | `number` | | — | |
|
|
98
|
+
| `headers` | `Record<string, string>` | | — | |
|
|
99
|
+
|
|
100
|
+
### `clearApiClientTokenProvider`
|
|
101
|
+
|
|
102
|
+
Limpia el proveedor de token global
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
clearApiClientTokenProvider: () => void
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### `createApiClient`
|
|
109
|
+
|
|
110
|
+
Crea una nueva instancia del cliente de API
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
createApiClient: (config?: ApiClientConfig) => ApiClientService
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### `currencyFormat`
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
currencyFormat: (value: number) => string
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### `getErrorMessage`
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
getErrorMessage: (error: any) => string
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### `getInitialLetters`
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
getInitialLetters: (text: string) => string
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### `getQueryString`
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
getQueryString: (params: URLSearchParams, newParams: any) => string
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### `nameValueArrayToObject`
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
nameValueArrayToObject: <T>(nameValueArray: Array<NameValueInterface<T>>) => {}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### `NameValueInterface`
|
|
147
|
+
|
|
148
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
149
|
+
|---|---|---|---|---|
|
|
150
|
+
| `name` | `string` | **sí** | — | |
|
|
151
|
+
| `value` | `T` | **sí** | — | |
|
|
152
|
+
| `extras` | `any` | | — | |
|
|
153
|
+
|
|
154
|
+
### `objectToQueryString`
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
objectToQueryString: (source: any) => string
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### `PaginationInterface`
|
|
161
|
+
|
|
162
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
163
|
+
|---|---|---|---|---|
|
|
164
|
+
| `list` | `Array<T>` | **sí** | — | |
|
|
165
|
+
| `limit` | `number` | **sí** | — | |
|
|
166
|
+
| `page` | `number` | **sí** | — | |
|
|
167
|
+
| `pages` | `number` | **sí** | — | |
|
|
168
|
+
| `total` | `number` | **sí** | — | |
|
|
169
|
+
|
|
170
|
+
### `promiseMapper`
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
promiseMapper: <T, K>(promise: Promise<any>, mapperFunction: (object: T) => K) => Promise<K | K[] | PaginationInterface<K>>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### `queryStringToObject`
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
queryStringToObject: (params: string) => {}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### `RegularExpressions`
|
|
183
|
+
|
|
184
|
+
```ts
|
|
185
|
+
RegularExpressions: { email: RegExp; dateString: RegExp; password: ({ minLength, lowerCaseMin, upperCaseMin, digitsMin, specialCharMin }: { minLength?: number | undefined; lowerCaseMin?: number | undefined; upperCaseMin?: number | undefined; digitsMin?: number | undefined; specialCharMin?: number | undefined; }) => RegExp; }
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### `setApiClientTokenProvider`
|
|
189
|
+
|
|
190
|
+
Establece el proveedor de token global para el cliente compartido
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
setApiClientTokenProvider: (provider: TokenProvider | undefined) => void
|
|
194
|
+
```
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<!-- Generado desde los tipos de flysoft-react-ui@1.4.1. No editar a mano. -->
|
|
2
|
+
<!-- Regenerar con: npm run docs:skill -->
|
|
3
|
+
|
|
4
|
+
# Templates
|
|
5
|
+
|
|
6
|
+
Componentes de página pre-armados. Resuelven un caso completo; si necesitás desviarte del caso, componé con los de `layout` y `forms` en vez de peleárselo.
|
|
7
|
+
|
|
8
|
+
## LoginForm
|
|
9
|
+
|
|
10
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
11
|
+
|---|---|---|---|---|
|
|
12
|
+
| `onSubmit` | `(data: { email: string; password: string }) => void` | | — | |
|
|
13
|
+
| `loading` | `boolean` | | `false` | |
|
|
14
|
+
| `error` | `string` | | — | |
|
|
15
|
+
| `className` | `string` | | `""` | |
|
|
16
|
+
| `compact` | `boolean` | | `false` | |
|
|
17
|
+
|
|
18
|
+
## RegistrationForm
|
|
19
|
+
|
|
20
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
21
|
+
|---|---|---|---|---|
|
|
22
|
+
| `onSubmit` | `(data: { firstName: string; lastName: string; email: string; password: string; confirmPassword: string; }) => void` | | — | |
|
|
23
|
+
| `loading` | `boolean` | | `false` | |
|
|
24
|
+
| `error` | `string` | | — | |
|
|
25
|
+
| `className` | `string` | | `""` | |
|
|
26
|
+
| `compact` | `boolean` | | `false` | |
|
|
27
|
+
|
|
28
|
+
## ContactForm
|
|
29
|
+
|
|
30
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
31
|
+
|---|---|---|---|---|
|
|
32
|
+
| `onSubmit` | `(data: { name: string; email: string; subject: string; message: string; }) => void` | | — | |
|
|
33
|
+
| `loading` | `boolean` | | `false` | |
|
|
34
|
+
| `success` | `boolean` | | `false` | |
|
|
35
|
+
| `error` | `string` | | — | |
|
|
36
|
+
| `className` | `string` | | `""` | |
|
|
37
|
+
| `compact` | `boolean` | | `false` | |
|
|
38
|
+
|
|
39
|
+
## DashboardLayout
|
|
40
|
+
|
|
41
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| `title` | `string` | **sí** | — | |
|
|
44
|
+
| `subtitle` | `string` | | — | |
|
|
45
|
+
| `stats` | `DashboardStat[]` | | `[]` | |
|
|
46
|
+
| `actions` | `React.ReactNode` | | — | |
|
|
47
|
+
| `children` | `React.ReactNode` | **sí** | — | |
|
|
48
|
+
| `className` | `string` | | `""` | |
|
|
49
|
+
| `compact` | `boolean` | | `false` | |
|
|
50
|
+
|
|
51
|
+
## SidebarLayout
|
|
52
|
+
|
|
53
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
54
|
+
|---|---|---|---|---|
|
|
55
|
+
| `title` | `string` | **sí** | — | |
|
|
56
|
+
| `menuItems` | `MenuItem[]` | **sí** | — | |
|
|
57
|
+
| `user` | `User` | **sí** | — | |
|
|
58
|
+
| `children` | `React.ReactNode` | **sí** | — | |
|
|
59
|
+
| `className` | `string` | | `""` | |
|
|
60
|
+
| `onLogout` | `() => void` | | — | |
|
|
61
|
+
| `compact` | `boolean` | | `false` | |
|
|
62
|
+
|
|
63
|
+
## FormPattern
|
|
64
|
+
|
|
65
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
66
|
+
|---|---|---|---|---|
|
|
67
|
+
| `title` | `string` | **sí** | — | |
|
|
68
|
+
| `subtitle` | `string` | | — | |
|
|
69
|
+
| `fields` | `FormField[]` | **sí** | — | |
|
|
70
|
+
| `onSubmit` | `(data: Record<string, string>) => void` | **sí** | — | |
|
|
71
|
+
| `submitText` | `string` | | `"Enviar"` | |
|
|
72
|
+
| `submitIcon` | `string` | | `"fa-paper-plane"` | |
|
|
73
|
+
| `loading` | `boolean` | | `false` | |
|
|
74
|
+
| `error` | `string` | | — | |
|
|
75
|
+
| `success` | `boolean` | | `false` | |
|
|
76
|
+
| `className` | `string` | | `""` | |
|
|
77
|
+
| `gridCols` | `1 \| 2` | | `1` | |
|
|
78
|
+
| `compact` | `boolean` | | `false` | |
|
|
79
|
+
|
|
80
|
+
## ListPattern\<T\>
|
|
81
|
+
|
|
82
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
83
|
+
|---|---|---|---|---|
|
|
84
|
+
| `title` | `string` | **sí** | — | Título de la card |
|
|
85
|
+
| `subtitle` | `string` | | — | Subtítulo opcional |
|
|
86
|
+
| `columns` | `DataTableColumn<T>[]` | **sí** | — | Columnas de la DataTable |
|
|
87
|
+
| `rows` | `T[]` | **sí** | — | Filas de datos |
|
|
88
|
+
| `addButtonText` | `string` | | — | Texto del botón de agregar. Si no se pasa, no se muestra el botón |
|
|
89
|
+
| `addButtonIcon` | `string` | | `"fa-plus"` | Icono del botón de agregar |
|
|
90
|
+
| `onAdd` | `() => void` | | — | Callback al presionar el botón de agregar |
|
|
91
|
+
| `searchParamName` | `string` | | — | Nombre del query parameter para el buscador. Si no se pasa, no se muestra el buscador |
|
|
92
|
+
| `searchLabel` | `string` | | `"Buscar"` | Label del buscador |
|
|
93
|
+
| `filtersNode` | `React.ReactNode` | | — | Nodo adicional para agregar filtros extra junto al buscador |
|
|
94
|
+
| `page` | `number` | | — | Página actual (para el paginador) |
|
|
95
|
+
| `pages` | `number` | | — | Total de páginas |
|
|
96
|
+
| `total` | `number` | | — | Total de elementos |
|
|
97
|
+
| `pageParamName` | `string` | | — | Nombre del query parameter para la página |
|
|
98
|
+
| `isLoading` | `boolean` | | `false` | Indica si los datos están cargando |
|
|
99
|
+
| `loadingRows` | `number` | | `10` | Cantidad de filas skeleton mientras carga |
|
|
100
|
+
| `maxRows` | `number` | | — | Máximo de filas visibles antes de activar scroll |
|
|
101
|
+
| `compact` | `boolean` | | `false` | Modo compacto: reduce paddings y usa size="sm" en componentes internos |
|
|
102
|
+
| `className` | `string` | | `""` | Clases CSS adicionales para la Card |
|
|
103
|
+
| `headerActionsNode` | `React.ReactNode` | | — | Nodo adicional en el header junto al botón de agregar |
|
|
104
|
+
| `locale` | `string` | | — | Locale para formateo de números en la DataTable |
|
|
105
|
+
| `rowClassName` | `(row: T) => string` | | — | Función para aplicar clases CSS a una fila |
|
|
106
|
+
|
|
107
|
+
## Tipos auxiliares
|
|
108
|
+
|
|
109
|
+
### `DashboardStat`
|
|
110
|
+
|
|
111
|
+
Template de Layout de Dashboard Ejemplo de uso: ```tsx import { DashboardLayout } from "flysoft-react-ui/templates/layouts/DashboardLayout"; function App() { return ( <DashboardLayout title="Mi Dashboard" stats={stats} actions={<Button>Nueva Acción</Button>} > <div>Contenido del dashboard</div> </DashboardLayout> ); } ```
|
|
112
|
+
|
|
113
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
114
|
+
|---|---|---|---|---|
|
|
115
|
+
| `title` | `string` | **sí** | — | |
|
|
116
|
+
| `value` | `string \| number` | **sí** | — | |
|
|
117
|
+
| `change` | `string` | | — | |
|
|
118
|
+
| `changeType` | `"positive" \| "negative" \| "neutral"` | | — | |
|
|
119
|
+
| `icon` | `string` | | — | |
|
|
120
|
+
|
|
121
|
+
### `FormField`
|
|
122
|
+
|
|
123
|
+
Template de Patrón de Formulario Reutilizable Este patrón proporciona una estructura base para cualquier formulario con validación, estados de carga y manejo de errores. Ejemplo de uso: ```tsx import { FormPattern } from "flysoft-react-ui/templates/patterns/FormPattern"; function MyForm() { const fields = [ { name: "name", label: "Nombre", type: "text", icon: "fa-user", required: true }, { name: "email", label: "Email", type: "email", icon: "fa-envelope", required: true }, ]; return ( <FormPattern title="Mi Formulario" fields={fields} onSubmit={handleSubmit} submitText="Guardar" /> ); } ```
|
|
124
|
+
|
|
125
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
126
|
+
|---|---|---|---|---|
|
|
127
|
+
| `name` | `string` | **sí** | — | |
|
|
128
|
+
| `label` | `string` | **sí** | — | |
|
|
129
|
+
| `type` | `string` | | — | |
|
|
130
|
+
| `placeholder` | `string` | | — | |
|
|
131
|
+
| `icon` | `string` | | — | |
|
|
132
|
+
| `required` | `boolean` | | — | |
|
|
133
|
+
| `validation` | `(value: string) => string \| undefined` | | — | |
|
|
134
|
+
| `multiline` | `boolean` | | — | |
|
|
135
|
+
| `rows` | `number` | | — | |
|
|
136
|
+
|
|
137
|
+
### `MenuItem`
|
|
138
|
+
|
|
139
|
+
Template de Layout con Sidebar Ejemplo de uso: ```tsx import { SidebarLayout } from "flysoft-react-ui/templates/layouts/SidebarLayout"; function App() { const menuItems = [ { label: "Dashboard", icon: "fa-home", href: "/" }, { label: "Usuarios", icon: "fa-users", href: "/users" }, ]; return ( <SidebarLayout title="Mi App" menuItems={menuItems} user={{ name: "Juan Pérez", avatar: "fa-user" }} > <div>Contenido principal</div> </SidebarLayout> ); } ```
|
|
140
|
+
|
|
141
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
142
|
+
|---|---|---|---|---|
|
|
143
|
+
| `label` | `string` | **sí** | — | |
|
|
144
|
+
| `icon` | `string` | **sí** | — | |
|
|
145
|
+
| `href` | `string` | **sí** | — | |
|
|
146
|
+
| `badge` | `string \| number` | | — | |
|
|
147
|
+
| `children` | `MenuItem[]` | | — | |
|
|
148
|
+
|
|
149
|
+
### `User`
|
|
150
|
+
|
|
151
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
152
|
+
|---|---|---|---|---|
|
|
153
|
+
| `name` | `string` | **sí** | — | |
|
|
154
|
+
| `email` | `string` | | — | |
|
|
155
|
+
| `avatar` | `string` | | — | |
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<!-- Generado desde los tipos de flysoft-react-ui@1.4.1. No editar a mano. -->
|
|
2
|
+
<!-- Regenerar con: npm run docs:skill -->
|
|
3
|
+
|
|
4
|
+
# Tema, densidad y variables CSS
|
|
5
|
+
|
|
6
|
+
Los nombres de las variables CSS salen del bloque `@theme` de `src/index.css` y de los mapas de tokens de `src/contexts/`, no de los tipos.
|
|
7
|
+
|
|
8
|
+
## Cómo leer las variables
|
|
9
|
+
|
|
10
|
+
Hay dos namespaces y no son intercambiables:
|
|
11
|
+
|
|
12
|
+
- **`--flysoft-*`** — lo que `ThemeProvider` escribe en `document.documentElement` en runtime cuando cambiás de tema o de densidad.
|
|
13
|
+
- **`--color-*`, `--shadow-*`, `--radius-*`, `--spacing-*`, `--font-*`** — los tokens de Tailwind v4 declarados en el `@theme`, cada uno apuntando a su `--flysoft-*`. **Estos son los que se usan en `className`**, por ejemplo `text-[var(--color-text-primary)]`.
|
|
14
|
+
|
|
15
|
+
## Tokens de Tailwind (66)
|
|
16
|
+
|
|
17
|
+
| Token | Apunta a |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `--font-default` | `var(--flysoft-font-default)` |
|
|
20
|
+
| `--font-size-default` | `var(--flysoft-font-size-default)` |
|
|
21
|
+
| `--font-color-default` | `var(--flysoft-font-color-default)` |
|
|
22
|
+
| `--color-primary` | `var(--flysoft-primary)` |
|
|
23
|
+
| `--color-primary-contrast` | `var(--flysoft-primary-contrast)` |
|
|
24
|
+
| `--color-primary-dark` | `var(--flysoft-primary-dark)` |
|
|
25
|
+
| `--color-primary-light` | `var(--flysoft-primary-light)` |
|
|
26
|
+
| `--color-primary-soft` | `var(--flysoft-primary-soft)` |
|
|
27
|
+
| `--color-secondary` | `var(--flysoft-secondary)` |
|
|
28
|
+
| `--color-secondary-contrast` | `var(--flysoft-secondary-contrast)` |
|
|
29
|
+
| `--color-secondary-dark` | `var(--flysoft-secondary-dark)` |
|
|
30
|
+
| `--color-secondary-light` | `var(--flysoft-secondary-light)` |
|
|
31
|
+
| `--color-success` | `var(--flysoft-success)` |
|
|
32
|
+
| `--color-success-contrast` | `var(--flysoft-success-contrast)` |
|
|
33
|
+
| `--color-success-dark` | `var(--flysoft-success-dark)` |
|
|
34
|
+
| `--color-success-light` | `var(--flysoft-success-light)` |
|
|
35
|
+
| `--color-warning` | `var(--flysoft-warning)` |
|
|
36
|
+
| `--color-warning-contrast` | `var(--flysoft-warning-contrast)` |
|
|
37
|
+
| `--color-warning-dark` | `var(--flysoft-warning-dark)` |
|
|
38
|
+
| `--color-warning-light` | `var(--flysoft-warning-light)` |
|
|
39
|
+
| `--color-danger` | `var(--flysoft-danger)` |
|
|
40
|
+
| `--color-danger-contrast` | `var(--flysoft-danger-contrast)` |
|
|
41
|
+
| `--color-danger-dark` | `var(--flysoft-danger-dark)` |
|
|
42
|
+
| `--color-danger-light` | `var(--flysoft-danger-light)` |
|
|
43
|
+
| `--color-info` | `var(--flysoft-info)` |
|
|
44
|
+
| `--color-info-contrast` | `var(--flysoft-info-contrast)` |
|
|
45
|
+
| `--color-info-dark` | `var(--flysoft-info-dark)` |
|
|
46
|
+
| `--color-info-light` | `var(--flysoft-info-light)` |
|
|
47
|
+
| `--color-accent` | `var(--flysoft-accent)` |
|
|
48
|
+
| `--color-accent-contrast` | `var(--flysoft-accent-contrast)` |
|
|
49
|
+
| `--color-accent-dark` | `var(--flysoft-accent-dark)` |
|
|
50
|
+
| `--color-accent-light` | `var(--flysoft-accent-light)` |
|
|
51
|
+
| `--color-gray-50` | `var(--flysoft-gray50)` |
|
|
52
|
+
| `--color-gray-100` | `var(--flysoft-gray100)` |
|
|
53
|
+
| `--color-gray-200` | `var(--flysoft-gray200)` |
|
|
54
|
+
| `--color-gray-300` | `var(--flysoft-gray300)` |
|
|
55
|
+
| `--color-gray-400` | `var(--flysoft-gray400)` |
|
|
56
|
+
| `--color-gray-500` | `var(--flysoft-gray500)` |
|
|
57
|
+
| `--color-gray-600` | `var(--flysoft-gray600)` |
|
|
58
|
+
| `--color-gray-700` | `var(--flysoft-gray700)` |
|
|
59
|
+
| `--color-gray-800` | `var(--flysoft-gray800)` |
|
|
60
|
+
| `--color-gray-900` | `var(--flysoft-gray900)` |
|
|
61
|
+
| `--color-border-default` | `var(--flysoft-border-default)` |
|
|
62
|
+
| `--color-border-focus` | `var(--flysoft-border-focus)` |
|
|
63
|
+
| `--color-border-error` | `var(--flysoft-border-error)` |
|
|
64
|
+
| `--color-bg-default` | `var(--flysoft-bg-default)` |
|
|
65
|
+
| `--color-bg-secondary` | `var(--flysoft-bg-secondary)` |
|
|
66
|
+
| `--color-bg-disabled` | `var(--flysoft-bg-disabled)` |
|
|
67
|
+
| `--color-bg-hover` | `var(--flysoft-bg-hover)` |
|
|
68
|
+
| `--color-text-primary` | `var(--flysoft-text-primary)` |
|
|
69
|
+
| `--color-text-secondary` | `var(--flysoft-text-secondary)` |
|
|
70
|
+
| `--color-text-muted` | `var(--flysoft-text-muted)` |
|
|
71
|
+
| `--color-text-disabled` | `var(--flysoft-text-disabled)` |
|
|
72
|
+
| `--shadow-sm` | `var(--flysoft-shadow-sm)` |
|
|
73
|
+
| `--shadow-md` | `var(--flysoft-shadow-md)` |
|
|
74
|
+
| `--shadow-lg` | `var(--flysoft-shadow-lg)` |
|
|
75
|
+
| `--shadow-xl` | `var(--flysoft-shadow-xl)` |
|
|
76
|
+
| `--radius-sm` | `var(--flysoft-radius-sm)` |
|
|
77
|
+
| `--radius-md` | `var(--flysoft-radius-md)` |
|
|
78
|
+
| `--radius-lg` | `var(--flysoft-radius-lg)` |
|
|
79
|
+
| `--radius-full` | `var(--flysoft-radius-full)` |
|
|
80
|
+
| `--spacing-xs` | `var(--flysoft-spacing-xs)` |
|
|
81
|
+
| `--spacing-sm` | `var(--flysoft-spacing-sm)` |
|
|
82
|
+
| `--spacing-md` | `var(--flysoft-spacing-md)` |
|
|
83
|
+
| `--spacing-lg` | `var(--flysoft-spacing-lg)` |
|
|
84
|
+
| `--spacing-xl` | `var(--flysoft-spacing-xl)` |
|
|
85
|
+
|
|
86
|
+
## Variables de densidad
|
|
87
|
+
|
|
88
|
+
Las escribe `ThemeProvider` según la densidad activa. No se usan directo en `className` salvo que estés construyendo un componente nuevo que deba escalar.
|
|
89
|
+
|
|
90
|
+
- `--flysoft-density-card-gap`
|
|
91
|
+
- `--flysoft-density-container-padding-x`
|
|
92
|
+
- `--flysoft-density-container-padding-y`
|
|
93
|
+
- `--flysoft-density-control-height-lg`
|
|
94
|
+
- `--flysoft-density-control-height-md`
|
|
95
|
+
- `--flysoft-density-control-height-sm`
|
|
96
|
+
- `--flysoft-density-control-indicator-lg`
|
|
97
|
+
- `--flysoft-density-control-indicator-md`
|
|
98
|
+
- `--flysoft-density-control-indicator-sm`
|
|
99
|
+
- `--flysoft-density-datatable-header`
|
|
100
|
+
- `--flysoft-density-datatable-row`
|
|
101
|
+
- `--flysoft-density-font-base`
|
|
102
|
+
- `--flysoft-density-font-lg`
|
|
103
|
+
- `--flysoft-density-font-sm`
|
|
104
|
+
- `--flysoft-density-font-xl`
|
|
105
|
+
- `--flysoft-density-font-xs`
|
|
106
|
+
- `--flysoft-density-gap-lg`
|
|
107
|
+
- `--flysoft-density-gap-md`
|
|
108
|
+
- `--flysoft-density-gap-sm`
|
|
109
|
+
- `--flysoft-density-input-radius`
|
|
110
|
+
- `--flysoft-density-padding-x-lg`
|
|
111
|
+
- `--flysoft-density-padding-x-md`
|
|
112
|
+
- `--flysoft-density-padding-x-sm`
|
|
113
|
+
- `--flysoft-density-padding-y-lg`
|
|
114
|
+
- `--flysoft-density-padding-y-md`
|
|
115
|
+
- `--flysoft-density-padding-y-sm`
|
|
116
|
+
|
|
117
|
+
Además `ThemeProvider` escribe estos marcadores de identidad, útiles para escribir selectores CSS condicionales: `--flysoft-density-name`, `--flysoft-theme-name`.
|
|
118
|
+
|
|
119
|
+
## Valores de cada densidad
|
|
120
|
+
|
|
121
|
+
| Token | `comfortable` | `compact` | `dense` |
|
|
122
|
+
|---|---|---|---|
|
|
123
|
+
| `paddingX.sm` | `0.75rem` | `0.5rem` | `0.375rem` |
|
|
124
|
+
| `paddingX.md` | `1rem` | `0.75rem` | `0.5rem` |
|
|
125
|
+
| `paddingX.lg` | `1.5rem` | `1rem` | `0.75rem` |
|
|
126
|
+
| `paddingY.sm` | `0.375rem` | `0.25rem` | `0.125rem` |
|
|
127
|
+
| `paddingY.md` | `0.5rem` | `0.375rem` | `0.25rem` |
|
|
128
|
+
| `paddingY.lg` | `0.75rem` | `0.5rem` | `0.375rem` |
|
|
129
|
+
| `containerPaddingX` | `1.5rem` | `1rem` | `0.75rem` |
|
|
130
|
+
| `containerPaddingY` | `1rem` | `0.5rem` | `0.375rem` |
|
|
131
|
+
| `gap.sm` | `0.5rem` | `0.375rem` | `0.25rem` |
|
|
132
|
+
| `gap.md` | `1rem` | `0.75rem` | `0.5rem` |
|
|
133
|
+
| `gap.lg` | `1.5rem` | `1rem` | `0.75rem` |
|
|
134
|
+
| `fontXs` | `0.75rem` | `0.6875rem` | `0.625rem` |
|
|
135
|
+
| `fontSm` | `0.875rem` | `0.8125rem` | `0.75rem` |
|
|
136
|
+
| `fontBase` | `1rem` | `0.875rem` | `0.8125rem` |
|
|
137
|
+
| `fontLg` | `1.125rem` | `1rem` | `0.9375rem` |
|
|
138
|
+
| `fontXl` | `1.25rem` | `1.125rem` | `1rem` |
|
|
139
|
+
| `controlHeight.sm` | `2rem` | `1.75rem` | `1.5rem` |
|
|
140
|
+
| `controlHeight.md` | `2.5rem` | `2.125rem` | `1.75rem` |
|
|
141
|
+
| `controlHeight.lg` | `3rem` | `2.5rem` | `2.125rem` |
|
|
142
|
+
| `controlIndicator.sm` | `1rem` | `0.875rem` | `0.75rem` |
|
|
143
|
+
| `controlIndicator.md` | `1.25rem` | `1.125rem` | `1rem` |
|
|
144
|
+
| `controlIndicator.lg` | `1.5rem` | `1.375rem` | `1.25rem` |
|
|
145
|
+
| `inputRadius` | `0.5rem` | `0.375rem` | `0.25rem` |
|
|
146
|
+
| `dataTableRow` | `3rem` | `2.25rem` | `1.75rem` |
|
|
147
|
+
| `dataTableHeader` | `3rem` | `2.25rem` | `1.75rem` |
|
|
148
|
+
| `cardGap` | `1rem` | `0.75rem` | `0.5rem` |
|
|
149
|
+
|
|
150
|
+
## Tipos
|
|
151
|
+
|
|
152
|
+
### `blueTheme`
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
blueTheme: Theme
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### `comfortableDensity`
|
|
159
|
+
|
|
160
|
+
```ts
|
|
161
|
+
comfortableDensity: DensityTokens
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### `compactDensity`
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
compactDensity: DensityTokens
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `darkTheme`
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
darkTheme: Theme
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### `defaultTheme`
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
defaultTheme: Theme
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### `denseDensity`
|
|
183
|
+
|
|
184
|
+
```ts
|
|
185
|
+
denseDensity: DensityTokens
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### `Density`
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
type Density = "comfortable" | "compact" | "dense"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### `densityPresets`
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
densityPresets: Record<"comfortable" | "compact" | "dense", DensityTokens>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### `DensityTokens`
|
|
201
|
+
|
|
202
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
203
|
+
|---|---|---|---|---|
|
|
204
|
+
| `paddingX` | `{ sm: string; md: string; lg: string }` | **sí** | — | |
|
|
205
|
+
| `paddingY` | `{ sm: string; md: string; lg: string }` | **sí** | — | |
|
|
206
|
+
| `containerPaddingX` | `string` | **sí** | — | Padding horizontal para containers (Card, Dialog, Filter panel). |
|
|
207
|
+
| `containerPaddingY` | `string` | **sí** | — | Padding vertical para containers (Card header/footer/content). |
|
|
208
|
+
| `gap` | `{ sm: string; md: string; lg: string }` | **sí** | — | |
|
|
209
|
+
| `fontXs` | `string` | **sí** | — | |
|
|
210
|
+
| `fontSm` | `string` | **sí** | — | |
|
|
211
|
+
| `fontBase` | `string` | **sí** | — | |
|
|
212
|
+
| `fontLg` | `string` | **sí** | — | |
|
|
213
|
+
| `fontXl` | `string` | **sí** | — | |
|
|
214
|
+
| `controlHeight` | `{ sm: string; md: string; lg: string }` | **sí** | — | |
|
|
215
|
+
| `controlIndicator` | `{ sm: string; md: string; lg: string }` | **sí** | — | Tamaño (ancho/alto) del indicator de Checkbox (cuadrado) y RadioButton (círculo). Se reduce en compact/dense para no abrumar visualmente cuando el resto de la UI es más chica. |
|
|
216
|
+
| `inputRadius` | `string` | **sí** | — | Border-radius para inputs, badges del filter, botones — escala con densidad. |
|
|
217
|
+
| `dataTableRow` | `string` | **sí** | — | |
|
|
218
|
+
| `dataTableHeader` | `string` | **sí** | — | |
|
|
219
|
+
| `cardGap` | `string` | **sí** | — | |
|
|
220
|
+
|
|
221
|
+
### `greenTheme`
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
greenTheme: Theme
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### `lightTheme`
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
lightTheme: Theme
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### `Theme`
|
|
234
|
+
|
|
235
|
+
| Prop | Tipo | Req. | Default | Descripción |
|
|
236
|
+
|---|---|---|---|---|
|
|
237
|
+
| `name` | `string` | **sí** | — | |
|
|
238
|
+
| `colors` | `{ primary: string; primaryContrast: string; primaryDark: string; primaryLight: string; secondary: string; secondaryContrast: string; secondaryDark: string; secondaryLight: string; success: string; successContrast: string; successDark: string; successLight: string; warning: string; warningContrast: string; warningDark: string; warningLight: string; danger: string; dangerContrast: string; dangerDark: string; dangerLight: string; info: string; infoContrast: string; infoDark: string; infoLight: string; accent: string; accentContrast: string; accentDark: string; accentLight: string; gray50: string; gray100: string; gray200: string; gray300: string; gray400: string; gray500: string; gray600: string; gray700: string; gray800: string; gray900: string; borderDefault: string; borderFocus: string; borderError: string; bgDefault: string; bgSecondary: string; bgDisabled: string; textPrimary: string; textSecondary: string; textMuted: string; textDisabled: string; }` | **sí** | — | |
|
|
239
|
+
| `shadows` | `{ sm: string; md: string; lg: string; }` | **sí** | — | |
|
|
240
|
+
| `radius` | `{ sm: string; md: string; lg: string; full: string; }` | **sí** | — | |
|
|
241
|
+
| `spacing` | `{ xs: string; sm: string; md: string; lg: string; xl: string; }` | **sí** | — | |
|
|
242
|
+
| `fonts` | `{ default: string; sizeDefault: string; colorDefault: string; }` | **sí** | — | |
|
|
243
|
+
| `density` | `"comfortable" \| "compact" \| "dense" (Density)` | | — | |
|
|
244
|
+
| `densityTokens` | `DensityTokens` | | — | |
|
|
245
|
+
|
|
246
|
+
### `ThemeOverride`
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
interface ThemeOverride { [key: string]: string | number; }
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### `themes`
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
themes: Record<string, Theme>
|
|
256
|
+
```
|
|
@@ -10,6 +10,8 @@ export interface CollectionProps {
|
|
|
10
10
|
* - "sm" → var(--flysoft-density-gap-sm)
|
|
11
11
|
* - "md" → var(--flysoft-density-gap-md) (default)
|
|
12
12
|
* - "lg" → var(--flysoft-density-gap-lg)
|
|
13
|
+
*
|
|
14
|
+
* @default "md"
|
|
13
15
|
*/
|
|
14
16
|
gap?: CollectionGap;
|
|
15
17
|
direction?: "column" | "row";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Collection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOpD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Collection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOpD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0CD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuChD,CAAC"}
|
|
@@ -4,14 +4,27 @@ export interface NavbarInterface {
|
|
|
4
4
|
navBarLeftNode?: string | ReactNode;
|
|
5
5
|
navBarRightNode?: string | ReactNode;
|
|
6
6
|
fullWidthNavbar: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Altura del navbar.
|
|
9
|
+
*
|
|
10
|
+
* @default "64px"
|
|
11
|
+
*/
|
|
7
12
|
height?: string;
|
|
13
|
+
/** Clases del contenedor del navbar (incluye el botón). */
|
|
8
14
|
className?: string;
|
|
9
15
|
}
|
|
10
16
|
export interface LeftDrawerInterface {
|
|
11
17
|
headerNode?: ReactNode;
|
|
12
18
|
contentNode?: ReactNode;
|
|
13
19
|
footerNode?: ReactNode;
|
|
20
|
+
/** Clases del contenedor del drawer (header, contenido y footer). */
|
|
14
21
|
className?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Ancho del drawer. Pisa cualquier clase de ancho que venga en `className`.
|
|
24
|
+
* Si no se pasa, el drawer usa la clase `w-64`.
|
|
25
|
+
*
|
|
26
|
+
* @default "16rem"
|
|
27
|
+
*/
|
|
15
28
|
width?: string;
|
|
16
29
|
}
|
|
17
30
|
export interface AppLayoutContextType extends ThemeContextType {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppLayoutContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AppLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EAEd,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhE,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE5D,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClE,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAGnE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAMD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8JD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAqC9D,CAAC;AAIF,eAAO,MAAM,YAAY,QAAO,oBAM/B,CAAC;AAIF,eAAO,MAAM,mBAAmB,eAG/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"AppLayoutContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AppLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EAEd,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhE,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE5D,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClE,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAGnE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAMD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8JD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAqC9D,CAAC;AAIF,eAAO,MAAM,YAAY,QAAO,oBAM/B,CAAC;AAIF,eAAO,MAAM,mBAAmB,eAG/B,CAAC"}
|