cladux-html 0.1.0 → 0.3.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.
Files changed (66) hide show
  1. package/README.md +22 -11
  2. package/cl.css +2246 -2
  3. package/cl.js +866 -2
  4. package/cl.min.css +2 -0
  5. package/cl.min.js +2 -0
  6. package/cl.min.mjs +2 -0
  7. package/cl.mjs +868 -0
  8. package/components/accordion.css +103 -0
  9. package/components/accordion.min.css +2 -0
  10. package/components/badge.css +100 -0
  11. package/components/badge.min.css +2 -0
  12. package/components/button.css +178 -0
  13. package/components/button.min.css +2 -0
  14. package/components/card.css +88 -0
  15. package/components/card.min.css +2 -0
  16. package/components/carousel.css +75 -0
  17. package/components/carousel.min.css +2 -0
  18. package/components/checkbox.css +80 -0
  19. package/components/checkbox.min.css +2 -0
  20. package/components/combobox.css +260 -0
  21. package/components/combobox.min.css +2 -0
  22. package/components/dialog.css +128 -0
  23. package/components/dialog.min.css +2 -0
  24. package/components/dropdown-menu.css +178 -0
  25. package/components/dropdown-menu.min.css +2 -0
  26. package/components/input.css +71 -0
  27. package/components/input.min.css +2 -0
  28. package/components/kbd.css +34 -0
  29. package/components/kbd.min.css +2 -0
  30. package/components/label.css +23 -0
  31. package/components/label.min.css +2 -0
  32. package/components/popover.css +94 -0
  33. package/components/popover.min.css +2 -0
  34. package/components/select.css +89 -0
  35. package/components/select.min.css +2 -0
  36. package/components/separator.css +16 -0
  37. package/components/separator.min.css +2 -0
  38. package/components/sheet.css +134 -0
  39. package/components/sheet.min.css +2 -0
  40. package/components/skeleton.css +15 -0
  41. package/components/skeleton.min.css +2 -0
  42. package/components/slider.css +88 -0
  43. package/components/slider.min.css +2 -0
  44. package/components/switch.css +84 -0
  45. package/components/switch.min.css +2 -0
  46. package/components/tabs.css +121 -0
  47. package/components/tabs.min.css +2 -0
  48. package/components/textarea.css +61 -0
  49. package/components/textarea.min.css +2 -0
  50. package/components/toast.css +139 -0
  51. package/components/toast.min.css +2 -0
  52. package/components/tooltip.css +115 -0
  53. package/components/tooltip.min.css +2 -0
  54. package/core.css +178 -0
  55. package/core.min.css +2 -0
  56. package/package.json +35 -4
  57. package/types/accordion.d.ts +1 -0
  58. package/types/carousel.d.ts +8 -0
  59. package/types/combobox.d.ts +11 -0
  60. package/types/dialog.d.ts +3 -0
  61. package/types/floating.d.ts +12 -0
  62. package/types/index.d.ts +16 -0
  63. package/types/position.d.ts +17 -0
  64. package/types/slider.d.ts +5 -0
  65. package/types/tabs.d.ts +4 -0
  66. package/types/toast.d.ts +21 -0
