@hanzo/ui 5.3.22 → 5.3.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "5.3.22",
3
+ "version": "5.3.23",
4
4
  "description": "Multi-framework UI library with React, Vue, Svelte, and React Native support. Based on shadcn/ui with comprehensive framework coverage.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
@@ -502,9 +502,64 @@
502
502
  "types": "./dist/ui/*.d.ts",
503
503
  "import": "./dist/ui/*.mjs",
504
504
  "require": "./dist/ui/*.js"
505
+ },
506
+ "./docs/style.css": "./docs/css/style.css",
507
+ "./docs/css/*": "./docs/css/*",
508
+ "./docs/page": {
509
+ "types": "./docs/page.tsx",
510
+ "import": "./docs/page.tsx"
511
+ },
512
+ "./docs/mdx": {
513
+ "types": "./docs/mdx.tsx",
514
+ "import": "./docs/mdx.tsx"
515
+ },
516
+ "./docs/og": {
517
+ "types": "./docs/og.tsx",
518
+ "import": "./docs/og.tsx"
519
+ },
520
+ "./docs/i18n": {
521
+ "types": "./docs/i18n.tsx",
522
+ "import": "./docs/i18n.tsx"
523
+ },
524
+ "./docs/layouts/docs": {
525
+ "types": "./docs/layouts/docs/index.tsx",
526
+ "import": "./docs/layouts/docs/index.tsx"
527
+ },
528
+ "./docs/layouts/home": {
529
+ "types": "./docs/layouts/home/index.tsx",
530
+ "import": "./docs/layouts/home/index.tsx"
531
+ },
532
+ "./docs/layouts/notebook": {
533
+ "types": "./docs/layouts/notebook/index.tsx",
534
+ "import": "./docs/layouts/notebook/index.tsx"
535
+ },
536
+ "./docs/provider/next": {
537
+ "types": "./docs/provider/next.tsx",
538
+ "import": "./docs/provider/next.tsx"
539
+ },
540
+ "./docs/provider/*": {
541
+ "types": "./docs/provider/*.tsx",
542
+ "import": "./docs/provider/*.tsx"
543
+ },
544
+ "./docs/components/*": {
545
+ "types": "./docs/components/*.tsx",
546
+ "import": "./docs/components/*.tsx"
547
+ },
548
+ "./docs/contexts/*": {
549
+ "types": "./docs/contexts/*.tsx",
550
+ "import": "./docs/contexts/*.tsx"
551
+ },
552
+ "./docs/utils/*": {
553
+ "types": "./docs/utils/*.ts",
554
+ "import": "./docs/utils/*.ts"
555
+ },
556
+ "./docs/source": {
557
+ "types": "./docs/source.ts",
558
+ "import": "./docs/source.ts"
505
559
  }
506
560
  },
