@prokodo/ui 0.1.10 → 0.1.11

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.
Files changed (58) hide show
  1. package/README.md +1 -0
  2. package/dist/_virtual/_commonjsHelpers.js +2 -0
  3. package/dist/_virtual/quill.js +34 -0
  4. package/dist/_virtual/quill2.js +4 -0
  5. package/dist/components/RTE/RTE.client.js +326 -0
  6. package/dist/components/RTE/RTE.css +253 -0
  7. package/dist/components/RTE/RTE.js +12 -0
  8. package/dist/components/RTE/RTE.lazy.js +12 -0
  9. package/dist/components/RTE/RTE.module.css +253 -0
  10. package/dist/components/RTE/RTE.module.scss.js +19 -0
  11. package/dist/components/RTE/RTE.server.js +19 -0
  12. package/dist/components/RTE/RTE.styles.js +21 -0
  13. package/dist/components/RTE/RTE.theme.js +4 -0
  14. package/dist/components/RTE/RTE.utils.js +51 -0
  15. package/dist/components/RTE/RTE.view.js +107 -0
  16. package/dist/components/RTE/index.js +4 -0
  17. package/dist/components/avatar/Avatar.css +1 -3
  18. package/dist/components/avatar/Avatar.module.css +1 -3
  19. package/dist/components/avatar/Avatar.view.js +30 -17
  20. package/dist/components/base-link/BaseLink.client.js +11 -1
  21. package/dist/components/button/Button.view.js +1 -0
  22. package/dist/components/card/Card.css +1 -1
  23. package/dist/components/card/Card.module.css +1 -1
  24. package/dist/components/chip/Chip.css +2 -2
  25. package/dist/components/chip/Chip.module.css +2 -2
  26. package/dist/components/chip/Chip.view.js +1 -1
  27. package/dist/components/input/Input.view.js +21 -13
  28. package/dist/components/rich-text/RichText.client.js +31 -0
  29. package/dist/components/rich-text/RichText.css +13 -1
  30. package/dist/components/rich-text/RichText.module.css +13 -1
  31. package/dist/components/rich-text/RichText.module.scss.js +2 -0
  32. package/dist/components/rich-text/RichText.server.js +1 -0
  33. package/dist/constants/project.js +1 -1
  34. package/dist/index.js +2 -0
  35. package/dist/node_modules/.pnpm/quill@2.0.3/node_modules/quill/dist/quill.js +6133 -0
  36. package/dist/node_modules/.pnpm/quill@2.0.3/node_modules/quill/dist/quill.snow.css.js +12 -0
  37. package/dist/theme.css +19 -7
  38. package/dist/tsconfig.build.tsbuildinfo +1 -1
  39. package/dist/types/components/RTE/RTE.client.d.ts +6 -0
  40. package/dist/types/components/RTE/RTE.d.ts +339 -0
  41. package/dist/types/components/RTE/RTE.lazy.d.ts +340 -0
  42. package/dist/types/components/RTE/RTE.model.d.ts +17 -0
  43. package/dist/types/components/RTE/RTE.server.d.ts +3 -0
  44. package/dist/types/components/RTE/RTE.styles.d.ts +1 -0
  45. package/dist/types/components/RTE/RTE.theme.d.ts +2 -0
  46. package/dist/types/components/RTE/RTE.utils.d.ts +4 -0
  47. package/dist/types/components/RTE/RTE.view.d.ts +11 -0
  48. package/dist/types/components/RTE/index.d.ts +2 -0
  49. package/dist/types/components/avatar/Avatar.model.d.ts +1 -1
  50. package/dist/types/components/input/Input.model.d.ts +13 -1
  51. package/dist/types/components/input/Input.view.d.ts +1 -1
  52. package/dist/types/components/rich-text/RichText.client.d.ts +1 -1
  53. package/dist/types/components/rich-text/RichText.d.ts +1 -0
  54. package/dist/types/components/rich-text/RichText.lazy.d.ts +1 -0
  55. package/dist/types/components/rich-text/RichText.model.d.ts +1 -0
  56. package/dist/types/helpers/validations.d.ts +2 -2
  57. package/dist/types/index.d.ts +1 -0
  58. package/package.json +7 -1
