@lindle/linoardo 1.0.29 → 1.0.31

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Containment/Dialog/index.tsx"],"names":["React","jsx","twMerge","jsxs","Fragment"],"mappings":"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","file":"dialog.cjs","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst containerBaseClasses =\n 'fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none';\nconst overlayBaseClasses =\n 'absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst panelWrapperClasses =\n 'relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100';\nconst panelBaseClasses =\n 'pointer-events-auto w-full max-h-[90vh] overflow-auto rounded-2xl bg-white p-6 text-gray-900 shadow-2xl shadow-black/20 ring-1 ring-black/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport interface DialogProps extends React.HTMLAttributes<HTMLDivElement> {\n activator?: React.ReactNode;\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n fullscreen?: boolean;\n maxWidth?: string | number;\n width?: string | number;\n containerClassName?: string;\n overlayClassName?: string;\n overlayProps?: React.HTMLAttributes<HTMLDivElement>;\n}\n\n/**\n * Layered dialog container supporting scrim, fullscreen mode and controlled open state.\n */\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, forwardedRef) => {\n const {\n activator,\n children,\n open = false,\n keepMounted = false,\n scrim = true,\n fullscreen = false,\n maxWidth = '32rem',\n width,\n containerClassName,\n overlayClassName,\n overlayProps,\n className,\n style,\n role: roleProp = 'dialog',\n tabIndex = -1,\n id,\n ['aria-modal']: ariaModalProp,\n ...rest\n } = props;\n\n const state = open ? 'open' : 'closed';\n const shouldRenderDialog = keepMounted || open;\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (fullscreen) {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = 'none';\n }\n if (resolvedStyle.width === undefined) {\n resolvedStyle.width = '100%';\n }\n if (resolvedStyle.height === undefined) {\n resolvedStyle.height = '100%';\n }\n if (resolvedStyle.maxHeight === undefined) {\n resolvedStyle.maxHeight = '100%';\n }\n } else {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = resolveSizeValue(maxWidth);\n }\n if (width !== undefined && resolvedStyle.width === undefined) {\n resolvedStyle.width = resolveSizeValue(width);\n }\n }\n\n const ariaModal =\n ariaModalProp ?? (roleProp === 'dialog' || roleProp === 'alertdialog' ? true : undefined);\n\n const { className: overlayExtraClassName, ...restOverlayProps } = overlayProps ?? {};\n\n const overlayNode =\n shouldRenderDialog && scrim ? (\n <div\n {...restOverlayProps}\n className={twMerge(overlayBaseClasses, overlayClassName, overlayExtraClassName)}\n data-state={state}\n aria-hidden\n />\n ) : null;\n\n return (\n <>\n {activator ? <div className='inline-flex'>{activator}</div> : null}\n {shouldRenderDialog ? (\n <div\n className={twMerge(containerBaseClasses, containerClassName)}\n data-state={state}\n aria-hidden={!open}\n >\n {overlayNode}\n <div\n className={twMerge(\n panelWrapperClasses,\n fullscreen ? 'h-full items-stretch' : 'mx-auto'\n )}\n data-state={state}\n >\n <div\n {...rest}\n ref={forwardedRef}\n id={id}\n role={roleProp}\n tabIndex={tabIndex}\n aria-modal={ariaModal}\n className={twMerge(\n panelBaseClasses,\n fullscreen ? 'h-full w-full max-w-none rounded-none' : undefined,\n className\n )}\n style={resolvedStyle}\n data-state={state}\n >\n {children}\n </div>\n </div>\n </div>\n ) : null}\n </>\n );\n});\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n"]}
1
+ {"version":3,"sources":["../src/Containment/Dialog/index.tsx"],"names":["React","jsx","twMerge","jsxs","createPortal","Fragment"],"mappings":"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","file":"dialog.cjs","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst containerBaseClasses =\n 'fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none';\nconst overlayBaseClasses =\n 'absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst panelWrapperClasses =\n 'relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100';\nconst panelBaseClasses =\n 'pointer-events-auto w-full max-h-[90vh] overflow-auto rounded-2xl bg-white p-6 text-gray-900 shadow-2xl shadow-black/20 ring-1 ring-black/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport interface DialogProps extends React.HTMLAttributes<HTMLDivElement> {\n activator?: React.ReactNode;\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n fullscreen?: boolean;\n maxWidth?: string | number;\n width?: string | number;\n onClose?: () => void;\n containerClassName?: string;\n overlayClassName?: string;\n overlayProps?: React.HTMLAttributes<HTMLDivElement>;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Layered dialog container supporting scrim, fullscreen mode and controlled open state.\n */\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, forwardedRef) => {\n const {\n activator,\n children,\n open = false,\n keepMounted = false,\n scrim = true,\n fullscreen = false,\n maxWidth = '32rem',\n width,\n onClose,\n containerClassName,\n overlayClassName,\n overlayProps,\n portal = true,\n portalContainer,\n className,\n style,\n role: roleProp = 'dialog',\n tabIndex = -1,\n id,\n ['aria-modal']: ariaModalProp,\n ...rest\n } = props;\n\n const state = open ? 'open' : 'closed';\n const shouldRenderDialog = keepMounted || open;\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (fullscreen) {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = 'none';\n }\n if (resolvedStyle.width === undefined) {\n resolvedStyle.width = '100%';\n }\n if (resolvedStyle.height === undefined) {\n resolvedStyle.height = '100%';\n }\n if (resolvedStyle.maxHeight === undefined) {\n resolvedStyle.maxHeight = '100%';\n }\n } else {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = resolveSizeValue(maxWidth);\n }\n if (width !== undefined && resolvedStyle.width === undefined) {\n resolvedStyle.width = resolveSizeValue(width);\n }\n }\n\n const ariaModal =\n ariaModalProp ?? (roleProp === 'dialog' || roleProp === 'alertdialog' ? true : undefined);\n\n const {\n className: overlayExtraClassName,\n onClick: overlayOnClick,\n ...restOverlayProps\n } = overlayProps ?? {};\n\n const overlayNode =\n shouldRenderDialog && scrim ? (\n <div\n {...restOverlayProps}\n className={twMerge(overlayBaseClasses, overlayClassName, overlayExtraClassName)}\n onClick={event => {\n overlayOnClick?.(event);\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n data-state={state}\n aria-hidden\n />\n ) : null;\n\n const dialogNode = shouldRenderDialog ? (\n <div\n className={twMerge(containerBaseClasses, containerClassName)}\n data-state={state}\n aria-hidden={!open}\n >\n {overlayNode}\n <div\n className={twMerge(panelWrapperClasses, fullscreen ? 'h-full items-stretch' : 'mx-auto')}\n data-state={state}\n >\n <div\n {...rest}\n ref={forwardedRef}\n id={id}\n role={roleProp}\n tabIndex={tabIndex}\n aria-modal={ariaModal}\n className={twMerge(\n panelBaseClasses,\n fullscreen ? 'h-full w-full max-w-none rounded-none' : undefined,\n className\n )}\n style={resolvedStyle}\n data-state={state}\n >\n {children}\n </div>\n </div>\n </div>\n ) : null;\n\n const outputNode =\n portal && resolvedPortalContainer && dialogNode\n ? createPortal(dialogNode, resolvedPortalContainer)\n : dialogNode;\n\n return (\n <>\n {activator ? <div className='inline-flex'>{activator}</div> : null}\n {outputNode}\n </>\n );\n});\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n"]}
package/dist/dialog.d.cts CHANGED
@@ -8,9 +8,12 @@ interface DialogProps extends react.HTMLAttributes<HTMLDivElement> {
8
8
  fullscreen?: boolean;
9
9
  maxWidth?: string | number;
10
10
  width?: string | number;
11
+ onClose?: () => void;
11
12
  containerClassName?: string;
12
13
  overlayClassName?: string;
13
14
  overlayProps?: react.HTMLAttributes<HTMLDivElement>;
15
+ portal?: boolean;
16
+ portalContainer?: Element | null;
14
17
  }
