@nice2dev/design-tokens 1.1.7 → 1.1.9
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/dist/cli/index.cjs +26 -26
- package/dist/cli/index.js +26 -26
- package/dist/index.cjs +5 -5
- package/dist/index.js +5 -5
- package/package.json +1 -1
package/dist/cli/index.cjs
CHANGED
|
@@ -38,7 +38,7 @@ var require_package = __commonJS({
|
|
|
38
38
|
"package.json"(exports2, module2) {
|
|
39
39
|
module2.exports = {
|
|
40
40
|
name: "@nice2dev/design-tokens",
|
|
41
|
-
version: "1.1.
|
|
41
|
+
version: "1.1.9",
|
|
42
42
|
description: "W3C Design Tokens for Nice2Dev UI with CLI generator",
|
|
43
43
|
type: "module",
|
|
44
44
|
main: "./dist/index.cjs",
|
|
@@ -2735,10 +2735,10 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
2735
2735
|
"css"
|
|
2736
2736
|
).option("-p, --prefix <prefix>", "CSS variable prefix", "nice").option("--separate", "Generate separate files by category").option("--no-dark", "Exclude dark mode tokens").option("--no-components", "Exclude component tokens").option("--watch", "Watch for changes and rebuild").action(async (options) => {
|
|
2737
2737
|
const formats = options.formats.split(",").map((f) => f.trim());
|
|
2738
|
-
console.log("
|
|
2739
|
-
console.log(
|
|
2740
|
-
console.log(
|
|
2741
|
-
console.log(
|
|
2738
|
+
console.log("Nice2Dev Design Tokens Generator\n");
|
|
2739
|
+
console.log(`Input: ${path2.resolve(options.input)}`);
|
|
2740
|
+
console.log(`Output: ${path2.resolve(options.output)}`);
|
|
2741
|
+
console.log(`Formats: ${formats.join(", ")}`);
|
|
2742
2742
|
console.log("");
|
|
2743
2743
|
try {
|
|
2744
2744
|
const generator = createGenerator({
|
|
@@ -2751,16 +2751,16 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
2751
2751
|
});
|
|
2752
2752
|
generator.loadDirectory(options.input);
|
|
2753
2753
|
await generator.generate();
|
|
2754
|
-
console.log("\
|
|
2754
|
+
console.log("\nBuild complete!");
|
|
2755
2755
|
if (options.watch) {
|
|
2756
|
-
console.log("\
|
|
2756
|
+
console.log("\nWatching for changes...");
|
|
2757
2757
|
const chokidar = await Promise.resolve().then(() => (init_esm2(), esm_exports));
|
|
2758
2758
|
const watcher = chokidar.watch(path2.join(options.input, "**/*.json"), {
|
|
2759
2759
|
ignoreInitial: true
|
|
2760
2760
|
});
|
|
2761
2761
|
watcher.on("change", async (file) => {
|
|
2762
2762
|
console.log(`
|
|
2763
|
-
|
|
2763
|
+
File changed: ${path2.basename(file)}`);
|
|
2764
2764
|
try {
|
|
2765
2765
|
const gen = createGenerator({
|
|
2766
2766
|
outputDir: options.output,
|
|
@@ -2772,21 +2772,21 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
2772
2772
|
});
|
|
2773
2773
|
gen.loadDirectory(options.input);
|
|
2774
2774
|
await gen.generate();
|
|
2775
|
-
console.log("
|
|
2775
|
+
console.log("Rebuild complete!");
|
|
2776
2776
|
} catch (err) {
|
|
2777
|
-
console.error("
|
|
2777
|
+
console.error("Rebuild failed:", err.message);
|
|
2778
2778
|
}
|
|
2779
2779
|
});
|
|
2780
2780
|
}
|
|
2781
2781
|
} catch (err) {
|
|
2782
|
-
console.error("
|
|
2782
|
+
console.error("Build failed:", err.message);
|
|
2783
2783
|
process.exit(1);
|
|
2784
2784
|
}
|
|
2785
2785
|
});
|
|
2786
2786
|
program.command("init").description("Initialize a new design tokens project").option("-d, --dir <dir>", "Directory to initialize", ".").action(async (options) => {
|
|
2787
2787
|
const dir = path2.resolve(options.dir);
|
|
2788
2788
|
const tokensDir = path2.join(dir, "tokens");
|
|
2789
|
-
console.log("
|
|
2789
|
+
console.log("Initializing Nice2Dev Design Tokens\n");
|
|
2790
2790
|
fs3.mkdirSync(tokensDir, { recursive: true });
|
|
2791
2791
|
fs3.mkdirSync(path2.join(dir, "dist"), { recursive: true });
|
|
2792
2792
|
const colorsJson = {
|
|
@@ -2843,7 +2843,7 @@ program.command("init").description("Initialize a new design tokens project").op
|
|
|
2843
2843
|
}
|
|
2844
2844
|
};
|
|
2845
2845
|
fs3.writeFileSync(path2.join(tokensDir, "spacing.json"), JSON.stringify(spacingJson, null, 2));
|
|
2846
|
-
console.log("
|
|
2846
|
+
console.log("Created token files in ./tokens/");
|
|
2847
2847
|
console.log("");
|
|
2848
2848
|
console.log("Next steps:");
|
|
2849
2849
|
console.log(" 1. Edit tokens in ./tokens/*.json");
|
|
@@ -2860,28 +2860,28 @@ program.command("validate").description("Validate design token files").argument(
|
|
|
2860
2860
|
console.log("No token files specified");
|
|
2861
2861
|
process.exit(1);
|
|
2862
2862
|
}
|
|
2863
|
-
console.log("
|
|
2863
|
+
console.log("Validating design tokens\n");
|
|
2864
2864
|
let hasErrors = false;
|
|
2865
2865
|
for (const file of tokenFiles) {
|
|
2866
2866
|
try {
|
|
2867
2867
|
const content = fs3.readFileSync(file, "utf-8");
|
|
2868
2868
|
JSON.parse(content);
|
|
2869
|
-
console.log(
|
|
2869
|
+
console.log(`OK ${path2.basename(file)}`);
|
|
2870
2870
|
} catch (err) {
|
|
2871
|
-
console.log(
|
|
2871
|
+
console.log(`FAIL ${path2.basename(file)}: ${err.message}`);
|
|
2872
2872
|
hasErrors = true;
|
|
2873
2873
|
}
|
|
2874
2874
|
}
|
|
2875
2875
|
if (hasErrors) {
|
|
2876
|
-
console.log("\
|
|
2876
|
+
console.log("\nValidation failed");
|
|
2877
2877
|
process.exit(1);
|
|
2878
2878
|
} else {
|
|
2879
|
-
console.log("\
|
|
2879
|
+
console.log("\nAll files valid");
|
|
2880
2880
|
}
|
|
2881
2881
|
});
|
|
2882
2882
|
program.command("convert").description("Convert between token formats").argument("<input>", "Input file or directory").argument("<output>", "Output file").option("-f, --format <format>", "Output format", "css").action(async (input, output, options) => {
|
|
2883
2883
|
const format = options.format;
|
|
2884
|
-
console.log(
|
|
2884
|
+
console.log(`Converting to ${format}...
|
|
2885
2885
|
`);
|
|
2886
2886
|
try {
|
|
2887
2887
|
const generator = createGenerator({
|
|
@@ -2895,16 +2895,16 @@ program.command("convert").description("Convert between token formats").argument
|
|
|
2895
2895
|
generator.load([input]);
|
|
2896
2896
|
}
|
|
2897
2897
|
await generator.generate();
|
|
2898
|
-
console.log(
|
|
2898
|
+
console.log(`Converted to ${output}`);
|
|
2899
2899
|
} catch (err) {
|
|
2900
|
-
console.error("
|
|
2900
|
+
console.error("Conversion failed:", err.message);
|
|
2901
2901
|
process.exit(1);
|
|
2902
2902
|
}
|
|
2903
2903
|
});
|
|
2904
2904
|
program.command("info").description("Show information about token files").argument("<dir>", "Directory containing token files").action(async (dir) => {
|
|
2905
2905
|
const glob = require("fast-glob");
|
|
2906
2906
|
const files = await glob(path2.join(dir, "**/*.json"));
|
|
2907
|
-
console.log("
|
|
2907
|
+
console.log("Token Information\n");
|
|
2908
2908
|
console.log(`Directory: ${path2.resolve(dir)}`);
|
|
2909
2909
|
console.log(`Files: ${files.length}`);
|
|
2910
2910
|
console.log("");
|
|
@@ -2933,7 +2933,7 @@ program.command("info").description("Show information about token files").argume
|
|
|
2933
2933
|
}
|
|
2934
2934
|
});
|
|
2935
2935
|
program.command("diff").description("Compare two token files or directories").argument("<source>", "Source file or directory").argument("<target>", "Target file or directory").action(async (source, target) => {
|
|
2936
|
-
console.log("
|
|
2936
|
+
console.log("Comparing tokens\n");
|
|
2937
2937
|
const generatorA = createGenerator();
|
|
2938
2938
|
const generatorB = createGenerator();
|
|
2939
2939
|
const statA = fs3.statSync(source);
|
|
@@ -2981,7 +2981,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
2981
2981
|
return;
|
|
2982
2982
|
}
|
|
2983
2983
|
if (added.length > 0) {
|
|
2984
|
-
console.log(
|
|
2984
|
+
console.log(`Added (${added.length}):`);
|
|
2985
2985
|
for (const p of added.slice(0, 10)) {
|
|
2986
2986
|
console.log(` ${p}`);
|
|
2987
2987
|
}
|
|
@@ -2991,7 +2991,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
2991
2991
|
console.log("");
|
|
2992
2992
|
}
|
|
2993
2993
|
if (removed.length > 0) {
|
|
2994
|
-
console.log(
|
|
2994
|
+
console.log(`Removed (${removed.length}):`);
|
|
2995
2995
|
for (const p of removed.slice(0, 10)) {
|
|
2996
2996
|
console.log(` ${p}`);
|
|
2997
2997
|
}
|
|
@@ -3001,7 +3001,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
3001
3001
|
console.log("");
|
|
3002
3002
|
}
|
|
3003
3003
|
if (changed.length > 0) {
|
|
3004
|
-
console.log(
|
|
3004
|
+
console.log(`Changed (${changed.length}):`);
|
|
3005
3005
|
for (const p of changed.slice(0, 10)) {
|
|
3006
3006
|
console.log(` ${p}`);
|
|
3007
3007
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -12,7 +12,7 @@ var require_package = __commonJS({
|
|
|
12
12
|
"package.json"(exports, module) {
|
|
13
13
|
module.exports = {
|
|
14
14
|
name: "@nice2dev/design-tokens",
|
|
15
|
-
version: "1.1.
|
|
15
|
+
version: "1.1.9",
|
|
16
16
|
description: "W3C Design Tokens for Nice2Dev UI with CLI generator",
|
|
17
17
|
type: "module",
|
|
18
18
|
main: "./dist/index.cjs",
|
|
@@ -85,10 +85,10 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
85
85
|
"css"
|
|
86
86
|
).option("-p, --prefix <prefix>", "CSS variable prefix", "nice").option("--separate", "Generate separate files by category").option("--no-dark", "Exclude dark mode tokens").option("--no-components", "Exclude component tokens").option("--watch", "Watch for changes and rebuild").action(async (options) => {
|
|
87
87
|
const formats = options.formats.split(",").map((f) => f.trim());
|
|
88
|
-
console.log("
|
|
89
|
-
console.log(
|
|
90
|
-
console.log(
|
|
91
|
-
console.log(
|
|
88
|
+
console.log("Nice2Dev Design Tokens Generator\n");
|
|
89
|
+
console.log(`Input: ${path.resolve(options.input)}`);
|
|
90
|
+
console.log(`Output: ${path.resolve(options.output)}`);
|
|
91
|
+
console.log(`Formats: ${formats.join(", ")}`);
|
|
92
92
|
console.log("");
|
|
93
93
|
try {
|
|
94
94
|
const generator = createGenerator({
|
|
@@ -101,16 +101,16 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
101
101
|
});
|
|
102
102
|
generator.loadDirectory(options.input);
|
|
103
103
|
await generator.generate();
|
|
104
|
-
console.log("\
|
|
104
|
+
console.log("\nBuild complete!");
|
|
105
105
|
if (options.watch) {
|
|
106
|
-
console.log("\
|
|
106
|
+
console.log("\nWatching for changes...");
|
|
107
107
|
const chokidar = await import("../esm-YLJOW3XL.js");
|
|
108
108
|
const watcher = chokidar.watch(path.join(options.input, "**/*.json"), {
|
|
109
109
|
ignoreInitial: true
|
|
110
110
|
});
|
|
111
111
|
watcher.on("change", async (file) => {
|
|
112
112
|
console.log(`
|
|
113
|
-
|
|
113
|
+
File changed: ${path.basename(file)}`);
|
|
114
114
|
try {
|
|
115
115
|
const gen = createGenerator({
|
|
116
116
|
outputDir: options.output,
|
|
@@ -122,21 +122,21 @@ program.command("build").description("Build design tokens from JSON source files
|
|
|
122
122
|
});
|
|
123
123
|
gen.loadDirectory(options.input);
|
|
124
124
|
await gen.generate();
|
|
125
|
-
console.log("
|
|
125
|
+
console.log("Rebuild complete!");
|
|
126
126
|
} catch (err) {
|
|
127
|
-
console.error("
|
|
127
|
+
console.error("Rebuild failed:", err.message);
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
} catch (err) {
|
|
132
|
-
console.error("
|
|
132
|
+
console.error("Build failed:", err.message);
|
|
133
133
|
process.exit(1);
|
|
134
134
|
}
|
|
135
135
|
});
|
|
136
136
|
program.command("init").description("Initialize a new design tokens project").option("-d, --dir <dir>", "Directory to initialize", ".").action(async (options) => {
|
|
137
137
|
const dir = path.resolve(options.dir);
|
|
138
138
|
const tokensDir = path.join(dir, "tokens");
|
|
139
|
-
console.log("
|
|
139
|
+
console.log("Initializing Nice2Dev Design Tokens\n");
|
|
140
140
|
fs.mkdirSync(tokensDir, { recursive: true });
|
|
141
141
|
fs.mkdirSync(path.join(dir, "dist"), { recursive: true });
|
|
142
142
|
const colorsJson = {
|
|
@@ -193,7 +193,7 @@ program.command("init").description("Initialize a new design tokens project").op
|
|
|
193
193
|
}
|
|
194
194
|
};
|
|
195
195
|
fs.writeFileSync(path.join(tokensDir, "spacing.json"), JSON.stringify(spacingJson, null, 2));
|
|
196
|
-
console.log("
|
|
196
|
+
console.log("Created token files in ./tokens/");
|
|
197
197
|
console.log("");
|
|
198
198
|
console.log("Next steps:");
|
|
199
199
|
console.log(" 1. Edit tokens in ./tokens/*.json");
|
|
@@ -210,28 +210,28 @@ program.command("validate").description("Validate design token files").argument(
|
|
|
210
210
|
console.log("No token files specified");
|
|
211
211
|
process.exit(1);
|
|
212
212
|
}
|
|
213
|
-
console.log("
|
|
213
|
+
console.log("Validating design tokens\n");
|
|
214
214
|
let hasErrors = false;
|
|
215
215
|
for (const file of tokenFiles) {
|
|
216
216
|
try {
|
|
217
217
|
const content = fs.readFileSync(file, "utf-8");
|
|
218
218
|
JSON.parse(content);
|
|
219
|
-
console.log(
|
|
219
|
+
console.log(`OK ${path.basename(file)}`);
|
|
220
220
|
} catch (err) {
|
|
221
|
-
console.log(
|
|
221
|
+
console.log(`FAIL ${path.basename(file)}: ${err.message}`);
|
|
222
222
|
hasErrors = true;
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
if (hasErrors) {
|
|
226
|
-
console.log("\
|
|
226
|
+
console.log("\nValidation failed");
|
|
227
227
|
process.exit(1);
|
|
228
228
|
} else {
|
|
229
|
-
console.log("\
|
|
229
|
+
console.log("\nAll files valid");
|
|
230
230
|
}
|
|
231
231
|
});
|
|
232
232
|
program.command("convert").description("Convert between token formats").argument("<input>", "Input file or directory").argument("<output>", "Output file").option("-f, --format <format>", "Output format", "css").action(async (input, output, options) => {
|
|
233
233
|
const format = options.format;
|
|
234
|
-
console.log(
|
|
234
|
+
console.log(`Converting to ${format}...
|
|
235
235
|
`);
|
|
236
236
|
try {
|
|
237
237
|
const generator = createGenerator({
|
|
@@ -245,16 +245,16 @@ program.command("convert").description("Convert between token formats").argument
|
|
|
245
245
|
generator.load([input]);
|
|
246
246
|
}
|
|
247
247
|
await generator.generate();
|
|
248
|
-
console.log(
|
|
248
|
+
console.log(`Converted to ${output}`);
|
|
249
249
|
} catch (err) {
|
|
250
|
-
console.error("
|
|
250
|
+
console.error("Conversion failed:", err.message);
|
|
251
251
|
process.exit(1);
|
|
252
252
|
}
|
|
253
253
|
});
|
|
254
254
|
program.command("info").description("Show information about token files").argument("<dir>", "Directory containing token files").action(async (dir) => {
|
|
255
255
|
const glob = __require("fast-glob");
|
|
256
256
|
const files = await glob(path.join(dir, "**/*.json"));
|
|
257
|
-
console.log("
|
|
257
|
+
console.log("Token Information\n");
|
|
258
258
|
console.log(`Directory: ${path.resolve(dir)}`);
|
|
259
259
|
console.log(`Files: ${files.length}`);
|
|
260
260
|
console.log("");
|
|
@@ -283,7 +283,7 @@ program.command("info").description("Show information about token files").argume
|
|
|
283
283
|
}
|
|
284
284
|
});
|
|
285
285
|
program.command("diff").description("Compare two token files or directories").argument("<source>", "Source file or directory").argument("<target>", "Target file or directory").action(async (source, target) => {
|
|
286
|
-
console.log("
|
|
286
|
+
console.log("Comparing tokens\n");
|
|
287
287
|
const generatorA = createGenerator();
|
|
288
288
|
const generatorB = createGenerator();
|
|
289
289
|
const statA = fs.statSync(source);
|
|
@@ -331,7 +331,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
331
331
|
return;
|
|
332
332
|
}
|
|
333
333
|
if (added.length > 0) {
|
|
334
|
-
console.log(
|
|
334
|
+
console.log(`Added (${added.length}):`);
|
|
335
335
|
for (const p of added.slice(0, 10)) {
|
|
336
336
|
console.log(` ${p}`);
|
|
337
337
|
}
|
|
@@ -341,7 +341,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
341
341
|
console.log("");
|
|
342
342
|
}
|
|
343
343
|
if (removed.length > 0) {
|
|
344
|
-
console.log(
|
|
344
|
+
console.log(`Removed (${removed.length}):`);
|
|
345
345
|
for (const p of removed.slice(0, 10)) {
|
|
346
346
|
console.log(` ${p}`);
|
|
347
347
|
}
|
|
@@ -351,7 +351,7 @@ program.command("diff").description("Compare two token files or directories").ar
|
|
|
351
351
|
console.log("");
|
|
352
352
|
}
|
|
353
353
|
if (changed.length > 0) {
|
|
354
|
-
console.log(
|
|
354
|
+
console.log(`Changed (${changed.length}):`);
|
|
355
355
|
for (const p of changed.slice(0, 10)) {
|
|
356
356
|
console.log(` ${p}`);
|
|
357
357
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -2900,13 +2900,13 @@ var STANDARD_FOCUS = {
|
|
|
2900
2900
|
ring: {
|
|
2901
2901
|
width: "2px",
|
|
2902
2902
|
offset: "2px",
|
|
2903
|
-
color: "var(--nice-color-primary
|
|
2903
|
+
color: "var(--nice-color-primary)",
|
|
2904
2904
|
style: "solid"
|
|
2905
2905
|
},
|
|
2906
2906
|
outline: {
|
|
2907
2907
|
width: "2px",
|
|
2908
2908
|
style: "solid",
|
|
2909
|
-
color: "var(--nice-color-primary
|
|
2909
|
+
color: "var(--nice-color-primary)",
|
|
2910
2910
|
offset: "2px"
|
|
2911
2911
|
}
|
|
2912
2912
|
};
|
|
@@ -2914,13 +2914,13 @@ var ENHANCED_FOCUS = {
|
|
|
2914
2914
|
ring: {
|
|
2915
2915
|
width: "3px",
|
|
2916
2916
|
offset: "3px",
|
|
2917
|
-
color: "var(--nice-color-primary-
|
|
2917
|
+
color: "var(--nice-color-primary-hover)",
|
|
2918
2918
|
style: "solid"
|
|
2919
2919
|
},
|
|
2920
2920
|
outline: {
|
|
2921
2921
|
width: "3px",
|
|
2922
2922
|
style: "solid",
|
|
2923
|
-
color: "var(--nice-color-primary-
|
|
2923
|
+
color: "var(--nice-color-primary-hover)",
|
|
2924
2924
|
offset: "3px"
|
|
2925
2925
|
}
|
|
2926
2926
|
};
|
|
@@ -3078,7 +3078,7 @@ function generateFocusCss(tokens = ENHANCED_FOCUS) {
|
|
|
3078
3078
|
|
|
3079
3079
|
/* Focus ring utility */
|
|
3080
3080
|
.focus-ring:focus-visible {
|
|
3081
|
-
box-shadow: 0 0 0 ${tokens.ring.offset} var(--nice-
|
|
3081
|
+
box-shadow: 0 0 0 ${tokens.ring.offset} var(--nice-bg-primary, #fff),
|
|
3082
3082
|
0 0 0 calc(${tokens.ring.offset} + ${tokens.ring.width}) ${tokens.ring.color};
|
|
3083
3083
|
}
|
|
3084
3084
|
|
package/dist/index.js
CHANGED
|
@@ -1649,13 +1649,13 @@ var STANDARD_FOCUS = {
|
|
|
1649
1649
|
ring: {
|
|
1650
1650
|
width: "2px",
|
|
1651
1651
|
offset: "2px",
|
|
1652
|
-
color: "var(--nice-color-primary
|
|
1652
|
+
color: "var(--nice-color-primary)",
|
|
1653
1653
|
style: "solid"
|
|
1654
1654
|
},
|
|
1655
1655
|
outline: {
|
|
1656
1656
|
width: "2px",
|
|
1657
1657
|
style: "solid",
|
|
1658
|
-
color: "var(--nice-color-primary
|
|
1658
|
+
color: "var(--nice-color-primary)",
|
|
1659
1659
|
offset: "2px"
|
|
1660
1660
|
}
|
|
1661
1661
|
};
|
|
@@ -1663,13 +1663,13 @@ var ENHANCED_FOCUS = {
|
|
|
1663
1663
|
ring: {
|
|
1664
1664
|
width: "3px",
|
|
1665
1665
|
offset: "3px",
|
|
1666
|
-
color: "var(--nice-color-primary-
|
|
1666
|
+
color: "var(--nice-color-primary-hover)",
|
|
1667
1667
|
style: "solid"
|
|
1668
1668
|
},
|
|
1669
1669
|
outline: {
|
|
1670
1670
|
width: "3px",
|
|
1671
1671
|
style: "solid",
|
|
1672
|
-
color: "var(--nice-color-primary-
|
|
1672
|
+
color: "var(--nice-color-primary-hover)",
|
|
1673
1673
|
offset: "3px"
|
|
1674
1674
|
}
|
|
1675
1675
|
};
|
|
@@ -1827,7 +1827,7 @@ function generateFocusCss(tokens = ENHANCED_FOCUS) {
|
|
|
1827
1827
|
|
|
1828
1828
|
/* Focus ring utility */
|
|
1829
1829
|
.focus-ring:focus-visible {
|
|
1830
|
-
box-shadow: 0 0 0 ${tokens.ring.offset} var(--nice-
|
|
1830
|
+
box-shadow: 0 0 0 ${tokens.ring.offset} var(--nice-bg-primary, #fff),
|
|
1831
1831
|
0 0 0 calc(${tokens.ring.offset} + ${tokens.ring.width}) ${tokens.ring.color};
|
|
1832
1832
|
}
|
|
1833
1833
|
|