daisyui 0.0.0-insiders.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.
@@ -0,0 +1,313 @@
1
+ const Color = require("color");
2
+ const colorNames = require("./colorNames");
3
+
4
+ module.exports = {
5
+
6
+ generateForegroundColorFrom: function (input, percentage = 0.8) {
7
+ if (Color(input).isDark()) {
8
+ let arr = Color(input).mix(Color("white"), percentage).saturate(10).hsl().array()
9
+ return arr[0].toPrecision(5).replace(/\.?0+$/,"") + " " + arr[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + arr[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
10
+ } else {
11
+ let arr = Color(input).mix(Color("black"), percentage).saturate(10).hsl().array()
12
+ return arr[0].toPrecision(5).replace(/\.?0+$/,"") + " " + arr[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + arr[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
13
+ }
14
+ },
15
+
16
+ convertToHsl: function (input) {
17
+ let resultObj = {};
18
+ if (typeof input === "object" && input !== null) {
19
+ Object.entries(input).forEach(([rule, value]) => {
20
+ if (colorNames.hasOwnProperty(rule)) {
21
+ const hslArray = Color(value).hsl().array();
22
+ resultObj[colorNames[rule]] = hslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + hslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + hslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
23
+ } else {
24
+ resultObj[rule] = value;
25
+ }
26
+
27
+ // auto generate focus colors
28
+ if (!input.hasOwnProperty("primary-focus")) {
29
+ const darkerHslArray = Color(input["primary"]).darken(0.2).hsl().array();
30
+ resultObj["--pf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
31
+ }
32
+
33
+ if (!input.hasOwnProperty("secondary-focus")) {
34
+ const darkerHslArray = Color(input["secondary"]).darken(0.2).hsl().array();
35
+ resultObj["--sf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
36
+ }
37
+
38
+ if (!input.hasOwnProperty("accent-focus")) {
39
+ const darkerHslArray = Color(input["accent"]).darken(0.2).hsl().array();
40
+ resultObj["--af"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
41
+ }
42
+
43
+ if (!input.hasOwnProperty("neutral-focus")) {
44
+ const darkerHslArray = Color(input["neutral"]).darken(0.2).hsl().array();
45
+ resultObj["--nf"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
46
+ }
47
+
48
+ // auto generate base colors
49
+ if (!input.hasOwnProperty("base-100")) {
50
+ resultObj["--b1"] = 0 + " " + 0 + "%" + " " + 100 + "%";
51
+ }
52
+
53
+ if (!input.hasOwnProperty("base-200")) {
54
+ const darkerHslArray = Color(input["base-100"]).darken(0.1).hsl().array();
55
+ resultObj["--b2"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
56
+ }
57
+
58
+ if (!input.hasOwnProperty("base-300")) {
59
+ if (input.hasOwnProperty("base-200")) {
60
+ const darkerHslArray = Color(input["base-200"]).darken(0.1).hsl().array();
61
+ resultObj["--b3"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
62
+ } else {
63
+ const darkerHslArray = Color(input["base-100"]).darken(0.1).darken(0.1).hsl().array();
64
+ resultObj["--b3"] = darkerHslArray[0].toPrecision(5).replace(/\.?0+$/,"") + " " + darkerHslArray[1].toPrecision(5).replace(/\.?0+$/,"") + "%" + " " + darkerHslArray[2].toPrecision(5).replace(/\.?0+$/,"") + "%";
65
+ }
66
+ }
67
+
68
+ // auto generate state colors
69
+ if (!input.hasOwnProperty("info")) {
70
+ resultObj["--in"] = 198 + " " + 93 + "%" + " " + 60 + "%";
71
+ }
72
+ if (!input.hasOwnProperty("success")) {
73
+ resultObj["--su"] = 158 + " " + 64 + "%" + " " + 52 + "%";
74
+ }
75
+ if (!input.hasOwnProperty("warning")) {
76
+ resultObj["--wa"] = 43 + " " + 96 + "%" + " " + 56 + "%";
77
+ }
78
+ if (!input.hasOwnProperty("error")) {
79
+ resultObj["--er"] = 0 + " " + 91 + "%" + " " + 71 + "%";
80
+ }
81
+
82
+ // auto generate content colors
83
+ if (!input.hasOwnProperty("base-content")) {
84
+ resultObj["--bc"] = this.generateForegroundColorFrom(input["base-100"])
85
+ }
86
+ if (!input.hasOwnProperty("primary-content")) {
87
+ resultObj["--pc"] = this.generateForegroundColorFrom(input["primary"])
88
+ }
89
+
90
+ if (!input.hasOwnProperty("secondary-content")) {
91
+ resultObj["--sc"] = this.generateForegroundColorFrom(input["secondary"])
92
+ }
93
+
94
+ if (!input.hasOwnProperty("accent-content")) {
95
+ resultObj["--ac"] = this.generateForegroundColorFrom(input["accent"])
96
+ }
97
+
98
+ if (!input.hasOwnProperty("neutral-content")) {
99
+ resultObj["--nc"] = this.generateForegroundColorFrom(input["neutral"])
100
+ }
101
+
102
+ if (!input.hasOwnProperty("info-content")) {
103
+ if (input.hasOwnProperty("info")) {
104
+ resultObj["--inc"] = this.generateForegroundColorFrom(input["info"])
105
+ } else {
106
+ resultObj["--inc"] = 198 + " " + 100 + "%" + " " + 12 + "%";
107
+ }
108
+ }
109
+
110
+ if (!input.hasOwnProperty("success-content")) {
111
+ if (input.hasOwnProperty("success")) {
112
+ resultObj["--suc"] = this.generateForegroundColorFrom(input["success"])
113
+ } else {
114
+ resultObj["--suc"] = 158 + " " + 100 + "%" + " " + 10 + "%";
115
+ }
116
+ }
117
+
118
+ if (!input.hasOwnProperty("warning-content")) {
119
+ if (input.hasOwnProperty("warning")) {
120
+ resultObj["--wac"] = this.generateForegroundColorFrom(input["warning"])
121
+ } else {
122
+ resultObj["--wac"] = 43 + " " + 100 + "%" + " " + 11 + "%";
123
+ }
124
+ }
125
+
126
+ if (!input.hasOwnProperty("error-content")) {
127
+ if (input.hasOwnProperty("error")) {
128
+ resultObj["--erc"] = this.generateForegroundColorFrom(input["error"])
129
+ } else {
130
+ resultObj["--erc"] = 0 + " " + 100 + "%" + " " + 14 + "%";
131
+ }
132
+ }
133
+
134
+ // auto generate css variables
135
+ if (!input.hasOwnProperty("--rounded-box")) {
136
+ resultObj["--rounded-box"] = "1rem";
137
+ }
138
+ if (!input.hasOwnProperty("--rounded-btn")) {
139
+ resultObj["--rounded-btn"] = "0.5rem";
140
+ }
141
+ if (!input.hasOwnProperty("--rounded-badge")) {
142
+ resultObj["--rounded-badge"] = "1.9rem";
143
+ }
144
+ if (!input.hasOwnProperty("--animation-btn")) {
145
+ resultObj["--animation-btn"] = "0.25s";
146
+ }
147
+ if (!input.hasOwnProperty("--animation-input")) {
148
+ resultObj["--animation-input"] = ".2s";
149
+ }
150
+ if (!input.hasOwnProperty("--btn-text-case")) {
151
+ resultObj["--btn-text-case"] = "uppercase";
152
+ }
153
+ if (!input.hasOwnProperty("--btn-focus-scale")) {
154
+ resultObj["--btn-focus-scale"] = "0.97";
155
+ }
156
+ if (!input.hasOwnProperty("--border-btn")) {
157
+ resultObj["--border-btn"] = "1px";
158
+ }
159
+ if (!input.hasOwnProperty("--tab-border")) {
160
+ resultObj["--tab-border"] = "1px";
161
+ }
162
+ if (!input.hasOwnProperty("--tab-radius")) {
163
+ resultObj["--tab-radius"] = "0.5rem";
164
+ }
165
+
166
+ });
167
+ return resultObj;
168
+ }
169
+ return input;
170
+ },
171
+
172
+ injectThemes: function (addBase, config, themes) {
173
+ let includedThemesObj = new Object();
174
+
175
+ // add light themes
176
+ if (config("daisyui.themes") == false) {
177
+ Object.entries(themes).forEach(([theme, index]) => {
178
+ includedThemesObj[theme] = this.convertToHsl(themes[theme]);
179
+ });
180
+ }
181
+
182
+ // add default themes
183
+ if (config("daisyui.themes") != false) {
184
+ Object.entries(themes).forEach(([theme, index]) => {
185
+ includedThemesObj[theme] = this.convertToHsl(themes[theme]);
186
+ });
187
+ }
188
+
189
+ // add custom themes
190
+ if (Array.isArray(config("daisyui.themes"))) {
191
+ config("daisyui.themes").forEach((item, index) => {
192
+ if (typeof item === "object" && item !== null) {
193
+ Object.entries(item).forEach(([customThemeName, customThemevalue]) => {
194
+ includedThemesObj["[data-theme=" + customThemeName + "]"] =
195
+ this.convertToHsl(customThemevalue);
196
+ });
197
+ }
198
+ });
199
+ }
200
+
201
+
202
+
203
+ let themeOrder = [];
204
+ if (Array.isArray(config("daisyui.themes"))) {
205
+ config("daisyui.themes").forEach((theme, index) => {
206
+ if (typeof theme === "object" && theme !== null) {
207
+ Object.entries(theme).forEach(([customThemeName, customThemevalue]) => {
208
+ themeOrder.push(customThemeName);
209
+ });
210
+ } else if (
211
+ includedThemesObj.hasOwnProperty("[data-theme=" + theme + "]")
212
+ ) {
213
+ themeOrder.push(theme);
214
+ }
215
+ });
216
+ } else if (config("daisyui.themes") != false) {
217
+ themeOrder = [
218
+ "light",
219
+ "dark",
220
+ "cupcake",
221
+ "bumblebee",
222
+ "emerald",
223
+ "corporate",
224
+ "synthwave",
225
+ "retro",
226
+ "cyberpunk",
227
+ "valentine",
228
+ "halloween",
229
+ "garden",
230
+ "forest",
231
+ "aqua",
232
+ "lofi",
233
+ "pastel",
234
+ "fantasy",
235
+ "wireframe",
236
+ "black",
237
+ "luxury",
238
+ "dracula",
239
+ "cmyk",
240
+ "autumn",
241
+ "business",
242
+ "acid",
243
+ "lemonade",
244
+ "night",
245
+ "coffee",
246
+ "winter",
247
+ ];
248
+ } else if (config("daisyui.themes") == false) {
249
+ themeOrder.push("light");
250
+ }
251
+
252
+ // inject themes in order
253
+ themeOrder.forEach((themeName, index) => {
254
+ if (index === 0) {
255
+ // first theme as root
256
+ addBase({
257
+ [":root"]: includedThemesObj["[data-theme=" + themeName + "]"],
258
+ });
259
+ } else if (index === 1) {
260
+ // auto dark
261
+ if (config("daisyui.darkTheme")) {
262
+ if (
263
+ themeOrder[0] != config("daisyui.darkTheme") &&
264
+ themeOrder.includes(config("daisyui.darkTheme"))
265
+ ) {
266
+ addBase({
267
+ ["@media (prefers-color-scheme: dark)"]: {
268
+ [":root"]:
269
+ includedThemesObj[
270
+ `[data-theme=${config("daisyui.darkTheme")}]`
271
+ ],
272
+ },
273
+ });
274
+ }
275
+ }
276
+ else if (config("daisyui.darkTheme") === false ) {
277
+ // disables prefers-color-scheme: dark
278
+ } else {
279
+ if (themeOrder[0] != "dark" && themeOrder.includes("dark")) {
280
+ addBase({
281
+ ["@media (prefers-color-scheme: dark)"]: {
282
+ [":root"]: includedThemesObj["[data-theme=dark]"],
283
+ },
284
+ });
285
+ }
286
+ }
287
+ // theme 0 with name
288
+ addBase({
289
+ ["[data-theme=" + themeOrder[0] + "]"]:
290
+ includedThemesObj["[data-theme=" + themeOrder[0] + "]"],
291
+ });
292
+ // theme 1 with name
293
+ addBase({
294
+ ["[data-theme=" + themeOrder[1] + "]"]:
295
+ includedThemesObj["[data-theme=" + themeOrder[1] + "]"],
296
+ });
297
+ } else {
298
+ addBase({
299
+ ["[data-theme=" + themeName + "]"]:
300
+ includedThemesObj["[data-theme=" + themeName + "]"],
301
+ });
302
+ }
303
+ });
304
+
305
+
306
+
307
+ return {
308
+ includedThemesObj: includedThemesObj,
309
+ themeOrder: themeOrder,
310
+ };
311
+ }
312
+
313
+ }
@@ -0,0 +1,52 @@
1
+ function withOpacityValue(variable, fallbackColor) {
2
+ return ({ opacityValue }) => {
3
+ let fallbackColorValue = "";
4
+ if (fallbackColor) {
5
+ fallbackColorValue = `, var(${fallbackColor})`;
6
+ }
7
+ if (opacityValue === undefined) {
8
+ return `hsl(var(${variable}${fallbackColorValue}))`;
9
+ }
10
+ return `hsl(var(${variable}${fallbackColorValue}) / ${opacityValue})`;
11
+ };
12
+ }
13
+
14
+ let colorObject = {
15
+ transparent: "transparent",
16
+ current: "currentColor",
17
+
18
+ primary: withOpacityValue("--p"),
19
+ "primary-focus": withOpacityValue("--pf", "--p"),
20
+ "primary-content": withOpacityValue("--pc"),
21
+
22
+ secondary: withOpacityValue("--s"),
23
+ "secondary-focus": withOpacityValue("--sf", "--s"),
24
+ "secondary-content": withOpacityValue("--sc"),
25
+
26
+ accent: withOpacityValue("--a"),
27
+ "accent-focus": withOpacityValue("--af", "--a"),
28
+ "accent-content": withOpacityValue("--ac"),
29
+
30
+ neutral: withOpacityValue("--n"),
31
+ "neutral-focus": withOpacityValue("--nf", "--n"),
32
+ "neutral-content": withOpacityValue("--nc"),
33
+
34
+ "base-100": withOpacityValue("--b1"),
35
+ "base-200": withOpacityValue("--b2", "--b1"),
36
+ "base-300": withOpacityValue("--b3", "--b2"),
37
+ "base-content": withOpacityValue("--bc"),
38
+
39
+ info: withOpacityValue("--in"),
40
+ "info-content": withOpacityValue("--inc", "--nc"),
41
+
42
+ success: withOpacityValue("--su"),
43
+ "success-content": withOpacityValue("--suc", "--nc"),
44
+
45
+ warning: withOpacityValue("--wa"),
46
+ "warning-content": withOpacityValue("--wac", "--nc"),
47
+
48
+ error: withOpacityValue("--er"),
49
+ "error-content": withOpacityValue("--erc", "--nc"),
50
+ };
51
+
52
+ module.exports = colorObject;