15
18
  /**
16
19
  * Layered dialog container supporting scrim, fullscreen mode and controlled open state.
package/dist/dialog.d.ts CHANGED
@@ -8,9 +8,12 @@ interface DialogProps extends react.HTMLAttributes<HTMLDivElement> {
8
8
  fullscreen?: boolean;
9
9
  maxWidth?: string | number;
10
10
  width?: string | number;
11
+ onClose?: () => void;
11
12
  containerClassName?: string;
12
13
  overlayClassName?: string;
13
14
  overlayProps?: react.HTMLAttributes<HTMLDivElement>;
15
+ portal?: boolean;
16
+ portalContainer?: Element | null;
14
17
  }
15
18
  /**
16
19
  * Layered dialog container supporting scrim, fullscreen mode and controlled open state.
package/dist/dialog.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Dialog_default as default } from './chunk-LIEBZOLG.js';
1
+ export { Dialog_default as default } from './chunk-NJU7XT54.js';
2
2
  //# sourceMappingURL=dialog.js.map
3
3
  //# sourceMappingURL=dialog.js.map
package/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@
3
3
  var React4 = require('react');
4
4
  var tailwindMerge = require('tailwind-merge');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
+ var reactDom = require('react-dom');
6
7
  var react = require('@tiptap/react');
7
8
  var StarterKit = require('@tiptap/starter-kit');
8
9
  var marked = require('marked');
@@ -905,20 +906,23 @@ var Menu = React4__namespace.forwardRef((props, ref) => {
905
906
  ...rest
906
907
  } = props;
907
908
  const hasContent = children !== void 0 && children !== null;
908
- const isOpen = Boolean(open);
909
- const shouldRenderContent = hasContent && (keepMounted || isOpen || openOnHover || openOnFocus);
910
- const shouldRenderOverlay = scrim && hasContent && (isOpen || openOnHover || openOnFocus);
909
+ const isControlled = open !== void 0;
910
+ const isOpen = open === true;
911
+ const allowHoverTrigger = openOnHover && !isControlled;
912
+ const allowFocusTrigger = openOnFocus && !isControlled;
913
+ const shouldRenderContent = hasContent && (keepMounted || isOpen || allowHoverTrigger || allowFocusTrigger);
914
+ const shouldRenderOverlay = scrim && hasContent && (isOpen || allowHoverTrigger || allowFocusTrigger);
911
915
  const verticalPlacement = placement.startsWith("top") ? "top" : "bottom";
912
916
  const visibilityClasses = tailwindMerge.twMerge(
913
917
  "pointer-events-none opacity-0 scale-95",
914
918
  isOpen ? "pointer-events-auto opacity-100 scale-100" : void 0,
915
- openOnHover ? "group-hover/menu:pointer-events-auto group-hover/menu:opacity-100 group-hover/menu:scale-100" : void 0,
916
- openOnFocus ? "group-focus-within/menu:pointer-events-auto group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100" : void 0
919
+ allowHoverTrigger ? "group-hover/menu:pointer-events-auto group-hover/menu:opacity-100 group-hover/menu:scale-100" : void 0,
920
+ allowFocusTrigger ? "group-focus-within/menu:pointer-events-auto group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100" : void 0
917
921
  );
918
922
  const overlayVisibilityClasses = tailwindMerge.twMerge(
919
923
  "pointer-events-none opacity-0 transition-opacity duration-150",
920
- openOnHover ? "group-hover/menu:opacity-100" : void 0,
921
- openOnFocus ? "group-focus-within/menu:opacity-100" : void 0,
924
+ allowHoverTrigger ? "group-hover/menu:opacity-100" : void 0,
925
+ allowFocusTrigger ? "group-focus-within/menu:opacity-100" : void 0,
922
926
  isOpen ? "pointer-events-auto opacity-100" : void 0
923
927
  );
924
928
  const {
@@ -1352,9 +1356,12 @@ var Dialog = React4__namespace.forwardRef((props, forwardedRef) => {
1352
1356
  fullscreen = false,
1353
1357
  maxWidth = "32rem",
1354
1358
  width,
1359
+ onClose,
1355
1360
  containerClassName,
1356
1361
  overlayClassName,
1357
1362
  overlayProps,
1363
+ portal = true,
1364
+ portalContainer,
1358
1365
  className,
1359
1366
  style,
1360
1367
  role: roleProp = "dialog",
@@ -1365,6 +1372,7 @@ var Dialog = React4__namespace.forwardRef((props, forwardedRef) => {
1365
1372
  } = props;
1366
1373
  const state = open ? "open" : "closed";
1367
1374
  const shouldRenderDialog = keepMounted || open;
1375
+ const resolvedPortalContainer = portalContainer ?? (typeof document !== "undefined" ? document.body : null);
1368
1376
  const resolvedStyle = { ...style };
1369
1377
  if (fullscreen) {
1370
1378
  if (resolvedStyle.maxWidth === void 0) {
@@ -1388,58 +1396,67 @@ var Dialog = React4__namespace.forwardRef((props, forwardedRef) => {
1388
1396
  }
1389
1397
  }
1390
1398
  const ariaModal = ariaModalProp ?? (roleProp === "dialog" || roleProp === "alertdialog" ? true : void 0);
1391
- const { className: overlayExtraClassName, ...restOverlayProps } = overlayProps ?? {};
1399
+ const {
1400
+ className: overlayExtraClassName,
1401
+ onClick: overlayOnClick,
1402
+ ...restOverlayProps
1403
+ } = overlayProps ?? {};
1392
1404
  const overlayNode = shouldRenderDialog && scrim ? /* @__PURE__ */ jsxRuntime.jsx(
1393
1405
  "div",
1394
1406
  {
1395
1407
  ...restOverlayProps,
1396
1408
  className: tailwindMerge.twMerge(overlayBaseClasses2, overlayClassName, overlayExtraClassName),
1409
+ onClick: (event) => {
1410
+ overlayOnClick?.(event);
1411
+ if (!event.defaultPrevented) {
1412
+ onClose?.();
1413
+ }
1414
+ },
1397
1415
  "data-state": state,
1398
1416
  "aria-hidden": true
1399
1417
  }
1400
1418
  ) : null;