@@ -0,0 +1,253 @@
1
+ /* stylelint-disable */
2
+ /**
3
+ * Calculates a rem-based value by a given pixel size.
4
+ */
5
+ /* stylelint-disable */
6
+ /**
7
+ * Applies flex-column and gap.
8
+ */
9
+ /*
10
+ As example (light, primary)
11
+ See defined modes in designsystem/config/gradients
12
+ */
13
+ /**
14
+ * Mixin that renders a media query that target screens that are larger than the
15
+ * given size.
16
+ */
17
+ /**
18
+ * Mixin that renders a media query that target screens that are smaller than the
19
+ * given size.
20
+ */
21
+ /**
22
+ * Mixin that renders a media query that target screens in between the given range.
23
+ */
24
+ /**
25
+ * Mixin that renders a media query that target screens that have height larger than the
26
+ * given size.
27
+ */
28
+ /**
29
+ * Mixin that renders a media query that target screens that have height smaller than the
30
+ * given size.
31
+ */
32
+ /* stylelint-disable */
33
+ /* M3/Elevation Light/1 */
34
+ /* M3/Elevation Light/2 */
35
+ /* M3/Elevation/5 */
36
+ /* M3/Elevation/1 Text */
37
+ /* Inner elevations */
38
+ /* stylelint-disable */
39
+ /**
40
+ * Visually hides an element but not removes them for screen readers.
41
+ */
42
+ /**
43
+ * The inverse of the `hidden` helper to reset a previously hidden element to be
44
+ * visible for users.
45
+ */
46
+ /**
47
+ * Creates a selector for :hover effects depending on the current user input
48
+ * device. If the input device is a mouse, this hover effect will appear.
49
+ * Keyboard and touch inputs are ignored.
50
+ *
51
+ * Example usage:
52
+ * .link {
53
+ * color: blue;
54
+ *
55
+ * @include when-hovered() {
56
+ * color: green;
57
+ * }
58
+ * }
59
+ */
60
+ /**
61
+ * Creates a selector for :active effects depending on the current user input
62
+ * device. The state applies when the input device is a mouse or keyboard. Touch
63
+ * devices will not show a pressed state.
64
+ *
65
+ * Example usage:
66
+ * .link {
67
+ * box-shadow: none;
68
+ *
69
+ * @include when-pressed() {
70
+ * box-shadow: inset 0 2px 4px grey;
71
+ * }
72
+ * }
73
+ */
74
+ /**
75
+ * Creates a selector for :focus effects depending on the current user input
76
+ * device. When the user navigates using a keyboard, the focus effect defined in
77
+ * here is applied. For other input devices they don't show up.
78
+ *
79
+ * Example usage:
80
+ * .link {
81
+ * text-decoration: none;
82
+ *
83
+ * @include when-focused() {
84
+ * text-decoration: underline;
85
+ * }
86
+ * }
87
+ */
88
+ /**
89
+ * Creates a selector for :focus-within effects depending on the current user
90
+ * input device. When the user navigates using a keyboard, the focus effect
91
+ * defined in here is applied. For other input devices they don't show up.
92
+ *
93
+ * Example usage:
94
+ * .link {
95
+ * img {
96
+ * opacity: 0.75;
97
+ *
98
+ * @include when-focused-within() {
99
+ * opacity: 1;
100
+ * }
101
+ * }
102
+ * }
103
+ */
104
+ /**
105
+ * Wrapper for media query "prefers-reduced-motion".
106
+ */
107
+ /**
108
+ * This helper hides the outline but still makes it visible for
109
+ * Windows high-contrast users. Use this instead of `outline: 0;`.
110
+ */
111
+ /**
112
+ * This helper hides the outline but still makes it visible for
113
+ * Windows high-contrast users. Use this instead of `outline: 0;`.
114
+ */
115
+ /**
116
+ * Renders an alternative, but application consistent focus-ring.
117
+ */
118
+ /**
119
+ * Specifies the outer layout for all contents across breakpoints. Apply this
120
+ * mixin to the container element, to center the contents on the screen within
121
+ * the layout offsets.
122
+ */
123
+ /**
124
+ * This mixin specifies basic text-styles for components that render a richtext
125
+ * content.
126
+ */
127
+ .prokodo-RTE {
128
+ display: flex;
129
+ flex-direction: column;
130
+ width: 100%;
131
+ }
132
+ .prokodo-RTE__surface {
133
+ position: relative;
134
+ width: calc(100% - 4px);
135
+ padding: 0;
136
+ overflow: hidden;
137
+ background-color: var(--color-primary-40);
138
+ }
139
+ .prokodo-RTE__surface::after {
140
+ content: none;
141
+ }
142
+ .prokodo-RTE__toolbar {
143
+ border: none !important;
144
+ background-color: var(--color-primary-50);
145
+ }
146
+ .prokodo-RTE__toolbar__icon__part__stroke, .prokodo-RTE__toolbar__icon__part__stroke__miter {
147
+ stroke: var(--color-grey-900) !important;
148
+ opacity: 0.7;
149
+ }
150
+ .prokodo-RTE__toolbar__icon__part__fill {
151
+ fill: var(--color-grey-900) !important;
152
+ opacity: 0.7;
153
+ }
154
+ .prokodo-RTE__resize {
155
+ position: absolute;
156
+ right: 0.5rem;
157
+ bottom: 0.5rem;
158
+ width: 18px;
159
+ height: 18px;
160
+ padding: 0;
161
+ border: none;
162
+ background: transparent;
163
+ color: var(--color-grey-900);
164
+ cursor: ns-resize;
165
+ opacity: 0.55;
166
+ }
167
+ .prokodo-RTE__mount {
168
+ position: relative;
169
+ height: 200px;
170
+ border: none;
171
+ background: transparent;
172
+ width: 100%;
173
+ border: none !important;
174
+ }
175
+ .prokodo-RTE__mount--disabled {
176
+ cursor: not-allowed;
177
+ opacity: 0.85;
178
+ }
179
+ .prokodo-RTE__tooltip {
180
+ max-width: calc(100% - 0.75rem - 0.75rem);
181
+ box-sizing: border-box;
182
+ border-radius: 14px;
183
+ overflow: hidden;
184
+ }
185
+ .prokodo-RTE__editor {
186
+ height: 100%;
187
+ padding: 0.75rem;
188
+ outline: none;
189
+ overflow-y: auto;
190
+ font-weight: 400;
191
+ font-size: 1.125rem;
192
+ font-family: var(--font-secondary), -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
193
+ font-style: normal;
194
+ line-height: 1.55;
195
+ letter-spacing: 0.03em;
196
+ text-transform: none;
197
+ text-align: left;
198
+ text-decoration: none;
199
+ }
200
+ @media screen and (min-width: 480px) {
201
+ .prokodo-RTE__editor {
202
+ font-size: 1rem;
203
+ }
204
+ }
205
+ @media screen and (min-width: 960px) {
206
+ .prokodo-RTE__editor {
207
+ font-size: 1rem;
208
+ }
209
+ }
210
+ .prokodo-RTE__editor p {
211
+ margin: 0 0 0.5rem 0;
212
+ }
213
+ .prokodo-RTE__editor p:last-child {
214
+ margin-bottom: 0;
215
+ }
216
+ .prokodo-RTE__editor ul,
217
+ .prokodo-RTE__editor ol {
218
+ margin: 0 0 0.5rem 1.25rem;
219
+ padding: 0;
220
+ }
221
+ .prokodo-RTE__editor pre {
222
+ margin: 0.5rem 0;
223
+ padding: 0.5rem;
224
+ border-radius: 14px;
225
+ overflow: auto;
226
+ background: rgba(0, 0, 0, 0.06);
227
+ }
228
+ .prokodo-RTE__editor code {
229
+ background: rgba(0, 0, 0, 0.06);
230
+ padding: 0 6px;
231
+ border-radius: 8px;
232
+ }
233
+ .prokodo-RTE__editor img {
234
+ max-width: 100%;
235
+ height: auto;
236
+ border-radius: 14px;
237
+ display: block;
238
+ margin: 0.5rem 0;
239
+ }
240
+ .prokodo-RTE--disabled {
241
+ opacity: 0.9;
242
+ }
243
+ .prokodo-RTE--readonly {
244
+ opacity: 0.95;
245
+ }
246
+ .prokodo-RTE__hidden {
247
+ position: absolute;
248
+ top: auto;
249
+ left: -99999px;
250
+ width: 0;
251
+ height: 0;
252
+ text-indent: -99999px;
253
+ }
@@ -0,0 +1,19 @@
1
+ const styles = {
2
+ "prokodo-RTE": "prokodo-RTE",
3
+ "prokodo-RTE__surface": "prokodo-RTE__surface",
4
+ "prokodo-RTE__toolbar": "prokodo-RTE__toolbar",
5
+ "prokodo-RTE__toolbar__icon__part__stroke": "prokodo-RTE__toolbar__icon__part__stroke",
6
+ "prokodo-RTE__toolbar__icon__part__stroke__miter": "prokodo-RTE__toolbar__icon__part__stroke__miter",
7
+ "prokodo-RTE__toolbar__icon__part__fill": "prokodo-RTE__toolbar__icon__part__fill",
8
+ "prokodo-RTE__resize": "prokodo-RTE__resize",
9
+ "prokodo-RTE__mount": "prokodo-RTE__mount",
10
+ "prokodo-RTE__mount--disabled": "prokodo-RTE__mount--disabled",
11
+ "prokodo-RTE__tooltip": "prokodo-RTE__tooltip",
12
+ "prokodo-RTE__editor": "prokodo-RTE__editor",
13
+ "prokodo-RTE--disabled": "prokodo-RTE--disabled",
14
+ "prokodo-RTE--readonly": "prokodo-RTE--readonly",
15
+ "prokodo-RTE__hidden": "prokodo-RTE__hidden"
16
+ };
17
+ export {
18
+ styles as default
19
+ };
@@ -0,0 +1,19 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { isString } from "../../helpers/validations.js";
5
+ import { RTEView } from "./RTE.view.js";
6
+ function stripHtml(html) {
7
+ if (!isString(html)) return "";
8
+ return html.replace(/[<>]/g, "").replace(/\s+/g, " ").trim();
9
+ }
10
+ __name(stripHtml, "stripHtml");
11
+ function RTEServer(props) {
12
+ const { value, onChange, ...rest } = props;
13
+ const v = stripHtml(value);
14
+ return /* @__PURE__ */ jsx(RTEView, { ...rest, readOnly: true, htmlValue: v, showResize: false, value: v });
15
+ }
16
+ __name(RTEServer, "RTEServer");
17
+ export {
18
+ RTEServer as default
19
+ };
@@ -0,0 +1,21 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ let injected = false;
4
+ function ensureQuillSnowStyles(cssText) {
5
+ if (injected) return;
6
+ if (typeof document === "undefined") return;
7
+ const id = "rte-quill-snow";
8
+ if (document.getElementById(id)) {
9
+ injected = true;
10
+ return;
11
+ }
12
+ const style = document.createElement("style");
13
+ style.id = id;
14
+ style.textContent = cssText;
15
+ document.head.appendChild(style);
16
+ injected = true;
17
+ }
18
+ __name(ensureQuillSnowStyles, "ensureQuillSnowStyles");
19
+ export {
20
+ ensureQuillSnowStyles
21
+ };
@@ -0,0 +1,4 @@
1
+ import cssText from "../../node_modules/.pnpm/quill@2.0.3/node_modules/quill/dist/quill.snow.css.js";
2
+ export {
3
+ cssText as default
4
+ };
@@ -0,0 +1,51 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { create } from "../../helpers/bem.js";
4
+ import { isString } from "../../helpers/validations.js";
5
+ import styles from "./RTE.module.scss.js";
6
+ const bem = create(styles, "RTE");
7
+ function addClasses(el, className) {
8
+ if (!el) return;
9
+ className.split(/\s+/).map((s) => s.trim()).filter(Boolean).forEach((c) => el.classList.add(c));
10
+ }
11
+ __name(addClasses, "addClasses");
12
+ function decorateToolbar(toolbarEl) {
13
+ toolbarEl.querySelectorAll("button").forEach((btn) => {
14
+ addClasses(btn, bem("toolbar__button"));
15
+ const ql = Array.from(btn.classList).find((c) => c.startsWith("ql-"));
16
+ if (isString(ql))
17
+ addClasses(btn, bem("toolbar__button", { [ql.slice(3)]: true }));
18
+ });
19
+ toolbarEl.querySelectorAll("button svg").forEach((svg) => {
20
+ addClasses(svg, bem("toolbar__icon"));
21
+ });
22
+ toolbarEl.querySelectorAll("button svg *").forEach((node) => {
23
+ const el = node;
24
+ addClasses(el, bem("toolbar__icon__part"));
25
+ if (el.classList.contains("ql-fill"))
26
+ addClasses(el, bem("toolbar__icon__part__fill"));
27
+ if (el.classList.contains("ql-stroke") || el.classList.contains("ql-stroke-miter")) {
28
+ addClasses(el, bem("toolbar__icon__part__stroke"));
29
+ }
30
+ if (el.classList.contains("ql-stroke-miter")) {
31
+ addClasses(el, bem("toolbar__icon__part__stroke__miter"));
32
+ }
33
+ });
34
+ }
35
+ __name(decorateToolbar, "decorateToolbar");
36
+ function cleanupQuill(surfaceEl, mountEl) {
37
+ if (!surfaceEl || !mountEl) return;
38
+ surfaceEl.querySelectorAll(":scope > .ql-toolbar").forEach((el) => el.remove());
39
+ surfaceEl.querySelectorAll(".ql-tooltip").forEach((el) => el.remove());
40
+ surfaceEl.querySelectorAll(".ql-container").forEach((el) => {
41
+ if (el !== mountEl) el.remove();
42
+ });
43
+ mountEl.innerHTML = "";
44
+ }
45
+ __name(cleanupQuill, "cleanupQuill");
46
+ export {
47
+ addClasses,
48
+ bem,
49
+ cleanupQuill,
50
+ decorateToolbar
51
+ };
@@ -0,0 +1,107 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { create } from "../../helpers/bem.js";
5
+ import styles from "./RTE.module.scss.js";
6
+ import { Input } from "../input/Input.js";
7
+ import { Icon } from "../icon/Icon.js";
8
+ const bem = create(styles, "RTE");
9
+ function RTEView({
10
+ name,
11
+ value,
12
+ disabled,
13
+ readOnly,
14
+ required,
15
+ placeholder,
16
+ maxLength,
17
+ errorText,
18
+ htmlValue,
19
+ surfaceRef,
20
+ mountRef,
21
+ showResize = false,
22
+ onStartResize,
23
+ onChange,
24
+ onValidate,
25
+ errorTranslations,
26
+ rteToolbar,
27
+ rteOptions,
28
+ ...rest
29
+ }) {
30
+ const mirrorValue = String(htmlValue ?? value ?? "");
31
+ return /* @__PURE__ */ jsx(
32
+ Input,
33
+ {
34
+ ...rest,
35
+ multiline: true,
36
+ disabled,
37
+ errorText,
38
+ maxLength,
39
+ name,
40
+ placeholder,
41
+ readOnly,
42
+ required,
43
+ value: mirrorValue,
44
+ renderNode: /* @__PURE__ */ __name(({ id, describedBy, isError, nodeClassName }) => /* @__PURE__ */ jsxs(
45
+ "div",
46
+ {
47
+ className: bem(void 0, {
48
+ disabled: Boolean(disabled),
49
+ readonly: Boolean(readOnly)
50
+ }),
51
+ children: [
52
+ /* @__PURE__ */ jsxs(
53
+ "div",
54
+ {
55
+ ref: surfaceRef,
56
+ className: bem(
57
+ "surface",
58
+ { error: Boolean(isError) },
59
+ nodeClassName
60
+ ),
61
+ children: [
62
+ /* @__PURE__ */ jsx(
63
+ "div",
64
+ {
65
+ ref: mountRef,
66
+ "aria-describedby": describedBy,
67
+ "aria-invalid": isError,
68
+ "aria-required": Boolean(required),
69
+ className: bem("mount", { disabled: Boolean(disabled) }),
70
+ id
71
+ }
72
+ ),
73
+ showResize && !Boolean(disabled) && !Boolean(readOnly) && /* @__PURE__ */ jsx(
74
+ "button",
75
+ {
76
+ "aria-label": "Resize editor height",
77
+ className: bem("resize"),
78
+ type: "button",
79
+ onMouseDown: onStartResize,
80
+ children: /* @__PURE__ */ jsx(Icon, { name: "ResizeFieldIcon", size: "sm" })
81
+ }
82
+ )
83
+ ]
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ "textarea",
88
+ {
89
+ readOnly: true,
90
+ "aria-hidden": "true",
91
+ className: bem("hidden"),
92
+ name,
93
+ tabIndex: -1,
94
+ value: mirrorValue
95
+ }
96
+ )
97
+ ]
98
+ }
99
+ ), "renderNode"),
100
+ onChange: void 0
101
+ }
102
+ );
103
+ }
104
+ __name(RTEView, "RTEView");
105
+ export {
106
+ RTEView
107
+ };
@@ -0,0 +1,4 @@
1
+ import { RTE } from "./RTE.js";
2
+ export {
3
+ RTE
4
+ };
@@ -131,7 +131,7 @@
131
131
  align-items: center;
132
132
  border-radius: 200px;
133
133
  overflow: hidden;
134
- background-color: var(--color-grey-100);
134
+ background-color: transparent;
135
135
  }
