@shlinkio/shlink-frontend-kit 0.8.13 → 0.9.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.
@@ -6,9 +6,8 @@
6
6
 
7
7
  @theme static inline {
8
8
  /* Light mode */
9
- /*--color-lm-main: #2078CF;*/ /*Properly accessible with white background*/
10
- --color-lm-main: #4696e5; /* TODO Rename to "brand" */
11
- --color-lm-main-dark: #1f69c0;
9
+ --color-lm-brand: #2078CF;
10
+ --color-lm-brand-dark: color-mix(in srgb, black 20%, var(--tw-color-lm-brand) 80%);
12
11
  --color-lm-primary: #ffffff;
13
12
  --color-lm-primary-alfa: rgb(var(--tw-color-lm-primary) / .5);
14
13
  --color-lm-secondary: #f5f6fe;
@@ -16,7 +15,7 @@
16
15
  --color-lm-border: rgb(0 0 0 / .125);
17
16
  --color-lm-table-border: #dee2e6;
18
17
  --color-lm-active: #eeeeee;
19
- --color-lm-brand: var(--tw-color-lm-main); /* TODO Rename to "main" */
18
+ --color-lm-main: var(--tw-color-lm-brand);
20
19
  --color-lm-input: var(--tw-color-lm-primary);
21
20
  --color-lm-disabled-input: var(--tw-color-lm-secondary);
22
21
  --color-lm-input-text: #495057;
@@ -24,8 +23,8 @@
24
23
  --color-lm-table-highlight: rgb(0 0 0 / .075);
25
24
 
26
25
  /* Dark mode */
27
- --color-dm-main: #4696e5; /* TODO Rename to "brand" */
28
- --color-dm-main-dark: #1f69c0;
26
+ --color-dm-brand: #4696e5;
27
+ --color-dm-brand-dark: color-mix(in srgb, black 25%, var(--tw-color-dm-brand) 75%);
29
28
  --color-dm-primary: #161b22;
30
29
  --color-dm-primary-alfa: rgb(var(--tw-color-dm-primary) / .8);
31
30
  --color-dm-secondary: #0f131a;
@@ -33,22 +32,18 @@
33
32
  --color-dm-border: rgb(255 255 255 / .15);
34
33
  --color-dm-table-border: #393d43;
35
34
  --color-dm-active: var(--tw-color-dm-secondary);
36
- --color-dm-brand: #0b2d4e; /* TODO Rename to "main" */
35
+ --color-dm-main: #0b2d4e;
37
36
  --color-dm-input: rgb(17.9928571429 22.0821428571 27.8071428571);
38
37
  --color-dm-disabled-input: rgb(26.0071428571 31.9178571429 40.1928571429);
39
38
  --color-dm-input-text: var(--tw-color-dm-text);
40
39
  --color-dm-input-border: var(--tw-color-dm-border);
41
40
  --color-dm-table-highlight: var(--tw-color-dm-border);
42
41
 
43
- /* TODO Remove these two colors */
44
- --color-brand: #4696e5;
45
- --color-brand-dark: #1f69c0;
46
-
47
42
  /* General color palette */
48
43
  --color-danger: #dc3545;
49
- --color-danger-dark: #bb2d3b;
44
+ --color-danger-dark: color-mix(in srgb, black 20%, var(--tw-color-danger) 80%);
50
45
  --color-warning: #ffc107;
51
- --color-warning-dark: #ffca2c;
46
+ --color-warning-dark: color-mix(in srgb, black 20%, var(--tw-color-warning) 80%);
52
47
  --color-placeholder: #6c757d;
53
48
 
54
49
  /* Override breakpoints with the values from bootstrap, to keep sizing until fully migrated */
@@ -59,6 +54,7 @@
59
54
  --breakpoint-2xl: 1400px;
60
55
  }
61
56
 
