triafly-ui-kit 1.0.42 → 1.0.45

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,89 @@
1
+ import { jsx as o, jsxs as i } from "react/jsx-runtime";
2
+ import { useState as d } from "react";
3
+ import { ModalWindow as r } from "./ModalWindow.js";
4
+ import { IconCheck as t } from "../Icons/Icons.js";
5
+ const u = {
6
+ title: "UIKit/ModalWindow",
7
+ component: r,
8
+ tags: ["autodocs"]
9
+ }, l = () => {
10
+ const [n, e] = d(!1);
11
+ return /* @__PURE__ */ i("div", { style: { padding: "20px" }, children: [
12
+ /* @__PURE__ */ o(
13
+ "button",
14
+ {
15
+ onClick: () => e(!0),
16
+ style: {
17
+ padding: "8px 16px",
18
+ backgroundColor: "#007bff",
19
+ color: "white",
20
+ border: "none",
21
+ borderRadius: "4px",
22
+ cursor: "pointer"
23
+ },
24
+ children: "Open Modal"
25
+ }
26
+ ),
27
+ /* @__PURE__ */ o(r, { isOpen: n, onClose: () => e(!1), title: "Basic Modal Window", children: /* @__PURE__ */ i("div", { style: { padding: "20px" }, children: [
28
+ /* @__PURE__ */ o("p", { children: "This is a simple modal content" }),
29
+ /* @__PURE__ */ o(
30
+ "button",
31
+ {
32
+ onClick: () => e(!1),
33
+ style: {
34
+ padding: "6px 12px",
35
+ backgroundColor: "#6c757d",
36
+ color: "white",
37
+ border: "none",
38
+ borderRadius: "4px",
39
+ cursor: "pointer"
40
+ },
41
+ children: "Close"
42
+ }
43
+ )
44
+ ] }) })
45
+ ] });
46
+ }, s = () => {
47
+ const [n, e] = d(!1);
48
+ return /* @__PURE__ */ i("div", { style: { padding: "20px" }, children: [
49
+ /* @__PURE__ */ o(
50
+ "button",
51
+ {
52
+ onClick: () => e(!0),
53
+ style: {
54
+ padding: "8px 16px",
55
+ backgroundColor: "#007bff",
56
+ color: "white",
57
+ border: "none",
58
+ borderRadius: "4px",
59
+ cursor: "pointer"
60
+ },
61
+ children: "Open Modal with Icon"
62
+ }
63
+ ),
64
+ /* @__PURE__ */ o(
65
+ r,
66
+ {
67
+ isOpen: n,
68
+ onClose: () => e(!1),
69
+ title: "Modal with Icon",
70
+ iconHeader: {
71
+ view: !0,
72
+ status: "info",
73
+ icon: t,
74
+ size: 24
75
+ },
76
+ children: /* @__PURE__ */ o("div", { style: { padding: "20px" }, children: /* @__PURE__ */ o("p", { children: "This modal has an icon in the header" }) })
77
+ }
78
+ )
79
+ ] });
80
+ }, x = {
81
+ render: () => /* @__PURE__ */ o(l, {})
82
+ }, f = {
83
+ render: () => /* @__PURE__ */ o(s, {})
84
+ };
85
+ export {
86
+ x as Basic,
87
+ f as WithIcon,
88
+ u as default
89
+ };
@@ -1,100 +1,100 @@
1
1
  import { jsx as n, jsxs as g } from "react/jsx-runtime";
2
- import Z, { forwardRef as K, useState as M, useMemo as ee, useCallback as k, useEffect as te } from "react";
3
- import o from "../../../_virtual/index.js";
2
+ import Z, { forwardRef as K, useState as j, useMemo as ee, useCallback as k, useEffect as te } from "react";
3
+ import i from "../../../_virtual/index.js";
4
4
  import '../../../assets/src/components/Ui/Table/Table.css';/* empty css */
5
- import { IconCaretDown as j, IconCaretUp as ne } from "../Icons/Icons.js";
6
- import { MemoizedRow as z } from "./MemoizedRow/MemoizedRow.js";
5
+ import { IconCaretDown as z, IconCaretUp as ne } from "../Icons/Icons.js";
6
+ import { MemoizedRow as C } from "./MemoizedRow/MemoizedRow.js";
7
7
  import { Loader as ae } from "../Loader/Loader.js";
8
8
  import { TableSkeletonRow as re } from "./TableSkeletonRow/TableSkeletonRow.js";