507
561
  "dependencies": {
562
+ "@hanzo/docs-core": "^16.2.5",
508
563
  "@dnd-kit/core": "^6.3.1",
509
564
  "@dnd-kit/modifiers": "^9.0.0",
510
565
  "@dnd-kit/sortable": "^10.0.0",
@@ -665,7 +720,9 @@
665
720
  "rehype-katex": "^7.0.1",
666
721
  "remark-gfm": "^4.0.1",
667
722
  "remark-math": "^6.0.0",
668
- "tailwindcss": "3.4.14",
723
+ "@tailwindcss/postcss": "^4.1.16",
724
+ "tailwindcss": "^4.1.16",
725
+ "tw-animate-css": "^1.2.9",
669
726
  "tsup": "^8.5.0",
670
727
  "typescript": "5.6.3",
671
728
  "vitest": "4.0.6"
package/style/globals.css CHANGED
@@ -1,13 +1,146 @@
1
- /* Note, preflight is applied first:
2
- https://unpkg.com/tailwindcss@3.3.5/src/css/preflight.css
3
- */
4
- @import "tailwindcss/base";
1
+ /**
2
+ * Hanzo UI - Global Styles
3
+ * Tailwind CSS 4 compatible
4
+ */
5
5
 
6
- /* see https://stackoverflow.com/questions/69746121/using-nextjs-how-can-you-import-in-css-using-tailwind-css */
7
- @import "hanzo-common";
8
- @import "hanzo-default-colors";
6
+ @import "tailwindcss";
7
+ @import "tw-animate-css";
9
8
 
10
- @import "tailwindcss/components";
11
- @import "tailwindcss/utilities";
9
+ /* Hanzo UI custom styles */
10
+ @import "./hanzo-common.css";
11
+ @import "./hanzo-default-colors.css";
12
12
 
13
+ /* Custom variant for dark mode */
14
+ @custom-variant dark (&:is(.dark *));
13
15
 
16
+ /* Theme configuration */
17
+ @theme inline {
18
+ --font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif;
19
+ --font-mono: var(--font-mono), ui-monospace, monospace;
20
+ --radius: 0.5rem;
21
+ --radius-sm: calc(var(--radius) - 4px);
22
+ --radius-md: calc(var(--radius) - 2px);
23
+ --radius-lg: var(--radius);
24
+ --radius-xl: calc(var(--radius) + 4px);
25
+
26
+ /* Color mappings */
27
+ --color-background: var(--background);
28
+ --color-foreground: var(--foreground);
29
+ --color-card: var(--card);
30
+ --color-card-foreground: var(--card-foreground);
31
+ --color-popover: var(--popover);
32
+ --color-popover-foreground: var(--popover-foreground);
33
+ --color-primary: var(--primary);
34
+ --color-primary-foreground: var(--primary-foreground);
35
+ --color-secondary: var(--secondary);
36
+ --color-secondary-foreground: var(--secondary-foreground);
37
+ --color-muted: var(--muted);
38
+ --color-muted-foreground: var(--muted-foreground);
39
+ --color-accent: var(--accent);
40
+ --color-accent-foreground: var(--accent-foreground);
41
+ --color-destructive: var(--destructive);
42
+ --color-destructive-foreground: var(--destructive-foreground);
43
+ --color-border: var(--border);
44
+ --color-input: var(--input);
45
+ --color-ring: var(--ring);
46
+ --color-chart-1: var(--chart-1);
47
+ --color-chart-2: var(--chart-2);
48
+ --color-chart-3: var(--chart-3);
49
+ --color-chart-4: var(--chart-4);
50
+ --color-chart-5: var(--chart-5);
51
+ --color-sidebar: var(--sidebar);
52
+ --color-sidebar-foreground: var(--sidebar-foreground);
53
+ --color-sidebar-primary: var(--sidebar-primary);
54
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
55
+ --color-sidebar-accent: var(--sidebar-accent);
56
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
57
+ --color-sidebar-border: var(--sidebar-border);
58
+ --color-sidebar-ring: var(--sidebar-ring);
59
+
60
+ /* Keyframes */
61
+ @keyframes accordion-down {
62
+ from { height: 0; }
63
+ to { height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto)); }
64
+ }
65
+
66
+ @keyframes accordion-up {
67
+ from { height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto)); }
68
+ to { height: 0; }
69
+ }
70
+
71
+ @keyframes caret-blink {
72
+ 0%, 70%, 100% { opacity: 1; }
73
+ 20%, 50% { opacity: 0; }
74
+ }
75
+ }
76
+
77
+ /* Custom data-state variants (shadcn/ui compatibility) */
78
+ @custom-variant data-open {
79
+ &:where([data-state="open"]),
80
+ &:where([data-open]:not([data-open="false"])) {
81
+ @slot;
82
+ }
83
+ }
84
+
85
+ @custom-variant data-closed {
86
+ &:where([data-state="closed"]),
87
+ &:where([data-closed]:not([data-closed="false"])) {
88
+ @slot;
89
+ }
90
+ }
91
+
92
+ @custom-variant data-checked {
93
+ &:where([data-state="checked"]),
94
+ &:where([data-checked]:not([data-checked="false"])) {
95
+ @slot;
96
+ }
97
+ }
98
+
99
+ @custom-variant data-unchecked {
100
+ &:where([data-state="unchecked"]),
101
+ &:where([data-unchecked]:not([data-unchecked="false"])) {
102
+ @slot;
103
+ }
104
+ }
105
+
106
+ @custom-variant data-selected {
107
+ &:where([data-selected="true"]) {
108
+ @slot;
109
+ }
110
+ }
111
+
112
+ @custom-variant data-disabled {
113
+ &:where([data-disabled="true"]),
114
+ &:where([data-disabled]:not([data-disabled="false"])) {
115
+ @slot;
116
+ }
117
+ }
118
+
119
+ @custom-variant data-active {
120
+ &:where([data-state="active"]),
121
+ &:where([data-active]:not([data-active="false"])) {
122
+ @slot;
123
+ }
124
+ }
125
+
126
+ @custom-variant data-horizontal {
127
+ &:where([data-orientation="horizontal"]) {
128
+ @slot;
129
+ }
130
+ }
131
+
132
+ @custom-variant data-vertical {
133
+ &:where([data-orientation="vertical"]) {
134
+ @slot;
135
+ }
136
+ }
137
+
138
+ /* Utility classes */
139
+ @utility no-scrollbar {
140
+ -ms-overflow-style: none;
141
+ scrollbar-width: none;
142
+
143
+ &::-webkit-scrollbar {
144
+ display: none;
145
+ }
146
+ }
@@ -1,14 +1,16 @@
1
- @tailwind base;
2
- /* see https://stackoverflow.com/questions/69746121/using-nextjs-how-can-you-import-in-css-using-tailwind-css */
1
+ /**
2
+ * Hanzo UI - Common Base Styles
3
+ * Tailwind CSS 4 compatible
4
+ */
3
5
 
