@memobit/libs 3.3.0 → 3.4.1
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/components/NotificationPanel/NotificationPanel.css +1 -1
- package/dist/components/NotificationPanel/NotificationPanel2.js +36 -29
- package/dist/components/Toolbar/Toolbar.css +1 -1
- package/dist/helpers/VersionInfo.js +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/version.js +1 -1
- package/dist/version.json +4 -4
- package/package.json +121 -121
|
@@ -1 +1 @@
|
|
|
1
|
-
.NotificationPanel{position:relative}.NotificationPanel__button{align-items:center;gap:var(--spacing-8);border:1px solid var(--border-color);border-radius:var(--radius);background:var(--card-background-color);color:var(--body-title-color);padding:var(--spacing-8) var(--spacing-12);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);display:inline-flex}.NotificationPanel__button--critical{border-color:color-mix(in srgb, var(--button-danger-border-color) 55%, var(--border-color));background:color-mix(in srgb, var(--button-danger-border-color) 12%, transparent)}.NotificationPanel__badge{min-width:var(--spacing-20);height:var(--spacing-20);border-radius:var(--radius-full);font-size:var(--font-size-xs);background:var(--button-danger-background-color);color:var(--button-danger-color);padding:0 var(--spacing-4);justify-content:center;align-items:center;display:inline-flex}.NotificationPanel__backdrop{z-index:9998;position:fixed;inset:0}.NotificationPanel__panel{z-index:9999;background:var(--card-background-color);border:1px solid var(--border-color);border-radius:var(--radius);width:min(420px,80vw);box-shadow:var(--card-box-shadow);padding:var(--spacing-12);position:fixed;top:0;left:0}.NotificationPanel__title{margin:0 0 var(--spacing-8) 0;font-size:var(--font-size-sm);color:var(--body-title-color);font-weight:var(--font-weight-medium)}.NotificationPanel__list{gap:var(--spacing-4);flex-direction:column;max-height:260px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.NotificationPanel__list::-webkit-scrollbar{width:var(--scrollbar-size)}.NotificationPanel__list::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.NotificationPanel__list::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:var(--scrollbar-radius)}.NotificationPanel__list::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.NotificationPanel__list{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color)}.NotificationPanel__item{font-size:var(--font-size-sm);color:var(--body-color);padding:var(--spacing-8);border-radius:var(--radius-sm);border:1px solid #0000}.NotificationPanel__item--critical{border-color:color-mix(in srgb, var(--button-danger-border-color) 50%, var(--border-color));background:color-mix(in srgb, var(--button-danger-border-color) 10%, transparent)}.NotificationPanel__empty{color:var(--body-sub-title-color);font-size:var(--font-size-sm);margin:0}
|
|
1
|
+
.NotificationPanel{position:relative}.NotificationPanel__button{align-items:center;gap:var(--spacing-8);border:1px solid var(--border-color);border-radius:var(--radius);background:var(--card-background-color);color:var(--body-title-color);padding:var(--spacing-8) var(--spacing-12);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);display:inline-flex}.NotificationPanel__button--critical{border-color:color-mix(in srgb, var(--button-danger-border-color) 55%, var(--border-color));background:color-mix(in srgb, var(--button-danger-border-color) 12%, transparent)}.NotificationPanel__badge{min-width:var(--spacing-20);height:var(--spacing-20);border-radius:var(--radius-full);font-size:var(--font-size-xs);background:var(--button-danger-background-color);color:var(--button-danger-color);padding:0 var(--spacing-4);justify-content:center;align-items:center;display:inline-flex}.NotificationPanel__backdrop{z-index:9998;position:fixed;inset:0}.NotificationPanel__panel{z-index:9999;background:var(--card-background-color);border:1px solid var(--border-color);border-radius:var(--radius);width:min(420px,80vw);box-shadow:var(--card-box-shadow);padding:var(--spacing-12);position:fixed;top:0;left:0}.NotificationPanel__title{margin:0 0 var(--spacing-8) 0;font-size:var(--font-size-sm);color:var(--body-title-color);font-weight:var(--font-weight-medium)}.NotificationPanel__list{gap:var(--spacing-4);flex-direction:column;max-height:260px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.NotificationPanel__list::-webkit-scrollbar{width:var(--scrollbar-size)}.NotificationPanel__list::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.NotificationPanel__list::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:var(--scrollbar-radius)}.NotificationPanel__list::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.NotificationPanel__list{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color)}.NotificationPanel__item{font-size:var(--font-size-sm);color:var(--body-color);padding:var(--spacing-8);border-radius:var(--radius-sm);border:1px solid #0000}.NotificationPanel__item--critical{border-color:color-mix(in srgb, var(--button-danger-border-color) 50%, var(--border-color));background:color-mix(in srgb, var(--button-danger-border-color) 10%, transparent)}.NotificationPanel__item--clickable{cursor:pointer;transition:background-color var(--transition-fast)}.NotificationPanel__item--clickable:hover{background:color-mix(in srgb, var(--body-accent-color) 14%, transparent)}.NotificationPanel__empty{color:var(--body-sub-title-color);font-size:var(--font-size-sm);margin:0}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import './NotificationPanel.css';
|
|
2
2
|
/* empty css */
|
|
3
|
-
import { useEffect as
|
|
4
|
-
import { Fragment as
|
|
5
|
-
import { createPortal as
|
|
6
|
-
var
|
|
7
|
-
const [o,
|
|
8
|
-
return
|
|
9
|
-
if (!o || !
|
|
3
|
+
import { useEffect as N, useRef as _, useState as g } from "react";
|
|
4
|
+
import { Fragment as w, jsx as n, jsxs as u } from "react/jsx-runtime";
|
|
5
|
+
import { createPortal as E } from "react-dom";
|
|
6
|
+
var B = ({ items: i, buttonLabel: y = "Alerts", panelTitle: P = "Notifications", emptyMessage: v = "No active notifications.", onItemClick: m }) => {
|
|
7
|
+
const [o, s] = g(!1), [b, h] = g({ opacity: 0 }), f = _(null), d = _(null), R = i.some((t) => t.severity === "critical");
|
|
8
|
+
return N(() => {
|
|
9
|
+
if (!o || !f.current || !d.current) return;
|
|
10
10
|
const t = requestAnimationFrame(() => {
|
|
11
|
-
if (!
|
|
12
|
-
const
|
|
13
|
-
let l =
|
|
14
|
-
r < e && (r = e), r +
|
|
11
|
+
if (!f.current || !d.current) return;
|
|
12
|
+
const a = f.current.getBoundingClientRect(), c = d.current.getBoundingClientRect(), p = document.documentElement.clientWidth, k = document.documentElement.clientHeight, e = 8;
|
|
13
|
+
let l = a.bottom + e, r = a.right - c.width;
|
|
14
|
+
r < e && (r = e), r + c.width > p - e && (r = p - c.width - e), l + c.height > k - e && (l = a.top - c.height - e), l < e && (l = e), h({
|
|
15
15
|
position: "fixed",
|
|
16
16
|
top: l,
|
|
17
17
|
left: r,
|
|
@@ -19,42 +19,49 @@ var S = ({ items: i, buttonLabel: _ = "Alerts", panelTitle: y = "Notifications",
|
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
return () => cancelAnimationFrame(t);
|
|
22
|
-
}, [o]),
|
|
22
|
+
}, [o]), N(() => {
|
|
23
23
|
if (!o) return;
|
|
24
|
-
const t = (
|
|
25
|
-
|
|
24
|
+
const t = (a) => {
|
|
25
|
+
a.key === "Escape" && s(!1);
|
|
26
26
|
};
|
|
27
27
|
return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
|
|
28
|
-
}, [o]), /* @__PURE__ */
|
|
28
|
+
}, [o]), /* @__PURE__ */ u("div", {
|
|
29
29
|
className: "NotificationPanel",
|
|
30
|
-
children: [/* @__PURE__ */
|
|
31
|
-
ref:
|
|
30
|
+
children: [/* @__PURE__ */ u("button", {
|
|
31
|
+
ref: f,
|
|
32
32
|
type: "button",
|
|
33
|
-
className: `NotificationPanel__button${
|
|
33
|
+
className: `NotificationPanel__button${R ? " NotificationPanel__button--critical" : ""}`,
|
|
34
34
|
onClick: () => {
|
|
35
|
-
|
|
35
|
+
h({ opacity: 0 }), s((t) => !t);
|
|
36
36
|
},
|
|
37
|
-
children: [
|
|
37
|
+
children: [y, i.length > 0 && /* @__PURE__ */ n("span", {
|
|
38
38
|
className: "NotificationPanel__badge",
|
|
39
39
|
children: i.length
|
|
40
40
|
})]
|
|
41
|
-
}), o &&
|
|
41
|
+
}), o && E(/* @__PURE__ */ u(w, { children: [/* @__PURE__ */ n("div", {
|
|
42
42
|
className: "NotificationPanel__backdrop",
|
|
43
|
-
onClick: () =>
|
|
44
|
-
}), /* @__PURE__ */
|
|
45
|
-
ref:
|
|
43
|
+
onClick: () => s(!1)
|
|
44
|
+
}), /* @__PURE__ */ u("div", {
|
|
45
|
+
ref: d,
|
|
46
46
|
className: "NotificationPanel__panel",
|
|
47
|
-
style:
|
|
47
|
+
style: b,
|
|
48
48
|
children: [/* @__PURE__ */ n("h4", {
|
|
49
49
|
className: "NotificationPanel__title",
|
|
50
|
-
children:
|
|
50
|
+
children: P
|
|
51
51
|
}), i.length === 0 ? /* @__PURE__ */ n("p", {
|
|
52
52
|
className: "NotificationPanel__empty",
|
|
53
|
-
children:
|
|
53
|
+
children: v
|
|
54
54
|
}) : /* @__PURE__ */ n("ul", {
|
|
55
55
|
className: "NotificationPanel__list",
|
|
56
56
|
children: i.map((t) => /* @__PURE__ */ n("li", {
|
|
57
|
-
className:
|
|
57
|
+
className: [
|
|
58
|
+
"NotificationPanel__item",
|
|
59
|
+
t.severity === "critical" ? "NotificationPanel__item--critical" : "",
|
|
60
|
+
m ? "NotificationPanel__item--clickable" : ""
|
|
61
|
+
].filter(Boolean).join(" "),
|
|
62
|
+
onClick: m ? () => {
|
|
63
|
+
s(!1), m(t);
|
|
64
|
+
} : void 0,
|
|
58
65
|
children: t.message
|
|
59
66
|
}, t.id))
|
|
60
67
|
})]
|
|
@@ -62,5 +69,5 @@ var S = ({ items: i, buttonLabel: _ = "Alerts", panelTitle: y = "Notifications",
|
|
|
62
69
|
});
|
|
63
70
|
};
|
|
64
71
|
export {
|
|
65
|
-
|
|
72
|
+
B as NotificationPanel
|
|
66
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.memobit-toolbar{background-color:var(--header-background-color);border-bottom:var(--spacing-1) solid var(--header-border-bottom-color);border-radius:var(--spacing-16);align-items:flex-end;gap:var(--spacing-16);padding:var(--spacing-16);display:flex}.memobit-toolbar__control-panel-toggle,.memobit-toolbar__actions,.memobit-toolbar__sort{flex:none}.memobit-toolbar__control-panel-toggle-count{min-width:var(--spacing-20);height:var(--spacing-20);padding:0 var(--spacing-6);background:var(--body-accent-color);color:var(--button-info-color);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.memobit-toolbar__heading{align-items:center;gap:var(--spacing-8);flex:0 auto;align-self:center;min-width:0;display:flex}.memobit-toolbar__heading--clickable{cursor:pointer}.memobit-toolbar__heading-icon{flex:none;align-items:center;display:inline-flex}.memobit-toolbar__heading-copy{gap:var(--spacing-2);flex-direction:column;min-width:0;display:flex}.memobit-toolbar__heading-title{color:var(--body-title-color);font-family:var(--font-family-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);line-height:1.2}.memobit-toolbar__heading-description{color:var(--body-color-muted);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;line-height:1.3}.memobit-toolbar__content{align-items:flex-end;gap:var(--spacing-16);flex:auto;min-width:0;display:flex}.memobit-toolbar__search{flex:280px;min-width:180px}.memobit-toolbar__search-input,.memobit-toolbar__search-input .input-text{width:100%}.memobit-toolbar__sort{min-width:220px}.memobit-toolbar__custom{align-items:flex-end;gap:var(--spacing-16);flex:auto;min-width:0;display:flex}.memobit-toolbar__actions{align-items:center;gap:var(--spacing-8);margin-left:auto;display:flex}.memobit-toolbar--no-card{background-color:#0000;border-bottom:0;border-radius:0;padding:0}@media (width<=768px){.memobit-toolbar{align-items:center;gap:var(--spacing-8);padding:var(--spacing-8);flex-wrap:wrap}.memobit-toolbar__control-panel-toggle{order:1}.memobit-toolbar__heading{flex:auto;order:1}.memobit-toolbar__actions{order:2;margin-left:auto}.memobit-toolbar__content{align-items:stretch;gap:var(--spacing-8);flex-direction:column;flex:100%;order:3;width:100%}.memobit-toolbar__search,.memobit-toolbar__sort,.memobit-toolbar__custom{flex:auto;width:100%;min-width:0}.memobit-toolbar__custom{align-items:stretch;gap:var(--spacing-8);flex-direction:column}}
|
|
1
|
+
.memobit-toolbar{background-color:var(--header-background-color);border-bottom:var(--spacing-1) solid var(--header-border-bottom-color);border-radius:var(--spacing-16);align-items:flex-end;gap:var(--spacing-16);padding:var(--spacing-16);display:flex}.memobit-toolbar__control-panel-toggle,.memobit-toolbar__actions,.memobit-toolbar__sort{flex:none}.memobit-toolbar__control-panel-toggle-count{min-width:var(--spacing-20);height:var(--spacing-20);padding:0 var(--spacing-6);background:var(--body-accent-color);color:var(--button-info-color);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.memobit-toolbar__heading{align-items:center;gap:var(--spacing-8);flex:0 auto;align-self:center;min-width:0;display:flex}.memobit-toolbar__heading--clickable{cursor:pointer}.memobit-toolbar__heading-icon{flex:none;align-items:center;display:inline-flex}.memobit-toolbar__heading-copy{gap:var(--spacing-2);flex-direction:column;min-width:0;display:flex}.memobit-toolbar__heading-title{color:var(--body-title-color);font-family:var(--font-family-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);line-height:1.2}.memobit-toolbar__heading-description{color:var(--body-color-muted);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;line-height:1.3}.memobit-toolbar__content{align-items:flex-end;gap:var(--spacing-16);flex:auto;min-width:0;display:flex}.memobit-toolbar__search{flex:280px;min-width:180px}.memobit-toolbar__search-input,.memobit-toolbar__search-input .input-text{width:100%}.memobit-toolbar__sort{min-width:220px}.memobit-toolbar__custom{align-self:stretch;align-items:flex-end;gap:var(--spacing-16);flex:auto;min-width:0;display:flex}.memobit-toolbar__custom>.NotificationPanel,.memobit-toolbar__custom>.NotificationPanel>.NotificationPanel__button{height:100%}.memobit-toolbar__actions{align-items:center;gap:var(--spacing-8);margin-left:auto;display:flex}.memobit-toolbar--no-card{background-color:#0000;border-bottom:0;border-radius:0;padding:0}@media (width<=768px){.memobit-toolbar{align-items:center;gap:var(--spacing-8);padding:var(--spacing-8);flex-wrap:wrap}.memobit-toolbar__control-panel-toggle{order:1}.memobit-toolbar__heading{flex:auto;order:1}.memobit-toolbar__actions{order:2;margin-left:auto}.memobit-toolbar__content{align-items:stretch;gap:var(--spacing-8);flex-direction:column;flex:100%;order:3;width:100%}.memobit-toolbar__search,.memobit-toolbar__sort,.memobit-toolbar__custom{flex:auto;width:100%;min-width:0}.memobit-toolbar__custom{align-items:stretch;gap:var(--spacing-8);flex-direction:column}}
|
package/dist/index.d.ts
CHANGED
|
@@ -2433,6 +2433,12 @@ declare interface NotificationPanelProps {
|
|
|
2433
2433
|
buttonLabel?: string;
|
|
2434
2434
|
panelTitle?: string;
|
|
2435
2435
|
emptyMessage?: string;
|
|
2436
|
+
/**
|
|
2437
|
+
* Makes each row a way into whatever it is warning about, and closes the panel on the
|
|
2438
|
+
* way. Without it the rows are a read-only list — fine for a reading like "battery 0%"
|
|
2439
|
+
* that has nowhere to go, wrong for an alert that names a record you want to open.
|
|
2440
|
+
*/
|
|
2441
|
+
onItemClick?: (item: NotificationPanelItem) => void;
|
|
2436
2442
|
}
|
|
2437
2443
|
|
|
2438
2444
|
declare type OutputFormat = 'html' | 'markdown';
|
package/dist/version.js
CHANGED
package/dist/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@memobit/libs",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "React component library powering the Memobit apps — 100+ components, helpers and hooks. Icons ship as @memobit/icons and themes as @memobit/themes. TypeScript-first, ESM-only, React 19.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"react",
|
|
7
|
-
"react-components",
|
|
8
|
-
"component-library",
|
|
9
|
-
"ui",
|
|
10
|
-
"ui-kit",
|
|
11
|
-
"design-system",
|
|
12
|
-
"typescript",
|
|
13
|
-
"hooks",
|
|
14
|
-
"memobit"
|
|
15
|
-
],
|
|
16
|
-
"author": "Iulian Cristea <iulianx@gmail.com>",
|
|
17
|
-
"license": "Apache-2.0",
|
|
18
|
-
"homepage": "https://react.memobit.ro/",
|
|
19
|
-
"repository": {
|
|
20
|
-
"type": "git",
|
|
21
|
-
"url": "git+https://github.com/CristeaIulian/memobit-react-library.git"
|
|
22
|
-
},
|
|
23
|
-
"bugs": {
|
|
24
|
-
"url": "https://github.com/CristeaIulian/memobit-react-library/issues"
|
|
25
|
-
},
|
|
26
|
-
"publishConfig": {
|
|
27
|
-
"access": "public"
|
|
28
|
-
},
|
|
29
|
-
"sideEffects": [
|
|
30
|
-
"**/*.css",
|
|
31
|
-
"**/*.scss"
|
|
32
|
-
],
|
|
33
|
-
"type": "module",
|
|
34
|
-
"main": "dist/index.js",
|
|
35
|
-
"module": "dist/index.js",
|
|
36
|
-
"types": "dist/index.d.ts",
|
|
37
|
-
"exports": {
|
|
38
|
-
".": {
|
|
39
|
-
"types": "./dist/index.d.ts",
|
|
40
|
-
"import": "./dist/index.js"
|
|
41
|
-
},
|
|
42
|
-
"./dist/index.css": "./dist/index.css",
|
|
43
|
-
"./mfa": {
|
|
44
|
-
"types": "./dist/mfa.d.ts",
|
|
45
|
-
"import": "./dist/mfa.js"
|
|
46
|
-
},
|
|
47
|
-
"./dist/styles/variables.scss": "./dist/styles/variables.scss",
|
|
48
|
-
"./dist/styles/base.scss": "./dist/styles/base.scss",
|
|
49
|
-
"./dist/styles/effects.scss": "./dist/styles/effects.scss",
|
|
50
|
-
"./dist/styles/highlight.scss": "./dist/styles/highlight.scss",
|
|
51
|
-
"./dist/styles/scrollbars.scss": "./dist/styles/scrollbars.scss",
|
|
52
|
-
"./dist/styles/utilities.scss": "./dist/styles/utilities.scss",
|
|
53
|
-
"./dist/styles/utility-classes.scss": "./dist/styles/utility-classes.scss",
|
|
54
|
-
"./dist/components/*": "./dist/components/*"
|
|
55
|
-
},
|
|
56
|
-
"files": [
|
|
57
|
-
"dist"
|
|
58
|
-
],
|
|
59
|
-
"scripts": {
|
|
60
|
-
"build": "vite build && npm pack",
|
|
61
|
-
"release": "npm run build && npm publish",
|
|
62
|
-
"check:npm-auth": "node scripts/check-npm-auth.mjs",
|
|
63
|
-
"ship": "npm run check:npm-auth && npm version patch && npm run release && git push --follow-tags",
|
|
64
|
-
"ship:minor": "npm run check:npm-auth && npm version minor && npm run release && git push --follow-tags",
|
|
65
|
-
"ship:major": "npm run check:npm-auth && npm version major && npm run release && git push --follow-tags",
|
|
66
|
-
"prepublishOnly": "vite build",
|
|
67
|
-
"dev": "vite build --watch",
|
|
68
|
-
"playground": "vite serve playground --config playground/vite.config.ts",
|
|
69
|
-
"lint": "eslint src --ext .ts,.tsx",
|
|
70
|
-
"lint:fix": "eslint src --ext .ts,.tsx --fix",
|
|
71
|
-
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css}\"",
|
|
72
|
-
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css}\""
|
|
73
|
-
},
|
|
74
|
-
"peerDependencies": {
|
|
75
|
-
"@memobit/icons": "^1.0.0",
|
|
76
|
-
"@memobit/themes": "^1.0.0",
|
|
77
|
-
"react": "19.2.7",
|
|
78
|
-
"react-dom": "19.2.7"
|
|
79
|
-
},
|
|
80
|
-
"devDependencies": {
|
|
81
|
-
"@eslint/js": "9.39.4",
|
|
82
|
-
"@memobit/icons": "file:../memobit-react-icons",
|
|
83
|
-
"@memobit/themes": "file:../memobit-react-themes",
|
|
84
|
-
"@microsoft/api-extractor": "7.58.8",
|
|
85
|
-
"@types/react": "19.2.14",
|
|
86
|
-
"@types/react-dom": "19.2.3",
|
|
87
|
-
"@vitejs/plugin-react": "6.0.4",
|
|
88
|
-
"esbuild": "0.28.1",
|
|
89
|
-
"eslint": "9.39.4",
|
|
90
|
-
"eslint-config-prettier": "10.1.8",
|
|
91
|
-
"eslint-plugin-import-x": "4.17.1",
|
|
92
|
-
"eslint-plugin-prettier": "5.5.5",
|
|
93
|
-
"eslint-plugin-react": "7.37.5",
|
|
94
|
-
"eslint-plugin-simple-import-sort": "13.0.0",
|
|
95
|
-
"globals": "17.6.0",
|
|
96
|
-
"prettier": "3.8.3",
|
|
97
|
-
"qrcode.react": "4.2.0",
|
|
98
|
-
"react": "19.2.7",
|
|
99
|
-
"react-dom": "19.2.7",
|
|
100
|
-
"react-router": "8.3.0",
|
|
101
|
-
"sass": "1.99.0",
|
|
102
|
-
"terser": "5.47.1",
|
|
103
|
-
"typescript": "6.0.3",
|
|
104
|
-
"typescript-eslint": "8.59.3",
|
|
105
|
-
"vite": "8.1.5",
|
|
106
|
-
"vite-plugin-dts": "5.0.0",
|
|
107
|
-
"vite-plugin-static-copy": "3.4.0"
|
|
108
|
-
},
|
|
109
|
-
"overrides": {
|
|
110
|
-
"brace-expansion@1": "1.1.
|
|
111
|
-
"brace-expansion@5": "5.0.
|
|
112
|
-
"fast-uri@3": "3.1.8",
|
|
113
|
-
"immutable": "5.1.9",
|
|
114
|
-
"js-yaml": "4.3.2",
|
|
115
|
-
"minimatch@10": "10.2.6",
|
|
116
|
-
"nanoid@3": "3.3.18",
|
|
117
|
-
"picomatch@2": "2.3.2",
|
|
118
|
-
"postcss": "8.5.26",
|
|
119
|
-
"esbuild": "0.28.1"
|
|
120
|
-
}
|
|
121
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@memobit/libs",
|
|
3
|
+
"version": "3.4.1",
|
|
4
|
+
"description": "React component library powering the Memobit apps — 100+ components, helpers and hooks. Icons ship as @memobit/icons and themes as @memobit/themes. TypeScript-first, ESM-only, React 19.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"react-components",
|
|
8
|
+
"component-library",
|
|
9
|
+
"ui",
|
|
10
|
+
"ui-kit",
|
|
11
|
+
"design-system",
|
|
12
|
+
"typescript",
|
|
13
|
+
"hooks",
|
|
14
|
+
"memobit"
|
|
15
|
+
],
|
|
16
|
+
"author": "Iulian Cristea <iulianx@gmail.com>",
|
|
17
|
+
"license": "Apache-2.0",
|
|
18
|
+
"homepage": "https://react.memobit.ro/",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/CristeaIulian/memobit-react-library.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/CristeaIulian/memobit-react-library/issues"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"sideEffects": [
|
|
30
|
+
"**/*.css",
|
|
31
|
+
"**/*.scss"
|
|
32
|
+
],
|
|
33
|
+
"type": "module",
|
|
34
|
+
"main": "dist/index.js",
|
|
35
|
+
"module": "dist/index.js",
|
|
36
|
+
"types": "dist/index.d.ts",
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"import": "./dist/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./dist/index.css": "./dist/index.css",
|
|
43
|
+
"./mfa": {
|
|
44
|
+
"types": "./dist/mfa.d.ts",
|
|
45
|
+
"import": "./dist/mfa.js"
|
|
46
|
+
},
|
|
47
|
+
"./dist/styles/variables.scss": "./dist/styles/variables.scss",
|
|
48
|
+
"./dist/styles/base.scss": "./dist/styles/base.scss",
|
|
49
|
+
"./dist/styles/effects.scss": "./dist/styles/effects.scss",
|
|
50
|
+
"./dist/styles/highlight.scss": "./dist/styles/highlight.scss",
|
|
51
|
+
"./dist/styles/scrollbars.scss": "./dist/styles/scrollbars.scss",
|
|
52
|
+
"./dist/styles/utilities.scss": "./dist/styles/utilities.scss",
|
|
53
|
+
"./dist/styles/utility-classes.scss": "./dist/styles/utility-classes.scss",
|
|
54
|
+
"./dist/components/*": "./dist/components/*"
|
|
55
|
+
},
|
|
56
|
+
"files": [
|
|
57
|
+
"dist"
|
|
58
|
+
],
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "vite build && npm pack",
|
|
61
|
+
"release": "npm run build && npm publish",
|
|
62
|
+
"check:npm-auth": "node scripts/check-npm-auth.mjs",
|
|
63
|
+
"ship": "npm run check:npm-auth && npm version patch && npm run release && git push --follow-tags",
|
|
64
|
+
"ship:minor": "npm run check:npm-auth && npm version minor && npm run release && git push --follow-tags",
|
|
65
|
+
"ship:major": "npm run check:npm-auth && npm version major && npm run release && git push --follow-tags",
|
|
66
|
+
"prepublishOnly": "vite build",
|
|
67
|
+
"dev": "vite build --watch",
|
|
68
|
+
"playground": "vite serve playground --config playground/vite.config.ts",
|
|
69
|
+
"lint": "eslint src --ext .ts,.tsx",
|
|
70
|
+
"lint:fix": "eslint src --ext .ts,.tsx --fix",
|
|
71
|
+
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css}\"",
|
|
72
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css}\""
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"@memobit/icons": "^1.0.0",
|
|
76
|
+
"@memobit/themes": "^1.0.0",
|
|
77
|
+
"react": "19.2.7",
|
|
78
|
+
"react-dom": "19.2.7"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@eslint/js": "9.39.4",
|
|
82
|
+
"@memobit/icons": "file:../memobit-react-icons",
|
|
83
|
+
"@memobit/themes": "file:../memobit-react-themes",
|
|
84
|
+
"@microsoft/api-extractor": "7.58.8",
|
|
85
|
+
"@types/react": "19.2.14",
|
|
86
|
+
"@types/react-dom": "19.2.3",
|
|
87
|
+
"@vitejs/plugin-react": "6.0.4",
|
|
88
|
+
"esbuild": "0.28.1",
|
|
89
|
+
"eslint": "9.39.4",
|
|
90
|
+
"eslint-config-prettier": "10.1.8",
|
|
91
|
+
"eslint-plugin-import-x": "4.17.1",
|
|
92
|
+
"eslint-plugin-prettier": "5.5.5",
|
|
93
|
+
"eslint-plugin-react": "7.37.5",
|
|
94
|
+
"eslint-plugin-simple-import-sort": "13.0.0",
|
|
95
|
+
"globals": "17.6.0",
|
|
96
|
+
"prettier": "3.8.3",
|
|
97
|
+
"qrcode.react": "4.2.0",
|
|
98
|
+
"react": "19.2.7",
|
|
99
|
+
"react-dom": "19.2.7",
|
|
100
|
+
"react-router": "8.3.0",
|
|
101
|
+
"sass": "1.99.0",
|
|
102
|
+
"terser": "5.47.1",
|
|
103
|
+
"typescript": "6.0.3",
|
|
104
|
+
"typescript-eslint": "8.59.3",
|
|
105
|
+
"vite": "8.1.5",
|
|
106
|
+
"vite-plugin-dts": "5.0.0",
|
|
107
|
+
"vite-plugin-static-copy": "3.4.0"
|
|
108
|
+
},
|
|
109
|
+
"overrides": {
|
|
110
|
+
"brace-expansion@1": "1.1.21",
|
|
111
|
+
"brace-expansion@5": "5.0.12",
|
|
112
|
+
"fast-uri@3": "3.1.8",
|
|
113
|
+
"immutable": "5.1.9",
|
|
114
|
+
"js-yaml": "4.3.2",
|
|
115
|
+
"minimatch@10": "10.2.6",
|
|
116
|
+
"nanoid@3": "3.3.18",
|
|
117
|
+
"picomatch@2": "2.3.2",
|
|
118
|
+
"postcss": "8.5.26",
|
|
119
|
+
"esbuild": "0.28.1"
|
|
120
|
+
}
|
|
121
|
+
}
|