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,121 @@
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-tabs {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 0.5rem;
9
+ }
10
+ .cl-tabs-list {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ width: fit-content;
15
+ height: 2rem;
16
+ padding: 3px;
17
+ border-radius: var(--radius);
18
+ background-color: var(--muted);
19
+ color: var(--muted-foreground);
20
+ }
21
+ .cl-tabs-list[data-variant=line] {
22
+ gap: 0.25rem;
23
+ border-radius: 0;
24
+ background-color: transparent;
25
+ }
26
+ .cl-tabs-trigger {
27
+ position: relative;
28
+ display: inline-flex;
29
+ flex: 1 1 0%;
30
+ align-items: center;
31
+ justify-content: center;
32
+ gap: 0.375rem;
33
+ height: calc(100% - 1px);
34
+ padding: 0.125rem 0.375rem;
35
+ border: 1px solid transparent;
36
+ border-radius: calc(var(--radius) * 0.8);
37
+ background-color: transparent;
38
+ color: color-mix(in oklab, var(--foreground) 60%, transparent);
39
+ font: inherit;
40
+ font-size: 0.875rem;
41
+ line-height: 1.25rem;
42
+ font-weight: 500;
43
+ white-space: nowrap;
44
+ cursor: pointer;
45
+ outline: none;
46
+ transition-property: all;
47
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
48
+ transition-duration: 150ms;
49
+ }
50
+ .cl-tabs-trigger svg {
51
+ pointer-events: none;
52
+ flex-shrink: 0;
53
+ }
54
+ .cl-tabs-trigger svg:not([class*=size-]) {
55
+ width: 1rem;
56
+ height: 1rem;
57
+ }
58
+ .cl-tabs-trigger:disabled {
59
+ pointer-events: none;
60
+ opacity: 0.5;
61
+ }
62
+ .cl-tabs-trigger[aria-selected=true] {
63
+ background-color: var(--background);
64
+ color: var(--foreground);
65
+ }
66
+ .cl-tabs-list:not([data-variant=line]) .cl-tabs-trigger[aria-selected=true] {
67
+ box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
68
+ }
69
+ .cl-tabs-list[data-variant=line] .cl-tabs-trigger {
70
+ background-color: transparent;
71
+ }
72
+ .cl-tabs-trigger::after {
73
+ content: "";
74
+ position: absolute;
75
+ inset-inline: 0;
76
+ bottom: -5px;
77
+ height: 2px;
78
+ background-color: var(--foreground);
79
+ opacity: 0;
80
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
81
+ }
82
+ .cl-tabs-list[data-variant=line] .cl-tabs-trigger[aria-selected=true]::after {
83
+ opacity: 1;
84
+ }
85
+ @media (hover: hover) {
86
+ .cl-tabs-trigger:hover {
87
+ color: var(--foreground);
88
+ }
89
+ }
90
+ .cl-tabs-trigger:focus-visible {
91
+ border-color: var(--ring);
92
+ outline: 1px solid var(--ring);
93
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
94
+ }
95
+ :where(.dark, [data-theme=dark]) .cl-tabs-trigger {
96
+ color: var(--muted-foreground);
97
+ }
98
+ @media (hover: hover) {
99
+ :where(.dark, [data-theme=dark]) .cl-tabs-trigger:hover {
100
+ color: var(--foreground);
101
+ }
102
+ }
103
+ :where(.dark, [data-theme=dark]) .cl-tabs-trigger[aria-selected=true] {
104
+ border-color: var(--input);
105
+ background-color: color-mix(in oklab, var(--input) 30%, transparent);
106
+ color: var(--foreground);
107
+ }
108
+ :where(.dark, [data-theme=dark]) .cl-tabs-list[data-variant=line] .cl-tabs-trigger[aria-selected=true] {
109
+ border-color: transparent;
110
+ background-color: transparent;
111
+ }
112
+ .cl-tabs-content {
113
+ flex: 1 1 0%;
114
+ font-size: 0.875rem;
115
+ line-height: 1.25rem;
116
+ outline: none;
117
+ }
118
+ .cl-tabs-content[hidden] {
119
+ display: none;
120
+ }
121
+ }
@@ -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-tabs{display:flex;flex-direction:column;gap:.5rem}.cl-tabs-list{display:inline-flex;align-items:center;justify-content:center;width:fit-content;height:2rem;padding:3px;border-radius:var(--radius);background-color:var(--muted);color:var(--muted-foreground)}.cl-tabs-list[data-variant=line]{gap:.25rem;border-radius:0;background-color:transparent}.cl-tabs-trigger{position:relative;display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;gap:.375rem;height:calc(100% - 1px);padding:.125rem .375rem;border:1px solid transparent;border-radius:calc(var(--radius) * .8);background-color:transparent;color:color-mix(in oklab,var(--foreground) 60%,transparent);font:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500;white-space:nowrap;cursor:pointer;outline:none;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cl-tabs-trigger svg{pointer-events:none;flex-shrink:0}.cl-tabs-trigger svg:not([class*=size-]){width:1rem;height:1rem}.cl-tabs-trigger:disabled{pointer-events:none;opacity:.5}.cl-tabs-trigger[aria-selected=true]{background-color:var(--background);color:var(--foreground)}.cl-tabs-list:not([data-variant=line]) .cl-tabs-trigger[aria-selected=true]{box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a}.cl-tabs-list[data-variant=line] .cl-tabs-trigger{background-color:transparent}.cl-tabs-trigger:after{content:"";position:absolute;inset-inline:0;bottom:-5px;height:2px;background-color:var(--foreground);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.cl-tabs-list[data-variant=line] .cl-tabs-trigger[aria-selected=true]:after{opacity:1}@media(hover:hover){.cl-tabs-trigger:hover{color:var(--foreground)}}.cl-tabs-trigger:focus-visible{border-color:var(--ring);outline:1px solid var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 50%,transparent)}:where(.dark,[data-theme=dark]) .cl-tabs-trigger{color:var(--muted-foreground)}@media(hover:hover){:where(.dark,[data-theme=dark]) .cl-tabs-trigger:hover{color:var(--foreground)}}:where(.dark,[data-theme=dark]) .cl-tabs-trigger[aria-selected=true]{border-color:var(--input);background-color:color-mix(in oklab,var(--input) 30%,transparent);color:var(--foreground)}:where(.dark,[data-theme=dark]) .cl-tabs-list[data-variant=line] .cl-tabs-trigger[aria-selected=true]{border-color:transparent;background-color:transparent}.cl-tabs-content{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;outline:none}.cl-tabs-content[hidden]{display:none}}
@@ -0,0 +1,61 @@
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-textarea {
6
+ display: flex;
7
+ field-sizing: content;
8
+ width: 100%;
9
+ min-height: 4rem;
10
+ padding: 0.5rem 0.625rem;
11
+ border: 1px solid var(--input);
12
+ border-radius: var(--radius);
13
+ background-color: transparent;
14
+ color: inherit;
15
+ font-size: 1rem;
16
+ line-height: 1.5rem;
17
+ outline: none;
18
+ transition-property:
19
+ color,
20
+ background-color,
21
+ border-color,
22
+ outline-color,
23
+ text-decoration-color,
24
+ fill,
25
+ stroke;
26
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
27
+ transition-duration: 150ms;
28
+ }
29
+ .cl-textarea::placeholder {
30
+ color: var(--muted-foreground);
31
+ }
32
+ .cl-textarea:focus-visible {
33
+ border-color: var(--ring);
34
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
35
+ }
36
+ .cl-textarea:disabled {
37
+ cursor: not-allowed;
38
+ opacity: 0.5;
39
+ background-color: color-mix(in oklab, var(--input) 50%, transparent);
40
+ }
41
+ .cl-textarea[aria-invalid=true] {
42
+ border-color: var(--destructive);
43
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 20%, transparent);
44
+ }
45
+ @media (width >= 48rem) {
46
+ .cl-textarea {
47
+ font-size: 0.875rem;
48
+ line-height: 1.25rem;
49
+ }
50
+ }
51
+ :where(.dark, [data-theme=dark]) .cl-textarea {
52
+ background-color: color-mix(in oklab, var(--input) 30%, transparent);
53
+ }
54
+ :where(.dark, [data-theme=dark]) .cl-textarea:disabled {
55
+ background-color: color-mix(in oklab, var(--input) 80%, transparent);
56
+ }
57
+ :where(.dark, [data-theme=dark]) .cl-textarea[aria-invalid=true] {
58
+ border-color: color-mix(in oklab, var(--destructive) 50%, transparent);
59
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--destructive) 40%, transparent);
60
+ }
61
+ }
@@ -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-textarea{display:flex;field-sizing:content;width:100%;min-height:4rem;padding:.5rem .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-textarea::placeholder{color:var(--muted-foreground)}.cl-textarea:focus-visible{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 50%,transparent)}.cl-textarea:disabled{cursor:not-allowed;opacity:.5;background-color:color-mix(in oklab,var(--input) 50%,transparent)}.cl-textarea[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-textarea{font-size:.875rem;line-height:1.25rem}}:where(.dark,[data-theme=dark]) .cl-textarea{background-color:color-mix(in oklab,var(--input) 30%,transparent)}:where(.dark,[data-theme=dark]) .cl-textarea:disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}:where(.dark,[data-theme=dark]) .cl-textarea[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)}}
@@ -0,0 +1,139 @@
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-toaster {
6
+ --gap: 14px;
7
+ position: fixed;
8
+ inset-inline-end: 24px;
9
+ bottom: 24px;
10
+ z-index: 100;
11
+ width: 356px;
12
+ height: var(--front-height, 0px);
13
+ margin: 0;
14
+ padding: 0;
15
+ list-style: none;
16
+ }
17
+ @media (width < 600px) {
18
+ .cl-toaster {
19
+ right: 16px;
20
+ bottom: 16px;
21
+ left: 16px;
22
+ width: auto;
23
+ }
24
+ }
25
+ .cl-toaster[data-expanded]::before {
26
+ content: "";
27
+ position: absolute;
28
+ inset-inline: 0;
29
+ bottom: 0;
30
+ height: var(--expanded-height, 0px);
31
+ }
32
+ .cl-toast {
33
+ --y: 0px;
34
+ --scale: 1;
35
+ position: absolute;
36
+ right: 0;
37
+ bottom: 0;
38
+ left: 0;
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 6px;
42
+ box-sizing: border-box;
43
+ padding: 16px;
44
+ overflow: hidden;
45
+ border: 1px solid var(--border);
46
+ border-radius: var(--radius);
47
+ background-color: var(--popover);
48
+ color: var(--popover-foreground);
49
+ font-size: 13px;
50
+ box-shadow: 0 4px 12px rgb(0 0 0 / 0.1);
51
+ transform: translateY(var(--y)) scale(var(--scale));
52
+ transform-origin: bottom center;
53
+ transition-property:
54
+ transform,
55
+ opacity,
56
+ height;
57
+ transition-duration: 400ms;
58
+ transition-timing-function: ease;
59
+ }
60
+ @starting-style {
61
+ .cl-toast {
62
+ opacity: 0;
63
+ transform: translateY(100%);
64
+ }
65
+ }
66
+ .cl-toaster:not([data-expanded]) .cl-toast:not([data-front]) {
67
+ height: var(--front-height);
68
+ }
69
+ .cl-toaster:not([data-expanded]) .cl-toast:not([data-front]) > * {
70
+ opacity: 0;
71
+ }
72
+ .cl-toast > * {
73
+ transition: opacity 400ms;
74
+ }
75
+ .cl-toast[data-hidden],
76
+ .cl-toast[data-removed] {
77
+ opacity: 0;
78
+ pointer-events: none;
79
+ }
80
+ .cl-toast[data-removed] {
81
+ transform: translateY(calc(var(--y) + 25%)) scale(var(--scale));
82
+ transition-duration: 200ms;
83
+ }
84
+ .cl-toast-icon {
85
+ display: flex;
86
+ flex-shrink: 0;
87
+ align-self: center;
88
+ margin-inline-end: 4px;
89
+ }
90
+ .cl-toast-icon svg {
91
+ width: 1rem;
92
+ height: 1rem;
93
+ }
94
+ .cl-toast[data-type=loading] .cl-toast-icon svg {
95
+ animation: cl-spin 1s linear infinite;
96
+ }
97
+ @keyframes cl-spin {
98
+ to {
99
+ rotate: 360deg;
100
+ }
101
+ }
102
+ .cl-toast-content {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 2px;
106
+ }
107
+ .cl-toast-title {
108
+ font-weight: 500;
109
+ line-height: 1.5;
110
+ }
111
+ .cl-toast-description {
112
+ color: #3f3f3f;
113
+ font-weight: 400;
114
+ line-height: 1.4;
115
+ }
116
+ :where(.dark, [data-theme=dark]) .cl-toast-description {
117
+ color: hsl(0 0% 91%);
118
+ }
119
+ .cl-toast-action {
120
+ flex-shrink: 0;
121
+ height: 24px;
122
+ margin-inline-start: auto;
123
+ padding: 0 8px;
124
+ border: 0;
125
+ border-radius: 4px;
126
+ background-color: var(--popover-foreground);
127
+ color: var(--popover);
128
+ font: inherit;
129
+ font-size: 12px;
130
+ font-weight: 500;
131
+ cursor: pointer;
132
+ }
133
+ @media (prefers-reduced-motion: reduce) {
134
+ .cl-toast,
135
+ .cl-toast > * {
136
+ transition-duration: 0ms;
137
+ }
138
+ }
139
+ }
@@ -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-toaster{--gap: 14px;position:fixed;inset-inline-end:24px;bottom:24px;z-index:100;width:356px;height:var(--front-height, 0px);margin:0;padding:0;list-style:none}@media(width<600px){.cl-toaster{right:16px;bottom:16px;left:16px;width:auto}}.cl-toaster[data-expanded]:before{content:"";position:absolute;inset-inline:0;bottom:0;height:var(--expanded-height, 0px)}.cl-toast{--y: 0px;--scale: 1;position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;gap:6px;box-sizing:border-box;padding:16px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background-color:var(--popover);color:var(--popover-foreground);font-size:13px;box-shadow:0 4px 12px #0000001a;transform:translateY(var(--y)) scale(var(--scale));transform-origin:bottom center;transition-property:transform,opacity,height;transition-duration:.4s;transition-timing-function:ease}@starting-style{.cl-toast{opacity:0;transform:translateY(100%)}}.cl-toaster:not([data-expanded]) .cl-toast:not([data-front]){height:var(--front-height)}.cl-toaster:not([data-expanded]) .cl-toast:not([data-front])>*{opacity:0}.cl-toast>*{transition:opacity .4s}.cl-toast[data-hidden],.cl-toast[data-removed]{opacity:0;pointer-events:none}.cl-toast[data-removed]{transform:translateY(calc(var(--y) + 25%)) scale(var(--scale));transition-duration:.2s}.cl-toast-icon{display:flex;flex-shrink:0;align-self:center;margin-inline-end:4px}.cl-toast-icon svg{width:1rem;height:1rem}.cl-toast[data-type=loading] .cl-toast-icon svg{animation:cl-spin 1s linear infinite}@keyframes cl-spin{to{rotate:360deg}}.cl-toast-content{display:flex;flex-direction:column;gap:2px}.cl-toast-title{font-weight:500;line-height:1.5}.cl-toast-description{color:#3f3f3f;font-weight:400;line-height:1.4}:where(.dark,[data-theme=dark]) .cl-toast-description{color:#e8e8e8}.cl-toast-action{flex-shrink:0;height:24px;margin-inline-start:auto;padding:0 8px;border:0;border-radius:4px;background-color:var(--popover-foreground);color:var(--popover);font:inherit;font-size:12px;font-weight:500;cursor:pointer}@media(prefers-reduced-motion:reduce){.cl-toast,.cl-toast>*{transition-duration:0ms}}}
@@ -0,0 +1,115 @@
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-tooltip {
60
+ display: none;
61
+ align-items: center;
62
+ gap: 0.375rem;
63
+ width: fit-content;
64
+ max-width: 20rem;
65
+ padding: 0.375rem 0.75rem;
66
+ border-radius: calc(var(--radius) * 0.8);
67
+ background-color: var(--foreground);
68
+ color: var(--background);
69
+ font-size: 0.75rem;
70
+ line-height: 1rem;
71
+ pointer-events: none;
72
+ }
73
+ .cl-tooltip:popover-open {
74
+ display: inline-flex;
75
+ }
76
+ .cl-tooltip:has(.cl-kbd) {
77
+ padding-inline-end: 0.375rem;
78
+ }
79
+ .cl-tooltip::after {
80
+ content: "";
81
+ position: absolute;
82
+ width: 0.625rem;
83
+ height: 0.625rem;
84
+ border-radius: 2px;
85
+ background-color: var(--foreground);
86
+ rotate: 45deg;
87
+ z-index: -1;
88
+ }
89
+ .cl-tooltip[data-placed=top]::after {
90
+ top: calc(100% - 7px);
91
+ left: calc(50% - 5px);
92
+ }
93
+ .cl-tooltip[data-placed=bottom]::after {
94
+ bottom: calc(100% - 7px);
95
+ left: calc(50% - 5px);
96
+ }
97
+ .cl-tooltip[data-placed=left]::after {
98
+ left: calc(100% - 7px);
99
+ top: calc(50% - 5px);
100
+ }
101
+ .cl-tooltip[data-placed=right]::after {
102
+ right: calc(100% - 7px);
103
+ top: calc(50% - 5px);
104
+ }
105
+ .cl-tooltip .cl-kbd {
106
+ position: relative;
107
+ z-index: 50;
108
+ border-radius: calc(var(--radius) * 0.6);
109
+ background-color: color-mix(in oklab, var(--background) 20%, transparent);
110
+ color: var(--background);
111
+ }
112
+ :where(.dark, [data-theme=dark]) .cl-tooltip .cl-kbd {
113
+ background-color: color-mix(in oklab, var(--background) 10%, transparent);
114
+ }
115
+ }
@@ -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-tooltip{display:none;align-items:center;gap:.375rem;width:fit-content;max-width:20rem;padding:.375rem .75rem;border-radius:calc(var(--radius) * .8);background-color:var(--foreground);color:var(--background);font-size:.75rem;line-height:1rem;pointer-events:none}.cl-tooltip:popover-open{display:inline-flex}.cl-tooltip:has(.cl-kbd){padding-inline-end:.375rem}.cl-tooltip:after{content:"";position:absolute;width:.625rem;height:.625rem;border-radius:2px;background-color:var(--foreground);rotate:45deg;z-index:-1}.cl-tooltip[data-placed=top]:after{top:calc(100% - 7px);left:calc(50% - 5px)}.cl-tooltip[data-placed=bottom]:after{bottom:calc(100% - 7px);left:calc(50% - 5px)}.cl-tooltip[data-placed=left]:after{left:calc(100% - 7px);top:calc(50% - 5px)}.cl-tooltip[data-placed=right]:after{right:calc(100% - 7px);top:calc(50% - 5px)}.cl-tooltip .cl-kbd{position:relative;z-index:50;border-radius:calc(var(--radius) * .6);background-color:color-mix(in oklab,var(--background) 20%,transparent);color:var(--background)}:where(.dark,[data-theme=dark]) .cl-tooltip .cl-kbd{background-color:color-mix(in oklab,var(--background) 10%,transparent)}}
package/core.css ADDED
@@ -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
+ :root {
5
+ --radius: 0.625rem;
6
+ --background: oklch(1 0 0);
7
+ --foreground: oklch(0.145 0 0);
8
+ --card: oklch(1 0 0);
9
+ --card-foreground: oklch(0.145 0 0);
10
+ --popover: oklch(1 0 0);
11
+ --popover-foreground: oklch(0.145 0 0);
12
+ --primary: oklch(0.205 0 0);
13
+ --primary-foreground: oklch(0.985 0 0);
14
+ --secondary: oklch(0.97 0 0);
15
+ --secondary-foreground: oklch(0.205 0 0);
16
+ --muted: oklch(0.97 0 0);
17
+ --muted-foreground: oklch(0.556 0 0);
18
+ --accent: oklch(0.97 0 0);
19
+ --accent-foreground: oklch(0.205 0 0);
20
+ --destructive: oklch(0.577 0.245 27.325);
21
+ --border: oklch(0.922 0 0);
22
+ --input: oklch(0.922 0 0);
23
+ --ring: oklch(0.708 0 0);
24
+ --chart-1: oklch(0.87 0 0);
25
+ --chart-2: oklch(0.556 0 0);
26
+ --chart-3: oklch(0.439 0 0);
27
+ --chart-4: oklch(0.371 0 0);
28
+ --chart-5: oklch(0.269 0 0);
29
+ --sidebar: oklch(0.985 0 0);
30
+ --sidebar-foreground: oklch(0.145 0 0);
31
+ --sidebar-primary: oklch(0.205 0 0);
32
+ --sidebar-primary-foreground: oklch(0.985 0 0);
33
+ --sidebar-accent: oklch(0.97 0 0);
34
+ --sidebar-accent-foreground: oklch(0.205 0 0);
35
+ --sidebar-border: oklch(0.922 0 0);
36
+ --sidebar-ring: oklch(0.708 0 0);
37
+ }
38
+ .dark,
39
+ [data-theme=dark] {
40
+ --background: oklch(0.145 0 0);
41
+ --foreground: oklch(0.985 0 0);
42
+ --card: oklch(0.205 0 0);
43
+ --card-foreground: oklch(0.985 0 0);
44
+ --popover: oklch(0.205 0 0);
45
+ --popover-foreground: oklch(0.985 0 0);
46
+ --primary: oklch(0.922 0 0);
47
+ --primary-foreground: oklch(0.205 0 0);
48
+ --secondary: oklch(0.269 0 0);
49
+ --secondary-foreground: oklch(0.985 0 0);
50
+ --muted: oklch(0.269 0 0);
51
+ --muted-foreground: oklch(0.708 0 0);
52
+ --accent: oklch(0.269 0 0);
53
+ --accent-foreground: oklch(0.985 0 0);
54
+ --destructive: oklch(0.704 0.191 22.216);
55
+ --border: oklch(1 0 0 / 10%);
56
+ --input: oklch(1 0 0 / 15%);
57
+ --ring: oklch(0.556 0 0);
58
+ --chart-1: oklch(0.87 0 0);
59
+ --chart-2: oklch(0.556 0 0);
60
+ --chart-3: oklch(0.439 0 0);
61
+ --chart-4: oklch(0.371 0 0);
62
+ --chart-5: oklch(0.269 0 0);
63
+ --sidebar: oklch(0.205 0 0);
64
+ --sidebar-foreground: oklch(0.985 0 0);
65
+ --sidebar-primary: oklch(0.488 0.243 264.376);
66
+ --sidebar-primary-foreground: oklch(0.985 0 0);
67
+ --sidebar-accent: oklch(0.269 0 0);
68
+ --sidebar-accent-foreground: oklch(0.985 0 0);
69
+ --sidebar-border: oklch(1 0 0 / 10%);
70
+ --sidebar-ring: oklch(0.556 0 0);
71
+ }
72
+
73
+ @layer cl.base {
74
+ *,
75
+ *::before,
76
+ *::after {
77
+ box-sizing: border-box;
78
+ border: 0 solid var(--border);
79
+ outline-color: color-mix(in oklab, var(--ring) 50%, transparent);
80
+ }
81
+ * {
82
+ margin: 0;
83
+ padding: 0;
84
+ }
85
+ html {
86
+ -webkit-text-size-adjust: 100%;
87
+ text-size-adjust: 100%;
88
+ font-family: var( --font-sans, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji" );
89
+ line-height: 1.5;
90
+ -webkit-font-smoothing: antialiased;
91
+ -moz-osx-font-smoothing: grayscale;
92
+ }
93
+ body {
94
+ min-height: 100dvh;
95
+ background-color: var(--background);
96
+ color: var(--foreground);
97
+ }
98
+ img,
99
+ picture,
100
+ video,
101
+ canvas,
102
+ svg {
103
+ display: block;
104
+ max-width: 100%;
105
+ }
106
+ input,
107
+ button,
108
+ textarea,
109
+ select {
110
+ font: inherit;
111
+ color: inherit;
112
+ background-color: transparent;
113
+ }
114
+ button {
115
+ cursor: pointer;
116
+ }
117
+ h1,
118
+ h2,
119
+ h3,
120
+ h4,
121
+ h5,
122
+ h6 {
123
+ font-size: inherit;
124
+ font-weight: inherit;
125
+ text-wrap: balance;
126
+ overflow-wrap: break-word;
127
+ }
128
+ p {
129
+ text-wrap: pretty;
130
+ overflow-wrap: break-word;
131
+ }
132
+ a {
133
+ color: inherit;
134
+ text-decoration: inherit;
135
+ }
136
+ code,
137
+ kbd,
138
+ samp,
139
+ pre {
140
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
141
+ }
142
+ }
143
+
144
+ @layer cl.utilities {
145
+ .cl-container {
146
+ width: 100%;
147
+ max-width: var(--cl-max, 72rem);
148
+ margin-inline: auto;
149
+ padding-inline: 1rem;
150
+ }
151
+ .cl-stack {
152
+ display: flex;
153
+ flex-direction: column;
154
+ gap: var(--cl-gap, 1rem);
155
+ }
156
+ .cl-cluster {
157
+ display: flex;
158
+ flex-wrap: wrap;
159
+ align-items: center;
160
+ gap: var(--cl-gap, 0.5rem);
161
+ }
162
+ .cl-grid-auto {
163
+ display: grid;
164
+ grid-template-columns: repeat(auto-fit, minmax(min(var(--cl-min, 16rem), 100%), 1fr));
165
+ gap: var(--cl-gap, 1rem);
166
+ }
167
+ .cl-sr-only {
168
+ position: absolute;
169
+ width: 1px;
170
+ height: 1px;
171
+ padding: 0;
172
+ margin: -1px;
173
+ overflow: hidden;
174
+ clip-path: inset(50%);
175
+ white-space: nowrap;
176
+ border: 0;
177
+ }
178
+ }
package/core.min.css ADDED
@@ -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;:root{--radius: .625rem;--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: oklch(.205 0 0);--primary-foreground: oklch(.985 0 0);--secondary: oklch(.97 0 0);--secondary-foreground: oklch(.205 0 0);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: oklch(.577 .245 27.325);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: oklch(.708 0 0);--chart-1: oklch(.87 0 0);--chart-2: oklch(.556 0 0);--chart-3: oklch(.439 0 0);--chart-4: oklch(.371 0 0);--chart-5: oklch(.269 0 0);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: oklch(.205 0 0);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark,[data-theme=dark]{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(.922 0 0);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.704 .191 22.216);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: oklch(.556 0 0);--chart-1: oklch(.87 0 0);--chart-2: oklch(.556 0 0);--chart-3: oklch(.439 0 0);--chart-4: oklch(.371 0 0);--chart-5: oklch(.269 0 0);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: oklch(.556 0 0)}@layer cl.base{*,*:before,*:after{box-sizing:border-box;border:0 solid var(--border);outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;font-family:var( --font-sans, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji" );line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100dvh;background-color:var(--background);color:var(--foreground)}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit;background-color:transparent}button{cursor:pointer}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;text-wrap:balance;overflow-wrap:break-word}p{text-wrap:pretty;overflow-wrap:break-word}a{color:inherit;text-decoration:inherit}code,kbd,samp,pre{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace)}}@layer cl.utilities{.cl-container{width:100%;max-width:var(--cl-max, 72rem);margin-inline:auto;padding-inline:1rem}.cl-stack{display:flex;flex-direction:column;gap:var(--cl-gap, 1rem)}.cl-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cl-gap, .5rem)}.cl-grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--cl-min, 16rem),100%),1fr));gap:var(--cl-gap, 1rem)}.cl-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}