auxalia-ui-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +456 -0
- package/dist/chunk-O6RHMFJG.js +165 -0
- package/dist/index.cjs +7201 -0
- package/dist/index.d.cts +365 -0
- package/dist/index.d.ts +365 -0
- package/dist/index.js +6968 -0
- package/dist/styles.css +24 -0
- package/dist/tailwind.preset.cjs +184 -0
- package/dist/tailwind.preset.d.cts +5 -0
- package/dist/tailwind.preset.d.ts +5 -0
- package/dist/tailwind.preset.js +6 -0
- package/dist/tokens.css +69 -0
- package/package.json +111 -0
package/README.md
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
# Auxalia UI — `auxalia-ui`
|
|
2
|
+
|
|
3
|
+
A modern, accessible React component library built with **TypeScript**, **Radix UI**, and **Tailwind CSS v4**. Designed for seamless integration into large-scale projects.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/auxalia-ui)
|
|
6
|
+
[](https://opensource.org/licenses/ISC)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Table of Contents
|
|
11
|
+
|
|
12
|
+
- [Features](#features)
|
|
13
|
+
- [Requirements](#requirements)
|
|
14
|
+
- [Installation](#installation)
|
|
15
|
+
- [Setup](#setup)
|
|
16
|
+
- [Components](#components)
|
|
17
|
+
- [Tailwind Preset](#tailwind-preset)
|
|
18
|
+
- [Design Tokens](#design-tokens)
|
|
19
|
+
- [Development](#development)
|
|
20
|
+
- [License](#license)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
- **Customizable** — CVA-powered variants for predictable, type-safe styling
|
|
27
|
+
- **Accessible** — Built on Radix UI primitives, WCAG compliant
|
|
28
|
+
- **Tree-Shakeable** — ESM + CJS dual output for optimal bundle size
|
|
29
|
+
- **Type-Safe** — Full TypeScript with strict types
|
|
30
|
+
- **Dark Mode** — All components support light/dark themes via CSS class
|
|
31
|
+
- **Tailwind v4** — Ships a Tailwind preset with Auxalia brand tokens
|
|
32
|
+
- **Storybook** — Interactive component explorer included
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Requirements
|
|
37
|
+
|
|
38
|
+
| Dependency | Version |
|
|
39
|
+
| ----------- | ------- |
|
|
40
|
+
| React | ^19.2.0 |
|
|
41
|
+
| react-dom | ^19.2.0 |
|
|
42
|
+
| tailwindcss | ^4.0.0 |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install auxalia-ui
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Setup
|
|
55
|
+
|
|
56
|
+
### 1. Import styles
|
|
57
|
+
|
|
58
|
+
In your app's entry CSS file:
|
|
59
|
+
|
|
60
|
+
```css
|
|
61
|
+
@import 'auxalia-ui/styles.css';
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Or import the design tokens separately:
|
|
65
|
+
|
|
66
|
+
```css
|
|
67
|
+
@import 'auxalia-ui/tokens.css';
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. Configure Tailwind v4
|
|
71
|
+
|
|
72
|
+
In your CSS config file (e.g. `app.css`):
|
|
73
|
+
|
|
74
|
+
```css
|
|
75
|
+
@import 'tailwindcss';
|
|
76
|
+
@import 'auxalia-ui/tokens.css';
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Or use the Tailwind preset in your `tailwind.config.ts`:
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import auxaliaPreset from 'auxalia-ui/tailwind.preset';
|
|
83
|
+
|
|
84
|
+
export default {
|
|
85
|
+
presets: [auxaliaPreset],
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 3. Use components
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { Button } from 'auxalia-ui';
|
|
93
|
+
|
|
94
|
+
export default function App() {
|
|
95
|
+
return (
|
|
96
|
+
<Button variant="default" color="primary">
|
|
97
|
+
Click me
|
|
98
|
+
</Button>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Components
|
|
106
|
+
|
|
107
|
+
### Button
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
import { Button } from 'auxalia-ui';
|
|
111
|
+
|
|
112
|
+
<Button variant="default" color="primary" size="default">Save</Button>
|
|
113
|
+
<Button variant="outline" color="secondary">Cancel</Button>
|
|
114
|
+
<Button variant="ghost" color="destructive" size="sm">Delete</Button>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
| Prop | Type | Default |
|
|
118
|
+
| --------- | -------------------------------------------------------------------- | ----------- |
|
|
119
|
+
| `variant` | `'default' \| 'outline' \| 'ghost' \| 'link'` | `'default'` |
|
|
120
|
+
| `color` | `'default' \| 'primary' \| 'secondary' \| 'accent' \| 'destructive'` | `'primary'` |
|
|
121
|
+
| `size` | `'sm' \| 'default' \| 'lg' \| 'icon'` | `'default'` |
|
|
122
|
+
| `asChild` | `boolean` | `false` |
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Card
|
|
127
|
+
|
|
128
|
+
```tsx
|
|
129
|
+
import { Card } from 'auxalia-ui';
|
|
130
|
+
|
|
131
|
+
<Card variant="default">Content</Card>
|
|
132
|
+
<Card variant="elevated">Elevated</Card>
|
|
133
|
+
<Card variant="outlined">Outlined</Card>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
| Prop | Type | Default |
|
|
137
|
+
| --------- | ------------------------------------------------------------------------------- | ----------- |
|
|
138
|
+
| `variant` | `'default' \| 'outlined' \| 'elevated' \| 'success' \| 'accent' \| 'secondary'` | `'default'` |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### Input
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
import { Input } from 'auxalia-ui';
|
|
146
|
+
|
|
147
|
+
<Input placeholder="Enter text..." />
|
|
148
|
+
<Input size="lg" variant="error" />
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
| Prop | Type | Default |
|
|
152
|
+
| --------- | ---------------------- | ----------- |
|
|
153
|
+
| `variant` | `'default' \| 'error'` | `'default'` |
|
|
154
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### Select
|
|
159
|
+
|
|
160
|
+
```tsx
|
|
161
|
+
import {
|
|
162
|
+
Select,
|
|
163
|
+
SelectTrigger,
|
|
164
|
+
SelectValue,
|
|
165
|
+
SelectContent,
|
|
166
|
+
SelectItem,
|
|
167
|
+
} from 'auxalia-ui';
|
|
168
|
+
|
|
169
|
+
<Select>
|
|
170
|
+
<SelectTrigger variant="primary" size="md">
|
|
171
|
+
<SelectValue placeholder="Pick one" />
|
|
172
|
+
</SelectTrigger>
|
|
173
|
+
<SelectContent>
|
|
174
|
+
<SelectItem value="a">Option A</SelectItem>
|
|
175
|
+
<SelectItem value="b">Option B</SelectItem>
|
|
176
|
+
</SelectContent>
|
|
177
|
+
</Select>;
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**SelectTrigger variants:** `'default' | 'primary' | 'secondary' | 'accent' | 'destructive' | 'error'`
|
|
181
|
+
|
|
182
|
+
**SelectTrigger sizes:** `'sm' | 'md' | 'lg'`
|
|
183
|
+
|
|
184
|
+
**SelectItem variants:** `'default' | 'primary' | 'secondary' | 'accent' | 'destructive'`
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### DropdownMenu
|
|
189
|
+
|
|
190
|
+
```tsx
|
|
191
|
+
import {
|
|
192
|
+
DropdownMenu,
|
|
193
|
+
DropdownMenuTrigger,
|
|
194
|
+
DropdownMenuContent,
|
|
195
|
+
DropdownMenuItem,
|
|
196
|
+
DropdownMenuSeparator,
|
|
197
|
+
DropdownMenuLabel,
|
|
198
|
+
} from 'auxalia-ui';
|
|
199
|
+
|
|
200
|
+
<DropdownMenu>
|
|
201
|
+
<DropdownMenuTrigger>Open</DropdownMenuTrigger>
|
|
202
|
+
<DropdownMenuContent>
|
|
203
|
+
<DropdownMenuLabel>Actions</DropdownMenuLabel>
|
|
204
|
+
<DropdownMenuSeparator />
|
|
205
|
+
<DropdownMenuItem variant="default">Edit</DropdownMenuItem>
|
|
206
|
+
<DropdownMenuItem variant="destructive">Delete</DropdownMenuItem>
|
|
207
|
+
</DropdownMenuContent>
|
|
208
|
+
</DropdownMenu>;
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**DropdownMenuItem variants:** `'default' | 'primary' | 'secondary' | 'accent' | 'destructive'`
|
|
212
|
+
|
|
213
|
+
Also exports: `DropdownMenuCheckboxItem`, `DropdownMenuRadioItem`, `DropdownMenuRadioGroup`,
|
|
214
|
+
`DropdownMenuGroup`, `DropdownMenuSub`, `DropdownMenuSubTrigger`, `DropdownMenuSubContent`,
|
|
215
|
+
`DropdownMenuShortcut`, `DropdownMenuPortal`
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### Tabs
|
|
220
|
+
|
|
221
|
+
```tsx
|
|
222
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from 'auxalia-ui';
|
|
223
|
+
|
|
224
|
+
const [tab, setTab] = useState('overview');
|
|
225
|
+
|
|
226
|
+
<Tabs value={tab} onValueChange={setTab}>
|
|
227
|
+
<TabsList>
|
|
228
|
+
<TabsTrigger value="overview">Overview</TabsTrigger>
|
|
229
|
+
<TabsTrigger value="settings">Settings</TabsTrigger>
|
|
230
|
+
</TabsList>
|
|
231
|
+
<TabsContent value="overview">Overview content</TabsContent>
|
|
232
|
+
<TabsContent value="settings">Settings content</TabsContent>
|
|
233
|
+
</Tabs>;
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### Text
|
|
239
|
+
|
|
240
|
+
```tsx
|
|
241
|
+
import { Text } from 'auxalia-ui';
|
|
242
|
+
|
|
243
|
+
<Text size="xl" align="center">
|
|
244
|
+
Hello World
|
|
245
|
+
</Text>;
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
| Prop | Type | Default |
|
|
249
|
+
| ------- | ------------------------------------------------ | -------- |
|
|
250
|
+
| `size` | `'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl' \| '3xl'` | `'md'` |
|
|
251
|
+
| `align` | `'left' \| 'center' \| 'right'` | `'left'` |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### Field (Form Wrapper)
|
|
256
|
+
|
|
257
|
+
```tsx
|
|
258
|
+
import { Field, FieldLabel, FieldDescription, FieldError } from 'auxalia-ui';
|
|
259
|
+
|
|
260
|
+
<Field orientation="vertical">
|
|
261
|
+
<FieldLabel>Email</FieldLabel>
|
|
262
|
+
<Input type="email" />
|
|
263
|
+
<FieldDescription>We'll never share your email.</FieldDescription>
|
|
264
|
+
<FieldError errors={['Email is required']} />
|
|
265
|
+
</Field>;
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Orientation:** `'vertical'` (default) | `'horizontal'` | `'responsive'`
|
|
269
|
+
|
|
270
|
+
Also exports: `FieldContent`, `FieldGroup`, `FieldSet`, `FieldLegend`, `FieldSeparator`, `FieldTitle`
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
### Tooltip
|
|
275
|
+
|
|
276
|
+
```tsx
|
|
277
|
+
import { Tooltip, TooltipTrigger, TooltipContent } from 'auxalia-ui';
|
|
278
|
+
|
|
279
|
+
<Tooltip>
|
|
280
|
+
<TooltipTrigger>Hover me</TooltipTrigger>
|
|
281
|
+
<TooltipContent>Helpful hint</TooltipContent>
|
|
282
|
+
</Tooltip>;
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Also exports: `TooltipProvider`
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### Popover
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
import { Popover, PopoverTrigger, PopoverContent } from 'auxalia-ui';
|
|
293
|
+
|
|
294
|
+
<Popover>
|
|
295
|
+
<PopoverTrigger>Open</PopoverTrigger>
|
|
296
|
+
<PopoverContent>Popover content here</PopoverContent>
|
|
297
|
+
</Popover>;
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Also exports: `PopoverAnchor`
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### Pagination
|
|
305
|
+
|
|
306
|
+
```tsx
|
|
307
|
+
import {
|
|
308
|
+
Pagination,
|
|
309
|
+
PaginationContent,
|
|
310
|
+
PaginationItem,
|
|
311
|
+
PaginationLink,
|
|
312
|
+
PaginationPrevious,
|
|
313
|
+
PaginationNext,
|
|
314
|
+
PaginationEllipsis,
|
|
315
|
+
} from 'auxalia-ui';
|
|
316
|
+
|
|
317
|
+
<Pagination>
|
|
318
|
+
<PaginationContent>
|
|
319
|
+
<PaginationItem>
|
|
320
|
+
<PaginationPrevious href="#" />
|
|
321
|
+
</PaginationItem>
|
|
322
|
+
<PaginationItem>
|
|
323
|
+
<PaginationLink href="#" isActive>
|
|
324
|
+
1
|
|
325
|
+
</PaginationLink>
|
|
326
|
+
</PaginationItem>
|
|
327
|
+
<PaginationItem>
|
|
328
|
+
<PaginationLink href="#">2</PaginationLink>
|
|
329
|
+
</PaginationItem>
|
|
330
|
+
<PaginationItem>
|
|
331
|
+
<PaginationEllipsis />
|
|
332
|
+
</PaginationItem>
|
|
333
|
+
<PaginationItem>
|
|
334
|
+
<PaginationNext href="#" />
|
|
335
|
+
</PaginationItem>
|
|
336
|
+
</PaginationContent>
|
|
337
|
+
</Pagination>;
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
### Collapsible
|
|
343
|
+
|
|
344
|
+
```tsx
|
|
345
|
+
import {
|
|
346
|
+
CollapsibleRoot,
|
|
347
|
+
CollapsibleTrigger,
|
|
348
|
+
CollapsibleContent,
|
|
349
|
+
} from 'auxalia-ui';
|
|
350
|
+
|
|
351
|
+
<CollapsibleRoot>
|
|
352
|
+
<CollapsibleTrigger>Toggle</CollapsibleTrigger>
|
|
353
|
+
<CollapsibleContent>Hidden content</CollapsibleContent>
|
|
354
|
+
</CollapsibleRoot>;
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### Label
|
|
360
|
+
|
|
361
|
+
```tsx
|
|
362
|
+
import { Label } from 'auxalia-ui';
|
|
363
|
+
|
|
364
|
+
<Label htmlFor="email">Email address</Label>;
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
### TableView
|
|
370
|
+
|
|
371
|
+
A full-featured controlled data table with sorting, filtering, pagination, and search.
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
import { TableView } from 'auxalia-ui';
|
|
375
|
+
import type { TableField, TableConfig } from 'auxalia-ui';
|
|
376
|
+
|
|
377
|
+
const fields: TableField[] = [
|
|
378
|
+
{ key: 'name', label: 'Name', sortable: true },
|
|
379
|
+
{ key: 'email', label: 'Email' },
|
|
380
|
+
];
|
|
381
|
+
|
|
382
|
+
<TableView
|
|
383
|
+
data={rows}
|
|
384
|
+
fields={fields}
|
|
385
|
+
config={config}
|
|
386
|
+
queryParams={queryParams}
|
|
387
|
+
onQueryChange={setQueryParams}
|
|
388
|
+
/>;
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## Tailwind Preset
|
|
394
|
+
|
|
395
|
+
The preset includes the full Auxalia brand token system:
|
|
396
|
+
|
|
397
|
+
```ts
|
|
398
|
+
import auxaliaPreset from 'auxalia-ui/tailwind.preset';
|
|
399
|
+
|
|
400
|
+
export default {
|
|
401
|
+
presets: [auxaliaPreset],
|
|
402
|
+
};
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
**Brand colors available in Tailwind utilities:**
|
|
406
|
+
|
|
407
|
+
| Token | Value | Usage |
|
|
408
|
+
| ------------------ | ------------ | ----------------------- |
|
|
409
|
+
| `primary` | #A7D500 | Auxalia Green |
|
|
410
|
+
| `secondary` | #3e6897 | Auxalia Blue |
|
|
411
|
+
| `accent` | #0f868b | Auxalia Petrol |
|
|
412
|
+
| `destructive` | #dc2626 | Errors / danger |
|
|
413
|
+
| `auxalia-green-*` | 50–900 scale | Extended green palette |
|
|
414
|
+
| `auxalia-blue-*` | 50–900 scale | Extended blue palette |
|
|
415
|
+
| `auxalia-petrol-*` | 50–900 scale | Extended petrol palette |
|
|
416
|
+
|
|
417
|
+
**Dark mode:** configured via the `dark` class on the root element.
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Design Tokens
|
|
422
|
+
|
|
423
|
+
Tokens are exposed as CSS custom properties and can be used independently:
|
|
424
|
+
|
|
425
|
+
```css
|
|
426
|
+
@import 'auxalia-ui/tokens.css';
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
```css
|
|
430
|
+
/* Example usage in your CSS */
|
|
431
|
+
.my-element {
|
|
432
|
+
color: rgb(var(--color-primary));
|
|
433
|
+
background: rgb(var(--color-surface));
|
|
434
|
+
}
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Development
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
# Install dependencies
|
|
443
|
+
npm install
|
|
444
|
+
|
|
445
|
+
# Run Storybook (port 6006)
|
|
446
|
+
npm run storybook
|
|
447
|
+
|
|
448
|
+
# Build static Storybook
|
|
449
|
+
npm run build-storybook
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## License
|
|
455
|
+
|
|
456
|
+
ISC — [Auxalia](https://github.com/Artur-Badalyan/auxalia-ui)
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// src/tailwind.preset.ts
|
|
2
|
+
var auxaliaColors = {
|
|
3
|
+
// Primary Brand Color - Fresh Green
|
|
4
|
+
"auxalia-green": {
|
|
5
|
+
50: "#f8fbf0",
|
|
6
|
+
100: "#f0f7e1",
|
|
7
|
+
200: "#ddf0c0",
|
|
8
|
+
300: "#c3e88a",
|
|
9
|
+
400: "#a7d500",
|
|
10
|
+
// Brand primary
|
|
11
|
+
500: "#93b800",
|
|
12
|
+
600: "#749400",
|
|
13
|
+
700: "#5a7600",
|
|
14
|
+
800: "#3d5000",
|
|
15
|
+
900: "#1f2800"
|
|
16
|
+
},
|
|
17
|
+
// Secondary Brand Color - Dark Blue
|
|
18
|
+
"auxalia-blue": {
|
|
19
|
+
50: "#f0f4f8",
|
|
20
|
+
100: "#e0eaf3",
|
|
21
|
+
200: "#c0d6e6",
|
|
22
|
+
300: "#8fb3d1",
|
|
23
|
+
400: "#5c8fb5",
|
|
24
|
+
500: "#3e6897",
|
|
25
|
+
// Brand secondary
|
|
26
|
+
600: "#2d5080",
|
|
27
|
+
700: "#1f3860",
|
|
28
|
+
800: "#142a47",
|
|
29
|
+
900: "#0a1628"
|
|
30
|
+
},
|
|
31
|
+
// Accent - Petrol Green
|
|
32
|
+
"auxalia-petrol": {
|
|
33
|
+
50: "#f0fbfc",
|
|
34
|
+
100: "#dff8f9",
|
|
35
|
+
200: "#bef1f3",
|
|
36
|
+
300: "#7fe6eb",
|
|
37
|
+
400: "#3fd9e1",
|
|
38
|
+
500: "#0f868b",
|
|
39
|
+
// Auxalia petrol
|
|
40
|
+
600: "#0a646b",
|
|
41
|
+
700: "#064952",
|
|
42
|
+
800: "#033539",
|
|
43
|
+
900: "#011f22"
|
|
44
|
+
},
|
|
45
|
+
// Supporting Colors
|
|
46
|
+
"auxalia-orange": "#dc6b39",
|
|
47
|
+
"auxalia-yellow": "#cfd12d",
|
|
48
|
+
"auxalia-red": "#93383a",
|
|
49
|
+
"auxalia-cyan": "#abbfbd"
|
|
50
|
+
};
|
|
51
|
+
var preset = {
|
|
52
|
+
darkMode: "class",
|
|
53
|
+
theme: {
|
|
54
|
+
extend: {
|
|
55
|
+
fontFamily: {
|
|
56
|
+
display: ['"Weissenhof Grotesk"', '"Calibri"', "sans-serif"],
|
|
57
|
+
body: ['"Weissenhof Grotesk"', '"Calibri"', "sans-serif"]
|
|
58
|
+
},
|
|
59
|
+
colors: {
|
|
60
|
+
// Primary using Auxalia Green — RGB channels enable Tailwind opacity modifiers (e.g. bg-primary/20)
|
|
61
|
+
primary: "rgb(var(--color-primary) / <alpha-value>)",
|
|
62
|
+
"primary-foreground": "var(--color-primary-foreground)",
|
|
63
|
+
"primary-hover": "var(--color-primary-hover)",
|
|
64
|
+
// Secondary using Auxalia Blue
|
|
65
|
+
secondary: "rgb(var(--color-secondary) / <alpha-value>)",
|
|
66
|
+
"secondary-foreground": "var(--color-secondary-foreground)",
|
|
67
|
+
"secondary-hover": "var(--color-secondary-hover)",
|
|
68
|
+
// Accent using Auxalia Petrol
|
|
69
|
+
accent: "rgb(var(--color-accent) / <alpha-value>)",
|
|
70
|
+
"accent-foreground": "var(--color-accent-foreground)",
|
|
71
|
+
surface: "var(--color-surface)",
|
|
72
|
+
"surface-hover": "var(--color-surface-hover)",
|
|
73
|
+
"surface-foreground": "var(--color-surface-foreground)",
|
|
74
|
+
destructive: "rgb(var(--color-destructive) / <alpha-value>)",
|
|
75
|
+
"destructive-hover": "var(--color-destructive-hover)",
|
|
76
|
+
"destructive-foreground": "var(--color-destructive-foreground)",
|
|
77
|
+
// Auxalia specific colors for direct use
|
|
78
|
+
"auxalia-green": auxaliaColors["auxalia-green"],
|
|
79
|
+
"auxalia-blue": auxaliaColors["auxalia-blue"],
|
|
80
|
+
"auxalia-petrol": auxaliaColors["auxalia-petrol"]
|
|
81
|
+
},
|
|
82
|
+
textColor: {
|
|
83
|
+
primary: "var(--color-text)",
|
|
84
|
+
secondary: "var(--color-text-secondary)",
|
|
85
|
+
muted: "var(--color-text-muted)"
|
|
86
|
+
},
|
|
87
|
+
backgroundColor: {
|
|
88
|
+
hero: "var(--color-bg-hero)",
|
|
89
|
+
card: "var(--surface-card)",
|
|
90
|
+
cardHover: "var(--surface-card-hover)"
|
|
91
|
+
},
|
|
92
|
+
backgroundImage: {
|
|
93
|
+
"gradient-radial-green": "radial-gradient(circle at 20% 20%, rgba(167, 213, 0, 0.15), transparent 35%)",
|
|
94
|
+
"gradient-radial-blue": "radial-gradient(circle at 80% 0%, rgba(62, 104, 151, 0.1), transparent 40%)",
|
|
95
|
+
"gradient-glow": "linear-gradient(to bottom right, rgba(6, 182, 212, 0.1), transparent, rgba(255, 255, 255, 0.05))"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
preset.safelist = [
|
|
101
|
+
// ─── Button: filled (default) ──────────────────────────────────────────────
|
|
102
|
+
"bg-primary",
|
|
103
|
+
"bg-secondary",
|
|
104
|
+
"bg-accent",
|
|
105
|
+
"bg-destructive",
|
|
106
|
+
"text-primary-foreground",
|
|
107
|
+
"text-secondary-foreground",
|
|
108
|
+
"text-accent-foreground",
|
|
109
|
+
"text-destructive-foreground",
|
|
110
|
+
"hover:bg-primary-hover",
|
|
111
|
+
"hover:bg-secondary-hover",
|
|
112
|
+
"hover:bg-destructive-hover",
|
|
113
|
+
"shadow-sm",
|
|
114
|
+
// ─── Button: outline ───────────────────────────────────────────────────────
|
|
115
|
+
"border-2",
|
|
116
|
+
"border-primary",
|
|
117
|
+
"border-secondary",
|
|
118
|
+
"border-accent",
|
|
119
|
+
"border-destructive",
|
|
120
|
+
"text-primary",
|
|
121
|
+
"text-secondary",
|
|
122
|
+
"text-accent",
|
|
123
|
+
"text-destructive",
|
|
124
|
+
"hover:bg-primary",
|
|
125
|
+
"hover:bg-secondary",
|
|
126
|
+
"hover:bg-accent",
|
|
127
|
+
"hover:bg-destructive",
|
|
128
|
+
"hover:text-primary-foreground",
|
|
129
|
+
"hover:text-secondary-foreground",
|
|
130
|
+
"hover:text-accent-foreground",
|
|
131
|
+
"hover:text-destructive-foreground",
|
|
132
|
+
"dark:border-primary",
|
|
133
|
+
"dark:text-primary",
|
|
134
|
+
// ─── Button: ghost ─────────────────────────────────────────────────────────
|
|
135
|
+
"hover:bg-primary/10",
|
|
136
|
+
"dark:hover:bg-primary/20",
|
|
137
|
+
"hover:bg-secondary/10",
|
|
138
|
+
"hover:bg-accent/10",
|
|
139
|
+
"hover:bg-destructive/10",
|
|
140
|
+
// ─── Button: link ──────────────────────────────────────────────────────────
|
|
141
|
+
"underline",
|
|
142
|
+
"hover:text-primary-hover",
|
|
143
|
+
"hover:text-secondary-hover",
|
|
144
|
+
// ─── Card: border opacity ──────────────────────────────────────────────────
|
|
145
|
+
"border-primary/10",
|
|
146
|
+
"border-primary/20",
|
|
147
|
+
"border-primary/30",
|
|
148
|
+
"border-primary/40",
|
|
149
|
+
"border-primary/50",
|
|
150
|
+
"hover:border-primary/20",
|
|
151
|
+
"hover:border-primary/50",
|
|
152
|
+
"dark:border-primary/20",
|
|
153
|
+
"dark:border-primary/40",
|
|
154
|
+
"border-accent/10",
|
|
155
|
+
// ─── Card: background opacity ──────────────────────────────────────────────
|
|
156
|
+
"bg-primary/10",
|
|
157
|
+
"bg-primary/20",
|
|
158
|
+
"hover:shadow-md",
|
|
159
|
+
"hover:shadow-xl"
|
|
160
|
+
];
|
|
161
|
+
var tailwind_preset_default = preset;
|
|
162
|
+
|
|
163
|
+
export {
|
|
164
|
+
tailwind_preset_default
|
|
165
|
+
};
|