cmat 0.0.21 → 0.0.22
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/components/material-color-picker/base-color.d.ts +1 -0
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-breadcrumb.mjs +9 -9
- package/fesm2022/cmat-components-card.mjs +4 -4
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +12 -12
- package/fesm2022/cmat-components-cascade.mjs +9 -9
- package/fesm2022/cmat-components-chip-input.mjs +3 -3
- package/fesm2022/cmat-components-custom-formly.mjs +94 -94
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +3 -3
- package/fesm2022/cmat-components-drawer.mjs +6 -6
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-image-viewer.mjs +3 -3
- package/fesm2022/cmat-components-json-editor.mjs +3 -3
- package/fesm2022/cmat-components-knob-input.mjs +3 -3
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs +16 -4
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +43 -43
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +40 -40
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +3 -3
- package/fesm2022/cmat-components-org-chart.mjs +9 -9
- package/fesm2022/cmat-components-pagination.mjs +15 -13
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +9 -9
- package/fesm2022/cmat-components-popover.mjs +9 -9
- package/fesm2022/cmat-components-progress-bar.mjs +4 -4
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +3 -3
- package/fesm2022/cmat-components-select-search.mjs +9 -9
- package/fesm2022/cmat-components-select-table.mjs +4 -4
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +3 -3
- package/fesm2022/cmat-components-speed-dial.mjs +9 -9
- package/fesm2022/cmat-components-timeline.mjs +13 -13
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +9 -9
- package/fesm2022/cmat-components-transfer-picker.mjs +19 -19
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +6 -6
- package/fesm2022/cmat-components-upload.mjs +11 -11
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +9 -11
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +3 -3
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-data-exporter.mjs +21 -21
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-digit-only.mjs +6 -6
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-confirmation.mjs +7 -7
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-export-as.mjs +3 -3
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs +3 -3
- package/package.json +35 -35
- package/styles/components/bundle.scss +23 -25
- package/styles/components/input.scss +2 -0
- package/styles/overrides/angular-material.scss +75 -59
- package/styles/overrides/fullcalendar.scss +3 -1
- package/styles/overrides/quill.scss +8 -6
- package/styles/tailwind.scss +101 -13
- package/styles/user-themes.scss +1 -1
- package/tailwind/plugins/helpers.js +16 -0
- package/tailwind/plugins/scrollbar/index.js +31 -0
- package/tailwind/plugins/scrollbar/typedefs.js +9 -0
- package/tailwind/plugins/scrollbar/utilities.js +201 -0
- package/tailwind/plugins/scrollbar/variants.js +30 -0
- package/tailwind/plugins/theming.js +257 -256
- package/tailwind/plugins/utilities.js +12 -25
- package/tailwind/utils/json-to-sass-map.js +28 -36
package/styles/tailwind.scss
CHANGED
|
@@ -1,8 +1,49 @@
|
|
|
1
|
-
@
|
|
1
|
+
@import "tailwindcss" important;
|
|
2
|
+
|
|
3
|
+
@theme {
|
|
4
|
+
--color-slate-300: oklch(0.869 0.022 252.894);
|
|
5
|
+
--color-slate-500: oklch(0.554 0.046 257.417);
|
|
6
|
+
|
|
7
|
+
--spacing: 0.25rem;
|
|
8
|
+
|
|
9
|
+
--font-weight-thin: 100;
|
|
10
|
+
--font-weight-extralight: 200;
|
|
11
|
+
--font-weight-light: 300;
|
|
12
|
+
--font-weight-normal: 400;
|
|
13
|
+
--font-weight-medium: 500;
|
|
14
|
+
--font-weight-semibold: 600;
|
|
15
|
+
--font-weight-bold: 700;
|
|
16
|
+
--font-weight-extrabold: 800;
|
|
17
|
+
--font-weight-black: 900;
|
|
18
|
+
|
|
19
|
+
--tracking-tighter: -0.05em;
|
|
20
|
+
--tracking-tight: -0.025em;
|
|
21
|
+
--tracking-normal: 0em;
|
|
22
|
+
--tracking-wide: 0.025em;
|
|
23
|
+
--tracking-wider: 0.05em;
|
|
24
|
+
--tracking-widest: 0.1em;
|
|
25
|
+
|
|
26
|
+
--leading-tight: 1.25;
|
|
27
|
+
--leading-snug: 1.375;
|
|
28
|
+
--leading-normal: 1.5;
|
|
29
|
+
--leading-relaxed: 1.625;
|
|
30
|
+
--leading-loose: 2;
|
|
31
|
+
|
|
32
|
+
--radius-xs: 0.125rem;
|
|
33
|
+
--radius-sm: 0.25rem;
|
|
34
|
+
--radius-md: 0.375rem;
|
|
35
|
+
--radius-lg: 0.5rem;
|
|
36
|
+
--radius-xl: 0.75rem;
|
|
37
|
+
--radius-2xl: 1rem;
|
|
38
|
+
--radius-3xl: 1.5rem;
|
|
39
|
+
--radius-4xl: 2rem;
|
|
40
|
+
}
|
|
2
41
|
|
|
3
42
|
@layer base {
|
|
4
|
-
|
|
5
43
|
* {
|
|
44
|
+
font-family: 'AliPuHuiTi', sans-serif;
|
|
45
|
+
font-weight: 400;
|
|
46
|
+
|
|
6
47
|
text-rendering: optimizeLegibility;
|
|
7
48
|
-o-text-rendering: optimizeLegibility;
|
|
8
49
|
-ms-text-rendering: optimizeLegibility;
|
|
@@ -11,10 +52,51 @@
|
|
|
11
52
|
-webkit-tap-highlight-color: transparent;
|
|
12
53
|
|
|
13
54
|
&:focus {
|
|
14
|
-
outline: none
|
|
55
|
+
outline: none;
|
|
15
56
|
}
|
|
16
57
|
}
|
|
17
58
|
|
|
59
|
+
@font-face {
|
|
60
|
+
font-family: "AliPuHuiTi";
|
|
61
|
+
font-weight: 300;
|
|
62
|
+
src: url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/9h5VGOQoDZYl.woff2") format("woff2"),
|
|
63
|
+
url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/ZNBWNQa9veoY.woff") format("woff");
|
|
64
|
+
font-display: swap;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@font-face {
|
|
69
|
+
font-family: "AliPuHuiTi";
|
|
70
|
+
font-weight: 400;
|
|
71
|
+
src: url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/zxZG2AFzPblS.woff2") format("woff2"),
|
|
72
|
+
url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/Ug89Q4PaDfc0.woff") format("woff");
|
|
73
|
+
font-display: swap;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@font-face {
|
|
77
|
+
font-family: "AliPuHuiTi";
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
src: url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/iHLBGts4nfJk.woff2") format("woff2"),
|
|
80
|
+
url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/M5baxmeyKXjA.woff") format("woff");
|
|
81
|
+
font-display: swap;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@font-face {
|
|
85
|
+
font-family: "AliPuHuiTi";
|
|
86
|
+
font-weight: 600;
|
|
87
|
+
src: url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/ENq0nndzfIbV.woff2") format("woff2"),
|
|
88
|
+
url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/OuKxFrSQmkWs.woff") format("woff");
|
|
89
|
+
font-display: swap;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@font-face {
|
|
93
|
+
font-family: "AliPuHuiTi";
|
|
94
|
+
font-weight: 700;
|
|
95
|
+
src: url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/V1iTYPwc1Qhu.woff2") format("woff2"),
|
|
96
|
+
url("//at.alicdn.com/wf/webfont/hIzeQ7f86wl2/9RvMt0f7HbS7.woff") format("woff");
|
|
97
|
+
font-display: swap;
|
|
98
|
+
}
|
|
99
|
+
|
|
18
100
|
html,
|
|
19
101
|
body {
|
|
20
102
|
display: flex;
|
|
@@ -43,12 +125,16 @@
|
|
|
43
125
|
border-bottom-width: 1px;
|
|
44
126
|
}
|
|
45
127
|
|
|
46
|
-
body,
|
|
47
|
-
|
|
128
|
+
body,
|
|
129
|
+
.dark,
|
|
130
|
+
.light {
|
|
131
|
+
@apply text-default bg-default;
|
|
48
132
|
}
|
|
49
133
|
|
|
50
134
|
|
|
51
|
-
*,
|
|
135
|
+
*,
|
|
136
|
+
*::before,
|
|
137
|
+
*::after {
|
|
52
138
|
--tw-border-opacity: 1 !important;
|
|
53
139
|
border-color: rgba(var(--cmat-border-rgb), var(--tw-border-opacity));
|
|
54
140
|
|
|
@@ -58,7 +144,7 @@
|
|
|
58
144
|
}
|
|
59
145
|
|
|
60
146
|
[disabled] * {
|
|
61
|
-
@apply text-disabled
|
|
147
|
+
@apply text-disabled;
|
|
62
148
|
}
|
|
63
149
|
|
|
64
150
|
@media print {
|
|
@@ -67,16 +153,18 @@
|
|
|
67
153
|
font-size: 12px !important;
|
|
68
154
|
}
|
|
69
155
|
|
|
70
|
-
body,
|
|
156
|
+
body,
|
|
157
|
+
.dark,
|
|
158
|
+
.light {
|
|
71
159
|
background: none !important;
|
|
72
160
|
}
|
|
73
161
|
}
|
|
74
162
|
|
|
75
|
-
.
|
|
76
|
-
|
|
163
|
+
.mat-icon {
|
|
164
|
+
color: rgba(var(--cmat-icon-rgb), 1);
|
|
77
165
|
}
|
|
78
166
|
}
|
|
79
167
|
|
|
80
|
-
@
|
|
81
|
-
|
|
82
|
-
|
|
168
|
+
@utility scrollbar-custom {
|
|
169
|
+
@apply scrollbar-thin scrollbar-thumb-primary-300 scrollbar-track-gray-300 scrollbar-thumb-rounded-md scrollbar-hover:scrollbar-thumb-primary-600 dark:scrollbar-track-gray-600;
|
|
170
|
+
}
|
package/styles/user-themes.scss
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
$user-themes: (default: (selector: ".theme-default", primary: (50: #eef2ff, 100: #e0e7ff, 200: #
|
|
1
|
+
$user-themes: (default: (selector: ".theme-default", primary: (50: #eef2ff, 100: #e0e7ff, 200: #c6d2ff, 300: #a3b3ff, 400: #7c86ff, 500: #615fff, 600: #4f39f6, 700: #432dd7, 800: #372aac, 900: #312c85, 950: #1e1a4d, DEFAULT: #4f39f6, contrast: (50: #1e1a4d, 100: #1e1a4d, 200: #1e1a4d, 300: #1e1a4d, 400: #1e1a4d, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), accent: (50: #fdf2f8, 100: #fce7f3, 200: #fccee8, 300: #fda5d5, 400: #fb64b6, 500: #f6339a, 600: #e60076, 700: #c6005c, 800: #a3004c, 900: #861043, 950: #510424, DEFAULT: #e60076, contrast: (50: #510424, 100: #510424, 200: #510424, 300: #510424, 400: #510424, 500: #510424, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))), sky: (selector: ".theme-sky", primary: (50: #f0f9ff, 100: #dff2fe, 200: #b8e6fe, 300: #74d4ff, 400: #00bcff, 500: #00a6f4, 600: #0084d1, 700: #0069a8, 800: #00598a, 900: #024a70, 950: #052f4a, DEFAULT: #00a6f4, contrast: (50: #052f4a, 100: #052f4a, 200: #052f4a, 300: #052f4a, 400: #052f4a, 500: #052f4a, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #052f4a)), accent: (50: #f8fafc, 100: #f1f5f9, 200: #e2e8f0, 300: #cad5e2, 400: #90a1b9, 500: #62748e, 600: #45556c, 700: #314158, 800: #1d293d, 900: #0f172b, 950: #020618, DEFAULT: #45556c, contrast: (50: #020618, 100: #020618, 200: #020618, 300: #020618, 400: #020618, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))), teal: (selector: ".theme-teal", primary: (50: #f0fdfa, 100: #cbfbf1, 200: #96f7e4, 300: #46ecd5, 400: #00d5be, 500: #00bba7, 600: #009689, 700: #00786f, 800: #005f5a, 900: #0b4f4a, 950: #022f2e, DEFAULT: #009689, contrast: (50: #022f2e, 100: #022f2e, 200: #022f2e, 300: #022f2e, 400: #022f2e, 500: #022f2e, 600: #022f2e, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #022f2e)), accent: (50: #fff7ed, 100: #ffedd4, 200: #ffd6a7, 300: #ffb86a, 400: #ff8904, 500: #ff6900, 600: #f54900, 700: #ca3500, 800: #9f2d00, 900: #7e2a0c, 950: #441306, DEFAULT: #f54900, contrast: (50: #441306, 100: #441306, 200: #441306, 300: #441306, 400: #441306, 500: #441306, 600: #441306, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #441306)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))), rose: (selector: ".theme-rose", primary: (50: #fff1f2, 100: #ffe4e6, 200: #ffccd3, 300: #ffa1ad, 400: #ff637e, 500: #ff2056, 600: #ec003f, 700: #c70036, 800: #a50036, 900: #8b0836, 950: #4d0218, DEFAULT: #ff2056, contrast: (50: #4d0218, 100: #4d0218, 200: #4d0218, 300: #4d0218, 400: #4d0218, 500: #4d0218, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #4d0218)), accent: (50: #eef2ff, 100: #e0e7ff, 200: #c6d2ff, 300: #a3b3ff, 400: #7c86ff, 500: #615fff, 600: #4f39f6, 700: #432dd7, 800: #372aac, 900: #312c85, 950: #1e1a4d, DEFAULT: #615fff, contrast: (50: #1e1a4d, 100: #1e1a4d, 200: #1e1a4d, 300: #1e1a4d, 400: #1e1a4d, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))), violet: (selector: ".theme-violet", primary: (50: #f5f3ff, 100: #ede9fe, 200: #ddd6ff, 300: #c4b4ff, 400: #a684ff, 500: #8e51ff, 600: #7f22fe, 700: #7008e7, 800: #5d0ec0, 900: #4d179a, 950: #2f0d68, DEFAULT: #7f22fe, contrast: (50: #2f0d68, 100: #2f0d68, 200: #2f0d68, 300: #2f0d68, 400: #2f0d68, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), accent: (50: #ecfdf5, 100: #d0fae5, 200: #a4f4cf, 300: #5ee9b5, 400: #00d492, 500: #00bc7d, 600: #096, 700: #007a55, 800: #006045, 900: #004f3b, 950: #002c22, DEFAULT: #096, contrast: (50: #002c22, 100: #002c22, 200: #002c22, 300: #002c22, 400: #002c22, 500: #002c22, 600: #002c22, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #002c22)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))), amber: (selector: ".theme-amber", primary: (50: #fffbeb, 100: #fef3c6, 200: #fee685, 300: #ffd230, 400: #ffba00, 500: #fd9a00, 600: #e17100, 700: #bb4d00, 800: #973c00, 900: #7b3306, 950: #461901, DEFAULT: #fd9a00, contrast: (50: #461901, 100: #461901, 200: #461901, 300: #461901, 400: #461901, 500: #461901, 600: #461901, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #461901)), accent: (50: #f5f3ff, 100: #ede9fe, 200: #ddd6ff, 300: #c4b4ff, 400: #a684ff, 500: #8e51ff, 600: #7f22fe, 700: #7008e7, 800: #5d0ec0, 900: #4d179a, 950: #2f0d68, DEFAULT: #8e51ff, contrast: (50: #2f0d68, 100: #2f0d68, 200: #2f0d68, 300: #2f0d68, 400: #2f0d68, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff)), warn: (50: #fef2f2, 100: #ffe2e2, 200: #ffc9c9, 300: #ffa2a2, 400: #ff6467, 500: #fb2c36, 600: #e7000b, 700: #c10007, 800: #9f0712, 900: #82181a, 950: #460809, DEFAULT: #e7000b, contrast: (50: #460809, 100: #460809, 200: #460809, 300: #460809, 400: #460809, 500: #fef2f2, 600: #fff, 700: #fff, 800: #fff, 900: #fff, 950: #fff, DEFAULT: #fff))));
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the underlying default import of a module.
|
|
3
|
+
*
|
|
4
|
+
* This is used to handle internal imoprts from Tailwind, since Tailwind Play
|
|
5
|
+
* handles these imports differently.
|
|
6
|
+
*
|
|
7
|
+
* @template T
|
|
8
|
+
* @param {T | { __esModule: unknown, default: T }} mod The module
|
|
9
|
+
* @returns {T} The bare export
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
12
|
+
const importDefault = mod => (mod && mod.__esModule ? mod.default : mod);
|
|
13
|
+
|
|
14
|
+
module.exports = {
|
|
15
|
+
importDefault
|
|
16
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// TODO: Figure out why the linter is unhappy with this import
|
|
2
|
+
// eslint-disable-next-line import/no-unresolved
|
|
3
|
+
const plugin = require('tailwindcss/plugin');
|
|
4
|
+
const {
|
|
5
|
+
addBaseStyles,
|
|
6
|
+
addBaseSizeUtilities,
|
|
7
|
+
addColorUtilities,
|
|
8
|
+
addRoundedUtilities,
|
|
9
|
+
addSizeUtilities
|
|
10
|
+
} = require('./utilities');
|
|
11
|
+
const { addVariants } = require('./variants');
|
|
12
|
+
|
|
13
|
+
module.exports = plugin.withOptions((options = {}) => tailwind => {
|
|
14
|
+
let preferredStrategy = options.preferredStrategy ?? 'standard';
|
|
15
|
+
|
|
16
|
+
if (preferredStrategy !== 'standard' && preferredStrategy !== 'pseudoelements') {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.warn('WARNING: tailwind-scrollbar preferredStrategy should be \'standard\' or \'pseudoelements\'');
|
|
19
|
+
preferredStrategy = 'standard';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
addBaseStyles(tailwind, preferredStrategy);
|
|
23
|
+
addBaseSizeUtilities(tailwind, preferredStrategy);
|
|
24
|
+
addColorUtilities(tailwind);
|
|
25
|
+
addVariants(tailwind);
|
|
26
|
+
|
|
27
|
+
if (options.nocompatible) {
|
|
28
|
+
addRoundedUtilities(tailwind);
|
|
29
|
+
addSizeUtilities(tailwind);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {object} TailwindPlugin
|
|
3
|
+
* @property {Function} matchUtilities - Adds utilities to tailwind
|
|
4
|
+
* @property {Function} theme - Accesses tailwind's theme
|
|
5
|
+
* @property {Function} addVariant - Adds a variant to tailwind
|
|
6
|
+
* @property {Function} config - Accesses tailwind's configuration
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
exports.unused = {};
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const flattenColorPaletteImport = require('tailwindcss/lib/util/flattenColorPalette');
|
|
3
|
+
const typedefs = require(path.resolve(__dirname, ('./typedefs')));
|
|
4
|
+
const { importDefault } = require(path.resolve(__dirname, ('../helpers')));
|
|
5
|
+
|
|
6
|
+
// Tailwind Play will import these internal imports as ES6 imports, while most
|
|
7
|
+
// other workflows will import them as CommonJS imports.
|
|
8
|
+
const flattenColorPalette = importDefault(flattenColorPaletteImport);
|
|
9
|
+
|
|
10
|
+
const COMPONENTS = ['track', 'thumb', 'corner'];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {Record<never, unknown>} properties - The properties to assign
|
|
14
|
+
* @param {boolean} preferPseudoElements - If true, only browsers that cannot
|
|
15
|
+
* use pseudoelements will specify scrollbar properties
|
|
16
|
+
* @returns {Record<string, unknown>} - The generated CSS rules
|
|
17
|
+
*/
|
|
18
|
+
const scrollbarProperties = (properties, preferPseudoElements) => {
|
|
19
|
+
if (preferPseudoElements) {
|
|
20
|
+
return {
|
|
21
|
+
'@supports (-moz-appearance:none)': properties
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return properties;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Base resets to make the plugin's utilities work
|
|
30
|
+
*
|
|
31
|
+
* @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object
|
|
32
|
+
* @param {'standard' | 'peseudoelements'} preferredStrategy - The preferred
|
|
33
|
+
* scrollbar styling strategy: standards track or pseudoelements
|
|
34
|
+
*/
|
|
35
|
+
const addBaseStyles = ({ addBase }, preferredStrategy) => {
|
|
36
|
+
addBase({
|
|
37
|
+
'*': scrollbarProperties({
|
|
38
|
+
'scrollbar-color': 'initial',
|
|
39
|
+
'scrollbar-width': 'initial'
|
|
40
|
+
}, preferredStrategy === 'pseudoelements')
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Generates utilties that tell an element what to do with
|
|
46
|
+
* --scrollbar-track and --scrollbar-thumb custom properties
|
|
47
|
+
*
|
|
48
|
+
* @returns {Record<string, unknown>} - The generated CSS
|
|
49
|
+
*/
|
|
50
|
+
const generateBaseUtilities = () => ({
|
|
51
|
+
...Object.fromEntries(COMPONENTS.map(component => {
|
|
52
|
+
const base = `&::-webkit-scrollbar-${component}`;
|
|
53
|
+
|
|
54
|
+
return [
|
|
55
|
+
[base, {
|
|
56
|
+
'background-color': `var(--scrollbar-${component})`,
|
|
57
|
+
'border-radius': `var(--scrollbar-${component}-radius)`
|
|
58
|
+
}]
|
|
59
|
+
];
|
|
60
|
+
}).flat())
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Utilities for initializing a custom styled scrollbar, which implicitly set
|
|
65
|
+
* the scrollbar's size
|
|
66
|
+
*
|
|
67
|
+
* @param {object} options - Options
|
|
68
|
+
* @param {boolean} options.preferPseudoElements - If true, only browsers that
|
|
69
|
+
* cannot use pseudoelements will specify scrollbar-width
|
|
70
|
+
* @returns {Record<string, unknown>} - Base size utilities for scrollbars
|
|
71
|
+
*/
|
|
72
|
+
const generateScrollbarSizeUtilities = ({ preferPseudoElements }) => ({
|
|
73
|
+
'.scrollbar': {
|
|
74
|
+
...generateBaseUtilities(),
|
|
75
|
+
...scrollbarProperties({
|
|
76
|
+
'scrollbar-width': 'auto',
|
|
77
|
+
'scrollbar-color': 'var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)'
|
|
78
|
+
}, preferPseudoElements),
|
|
79
|
+
|
|
80
|
+
'&::-webkit-scrollbar': {
|
|
81
|
+
display: 'block',
|
|
82
|
+
width: 'var(--scrollbar-width, 16px)',
|
|
83
|
+
height: 'var(--scrollbar-height, 16px)'
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
'.scrollbar-thin': {
|
|
88
|
+
...generateBaseUtilities(),
|
|
89
|
+
...scrollbarProperties({
|
|
90
|
+
'scrollbar-width': 'thin',
|
|
91
|
+
'scrollbar-color': 'var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)'
|
|
92
|
+
}, preferPseudoElements),
|
|
93
|
+
|
|
94
|
+
'&::-webkit-scrollbar': {
|
|
95
|
+
display: 'block',
|
|
96
|
+
width: '8px',
|
|
97
|
+
height: '8px'
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
'.scrollbar-none': {
|
|
102
|
+
...scrollbarProperties({
|
|
103
|
+
'scrollbar-width': 'none'
|
|
104
|
+
}, preferPseudoElements),
|
|
105
|
+
|
|
106
|
+
'&::-webkit-scrollbar': {
|
|
107
|
+
display: 'none'
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Converts a color value or function to a color value
|
|
114
|
+
*
|
|
115
|
+
* @param {string | Function} maybeFunction - The color value or function
|
|
116
|
+
* @returns {string} - The color value
|
|
117
|
+
*/
|
|
118
|
+
const toColorValue = maybeFunction => (typeof maybeFunction === 'function' ? maybeFunction({}) : maybeFunction);
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Adds scrollbar-COMPONENT-COLOR utilities for every scrollbar component.
|
|
122
|
+
*
|
|
123
|
+
* @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object
|
|
124
|
+
*/
|
|
125
|
+
const addColorUtilities = ({ matchUtilities, theme }) => {
|
|
126
|
+
const themeColors = flattenColorPalette(theme('colors'));
|
|
127
|
+
const colors = Object.fromEntries(
|
|
128
|
+
Object.entries(themeColors).map(([k, v]) => [k, toColorValue(v)])
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
COMPONENTS.forEach(component => {
|
|
132
|
+
matchUtilities(
|
|
133
|
+
{
|
|
134
|
+
[`scrollbar-${component}`]: value => ({
|
|
135
|
+
[`--scrollbar-${component}`]: toColorValue(value).replace(/<alpha-value>/g, '1')
|
|
136
|
+
})
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
values: colors,
|
|
140
|
+
type: 'color'
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Adds scrollbar-COMPONENT-rounded-VALUE utilities for every scrollbar
|
|
148
|
+
* component.
|
|
149
|
+
*
|
|
150
|
+
* @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object
|
|
151
|
+
*/
|
|
152
|
+
const addRoundedUtilities = ({ theme, matchUtilities }) => {
|
|
153
|
+
COMPONENTS.forEach(component => {
|
|
154
|
+
matchUtilities(
|
|
155
|
+
{
|
|
156
|
+
[`scrollbar-${component}-rounded`]: value => ({
|
|
157
|
+
[`--scrollbar-${component}-radius`]: value
|
|
158
|
+
})
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
values: theme('borderRadius')
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object
|
|
169
|
+
* @param {'standard' | 'peseudoelements'} preferredStrategy - The preferred
|
|
170
|
+
* scrollbar styling strategy: standards track or pseudoelements
|
|
171
|
+
*/
|
|
172
|
+
const addBaseSizeUtilities = ({ addUtilities }, preferredStrategy) => {
|
|
173
|
+
addUtilities(generateScrollbarSizeUtilities({
|
|
174
|
+
preferPseudoElements: preferredStrategy === 'pseudoelements'
|
|
175
|
+
}));
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Adds scrollbar-w-* and scrollbar-h-* utilities
|
|
180
|
+
*
|
|
181
|
+
* @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object
|
|
182
|
+
*/
|
|
183
|
+
const addSizeUtilities = ({ matchUtilities, theme }) => {
|
|
184
|
+
['width', 'height'].forEach(dimension => {
|
|
185
|
+
matchUtilities({
|
|
186
|
+
[`scrollbar-${dimension[0]}`]: value => ({
|
|
187
|
+
[`--scrollbar-${dimension}`]: value
|
|
188
|
+
})
|
|
189
|
+
}, {
|
|
190
|
+
values: theme(dimension)
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
module.exports = {
|
|
196
|
+
addBaseStyles,
|
|
197
|
+
addBaseSizeUtilities,
|
|
198
|
+
addColorUtilities,
|
|
199
|
+
addRoundedUtilities,
|
|
200
|
+
addSizeUtilities
|
|
201
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @typedef {import('./typedefs').TailwindPlugin} TailwindPlugin */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Adds scrollbar variants for styling webkit scrollbars' hover and active
|
|
5
|
+
* states.
|
|
6
|
+
*
|
|
7
|
+
* Earlier iterations of this plugin hijacked the hover: and active: variants
|
|
8
|
+
* directly to create a cleaner syntax, but there are several issues with that
|
|
9
|
+
* approach:
|
|
10
|
+
* - It made the plugin prone to breaking other unrelated styles
|
|
11
|
+
* - It made logic like "make an element's scrollbar green when the
|
|
12
|
+
* _element_ is hovered impossible. (This is unusual, but should still
|
|
13
|
+
* be possible.)
|
|
14
|
+
* - It straight up does not work in Tailwind v4.
|
|
15
|
+
*
|
|
16
|
+
* @param {TailwindPlugin} tailwind - Tailwind's plugin object
|
|
17
|
+
*/
|
|
18
|
+
const addVariants = ({ addVariant }) => {
|
|
19
|
+
addVariant('scrollbar-hover', '&::-webkit-scrollbar-thumb:hover');
|
|
20
|
+
addVariant('scrollbar-track-hover', '&::-webkit-scrollbar-track:hover');
|
|
21
|
+
addVariant('scrollbar-corner-hover', '&::-webkit-scrollbar-corner:hover');
|
|
22
|
+
|
|
23
|
+
addVariant('scrollbar-active', '&::-webkit-scrollbar-thumb:active');
|
|
24
|
+
addVariant('scrollbar-track-active', '&::-webkit-scrollbar-track:active');
|
|
25
|
+
// Corners can't be active, so they don't get their own active variant.
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
addVariants
|
|
30
|
+
};
|