4
6
  @layer base {
5
-
6
7
  * {
7
8
  box-sizing: inherit;
9
+ @apply border-border outline-ring/50;
8
10
  }
9
11
 
10
12
  /*
11
- using this approach:
13
+ using this approach:
12
14
  https://stackoverflow.com/a/76066443/11645689
13
15
  see src/app/(home)/scroll-snap
14
16
  */
@@ -16,16 +18,14 @@
16
18
  html {
17
19
  scroll-snap-type: y mandatory;
18
20
  height: 100vh;
19
-
20
21
  overflow-y: scroll;
21
22
  box-sizing: border-box;
22
-
23
23
  scrollbar-width: none;
24
24
  }
25
25
 
26
26
  body {
27
27
  font-feature-settings: "rlig" 1, "calt" 1;
28
- font-size: 16px;
28
+ font-size: 16px;
29
29
  letter-spacing: 0.15px;
30
30
  }
31
31
  }
@@ -1,9 +1,11 @@
1
- @tailwind base;
2
- /* see https://stackoverflow.com/questions/69746121/using-nextjs-how-can-you-import-in-css-using-tailwind-css */
1
+ /**
2
+ * Hanzo UI - Default Color Theme
3
+ * Tailwind CSS 4 compatible with shadcn/ui color system
4
+ */
3
5
 
