tailwind-zag 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/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 John Paul Calvo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,247 @@
1
+ # tailwindcss-plugin-zag
2
+
3
+ A [TailwindCSS](https://tailwindcss.com/) plugin to style [zag](https://zagjs.com/)-powered-components using their [data attributes](https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Use_data_attributes).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -D tailwindcss-plugin-zag
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Add the plugin to your tailwind config
14
+
15
+ ```ts
16
+ // tailwind.config.ts
17
+ import type {Config} from 'tailwindcss';
18
+ import zag from 'tailwindcss-plugin-zag';
19
+
20
+ export default {
21
+ content: ['./src/**/*.{js,ts,jsx,tsx}'],
22
+ plugins: [
23
+ // using the default prefix: "ui"
24
+ zag,
25
+
26
+ // or using a custom prefix
27
+ zag({
28
+ prefix: 'custom-prefix',
29
+ }),
30
+ ],
31
+ } satisfies Config
32
+ ```
33
+
34
+ If you are using tailwind v4, you can add the plugin to your `css` file like this:
35
+
36
+ ```css
37
+ @plugin 'tailwindcss-plugin-zag';
38
+ ```
39
+
40
+ Style your components
41
+
42
+ ```tsx
43
+ import {Field} from '@ark-ui/react';
44
+
45
+ export function Component() {
46
+ return (
47
+ <Field.Root>
48
+ <Field.Input className="ui-invalid:border-red-300 ui-readonly:border-gray-200" />
49
+ </Field.Root>
50
+ );
51
+ }
52
+ ```
53
+
54
+ ### Example using Ark UI react components
55
+
56
+ ```js
57
+ // tailwind.config.js
58
+ import zag from 'tailwindcss-plugin-zag';
59
+
60
+ /** @type {import('tailwindcss').Config} */
61
+ export default {
62
+ content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
63
+ theme: {
64
+ extend: {
65
+ keyframes: {
66
+ 'fade-in': {
67
+ from: {opacity: '0'},
68
+ to: {opacity: '1'},
69
+ },
70
+ 'fade-out': {
71
+ from: {opacity: '1'},
72
+ to: {opacity: '0'},
73
+ },
74
+ },
75
+ animation: {
76
+ 'fade-in': 'fade-in 250ms ease-in-out',
77
+ 'fade-out': 'fade-out 150ms ease-in-out',
78
+ },
79
+ },
80
+ },
81
+ plugins: [zag],
82
+ };
83
+ ```
84
+
85
+ ```tsx
86
+ // App.tsx
87
+ import {Dialog, Portal} from '@ark-ui/react';
88
+
89
+ export function App() {
90
+ return (
91
+ <div className="p-4">
92
+ <Dialog.Root>
93
+ <Dialog.Trigger className="bg-neutral-900 rounded text-white font-semibold h-11 px-4">
94
+ Open
95
+ </Dialog.Trigger>
96
+ <Portal>
97
+ <Dialog.Backdrop className="fixed inset-0 bg-black/50 ui-open:animate-fade-in ui-closed:animate-fade-out" />
98
+ <Dialog.Positioner>
99
+ <Dialog.Content className="fixed max-w-[24rem] rounded w-full left-1/2 -translate-x-1/2 my-16 p-4 bg-white ui-open:animate-fade-in ui-closed:animate-fade-out">
100
+ <Dialog.Title className="text-neutral-800 text-xl font-bold">Title</Dialog.Title>
101
+ <Dialog.Description className="text-neutral-600">Description</Dialog.Description>
102
+ <Dialog.CloseTrigger className="border border-neutral-300 h-11 w-full rounded mt-4">
103
+ Close
104
+ </Dialog.CloseTrigger>
105
+ </Dialog.Content>
106
+ </Dialog.Positioner>
107
+ </Portal>
108
+ </Dialog.Root>
109
+ </div>
110
+ );
111
+ }
112
+ ```
113
+
114
+ ### Using inverse variants
115
+
116
+ To apply the style to the component only when the data attribute is not present, you can add the `-not` prefix before the variant.
117
+
118
+ ```tsx
119
+ <Component className="ui-not-hover:bg-gray-50" />
120
+ ```
121
+
122
+ ### Using group variants
123
+
124
+ You can add `-group` before the variant to apply the style to the component if its parent has the specific data attribute present.
125
+
126
+ ```tsx
127
+ <ParentComponent className="group">
128
+ <ChildComponent className="ui-group-hover:bg-gray-50" />
129
+ </ParentComponent>
130
+ ```
131
+
132
+ ### Using peer variants
133
+
134
+ You can add `-peer` before the variant to apply the style to the component if its sibling has the specific data attribute present.
135
+
136
+ ```tsx
137
+ <ParentComponent>
138
+ <ChildComponent className="ui-peer-hover:bg-gray-50" />
139
+ <ChildComponent className="peer ui-hover:bg-gray-50" />
140
+ </ParentComponent>
141
+ ```
142
+
143
+ ## Variants and their equivalent data attributes
144
+
145
+ | Variant | Data attributes |
146
+ |---------------------------|--------------------------------------------|
147
+ | `hover` | `data-hover` |
148
+ | `focus` | `data-focus` |
149
+ | `focus-visible` | `data-focus-visible` |
150
+ | `focusable` | `data-focusable` |
151
+ | `active` | `data-active` |
152
+ | `invalid` | `data-invalid` |
153
+ | `disabled` | `data-disabled` |
154
+ | `readonly` | `data-readonly` |
155
+ | `current` | `data-current` |
156
+ | `inview` | `data-inview` |
157
+ | `copied` | `data-copied` |
158
+ | `collapsible` | `data-collapsible` |
159
+ | `highlighted` | `data-highlighted` |
160
+ | `selected` | `data-selected` |
161
+ | `placeholder-shown` | `data-placeholder-shown` |
162
+ | `autoresize` | `data-autoresize` |
163
+ | `required` | `data-required` |
164
+ | `dragging` | `data-dragging` |
165
+ | `complete` | `data-complete` |
166
+ | `incomplete` | `data-incomplete` |
167
+ | `expanded` | `data-expanded` |
168
+ | `half` | `data-half` |
169
+ | `first` | `data-first` |
170
+ | `mounted` | `data-mounted` |
171
+ | `overlap` | `data-overlap` |
172
+ | `sibling` | `data-sibling` |
173
+ | `paused` | `data-paused` |
174
+ | `pressed` | `data-pressed` |
175
+ | `on` | `data-state="on"` |
176
+ | `off` | `data-state="off"` |
177
+ | `open` | `data-state="open"` |
178
+ | `closed` | `data-state="closed"` |
179
+ | `hidden` | `data-state="hidden"` |
180
+ | `visible` | `data-state="visible"` |
181
+ | `checked` | `data-checked`, `data-state="checked"` |
182
+ | `unchecked` | `data-unchecked`, `data-state="unchecked"` |
183
+ | `indeterminate` | `data-state="indeterminate"` |
184
+ | `vertical` | `data-orientation="vertical"` |
185
+ | `horizontal` | `data-orientation="horizontal"` |
186
+ | `placement-top` | `data-placement="top"` |
187
+ | `placement-top-end` | `data-placement="top-end"` |
188
+ | `placement-top-start` | `data-placement="top-start"` |
189
+ | `placement-left` | `data-placement="left"` |
190
+ | `placement-left-end` | `data-placement="left-end"` |
191
+ | `placement-left-start` | `data-placement="left-start"` |
192
+ | `placement-right` | `data-placement="right"` |
193
+ | `placement-right-end` | `data-placement="right-end"` |
194
+ | `placement-right-start` | `data-placement="right-start"` |
195
+ | `placement-bottom` | `data-placement="bottom"` |
196
+ | `placement-bottom-end` | `data-placement="bottom-end"` |
197
+ | `placement-bottom-start` | `data-placement="bottom-start"` |
198
+ | `side-top` | `data-side="top"` |
199
+ | `side-left` | `data-side="left"` |
200
+ | `side-right` | `data-side="right"` |
201
+ | `side-bottom` | `data-side="bottom"` |
202
+ | `align-center` | `data-align="center"` |
203
+ | `align-start` | `data-align="start"` |
204
+ | `align-end` | `data-align="end"` |
205
+ | `today` | `data-today` |
206
+ | `weekend` | `data-weekend` |
207
+ | `in-range` | `data-in-range` |
208
+ | `range-start` | `data-range-start` |
209
+ | `range-end` | `data-range-end` |
210
+ | `view-day` | `data-view="day"` |
211
+ | `view-month` | `data-view="month"` |
212
+ | `view-year` | `data-view="year"` |
213
+ | `under-value` | `data-state="under-value"` |
214
+ | `over-value` | `data-state="over-value"` |
215
+ | `delete-intent` | `data-delete-intent` |
216
+ | `unit-hour` | `data-unit="hour"` |
217
+ | `unit-minute` | `data-unit="minute"` |
218
+ | `unit-second` | `data-unit="second"` |
219
+ | `unit-period` | `data-unit="period"` |
220
+ | `channel-hue` | `data-channel="hue"` |
221
+ | `channel-saturation` | `data-channel="saturation"` |
222
+ | `channel-brightness` | `data-channel="brightness"` |
223
+ | `channel-lightness` | `data-channel="lightness"` |
224
+ | `channel-red` | `data-channel="red"` |
225
+ | `channel-green` | `data-channel="green"` |
226
+ | `channel-blue` | `data-channel="blue"` |
227
+ | `channel-alpha` | `data-channel="alpha"` |
228
+ | `channel-hex` | `data-channel="hex"` |
229
+ | `channel-css` | `data-channel="css"` |
230
+ | `tour-highlighted` | `data-tour-highlighted` |
231
+ | `scroll-lock` | `data-scroll-lock` |
232
+ | `inert` | `data-inert` |
233
+ | `scope-<value>` | `data-scope="<value>"` |
234
+ | `part-<value>` | `data-part="<value>"` |
235
+ | `value-<value>` | `data-value="<value>"` |
236
+ | `valuetext-<value>` | `data-valuetext="<value>"` |
237
+ | `index-<value>` | `data-index="<value>"` |
238
+ | `columns-<value>` | `data-columns="<value>"` |
239
+ | `branch-<value>` | `data-branch="<value>"` |
240
+ | `depth-<value>` | `data-depth="<value>"` |
241
+ | `path-<value>` | `data-path="<value>"` |
242
+ | `type-<value>` | `data-type="<value>"` |
243
+
244
+ ## Credits
245
+
246
+ - [@headlessui/tailwindcss](https://github.com/tailwindlabs/headlessui/tree/main/packages/%40headlessui-tailwindcss)
247
+ - [@kobalte/tailwindcss](https://github.com/kobaltedev/kobalte/tree/main/packages/tailwindcss)
package/dist/index.cjs ADDED
@@ -0,0 +1,214 @@
1
+ 'use strict';
2
+
3
+ var plugin = require('tailwindcss/plugin.js');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var plugin__default = /*#__PURE__*/_interopDefault(plugin);
8
+
9
+ // src/index.ts
10
+ var STATIC_VARIANT_ENTRIES = [
11
+ { key: "hover", values: [null] },
12
+ { key: "focus", values: [null] },
13
+ { key: "focus-visible", values: [null] },
14
+ { key: "focusable", values: [null] },
15
+ { key: "active", values: [null] },
16
+ { key: "valid", values: [null] },
17
+ { key: "invalid", values: [null] },
18
+ { key: "disabled", values: [null] },
19
+ { key: "readonly", values: [null, "read-only"] },
20
+ { key: "current", values: [null] },
21
+ { key: "inview", values: [null] },
22
+ { key: "copied", values: [null] },
23
+ { key: "collapsible", values: [null] },
24
+ { key: "highlighted", values: [null] },
25
+ { key: "selected", values: [null] },
26
+ { key: "placeholder", values: [null] },
27
+ { key: "placeholder-shown", values: [null] },
28
+ { key: "autoresize", values: [null] },
29
+ { key: "required", values: [null] },
30
+ { key: "grabbed", values: [null] },
31
+ { key: "dragging", values: [null] },
32
+ { key: "complete", values: [null] },
33
+ { key: "incomplete", values: [null] },
34
+ { key: "expanded", values: [null, 'state="expanded"'] },
35
+ { key: "half", values: [null] },
36
+ { key: "first", values: [null] },
37
+ { key: "mounted", values: [null] },
38
+ { key: "overlap", values: [null] },
39
+ { key: "sibling", values: [null] },
40
+ { key: "paused", values: [null] },
41
+ { key: "pressed", values: [null] },
42
+ { key: "on", values: ['state="on"'] },
43
+ { key: "off", values: ['state="off"'] },
44
+ { key: "open", values: ['state="open"'] },
45
+ { key: "closed", values: ['state="closed"'] },
46
+ { key: "hidden", values: [null, 'state="hidden"'] },
47
+ { key: "visible", values: [null, 'state="visible"'] },
48
+ { key: "checked", values: [null, 'state="checked"'] },
49
+ { key: "unchecked", values: [null, 'state="unchecked"'] },
50
+ { key: "indeterminate", values: [null, 'state="indeterminate"'] },
51
+ { key: "vertical", values: ['orientation="vertical"'] },
52
+ { key: "horizontal", values: ['orientation="horizontal"'] },
53
+ { key: "placement-top", values: ['placement="top"'] },
54
+ { key: "placement-top-end", values: ['placement="top-end"'] },
55
+ { key: "placement-top-start", values: ['placement="top-start"'] },
56
+ { key: "placement-left", values: ['placement="left"'] },
57
+ { key: "placement-left-end", values: ['placement="left-end"'] },
58
+ { key: "placement-left-start", values: ['placement="left-start"'] },
59
+ { key: "placement-right", values: ['placement="right"'] },
60
+ { key: "placement-right-end", values: ['placement="right-end"'] },
61
+ { key: "placement-right-start", values: ['placement="right-start"'] },
62
+ { key: "placement-bottom", values: ['placement="bottom"'] },
63
+ { key: "placement-bottom-end", values: ['placement="bottom-end"'] },
64
+ { key: "placement-bottom-start", values: ['placement="bottom-start"'] },
65
+ { key: "side-top", values: ['side="top"'] },
66
+ { key: "side-left", values: ['side="left"'] },
67
+ { key: "side-right", values: ['side="right"'] },
68
+ { key: "side-bottom", values: ['side="bottom"'] },
69
+ { key: "align-center", values: ['align="center"'] },
70
+ { key: "align-start", values: ['align="start"'] },
71
+ { key: "align-end", values: ['align="end"'] },
72
+ { key: "now", values: [null] },
73
+ { key: "today", values: [null] },
74
+ { key: "weekend", values: [null] },
75
+ { key: "in-range", values: [null] },
76
+ { key: "out-of-range", values: ["outside-range"] },
77
+ { key: "range-start", values: [null] },
78
+ { key: "range-end", values: [null] },
79
+ { key: "unavailable", values: [null] },
80
+ { key: "topmost", values: [null] },
81
+ { key: "view-day", values: ['view="day"'] },
82
+ { key: "view-month", values: ['view="month"'] },
83
+ { key: "view-year", values: ['view="year"'] },
84
+ { key: "under-value", values: ['state="under-value"'] },
85
+ { key: "over-value", values: ['state="over-value"'] },
86
+ { key: "at-value", values: ['state="at-value"'] },
87
+ { key: "delete-intent", values: [null] },
88
+ { key: "unit-hour", values: ['unit="hour"'] },
89
+ { key: "unit-minute", values: ['unit="minute"'] },
90
+ { key: "unit-second", values: ['unit="second"'] },
91
+ { key: "unit-period", values: ['unit="period"'] },
92
+ { key: "channel-hue", values: ['channel="hue"'] },
93
+ { key: "channel-saturation", values: ['channel="saturation"'] },
94
+ { key: "channel-brightness", values: ['channel="brightness"'] },
95
+ { key: "channel-lightness", values: ['channel="lightness"'] },
96
+ { key: "channel-red", values: ['channel="red"'] },
97
+ { key: "channel-green", values: ['channel="green"'] },
98
+ { key: "channel-blue", values: ['channel="blue"'] },
99
+ { key: "channel-alpha", values: ['channel="alpha"'] },
100
+ { key: "channel-hex", values: ['channel="hex"'] },
101
+ { key: "channel-css", values: ['channel="css"'] },
102
+ { key: "tour-highlighted", values: [null] },
103
+ { key: "scroll-lock", values: [null] },
104
+ { key: "inert", values: [null] },
105
+ { key: "empty", values: [null] },
106
+ { key: "fullscreen", values: [null] },
107
+ { key: "loading", values: [null] }
108
+ ];
109
+ var DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES = Array.from({
110
+ length: 10
111
+ }).reduce((o, _v, i) => {
112
+ o[i] = i.toString();
113
+ return o;
114
+ }, {});
115
+ function isInt(subject) {
116
+ return !Number.isNaN(Number.parseInt(subject));
117
+ }
118
+ var DYNAMIC_VARIANT_ENTRIES = [
119
+ { key: "scope" },
120
+ { key: "part" },
121
+ { key: "value" },
122
+ { key: "valuetext" },
123
+ {
124
+ key: "index",
125
+ validate: isInt,
126
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
127
+ },
128
+ {
129
+ key: "columns",
130
+ validate: isInt,
131
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
132
+ },
133
+ { key: "branch" },
134
+ {
135
+ key: "depth",
136
+ validate: isInt,
137
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
138
+ },
139
+ {
140
+ key: "path",
141
+ validate: isInt,
142
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
143
+ },
144
+ {
145
+ key: "type",
146
+ knownValues: {
147
+ /* toast */
148
+ info: "info",
149
+ error: "error",
150
+ warning: "warning",
151
+ success: "success",
152
+ loading: "loading",
153
+ /* tour */
154
+ floating: "floating",
155
+ tooltip: "tooltip",
156
+ dialog: "dialog",
157
+ wait: "wait"
158
+ }
159
+ }
160
+ ];
161
+ var index_default = plugin__default.default.withOptions((config = {}) => {
162
+ const prefix = config.prefix ?? "ui";
163
+ return ({ addVariant, matchVariant }) => {
164
+ for (const { key, values } of STATIC_VARIANT_ENTRIES) {
165
+ addVariant(
166
+ `${prefix}-${key}`,
167
+ values.map((value) => value === null ? `&[data-${key}]` : `&[data-${value}]`)
168
+ );
169
+ addVariant(
170
+ `${prefix}-not-${key}`,
171
+ values.map((value) => value === null ? `&:not([data-${key}])` : `&:not([data-${value}])`)
172
+ );
173
+ addVariant(
174
+ `${prefix}-group-${key}`,
175
+ values.map(
176
+ (value) => value === null ? `.group[data-${key}] &` : `.group[data-${value}] &`
177
+ )
178
+ );
179
+ addVariant(
180
+ `${prefix}-peer-${key}`,
181
+ values.map(
182
+ (value) => value === null ? `.peer[data-${key}] ~ &` : `.peer[data-${value}] ~ &`
183
+ )
184
+ );
185
+ }
186
+ for (const { key, knownValues, validate } of DYNAMIC_VARIANT_ENTRIES) {
187
+ const isValid = validate ?? (() => true);
188
+ matchVariant(
189
+ `${prefix}-${key}`,
190
+ (value) => !isValid(value) ? [] : `&[data-${key}="${value}"]`,
191
+ { values: knownValues }
192
+ );
193
+ matchVariant(
194
+ `${prefix}-not-${key}`,
195
+ (value) => !isValid(value) ? [] : `&:not([data-${key}="${value}"])`,
196
+ { values: knownValues }
197
+ );
198
+ matchVariant(
199
+ `${prefix}-group-${key}`,
200
+ (value) => !isValid(value) ? [] : `.group[data-${key}="${value}"] &`,
201
+ { values: knownValues }
202
+ );
203
+ matchVariant(
204
+ `${prefix}-peer-${key}`,
205
+ (value) => !isValid(value) ? [] : `.peer[data-${value}="${value}"] ~ &`,
206
+ { values: knownValues }
207
+ );
208
+ }
209
+ };
210
+ });
211
+
212
+ module.exports = index_default;
213
+ //# sourceMappingURL=index.cjs.map
214
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["plugin"],"mappings":"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","file":"index.cjs","sourcesContent":["import plugin from 'tailwindcss/plugin.js';\r\n\r\nexport interface StaticVariantEntry {\r\n\tkey: string;\r\n\tvalues: (string | null)[];\r\n}\r\n\r\nconst STATIC_VARIANT_ENTRIES: StaticVariantEntry[] = [\r\n\t{key: 'hover', values: [null]},\r\n\t{key: 'focus', values: [null]},\r\n\t{key: 'focus-visible', values: [null]},\r\n\t{key: 'focusable', values: [null]},\r\n\t{key: 'active', values: [null]},\r\n\t{key: 'valid', values: [null]},\r\n\t{key: 'invalid', values: [null]},\r\n\t{key: 'disabled', values: [null]},\r\n\t{key: 'readonly', values: [null, 'read-only']},\r\n\t{key: 'current', values: [null]},\r\n\t{key: 'inview', values: [null]},\r\n\t{key: 'copied', values: [null]},\r\n\t{key: 'collapsible', values: [null]},\r\n\t{key: 'highlighted', values: [null]},\r\n\t{key: 'selected', values: [null]},\r\n\t{key: 'placeholder', values: [null]},\r\n\t{key: 'placeholder-shown', values: [null]},\r\n\t{key: 'autoresize', values: [null]},\r\n\t{key: 'required', values: [null]},\r\n\t{key: 'grabbed', values: [null]},\r\n\t{key: 'dragging', values: [null]},\r\n\t{key: 'complete', values: [null]},\r\n\t{key: 'incomplete', values: [null]},\r\n\t{key: 'expanded', values: [null, 'state=\"expanded\"']},\r\n\t{key: 'half', values: [null]},\r\n\t{key: 'first', values: [null]},\r\n\t{key: 'mounted', values: [null]},\r\n\t{key: 'overlap', values: [null]},\r\n\t{key: 'sibling', values: [null]},\r\n\t{key: 'paused', values: [null]},\r\n\t{key: 'pressed', values: [null]},\r\n\t{key: 'on', values: ['state=\"on\"']},\r\n\t{key: 'off', values: ['state=\"off\"']},\r\n\t{key: 'open', values: ['state=\"open\"']},\r\n\t{key: 'closed', values: ['state=\"closed\"']},\r\n\t{key: 'hidden', values: [null, 'state=\"hidden\"']},\r\n\t{key: 'visible', values: [null, 'state=\"visible\"']},\r\n\t{key: 'checked', values: [null, 'state=\"checked\"']},\r\n\t{key: 'unchecked', values: [null, 'state=\"unchecked\"']},\r\n\t{key: 'indeterminate', values: [null, 'state=\"indeterminate\"']},\r\n\t{key: 'vertical', values: ['orientation=\"vertical\"']},\r\n\t{key: 'horizontal', values: ['orientation=\"horizontal\"']},\r\n\t{key: 'placement-top', values: ['placement=\"top\"']},\r\n\t{key: 'placement-top-end', values: ['placement=\"top-end\"']},\r\n\t{key: 'placement-top-start', values: ['placement=\"top-start\"']},\r\n\t{key: 'placement-left', values: ['placement=\"left\"']},\r\n\t{key: 'placement-left-end', values: ['placement=\"left-end\"']},\r\n\t{key: 'placement-left-start', values: ['placement=\"left-start\"']},\r\n\t{key: 'placement-right', values: ['placement=\"right\"']},\r\n\t{key: 'placement-right-end', values: ['placement=\"right-end\"']},\r\n\t{key: 'placement-right-start', values: ['placement=\"right-start\"']},\r\n\t{key: 'placement-bottom', values: ['placement=\"bottom\"']},\r\n\t{key: 'placement-bottom-end', values: ['placement=\"bottom-end\"']},\r\n\t{key: 'placement-bottom-start', values: ['placement=\"bottom-start\"']},\r\n\t{key: 'side-top', values: ['side=\"top\"']},\r\n\t{key: 'side-left', values: ['side=\"left\"']},\r\n\t{key: 'side-right', values: ['side=\"right\"']},\r\n\t{key: 'side-bottom', values: ['side=\"bottom\"']},\r\n\t{key: 'align-center', values: ['align=\"center\"']},\r\n\t{key: 'align-start', values: ['align=\"start\"']},\r\n\t{key: 'align-end', values: ['align=\"end\"']},\r\n\t{key: 'now', values: [null]},\r\n\t{key: 'today', values: [null]},\r\n\t{key: 'weekend', values: [null]},\r\n\t{key: 'in-range', values: [null]},\r\n\t{key: 'out-of-range', values: ['outside-range']},\r\n\t{key: 'range-start', values: [null]},\r\n\t{key: 'range-end', values: [null]},\r\n\t{key: 'unavailable', values: [null]},\r\n\t{key: 'topmost', values: [null]},\r\n\t{key: 'view-day', values: ['view=\"day\"']},\r\n\t{key: 'view-month', values: ['view=\"month\"']},\r\n\t{key: 'view-year', values: ['view=\"year\"']},\r\n\t{key: 'under-value', values: ['state=\"under-value\"']},\r\n\t{key: 'over-value', values: ['state=\"over-value\"']},\r\n\t{key: 'at-value', values: ['state=\"at-value\"']},\r\n\t{key: 'delete-intent', values: [null]},\r\n\t{key: 'unit-hour', values: ['unit=\"hour\"']},\r\n\t{key: 'unit-minute', values: ['unit=\"minute\"']},\r\n\t{key: 'unit-second', values: ['unit=\"second\"']},\r\n\t{key: 'unit-period', values: ['unit=\"period\"']},\r\n\t{key: 'channel-hue', values: ['channel=\"hue\"']},\r\n\t{key: 'channel-saturation', values: ['channel=\"saturation\"']},\r\n\t{key: 'channel-brightness', values: ['channel=\"brightness\"']},\r\n\t{key: 'channel-lightness', values: ['channel=\"lightness\"']},\r\n\t{key: 'channel-red', values: ['channel=\"red\"']},\r\n\t{key: 'channel-green', values: ['channel=\"green\"']},\r\n\t{key: 'channel-blue', values: ['channel=\"blue\"']},\r\n\t{key: 'channel-alpha', values: ['channel=\"alpha\"']},\r\n\t{key: 'channel-hex', values: ['channel=\"hex\"']},\r\n\t{key: 'channel-css', values: ['channel=\"css\"']},\r\n\t{key: 'tour-highlighted', values: [null]},\r\n\t{key: 'scroll-lock', values: [null]},\r\n\t{key: 'inert', values: [null]},\r\n\t{key: 'empty', values: [null]},\r\n\t{key: 'fullscreen', values: [null]},\r\n\t{key: 'loading', values: [null]},\r\n];\r\n\r\nexport interface DynamicVariantEntry {\r\n\tkey: string;\r\n\tvalidate?(subject: string): boolean;\r\n\tknownValues?: Record<string, string>;\r\n}\r\n\r\nconst DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES = Array.from<never>({\r\n\tlength: 10,\r\n}).reduce<Record<string, string>>((o, _v, i) => {\r\n\to[i] = i.toString();\r\n\treturn o;\r\n}, {});\r\n\r\nfunction isInt(subject: string) {\r\n\treturn !Number.isNaN(Number.parseInt(subject));\r\n}\r\n\r\nconst DYNAMIC_VARIANT_ENTRIES: DynamicVariantEntry[] = [\r\n\t{key: 'scope'},\r\n\t{key: 'part'},\r\n\t{key: 'value'},\r\n\t{key: 'valuetext'},\r\n\t{\r\n\t\tkey: 'index',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'columns',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{key: 'branch'},\r\n\t{\r\n\t\tkey: 'depth',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'path',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'type',\r\n\t\tknownValues: {\r\n\t\t\t/* toast */\r\n\t\t\tinfo: 'info',\r\n\t\t\terror: 'error',\r\n\t\t\twarning: 'warning',\r\n\t\t\tsuccess: 'success',\r\n\t\t\tloading: 'loading',\r\n\t\t\t/* tour */\r\n\t\t\tfloating: 'floating',\r\n\t\t\ttooltip: 'tooltip',\r\n\t\t\tdialog: 'dialog',\r\n\t\t\twait: 'wait',\r\n\t\t},\r\n\t},\r\n];\r\n\r\nexport interface ZagPluginOptions {\r\n\t/**\r\n\t * @description The prefix for the variants.\r\n\t * @default \"ui\"\r\n\t * @example\r\n\t * ```tsx\r\n\t * <Dialog.Content class=\"ui-open:animate-fade-in ui-closed:animate-fade-out\">\r\n\t * \t...\r\n\t * </Dialog.Content>\r\n\t * ```\r\n\t */\r\n\tprefix?: string;\r\n}\r\n\r\n/**\r\n * @see https://github.com/calvo-jp/tailwindcss-plugin-zag\r\n */\r\nexport default plugin.withOptions<ZagPluginOptions>((config = {}) => {\r\n\tconst prefix = config.prefix ?? 'ui';\r\n\r\n\treturn ({addVariant, matchVariant}) => {\r\n\t\tfor (const {key, values} of STATIC_VARIANT_ENTRIES) {\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-${key}`,\r\n\t\t\t\tvalues.map((value) => (value === null ? `&[data-${key}]` : `&[data-${value}]`)),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-not-${key}`,\r\n\t\t\t\tvalues.map((value) => (value === null ? `&:not([data-${key}])` : `&:not([data-${value}])`)),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-group-${key}`,\r\n\t\t\t\tvalues.map((value) =>\r\n\t\t\t\t\tvalue === null ? `.group[data-${key}] &` : `.group[data-${value}] &`,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-peer-${key}`,\r\n\t\t\t\tvalues.map((value) =>\r\n\t\t\t\t\tvalue === null ? `.peer[data-${key}] ~ &` : `.peer[data-${value}] ~ &`,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (const {key, knownValues, validate} of DYNAMIC_VARIANT_ENTRIES) {\r\n\t\t\tconst isValid = validate ?? (() => true);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `&[data-${key}=\"${value}\"]`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-not-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `&:not([data-${key}=\"${value}\"])`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-group-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `.group[data-${key}=\"${value}\"] &`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-peer-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `.peer[data-${value}=\"${value}\"] ~ &`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n});\r\n"]}
@@ -0,0 +1,36 @@
1
+ import * as tailwindcss_types_config_js from 'tailwindcss/types/config.js';
2
+
3
+ interface StaticVariantEntry {
4
+ key: string;
5
+ values: (string | null)[];
6
+ }
7
+ interface DynamicVariantEntry {
8
+ key: string;
9
+ validate?(subject: string): boolean;
10
+ knownValues?: Record<string, string>;
11
+ }
12
+ interface ZagPluginOptions {
13
+ /**
14
+ * @description The prefix for the variants.
15
+ * @default "ui"
16
+ * @example
17
+ * ```tsx
18
+ * <Dialog.Content class="ui-open:animate-fade-in ui-closed:animate-fade-out">
19
+ * ...
20
+ * </Dialog.Content>
21
+ * ```
22
+ */
23
+ prefix?: string;
24
+ }
25
+ /**
26
+ * @see https://github.com/calvo-jp/tailwindcss-plugin-zag
27
+ */
28
+ declare const _default: {
29
+ (options: ZagPluginOptions): {
30
+ handler: tailwindcss_types_config_js.PluginCreator;
31
+ config?: Partial<tailwindcss_types_config_js.Config>;
32
+ };
33
+ __isOptionsFunction: true;
34
+ };
35
+
36
+ export { type DynamicVariantEntry, type StaticVariantEntry, type ZagPluginOptions, _default as default };
@@ -0,0 +1,36 @@
1
+ import * as tailwindcss_types_config_js from 'tailwindcss/types/config.js';
2
+
3
+ interface StaticVariantEntry {
4
+ key: string;
5
+ values: (string | null)[];
6
+ }
7
+ interface DynamicVariantEntry {
8
+ key: string;
9
+ validate?(subject: string): boolean;
10
+ knownValues?: Record<string, string>;
11
+ }
12
+ interface ZagPluginOptions {
13
+ /**
14
+ * @description The prefix for the variants.
15
+ * @default "ui"
16
+ * @example
17
+ * ```tsx
18
+ * <Dialog.Content class="ui-open:animate-fade-in ui-closed:animate-fade-out">
19
+ * ...
20
+ * </Dialog.Content>
21
+ * ```
22
+ */
23
+ prefix?: string;
24
+ }
25
+ /**
26
+ * @see https://github.com/calvo-jp/tailwindcss-plugin-zag
27
+ */
28
+ declare const _default: {
29
+ (options: ZagPluginOptions): {
30
+ handler: tailwindcss_types_config_js.PluginCreator;
31
+ config?: Partial<tailwindcss_types_config_js.Config>;
32
+ };
33
+ __isOptionsFunction: true;
34
+ };
35
+
36
+ export { type DynamicVariantEntry, type StaticVariantEntry, type ZagPluginOptions, _default as default };
package/dist/index.js ADDED
@@ -0,0 +1,208 @@
1
+ import plugin from 'tailwindcss/plugin.js';
2
+
3
+ // src/index.ts
4
+ var STATIC_VARIANT_ENTRIES = [
5
+ { key: "hover", values: [null] },
6
+ { key: "focus", values: [null] },
7
+ { key: "focus-visible", values: [null] },
8
+ { key: "focusable", values: [null] },
9
+ { key: "active", values: [null] },
10
+ { key: "valid", values: [null] },
11
+ { key: "invalid", values: [null] },
12
+ { key: "disabled", values: [null] },
13
+ { key: "readonly", values: [null, "read-only"] },
14
+ { key: "current", values: [null] },
15
+ { key: "inview", values: [null] },
16
+ { key: "copied", values: [null] },
17
+ { key: "collapsible", values: [null] },
18
+ { key: "highlighted", values: [null] },
19
+ { key: "selected", values: [null] },
20
+ { key: "placeholder", values: [null] },
21
+ { key: "placeholder-shown", values: [null] },
22
+ { key: "autoresize", values: [null] },
23
+ { key: "required", values: [null] },
24
+ { key: "grabbed", values: [null] },
25
+ { key: "dragging", values: [null] },
26
+ { key: "complete", values: [null] },
27
+ { key: "incomplete", values: [null] },
28
+ { key: "expanded", values: [null, 'state="expanded"'] },
29
+ { key: "half", values: [null] },
30
+ { key: "first", values: [null] },
31
+ { key: "mounted", values: [null] },
32
+ { key: "overlap", values: [null] },
33
+ { key: "sibling", values: [null] },
34
+ { key: "paused", values: [null] },
35
+ { key: "pressed", values: [null] },
36
+ { key: "on", values: ['state="on"'] },
37
+ { key: "off", values: ['state="off"'] },
38
+ { key: "open", values: ['state="open"'] },
39
+ { key: "closed", values: ['state="closed"'] },
40
+ { key: "hidden", values: [null, 'state="hidden"'] },
41
+ { key: "visible", values: [null, 'state="visible"'] },
42
+ { key: "checked", values: [null, 'state="checked"'] },
43
+ { key: "unchecked", values: [null, 'state="unchecked"'] },
44
+ { key: "indeterminate", values: [null, 'state="indeterminate"'] },
45
+ { key: "vertical", values: ['orientation="vertical"'] },
46
+ { key: "horizontal", values: ['orientation="horizontal"'] },
47
+ { key: "placement-top", values: ['placement="top"'] },
48
+ { key: "placement-top-end", values: ['placement="top-end"'] },
49
+ { key: "placement-top-start", values: ['placement="top-start"'] },
50
+ { key: "placement-left", values: ['placement="left"'] },
51
+ { key: "placement-left-end", values: ['placement="left-end"'] },
52
+ { key: "placement-left-start", values: ['placement="left-start"'] },
53
+ { key: "placement-right", values: ['placement="right"'] },
54
+ { key: "placement-right-end", values: ['placement="right-end"'] },
55
+ { key: "placement-right-start", values: ['placement="right-start"'] },
56
+ { key: "placement-bottom", values: ['placement="bottom"'] },
57
+ { key: "placement-bottom-end", values: ['placement="bottom-end"'] },
58
+ { key: "placement-bottom-start", values: ['placement="bottom-start"'] },
59
+ { key: "side-top", values: ['side="top"'] },
60
+ { key: "side-left", values: ['side="left"'] },
61
+ { key: "side-right", values: ['side="right"'] },
62
+ { key: "side-bottom", values: ['side="bottom"'] },
63
+ { key: "align-center", values: ['align="center"'] },
64
+ { key: "align-start", values: ['align="start"'] },
65
+ { key: "align-end", values: ['align="end"'] },
66
+ { key: "now", values: [null] },
67
+ { key: "today", values: [null] },
68
+ { key: "weekend", values: [null] },
69
+ { key: "in-range", values: [null] },
70
+ { key: "out-of-range", values: ["outside-range"] },
71
+ { key: "range-start", values: [null] },
72
+ { key: "range-end", values: [null] },
73
+ { key: "unavailable", values: [null] },
74
+ { key: "topmost", values: [null] },
75
+ { key: "view-day", values: ['view="day"'] },
76
+ { key: "view-month", values: ['view="month"'] },
77
+ { key: "view-year", values: ['view="year"'] },
78
+ { key: "under-value", values: ['state="under-value"'] },
79
+ { key: "over-value", values: ['state="over-value"'] },
80
+ { key: "at-value", values: ['state="at-value"'] },
81
+ { key: "delete-intent", values: [null] },
82
+ { key: "unit-hour", values: ['unit="hour"'] },
83
+ { key: "unit-minute", values: ['unit="minute"'] },
84
+ { key: "unit-second", values: ['unit="second"'] },
85
+ { key: "unit-period", values: ['unit="period"'] },
86
+ { key: "channel-hue", values: ['channel="hue"'] },
87
+ { key: "channel-saturation", values: ['channel="saturation"'] },
88
+ { key: "channel-brightness", values: ['channel="brightness"'] },
89
+ { key: "channel-lightness", values: ['channel="lightness"'] },
90
+ { key: "channel-red", values: ['channel="red"'] },
91
+ { key: "channel-green", values: ['channel="green"'] },
92
+ { key: "channel-blue", values: ['channel="blue"'] },
93
+ { key: "channel-alpha", values: ['channel="alpha"'] },
94
+ { key: "channel-hex", values: ['channel="hex"'] },
95
+ { key: "channel-css", values: ['channel="css"'] },
96
+ { key: "tour-highlighted", values: [null] },
97
+ { key: "scroll-lock", values: [null] },
98
+ { key: "inert", values: [null] },
99
+ { key: "empty", values: [null] },
100
+ { key: "fullscreen", values: [null] },
101
+ { key: "loading", values: [null] }
102
+ ];
103
+ var DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES = Array.from({
104
+ length: 10
105
+ }).reduce((o, _v, i) => {
106
+ o[i] = i.toString();
107
+ return o;
108
+ }, {});
109
+ function isInt(subject) {
110
+ return !Number.isNaN(Number.parseInt(subject));
111
+ }
112
+ var DYNAMIC_VARIANT_ENTRIES = [
113
+ { key: "scope" },
114
+ { key: "part" },
115
+ { key: "value" },
116
+ { key: "valuetext" },
117
+ {
118
+ key: "index",
119
+ validate: isInt,
120
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
121
+ },
122
+ {
123
+ key: "columns",
124
+ validate: isInt,
125
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
126
+ },
127
+ { key: "branch" },
128
+ {
129
+ key: "depth",
130
+ validate: isInt,
131
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
132
+ },
133
+ {
134
+ key: "path",
135
+ validate: isInt,
136
+ knownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES
137
+ },
138
+ {
139
+ key: "type",
140
+ knownValues: {
141
+ /* toast */
142
+ info: "info",
143
+ error: "error",
144
+ warning: "warning",
145
+ success: "success",
146
+ loading: "loading",
147
+ /* tour */
148
+ floating: "floating",
149
+ tooltip: "tooltip",
150
+ dialog: "dialog",
151
+ wait: "wait"
152
+ }
153
+ }
154
+ ];
155
+ var index_default = plugin.withOptions((config = {}) => {
156
+ const prefix = config.prefix ?? "ui";
157
+ return ({ addVariant, matchVariant }) => {
158
+ for (const { key, values } of STATIC_VARIANT_ENTRIES) {
159
+ addVariant(
160
+ `${prefix}-${key}`,
161
+ values.map((value) => value === null ? `&[data-${key}]` : `&[data-${value}]`)
162
+ );
163
+ addVariant(
164
+ `${prefix}-not-${key}`,
165
+ values.map((value) => value === null ? `&:not([data-${key}])` : `&:not([data-${value}])`)
166
+ );
167
+ addVariant(
168
+ `${prefix}-group-${key}`,
169
+ values.map(
170
+ (value) => value === null ? `.group[data-${key}] &` : `.group[data-${value}] &`
171
+ )
172
+ );
173
+ addVariant(
174
+ `${prefix}-peer-${key}`,
175
+ values.map(
176
+ (value) => value === null ? `.peer[data-${key}] ~ &` : `.peer[data-${value}] ~ &`
177
+ )
178
+ );
179
+ }
180
+ for (const { key, knownValues, validate } of DYNAMIC_VARIANT_ENTRIES) {
181
+ const isValid = validate ?? (() => true);
182
+ matchVariant(
183
+ `${prefix}-${key}`,
184
+ (value) => !isValid(value) ? [] : `&[data-${key}="${value}"]`,
185
+ { values: knownValues }
186
+ );
187
+ matchVariant(
188
+ `${prefix}-not-${key}`,
189
+ (value) => !isValid(value) ? [] : `&:not([data-${key}="${value}"])`,
190
+ { values: knownValues }
191
+ );
192
+ matchVariant(
193
+ `${prefix}-group-${key}`,
194
+ (value) => !isValid(value) ? [] : `.group[data-${key}="${value}"] &`,
195
+ { values: knownValues }
196
+ );
197
+ matchVariant(
198
+ `${prefix}-peer-${key}`,
199
+ (value) => !isValid(value) ? [] : `.peer[data-${value}="${value}"] ~ &`,
200
+ { values: knownValues }
201
+ );
202
+ }
203
+ };
204
+ });
205
+
206
+ export { index_default as default };
207
+ //# sourceMappingURL=index.js.map
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import plugin from 'tailwindcss/plugin.js';\r\n\r\nexport interface StaticVariantEntry {\r\n\tkey: string;\r\n\tvalues: (string | null)[];\r\n}\r\n\r\nconst STATIC_VARIANT_ENTRIES: StaticVariantEntry[] = [\r\n\t{key: 'hover', values: [null]},\r\n\t{key: 'focus', values: [null]},\r\n\t{key: 'focus-visible', values: [null]},\r\n\t{key: 'focusable', values: [null]},\r\n\t{key: 'active', values: [null]},\r\n\t{key: 'valid', values: [null]},\r\n\t{key: 'invalid', values: [null]},\r\n\t{key: 'disabled', values: [null]},\r\n\t{key: 'readonly', values: [null, 'read-only']},\r\n\t{key: 'current', values: [null]},\r\n\t{key: 'inview', values: [null]},\r\n\t{key: 'copied', values: [null]},\r\n\t{key: 'collapsible', values: [null]},\r\n\t{key: 'highlighted', values: [null]},\r\n\t{key: 'selected', values: [null]},\r\n\t{key: 'placeholder', values: [null]},\r\n\t{key: 'placeholder-shown', values: [null]},\r\n\t{key: 'autoresize', values: [null]},\r\n\t{key: 'required', values: [null]},\r\n\t{key: 'grabbed', values: [null]},\r\n\t{key: 'dragging', values: [null]},\r\n\t{key: 'complete', values: [null]},\r\n\t{key: 'incomplete', values: [null]},\r\n\t{key: 'expanded', values: [null, 'state=\"expanded\"']},\r\n\t{key: 'half', values: [null]},\r\n\t{key: 'first', values: [null]},\r\n\t{key: 'mounted', values: [null]},\r\n\t{key: 'overlap', values: [null]},\r\n\t{key: 'sibling', values: [null]},\r\n\t{key: 'paused', values: [null]},\r\n\t{key: 'pressed', values: [null]},\r\n\t{key: 'on', values: ['state=\"on\"']},\r\n\t{key: 'off', values: ['state=\"off\"']},\r\n\t{key: 'open', values: ['state=\"open\"']},\r\n\t{key: 'closed', values: ['state=\"closed\"']},\r\n\t{key: 'hidden', values: [null, 'state=\"hidden\"']},\r\n\t{key: 'visible', values: [null, 'state=\"visible\"']},\r\n\t{key: 'checked', values: [null, 'state=\"checked\"']},\r\n\t{key: 'unchecked', values: [null, 'state=\"unchecked\"']},\r\n\t{key: 'indeterminate', values: [null, 'state=\"indeterminate\"']},\r\n\t{key: 'vertical', values: ['orientation=\"vertical\"']},\r\n\t{key: 'horizontal', values: ['orientation=\"horizontal\"']},\r\n\t{key: 'placement-top', values: ['placement=\"top\"']},\r\n\t{key: 'placement-top-end', values: ['placement=\"top-end\"']},\r\n\t{key: 'placement-top-start', values: ['placement=\"top-start\"']},\r\n\t{key: 'placement-left', values: ['placement=\"left\"']},\r\n\t{key: 'placement-left-end', values: ['placement=\"left-end\"']},\r\n\t{key: 'placement-left-start', values: ['placement=\"left-start\"']},\r\n\t{key: 'placement-right', values: ['placement=\"right\"']},\r\n\t{key: 'placement-right-end', values: ['placement=\"right-end\"']},\r\n\t{key: 'placement-right-start', values: ['placement=\"right-start\"']},\r\n\t{key: 'placement-bottom', values: ['placement=\"bottom\"']},\r\n\t{key: 'placement-bottom-end', values: ['placement=\"bottom-end\"']},\r\n\t{key: 'placement-bottom-start', values: ['placement=\"bottom-start\"']},\r\n\t{key: 'side-top', values: ['side=\"top\"']},\r\n\t{key: 'side-left', values: ['side=\"left\"']},\r\n\t{key: 'side-right', values: ['side=\"right\"']},\r\n\t{key: 'side-bottom', values: ['side=\"bottom\"']},\r\n\t{key: 'align-center', values: ['align=\"center\"']},\r\n\t{key: 'align-start', values: ['align=\"start\"']},\r\n\t{key: 'align-end', values: ['align=\"end\"']},\r\n\t{key: 'now', values: [null]},\r\n\t{key: 'today', values: [null]},\r\n\t{key: 'weekend', values: [null]},\r\n\t{key: 'in-range', values: [null]},\r\n\t{key: 'out-of-range', values: ['outside-range']},\r\n\t{key: 'range-start', values: [null]},\r\n\t{key: 'range-end', values: [null]},\r\n\t{key: 'unavailable', values: [null]},\r\n\t{key: 'topmost', values: [null]},\r\n\t{key: 'view-day', values: ['view=\"day\"']},\r\n\t{key: 'view-month', values: ['view=\"month\"']},\r\n\t{key: 'view-year', values: ['view=\"year\"']},\r\n\t{key: 'under-value', values: ['state=\"under-value\"']},\r\n\t{key: 'over-value', values: ['state=\"over-value\"']},\r\n\t{key: 'at-value', values: ['state=\"at-value\"']},\r\n\t{key: 'delete-intent', values: [null]},\r\n\t{key: 'unit-hour', values: ['unit=\"hour\"']},\r\n\t{key: 'unit-minute', values: ['unit=\"minute\"']},\r\n\t{key: 'unit-second', values: ['unit=\"second\"']},\r\n\t{key: 'unit-period', values: ['unit=\"period\"']},\r\n\t{key: 'channel-hue', values: ['channel=\"hue\"']},\r\n\t{key: 'channel-saturation', values: ['channel=\"saturation\"']},\r\n\t{key: 'channel-brightness', values: ['channel=\"brightness\"']},\r\n\t{key: 'channel-lightness', values: ['channel=\"lightness\"']},\r\n\t{key: 'channel-red', values: ['channel=\"red\"']},\r\n\t{key: 'channel-green', values: ['channel=\"green\"']},\r\n\t{key: 'channel-blue', values: ['channel=\"blue\"']},\r\n\t{key: 'channel-alpha', values: ['channel=\"alpha\"']},\r\n\t{key: 'channel-hex', values: ['channel=\"hex\"']},\r\n\t{key: 'channel-css', values: ['channel=\"css\"']},\r\n\t{key: 'tour-highlighted', values: [null]},\r\n\t{key: 'scroll-lock', values: [null]},\r\n\t{key: 'inert', values: [null]},\r\n\t{key: 'empty', values: [null]},\r\n\t{key: 'fullscreen', values: [null]},\r\n\t{key: 'loading', values: [null]},\r\n];\r\n\r\nexport interface DynamicVariantEntry {\r\n\tkey: string;\r\n\tvalidate?(subject: string): boolean;\r\n\tknownValues?: Record<string, string>;\r\n}\r\n\r\nconst DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES = Array.from<never>({\r\n\tlength: 10,\r\n}).reduce<Record<string, string>>((o, _v, i) => {\r\n\to[i] = i.toString();\r\n\treturn o;\r\n}, {});\r\n\r\nfunction isInt(subject: string) {\r\n\treturn !Number.isNaN(Number.parseInt(subject));\r\n}\r\n\r\nconst DYNAMIC_VARIANT_ENTRIES: DynamicVariantEntry[] = [\r\n\t{key: 'scope'},\r\n\t{key: 'part'},\r\n\t{key: 'value'},\r\n\t{key: 'valuetext'},\r\n\t{\r\n\t\tkey: 'index',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'columns',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{key: 'branch'},\r\n\t{\r\n\t\tkey: 'depth',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'path',\r\n\t\tvalidate: isInt,\r\n\t\tknownValues: DEFAULT_DYNAMIC_VARIANT_ENTRY_KNOWN_INT_VALUES,\r\n\t},\r\n\t{\r\n\t\tkey: 'type',\r\n\t\tknownValues: {\r\n\t\t\t/* toast */\r\n\t\t\tinfo: 'info',\r\n\t\t\terror: 'error',\r\n\t\t\twarning: 'warning',\r\n\t\t\tsuccess: 'success',\r\n\t\t\tloading: 'loading',\r\n\t\t\t/* tour */\r\n\t\t\tfloating: 'floating',\r\n\t\t\ttooltip: 'tooltip',\r\n\t\t\tdialog: 'dialog',\r\n\t\t\twait: 'wait',\r\n\t\t},\r\n\t},\r\n];\r\n\r\nexport interface ZagPluginOptions {\r\n\t/**\r\n\t * @description The prefix for the variants.\r\n\t * @default \"ui\"\r\n\t * @example\r\n\t * ```tsx\r\n\t * <Dialog.Content class=\"ui-open:animate-fade-in ui-closed:animate-fade-out\">\r\n\t * \t...\r\n\t * </Dialog.Content>\r\n\t * ```\r\n\t */\r\n\tprefix?: string;\r\n}\r\n\r\n/**\r\n * @see https://github.com/calvo-jp/tailwindcss-plugin-zag\r\n */\r\nexport default plugin.withOptions<ZagPluginOptions>((config = {}) => {\r\n\tconst prefix = config.prefix ?? 'ui';\r\n\r\n\treturn ({addVariant, matchVariant}) => {\r\n\t\tfor (const {key, values} of STATIC_VARIANT_ENTRIES) {\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-${key}`,\r\n\t\t\t\tvalues.map((value) => (value === null ? `&[data-${key}]` : `&[data-${value}]`)),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-not-${key}`,\r\n\t\t\t\tvalues.map((value) => (value === null ? `&:not([data-${key}])` : `&:not([data-${value}])`)),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-group-${key}`,\r\n\t\t\t\tvalues.map((value) =>\r\n\t\t\t\t\tvalue === null ? `.group[data-${key}] &` : `.group[data-${value}] &`,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\r\n\t\t\taddVariant(\r\n\t\t\t\t`${prefix}-peer-${key}`,\r\n\t\t\t\tvalues.map((value) =>\r\n\t\t\t\t\tvalue === null ? `.peer[data-${key}] ~ &` : `.peer[data-${value}] ~ &`,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (const {key, knownValues, validate} of DYNAMIC_VARIANT_ENTRIES) {\r\n\t\t\tconst isValid = validate ?? (() => true);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `&[data-${key}=\"${value}\"]`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-not-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `&:not([data-${key}=\"${value}\"])`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-group-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `.group[data-${key}=\"${value}\"] &`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\r\n\t\t\tmatchVariant(\r\n\t\t\t\t`${prefix}-peer-${key}`,\r\n\t\t\t\t(value) => (!isValid(value) ? [] : `.peer[data-${value}=\"${value}\"] ~ &`),\r\n\t\t\t\t{values: knownValues},\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n});\r\n"]}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "tailwind-zag",
3
+ "type": "module",
4
+ "license": "MIT",
5
+ "version": "1.0.0",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.d.ts",
13
+ "require": {
14
+ "types": "./dist/index.d.cts",
15
+ "default": "./dist/index.cjs"
16
+ }
17
+ },
18
+ "./package.json": "./package.json"
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "packageManager": "pnpm@9.15.1",
27
+ "author": {
28
+ "name": "John Paul Calvo",
29
+ "email": "calvojp92@gmail.com"
30
+ },
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/calvo-jp/tailwindcss-plugin-zag.git"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/calvo-jp/tailwindcss-plugin-zag/issues",
37
+ "email": "calvojp92@gmail.com"
38
+ },
39
+ "description": "TailwindCSS plugin for zag-powered components",
40
+ "keywords": [
41
+ "TailwindCSS",
42
+ "zag",
43
+ "Ark UI",
44
+ "Plugin"
45
+ ],
46
+ "scripts": {
47
+ "test": "vitest",
48
+ "lint": "biome lint .",
49
+ "format": "biome format --write .",
50
+ "build": "tsup",
51
+ "release": "release-it"
52
+ },
53
+ "devDependencies": {
54
+ "@biomejs/biome": "^1.9.4",
55
+ "@tsconfig/node22": "^22.0.0",
56
+ "@types/node": "^22.10.2",
57
+ "postcss": "^8.4.49",
58
+ "release-it": "^17.11.0",
59
+ "tailwindcss": "^3.4.17",
60
+ "tsup": "^8.3.5",
61
+ "typescript": "^5.7.2",
62
+ "vitest": "^2.1.8"
63
+ },
64
+ "peerDependencies": {
65
+ "tailwindcss": "^3.3.3 || ^4.0.0"
66
+ },
67
+ "release-it": {
68
+ "git": {
69
+ "commitMessage": "chore: release ${npm.name} v${version}",
70
+ "tagName": "${npm.name}@${version}"
71
+ },
72
+ "github": {
73
+ "release": false
74
+ },
75
+ "hooks": {
76
+ "before:init": [
77
+ "pnpm lint",
78
+ "pnpm test"
79
+ ],
80
+ "after:bump": [
81
+ "pnpm build"
82
+ ]
83
+ }
84
+ }
85
+ }