@konce-pt/react 0.16.0 → 0.16.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.
|
@@ -15,8 +15,8 @@ const warnedKeys = new Set();
|
|
|
15
15
|
* `translate` z ostrzeżeniem w buildzie deweloperskim, gdy klucza nie ma w żadnym słowniku -
|
|
16
16
|
* inaczej literówka daje po cichu sam klucz zamiast tekstu.
|
|
17
17
|
*/
|
|
18
|
-
function translateChecked(dict, key, params) {
|
|
19
|
-
const text = translate(dict, key, params);
|
|
18
|
+
function translateChecked(dict, key, params, locale) {
|
|
19
|
+
const text = translate(dict, key, params, locale);
|
|
20
20
|
if (text === key && isDevBuild() && !warnedKeys.has(key)) {
|
|
21
21
|
warnedKeys.add(key);
|
|
22
22
|
console.warn(`KptI18n: brak tłumaczenia dla klucza "${key}".`);
|
|
@@ -28,7 +28,7 @@ const FALLBACK = {
|
|
|
28
28
|
setLocale: () => { },
|
|
29
29
|
messages: KPT_MESSAGES_EN,
|
|
30
30
|
messagesFor: () => KPT_MESSAGES_EN,
|
|
31
|
-
t: (key, params) => translateChecked(KPT_MESSAGES_EN, key, params),
|
|
31
|
+
t: (key, params) => translateChecked(KPT_MESSAGES_EN, key, params, 'en'),
|
|
32
32
|
};
|
|
33
33
|
const KptI18nContext = createContext(null);
|
|
34
34
|
/**
|
|
@@ -55,7 +55,7 @@ export function KptI18nProvider({ locale = 'en', messages, children }) {
|
|
|
55
55
|
setLocale: setCurrent,
|
|
56
56
|
messages: active,
|
|
57
57
|
messagesFor,
|
|
58
|
-
t: (key, params) => translateChecked(active, key, params),
|
|
58
|
+
t: (key, params) => translateChecked(active, key, params, current),
|
|
59
59
|
};
|
|
60
60
|
}, [current, messagesFor]);
|
|
61
61
|
return _jsx(KptI18nContext.Provider, { value: value, children: children });
|
|
@@ -81,7 +81,7 @@ export function useKptMessages(overrides) {
|
|
|
81
81
|
...context,
|
|
82
82
|
locale: effectiveLocale,
|
|
83
83
|
messages: merged,
|
|
84
|
-
t: (key, params) => translateChecked(merged, key, params),
|
|
84
|
+
t: (key, params) => translateChecked(merged, key, params, effectiveLocale),
|
|
85
85
|
};
|
|
86
86
|
}, [context, locale, dictionary]);
|
|
87
87
|
}
|
package/dist/popover/llms.txt
CHANGED
|
@@ -15,6 +15,8 @@ Import: `import { KptPopover } from '@konce-pt/react';`
|
|
|
15
15
|
- `children`: ReactNode - the panel content
|
|
16
16
|
- `open` / `defaultOpen` / `onOpenChange` - controlled or uncontrolled
|
|
17
17
|
- `placement`: 'bottom' (default) | 'top' - the preferred side; it flips when there is no room
|
|
18
|
+
- `maxWidth`: string - the panel's maximum width, any CSS length (`'24rem'`; default `20rem`). The panel is
|
|
19
|
+
never wider than the window minus the 8 px overlay margin
|
|
18
20
|
- `className`, `ref` and every other `<span>` prop go to the host
|
|
19
21
|
|
|
20
22
|
## The panel is a portal
|
|
@@ -11,6 +11,11 @@ export interface KptPopoverProps extends Omit<ComponentPropsWithRef<'span'>, 'co
|
|
|
11
11
|
placement?: 'bottom' | 'top';
|
|
12
12
|
/** Nazwa panelu (`role="dialog"`) - okno bez nazwy czytnik ogłasza jako samo "okno dialogowe". */
|
|
13
13
|
ariaLabel?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Maksymalna szerokość panelu (dowolna długość CSS, np. `'24rem'`); brak = `20rem`.
|
|
16
|
+
* Panel i tak nie wyjdzie poza okno - ogranicza go szerokość okna minus margines nakładek.
|
|
17
|
+
*/
|
|
18
|
+
maxWidth?: string;
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* Popover - dowolna treść w dymku przypiętym do wyzwalacza (bogatszy niż tooltip).
|
|
@@ -28,4 +33,4 @@ export interface KptPopoverProps extends Omit<ComponentPropsWithRef<'span'>, 'co
|
|
|
28
33
|
* <div>Bogata treść popovera...</div>
|
|
29
34
|
* </KptPopover>
|
|
30
35
|
*/
|
|
31
|
-
export declare function KptPopover({ trigger, children, open, defaultOpen, onOpenChange, placement, ariaLabel, className, ...rest }: Readonly<KptPopoverProps>): import("react").JSX.Element;
|
|
36
|
+
export declare function KptPopover({ trigger, children, open, defaultOpen, onOpenChange, placement, ariaLabel, maxWidth, className, ...rest }: Readonly<KptPopoverProps>): import("react").JSX.Element;
|
package/dist/popover/popover.js
CHANGED
|
@@ -23,7 +23,7 @@ const FOCUSABLE = 'a[href], button:not(:disabled), input:not(:disabled), select,
|
|
|
23
23
|
* <div>Bogata treść popovera...</div>
|
|
24
24
|
* </KptPopover>
|
|
25
25
|
*/
|
|
26
|
-
export function KptPopover({ trigger, children, open, defaultOpen = false, onOpenChange, placement = 'bottom', ariaLabel = '', className, ...rest }) {
|
|
26
|
+
export function KptPopover({ trigger, children, open, defaultOpen = false, onOpenChange, placement = 'bottom', ariaLabel = '', maxWidth, className, ...rest }) {
|
|
27
27
|
const triggerRef = useRef(null);
|
|
28
28
|
/** Kotwica panelu - w stanie, bo czyta ją render; ref zostaje dla handlerów. */
|
|
29
29
|
const [anchor, setAnchor] = useState(null);
|
|
@@ -65,5 +65,5 @@ export function KptPopover({ trigger, children, open, defaultOpen = false, onOpe
|
|
|
65
65
|
findControl()?.focus();
|
|
66
66
|
setOpen(false);
|
|
67
67
|
}, [setOpen]);
|
|
68
|
-
return (_jsxs("span", { className: cn('kpt-popover-host', className), ...rest, children: [_jsx("span", { className: "kpt-popover__trigger", ref: setTrigger, onClick: () => setOpen(!isOpen), children: trigger }), _jsx(KptOverlay, { open: isOpen, anchor: anchor, onClose: close, offset: 6, preferAbove: placement === 'top', children: _jsx("div", { ref: panelRef, id: panelId, className: "kpt-popover__panel", role: "dialog", "aria-label": ariaLabel || undefined, children: children }) })] }));
|
|
68
|
+
return (_jsxs("span", { className: cn('kpt-popover-host', className), ...rest, children: [_jsx("span", { className: "kpt-popover__trigger", ref: setTrigger, onClick: () => setOpen(!isOpen), children: trigger }), _jsx(KptOverlay, { open: isOpen, anchor: anchor, onClose: close, offset: 6, preferAbove: placement === 'top', children: _jsx("div", { ref: panelRef, id: panelId, className: "kpt-popover__panel", role: "dialog", "aria-label": ariaLabel || undefined, style: maxWidth ? { '--_max-width': maxWidth } : undefined, children: children }) })] }));
|
|
69
69
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konce-pt/react",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "Open-source React 19 component library on the Koncept UI design system - the same kpt-* CSS layer and --kpt-* tokens as the Angular port. Zero runtime dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "konce.pt",
|
|
@@ -65,19 +65,19 @@
|
|
|
65
65
|
"leaflet": "^1.9.0"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@konce-pt/
|
|
69
|
-
"@konce-pt/
|
|
70
|
-
"@konce-pt/
|
|
71
|
-
"@konce-pt/
|
|
72
|
-
"@konce-pt/
|
|
73
|
-
"@konce-pt/
|
|
74
|
-
"@konce-pt/
|
|
75
|
-
"@konce-pt/
|
|
76
|
-
"@konce-pt/
|
|
77
|
-
"@konce-pt/
|
|
78
|
-
"@konce-pt/
|
|
79
|
-
"@konce-pt/
|
|
80
|
-
"@konce-pt/
|
|
68
|
+
"@konce-pt/backdrop": "0.16.1",
|
|
69
|
+
"@konce-pt/datetime": "0.16.1",
|
|
70
|
+
"@konce-pt/chart": "0.16.1",
|
|
71
|
+
"@konce-pt/mention": "0.16.1",
|
|
72
|
+
"@konce-pt/icons": "0.16.1",
|
|
73
|
+
"@konce-pt/roadmap": "0.16.1",
|
|
74
|
+
"@konce-pt/chat": "0.16.1",
|
|
75
|
+
"@konce-pt/tokens": "0.16.1",
|
|
76
|
+
"@konce-pt/i18n": "0.16.1",
|
|
77
|
+
"@konce-pt/speech": "0.16.1",
|
|
78
|
+
"@konce-pt/motion": "0.16.1",
|
|
79
|
+
"@konce-pt/table": "0.16.1",
|
|
80
|
+
"@konce-pt/map": "0.16.1"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@types/react": "^19.2.0",
|