1419
+ const dialogNode = shouldRenderDialog ? /* @__PURE__ */ jsxRuntime.jsxs(
1420
+ "div",
1421
+ {
1422
+ className: tailwindMerge.twMerge(containerBaseClasses, containerClassName),
1423
+ "data-state": state,
1424
+ "aria-hidden": !open,
1425
+ children: [
1426
+ overlayNode,
1427
+ /* @__PURE__ */ jsxRuntime.jsx(
1428
+ "div",
1429
+ {
1430
+ className: tailwindMerge.twMerge(panelWrapperClasses, fullscreen ? "h-full items-stretch" : "mx-auto"),
1431
+ "data-state": state,
1432
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1433
+ "div",
1434
+ {
1435
+ ...rest,
1436
+ ref: forwardedRef,
1437
+ id,
1438
+ role: roleProp,
1439
+ tabIndex,
1440
+ "aria-modal": ariaModal,
1441
+ className: tailwindMerge.twMerge(
1442
+ panelBaseClasses,
1443
+ fullscreen ? "h-full w-full max-w-none rounded-none" : void 0,
1444
+ className
1445
+ ),
1446
+ style: resolvedStyle,
1447
+ "data-state": state,
1448
+ children
1449
+ }
1450
+ )
1451
+ }
1452
+ )
1453
+ ]
1454
+ }
1455
+ ) : null;
1456
+ const outputNode = portal && resolvedPortalContainer && dialogNode ? reactDom.createPortal(dialogNode, resolvedPortalContainer) : dialogNode;
1401
1457
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1402
1458
  activator ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex", children: activator }) : null,
