@molecule/app-ui-react 1.0.1 → 1.1.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.
- package/README.md +67 -1
- package/dist/components/ConfirmButton.d.ts +71 -0
- package/dist/components/ConfirmButton.d.ts.map +1 -0
- package/dist/components/ConfirmButton.js +88 -0
- package/dist/components/ConfirmButton.js.map +1 -0
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/Icon.js +12 -1
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/UserMenu.d.ts.map +1 -1
- package/dist/components/UserMenu.js +5 -1
- package/dist/components/UserMenu.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-
|
|
6
|
+
Generated: 2026-09-24T08:01:39.991Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/app-ui-react
|
|
@@ -423,6 +423,54 @@ interface CheckboxProps extends InputElementProps {
|
|
|
423
423
|
}
|
|
424
424
|
```
|
|
425
425
|
|
|
426
|
+
#### `ConfirmButtonProps`
|
|
427
|
+
|
|
428
|
+
Props for {@link ConfirmButton}.
|
|
429
|
+
|
|
430
|
+
```typescript
|
|
431
|
+
interface ConfirmButtonProps extends Omit<
|
|
432
|
+
ButtonProps,
|
|
433
|
+
'onClick' | 'children' | 'onConfirm' | keyof React.DOMAttributes<HTMLButtonElement>
|
|
434
|
+
> {
|
|
435
|
+
/**
|
|
436
|
+
* Fired ONLY on the confirming (second) click — i.e. when the action
|
|
437
|
+
* actually commits. Errors should be handled by the caller (render an
|
|
438
|
+
* inline banner); while the returned promise is pending the button stays
|
|
439
|
+
* in its confirming state and ignores further clicks.
|
|
440
|
+
*/
|
|
441
|
+
onConfirm: () => void | Promise<void>
|
|
442
|
+
/**
|
|
443
|
+
* Visible label in the idle (armed-to-be-clicked) state.
|
|
444
|
+
*/
|
|
445
|
+
label: React.ReactNode
|
|
446
|
+
/**
|
|
447
|
+
* Visible label in the armed state — the "click again to confirm" step.
|
|
448
|
+
* Defaults to a localized "Confirm?" via the i18n bond.
|
|
449
|
+
*/
|
|
450
|
+
confirmLabel?: React.ReactNode
|
|
451
|
+
/**
|
|
452
|
+
* Visible label while {@link onConfirm} is pending. Defaults to a
|
|
453
|
+
* localized "Working…".
|
|
454
|
+
*/
|
|
455
|
+
pendingLabel?: React.ReactNode
|
|
456
|
+
/**
|
|
457
|
+
* Seconds before the armed state auto-disarms back to idle. Low-stakes
|
|
458
|
+
* actions tolerate a long window; destructive ones should keep it short.
|
|
459
|
+
* `0` disables auto-disarm (not recommended — a stray click then leaves
|
|
460
|
+
* the button armed forever).
|
|
461
|
+
*/
|
|
462
|
+
disarmSeconds?: number
|
|
463
|
+
/**
|
|
464
|
+
* Disable the control entirely (idle and confirming states).
|
|
465
|
+
*/
|
|
466
|
+
disabled?: boolean
|
|
467
|
+
/**
|
|
468
|
+
* data-mol-id for the button (all states share one element).
|
|
469
|
+
*/
|
|
470
|
+
testId?: string
|
|
471
|
+
}
|
|
472
|
+
```
|
|
473
|
+
|
|
426
474
|
#### `ContainerProps`
|
|
427
475
|
|
|
428
476
|
Props for the Container layout component.
|
|
@@ -2292,6 +2340,24 @@ const Checkbox: React.ForwardRefExoticComponent<
|
|
|
2292
2340
|
>
|
|
2293
2341
|
```
|
|
2294
2342
|
|
|
2343
|
+
#### `ConfirmButton`
|
|
2344
|
+
|
|
2345
|
+
Two-step destructive-action button: the first click ARMS it ("Confirm?"),
|
|
2346
|
+
the second commits. Auto-disarms after {@link ConfirmButtonProps.disarmSeconds}
|
|
2347
|
+
(default 4s) so an armed-then-abandoned row can't surprise anyone later.
|
|
2348
|
+
|
|
2349
|
+
Replaces the fleet's hand-rolled arm-confirm pattern (previously
|
|
2350
|
+
reimplemented per app — button flips, dialogs, `window.confirm`, or worse,
|
|
2351
|
+
nothing at all) with one accessible, touch-friendly implementation:
|
|
2352
|
+
the whole button is the target (≥36px via the button CVA), the armed
|
|
2353
|
+
state is announced through `aria-live`, and Escape disarms.
|
|
2354
|
+
|
|
2355
|
+
```typescript
|
|
2356
|
+
const ConfirmButton: React.ForwardRefExoticComponent<
|
|
2357
|
+
ConfirmButtonProps & React.RefAttributes<HTMLButtonElement>
|
|
2358
|
+
>
|
|
2359
|
+
```
|
|
2360
|
+
|
|
2295
2361
|
#### `Container`
|
|
2296
2362
|
|
|
2297
2363
|
Container component.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfirmButton component.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { ButtonProps } from '@molecule/app-ui';
|
|
8
|
+
/**
|
|
9
|
+
* Props for {@link ConfirmButton}.
|
|
10
|
+
*/
|
|
11
|
+
export interface ConfirmButtonProps extends Omit<ButtonProps, 'onClick' | 'children' | 'onConfirm' | keyof React.DOMAttributes<HTMLButtonElement>> {
|
|
12
|
+
/**
|
|
13
|
+
* Fired ONLY on the confirming (second) click — i.e. when the action
|
|
14
|
+
* actually commits. Errors should be handled by the caller (render an
|
|
15
|
+
* inline banner); while the returned promise is pending the button stays
|
|
16
|
+
* in its confirming state and ignores further clicks.
|
|
17
|
+
*/
|
|
18
|
+
onConfirm: () => void | Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Visible label in the idle (armed-to-be-clicked) state.
|
|
21
|
+
*/
|
|
22
|
+
label: React.ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Visible label in the armed state — the "click again to confirm" step.
|
|
25
|
+
* Defaults to a localized "Confirm?" via the i18n bond.
|
|
26
|
+
*/
|
|
27
|
+
confirmLabel?: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Visible label while {@link onConfirm} is pending. Defaults to a
|
|
30
|
+
* localized "Working…".
|
|
31
|
+
*/
|
|
32
|
+
pendingLabel?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Seconds before the armed state auto-disarms back to idle. Low-stakes
|
|
35
|
+
* actions tolerate a long window; destructive ones should keep it short.
|
|
36
|
+
* `0` disables auto-disarm (not recommended — a stray click then leaves
|
|
37
|
+
* the button armed forever).
|
|
38
|
+
*/
|
|
39
|
+
disarmSeconds?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Disable the control entirely (idle and confirming states).
|
|
42
|
+
*/
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* data-mol-id for the button (all states share one element).
|
|
46
|
+
*/
|
|
47
|
+
testId?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Two-step destructive-action button: the first click ARMS it ("Confirm?"),
|
|
51
|
+
* the second commits. Auto-disarms after {@link ConfirmButtonProps.disarmSeconds}
|
|
52
|
+
* (default 4s) so an armed-then-abandoned row can't surprise anyone later.
|
|
53
|
+
*
|
|
54
|
+
* Replaces the fleet's hand-rolled arm-confirm pattern (previously
|
|
55
|
+
* reimplemented per app — button flips, dialogs, `window.confirm`, or worse,
|
|
56
|
+
* nothing at all) with one accessible, touch-friendly implementation:
|
|
57
|
+
* the whole button is the target (≥36px via the button CVA), the armed
|
|
58
|
+
* state is announced through `aria-live`, and Escape disarms.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* <ConfirmButton
|
|
63
|
+
* label="Delete"
|
|
64
|
+
* confirmLabel="Confirm delete?"
|
|
65
|
+
* onConfirm={() => deleteClient(client.id)}
|
|
66
|
+
* testId="client-delete"
|
|
67
|
+
* />
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare const ConfirmButton: React.ForwardRefExoticComponent<ConfirmButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
71
|
+
//# sourceMappingURL=ConfirmButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmButton.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmButton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAkD,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,WAAW,EACX,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CACpF;IACC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,8FA6FzB,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ConfirmButton component.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { forwardRef, useEffect, useRef, useState } from 'react';
|
|
8
|
+
import { useTranslation } from '@molecule/app-react';
|
|
9
|
+
import { getClassMap } from '@molecule/app-ui';
|
|
10
|
+
/**
|
|
11
|
+
* Two-step destructive-action button: the first click ARMS it ("Confirm?"),
|
|
12
|
+
* the second commits. Auto-disarms after {@link ConfirmButtonProps.disarmSeconds}
|
|
13
|
+
* (default 4s) so an armed-then-abandoned row can't surprise anyone later.
|
|
14
|
+
*
|
|
15
|
+
* Replaces the fleet's hand-rolled arm-confirm pattern (previously
|
|
16
|
+
* reimplemented per app — button flips, dialogs, `window.confirm`, or worse,
|
|
17
|
+
* nothing at all) with one accessible, touch-friendly implementation:
|
|
18
|
+
* the whole button is the target (≥36px via the button CVA), the armed
|
|
19
|
+
* state is announced through `aria-live`, and Escape disarms.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <ConfirmButton
|
|
24
|
+
* label="Delete"
|
|
25
|
+
* confirmLabel="Confirm delete?"
|
|
26
|
+
* onConfirm={() => deleteClient(client.id)}
|
|
27
|
+
* testId="client-delete"
|
|
28
|
+
* />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const ConfirmButton = forwardRef(({ onConfirm, label, confirmLabel, pendingLabel, disarmSeconds = 4, disabled, testId, className, color, size, variant, ...rest }, ref) => {
|
|
32
|
+
const cm = getClassMap();
|
|
33
|
+
const { t } = useTranslation();
|
|
34
|
+
const [phase, setPhase] = useState('idle');
|
|
35
|
+
const disarmTimer = useRef(null);
|
|
36
|
+
const disarm = () => {
|
|
37
|
+
if (disarmTimer.current)
|
|
38
|
+
clearTimeout(disarmTimer.current);
|
|
39
|
+
disarmTimer.current = null;
|
|
40
|
+
setPhase('idle');
|
|
41
|
+
};
|
|
42
|
+
useEffect(() => () => {
|
|
43
|
+
if (disarmTimer.current)
|
|
44
|
+
clearTimeout(disarmTimer.current);
|
|
45
|
+
}, []);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (phase !== 'armed' || disarmSeconds <= 0)
|
|
48
|
+
return;
|
|
49
|
+
disarmTimer.current = setTimeout(disarm, disarmSeconds * 1000);
|
|
50
|
+
return () => {
|
|
51
|
+
if (disarmTimer.current)
|
|
52
|
+
clearTimeout(disarmTimer.current);
|
|
53
|
+
};
|
|
54
|
+
}, [phase, disarmSeconds]);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (phase !== 'armed')
|
|
57
|
+
return;
|
|
58
|
+
const onKey = (e) => {
|
|
59
|
+
if (e.key === 'Escape')
|
|
60
|
+
disarm();
|
|
61
|
+
};
|
|
62
|
+
window.addEventListener('keydown', onKey);
|
|
63
|
+
return () => window.removeEventListener('keydown', onKey);
|
|
64
|
+
}, [phase]);
|
|
65
|
+
const handleClick = async () => {
|
|
66
|
+
if (phase === 'idle') {
|
|
67
|
+
setPhase('armed');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (phase === 'pending')
|
|
71
|
+
return;
|
|
72
|
+
setPhase('pending');
|
|
73
|
+
try {
|
|
74
|
+
await onConfirm();
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
setPhase('idle');
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const visibleLabel = phase === 'pending'
|
|
81
|
+
? (pendingLabel ?? t('confirmButton.pending', {}, { defaultValue: 'Working…' }))
|
|
82
|
+
: phase === 'armed'
|
|
83
|
+
? (confirmLabel ?? t('confirmButton.confirm', {}, { defaultValue: 'Confirm?' }))
|
|
84
|
+
: label;
|
|
85
|
+
return (_jsx("button", { ref: ref, type: "button", onClick: () => void handleClick(), disabled: disabled || phase === 'pending', "aria-live": "polite", "data-state": phase, "data-testid": testId, className: cm.cn(cm.button({ color: phase === 'armed' ? 'error' : (color ?? 'primary'), size, variant }), className), ...rest, children: visibleLabel }));
|
|
86
|
+
});
|
|
87
|
+
ConfirmButton.displayName = 'ConfirmButton';
|
|
88
|
+
//# sourceMappingURL=ConfirmButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmButton.js","sourceRoot":"","sources":["../../src/components/ConfirmButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CACxC;IACC;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAA;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CACxC;IACC;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAA;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiF1F"}
|
package/dist/components/Icon.js
CHANGED
|
@@ -24,7 +24,18 @@ import { getIcon } from '@molecule/app-icons';
|
|
|
24
24
|
* @returns An `<svg>` element rendering the named glyph.
|
|
25
25
|
*/
|
|
26
26
|
export function Icon({ name, size = 20, className, ...rest }) {
|
|
27
|
-
|
|
27
|
+
// Graceful degradation: an icon name missing from the bonded set (icon-set
|
|
28
|
+
// version skew, a custom-set with a smaller catalog) must NOT crash the
|
|
29
|
+
// whole app — multi-vendor-marketplace shipped a dead app over this. Warn
|
|
30
|
+
// once per name and render a neutral placeholder circle instead.
|
|
31
|
+
let icon;
|
|
32
|
+
try {
|
|
33
|
+
icon = getIcon(name);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.warn(`Icon: no bonded glyph for "${name}" — rendering a placeholder.`, error);
|
|
37
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", className: className, "aria-hidden": rest['aria-label'] == null && rest['aria-labelledby'] == null && rest.role == null, focusable: "false", ...rest, children: _jsx("circle", { cx: "10", cy: "10", r: "8", fill: "currentColor", opacity: "0.15" }) }));
|
|
38
|
+
}
|
|
28
39
|
const viewBox = icon.viewBox || '0 0 20 20';
|
|
29
40
|
// Placed BEFORE {...rest} so an explicit caller aria-hidden/role wins.
|
|
30
41
|
const decorativeProps = rest['aria-label'] == null && rest['aria-labelledby'] == null && rest.role == null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAiB,MAAM,qBAAqB,CAAA;AA2B5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAa;IACrE,
|
|
1
|
+
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AASnD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,YAA8B,EAC9B,gBAAmC,EACnC,WAAoB,EACpB,eAAoB,EACpB,SAAuB,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,GACR,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AASnD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,YAA8B,EAC9B,gBAAmC,EACnC,WAAoB,EACpB,eAAoB,EACpB,SAAuB,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,GACR,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA0C7B"}
|
|
@@ -29,6 +29,10 @@ export function UserMenu({ children, ariaLabelKey = 'userMenu.open', ariaLabelDe
|
|
|
29
29
|
useEffect(() => {
|
|
30
30
|
setOpen(false);
|
|
31
31
|
}, [location.pathname, location.search]);
|
|
32
|
-
return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClick ?? (() => setOpen(true)), "aria-label": t(ariaLabelKey, {}, { defaultValue: ariaLabelDefault }), "data-mol-id": dataMolId,
|
|
32
|
+
return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClick ?? (() => setOpen(true)), "aria-label": t(ariaLabelKey, {}, { defaultValue: ariaLabelDefault }), "data-mol-id": dataMolId,
|
|
33
|
+
// 40x40 trigger floor: the icon-only `size="sm"` button measured
|
|
34
|
+
// 42x26px fleet-wide (flagged as a tiny target in every app QA).
|
|
35
|
+
// Apps can still widen via `className`; the floor is the default.
|
|
36
|
+
className: cm.cn('min-h-10 min-w-10', className), disabled: disabled, children: _jsx(Icon, { name: triggerIcon, size: triggerIconSize }) }), _jsx(Modal, { open: open, onClose: () => setOpen(false), className: cm.drawer, "aria-label": t('userMenu.panelLabel', {}, { defaultValue: 'Account menu' }), children: _jsx(PanelCloseProvider, { close: () => setOpen(false), children: children }) })] }));
|
|
33
37
|
}
|
|
34
38
|
//# sourceMappingURL=UserMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAgDpD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,YAAY,GAAG,eAAe,EAC9B,gBAAgB,GAAG,gBAAgB,EACnC,WAAW,GAAG,MAAM,EACpB,eAAe,GAAG,EAAE,EACpB,SAAS,GAAG,WAAW,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,GACO;IACd,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,oEAAoE;IACpE,gEAAgE;IAChE,qEAAqE;IACrE,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAExC,OAAO,CACL,8BACE,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,gBAC7B,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,iBACtD,SAAS,
|
|
1
|
+
{"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAgDpD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,YAAY,GAAG,eAAe,EAC9B,gBAAgB,GAAG,gBAAgB,EACnC,WAAW,GAAG,MAAM,EACpB,eAAe,GAAG,EAAE,EACpB,SAAS,GAAG,WAAW,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,GACO;IACd,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,oEAAoE;IACpE,gEAAgE;IAChE,qEAAqE;IACrE,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAExC,OAAO,CACL,8BACE,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,gBAC7B,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,iBACtD,SAAS;gBACtB,iEAAiE;gBACjE,iEAAiE;gBACjE,kEAAkE;gBAClE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAChD,QAAQ,EAAE,QAAQ,YAElB,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAI,GAC3C,EACT,KAAC,KAAK,IACJ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7B,SAAS,EAAE,EAAE,CAAC,MAAM,gBAGR,CAAC,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,YAE1E,KAAC,kBAAkB,IAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAG,QAAQ,GAAsB,GAC1E,IACP,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -11,6 +11,7 @@ export * from './Badge.js';
|
|
|
11
11
|
export * from './Button.js';
|
|
12
12
|
export * from './Card.js';
|
|
13
13
|
export * from './Checkbox.js';
|
|
14
|
+
export * from './ConfirmButton.js';
|
|
14
15
|
export * from './Dropdown.js';
|
|
15
16
|
export * from './EmptyState.js';
|
|
16
17
|
export * from './FloatingInput.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
|
package/dist/components/index.js
CHANGED
|
@@ -11,6 +11,7 @@ export * from './Badge.js';
|
|
|
11
11
|
export * from './Button.js';
|
|
12
12
|
export * from './Card.js';
|
|
13
13
|
export * from './Checkbox.js';
|
|
14
|
+
export * from './ConfirmButton.js';
|
|
14
15
|
export * from './Dropdown.js';
|
|
15
16
|
export * from './EmptyState.js';
|
|
16
17
|
export * from './FloatingInput.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molecule/app-ui-react",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React UI components for molecule.dev",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"react-router": "^7.0.0 || ^8.0.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@molecule/app-i18n": "1.0.
|
|
45
|
-
"@molecule/app-icons": "1.0.
|
|
46
|
-
"@molecule/app-react": "1.0
|
|
44
|
+
"@molecule/app-i18n": "1.0.2",
|
|
45
|
+
"@molecule/app-icons": "1.0.2",
|
|
46
|
+
"@molecule/app-react": "1.6.0",
|
|
47
47
|
"@testing-library/react": "16.3.2",
|
|
48
48
|
"@types/node": "26.1.2",
|
|
49
49
|
"@types/react": "19.2.17",
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
"react-dom": "19.2.8",
|
|
54
54
|
"react-router": "8.3.0",
|
|
55
55
|
"typescript": "6.0.3",
|
|
56
|
-
"vitest": "4.1.
|
|
56
|
+
"vitest": "4.1.11"
|
|
57
57
|
},
|
|
58
58
|
"repository": {
|
|
59
59
|
"type": "git",
|
|
60
60
|
"url": "https://github.com/molecule-dev/molecule.git",
|
|
61
61
|
"directory": "packages/app/frameworks/react-ui"
|
|
62
62
|
},
|
|
63
|
-
"homepage": "https://
|
|
63
|
+
"homepage": "https://www.molecule.dev/packages/app-ui-react",
|
|
64
64
|
"bugs": "https://github.com/molecule-dev/molecule/issues",
|
|
65
65
|
"publishConfig": {
|
|
66
66
|
"access": "public"
|