136
136
  .prokodo-Avatar--primary {
137
137
  background-color: var(--color-primary-500);
@@ -175,8 +175,6 @@
175
175
  height: 100px;
176
176
  }
177
177
  .prokodo-Avatar__image {
178
- width: 100%;
179
- height: 100%;
180
178
  display: block;
181
179
  -o-object-fit: cover;
182
180
  object-fit: cover;
@@ -131,7 +131,7 @@
131
131
  align-items: center;
132
132
  border-radius: 200px;
133
133
  overflow: hidden;
134
- background-color: var(--color-grey-100);
134
+ background-color: transparent;
135
135
  }
136
136
  .prokodo-Avatar--primary {
137
137
  background-color: var(--color-primary-500);
@@ -175,8 +175,6 @@
175
175
  height: 100px;
176
176
  }
177
177
  .prokodo-Avatar__image {
178
- width: 100%;
179
- height: 100%;
180
178
  display: block;
181
179
  -o-object-fit: cover;
182
180
  object-fit: cover;
@@ -2,6 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { create } from "../../helpers/bem.js";
5
+ import { isNumber } from "../../helpers/validations.js";
5
6
  import styles from "./Avatar.module.scss.js";
6
7
  import { Icon, getIconSize } from "../icon/Icon.js";
7
8
  import { Link } from "../link/Link.js";
@@ -9,7 +10,7 @@ import { Image } from "../image/Image.js";
9
10
  const bem = create(styles, "Avatar");
10
11
  function AvatarView({
11
12
  className,
12
- variant = "primary",
13
+ variant = "inherit",
13
14
  size = "sm",
14
15
  image,
15
16
  redirect,
@@ -20,24 +21,36 @@ function AvatarView({
20
21
  { [variant]: true, [`has-size-${size}`]: true },
21
22
  className
22
23
  );
23
- const defaultSide = getIconSize(size);
24
- const inner = /* @__PURE__ */ jsx("div", { ...rest, className: rootClass, tabIndex: -1, children: image ? /* @__PURE__ */ jsx(
25
- Image,
24
+ const iconSize = getIconSize(size);
25
+ const inner = /* @__PURE__ */ jsx(
26
+ "div",
26
27
  {
27
- fill: true,
28
- ...image,
29
- className: bem("image", void 0, image.className),
30
- tabIndex: 0
28
+ ...rest,
29
+ className: rootClass,
30
+ tabIndex: -1,
31
+ style: isNumber(size) ? {
32
+ width: size,
33
+ height: size
34
+ } : void 0,
35
+ children: image ? /* @__PURE__ */ jsx(
36
+ Image,
37
+ {
38
+ fill: true,
39
+ ...image,
40
+ className: bem("image", void 0, image.className),
41
+ tabIndex: 0
42
+ }
43
+ ) : /* @__PURE__ */ jsx(
44
+ Icon,
45
+ {
46
+ className: bem("icon", { [variant]: true }),
47
+ color: !["inherit", "white"].includes(variant) ? "white" : void 0,
48
+ name: "UserIcon",
49
+ size: iconSize
50
+ }
51
+ )
31
52
  }
32
- ) : /* @__PURE__ */ jsx(
33
- Icon,
34
- {
35
- className: bem("icon", { [variant]: true }),
36
- color: !["inherit", "white"].includes(variant) ? "white" : void 0,
37
- name: "UserIcon",
38
- size: defaultSide
39
- }
40
- ) });
53
+ );
41
54
  return redirect ? /* @__PURE__ */ jsx(
42
55
  Link,
43
56
  {
@@ -35,7 +35,17 @@ function BaseLinkClient({
35
35
  }
36
36
  );
37
37
  }
38
- return /* @__PURE__ */ jsx(LinkComponent, { ...rest, href, style: linkStyle, tabIndex, children });
38
+ return /* @__PURE__ */ jsx(
39
+ LinkComponent,
40
+ {
41
+ ...rest,
42
+ href,
43
+ rel: computedRel,
44
+ style: linkStyle,
45
+ tabIndex,
46
+ children
47
+ }
48
+ );
39
49
  }
40
50
  __name(BaseLinkClient, "BaseLinkClient");
41
51
  export {
@@ -20,6 +20,7 @@ const ButtonView = /* @__PURE__ */ __name(({
20
20
  iconProps = {},
21
21
  isIconOnly,
22
22
  LinkComponent,
23
+ loading,
23
24
  ...rest
24
25
  }) => {
25
26
  const isOutlined = variant === "outlined";
@@ -183,7 +183,7 @@ html[data-theme=dark] .prokodo-Card__background {
183
183
  align-items: center;
184
184
  }
185
185
  .prokodo-Card__link:hover {
186
- text-decoration: none;
186
+ text-decoration: none !important;
187
187
  }
188
188
  .prokodo-Card__content {
189
189
  position: relative;
@@ -183,7 +183,7 @@ html[data-theme=dark] .prokodo-Card__background {
183
183
  align-items: center;
184
184
  }
185
185
  .prokodo-Card__link:hover {
186
- text-decoration: none;
186
+ text-decoration: none !important;
187
187
  }
188
188
  .prokodo-Card__content {
189
189
  position: relative;
@@ -132,6 +132,7 @@
132
132
  -webkit-user-select: none;
133
133
  -moz-user-select: none;
134
134
  user-select: none;
135
+ gap: 0.5rem;
135
136
  transition: background-color 0.3s ease, color 0.3s ease;
136
137
  border-color: var(--color-grey-500);
137
138
  color: var(--color-black);
@@ -177,7 +178,7 @@
177
178
  }
178
179
  .prokodo-Chip--filled--info {
179
180
  background-color: var(--color-grey-300);
180
- color: var(--color-white);
181
+ color: var(--color-grey-700);
181
182
  }
182
183
  .prokodo-Chip--filled--success {
183
184
  background-color: var(--color-success);
@@ -240,7 +241,6 @@
240
241
  cursor: pointer;
241
242
  padding: 0;
242
243
  line-height: 1;
243
- margin-left: 8px;
244
244
  transition: color 0.3s ease;
245
245
  background-color: var(--color-grey-50);
246
246
  }
@@ -132,6 +132,7 @@
132
132
  -webkit-user-select: none;
133
133
  -moz-user-select: none;
134
134
  user-select: none;
135
+ gap: 0.5rem;
135
136
  transition: background-color 0.3s ease, color 0.3s ease;
136
137
  border-color: var(--color-grey-500);
137
138
  color: var(--color-black);
@@ -177,7 +178,7 @@
177
178
  }
178
179
  .prokodo-Chip--filled--info {
179
180
  background-color: var(--color-grey-300);
180
- color: var(--color-white);
181
+ color: var(--color-grey-700);
181
182
  }
182
183
  .prokodo-Chip--filled--success {
183
184
  background-color: var(--color-success);
@@ -240,7 +241,6 @@
240
241
  cursor: pointer;
241
242
  padding: 0;
242
243
  line-height: 1;
243
- margin-left: 8px;
244
244
  transition: color 0.3s ease;
245
245
  background-color: var(--color-grey-50);
246
246
  }