opencodekit 0.15.0 → 0.15.2
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/dist/index.js +367 -31
- package/dist/template/.opencode/README.md +1 -1
- package/dist/template/.opencode/agent/vision.md +4 -4
- package/dist/template/.opencode/command/agent-browser.md +21 -0
- package/dist/template/.opencode/command/complete-next-task.md +77 -0
- package/dist/template/.opencode/command/create.md +38 -3
- package/dist/template/.opencode/command/design-audit.md +1 -1
- package/dist/template/.opencode/command/design.md +1 -1
- package/dist/template/.opencode/command/finish.md +8 -0
- package/dist/template/.opencode/command/frontend-design.md +21 -0
- package/dist/template/.opencode/command/index-knowledge.md +25 -0
- package/dist/template/.opencode/command/init.md +6 -0
- package/dist/template/.opencode/command/opensrc.md +58 -0
- package/dist/template/.opencode/command/skill-create.md +3 -3
- package/dist/template/.opencode/command/skill-optimize.md +2 -2
- package/dist/template/.opencode/command/start.md +15 -6
- package/dist/template/.opencode/command/ui-review.md +1 -1
- package/dist/template/.opencode/memory/_templates/prd.md +50 -14
- package/dist/template/.opencode/opencode.json +143 -159
- package/dist/template/.opencode/package.json +1 -1
- package/dist/template/.opencode/skill/accessibility-audit/SKILL.md +1 -1
- package/dist/template/.opencode/skill/agent-browser/SKILL.md +376 -0
- package/dist/template/.opencode/skill/design-system-audit/SKILL.md +1 -1
- package/dist/template/.opencode/skill/frontend-design/SKILL.md +155 -0
- package/dist/template/.opencode/skill/frontend-design/references/animation/motion-advanced.md +224 -0
- package/dist/template/.opencode/skill/frontend-design/references/animation/motion-core.md +171 -0
- package/dist/template/.opencode/skill/frontend-design/references/canvas/execution.md +90 -0
- package/dist/template/.opencode/skill/frontend-design/references/canvas/philosophy.md +94 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/accessibility.md +132 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/core-components.md +153 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/form-components.md +158 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/setup.md +69 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/theming.md +152 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/responsive.md +112 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-layout.md +134 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-styling.md +165 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-config.md +147 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-features.md +128 -0
- package/dist/template/.opencode/skill/index-knowledge/SKILL.md +358 -0
- package/dist/template/.opencode/skill/mockup-to-code/SKILL.md +1 -1
- package/dist/template/.opencode/skill/opensrc/SKILL.md +115 -0
- package/dist/template/.opencode/skill/opensrc/references/architecture.md +176 -0
- package/dist/template/.opencode/skill/opensrc/references/cli-usage.md +176 -0
- package/dist/template/.opencode/skill/opensrc/references/registry-support.md +137 -0
- package/dist/template/.opencode/skill/prd/SKILL.md +212 -0
- package/dist/template/.opencode/skill/prd-task/SKILL.md +128 -0
- package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +28 -0
- package/dist/template/.opencode/skill/skill-creator/SKILL.md +155 -0
- package/dist/template/.opencode/skill/ui-ux-research/SKILL.md +1 -1
- package/dist/template/.opencode/skill/visual-analysis/SKILL.md +1 -1
- package/package.json +1 -1
- package/dist/template/.opencode/skill/frontend-aesthetics/SKILL.md +0 -117
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Tailwind Layout Utilities
|
|
2
|
+
|
|
3
|
+
Display, flexbox, grid, positioning, z-index.
|
|
4
|
+
|
|
5
|
+
## Display
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<div class="block">Block</div>
|
|
9
|
+
<div class="inline-block">Inline Block</div>
|
|
10
|
+
<div class="flex">Flexbox</div>
|
|
11
|
+
<div class="inline-flex">Inline Flex</div>
|
|
12
|
+
<div class="grid">Grid</div>
|
|
13
|
+
<div class="hidden">Hidden</div>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Flexbox
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<!-- Direction -->
|
|
20
|
+
<div class="flex flex-row">Row</div>
|
|
21
|
+
<div class="flex flex-col">Column</div>
|
|
22
|
+
<div class="flex flex-row-reverse">Reverse</div>
|
|
23
|
+
|
|
24
|
+
<!-- Justify (main axis) -->
|
|
25
|
+
<div class="flex justify-start">Start</div>
|
|
26
|
+
<div class="flex justify-center">Center</div>
|
|
27
|
+
<div class="flex justify-end">End</div>
|
|
28
|
+
<div class="flex justify-between">Between</div>
|
|
29
|
+
<div class="flex justify-evenly">Evenly</div>
|
|
30
|
+
|
|
31
|
+
<!-- Align (cross axis) -->
|
|
32
|
+
<div class="flex items-start">Start</div>
|
|
33
|
+
<div class="flex items-center">Center</div>
|
|
34
|
+
<div class="flex items-end">End</div>
|
|
35
|
+
<div class="flex items-stretch">Stretch</div>
|
|
36
|
+
|
|
37
|
+
<!-- Gap -->
|
|
38
|
+
<div class="flex gap-4">All</div>
|
|
39
|
+
<div class="flex gap-x-6 gap-y-2">X/Y</div>
|
|
40
|
+
|
|
41
|
+
<!-- Wrap -->
|
|
42
|
+
<div class="flex flex-wrap">Wrap</div>
|
|
43
|
+
<div class="flex flex-nowrap">No wrap</div>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Grid
|
|
47
|
+
|
|
48
|
+
```html
|
|
49
|
+
<!-- Columns (v4: any number) -->
|
|
50
|
+
<div class="grid grid-cols-1">1 col</div>
|
|
51
|
+
<div class="grid grid-cols-3">3 cols</div>
|
|
52
|
+
<div class="grid grid-cols-12">12 cols</div>
|
|
53
|
+
<div class="grid grid-cols-15">15 cols (v4)</div>
|
|
54
|
+
|
|
55
|
+
<!-- Custom grid -->
|
|
56
|
+
<div class="grid grid-cols-[1fr_500px_2fr]">Custom</div>
|
|
57
|
+
|
|
58
|
+
<!-- Span -->
|
|
59
|
+
<div class="col-span-2">Span 2</div>
|
|
60
|
+
<div class="row-span-3">Span 3 rows</div>
|
|
61
|
+
|
|
62
|
+
<!-- Gap -->
|
|
63
|
+
<div class="grid gap-4">All</div>
|
|
64
|
+
<div class="grid gap-x-8 gap-y-4">X/Y</div>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Positioning
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<div class="static">Static</div>
|
|
71
|
+
<div class="relative">Relative</div>
|
|
72
|
+
<div class="absolute">Absolute</div>
|
|
73
|
+
<div class="fixed">Fixed</div>
|
|
74
|
+
<div class="sticky">Sticky</div>
|
|
75
|
+
|
|
76
|
+
<!-- Position values -->
|
|
77
|
+
<div class="absolute top-0 right-0">Top right</div>
|
|
78
|
+
<div class="absolute inset-0">All 0</div>
|
|
79
|
+
<div class="absolute inset-x-4">Left/right 4</div>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Z-Index
|
|
83
|
+
|
|
84
|
+
```html
|
|
85
|
+
<div class="z-0">0</div>
|
|
86
|
+
<div class="z-10">10</div>
|
|
87
|
+
<div class="z-50">50</div>
|
|
88
|
+
<div class="z-[100]">Custom</div>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Width & Height
|
|
92
|
+
|
|
93
|
+
```html
|
|
94
|
+
<!-- Width -->
|
|
95
|
+
<div class="w-full">100%</div>
|
|
96
|
+
<div class="w-1/2">50%</div>
|
|
97
|
+
<div class="w-64">16rem</div>
|
|
98
|
+
<div class="w-[500px]">500px</div>
|
|
99
|
+
<div class="w-screen">100vw</div>
|
|
100
|
+
|
|
101
|
+
<!-- Max width -->
|
|
102
|
+
<div class="max-w-md">28rem</div>
|
|
103
|
+
<div class="max-w-screen-xl">1280px</div>
|
|
104
|
+
|
|
105
|
+
<!-- Height -->
|
|
106
|
+
<div class="h-full">100%</div>
|
|
107
|
+
<div class="h-screen">100vh</div>
|
|
108
|
+
<div class="min-h-screen">min 100vh</div>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Aspect Ratio
|
|
112
|
+
|
|
113
|
+
```html
|
|
114
|
+
<div class="aspect-square">1:1</div>
|
|
115
|
+
<div class="aspect-video">16:9</div>
|
|
116
|
+
<div class="aspect-[4/3]">4:3</div>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Overflow
|
|
120
|
+
|
|
121
|
+
```html
|
|
122
|
+
<div class="overflow-auto">Auto scroll</div>
|
|
123
|
+
<div class="overflow-hidden">Hidden</div>
|
|
124
|
+
<div class="overflow-x-auto">Horizontal scroll</div>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Responsive Order
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<div class="flex flex-col">
|
|
131
|
+
<div class="order-2 lg:order-1">First on desktop</div>
|
|
132
|
+
<div class="order-1 lg:order-2">First on mobile</div>
|
|
133
|
+
</div>
|
|
134
|
+
```
|
package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-styling.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# Tailwind Styling Utilities
|
|
2
|
+
|
|
3
|
+
Spacing, typography, colors, borders, shadows, transforms.
|
|
4
|
+
|
|
5
|
+
## Spacing
|
|
6
|
+
|
|
7
|
+
### Padding
|
|
8
|
+
```html
|
|
9
|
+
<div class="p-4">All</div>
|
|
10
|
+
<div class="px-6">X axis</div>
|
|
11
|
+
<div class="py-3">Y axis</div>
|
|
12
|
+
<div class="pt-8 pr-4 pb-2 pl-6">Individual</div>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Margin
|
|
16
|
+
```html
|
|
17
|
+
<div class="m-4">All</div>
|
|
18
|
+
<div class="mx-auto">Center</div>
|
|
19
|
+
<div class="my-6">Y axis</div>
|
|
20
|
+
<div class="-mt-4">Negative</div>
|
|
21
|
+
<div class="ml-auto">Push right</div>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Scale
|
|
25
|
+
```
|
|
26
|
+
0=0px, px=1px, 0.5=2px, 1=4px, 2=8px, 3=12px, 4=16px
|
|
27
|
+
6=24px, 8=32px, 12=48px, 16=64px, 24=96px
|
|
28
|
+
v4: Any value: mt-17, px-29
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Typography
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<!-- Size -->
|
|
35
|
+
<p class="text-xs">12px</p>
|
|
36
|
+
<p class="text-sm">14px</p>
|
|
37
|
+
<p class="text-base">16px</p>
|
|
38
|
+
<p class="text-lg">18px</p>
|
|
39
|
+
<p class="text-xl">20px</p>
|
|
40
|
+
<p class="text-2xl">24px</p>
|
|
41
|
+
<p class="text-4xl">36px</p>
|
|
42
|
+
|
|
43
|
+
<!-- Weight -->
|
|
44
|
+
<p class="font-light">300</p>
|
|
45
|
+
<p class="font-normal">400</p>
|
|
46
|
+
<p class="font-medium">500</p>
|
|
47
|
+
<p class="font-semibold">600</p>
|
|
48
|
+
<p class="font-bold">700</p>
|
|
49
|
+
|
|
50
|
+
<!-- Line height -->
|
|
51
|
+
<p class="leading-tight">1.25</p>
|
|
52
|
+
<p class="leading-normal">1.5</p>
|
|
53
|
+
<h1 class="text-4xl/tight">Combined</h1>
|
|
54
|
+
|
|
55
|
+
<!-- Transform -->
|
|
56
|
+
<p class="uppercase">UPPER</p>
|
|
57
|
+
<p class="lowercase">lower</p>
|
|
58
|
+
<p class="capitalize">Cap</p>
|
|
59
|
+
|
|
60
|
+
<!-- Decoration -->
|
|
61
|
+
<p class="underline">Underline</p>
|
|
62
|
+
<p class="line-through">Strike</p>
|
|
63
|
+
|
|
64
|
+
<!-- Overflow -->
|
|
65
|
+
<p class="truncate">Truncate...</p>
|
|
66
|
+
<p class="line-clamp-3">Clamp 3</p>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Colors
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<!-- Text -->
|
|
73
|
+
<p class="text-black">Black</p>
|
|
74
|
+
<p class="text-gray-500">Gray</p>
|
|
75
|
+
<p class="text-primary">CSS var</p>
|
|
76
|
+
<p class="text-muted-foreground">Muted</p>
|
|
77
|
+
|
|
78
|
+
<!-- Background -->
|
|
79
|
+
<div class="bg-white">White</div>
|
|
80
|
+
<div class="bg-blue-500">Blue</div>
|
|
81
|
+
<div class="bg-background">CSS var</div>
|
|
82
|
+
|
|
83
|
+
<!-- Opacity modifier -->
|
|
84
|
+
<div class="bg-black/75">75%</div>
|
|
85
|
+
<div class="text-blue-500/50">50%</div>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Gradients
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<div class="bg-linear-to-r from-blue-500 to-purple-600">Linear</div>
|
|
92
|
+
<div class="bg-linear-45 from-pink-500 to-yellow-500">Angle (v4)</div>
|
|
93
|
+
<div class="bg-linear-to-br from-pink-500 via-red-500 to-yellow-500">Via</div>
|
|
94
|
+
<div class="bg-linear-to-r/oklch from-indigo-500 to-teal-400">OKLCH (v4)</div>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Borders
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<!-- Width -->
|
|
101
|
+
<div class="border">1px all</div>
|
|
102
|
+
<div class="border-2">2px all</div>
|
|
103
|
+
<div class="border-t">Top only</div>
|
|
104
|
+
|
|
105
|
+
<!-- Color -->
|
|
106
|
+
<div class="border border-gray-300">Gray</div>
|
|
107
|
+
<div class="border border-border">CSS var</div>
|
|
108
|
+
|
|
109
|
+
<!-- Radius -->
|
|
110
|
+
<div class="rounded">0.25rem</div>
|
|
111
|
+
<div class="rounded-lg">0.5rem</div>
|
|
112
|
+
<div class="rounded-full">Pill</div>
|
|
113
|
+
<div class="rounded-t-lg">Top only</div>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Shadows
|
|
117
|
+
|
|
118
|
+
```html
|
|
119
|
+
<div class="shadow-sm">Small</div>
|
|
120
|
+
<div class="shadow">Default</div>
|
|
121
|
+
<div class="shadow-lg">Large</div>
|
|
122
|
+
<div class="shadow-xl">XL</div>
|
|
123
|
+
<div class="shadow-lg shadow-blue-500/50">Colored</div>
|
|
124
|
+
<div class="inset-shadow-sm">Inset (v4)</div>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Transforms
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<div class="scale-105">Scale</div>
|
|
131
|
+
<div class="rotate-45">Rotate</div>
|
|
132
|
+
<div class="translate-x-4">Move</div>
|
|
133
|
+
|
|
134
|
+
<!-- 3D (v4) -->
|
|
135
|
+
<div class="rotate-x-45">X</div>
|
|
136
|
+
<div class="rotate-y-30">Y</div>
|
|
137
|
+
<div class="perspective-distant">Perspective</div>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Transitions
|
|
141
|
+
|
|
142
|
+
```html
|
|
143
|
+
<div class="transition-all">All</div>
|
|
144
|
+
<div class="transition-colors">Colors</div>
|
|
145
|
+
<div class="transition-transform">Transform</div>
|
|
146
|
+
<div class="duration-300">300ms</div>
|
|
147
|
+
<div class="ease-in-out">Easing</div>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Other
|
|
151
|
+
|
|
152
|
+
```html
|
|
153
|
+
<div class="opacity-50">50%</div>
|
|
154
|
+
<div class="cursor-pointer">Pointer</div>
|
|
155
|
+
<div class="select-none">No select</div>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Arbitrary Values
|
|
159
|
+
|
|
160
|
+
```html
|
|
161
|
+
<div class="p-[17px]">Custom</div>
|
|
162
|
+
<div class="bg-[#bada55]">Hex</div>
|
|
163
|
+
<div class="w-[calc(100%-2rem)]">Calc</div>
|
|
164
|
+
<div class="grid-cols-[1fr_500px_2fr]">Grid</div>
|
|
165
|
+
```
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Tailwind CSS v4 Configuration
|
|
2
|
+
|
|
3
|
+
v4.1.x (current: v4.1.18) - CSS-first config, no tailwind.config.js needed.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Vite (Recommended)
|
|
8
|
+
```bash
|
|
9
|
+
npm i tailwindcss @tailwindcss/vite
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
// vite.config.ts
|
|
14
|
+
import tailwindcss from "@tailwindcss/vite"
|
|
15
|
+
export default { plugins: [tailwindcss()] }
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```css
|
|
19
|
+
/* src/index.css */
|
|
20
|
+
@import "tailwindcss";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### PostCSS
|
|
24
|
+
```bash
|
|
25
|
+
npm i tailwindcss @tailwindcss/postcss
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
// postcss.config.js
|
|
30
|
+
export default { plugins: ["@tailwindcss/postcss"] }
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## CSS-First Configuration
|
|
34
|
+
|
|
35
|
+
Configure in CSS with `@theme`:
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
@import "tailwindcss";
|
|
39
|
+
|
|
40
|
+
@theme {
|
|
41
|
+
/* OKLCH colors for vivid, wide-gamut */
|
|
42
|
+
--color-brand-50: oklch(0.97 0.02 264);
|
|
43
|
+
--color-brand-500: oklch(0.55 0.22 264);
|
|
44
|
+
--color-brand-900: oklch(0.25 0.15 264);
|
|
45
|
+
|
|
46
|
+
/* Fonts */
|
|
47
|
+
--font-display: "Satoshi", sans-serif;
|
|
48
|
+
--font-body: "Inter", system-ui, sans-serif;
|
|
49
|
+
|
|
50
|
+
/* Spacing, breakpoints, easing */
|
|
51
|
+
--spacing-18: calc(var(--spacing) * 18);
|
|
52
|
+
--breakpoint-3xl: 1920px;
|
|
53
|
+
--ease-fluid: cubic-bezier(0.3, 0, 0, 1);
|
|
54
|
+
|
|
55
|
+
/* Shadows */
|
|
56
|
+
--shadow-glow: 0 0 20px oklch(0.55 0.22 264 / 0.3);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Usage: `<div class="bg-brand-500 font-display shadow-glow">`
|
|
61
|
+
|
|
62
|
+
## Key v4 Changes from v3
|
|
63
|
+
|
|
64
|
+
| v3 | v4 |
|
|
65
|
+
|----|-----|
|
|
66
|
+
| `@tailwind base/components/utilities` | `@import "tailwindcss"` |
|
|
67
|
+
| `tailwind.config.js` | `@theme` directive |
|
|
68
|
+
| `content: [...]` array | Automatic detection |
|
|
69
|
+
| sRGB colors | OKLCH/P3 colors |
|
|
70
|
+
| `bg-opacity-50` | `bg-black/50` modifier |
|
|
71
|
+
| Plugin for container queries | Built-in `@container` |
|
|
72
|
+
|
|
73
|
+
## Automatic Content Detection
|
|
74
|
+
|
|
75
|
+
No `content` array. Auto-ignores `.gitignore` and binary files.
|
|
76
|
+
|
|
77
|
+
Add sources manually if needed:
|
|
78
|
+
```css
|
|
79
|
+
@source "../node_modules/@my-company/ui-lib";
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Dynamic Values
|
|
83
|
+
|
|
84
|
+
Any value works without config:
|
|
85
|
+
```html
|
|
86
|
+
<div class="grid grid-cols-15">
|
|
87
|
+
<div class="mt-17 px-29">
|
|
88
|
+
<div data-active class="data-active:bg-blue-500">
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## OKLCH Colors
|
|
92
|
+
|
|
93
|
+
Wider gamut, more vivid:
|
|
94
|
+
```css
|
|
95
|
+
@theme {
|
|
96
|
+
--color-primary-50: oklch(0.98 0.02 250);
|
|
97
|
+
--color-primary-500: oklch(0.65 0.22 250);
|
|
98
|
+
--color-primary-900: oklch(0.25 0.15 250);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Opacity modifier: `<div class="bg-primary-500/50">`
|
|
103
|
+
|
|
104
|
+
## Custom Utilities & Variants
|
|
105
|
+
|
|
106
|
+
```css
|
|
107
|
+
@utility glass {
|
|
108
|
+
background: oklch(1 0 0 / 0.1);
|
|
109
|
+
backdrop-filter: blur(10px);
|
|
110
|
+
border: 1px solid oklch(1 0 0 / 0.2);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@custom-variant theme-dark (&:where([data-theme="dark"] *));
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Layer Organization
|
|
117
|
+
|
|
118
|
+
```css
|
|
119
|
+
@layer base { h1 { @apply text-4xl font-bold; } }
|
|
120
|
+
@layer components { .btn { @apply px-4 py-2 rounded-lg; } }
|
|
121
|
+
@layer utilities { .text-balance { text-wrap: balance; } }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Dark Mode
|
|
125
|
+
|
|
126
|
+
Class strategy by default:
|
|
127
|
+
```html
|
|
128
|
+
<html class="dark">
|
|
129
|
+
<div class="bg-white dark:bg-zinc-900">
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Migration from v3
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx @tailwindcss/upgrade
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- Move `tailwind.config.js` to `@theme`
|
|
139
|
+
- Replace `@tailwind` with `@import "tailwindcss"`
|
|
140
|
+
- Remove `content` array
|
|
141
|
+
- Replace `bg-opacity-*` with `/opacity` modifier
|
|
142
|
+
|
|
143
|
+
## Performance
|
|
144
|
+
|
|
145
|
+
- Full builds: 3.5x+ faster
|
|
146
|
+
- Incremental: 8x+ faster
|
|
147
|
+
- No-new-CSS: 100x+ faster (microseconds)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Tailwind CSS v4 New Features
|
|
2
|
+
|
|
3
|
+
v4/v4.1 additions: gradients, 3D transforms, masks, text shadows, new variants.
|
|
4
|
+
|
|
5
|
+
## Container Queries (Built-in)
|
|
6
|
+
|
|
7
|
+
No plugin needed:
|
|
8
|
+
```html
|
|
9
|
+
<div class="@container">
|
|
10
|
+
<div class="grid grid-cols-1 @sm:grid-cols-2 @lg:grid-cols-4">
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- Max-width -->
|
|
14
|
+
<div class="grid-cols-3 @max-md:grid-cols-1">
|
|
15
|
+
|
|
16
|
+
<!-- Range -->
|
|
17
|
+
<div class="@min-md:@max-xl:hidden">
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Gradients
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<!-- Angle-based -->
|
|
24
|
+
<div class="bg-linear-45 from-indigo-500 to-pink-500">
|
|
25
|
+
|
|
26
|
+
<!-- OKLCH interpolation -->
|
|
27
|
+
<div class="bg-linear-to-r/oklch from-indigo-500 to-teal-400">
|
|
28
|
+
|
|
29
|
+
<!-- Conic and radial -->
|
|
30
|
+
<div class="bg-conic from-red-500 to-red-500">
|
|
31
|
+
<div class="bg-radial from-white to-zinc-900">
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 3D Transforms
|
|
35
|
+
|
|
36
|
+
```html
|
|
37
|
+
<div class="perspective-distant">
|
|
38
|
+
<div class="rotate-x-45 rotate-z-30 transform-3d">
|
|
39
|
+
</div>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## @starting-style (Enter Transitions)
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<div popover class="transition-all starting:open:opacity-0 starting:open:scale-95">
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## not-* Variant
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<div class="not-hover:opacity-75">
|
|
52
|
+
<div class="not-supports-backdrop-blur:bg-white">
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Text Shadows (v4.1)
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<p class="text-shadow-sm">Small</p>
|
|
59
|
+
<p class="text-shadow-lg">Large</p>
|
|
60
|
+
<p class="text-shadow-lg text-shadow-blue-500/50">Colored</p>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Masks (v4.1)
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<div class="mask-t-from-50%">Fade from top</div>
|
|
67
|
+
<div class="mask-b-from-20% mask-b-to-80%">Bottom fade</div>
|
|
68
|
+
<div class="mask-radial-from-70%">Radial</div>
|
|
69
|
+
<div class="mask-b-from-50% mask-radial-from-80%">Combined</div>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Other v4.1 Utilities
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<!-- Colored drop shadows -->
|
|
76
|
+
<svg class="drop-shadow-xl drop-shadow-cyan-500/50">
|
|
77
|
+
|
|
78
|
+
<!-- Overflow wrap -->
|
|
79
|
+
<p class="wrap-break-word">Break words</p>
|
|
80
|
+
<p class="wrap-anywhere">Break anywhere</p>
|
|
81
|
+
|
|
82
|
+
<!-- Safe alignment -->
|
|
83
|
+
<div class="flex justify-center-safe">
|
|
84
|
+
|
|
85
|
+
<!-- Baseline alignment -->
|
|
86
|
+
<div class="items-baseline-last">
|
|
87
|
+
|
|
88
|
+
<!-- Color scheme -->
|
|
89
|
+
<html class="color-scheme-dark">
|
|
90
|
+
|
|
91
|
+
<!-- Field sizing -->
|
|
92
|
+
<textarea class="field-sizing-content">
|
|
93
|
+
|
|
94
|
+
<!-- Inert styling -->
|
|
95
|
+
<div class="inert:opacity-50" inert>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## New v4.1 Variants
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!-- Pointer device -->
|
|
102
|
+
<div class="pointer-fine:p-2 pointer-coarse:p-4">
|
|
103
|
+
|
|
104
|
+
<!-- Form validation (after interaction) -->
|
|
105
|
+
<input class="user-valid:border-green-500 user-invalid:border-red-500">
|
|
106
|
+
|
|
107
|
+
<!-- Details content -->
|
|
108
|
+
<details class="details-content:mt-3">
|
|
109
|
+
|
|
110
|
+
<!-- Inverted colors -->
|
|
111
|
+
<div class="inverted-colors:shadow-none">
|
|
112
|
+
|
|
113
|
+
<!-- Noscript -->
|
|
114
|
+
<div class="noscript:block hidden">Enable JS</div>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Source Directives (v4.1)
|
|
118
|
+
|
|
119
|
+
```css
|
|
120
|
+
/* Ignore paths */
|
|
121
|
+
@source not "./src/legacy";
|
|
122
|
+
|
|
123
|
+
/* Safelist utilities */
|
|
124
|
+
@source inline("underline");
|
|
125
|
+
|
|
126
|
+
/* Brace expansion */
|
|
127
|
+
@source inline("{hover:,}bg-red-{100..900..100}");
|
|
128
|
+
```
|