4
6
  @layer base {
5
-
6
7
  :root, .hanzo-ui-light-theme {
8
+ /* Hanzo UI legacy colors */
7
9
  --hz-ui-fg-0: hsl(0 0% 0%);
8
10
  --hz-ui-fg-body: hsl(0 0% 10%);
9
11
  --hz-ui-fg-1: hsl(0 0% 20%);
@@ -17,17 +19,15 @@
17
19
  --hz-ui-bg-2: hsl(0 0% 75%);
18
20
  --hz-ui-bg-3: hsl(0 0% 55%);
19
21
 
20
- --hz-ui-bg-overlay: hsla(0 0% 100% 0.60);
21
-
22
+ --hz-ui-bg-overlay: hsla(0 0% 100% / 60%);
22
23
  --hz-ui-bg-inverted: var(--hz-ui-fg-0);
23
- --hz-ui-bg-inverted-hover: hsla(0 0% 0% 0.85);
24
-
24
+ --hz-ui-bg-inverted-hover: hsla(0 0% 0% / 85%);
25
25
  --hz-ui-fg-inverted: var(--hz-ui-bg-0);
26
26
 
27
- --hz-ui-secondary-0: hsl(266, 79%, 80%);
28
- --hz-ui-secondary-1: hsl(266, 79%, 70%);
29
- --hz-ui-secondary-2: hsl(266, 79%, 60%);
30
- --hz-ui-secondary-3: hsl(266, 79%, 50%);
27
+ --hz-ui-secondary-0: hsl(266 79% 80%);
28
+ --hz-ui-secondary-1: hsl(266 79% 70%);
29
+ --hz-ui-secondary-2: hsl(266 79% 60%);
30
+ --hz-ui-secondary-3: hsl(266 79% 50%);
31
31
 
32
32
  --hz-ui-primary: var(--hz-ui-bg-inverted);
33
33
  --hz-ui-primary-hover: var(--hz-ui-bg-inverted-hover);
@@ -46,14 +46,48 @@
46
46
  --hz-ui-destructive-fg: hsl(0 0% 100%);
47
47
 
48
48
  --hz-ui-ring: var(--hz-ui-fg-2);
49
-
50
49
  --hz-ui-radius: 0.5rem;
50
+
51
+ /* shadcn/ui compatible color system */
52
+ --radius: 0.5rem;
53
+ --background: oklch(1 0 0);
54
+ --foreground: oklch(0.145 0 0);
55
+ --card: oklch(1 0 0);
56
+ --card-foreground: oklch(0.145 0 0);
57
+ --popover: oklch(1 0 0);
58
+ --popover-foreground: oklch(0.145 0 0);
59
+ --primary: oklch(0.205 0 0);
60
+ --primary-foreground: oklch(0.985 0 0);
61
+ --secondary: oklch(0.97 0 0);
62
+ --secondary-foreground: oklch(0.205 0 0);
63
+ --muted: oklch(0.97 0 0);
64
+ --muted-foreground: oklch(0.556 0 0);
65
+ --accent: oklch(0.97 0 0);
66
+ --accent-foreground: oklch(0.205 0 0);
67
+ --destructive: oklch(0.577 0.245 27.325);
68
+ --destructive-foreground: oklch(0.97 0.01 17);
69
+ --border: oklch(0.922 0 0);
70
+ --input: oklch(0.922 0 0);
71
+ --ring: oklch(0.708 0 0);
72
+ --chart-1: var(--color-blue-300);
73
+ --chart-2: var(--color-blue-500);
74
+ --chart-3: var(--color-blue-600);
75
+ --chart-4: var(--color-blue-700);
76
+ --chart-5: var(--color-blue-800);
77
+ --sidebar: oklch(0.985 0 0);
78
+ --sidebar-foreground: oklch(0.145 0 0);
79
+ --sidebar-primary: oklch(0.205 0 0);
80
+ --sidebar-primary-foreground: oklch(0.985 0 0);
81
+ --sidebar-accent: oklch(0.97 0 0);
82
+ --sidebar-accent-foreground: oklch(0.205 0 0);
83
+ --sidebar-border: oklch(0.922 0 0);
84
+ --sidebar-ring: oklch(0.708 0 0);
51
85
  }
52
-
53
- .hanzo-ui-dark-theme {
54
86
 
87
+ .dark, .hanzo-ui-dark-theme {
88
+ /* Hanzo UI legacy colors */
55
89
  --hz-ui-fg-0: hsl(0 0% 100%);
56
- --hz-ui-fg-body: hsl(0, 0%, 97%);
90
+ --hz-ui-fg-body: hsl(0 0% 97%);
57
91
  --hz-ui-fg-1: hsl(0 0% 85%);
58
92
  --hz-ui-fg-2: hsl(0 0% 70%);
59
93
  --hz-ui-fg-3: hsl(0 0% 55%);
@@ -61,22 +95,53 @@
61
95
  --hz-ui-fg-5: hsl(0 0% 25%);
62
96
 
63
97
  --hz-ui-bg-inverted: var(--hz-ui-fg-0);
64
- --hz-ui-bg-inverted-hover: hsla(0, 0%, 100%, 0.85);
98
+ --hz-ui-bg-inverted-hover: hsla(0 0% 100% / 85%);
65
99
 
66
100
  --hz-ui-bg-3: hsl(0 0% 25%);
67
101
  --hz-ui-bg-2: hsl(0 0% 18%);
68
102
  --hz-ui-bg-1: hsl(0 0% 12%);
69
103
  --hz-ui-bg-0: hsl(0 0% 0%);
70
104
 
71
- --hz-ui-bg-overlay: hsla(0 0% 0% 0.60);
72
-
105
+ --hz-ui-bg-overlay: hsla(0 0% 0% / 60%);
73
106
  --hz-ui-fg-inverted: var(--hz-ui-bg-0);
74
107
 
75
- --hz-ui-secondary-0: hsl(266, 79%, 40%);
76
- --hz-ui-secondary-1: hsl(266, 79%, 50%);
77
- --hz-ui-secondary-2: hsl(266, 79%, 60%);
78
- --hz-ui-secondary-3: hsl(266, 79%, 70%);
108
+ --hz-ui-secondary-0: hsl(266 79% 40%);
109
+ --hz-ui-secondary-1: hsl(266 79% 50%);
110
+ --hz-ui-secondary-2: hsl(266 79% 60%);
111
+ --hz-ui-secondary-3: hsl(266 79% 70%);
112
+
113
+ /* shadcn/ui compatible color system */
114
+ --background: oklch(0.145 0 0);
115
+ --foreground: oklch(0.985 0 0);
116
+ --card: oklch(0.205 0 0);
117
+ --card-foreground: oklch(0.985 0 0);
118
+ --popover: oklch(0.269 0 0);
119
+ --popover-foreground: oklch(0.985 0 0);
120
+ --primary: oklch(0.922 0 0);
121
+ --primary-foreground: oklch(0.205 0 0);
122
+ --secondary: oklch(0.269 0 0);
123
+ --secondary-foreground: oklch(0.985 0 0);
124
+ --muted: oklch(0.269 0 0);
125
+ --muted-foreground: oklch(0.708 0 0);
126
+ --accent: oklch(0.371 0 0);
127
+ --accent-foreground: oklch(0.985 0 0);
128
+ --destructive: oklch(0.704 0.191 22.216);
129
+ --destructive-foreground: oklch(0.58 0.22 27);
130
+ --border: oklch(1 0 0 / 10%);
131
+ --input: oklch(1 0 0 / 15%);
132
+ --ring: oklch(0.556 0 0);
133
+ --chart-1: var(--color-blue-300);
134
+ --chart-2: var(--color-blue-500);
135
+ --chart-3: var(--color-blue-600);
136
+ --chart-4: var(--color-blue-700);
137
+ --chart-5: var(--color-blue-800);
138
+ --sidebar: oklch(0.205 0 0);
139
+ --sidebar-foreground: oklch(0.985 0 0);
140
+ --sidebar-primary: oklch(0.488 0.243 264.376);
141
+ --sidebar-primary-foreground: oklch(0.985 0 0);
142
+ --sidebar-accent: oklch(0.269 0 0);
143
+ --sidebar-accent-foreground: oklch(0.985 0 0);
144
+ --sidebar-border: oklch(1 0 0 / 10%);
145
+ --sidebar-ring: oklch(0.439 0 0);
79
146
  }
80
-
81
147
  }
82
-
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Hanzo UI - Tailwind CSS 4 Config
3
+ * Import this file to get all Hanzo UI styles including:
4
+ * - Theme configuration (colors, radius, fonts)
5
+ * - Animation keyframes
6
+ * - Custom variants for data-* attributes
7
+ * - Utility classes
8
+ *
9
+ * Usage:
10
+ * @import "@hanzo/ui/style/tailwind.css";
11
+ *
12
+ * Or with globals:
13
+ * @import "tailwindcss";
14
+ * @import "@hanzo/ui/style/tailwind.css";
15
+ */
16
+
17
+ /* Theme configuration */
18
+ @theme inline {
19
+ --font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif;
20
+ --font-mono: var(--font-mono), ui-monospace, monospace;
21
+ --radius: 0.5rem;
22
+ --radius-sm: calc(var(--radius) - 4px);
23
+ --radius-md: calc(var(--radius) - 2px);
24
+ --radius-lg: var(--radius);
25
+ --radius-xl: calc(var(--radius) + 4px);
26
+ --radius-2xl: calc(var(--radius) + 8px);
27
+
28
+ /* Color mappings */
29
+ --color-background: var(--background);
30
+ --color-foreground: var(--foreground);
31
+ --color-card: var(--card);
32
+ --color-card-foreground: var(--card-foreground);
33
+ --color-popover: var(--popover);
34
+ --color-popover-foreground: var(--popover-foreground);
35
+ --color-primary: var(--primary);
36
+ --color-primary-foreground: var(--primary-foreground);
37
+ --color-secondary: var(--secondary);
38
+ --color-secondary-foreground: var(--secondary-foreground);
39
+ --color-muted: var(--muted);
40
+ --color-muted-foreground: var(--muted-foreground);
41
+ --color-accent: var(--accent);
42
+ --color-accent-foreground: var(--accent-foreground);
43
+ --color-destructive: var(--destructive);
44
+ --color-destructive-foreground: var(--destructive-foreground);
45
+ --color-border: var(--border);
46
+ --color-input: var(--input);
47
+ --color-ring: var(--ring);
48
+ --color-chart-1: var(--chart-1);
49
+ --color-chart-2: var(--chart-2);
50
+ --color-chart-3: var(--chart-3);
51
+ --color-chart-4: var(--chart-4);
52
+ --color-chart-5: var(--chart-5);
53
+ --color-sidebar: var(--sidebar);
54
+ --color-sidebar-foreground: var(--sidebar-foreground);
55
+ --color-sidebar-primary: var(--sidebar-primary);
56
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
57
+ --color-sidebar-accent: var(--sidebar-accent);
58
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
59
+ --color-sidebar-border: var(--sidebar-border);
60
+ --color-sidebar-ring: var(--sidebar-ring);
61
+
62
+ /* Animation keyframes */
63
+ @keyframes accordion-down {
64
+ from { height: 0; }
65
+ to { height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto)); }
66
+ }
67
+
68
+ @keyframes accordion-up {
69
+ from { height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto)); }
70
+ to { height: 0; }
71
+ }
72
+
73
+ @keyframes caret-blink {
74
+ 0%, 70%, 100% { opacity: 1; }
75
+ 20%, 50% { opacity: 0; }
76
+ }
77
+
78
+ @keyframes fade-in {
79
+ from { opacity: 0; }
80
+ to { opacity: 1; }
81
+ }
82
+
83
+ @keyframes fade-out {
84
+ from { opacity: 1; }
85
+ to { opacity: 0; }
86
+ }
87
+
88
+ @keyframes slide-in-from-top {
89
+ from { transform: translateY(-100%); }
90
+ to { transform: translateY(0); }
91
+ }
92
+
93
+ @keyframes slide-out-to-top {
94
+ from { transform: translateY(0); }
95
+ to { transform: translateY(-100%); }
96
+ }
97
+
98
+ @keyframes slide-in-from-bottom {
99
+ from { transform: translateY(100%); }
100
+ to { transform: translateY(0); }
101
+ }
102
+
103
+ @keyframes slide-out-to-bottom {
104
+ from { transform: translateY(0); }
105
+ to { transform: translateY(100%); }
106
+ }
107
+
108
+ @keyframes slide-in-from-left {
109
+ from { transform: translateX(-100%); }
110
+ to { transform: translateX(0); }
111
+ }
112
+
113
+ @keyframes slide-out-to-left {
114
+ from { transform: translateX(0); }
115
+ to { transform: translateX(-100%); }
116
+ }
117
+
118
+ @keyframes slide-in-from-right {
119
+ from { transform: translateX(100%); }
120
+ to { transform: translateX(0); }
121
+ }
122
+
123
+ @keyframes slide-out-to-right {
124
+ from { transform: translateX(0); }
125
+ to { transform: translateX(100%); }
126
+ }
127
+ }
128
+
129
+ /* Custom variants */
130
+ @custom-variant dark (&:is(.dark *));
131
+
132
+ @custom-variant data-open {
133
+ &:where([data-state="open"]),
134
+ &:where([data-open]:not([data-open="false"])) {
135
+ @slot;
136
+ }
137
+ }
138
+
139
+ @custom-variant data-closed {
140
+ &:where([data-state="closed"]),
141
+ &:where([data-closed]:not([data-closed="false"])) {
142
+ @slot;
143
+ }
144
+ }
145
+
146
+ @custom-variant data-checked {
147
+ &:where([data-state="checked"]),
148
+ &:where([data-checked]:not([data-checked="false"])) {
149
+ @slot;
150
+ }
151
+ }
152
+
153
+ @custom-variant data-unchecked {
154
+ &:where([data-state="unchecked"]),
155
+ &:where([data-unchecked]:not([data-unchecked="false"])) {
156
+ @slot;
157
+ }
158
+ }
159
+
160
+ @custom-variant data-selected {
161
+ &:where([data-selected="true"]) {
162
+ @slot;
163
+ }
164
+ }
165
+
166
+ @custom-variant data-disabled {
167
+ &:where([data-disabled="true"]),
168
+ &:where([data-disabled]:not([data-disabled="false"])) {
169
+ @slot;
170
+ }
171
+ }
172
+
173
+ @custom-variant data-active {
174
+ &:where([data-state="active"]),
175
+ &:where([data-active]:not([data-active="false"])) {
176
+ @slot;
177
+ }
178
+ }
179
+
180
+ @custom-variant data-horizontal {
181
+ &:where([data-orientation="horizontal"]) {
182
+ @slot;
183
+ }
184
+ }
185
+
186
+ @custom-variant data-vertical {
187
+ &:where([data-orientation="vertical"]) {
188
+ @slot;
189
+ }
190
+ }
191
+
192
+ /* Utility classes */
193
+ @utility no-scrollbar {
194
+ -ms-overflow-style: none;
195
+ scrollbar-width: none;
196
+
197
+ &::-webkit-scrollbar {
198
+ display: none;
199
+ }
200
+ }