@@ -0,0 +1,260 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base, cl.components, cl.utilities;
3
+
4
+ @layer cl.components {
5
+ .cl-popover,
6
+ .cl-menu,
7
+ .cl-tooltip,
8
+ .cl-combobox-content {
9
+ --_slide: 0.5rem;
10
+ position: fixed;
11
+ inset: auto;
12
+ z-index: 50;
13
+ margin: 0;
14
+ border: 0 solid var(--border);
15
+ overflow: visible;
16
+ opacity: 0;
17
+ scale: 0.95;
18
+ transition-property:
19
+ opacity,
20
+ scale,
21
+ translate,
22
+ display,
23
+ overlay;
24
+ transition-duration: 100ms;
25
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
26
+ transition-behavior: allow-discrete;
27
+ }
28
+ .cl-popover:popover-open,
29
+ .cl-menu:popover-open,
30
+ .cl-tooltip:popover-open,
31
+ .cl-combobox-content:popover-open {
32
+ opacity: 1;
33
+ scale: 1;
34
+ }
35
+ @starting-style {
36
+ .cl-popover:popover-open,
37
+ .cl-menu:popover-open,
38
+ .cl-tooltip:popover-open,
39
+ .cl-combobox-content:popover-open {
40
+ opacity: 0;
41
+ scale: 0.95;
42
+ }
43
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=bottom] {
44
+ translate: 0 calc(var(--_slide) * -1);
45
+ }
46
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=top] {
47
+ translate: 0 var(--_slide);
48
+ }
49
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=left] {
50
+ translate: var(--_slide) 0;
51
+ }
52
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=right] {
53
+ translate: calc(var(--_slide) * -1) 0;
54
+ }
55
+ }
56
+ }
57
+
58
+ @layer cl.components {
59
+ .cl-combobox {
60
+ position: relative;
61
+ display: flex;
62
+ align-items: center;
63
+ height: 2rem;
64
+ min-width: 0;
65
+ border: 1px solid var(--input);
66
+ border-radius: var(--radius);
67
+ transition-property:
68
+ color,
69
+ background-color,
70
+ border-color,
71
+ outline-color,
72
+ text-decoration-color,
73
+ fill,
74
+ stroke;
75
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
76
+ transition-duration: 150ms;
77
+ }
78
+ .cl-combobox:has(> .cl-combobox-input:focus-visible) {
79
+ border-color: var(--ring);
80
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
81
+ }
82
+ .cl-combobox:has(> .cl-combobox-input[aria-invalid=true]) {
83
+ border-color: var(--destructive);
84
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 20%, transparent);
85
+ }
86
+ .cl-combobox:has(> .cl-combobox-input:disabled) {
87
+ background-color: color-mix(in oklab, var(--input) 50%, transparent);
88
+ opacity: 0.5;
89
+ }
90
+ :where(.dark, [data-theme=dark]) .cl-combobox {
91
+ background-color: color-mix(in oklab, var(--input) 30%, transparent);
92
+ }
93
+ :where(.dark, [data-theme=dark]) .cl-combobox:has(> .cl-combobox-input:disabled) {
94
+ background-color: color-mix(in oklab, var(--input) 80%, transparent);
95
+ }
96
+ :where(.dark, [data-theme=dark]) .cl-combobox:has(> .cl-combobox-input[aria-invalid=true]) {
97
+ border-color: color-mix(in oklab, var(--destructive) 50%, transparent);
98
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 40%, transparent);
99
+ }
100
+ .cl-combobox-input {
101
+ flex: 1;
102
+ width: 100%;
103
+ min-width: 0;
104
+ height: 2rem;
105
+ padding: 0.25rem 0.375rem 0.25rem 0.625rem;
106
+ border: 0;
107
+ border-radius: 0;
108
+ background-color: transparent;
109
+ color: inherit;
110
+ font-size: 1rem;
111
+ line-height: 1.5rem;
112
+ outline: none;
113
+ }
114
+ .cl-combobox-input::placeholder {
115
+ color: var(--muted-foreground);
116
+ }
117
+ .cl-combobox-input:disabled {
118
+ pointer-events: none;
119
+ cursor: not-allowed;
120
+ }
121
+ @media (width >= 48rem) {
122
+ .cl-combobox-input {
123
+ font-size: 0.875rem;
124
+ line-height: 1.25rem;
125
+ }
126
+ }
127
+ .cl-combobox-trigger {
128
+ display: flex;
129
+ flex-shrink: 0;
130
+ align-items: center;
131
+ justify-content: center;
132
+ width: 1.5rem;
133
+ height: 1.5rem;
134
+ margin-inline-end: 0.2rem;
135
+ padding: 0;
136
+ border: 0;
137
+ border-radius: calc(var(--radius) - 3px);
138
+ background-color: transparent;
139
+ cursor: default;
140
+ transition-property: color, background-color;
141
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
142
+ transition-duration: 150ms;
143
+ }
144
+ .cl-combobox-trigger::before {
145
+ content: "";
146
+ width: 1rem;
147
+ height: 1rem;
148
+ background-color: var(--muted-foreground);
149
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
150
+ }
151
+ @media (hover: hover) {
152
+ .cl-combobox-trigger:hover {
153
+ background-color: var(--muted);
154
+ }
155
+ }
156
+ .cl-combobox-trigger:disabled {
157
+ pointer-events: none;
158
+ }
159
+ .cl-combobox-content {
160
+ display: none;
161
+ width: var(--cl-anchor-width, auto);
162
+ min-width: max(9rem, calc(var(--cl-anchor-width, 0px) + 1.75rem));
163
+ max-height: min(18rem, var(--cl-available-height, 18rem));
164
+ overflow: hidden;
165
+ padding: 0;
166
+ border-radius: var(--radius);
167
+ background-color: var(--popover);
168
+ color: var(--popover-foreground);
169
+ font-size: 1rem;
170
+ line-height: 1.5rem;
171
+ box-shadow:
172
+ 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent),
173
+ 0 4px 6px -1px rgb(0 0 0 / 0.1),
174
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
175
+ }
176
+ .cl-combobox-content:popover-open {
177
+ display: block;
178
+ }
179
+ .cl-combobox-list {
180
+ max-height: min(15.75rem, calc(var(--cl-available-height, 18rem) - 2.25rem));
181
+ overflow-y: auto;
182
+ overscroll-behavior: contain;
183
+ scroll-padding-block: 0.25rem;
184
+ scrollbar-width: none;
185
+ padding: 0.25rem;
186
+ }
187
+ .cl-combobox-list::-webkit-scrollbar {
188
+ display: none;
189
+ }
190
+ .cl-combobox-content[data-empty] .cl-combobox-list {
191
+ padding: 0;
192
+ }
193
+ .cl-combobox-item {
194
+ position: relative;
195
+ display: flex;
196
+ align-items: center;
197
+ gap: 0.5rem;
198
+ width: 100%;
199
+ padding-block: 0.25rem;
200
+ padding-inline: 0.375rem 2rem;
201
+ border-radius: calc(var(--radius) * 0.8);
202
+ font-size: 0.875rem;
203
+ line-height: 1.25rem;
204
+ cursor: default;
205
+ -webkit-user-select: none;
206
+ user-select: none;
207
+ outline: none;
208
+ }
209
+ .cl-combobox-item[hidden] {
210
+ display: none;
211
+ }
212
+ .cl-combobox-item[data-highlighted] {
213
+ background-color: var(--accent);
214
+ color: var(--accent-foreground);
215
+ }
216
+ .cl-combobox-item[aria-disabled=true] {
217
+ pointer-events: none;
218
+ opacity: 0.5;
219
+ }
220
+ .cl-combobox-item svg {
221
+ flex-shrink: 0;
222
+ width: 1rem;
223
+ height: 1rem;
224
+ pointer-events: none;
225
+ }
226
+ .cl-combobox-item[aria-selected=true]::after {
227
+ content: "";
228
+ position: absolute;
229
+ inset-inline-end: 0.5rem;
230
+ width: 1rem;
231
+ height: 1rem;
232
+ background-color: currentColor;
233
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
234
+ pointer-events: none;
235
+ }
236
+ .cl-combobox-label {
237
+ padding: 0.375rem 0.5rem;
238
+ color: var(--muted-foreground);
239
+ font-size: 0.75rem;
240
+ line-height: 1rem;
241
+ }
242
+ .cl-combobox-separator {
243
+ height: 1px;
244
+ margin: 0.25rem -0.25rem;
245
+ background-color: var(--border);
246
+ }
247
+ .cl-combobox-empty {
248
+ display: none;
249
+ justify-content: center;
250
+ width: 100%;
251
+ padding-block: 0.5rem;
252
+ color: var(--muted-foreground);
253
+ font-size: 0.875rem;
254
+ line-height: 1.25rem;
255
+ text-align: center;
256
+ }
257
+ .cl-combobox-content[data-empty] .cl-combobox-empty {
258
+ display: flex;
259
+ }
260
+ }
@@ -0,0 +1,2 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base,cl.components,cl.utilities;@layer cl.components{.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content{--_slide: .5rem;position:fixed;inset:auto;z-index:50;margin:0;border:0 solid var(--border);overflow:visible;opacity:0;scale:.95;transition-property:opacity,scale,translate,display,overlay;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-behavior:allow-discrete}.cl-popover:popover-open,.cl-menu:popover-open,.cl-tooltip:popover-open,.cl-combobox-content:popover-open{opacity:1;scale:1}@starting-style{.cl-popover:popover-open,.cl-menu:popover-open,.cl-tooltip:popover-open,.cl-combobox-content:popover-open{opacity:0;scale:.95}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=bottom]{translate:0 calc(var(--_slide) * -1)}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=top]{translate:0 var(--_slide)}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=left]{translate:var(--_slide) 0}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=right]{translate:calc(var(--_slide) * -1) 0}}}@layer cl.components{.cl-combobox{position:relative;display:flex;align-items:center;height:2rem;min-width:0;border:1px solid var(--input);border-radius:var(--radius);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cl-combobox:has(>.cl-combobox-input:focus-visible){border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 50%,transparent)}.cl-combobox:has(>.cl-combobox-input[aria-invalid=true]){border-color:var(--destructive);box-shadow:0 0 0 3px color-mix(in oklab,var(--destructive) 20%,transparent)}.cl-combobox:has(>.cl-combobox-input:disabled){background-color:color-mix(in oklab,var(--input) 50%,transparent);opacity:.5}:where(.dark,[data-theme=dark]) .cl-combobox{background-color:color-mix(in oklab,var(--input) 30%,transparent)}:where(.dark,[data-theme=dark]) .cl-combobox:has(>.cl-combobox-input:disabled){background-color:color-mix(in oklab,var(--input) 80%,transparent)}:where(.dark,[data-theme=dark]) .cl-combobox:has(>.cl-combobox-input[aria-invalid=true]){border-color:color-mix(in oklab,var(--destructive) 50%,transparent);box-shadow:0 0 0 3px color-mix(in oklab,var(--destructive) 40%,transparent)}.cl-combobox-input{flex:1;width:100%;min-width:0;height:2rem;padding:.25rem .375rem .25rem .625rem;border:0;border-radius:0;background-color:transparent;color:inherit;font-size:1rem;line-height:1.5rem;outline:none}.cl-combobox-input::placeholder{color:var(--muted-foreground)}.cl-combobox-input:disabled{pointer-events:none;cursor:not-allowed}@media(width>=48rem){.cl-combobox-input{font-size:.875rem;line-height:1.25rem}}.cl-combobox-trigger{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-inline-end:.2rem;padding:0;border:0;border-radius:calc(var(--radius) - 3px);background-color:transparent;cursor:default;transition-property:color,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cl-combobox-trigger:before{content:"";width:1rem;height:1rem;background-color:var(--muted-foreground);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat}@media(hover:hover){.cl-combobox-trigger:hover{background-color:var(--muted)}}.cl-combobox-trigger:disabled{pointer-events:none}.cl-combobox-content{display:none;width:var(--cl-anchor-width, auto);min-width:max(9rem,calc(var(--cl-anchor-width, 0px) + 1.75rem));max-height:min(18rem,var(--cl-available-height, 18rem));overflow:hidden;padding:0;border-radius:var(--radius);background-color:var(--popover);color:var(--popover-foreground);font-size:1rem;line-height:1.5rem;box-shadow:0 0 0 1px color-mix(in oklab,var(--foreground) 10%,transparent),0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.cl-combobox-content:popover-open{display:block}.cl-combobox-list{max-height:min(15.75rem,calc(var(--cl-available-height, 18rem) - 2.25rem));overflow-y:auto;overscroll-behavior:contain;scroll-padding-block:.25rem;scrollbar-width:none;padding:.25rem}.cl-combobox-list::-webkit-scrollbar{display:none}.cl-combobox-content[data-empty] .cl-combobox-list{padding:0}.cl-combobox-item{position:relative;display:flex;align-items:center;gap:.5rem;width:100%;padding-block:.25rem;padding-inline:.375rem 2rem;border-radius:calc(var(--radius) * .8);font-size:.875rem;line-height:1.25rem;cursor:default;-webkit-user-select:none;user-select:none;outline:none}.cl-combobox-item[hidden]{display:none}.cl-combobox-item[data-highlighted]{background-color:var(--accent);color:var(--accent-foreground)}.cl-combobox-item[aria-disabled=true]{pointer-events:none;opacity:.5}.cl-combobox-item svg{flex-shrink:0;width:1rem;height:1rem;pointer-events:none}.cl-combobox-item[aria-selected=true]:after{content:"";position:absolute;inset-inline-end:.5rem;width:1rem;height:1rem;background-color:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;pointer-events:none}.cl-combobox-label{padding:.375rem .5rem;color:var(--muted-foreground);font-size:.75rem;line-height:1rem}.cl-combobox-separator{height:1px;margin:.25rem -.25rem;background-color:var(--border)}.cl-combobox-empty{display:none;justify-content:center;width:100%;padding-block:.5rem;color:var(--muted-foreground);font-size:.875rem;line-height:1.25rem;text-align:center}.cl-combobox-content[data-empty] .cl-combobox-empty{display:flex}}
@@ -0,0 +1,128 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base, cl.components, cl.utilities;
3
+
4
+ @layer cl.components {
5
+ .cl-dialog {
6
+ position: fixed;
7
+ inset: 50% auto auto 50%;
8
+ z-index: 50;
9
+ gap: 1rem;
10
+ width: 100%;
11
+ height: auto;
12
+ max-width: calc(100% - 2rem);
13
+ max-height: none;
14
+ margin: 0;
15
+ padding: 1rem;
16
+ border: 0;
17
+ border-radius: calc(var(--radius) * 1.4);
18
+ background-color: var(--popover);
19
+ color: var(--popover-foreground);
20
+ font-size: 0.875rem;
21
+ line-height: 1.25rem;
22
+ outline: none;
23
+ box-shadow: 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent);
24
+ translate: -50% -50%;
25
+ opacity: 0;
26
+ scale: 0.95;
27
+ transition-property:
28
+ opacity,
29
+ scale,
30
+ display,
31
+ overlay;
32
+ transition-duration: 100ms;
33
+ transition-timing-function: ease;
34
+ transition-behavior: allow-discrete;
35
+ }
36
+ .cl-dialog[open] {
37
+ display: grid;
38
+ opacity: 1;
39
+ scale: 1;
40
+ }
41
+ @starting-style {
42
+ .cl-dialog[open] {
43
+ opacity: 0;
44
+ scale: 0.95;
45
+ }
46
+ }
47
+ @media (width >= 40rem) {
48
+ .cl-dialog {
49
+ max-width: 24rem;
50
+ }
51
+ }
52
+ .cl-dialog::backdrop {
53
+ background-color: rgb(0 0 0 / 0);
54
+ transition-property:
55
+ background-color,
56
+ backdrop-filter,
57
+ display,
58
+ overlay;
59
+ transition-duration: 100ms;
60
+ transition-timing-function: ease;
61
+ transition-behavior: allow-discrete;
62
+ }
63
+ .cl-dialog[open]::backdrop {
64
+ background-color: rgb(0 0 0 / 0.1);
65
+ -webkit-backdrop-filter: blur(4px);
66
+ backdrop-filter: blur(4px);
67
+ }
68
+ @starting-style {
69
+ .cl-dialog[open]::backdrop {
70
+ background-color: rgb(0 0 0 / 0);
71
+ -webkit-backdrop-filter: blur(0);
72
+ backdrop-filter: blur(0);
73
+ }
74
+ }
75
+ @media (prefers-reduced-motion: reduce) {
76
+ .cl-dialog,
77
+ .cl-dialog::backdrop {
78
+ transition-duration: 0s;
79
+ }
80
+ }
81
+ .cl-dialog-header {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 0.5rem;
85
+ }
86
+ .cl-dialog-title {
87
+ margin: 0;
88
+ font-size: 1rem;
89
+ line-height: 1;
90
+ font-weight: 500;
91
+ }
92
+ .cl-dialog-description {
93
+ margin: 0;
94
+ color: var(--muted-foreground);
95
+ font-size: 0.875rem;
96
+ line-height: 1.25rem;
97
+ }
98
+ .cl-dialog-description > a {
99
+ text-decoration-line: underline;
100
+ text-underline-offset: 3px;
101
+ }
102
+ @media (hover: hover) {
103
+ .cl-dialog-description > a:hover {
104
+ color: var(--foreground);
105
+ }
106
+ }
107
+ .cl-dialog-footer {
108
+ display: flex;
109
+ flex-direction: column-reverse;
110
+ gap: 0.5rem;
111
+ margin: 0 -1rem -1rem;
112
+ padding: 1rem;
113
+ border-top: 1px solid var(--border);
114
+ border-radius: 0 0 calc(var(--radius) * 1.4) calc(var(--radius) * 1.4);
115
+ background-color: color-mix(in oklab, var(--muted) 50%, transparent);
116
+ }
117
+ @media (width >= 40rem) {
118
+ .cl-dialog-footer {
119
+ flex-direction: row;
120
+ justify-content: flex-end;
121
+ }
122
+ }
123
+ .cl-dialog-close {
124
+ position: absolute;
125
+ top: 0.5rem;
126
+ inset-inline-end: 0.5rem;
127
+ }
128
+ }
@@ -0,0 +1,2 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base,cl.components,cl.utilities;@layer cl.components{.cl-dialog{position:fixed;inset:50% auto auto 50%;z-index:50;gap:1rem;width:100%;height:auto;max-width:calc(100% - 2rem);max-height:none;margin:0;padding:1rem;border:0;border-radius:calc(var(--radius) * 1.4);background-color:var(--popover);color:var(--popover-foreground);font-size:.875rem;line-height:1.25rem;outline:none;box-shadow:0 0 0 1px color-mix(in oklab,var(--foreground) 10%,transparent);translate:-50% -50%;opacity:0;scale:.95;transition-property:opacity,scale,display,overlay;transition-duration:.1s;transition-timing-function:ease;transition-behavior:allow-discrete}.cl-dialog[open]{display:grid;opacity:1;scale:1}@starting-style{.cl-dialog[open]{opacity:0;scale:.95}}@media(width>=40rem){.cl-dialog{max-width:24rem}}.cl-dialog::backdrop{background-color:#0000;transition-property:background-color,backdrop-filter,display,overlay;transition-duration:.1s;transition-timing-function:ease;transition-behavior:allow-discrete}.cl-dialog[open]::backdrop{background-color:#0000001a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@starting-style{.cl-dialog[open]::backdrop{background-color:#0000;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}}@media(prefers-reduced-motion:reduce){.cl-dialog,.cl-dialog::backdrop{transition-duration:0s}}.cl-dialog-header{display:flex;flex-direction:column;gap:.5rem}.cl-dialog-title{margin:0;font-size:1rem;line-height:1;font-weight:500}.cl-dialog-description{margin:0;color:var(--muted-foreground);font-size:.875rem;line-height:1.25rem}.cl-dialog-description>a{text-decoration-line:underline;text-underline-offset:3px}@media(hover:hover){.cl-dialog-description>a:hover{color:var(--foreground)}}.cl-dialog-footer{display:flex;flex-direction:column-reverse;gap:.5rem;margin:0 -1rem -1rem;padding:1rem;border-top:1px solid var(--border);border-radius:0 0 calc(var(--radius) * 1.4) calc(var(--radius) * 1.4);background-color:color-mix(in oklab,var(--muted) 50%,transparent)}@media(width>=40rem){.cl-dialog-footer{flex-direction:row;justify-content:flex-end}}.cl-dialog-close{position:absolute;top:.5rem;inset-inline-end:.5rem}}
@@ -0,0 +1,178 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base, cl.components, cl.utilities;
3
+
4
+ @layer cl.components {
5
+ .cl-popover,
6
+ .cl-menu,
7
+ .cl-tooltip,
8
+ .cl-combobox-content {
9
+ --_slide: 0.5rem;
10
+ position: fixed;
11
+ inset: auto;
12
+ z-index: 50;
13
+ margin: 0;
14
+ border: 0 solid var(--border);
15
+ overflow: visible;
16
+ opacity: 0;
17
+ scale: 0.95;
18
+ transition-property:
19
+ opacity,
20
+ scale,
21
+ translate,
22
+ display,
23
+ overlay;
24
+ transition-duration: 100ms;
25
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
26
+ transition-behavior: allow-discrete;
27
+ }
28
+ .cl-popover:popover-open,
29
+ .cl-menu:popover-open,
30
+ .cl-tooltip:popover-open,
31
+ .cl-combobox-content:popover-open {
32
+ opacity: 1;
33
+ scale: 1;
34
+ }
35
+ @starting-style {
36
+ .cl-popover:popover-open,
37
+ .cl-menu:popover-open,
38
+ .cl-tooltip:popover-open,
39
+ .cl-combobox-content:popover-open {
40
+ opacity: 0;
41
+ scale: 0.95;
42
+ }
43
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=bottom] {
44
+ translate: 0 calc(var(--_slide) * -1);
45
+ }
46
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=top] {
47
+ translate: 0 var(--_slide);
48
+ }
49
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=left] {
50
+ translate: var(--_slide) 0;
51
+ }
52
+ :is(.cl-popover, .cl-menu, .cl-tooltip, .cl-combobox-content):popover-open[data-placed=right] {
53
+ translate: calc(var(--_slide) * -1) 0;
54
+ }
55
+ }
56
+ }
57
+
58
+ @layer cl.components {
59
+ .cl-menu {
60
+ display: none;
61
+ width: var(--cl-anchor-width, auto);
62
+ min-width: 8rem;
63
+ max-height: var(--cl-available-height, none);
64
+ overflow-x: hidden;
65
+ overflow-y: auto;
66
+ padding: 0.25rem;
67
+ border-radius: var(--radius);
68
+ background-color: var(--popover);
69
+ color: var(--popover-foreground);
70
+ font-size: 1rem;
71
+ line-height: 1.5rem;
72
+ outline: none;
73
+ box-shadow:
74
+ 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent),
75
+ 0 4px 6px -1px rgb(0 0 0 / 0.1),
76
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
77
+ }
78
+ .cl-menu:popover-open {
79
+ display: block;
80
+ }
81
+ .cl-menu-item {
82
+ position: relative;
83
+ display: flex;
84
+ align-items: center;
85
+ gap: 0.375rem;
86
+ width: 100%;
87
+ padding: 0.25rem 0.375rem;
88
+ border: 0 solid var(--border);
89
+ border-radius: calc(var(--radius) * 0.8);
90
+ background-color: transparent;
91
+ color: inherit;
92
+ font: inherit;
93
+ font-size: 0.875rem;
94
+ line-height: 1.25rem;
95
+ text-align: start;
96
+ text-decoration: none;
97
+ cursor: default;
98
+ outline: none;
99
+ user-select: none;
100
+ -webkit-user-select: none;
101
+ }
102
+ .cl-menu-item svg {
103
+ pointer-events: none;
104
+ flex-shrink: 0;
105
+ }
106
+ .cl-menu-item svg:not([class*=size-]) {
107
+ width: 1rem;
108
+ height: 1rem;
109
+ }
110
+ .cl-menu-item:focus {
111
+ background-color: var(--accent);
112
+ color: var(--accent-foreground);
113
+ }
114
+ .cl-menu-item:not([data-variant=destructive]):focus * {
115
+ color: var(--accent-foreground);
116
+ }
117
+ .cl-menu-item[data-inset] {
118
+ padding-inline-start: 1.75rem;
119
+ }
120
+ .cl-menu-item:disabled,
121
+ .cl-menu-item[aria-disabled=true] {
122
+ pointer-events: none;
123
+ opacity: 0.5;
124
+ }
125
+ .cl-menu-item[data-variant=destructive],
126
+ .cl-menu-item[data-variant=destructive] > svg {
127
+ color: var(--destructive);
128
+ }
129
+ .cl-menu-item[data-variant=destructive]:focus {
130
+ background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
131
+ color: var(--destructive);
132
+ }
133
+ :where(.dark, [data-theme=dark]) .cl-menu-item[data-variant=destructive]:focus {
134
+ background-color: color-mix(in oklab, var(--destructive) 20%, transparent);
135
+ }
136
+ .cl-menu-item:is([role=menuitemcheckbox], [role=menuitemradio]) {
137
+ padding-inline-end: 2rem;
138
+ padding-inline-start: 0.375rem;
139
+ }
140
+ .cl-menu-item:is([role=menuitemcheckbox], [role=menuitemradio])::after {
141
+ content: "";
142
+ position: absolute;
143
+ inset-inline-end: 0.5rem;
144
+ width: 1rem;
145
+ height: 1rem;
146
+ background-color: currentColor;
147
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
148
+ visibility: hidden;
149
+ }
150
+ .cl-menu-item[aria-checked=true]::after {
151
+ visibility: visible;
152
+ }
153
+ .cl-menu-label {
154
+ padding: 0.25rem 0.375rem;
155
+ color: var(--muted-foreground);
156
+ font-size: 0.75rem;
157
+ line-height: 1rem;
158
+ font-weight: 500;
159
+ }
160
+ .cl-menu-label[data-inset] {
161
+ padding-inline-start: 1.75rem;
162
+ }
163
+ .cl-menu-separator {
164
+ height: 1px;
165
+ margin: 0.25rem -0.25rem;
166
+ background-color: var(--border);
167
+ }
168
+ .cl-menu-shortcut {
169
+ margin-inline-start: auto;
170
+ color: var(--muted-foreground);
171
+ font-size: 0.75rem;
172
+ line-height: 1rem;
173
+ letter-spacing: 0.1em;
174
+ }
175
+ .cl-menu-item:focus .cl-menu-shortcut {
176
+ color: var(--accent-foreground);
177
+ }
178
+ }
@@ -0,0 +1,2 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base,cl.components,cl.utilities;@layer cl.components{.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content{--_slide: .5rem;position:fixed;inset:auto;z-index:50;margin:0;border:0 solid var(--border);overflow:visible;opacity:0;scale:.95;transition-property:opacity,scale,translate,display,overlay;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-behavior:allow-discrete}.cl-popover:popover-open,.cl-menu:popover-open,.cl-tooltip:popover-open,.cl-combobox-content:popover-open{opacity:1;scale:1}@starting-style{.cl-popover:popover-open,.cl-menu:popover-open,.cl-tooltip:popover-open,.cl-combobox-content:popover-open{opacity:0;scale:.95}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=bottom]{translate:0 calc(var(--_slide) * -1)}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=top]{translate:0 var(--_slide)}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=left]{translate:var(--_slide) 0}:is(.cl-popover,.cl-menu,.cl-tooltip,.cl-combobox-content):popover-open[data-placed=right]{translate:calc(var(--_slide) * -1) 0}}}@layer cl.components{.cl-menu{display:none;width:var(--cl-anchor-width, auto);min-width:8rem;max-height:var(--cl-available-height, none);overflow-x:hidden;overflow-y:auto;padding:.25rem;border-radius:var(--radius);background-color:var(--popover);color:var(--popover-foreground);font-size:1rem;line-height:1.5rem;outline:none;box-shadow:0 0 0 1px color-mix(in oklab,var(--foreground) 10%,transparent),0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.cl-menu:popover-open{display:block}.cl-menu-item{position:relative;display:flex;align-items:center;gap:.375rem;width:100%;padding:.25rem .375rem;border:0 solid var(--border);border-radius:calc(var(--radius) * .8);background-color:transparent;color:inherit;font:inherit;font-size:.875rem;line-height:1.25rem;text-align:start;text-decoration:none;cursor:default;outline:none;user-select:none;-webkit-user-select:none}.cl-menu-item svg{pointer-events:none;flex-shrink:0}.cl-menu-item svg:not([class*=size-]){width:1rem;height:1rem}.cl-menu-item:focus{background-color:var(--accent);color:var(--accent-foreground)}.cl-menu-item:not([data-variant=destructive]):focus *{color:var(--accent-foreground)}.cl-menu-item[data-inset]{padding-inline-start:1.75rem}.cl-menu-item:disabled,.cl-menu-item[aria-disabled=true]{pointer-events:none;opacity:.5}.cl-menu-item[data-variant=destructive],.cl-menu-item[data-variant=destructive]>svg{color:var(--destructive)}.cl-menu-item[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent);color:var(--destructive)}:where(.dark,[data-theme=dark]) .cl-menu-item[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}.cl-menu-item:is([role=menuitemcheckbox],[role=menuitemradio]){padding-inline-end:2rem;padding-inline-start:.375rem}.cl-menu-item:is([role=menuitemcheckbox],[role=menuitemradio]):after{content:"";position:absolute;inset-inline-end:.5rem;width:1rem;height:1rem;background-color:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;visibility:hidden}.cl-menu-item[aria-checked=true]:after{visibility:visible}.cl-menu-label{padding:.25rem .375rem;color:var(--muted-foreground);font-size:.75rem;line-height:1rem;font-weight:500}.cl-menu-label[data-inset]{padding-inline-start:1.75rem}.cl-menu-separator{height:1px;margin:.25rem -.25rem;background-color:var(--border)}.cl-menu-shortcut{margin-inline-start:auto;color:var(--muted-foreground);font-size:.75rem;line-height:1rem;letter-spacing:.1em}.cl-menu-item:focus .cl-menu-shortcut{color:var(--accent-foreground)}}
@@ -0,0 +1,71 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base, cl.components, cl.utilities;
3
+
4
+ @layer cl.components {
5
+ .cl-input {
6
+ width: 100%;
7
+ min-width: 0;
8
+ height: 2rem;
9
+ padding: 0.25rem 0.625rem;
10
+ border: 1px solid var(--input);
11
+ border-radius: var(--radius);
12
+ background-color: transparent;
13
+ color: inherit;
14
+ font-size: 1rem;
15
+ line-height: 1.5rem;
16
+ outline: none;
17
+ transition-property:
18
+ color,
19
+ background-color,
20
+ border-color,
21
+ outline-color,
22
+ text-decoration-color,
23
+ fill,
24
+ stroke;
25
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
26
+ transition-duration: 150ms;
27
+ }
28
+ .cl-input::placeholder {
29
+ color: var(--muted-foreground);
30
+ }
31
+ .cl-input::file-selector-button {
32
+ display: inline-flex;
33
+ height: 1.5rem;
34
+ border: 0;
35
+ background-color: transparent;
36
+ color: var(--foreground);
37
+ font-size: 0.875rem;
38
+ line-height: 1.25rem;
39
+ font-weight: 500;
40
+ }
41
+ .cl-input:focus-visible {
42
+ border-color: var(--ring);
43
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
44
+ }
45
+ .cl-input:disabled {
46
+ pointer-events: none;
47
+ cursor: not-allowed;
48
+ opacity: 0.5;
49
+ background-color: color-mix(in oklab, var(--input) 50%, transparent);
50
+ }
51
+ .cl-input[aria-invalid=true] {
52
+ border-color: var(--destructive);
53
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 20%, transparent);
54
+ }
55
+ @media (width >= 48rem) {
56
+ .cl-input {
57
+ font-size: 0.875rem;
58
+ line-height: 1.25rem;
59
+ }
60
+ }
61
+ :where(.dark, [data-theme=dark]) .cl-input {
62
+ background-color: color-mix(in oklab, var(--input) 30%, transparent);
63
+ }
64
+ :where(.dark, [data-theme=dark]) .cl-input:disabled {
65
+ background-color: color-mix(in oklab, var(--input) 80%, transparent);
66
+ }
67
+ :where(.dark, [data-theme=dark]) .cl-input[aria-invalid=true] {
68
+ border-color: color-mix(in oklab, var(--destructive) 50%, transparent);
69
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 40%, transparent);
70
+ }
71
+ }
@@ -0,0 +1,2 @@
1
+ /*! cladux-html v0.3.0 | Apache-2.0 | https://cladux.vercel.app/docs/html */
2
+ @layer cl.base,cl.components,cl.utilities;@layer cl.components{.cl-input{width:100%;min-width:0;height:2rem;padding:.25rem .625rem;border:1px solid var(--input);border-radius:var(--radius);background-color:transparent;color:inherit;font-size:1rem;line-height:1.5rem;outline:none;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cl-input::placeholder{color:var(--muted-foreground)}.cl-input::file-selector-button{display:inline-flex;height:1.5rem;border:0;background-color:transparent;color:var(--foreground);font-size:.875rem;line-height:1.25rem;font-weight:500}.cl-input:focus-visible{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 50%,transparent)}.cl-input:disabled{pointer-events:none;cursor:not-allowed;opacity:.5;background-color:color-mix(in oklab,var(--input) 50%,transparent)}.cl-input[aria-invalid=true]{border-color:var(--destructive);box-shadow:0 0 0 3px color-mix(in oklab,var(--destructive) 20%,transparent)}@media(width>=48rem){.cl-input{font-size:.875rem;line-height:1.25rem}}:where(.dark,[data-theme=dark]) .cl-input{background-color:color-mix(in oklab,var(--input) 30%,transparent)}:where(.dark,[data-theme=dark]) .cl-input:disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}:where(.dark,[data-theme=dark]) .cl-input[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent);box-shadow:0 0 0 3px color-mix(in oklab,var(--destructive) 40%,transparent)}}