next-anvil 0.3.3 → 0.3.5
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 +158 -14
- package/dist/bin/commands/forge/resource.js +1 -1
- package/dist/bin/commands/forge/resource.js.map +1 -1
- package/dist/styles.css +373 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,24 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Next-anvil
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A Next.js framework for building admin dashboards. Next-anvil provides schema definitions, form field components, and a CLI tool to scaffold resources.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
+
### CLI Tool
|
|
8
|
+
|
|
9
|
+
Install globally:
|
|
10
|
+
|
|
7
11
|
```bash
|
|
8
|
-
npm install -g anvil
|
|
12
|
+
npm install -g next-anvil
|
|
9
13
|
```
|
|
10
14
|
|
|
11
15
|
Or use it locally in your project:
|
|
12
16
|
|
|
13
17
|
```bash
|
|
14
|
-
npm install --save-dev anvil
|
|
18
|
+
npm install --save-dev next-anvil
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Library
|
|
22
|
+
|
|
23
|
+
Install as a dependency in your Next.js project:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install next-anvil
|
|
15
27
|
```
|
|
16
28
|
|
|
17
|
-
## Usage
|
|
29
|
+
## CLI Usage
|
|
18
30
|
|
|
19
31
|
### Create a Resource
|
|
20
32
|
|
|
21
|
-
Generate
|
|
33
|
+
Generate resource scaffolding files:
|
|
22
34
|
|
|
23
35
|
```bash
|
|
24
36
|
anvil forge:resource <name>
|
|
@@ -29,12 +41,12 @@ Example:
|
|
|
29
41
|
anvil forge:resource product
|
|
30
42
|
```
|
|
31
43
|
|
|
32
|
-
This
|
|
33
|
-
- `src/lib/resources/products/index.ts`
|
|
34
|
-
- `src/lib/resources/products/form.ts`
|
|
35
|
-
- `src/lib/resources/products/table.ts`
|
|
44
|
+
This creates:
|
|
45
|
+
- `src/lib/resources/products/index.ts` - Resource definition
|
|
46
|
+
- `src/lib/resources/products/form.ts` - Form schema
|
|
47
|
+
- `src/lib/resources/products/table.ts` - Table schema
|
|
36
48
|
|
|
37
|
-
Run
|
|
49
|
+
### Run Database Migrations
|
|
38
50
|
|
|
39
51
|
```bash
|
|
40
52
|
anvil db:migrate
|
|
@@ -42,13 +54,145 @@ anvil db:migrate
|
|
|
42
54
|
|
|
43
55
|
This executes `npx prisma migrate dev && npx prisma generate`.
|
|
44
56
|
|
|
57
|
+
## Library Usage
|
|
58
|
+
|
|
59
|
+
### Import Styles
|
|
60
|
+
|
|
61
|
+
First, import the compiled Tailwind CSS:
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
import "next-anvil/styles.css";
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Defining Field Schemas
|
|
68
|
+
|
|
69
|
+
Next-anvil provides field definition functions for building form schemas:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { text, email, number, select, date, textarea } from "next-anvil/fields";
|
|
73
|
+
import { defineFormSchema } from "next-anvil/form";
|
|
74
|
+
|
|
75
|
+
const formSchema = defineFormSchema({
|
|
76
|
+
fields: {
|
|
77
|
+
name: text({
|
|
78
|
+
label: "Name",
|
|
79
|
+
required: true,
|
|
80
|
+
placeholder: "Enter name",
|
|
81
|
+
}),
|
|
82
|
+
email: email({
|
|
83
|
+
label: "Email",
|
|
84
|
+
required: true,
|
|
85
|
+
unique: true,
|
|
86
|
+
}),
|
|
87
|
+
age: number({
|
|
88
|
+
label: "Age",
|
|
89
|
+
min: 0,
|
|
90
|
+
max: 120,
|
|
91
|
+
}),
|
|
92
|
+
status: select({
|
|
93
|
+
label: "Status",
|
|
94
|
+
options: [
|
|
95
|
+
{ value: "active", label: "Active" },
|
|
96
|
+
{ value: "inactive", label: "Inactive" },
|
|
97
|
+
],
|
|
98
|
+
}),
|
|
99
|
+
birthDate: date({
|
|
100
|
+
label: "Birth Date",
|
|
101
|
+
}),
|
|
102
|
+
bio: textarea({
|
|
103
|
+
label: "Biography",
|
|
104
|
+
rows: 4,
|
|
105
|
+
}),
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Defining Table Schemas
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { defineTableSchema } from "next-anvil/table";
|
|
114
|
+
|
|
115
|
+
const tableSchema = defineTableSchema({
|
|
116
|
+
columns: [
|
|
117
|
+
{ name: "id", label: "ID", visible: "never" },
|
|
118
|
+
{ name: "name", label: "Name" },
|
|
119
|
+
{ name: "email", label: "Email" },
|
|
120
|
+
{ name: "createdAt", label: "Created At" },
|
|
121
|
+
],
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Defining Resources
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import { defineResource } from "next-anvil/resource";
|
|
129
|
+
import form from "./form";
|
|
130
|
+
import table from "./table";
|
|
131
|
+
|
|
132
|
+
const productResource = defineResource({
|
|
133
|
+
model: "Product",
|
|
134
|
+
label: "Products",
|
|
135
|
+
form,
|
|
136
|
+
table,
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Using Field Components
|
|
141
|
+
|
|
142
|
+
Next-anvil provides React components for rendering form fields:
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
import { TextField, EmailField, NumberField } from "next-anvil/components";
|
|
146
|
+
|
|
147
|
+
function MyForm() {
|
|
148
|
+
const [formData, setFormData] = useState({});
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
<form>
|
|
152
|
+
<TextField
|
|
153
|
+
fieldName="name"
|
|
154
|
+
fieldSchema={formSchema.fields.name}
|
|
155
|
+
value={formData.name}
|
|
156
|
+
onChange={(value) => setFormData({ ...formData, name: value })}
|
|
157
|
+
/>
|
|
158
|
+
<EmailField
|
|
159
|
+
fieldName="email"
|
|
160
|
+
fieldSchema={formSchema.fields.email}
|
|
161
|
+
value={formData.email}
|
|
162
|
+
onChange={(value) => setFormData({ ...formData, email: value })}
|
|
163
|
+
/>
|
|
164
|
+
</form>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Available field components:
|
|
170
|
+
- `TextField`
|
|
171
|
+
- `EmailField`
|
|
172
|
+
- `NumberField`
|
|
173
|
+
- `SelectField`
|
|
174
|
+
- `DateField`
|
|
175
|
+
- `TextareaField`
|
|
176
|
+
- `FieldWrapper` (base wrapper component)
|
|
177
|
+
|
|
178
|
+
### Package Exports
|
|
179
|
+
|
|
180
|
+
Next-anvil provides the following exports:
|
|
181
|
+
|
|
182
|
+
- `next-anvil/fields` - Field schema definition functions (text, email, number, select, date, textarea, hidden)
|
|
183
|
+
- `next-anvil/form` - Form schema utilities (`defineFormSchema`)
|
|
184
|
+
- `next-anvil/table` - Table schema utilities (`defineTableSchema`)
|
|
185
|
+
- `next-anvil/resource` - Resource definition utilities (`defineResource`)
|
|
186
|
+
- `next-anvil/components` - React field components
|
|
187
|
+
- `next-anvil/styles.css` - Compiled Tailwind CSS
|
|
188
|
+
|
|
45
189
|
## Requirements
|
|
46
190
|
|
|
47
191
|
- Node.js 18.0.0 or higher
|
|
48
|
-
-
|
|
49
|
-
-
|
|
192
|
+
- React 18.0.0 or higher
|
|
193
|
+
- Next.js 14.0.0 or higher
|
|
194
|
+
- Prisma (for database operations)
|
|
50
195
|
|
|
51
196
|
## License
|
|
52
197
|
|
|
53
198
|
ISC
|
|
54
|
-
|
|
@@ -13,7 +13,7 @@ async function forgeResource(name) {
|
|
|
13
13
|
const plural = (0, pluralize_esm_1.default)(singular);
|
|
14
14
|
const pluralLower = plural.toLowerCase();
|
|
15
15
|
const singularLower = singular.toLowerCase();
|
|
16
|
-
const resourceDir = path_1.default.join(process.cwd(), "src/lib/resources", pluralLower);
|
|
16
|
+
const resourceDir = path_1.default.join(process.cwd(), "src/lib/anvil/resources", pluralLower);
|
|
17
17
|
if (await promises_1.default
|
|
18
18
|
.access(resourceDir)
|
|
19
19
|
.then(() => true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../../bin/commands/forge/resource.ts"],"names":[],"mappings":";;;;;AASA,sCAoCC;AA7CD,2DAA6B;AAC7B,gDAAwB;AACxB,kEAAsC;AACtC,uDAIkC;AAE3B,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAA,uBAAS,EAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAC3B,OAAO,CAAC,GAAG,EAAE,EACb,
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../../bin/commands/forge/resource.ts"],"names":[],"mappings":";;;;;AASA,sCAoCC;AA7CD,2DAA6B;AAC7B,gDAAwB;AACxB,kEAAsC;AACtC,uDAIkC;AAE3B,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAA,uBAAS,EAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAC3B,OAAO,CAAC,GAAG,EAAE,EACb,yBAAyB,EACzB,WAAW,CACZ,CAAC;IAEF,IACE,MAAM,kBAAE;SACL,MAAM,CAAC,WAAW,CAAC;SACnB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EACrB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,0BAA0B,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,kBAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAA,wBAAa,EAAC,QAAQ,CAAC,CAAC;QACzE,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;QACvE,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAA,wBAAa,GAAE,CAAC;KAClE,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,KAAK,QAAQ,0CAA0C,WAAW,GAAG,CACtE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/styles.css
CHANGED
|
@@ -7,18 +7,49 @@
|
|
|
7
7
|
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
8
8
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
|
9
9
|
"Courier New", monospace;
|
|
10
|
+
--color-red-50: oklch(97.1% 0.013 17.38);
|
|
11
|
+
--color-red-200: oklch(88.5% 0.062 18.334);
|
|
10
12
|
--color-red-500: oklch(63.7% 0.237 25.331);
|
|
11
13
|
--color-red-600: oklch(57.7% 0.245 27.325);
|
|
14
|
+
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
15
|
+
--color-red-900: oklch(39.6% 0.141 25.723);
|
|
16
|
+
--color-green-100: oklch(96.2% 0.044 156.743);
|
|
17
|
+
--color-green-800: oklch(44.8% 0.119 151.328);
|
|
18
|
+
--color-blue-300: oklch(80.9% 0.105 251.813);
|
|
12
19
|
--color-blue-500: oklch(62.3% 0.214 259.815);
|
|
20
|
+
--color-blue-600: oklch(54.6% 0.245 262.881);
|
|
21
|
+
--color-blue-700: oklch(48.8% 0.243 264.376);
|
|
22
|
+
--color-blue-900: oklch(37.9% 0.146 265.522);
|
|
23
|
+
--color-gray-50: oklch(98.5% 0.002 247.839);
|
|
13
24
|
--color-gray-100: oklch(96.7% 0.003 264.542);
|
|
25
|
+
--color-gray-200: oklch(92.8% 0.006 264.531);
|
|
14
26
|
--color-gray-300: oklch(87.2% 0.01 258.338);
|
|
27
|
+
--color-gray-400: oklch(70.7% 0.022 261.325);
|
|
28
|
+
--color-gray-500: oklch(55.1% 0.027 264.364);
|
|
29
|
+
--color-gray-600: oklch(44.6% 0.03 256.802);
|
|
15
30
|
--color-gray-700: oklch(37.3% 0.034 259.733);
|
|
31
|
+
--color-gray-800: oklch(27.8% 0.033 256.848);
|
|
32
|
+
--color-gray-900: oklch(21% 0.034 264.665);
|
|
16
33
|
--color-black: #000;
|
|
34
|
+
--color-white: #fff;
|
|
17
35
|
--spacing: 0.25rem;
|
|
36
|
+
--container-7xl: 80rem;
|
|
37
|
+
--text-xs: 0.75rem;
|
|
38
|
+
--text-xs--line-height: calc(1 / 0.75);
|
|
18
39
|
--text-sm: 0.875rem;
|
|
19
40
|
--text-sm--line-height: calc(1.25 / 0.875);
|
|
41
|
+
--text-lg: 1.125rem;
|
|
42
|
+
--text-lg--line-height: calc(1.75 / 1.125);
|
|
43
|
+
--text-3xl: 1.875rem;
|
|
44
|
+
--text-3xl--line-height: calc(2.25 / 1.875);
|
|
20
45
|
--font-weight-medium: 500;
|
|
46
|
+
--font-weight-semibold: 600;
|
|
47
|
+
--font-weight-bold: 700;
|
|
48
|
+
--tracking-wider: 0.05em;
|
|
21
49
|
--radius-md: 0.375rem;
|
|
50
|
+
--radius-lg: 0.5rem;
|
|
51
|
+
--default-transition-duration: 150ms;
|
|
52
|
+
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
22
53
|
--default-font-family: var(--font-sans);
|
|
23
54
|
--default-mono-font-family: var(--font-mono);
|
|
24
55
|
}
|
|
@@ -191,30 +222,117 @@
|
|
|
191
222
|
.col-span-4 {
|
|
192
223
|
grid-column: span 4 / span 4;
|
|
193
224
|
}
|
|
225
|
+
.mx-auto {
|
|
226
|
+
margin-inline: auto;
|
|
227
|
+
}
|
|
194
228
|
.mt-1 {
|
|
195
229
|
margin-top: calc(var(--spacing) * 1);
|
|
196
230
|
}
|
|
231
|
+
.mt-2 {
|
|
232
|
+
margin-top: calc(var(--spacing) * 2);
|
|
233
|
+
}
|
|
234
|
+
.mt-8 {
|
|
235
|
+
margin-top: calc(var(--spacing) * 8);
|
|
236
|
+
}
|
|
197
237
|
.mb-1 {
|
|
198
238
|
margin-bottom: calc(var(--spacing) * 1);
|
|
199
239
|
}
|
|
240
|
+
.mb-4 {
|
|
241
|
+
margin-bottom: calc(var(--spacing) * 4);
|
|
242
|
+
}
|
|
243
|
+
.mb-6 {
|
|
244
|
+
margin-bottom: calc(var(--spacing) * 6);
|
|
245
|
+
}
|
|
200
246
|
.ml-1 {
|
|
201
247
|
margin-left: calc(var(--spacing) * 1);
|
|
202
248
|
}
|
|
203
249
|
.block {
|
|
204
250
|
display: block;
|
|
205
251
|
}
|
|
252
|
+
.flex {
|
|
253
|
+
display: flex;
|
|
254
|
+
}
|
|
206
255
|
.grid {
|
|
207
256
|
display: grid;
|
|
208
257
|
}
|
|
209
258
|
.hidden {
|
|
210
259
|
display: none;
|
|
211
260
|
}
|
|
261
|
+
.inline-flex {
|
|
262
|
+
display: inline-flex;
|
|
263
|
+
}
|
|
212
264
|
.table {
|
|
213
265
|
display: table;
|
|
214
266
|
}
|
|
267
|
+
.h-16 {
|
|
268
|
+
height: calc(var(--spacing) * 16);
|
|
269
|
+
}
|
|
270
|
+
.min-h-screen {
|
|
271
|
+
min-height: 100vh;
|
|
272
|
+
}
|
|
215
273
|
.w-full {
|
|
216
274
|
width: 100%;
|
|
217
275
|
}
|
|
276
|
+
.max-w-7xl {
|
|
277
|
+
max-width: var(--container-7xl);
|
|
278
|
+
}
|
|
279
|
+
.min-w-full {
|
|
280
|
+
min-width: 100%;
|
|
281
|
+
}
|
|
282
|
+
.grid-cols-4 {
|
|
283
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
284
|
+
}
|
|
285
|
+
.items-center {
|
|
286
|
+
align-items: center;
|
|
287
|
+
}
|
|
288
|
+
.justify-between {
|
|
289
|
+
justify-content: space-between;
|
|
290
|
+
}
|
|
291
|
+
.justify-end {
|
|
292
|
+
justify-content: flex-end;
|
|
293
|
+
}
|
|
294
|
+
.gap-3 {
|
|
295
|
+
gap: calc(var(--spacing) * 3);
|
|
296
|
+
}
|
|
297
|
+
.gap-4 {
|
|
298
|
+
gap: calc(var(--spacing) * 4);
|
|
299
|
+
}
|
|
300
|
+
.gap-6 {
|
|
301
|
+
gap: calc(var(--spacing) * 6);
|
|
302
|
+
}
|
|
303
|
+
.space-y-6 {
|
|
304
|
+
:where(& > :not(:last-child)) {
|
|
305
|
+
--tw-space-y-reverse: 0;
|
|
306
|
+
margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
|
|
307
|
+
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
.divide-y {
|
|
311
|
+
:where(& > :not(:last-child)) {
|
|
312
|
+
--tw-divide-y-reverse: 0;
|
|
313
|
+
border-bottom-style: var(--tw-border-style);
|
|
314
|
+
border-top-style: var(--tw-border-style);
|
|
315
|
+
border-top-width: calc(1px * var(--tw-divide-y-reverse));
|
|
316
|
+
border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
.divide-gray-200 {
|
|
320
|
+
:where(& > :not(:last-child)) {
|
|
321
|
+
border-color: var(--color-gray-200);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
.overflow-hidden {
|
|
325
|
+
overflow: hidden;
|
|
326
|
+
}
|
|
327
|
+
.overflow-x-auto {
|
|
328
|
+
overflow-x: auto;
|
|
329
|
+
}
|
|
330
|
+
.rounded-full {
|
|
331
|
+
border-radius: calc(infinity * 1px);
|
|
332
|
+
}
|
|
333
|
+
.rounded-lg {
|
|
334
|
+
border-radius: var(--radius-lg);
|
|
335
|
+
}
|
|
218
336
|
.rounded-md {
|
|
219
337
|
border-radius: var(--radius-md);
|
|
220
338
|
}
|
|
@@ -222,45 +340,253 @@
|
|
|
222
340
|
border-style: var(--tw-border-style);
|
|
223
341
|
border-width: 1px;
|
|
224
342
|
}
|
|
343
|
+
.border-t {
|
|
344
|
+
border-top-style: var(--tw-border-style);
|
|
345
|
+
border-top-width: 1px;
|
|
346
|
+
}
|
|
347
|
+
.border-b {
|
|
348
|
+
border-bottom-style: var(--tw-border-style);
|
|
349
|
+
border-bottom-width: 1px;
|
|
350
|
+
}
|
|
351
|
+
.border-gray-200 {
|
|
352
|
+
border-color: var(--color-gray-200);
|
|
353
|
+
}
|
|
225
354
|
.border-gray-300 {
|
|
226
355
|
border-color: var(--color-gray-300);
|
|
227
356
|
}
|
|
357
|
+
.border-red-200 {
|
|
358
|
+
border-color: var(--color-red-200);
|
|
359
|
+
}
|
|
228
360
|
.border-red-500 {
|
|
229
361
|
border-color: var(--color-red-500);
|
|
230
362
|
}
|
|
363
|
+
.bg-blue-600 {
|
|
364
|
+
background-color: var(--color-blue-600);
|
|
365
|
+
}
|
|
366
|
+
.bg-gray-50 {
|
|
367
|
+
background-color: var(--color-gray-50);
|
|
368
|
+
}
|
|
231
369
|
.bg-gray-100 {
|
|
232
370
|
background-color: var(--color-gray-100);
|
|
233
371
|
}
|
|
372
|
+
.bg-gray-200 {
|
|
373
|
+
background-color: var(--color-gray-200);
|
|
374
|
+
}
|
|
375
|
+
.bg-green-100 {
|
|
376
|
+
background-color: var(--color-green-100);
|
|
377
|
+
}
|
|
378
|
+
.bg-red-50 {
|
|
379
|
+
background-color: var(--color-red-50);
|
|
380
|
+
}
|
|
381
|
+
.bg-red-600 {
|
|
382
|
+
background-color: var(--color-red-600);
|
|
383
|
+
}
|
|
384
|
+
.bg-white {
|
|
385
|
+
background-color: var(--color-white);
|
|
386
|
+
}
|
|
387
|
+
.p-4 {
|
|
388
|
+
padding: calc(var(--spacing) * 4);
|
|
389
|
+
}
|
|
390
|
+
.p-6 {
|
|
391
|
+
padding: calc(var(--spacing) * 6);
|
|
392
|
+
}
|
|
393
|
+
.p-12 {
|
|
394
|
+
padding: calc(var(--spacing) * 12);
|
|
395
|
+
}
|
|
396
|
+
.px-2\.5 {
|
|
397
|
+
padding-inline: calc(var(--spacing) * 2.5);
|
|
398
|
+
}
|
|
234
399
|
.px-3 {
|
|
235
400
|
padding-inline: calc(var(--spacing) * 3);
|
|
236
401
|
}
|
|
402
|
+
.px-4 {
|
|
403
|
+
padding-inline: calc(var(--spacing) * 4);
|
|
404
|
+
}
|
|
405
|
+
.px-6 {
|
|
406
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
407
|
+
}
|
|
408
|
+
.py-0\.5 {
|
|
409
|
+
padding-block: calc(var(--spacing) * 0.5);
|
|
410
|
+
}
|
|
237
411
|
.py-2 {
|
|
238
412
|
padding-block: calc(var(--spacing) * 2);
|
|
239
413
|
}
|
|
414
|
+
.py-3 {
|
|
415
|
+
padding-block: calc(var(--spacing) * 3);
|
|
416
|
+
}
|
|
417
|
+
.py-4 {
|
|
418
|
+
padding-block: calc(var(--spacing) * 4);
|
|
419
|
+
}
|
|
420
|
+
.py-8 {
|
|
421
|
+
padding-block: calc(var(--spacing) * 8);
|
|
422
|
+
}
|
|
423
|
+
.pt-6 {
|
|
424
|
+
padding-top: calc(var(--spacing) * 6);
|
|
425
|
+
}
|
|
426
|
+
.text-center {
|
|
427
|
+
text-align: center;
|
|
428
|
+
}
|
|
429
|
+
.text-left {
|
|
430
|
+
text-align: left;
|
|
431
|
+
}
|
|
432
|
+
.text-right {
|
|
433
|
+
text-align: right;
|
|
434
|
+
}
|
|
435
|
+
.text-3xl {
|
|
436
|
+
font-size: var(--text-3xl);
|
|
437
|
+
line-height: var(--tw-leading, var(--text-3xl--line-height));
|
|
438
|
+
}
|
|
439
|
+
.text-lg {
|
|
440
|
+
font-size: var(--text-lg);
|
|
441
|
+
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
442
|
+
}
|
|
240
443
|
.text-sm {
|
|
241
444
|
font-size: var(--text-sm);
|
|
242
445
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
243
446
|
}
|
|
447
|
+
.text-xs {
|
|
448
|
+
font-size: var(--text-xs);
|
|
449
|
+
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
450
|
+
}
|
|
451
|
+
.font-bold {
|
|
452
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
453
|
+
font-weight: var(--font-weight-bold);
|
|
454
|
+
}
|
|
244
455
|
.font-medium {
|
|
245
456
|
--tw-font-weight: var(--font-weight-medium);
|
|
246
457
|
font-weight: var(--font-weight-medium);
|
|
247
458
|
}
|
|
459
|
+
.font-semibold {
|
|
460
|
+
--tw-font-weight: var(--font-weight-semibold);
|
|
461
|
+
font-weight: var(--font-weight-semibold);
|
|
462
|
+
}
|
|
463
|
+
.tracking-wider {
|
|
464
|
+
--tw-tracking: var(--tracking-wider);
|
|
465
|
+
letter-spacing: var(--tracking-wider);
|
|
466
|
+
}
|
|
467
|
+
.whitespace-nowrap {
|
|
468
|
+
white-space: nowrap;
|
|
469
|
+
}
|
|
248
470
|
.text-black {
|
|
249
471
|
color: var(--color-black);
|
|
250
472
|
}
|
|
473
|
+
.text-blue-600 {
|
|
474
|
+
color: var(--color-blue-600);
|
|
475
|
+
}
|
|
476
|
+
.text-gray-400 {
|
|
477
|
+
color: var(--color-gray-400);
|
|
478
|
+
}
|
|
479
|
+
.text-gray-500 {
|
|
480
|
+
color: var(--color-gray-500);
|
|
481
|
+
}
|
|
482
|
+
.text-gray-600 {
|
|
483
|
+
color: var(--color-gray-600);
|
|
484
|
+
}
|
|
251
485
|
.text-gray-700 {
|
|
252
486
|
color: var(--color-gray-700);
|
|
253
487
|
}
|
|
488
|
+
.text-gray-800 {
|
|
489
|
+
color: var(--color-gray-800);
|
|
490
|
+
}
|
|
491
|
+
.text-gray-900 {
|
|
492
|
+
color: var(--color-gray-900);
|
|
493
|
+
}
|
|
494
|
+
.text-green-800 {
|
|
495
|
+
color: var(--color-green-800);
|
|
496
|
+
}
|
|
254
497
|
.text-red-500 {
|
|
255
498
|
color: var(--color-red-500);
|
|
256
499
|
}
|
|
257
500
|
.text-red-600 {
|
|
258
501
|
color: var(--color-red-600);
|
|
259
502
|
}
|
|
503
|
+
.text-red-700 {
|
|
504
|
+
color: var(--color-red-700);
|
|
505
|
+
}
|
|
506
|
+
.text-white {
|
|
507
|
+
color: var(--color-white);
|
|
508
|
+
}
|
|
509
|
+
.uppercase {
|
|
510
|
+
text-transform: uppercase;
|
|
511
|
+
}
|
|
512
|
+
.italic {
|
|
513
|
+
font-style: italic;
|
|
514
|
+
}
|
|
515
|
+
.shadow {
|
|
516
|
+
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
517
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
518
|
+
}
|
|
260
519
|
.shadow-sm {
|
|
261
520
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
262
521
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
263
522
|
}
|
|
523
|
+
.transition-all {
|
|
524
|
+
transition-property: all;
|
|
525
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
526
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
527
|
+
}
|
|
528
|
+
.transition-colors {
|
|
529
|
+
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
|
|
530
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
531
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
532
|
+
}
|
|
533
|
+
.hover\:border-blue-300 {
|
|
534
|
+
&:hover {
|
|
535
|
+
@media (hover: hover) {
|
|
536
|
+
border-color: var(--color-blue-300);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
.hover\:bg-blue-700 {
|
|
541
|
+
&:hover {
|
|
542
|
+
@media (hover: hover) {
|
|
543
|
+
background-color: var(--color-blue-700);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
.hover\:bg-gray-50 {
|
|
548
|
+
&:hover {
|
|
549
|
+
@media (hover: hover) {
|
|
550
|
+
background-color: var(--color-gray-50);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
.hover\:bg-gray-300 {
|
|
555
|
+
&:hover {
|
|
556
|
+
@media (hover: hover) {
|
|
557
|
+
background-color: var(--color-gray-300);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
.hover\:bg-red-700 {
|
|
562
|
+
&:hover {
|
|
563
|
+
@media (hover: hover) {
|
|
564
|
+
background-color: var(--color-red-700);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
.hover\:text-blue-900 {
|
|
569
|
+
&:hover {
|
|
570
|
+
@media (hover: hover) {
|
|
571
|
+
color: var(--color-blue-900);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
.hover\:text-red-900 {
|
|
576
|
+
&:hover {
|
|
577
|
+
@media (hover: hover) {
|
|
578
|
+
color: var(--color-red-900);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
.hover\:shadow-md {
|
|
583
|
+
&:hover {
|
|
584
|
+
@media (hover: hover) {
|
|
585
|
+
--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
586
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
264
590
|
.focus\:border-blue-500 {
|
|
265
591
|
&:focus {
|
|
266
592
|
border-color: var(--color-blue-500);
|
|
@@ -283,6 +609,21 @@
|
|
|
283
609
|
outline-style: none;
|
|
284
610
|
}
|
|
285
611
|
}
|
|
612
|
+
.disabled\:cursor-not-allowed {
|
|
613
|
+
&:disabled {
|
|
614
|
+
cursor: not-allowed;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
.disabled\:opacity-50 {
|
|
618
|
+
&:disabled {
|
|
619
|
+
opacity: 50%;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
.sm\:px-6 {
|
|
623
|
+
@media (width >= 40rem) {
|
|
624
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
286
627
|
.md\:col-span-1 {
|
|
287
628
|
@media (width >= 48rem) {
|
|
288
629
|
grid-column: span 1 / span 1;
|
|
@@ -303,6 +644,31 @@
|
|
|
303
644
|
grid-column: span 4 / span 4;
|
|
304
645
|
}
|
|
305
646
|
}
|
|
647
|
+
.md\:grid-cols-2 {
|
|
648
|
+
@media (width >= 48rem) {
|
|
649
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
.lg\:grid-cols-3 {
|
|
653
|
+
@media (width >= 64rem) {
|
|
654
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
.lg\:px-8 {
|
|
658
|
+
@media (width >= 64rem) {
|
|
659
|
+
padding-inline: calc(var(--spacing) * 8);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
@property --tw-space-y-reverse {
|
|
664
|
+
syntax: "*";
|
|
665
|
+
inherits: false;
|
|
666
|
+
initial-value: 0;
|
|
667
|
+
}
|
|
668
|
+
@property --tw-divide-y-reverse {
|
|
669
|
+
syntax: "*";
|
|
670
|
+
inherits: false;
|
|
671
|
+
initial-value: 0;
|
|
306
672
|
}
|
|
307
673
|
@property --tw-border-style {
|
|
308
674
|
syntax: "*";
|
|
@@ -313,6 +679,10 @@
|
|
|
313
679
|
syntax: "*";
|
|
314
680
|
inherits: false;
|
|
315
681
|
}
|
|
682
|
+
@property --tw-tracking {
|
|
683
|
+
syntax: "*";
|
|
684
|
+
inherits: false;
|
|
685
|
+
}
|
|
316
686
|
@property --tw-shadow {
|
|
317
687
|
syntax: "*";
|
|
318
688
|
inherits: false;
|
|
@@ -381,8 +751,11 @@
|
|
|
381
751
|
@layer properties {
|
|
382
752
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
383
753
|
*, ::before, ::after, ::backdrop {
|
|
754
|
+
--tw-space-y-reverse: 0;
|
|
755
|
+
--tw-divide-y-reverse: 0;
|
|
384
756
|
--tw-border-style: solid;
|
|
385
757
|
--tw-font-weight: initial;
|
|
758
|
+
--tw-tracking: initial;
|
|
386
759
|
--tw-shadow: 0 0 #0000;
|
|
387
760
|
--tw-shadow-color: initial;
|
|
388
761
|
--tw-shadow-alpha: 100%;
|
package/package.json
CHANGED