1403
- shouldRenderDialog ? /* @__PURE__ */ jsxRuntime.jsxs(
1404
- "div",
1405
- {
1406
- className: tailwindMerge.twMerge(containerBaseClasses, containerClassName),
1407
- "data-state": state,
1408
- "aria-hidden": !open,
1409
- children: [
1410
- overlayNode,
1411
- /* @__PURE__ */ jsxRuntime.jsx(
1412
- "div",
1413
- {
1414
- className: tailwindMerge.twMerge(
1415
- panelWrapperClasses,
1416
- fullscreen ? "h-full items-stretch" : "mx-auto"
1417
- ),
1418
- "data-state": state,
1419
- children: /* @__PURE__ */ jsxRuntime.jsx(
1420
- "div",
1421
- {
1422
- ...rest,
1423
- ref: forwardedRef,
1424
- id,
1425
- role: roleProp,
1426
- tabIndex,
1427
- "aria-modal": ariaModal,
1428
- className: tailwindMerge.twMerge(
1429
- panelBaseClasses,
1430
- fullscreen ? "h-full w-full max-w-none rounded-none" : void 0,
1431
- className
1432
- ),
1433
- style: resolvedStyle,
1434
- "data-state": state,
1435
- children
1436
- }
1437
- )
1438
- }
1439
- )
1440
- ]
1441
- }
1442
- ) : null
1459
+ outputNode
1443
1460
  ] });
1444
1461
  });
1445
1462
  Dialog.displayName = "Dialog";
@@ -1603,7 +1620,7 @@ var CardRoot = React4.forwardRef(function Card({
1603
1620
  const variantClass = variantClasses[variant] ?? variantClasses.solid;
1604
1621
  const paddingClass = paddingClasses[padding] ?? paddingClasses.md;
1605
1622
  const overflowClass = overflowClasses[overflow] ?? overflowClasses.hidden;
1606
- const interactiveClass = interactive ? "transition-all duration-200 hover:-translate-y-0.5 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-slate-900" : void 0;
1623
+ const interactiveClass = interactive ? "transition-all duration-200 hover:-translate-y-0.5 hover:shadow-xl hover:z-10 focus-within:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-slate-900" : void 0;
1607
1624
  const tabIndexValue = interactive && rest.tabIndex === void 0 ? 0 : rest.tabIndex;
1608
1625
  const content = applyDividers(children, dividers);
1609
1626
  return /* @__PURE__ */ jsxRuntime.jsx(