57
+ /* Deprecated. TODO Remove with bootstrap support */
62
58
  @layer base {
63
59
  html:not([data-theme='dark']) {
64
60
  --primary-color: var(--tw-color-lm-primary);
@@ -67,7 +63,7 @@
67
63
  --text-color: var(--tw-color-lm-text);
68
64
  --border-color: var(--tw-color-lm-border);
69
65
  --active-color: var(--tw-color-lm-active);
70
- --brand-color: var(--tw-color-lm-brand);
66
+ --brand-color: var(--tw-color-lm-main);
71
67
  --input-color: var(--tw-color-lm-input);
72
68
  --input-disabled-color: var(--tw-color-lm-disabled-input);
73
69
  --input-text-color: var(--tw-color-lm-input-text);
@@ -121,7 +117,10 @@
121
117
  color: var(--tw-color-brand);
122
118
  border-radius: var(--tw-radius-xs);
123
119
 
124
- @apply tw:focus-visible:outline-3 tw:focus-visible:outline-brand/50 tw:focus-visible:outline-offset-3 tw:focus-visible:z-1;
120
+ @apply
121
+ tw:focus-visible:outline-3 tw:focus-visible:outline-offset-3
122
+ tw:focus-visible:outline-lm-brand/50 tw:dark:focus-visible:outline-dm-brand/50
123
+ tw:focus-visible:z-1;
125
124
  }
126
125
 
127
126
  h1 {
@@ -161,7 +160,7 @@
161
160
  }
162
161
 
163
162
  @utility focus-ring {
164
- @apply tw:focus-ring-base tw:focus-visible:ring-brand/50;
163
+ @apply tw:focus-ring-base tw:focus-visible:ring-lm-brand/50 tw:dark:focus-visible:ring-dm-brand/50;
165
164
  }
166
165
 
167
166
  @utility focus-ring-danger {
@@ -0,0 +1,32 @@
1
+ import { useRef as T, useCallback as c, useEffect as m, useMemo as b, useState as f } from "react";
2
+ function h(s, n = globalThis.setTimeout, o = globalThis.clearTimeout) {
3
+ const t = T(null), e = c(() => {
4
+ t.current && o(t.current);
5
+ }, [o]), l = c((u, a) => {
6
+ e(), t.current = n(() => {
7
+ u(), t.current = null;
8
+ }, a ?? s);
9
+ }, [e, s, n]);
10
+ return m(() => e, [e]), b(
11
+ () => ({ setTimeout: l, clearCurrentTimeout: e }),
12
+ [e, l]
13
+ );
14
+ }
15
+ const F = 2e3, R = (s = {}, n, o = globalThis.setTimeout, t = globalThis.clearTimeout) => {
16
+ const { initialValue: e = !1, delay: l = F } = typeof s == "boolean" ? {
17
+ initialValue: s,
18
+ delay: n
19
+ } : s, { setTimeout: u } = h(l, o, t), [a, r] = f(e), i = T(e), g = c(() => {
20
+ r(!i.current), u(() => r(i.current));
21
+ }, [u]);
22
+ return [a, g];
23
+ };
24
+ function k(s = !1, n = !1) {
25
+ const [o, t] = f(s), e = c(() => t((a) => !a), []), l = c(() => t(!0), []), u = c(() => t(!1), []);
26
+ return n ? { flag: o, toggle: e, setToTrue: l, setToFalse: u } : [o, e, l, u];
27
+ }
28
+ export {
29
+ h as a,
30
+ R as b,
31
+ k as u
32
+ };
package/package.json CHANGED
@@ -38,8 +38,11 @@
38
38
  "clsx": "^2.1.1"
39
39
  },
40
40
  "peerDependencies": {
41
- "@fortawesome/fontawesome-free": "^6.4.2",
42
- "@fortawesome/free-solid-svg-icons": "^6.4.2",
41
+ "@fortawesome/fontawesome-common-types": "^6.7.2",
42
+ "@fortawesome/fontawesome-free": "^6.7.2",
43
+ "@fortawesome/fontawesome-svg-core": "^6.7.2",
44
+ "@fortawesome/free-regular-svg-icons": "^6.7.2",
45
+ "@fortawesome/free-solid-svg-icons": "^6.7.2",
43
46
  "@fortawesome/react-fontawesome": "^0.2.2",
44
47
  "react": "^18.3 || ^19.0",
45
48
  "react-dom": "^18.3 || ^19.0",
@@ -55,19 +58,19 @@
55
58
  "devDependencies": {
56
59
  "@shlinkio/eslint-config-js-coding-standard": "~3.5.0",
57
60
  "@stylistic/eslint-plugin": "^4.2.0",
58
- "@tailwindcss/vite": "^4.1.4",
61
+ "@tailwindcss/vite": "^4.1.5",
59
62
  "@testing-library/jest-dom": "^6.6.3",
60
63
  "@testing-library/react": "^16.3.0",
61
64
  "@testing-library/user-event": "^14.6.1",
62
65
  "@total-typescript/shoehorn": "^0.1.2",
63
66
  "@types/react": "^19.1.2",
64
- "@types/react-dom": "^19.1.2",
67
+ "@types/react-dom": "^19.1.3",
65
68
  "@vitejs/plugin-react": "^4.4.1",
66
69
  "@vitest/browser": "^3.1.2",
67
70
  "@vitest/coverage-v8": "^3.1.2",
68
71
  "axe-core": "^4.10.3",
69
72
  "bootstrap": "5.2.3",
70
- "eslint": "^9.25.1",
73
+ "eslint": "^9.26.0",
71
74
  "eslint-plugin-import": "^2.31.0",
72
75
  "eslint-plugin-jsx-a11y": "^6.10.2",
73
76
  "eslint-plugin-react": "^7.37.5",
@@ -78,8 +81,8 @@
78
81
  "playwright": "^1.52.0",
79
82
  "sass": "^1.87.0",
80
83
  "typescript": "^5.8.3",
81
- "typescript-eslint": "^8.31.0",
82
- "vite": "^6.3.3",
84
+ "typescript-eslint": "^8.31.1",
85
+ "vite": "^6.3.4",
83
86
  "vite-plugin-dts": "^4.5.3",
84
87
  "vitest": "^3.0.2"
85
88
  },
@@ -89,5 +92,5 @@
89
92
  "not ie <= 11",
90
93
  "not op_mini all"
91
94
  ],
92
- "version": "0.8.13"
95
+ "version": "0.9.0"
93
96
  }
@@ -1,22 +0,0 @@
1
- import { useRef as a, useCallback as o, useEffect as f, useMemo as i, useState as T } from "react";
2
- function m(n, r = globalThis.setTimeout, s = globalThis.clearTimeout) {
3
- const t = a(null), e = o(() => {
4
- t.current && s(t.current);
5
- }, [s]), u = o((l, c) => {
6
- e(), t.current = r(() => {
7
- l(), t.current = null;
8
- }, c ?? n);
9
- }, [e, n, r]);
10
- return f(() => e, [e]), i(
11
- () => ({ setTimeout: u, clearCurrentTimeout: e }),
12
- [e, u]
13
- );
14
- }
15
- function b(n = !1, r = !1) {
16
- const [s, t] = T(n), e = o(() => t((c) => !c), []), u = o(() => t(!0), []), l = o(() => t(!1), []);
17
- return r ? { flag: s, toggle: e, setToTrue: u, setToFalse: l } : [s, e, u, l];
18
- }
19
- export {
20
- b as a,
21
- m as u
22
- };