9
- const C = {
10
- asc: /* @__PURE__ */ n(j, { viewBox: "0 -6 24 24", "aria-hidden": "true" }),
9
+ const L = {
10
+ asc: /* @__PURE__ */ n(z, { viewBox: "0 -6 24 24", "aria-hidden": "true" }),
11
11
  desc: /* @__PURE__ */ n(ne, { viewBox: "0 -4 24 24", "aria-hidden": "true" }),
12
- default: /* @__PURE__ */ n(j, { viewBox: "0 -6 24 24", "aria-hidden": "true" })
12
+ default: /* @__PURE__ */ n(z, { viewBox: "0 -6 24 24", "aria-hidden": "true" })
13
13
  }, se = ({
14
- columns: f,
15
- dataSource: m,
16
- rowKey: i,
17
- tableClassName: L,
18
- theadClassName: $,
19
- trTheadClassNames: O,
20
- thTheadClassNames: U,
21
- tbodyClassName: q,
22
- wrapperClassName: F,
14
+ columns: m,
15
+ dataSource: l,
16
+ rowKey: f,
17
+ tableClassName: $,
18
+ theadClassName: O,
19
+ trTheadClassNames: U,
20
+ thTheadClassNames: q,
21
+ tbodyClassName: F,
22
+ wrapperClassName: G,
23
23
  borderBottom: y = !1,
24
- stickyHeader: G = !1,
24
+ stickyHeader: H = !1,
25
25
  stickyLeft: b = !1,
26
26
  bordered: p = !1,
27
27
  rowClassName: x,
28
- defaultSort: H,
29
- onClickTr: _,
30
- onClickTrHeader: J,
28
+ defaultSort: J,
29
+ onClickTr: d,
30
+ onClickTrHeader: P,
31
31
  loading: R = !1,
32
- hasMore: P = !1,
33
- loadingIndicator: Q,
32
+ hasMore: Q = !1,
33
+ loadingIndicator: S,
34
34
  loaderRef: B,
35
35
  externalSorting: D = !1,
36
36
  entities: c,
37
37
  sortedIds: u
38
38
  }, V) => {
39
- const T = Z.useRef(null), l = !!c && !!u, [A, W] = M(m || []), [s, S] = M(
40
- H || null
39
+ const T = Z.useRef(null), o = !!c && !!u, [A, W] = j(l || []), [s, E] = j(
40
+ J || null
41
41
  ), N = ee(() => {
42
- if (!l)
43
- return D ? m : A;
44
- }, [l, m, A, D]), E = k(
42
+ if (!o)
43
+ return D ? l : A;
44
+ }, [o, l, A, D]), I = k(
45
45
  (e, t) => {
46
- if (l) {
47
- S({ key: e, order: t });
46
+ if (o) {
47
+ E({ key: e, order: t });
48
48
  return;
49
49
  }
50
- W((d) => [...d].sort((h, I) => {
51
- const r = h[e], a = I[e];
50
+ W((_) => [..._].sort((h, M) => {
51
+ const r = h[e], a = M[e];
52
52
  return typeof r == "string" && typeof a == "string" ? t === "asc" ? r.localeCompare(a) : a.localeCompare(r) : typeof r == "number" && typeof a == "number" ? t === "asc" ? r - a : a - r : r instanceof Date && a instanceof Date ? t === "asc" ? r.getTime() - a.getTime() : a.getTime() - r.getTime() : 0;
53
- })), S({ key: e, order: t });
53
+ })), E({ key: e, order: t });
54
54
  },
55
- [l]
55
+ [o]
56
56
  ), v = k(
57
- (e) => typeof i == "function" ? i(e) : String(e[i]),
58
- [i]
57
+ (e) => typeof f == "function" ? f(e) : String(e[f]),
58
+ [f]
59
59
  ), X = k(
60
60
  (e) => {
61
- const d = (s == null ? void 0 : s.key) === e && s.order === "asc" ? "desc" : "asc";
62
- E(e, d);
61
+ const _ = (s == null ? void 0 : s.key) === e && s.order === "asc" ? "desc" : "asc";
62
+ I(e, _);
63
63
  },
64
- [s, E]
64
+ [s, I]
65
65
  );
66
66
  return te(() => {
67
67
  const e = T.current;
68
68
  if (!e) return;
69
- const t = (d) => {
70
- const w = d.target, h = w.closest("tr");
69
+ const t = (_) => {
70
+ const w = _.target, h = w.closest("tr");
71
71
  if (!h || w.closest("[data-no-bubble]")) return;
72
72
  const r = h.dataset.id;
73
- if (!(!r || !_))
74
- if (l && c) {
73
+ if (!(!r || !d))
74
+ if (o && c) {
75
75
  const a = c[r];
76
- a && _(a);
76
+ a && d(a);
77
77
  } else {
78
- const a = m.find((Y) => v(Y) === r);
79
- a && _(a);
78
+ const a = l == null ? void 0 : l.find((Y) => v(Y) === r);
79
+ a && d(a);
80
80
  }
81
81
  };
82
82
  return e.addEventListener("click", t), () => e.removeEventListener("click", t);
83
- }, [m, _, v, l, c]), /* @__PURE__ */ n("div", { className: o("table-component", F), children: /* @__PURE__ */ n(
83
+ }, [l, d, v, o, c]), /* @__PURE__ */ n("div", { className: i("table-component", G), children: /* @__PURE__ */ n(
84
84
  "div",
85
85
  {
86
- className: o(
86
+ className: i(
87
87
  "table-component__wrapper",
88
88
  {
89
89
  bordered: p,
90
90
  borderBottom: y
91
91
  },
92
- L
92
+ $
93
93
  ),
94
94
  children: /* @__PURE__ */ g(
95
95
  "table",
96
96
  {
97
- className: o("table-component__wrapper__table", {
97
+ className: i("table-component__wrapper__table", {
98
98
  bordered: p,
99
99
  borderBottom: y
100
100
  }),
@@ -103,31 +103,31 @@ const C = {
103
103
  /* @__PURE__ */ n(
104
104
  "thead",
105
105
  {
106
- className: o(
106
+ className: i(
107
107
  "table-component__wrapper__table__thead",
108
108
  {
109
- stickyHeader: G
109
+ stickyHeader: H
110
110
  },
111
- $
111
+ O
112
112
  ),
113
113
  children: /* @__PURE__ */ n(
114
114
  "tr",
115
115
  {
116
- className: o(
116
+ className: i(
117
117
  "table-component__wrapper__table__thead__tr",
118
- O
118
+ U
119
119
  ),
120
- onClick: J,
121
- children: f.map((e, t) => /* @__PURE__ */ n(
120
+ onClick: P,
121
+ children: m.map((e, t) => /* @__PURE__ */ n(
122
122
  "th",
123
123
  {
124
- className: o(
124
+ className: i(
125
125
  "table-component__wrapper__table__thead__th",
126
126
  {
127
127
  bordered: p,
128
128
  stickyLeft: b && t === 0
129
129
  },
130
- U
130
+ q
131
131
  ),
132
132
  style: {
133
133
  ...e.width ? { width: e.width } : {},
@@ -136,7 +136,7 @@ const C = {
136
136
  onClick: () => e.sorted && X(e.key),
137
137
  children: /* @__PURE__ */ g("div", { className: "th-content", children: [
138
138
  e.title,
139
- e.sorted && /* @__PURE__ */ n("span", { className: "sort-icon", children: (s == null ? void 0 : s.key) === e.key ? C[s.order] : C.default })
139
+ e.sorted && /* @__PURE__ */ n("span", { className: "sort-icon", children: (s == null ? void 0 : s.key) === e.key ? L[s.order] : L.default })
140
140
  ] })
141
141
  },
142
142
  `${e.key}-${t}`
@@ -149,16 +149,16 @@ const C = {
149
149
  "tbody",
150
150
  {
151
151
  ref: T,
152
- className: o("table-component__wrapper__table__tbody", q),
152
+ className: i("table-component__wrapper__table__tbody", F),
153
153
  children: [
154
- l && u ? u.map((e) => {
154
+ o && u ? u.map((e) => {
155
155
  const t = c == null ? void 0 : c[e];
156
156
  return t ? /* @__PURE__ */ n(
157
- z,
157
+ C,
158
158
  {
159
159
  record: t,
160
- columns: f,
161
- rowKey: i,
160
+ columns: m,
161
+ rowKey: f,
162
162
  rowClassName: x,
163
163
  index: u.indexOf(e),
164
164
  stickyLeft: b,
@@ -168,11 +168,11 @@ const C = {
168
168
  e
169
169
  ) : null;
170
170
  }) : N == null ? void 0 : N.map((e, t) => /* @__PURE__ */ n(
171
- z,
171
+ C,
172
172
  {
173
173
  record: e,
174
- columns: f,
175
- rowKey: i,
174
+ columns: m,
175
+ rowKey: f,
176
176
  rowClassName: x,
177
177
  index: t,
178
178
  stickyLeft: b,
@@ -181,7 +181,7 @@ const C = {
181
181
  v(e)
182
182
  )),
183
183
  R ? /* @__PURE__ */ n("div", { className: "loading_table_init", children: /* @__PURE__ */ n(ae, { className: "centered" }) }) : null,
184
- !R && P && B && /* @__PURE__ */ n("tr", { ref: B, children: /* @__PURE__ */ n("td", { colSpan: f.length, children: Q || /* @__PURE__ */ n(re, { colSpan: f.length }) }) })
184
+ !R && Q && B && /* @__PURE__ */ n("tr", { ref: B, children: /* @__PURE__ */ n("td", { colSpan: m.length, children: S || /* @__PURE__ */ n(re, { colSpan: m.length }) }) })
185
185
  ]
186
186
  }
187
187
  )
@@ -190,7 +190,7 @@ const C = {
190
190
  )
191
191
  }
192
192
  ) });
193
- }, _e = K(se);
193
+ }, de = K(se);
194
194
  export {
195
- _e as Table
195
+ de as Table
196
196
  };
package/dist/main.d.ts CHANGED
@@ -1155,7 +1155,7 @@ export declare const Table: <T extends object>(props: TablesProps<T> & {
1155
1155
 
1156
1156
  declare type TablesProps<T extends object = Record<string, unknown>> = {
1157
1157
  columns: Column<T>[];
1158
- dataSource: T[];
1158
+ dataSource?: T[];
1159
1159
  rowKey: keyof T | ((record: T) => string);
1160
1160
  tableClassName?: string;
1161
1161
  trTheadClassNames?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "triafly-ui-kit",
3
- "version": "1.0.42",
3
+ "version": "1.0.45",
4
4
  "description": "UI Kit from Triafly",
5
5
  "main": "./dist/main.js",
6
6
  "module": "./dist/main.js",
@@ -1,22 +0,0 @@
1
- @mixin wrapper($bg-color: var(--color-bg-island-default), $padding: 20px 24px 20px 24px) {
2
- background-color: $bg-color;
3
- padding: $padding;
4
- border-radius: 16px;
5
- }
6
-
7
- @mixin outlinedColorScheme ($borderColor, $textColor) { //NOTE: дублирование стилей UI-кита изза модулей?
8
- background-color: transparent !important;
9
- border: 1px solid $borderColor;
10
- color: $textColor;
11
- &[disabled] {
12
- pointer-events: none;
13
- }
14
- &:hover {
15
- background-color: transparent;
16
- box-shadow: inset 0 0 0 1px $borderColor;
17
- }
18
-
19
- svg * {
20
- fill: $textColor;
21
- }
22
- }
@@ -1,4 +0,0 @@
1
- // Скрываем браузерный крестик в полях поиска
2
- input[type="search"]::-webkit-search-cancel-button {
3
- display: none;
4
- }
@@ -1,27 +0,0 @@
1
- @import "./reset.scss";
2
- @import "./variables.scss";
3
- @import "./fix.scss";
4
- @import './_mixins.scss';
5
- @import './typography.scss';
6
-
7
- // Пока не трогать, тестовая подсветка блоков
8
- // html {
9
- // border: 4px solid red;
10
- // padding: 1px;
11
- // }
12
-
13
- // body {
14
- // border: 2px dashed;
15
- // margin: 1px;
16
- // }
17
-
18
- // div {
19
- // border: 1px dotted;
20
- // margin: 1px;
21
- // }
22
-
23
-
24
- //layout.module.scss не позволяет дочерним компонентам наследовать стили почему то. Сделать нормальный
25
- .page-content {
26
- border-radius: 16px;
27
- }
@@ -1,106 +0,0 @@
1
- * {
2
- margin: 0;
3
- padding: 0;
4
- border: 0;
5
-
6
- /*color: #1a2026;*/
7
- }
8
-
9
- *,
10
- *::before,
11
- *::after {
12
- -moz-box-sizing: border-box;
13
- -webkit-box-sizing: border-box;
14
- box-sizing: border-box;
15
- }
16
-
17
- :focus,
18
- :active {
19
- outline: none;
20
- }
21
-
22
- nav,
23
- footer,
24
- header,
25
- aside {
26
- display: block;
27
- }
28
-
29
- html,
30
- body {
31
- width: 100%;
32
- height: 100%;
33
-
34
- font-size: 100%;
35
- font-size: 14px;
36
- line-height: 1;
37
- -ms-text-size-adjust: 100%;
38
- -moz-text-size-adjust: 100%;
39
- -webkit-text-size-adjust: 100%;
40
- }
41
-
42
- input,
43
- button,
44
- textarea {
45
- font-family: inherit;
46
- }
47
-
48
- input::-ms-clear {
49
- display: none;
50
- }
51
-
52
- button {
53
- cursor: pointer;
54
- }
55
-
56
- button::-moz-focus-inner {
57
- padding: 0;
58
-
59
- border: 0;
60
- }
61
-
62
- a,
63
- a:visited {
64
- text-decoration: none;
65
- }
66
-
67
- a:focus,
68
- a:active {
69
- outline: none;
70
- }
71
-
72
- a:hover {
73
- text-decoration: none;
74
- }
75
-
76
- ul li {
77
- list-style: none;
78
- }
79
-
80
- img {
81
- vertical-align: top;
82
- }
83
-
84
- h1,
85
- h2,
86
- h3,
87
- h4,
88
- h5,
89
- h6 {
90
- font-size: inherit;
91
- font-weight: 400;
92
- }
93
-
94
- #root {
95
- background-color: var(--color-bg-island-default);
96
- }
97
-
98
- .page-wrapper {
99
- width: 100%;
100
- max-width: 1920px;
101
- min-height: 100vh;
102
- margin: 0 auto;
103
- display: flex;
104
- flex-direction: column;
105
- background-color: var(--color-bg-island-default);
106
- }
@@ -1,106 +0,0 @@
1
- $font-path: '../assets/fonts' !default; // Для работы внутри Storybook
2
- // Переопределяется в основном проекте через:
3
- // $font-path: '~triafly-ui-kit/assets/fonts';
4
-
5
- //Подключение шрифтов
6
- @font-face {
7
- font-family: "Roboto Slab";
8
- src: url("#{$font-path}/RobotoSlab-SemiBold.ttf") format("truetype");
9
- font-weight: 600;
10
- }
11
-
12
- @font-face {
13
- font-family: "Manrope";
14
- src: url("#{$font-path}/Manrope-Regular.ttf") format("truetype");
15
- font-weight: 400;
16
- }
17
-
18
- @font-face {
19
- font-family: "Manrope";
20
- src: url("#{$font-path}/Manrope-Semibold.ttf") format("truetype");
21
- font-weight: 600;
22
- }
23
-
24
- @font-face {
25
- font-family: "Manrope";
26
- src: url("#{$font-path}/Manrope-Bold.ttf") format("truetype");
27
- font-weight: 700;
28
- }
29
-
30
- @font-face {
31
- font-family: "Fira Code";
32
- src: url("#{$font-path}/FiraCode-Regular.ttf") format("truetype");
33
- font-weight: 400;
34
- }
35
-
36
- //Глобальные свойства шрифтов
37
- * {
38
- font-family: "Manrope", sans-serif;
39
- font-size: 14px;
40
- line-height: 1.2em;
41
- letter-spacing: 0.02em;
42
- font-weight: 400;
43
- color: var(--color-text-primary-default);
44
- }
45
-
46
- //Заголовки
47
-
48
- //NOTE:
49
- //по макетам у нас 8 уровней заголовков, JSX понимает только шесть.
50
- //AI: Использовать уровни заголовков начиная с h1 в контексте страницы,
51
- //как это принято общей практикой вёрстки,
52
- //а для указания размеров и начертания использовать миксин.
53
- //В противном случае основными хедерами будут h4-h8 + варнинги JSX
54
-
55
- //Дефолтные значения font-size и font-weight = 14 и 400
56
- //При необходимости кастомизации текста в компоненте импортируется данные миксины
57
- //с указанием необходимых значений согласно макету
58
- //TODO: подготовить переменные для стандартизаии размеров
59
-
60
- //Акцидентная гарнитура для заголовков
61
- @mixin accidental($size, $margin) {
62
- font-family: "Roboto Slab", sans-serif;
63
- font-size: $size;
64
- margin: 0 0 $margin 0;
65
- }
66
-
67
- //Гротескная гарнитура для заголовков и регулярного текста
68
- @mixin grotesque($size, $weight) {
69
- font-size: $size;
70
- font-weight: $weight;
71
- }
72
-
73
- //сброс дефолтных отступов в заголовках
74
- @for $i from 1 through 6 {
75
- h#{$i} {
76
- margin: 0;
77
- }
78
- }
79
-
80
- //Ссылки
81
- a {
82
- color: var(--color-text-brand-default);
83
- text-decoration: none;
84
- &:hover {
85
- color: var(--color-text-brand-hover);
86
- }
87
- &[href=""] {
88
- //стили неактивной ссылки
89
- opacity: 40%;
90
- cursor: default;
91
- pointer-events: none;
92
- //не совсем понятно зачем она нам
93
- //+ линтер неадекватно реагирует на пустой href
94
- //добавить .disabled с JS-логикой?
95
- }
96
- }
97
-
98
- //Параграфы
99
-
100
- //TODO: недостаточно кейсов в моках, запросить для уточнения
101
- p {
102
- // font-size: 12px;
103
- &:not(:last-child) {
104
- margin: 0 0 8px 0;
105
- }
106
- }
@@ -1,277 +0,0 @@
1
- :root {
2
- /* Font */
3
- --3afly-fonts-body: 'Manrope', sans-serif;
4
- --3afly-fonts-heading: 'Roboto Slab', sans-serif;
5
-
6
- //temp
7
- --light-brand-50: #C2D0FF;
8
- --dark-brand-50: #C2D0FF;
9
-
10
- /* Primitives */
11
- --dark-brand-20: #153398;
12
- --dark-brand-50: #1E46CD;
13
- --dark-brand-100: #5076FF;
14
- --dark-brand-200: #7C98FF;
15
- --dark-brand-300: #A7BBFF;
16
-
17
- --light-brand-20: #EEF2FF;
18
- --light-brand-50: #C2D0FF;
19
- --light-brand-100: #2454FF;
20
- --light-brand-200: #1A3AB2;
21
- --light-brand-300: #0E2266;
22
-
23
- /* Primitives - Base */
24
- --base-dark: #121212;
25
- --base-light: #FFFFFF;
26
-
27
- /* Primitives - Neutral */
28
- --dark-neutral-0: #121212;
29
- --dark-neutral-20: #292929;
30
- --dark-neutral-50: #333333;
31
- --dark-neutral-100: #4D4D4D;
32
- --dark-neutral-200: #6E6E6E;
33
- --dark-neutral-300: #FFFFFF;
34
-
35
- --light-neutral-0: #FFFFFF;
36
- --light-neutral-20: #F6F7F8;
37
- --light-neutral-50: #F1F2F4;
38
- --light-neutral-100: #D2D5DA;
39
- --light-neutral-200: #A5A8AC;
40
- --light-neutral-300: #121212;
41
-
42
- /* Primitives - Status */
43
- --dark-green-50: #044329;
44
- --dark-green-100: #12A26C;
45
- --dark-green-200: #CEF8E0;
46
- --dark-orange-50: #662500;
47
- --dark-orange-100: #E16D00;
48
- --dark-orange-200: #FFECCC;
49
- --dark-red-50: #7B0000;
50
- --dark-red-100: #F65843;
51
- --dark-red-200: #FFEBE7;
52
-
53
- --light-green-50: #CEF8E0;
54
- --light-green-100: #15A46E;
55
- --light-green-200: #06603B;
56
- --light-orange-50: #FFECCC;
57
- --light-orange-100: #E46F00;
58
- --light-orange-200: #9E3900;
59
- --light-red-50: #FFEBE7;
60
- --light-red-100: #F75C46;
61
- --light-red-200: #9E0000;
62
-
63
- /* Shadows & Effects */
64
- --color-fader: #12121220;
65
- }
66
-
67
- /* Primitives - Test Client */
68
- html[data-client="test"] {
69
- --light-brand-20: #F3E8FF;
70
- --light-brand-50: #D8B4FE;
71
- --light-brand-100: #A855F7;
72
- --light-brand-200: #7E22CE;
73
- --light-brand-300: #4C1D95;
74
-
75
- --dark-brand-20: #5B21B6;
76
- --dark-brand-50: #7C3AED;
77
- --dark-brand-100: #A78BFA;
78
- --dark-brand-200: #C4B5FD;
79
- --dark-brand-300: #DDD6FE;
80
- }
81
-
82
- html[data-theme="light"] {
83
- /* Light Theme */
84
-
85
- --default-font-color: var(--base-dark);
86
-
87
- /* Light Theme - Background */
88
- --color-bg-brand-default: var(--light-brand-100);
89
- --color-bg-brand-hover: var(--light-brand-200);
90
- --color-bg-brand-selected: var(--light-brand-300);
91
- --color-bg-brand-lightest-default: var(--light-brand-20);
92
- --color-bg-brand-light-default: var(--light-brand-50);
93
- --color-bg-error-default: var(--light-red-100);
94
- --color-bg-error-hover: var(--light-red-200);
95
- --color-bg-innerisland-default: var(--light-neutral-20);
96
- --color-bg-island-default: var(--base-light);
97
- --color-bg-island-disabled: var(--light-neutral-50);
98
- --color-bg-island-inversed: var(--base-dark);
99
- --color-bg-island-selected: var(--light-neutral-50);
100
- --color-bg-page-primary-default: var(--light-neutral-50);
101
- --color-bg-page-secondary-default: var(--light-neutral-0);
102
- --color-bg-neutral-basic-default: var(--light-neutral-0);
103
- --color-bg-neutral-lightest-default: var(--light-neutral-20);
104
- --color-bg-neutral-light-default: var(--light-neutral-50);
105
- --color-bg-neutral-medium-default: var(--light-neutral-100);
106
- --color-bg-neutral-basic-inversed: var(--light-neutral-300);
107
-
108
- /* Light Theme - Border */
109
- --color-border-brand-default: var(--light-brand-100);
110
- --color-border-error-default: var(--light-red-100);
111
- --color-border-primary-default: var(--light-neutral-100);
112
- --color-border-primary-hover: var(--base-dark);
113
- --color-border-secondary-default: var(--light-neutral-200);
114
- --color-border-secondary-hover: var(--base-dark);
115
- --color-border-success-default: var(--light-green-100);
116
-
117
- /* Light Theme - Chart */
118
- --color-chart-critical: var(--light-red-100);
119
- --color-chart-low: var(--light-green-100);
120
- --color-chart-medium: var(--light-orange-100);
121
-
122
- /* Light Theme - Effects */
123
- --effect-shadow-drop: #12121214;
124
- --effect-shadow-L: #12121208;
125
- --effect-shadow-XL: #12121215;
126
-
127
- /* Light Theme - Icon */
128
- --color-icon-brand-default: var(--light-brand-100);
129
- --color-icon-brand-hover: var(--light-brand-200);
130
- --color-icon-error-default: var(--light-red-100);
131
- --color-icon-error-hover: var(--light-red-200);
132
- --color-icon-primary-default: var(--base-dark);
133
- --color-icon-primary-inversed: var(--base-light);
134
- --color-icon-secondary-default: var(--light-neutral-200);
135
- --color-icon-secondary-hover: var(--base-dark);
136
- --color-icon-success-default: var(--light-green-100);
137
-
138
- /* Light Theme - SideMenu */
139
- --color-sidemenu-bg-default: var(--base-light);
140
- --color-sidemenu-bg-hover: var(--light-neutral-50);
141
- --color-sidemenu-bg-selected: var(--light-brand-100);
142
- --color-sidemenu-icon-default: var(--base-dark);
143
- --color-sidemenu-icon-selected: var(--light-color-static);
144
- --color-sidemenu-plus_button_bg-selected-hover: var(--light-brand-200);
145
- --color-sidemenu-plus_button_bg-unselected-hover: var(--base-dark);
146
- --color-sidemenu-plus_button_icon-selected-default: var(--light-color-static);
147
- --color-sidemenu-plus_button_icon-selected-hover: var(--light-color-static);
148
- --color-sidemenu-plus_button_icon-unselected-default: var(--base-dark);
149
- --color-sidemenu-plus_button_icon-unselected-hover: var(--base-light);
150
- --color-sidemenu-text-default: var(--base-dark);
151
- --color-sidemenu-text-selected: var(--light-color-static);
152
-
153
- /* Light Theme - Static */
154
- --dark-color-static: var(--base-dark);
155
- --dark-color-static-brand: var(--dark-brand-100);
156
- --light-color-static: var(--base-light);
157
- --light-color-static-brand: var(--light-brand-100);
158
-
159
- /* Light Theme - Status */
160
- --color-status-error-background: var(--light-red-50);
161
- --color-status-error-foreground: var(--light-red-100);
162
- --color-status-success-background: var(--light-green-50);
163
- --color-status-success-foreground: var(--light-green-100);
164
- --color-status-warning-background: var(--light-orange-50);
165
- --color-status-warning-foreground: var(--light-orange-100);
166
-
167
- /* Light Theme - Text */
168
- --color-text-brand-default: var(--light-brand-100);
169
- --color-text-brand-hover: var(--light-brand-200);
170
- --color-text-error-default: var(--light-red-100);
171
- --color-text-primary-default: var(--base-dark);
172
- --color-text-primary-inversed: var(--light-neutral-0);
173
- --color-text-secondary-default: var(--light-neutral-200);
174
- --color-text-success-default: var(--light-green-100);
175
- --color-text-tertiary-default: var(--light-neutral-100);
176
-
177
- /* Light Theme - Buttons */
178
- --color-button-brandlight-filled-hover: var(--light-brand-50);
179
- }
180
-
181
- html[data-theme="dark"] {
182
- /* Dark Theme */
183
-
184
- --default-font-color: var(--base-light);
185
-
186
- /* Dark Theme - Background */
187
- --color-bg-brand-default: var(--dark-brand-100);
188
- --color-bg-brand-hover: var(--dark-brand-200);
189
- --color-bg-brand-selected: var(--dark-brand-300);
190
- --color-bg-brand-light-default: var(--dark-brand-50);
191
- --color-bg-error-default: var(--dark-red-100);
192
- --color-bg-error-hover: var(--dark-red-50);
193
- --color-bg-innerisland-default: var(--dark-neutral-20);
194
- --color-bg-island-default: var(--base-dark);
195
- --color-bg-island-disabled: var(--dark-neutral-50);
196
- --color-bg-island-inversed: var(--base-light);
197
- --color-bg-island-selected: var(--dark-neutral-50);
198
- --color-bg-page-default: var(--dark-neutral-50);
199
- --color-bg-page-secondary-default: var(--dark-neutral-0);
200
- --color-bg-page-secondary-default: var(--dark-neutral-0);
201
- --color-bg-neutral-basic-default: var(--dark-neutral-20);
202
- --color-bg-neutral-lightest-default: var(--dark-neutral-20);
203
- --color-bg-neutral-light-default: var(--dark-neutral-50);
204
- --color-bg-neutral-medium-default: var(--dark-neutral-100);
205
- --color-bg-neutral-basic-inversed: var(--dark-neutral-300);
206
-
207
- /* Dark Theme - Border */
208
- --color-border-brand-default: var(--dark-brand-100);
209
- --color-border-error-default: var(--dark-red-100);
210
- --color-border-primary-default: var(--dark-neutral-100);
211
- --color-border-primary-hover: var(--base-light);
212
- --color-border-secondary-default: var(--dark-neutral-200);
213
- --color-border-secondary-hover: var(--base-light);
214
- --color-border-success-default: var(--dark-green-100);
215
-
216
- /* Dark Theme - Chart */
217
- --color-chart-critical: var(--dark-red-100);
218
- --color-chart-low: var(--dark-green-100);
219
- --color-chart-medium: var(--dark-orange-100);
220
-
221
- /* Dark Theme - Effects */
222
- --effect-shadow-drop: #12121299;
223
-
224
- /* Dark Theme - Icon */
225
- --color-icon-brand-default: var(--dark-brand-100);
226
- --color-icon-brand-hover: var(--dark-brand-200);
227
- --color-icon-error-default: var(--dark-red-100);
228
- --color-icon-error-hover: var(--dark-red-200);
229
- --color-icon-primary-default: var(--base-light);
230
- --color-icon-primary-inversed: var(--base-dark);
231
- --color-icon-secondary-default: var(--dark-neutral-200);
232
- --color-icon-secondary-hover: var(--base-light);
233
- --color-icon-success-default: var(--dark-green-100);
234
-
235
- /* Dark Theme - SideMenu */
236
- --color-sidemenu-bg-default: var(--base-dark);
237
- --color-sidemenu-bg-hover: var(--dark-neutral-50);
238
- --color-sidemenu-bg-selected: var(--dark-brand-100);
239
- --color-sidemenu-icon-default: var(--base-light);
240
- --color-sidemenu-icon-selected: var(--light-color-static);
241
- --color-sidemenu-plus_button_bg-selected-hover: var(--dark-brand-200);
242
- --color-sidemenu-plus_button_bg-unselected-hover: var(--base-light);
243
- --color-sidemenu-plus_button_icon-selected-default: var(--light-color-static);
244
- --color-sidemenu-plus_button_icon-selected-hover: var(--light-color-static);
245
- --color-sidemenu-plus_button_icon-unselected-default: var(--base-light);
246
- --color-sidemenu-plus_button_icon-unselected-hover: var(--base-dark);
247
- --color-sidemenu-text-default: var(--base-light);
248
- --color-sidemenu-text-selected: var(--light-color-static);
249
-
250
- /* Dark Theme - Static */
251
- --dark-color-static: var(--base-dark);
252
- --dark-color-static-brand: var(--dark-brand-100);
253
- --light-color-static: var(--base-light);
254
- --light-color-static-brand: var(--light-brand-100);
255
-
256
- /* Dark Theme - Status */
257
- --color-status-error-background: var(--dark-red-50);
258
- --color-status-error-foreground: var(--dark-red-100);
259
- --color-status-success-background: var(--dark-green-50);
260
- --color-status-success-foreground: var(--dark-green-100);
261
- --color-status-warning-background: var(--dark-orange-50);
262
- --color-status-warning-foreground: var(--dark-orange-100);
263
-
264
- /* Dark Theme - Text */
265
- --color-text-brand-default: var(--dark-brand-100);
266
- --color-text-brand-hover: var(--dark-brand-200);
267
- --color-text-error-default: var(--dark-red-100);
268
- --color-text-primary-default: var(--base-light);
269
- --color-text-primary-inversed: var(--dark-neutral-0);
270
- --color-text-secondary-default: var(--dark-neutral-200);
271
- --color-text-success-default: var(--dark-green-100);
272
- --color-text-tertiary-default: var(--dark-neutral-100);
273
-
274
- /* Dark Theme - Buttons */
275
- --color-button-brandlight-filled-hover: var(--dark-brand-50);
276
- }
277
-