@mindlogic-ai/logician-ui 3.0.0-alpha.6 → 3.0.0-alpha.7

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,3 +1,3 @@
1
1
  import { ModalProps } from './Modal.types';
2
- export declare const Modal: ({ children, open, onOpenChange, ...rest }: ModalProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Modal: ({ children, open, onOpenChange, portalProps, ...rest }: ModalProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=Modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,eAAO,MAAM,KAAK,GAAI,2CAKnB,UAAU,4CAYZ,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,eAAO,MAAM,KAAK,GAAI,wDAMnB,UAAU,4CAeZ,CAAC"}
@@ -4,8 +4,8 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('@chakra-ui/react');
6
6
 
7
- const Modal = ({ children, open, onOpenChange, ...rest }) => {
8
- return (jsxRuntime.jsx(react.Dialog.Root, { open: open, onOpenChange: onOpenChange, placement: "center", closeOnInteractOutside: true, ...rest, children: children }));
7
+ const Modal = ({ children, open, onOpenChange, portalProps, ...rest }) => {
8
+ return (jsxRuntime.jsx(react.Dialog.Root, { open: open, onOpenChange: onOpenChange, placement: "center", closeOnInteractOutside: true, ...rest, children: jsxRuntime.jsxs(react.Portal, { ...portalProps, children: [jsxRuntime.jsx(react.Dialog.Backdrop, {}), children] }) }));
9
9
  };
10
10
 
11
11
  exports.Modal = Modal;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":[null],"names":["_jsx","Dialog"],"mappings":";;;;;;AAKO,MAAM,KAAK,GAAG,CAAC,EACpB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,GAAG,IAAI,EACI,KAAI;IACf,QACEA,cAAA,CAACC,YAAM,CAAC,IAAI,IACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,QAAQ,EAClB,sBAAsB,EAAA,IAAA,EAAA,GAClB,IAAI,EAAA,QAAA,EAEP,QAAQ,EAAA,CACG;AAElB;;;;"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":[null],"names":["_jsx","Dialog","_jsxs","Portal"],"mappings":";;;;;;AAKO,MAAM,KAAK,GAAG,CAAC,EACpB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,GAAG,IAAI,EACI,KAAI;AACf,IAAA,QACEA,cAAA,CAACC,YAAM,CAAC,IAAI,IACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,QAAQ,EAClB,sBAAsB,EAAA,IAAA,EAAA,GAClB,IAAI,EAAA,QAAA,EAERC,eAAA,CAACC,YAAM,EAAA,EAAA,GAAK,WAAW,EAAA,QAAA,EAAA,CACrBH,cAAA,CAACC,YAAM,CAAC,QAAQ,EAAA,EAAA,CAAG,EAClB,QAAQ,CAAA,EAAA,CACF,EAAA,CACG;AAElB;;;;"}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { jsx } from 'react/jsx-runtime';
3
- import { Dialog } from '@chakra-ui/react';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Dialog, Portal } from '@chakra-ui/react';
4
4
 
5
- const Modal = ({ children, open, onOpenChange, ...rest }) => {
6
- return (jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, placement: "center", closeOnInteractOutside: true, ...rest, children: children }));
5
+ const Modal = ({ children, open, onOpenChange, portalProps, ...rest }) => {
6
+ return (jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, placement: "center", closeOnInteractOutside: true, ...rest, children: jsxs(Portal, { ...portalProps, children: [jsx(Dialog.Backdrop, {}), children] }) }));
7
7
  };
8
8
 
9
9
  export { Modal };
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.mjs","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,EACpB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,GAAG,IAAI,EACI,KAAI;IACf,QACEA,GAAA,CAAC,MAAM,CAAC,IAAI,IACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,QAAQ,EAClB,sBAAsB,EAAA,IAAA,EAAA,GAClB,IAAI,EAAA,QAAA,EAEP,QAAQ,EAAA,CACG;AAElB;;;;"}
1
+ {"version":3,"file":"Modal.mjs","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;AAKO,MAAM,KAAK,GAAG,CAAC,EACpB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,GAAG,IAAI,EACI,KAAI;AACf,IAAA,QACEA,GAAA,CAAC,MAAM,CAAC,IAAI,IACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,QAAQ,EAClB,sBAAsB,EAAA,IAAA,EAAA,GAClB,IAAI,EAAA,QAAA,EAERC,IAAA,CAAC,MAAM,EAAA,EAAA,GAAK,WAAW,EAAA,QAAA,EAAA,CACrBD,GAAA,CAAC,MAAM,CAAC,QAAQ,EAAA,EAAA,CAAG,EAClB,QAAQ,CAAA,EAAA,CACF,EAAA,CACG;AAElB;;;;"}
@@ -1,3 +1,5 @@
1
- import { Dialog } from '@chakra-ui/react';
2
- export type ModalProps = Dialog.RootProps;
1
+ import { Dialog, PortalProps } from '@chakra-ui/react';
2
+ export type ModalProps = Dialog.RootProps & {
3
+ portalProps?: PortalProps;
4
+ };
3
5
  //# sourceMappingURL=Modal.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.types.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"Modal.types.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,GAAG;IAG1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindlogic-ai/logician-ui",
3
- "version": "3.0.0-alpha.6",
3
+ "version": "3.0.0-alpha.7",
4
4
  "description": "A comprehensive React design system built on Chakra UI",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -5,7 +5,6 @@
5
5
  *
6
6
  * ## 주요 구성 요소
7
7
  * - Modal (Dialog.Root): 모달의 루트 컨테이너
8
- * - ModalOverlay (Dialog.Backdrop): 모달 뒤의 어두운 배경
9
8
  * - ModalContent (Dialog.Content): 모달의 실제 콘텐츠 영역
10
9
  * - ModalHeader (Dialog.Header): 모달 헤더
11
10
  * - ModalCloseButton (Dialog.CloseTrigger + CloseButton): 닫기 버튼
@@ -28,7 +27,6 @@ import {
28
27
  ModalContent,
29
28
  ModalFooter,
30
29
  ModalHeader,
31
- ModalOverlay,
32
30
  } from '.';
33
31
  import { Button } from '../Button';
34
32
  import { ButtonVariant } from '../Button/Button.types';
@@ -69,7 +67,6 @@ export const Default: Story = {
69
67
  <>
70
68
  <Button onClick={() => setIsOpen(true)}>Open Confirm Modal</Button>
71
69
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
72
- <ModalOverlay />
73
70
  <ModalContent>
74
71
  {args.headerTitle && <ModalHeader>{args.headerTitle}</ModalHeader>}
75
72
  {args.hasCloseButton && <ModalCloseButton />}
@@ -101,7 +98,6 @@ export const WithHeader: Story = {
101
98
  <>
102
99
  <Button onClick={() => setIsOpen(true)}>Open Confirm Modal</Button>
103
100
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
104
- <ModalOverlay />
105
101
  <ModalContent>
106
102
  {args.headerTitle && <ModalHeader>{args.headerTitle}</ModalHeader>}
107
103
  {args.hasCloseButton && <ModalCloseButton />}
@@ -134,7 +130,6 @@ export const WithFooterButton: Story = {
134
130
  <>
135
131
  <Button onClick={() => setIsOpen(true)}>Open Confirm Modal</Button>
136
132
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
137
- <ModalOverlay />
138
133
  <ModalContent>
139
134
  {args.headerTitle && <ModalHeader>{args.headerTitle}</ModalHeader>}
140
135
  {args.hasCloseButton && <ModalCloseButton />}
@@ -169,7 +164,6 @@ export const TwoButtons: Story = {
169
164
  <>
170
165
  <Button onClick={() => setIsOpen(true)}>Open Confirm Modal</Button>
171
166
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
172
- <ModalOverlay />
173
167
  <ModalContent>
174
168
  {args.headerTitle && <ModalHeader>{args.headerTitle}</ModalHeader>}
175
169
  {args.hasCloseButton && <ModalCloseButton />}
@@ -208,7 +202,6 @@ export const WithCloseButton: Story = {
208
202
  <>
209
203
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
210
204
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
211
- <ModalOverlay />
212
205
  <ModalContent>
213
206
  <ModalHeader>{args.headerTitle}</ModalHeader>
214
207
  {/* ModalCloseButton: Dialog.CloseTrigger + CloseButton 조합 */}
@@ -241,7 +234,6 @@ export const WithoutCloseButton: Story = {
241
234
  <>
242
235
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
243
236
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
244
- <ModalOverlay />
245
237
  <ModalContent>
246
238
  <ModalHeader>{args.headerTitle}</ModalHeader>
247
239
  {/* ModalCloseButton이 없음 - 닫기 버튼 X 아이콘이 표시되지 않음 */}
@@ -265,7 +257,6 @@ export const WithoutHeader: Story = {
265
257
  <>
266
258
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
267
259
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
268
- <ModalOverlay />
269
260
  <ModalContent>
270
261
  <ModalCloseButton />
271
262
  <ModalBody>
@@ -297,7 +288,6 @@ export const WithoutFooter: Story = {
297
288
  <>
298
289
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
299
290
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
300
- <ModalOverlay />
301
291
  <ModalContent>
302
292
  <ModalHeader>{args.headerTitle}</ModalHeader>
303
293
  <ModalCloseButton />
@@ -328,7 +318,6 @@ export const FullFeatured: Story = {
328
318
  <>
329
319
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
330
320
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
331
- <ModalOverlay />
332
321
  <ModalContent>
333
322
  <ModalHeader>{args.headerTitle}</ModalHeader>
334
323
  <ModalCloseButton />
@@ -363,7 +352,6 @@ export const MinimalModal: Story = {
363
352
  <>
364
353
  <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
365
354
  <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
366
- <ModalOverlay />
367
355
  <ModalContent>
368
356
  <ModalBody>
369
357
  헤더, 푸터, 닫기 버튼이 모두 없는 가장 단순한 형태의 모달입니다.
@@ -401,7 +389,6 @@ export const DifferentSizes: Story = {
401
389
  onOpenChange={(e) => !e.open && setOpenSize(null)}
402
390
  size={openSize as any}
403
391
  >
404
- <ModalOverlay />
405
392
  <ModalContent>
406
393
  <ModalHeader>Modal Size: {openSize?.toUpperCase()}</ModalHeader>
407
394
  <ModalCloseButton />
@@ -439,7 +426,6 @@ export const DifferentPlacements: Story = {
439
426
  onOpenChange={(e) => !e.open && setOpenPlacement(null)}
440
427
  placement={openPlacement as any}
441
428
  >
442
- <ModalOverlay />
443
429
  <ModalContent>
444
430
  <ModalHeader>
445
431
  Placement: {openPlacement?.charAt(0).toUpperCase()}
@@ -460,34 +446,6 @@ export const DifferentPlacements: Story = {
460
446
  },
461
447
  };
462
448
 
463
- export const WithoutOverlay: Story = {
464
- args: {
465
- headerTitle: 'Modal without Overlay',
466
- },
467
- render: (args) => {
468
- const [isOpen, setIsOpen] = useState(false);
469
-
470
- return (
471
- <>
472
- <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
473
- <Modal {...args} open={isOpen} onOpenChange={(e) => setIsOpen(e.open)}>
474
- <ModalContent>
475
- <ModalHeader>{args.headerTitle}</ModalHeader>
476
- <ModalCloseButton />
477
- <ModalBody>
478
- 이 모달은 Overlay(배경 어둡게 처리)가 없습니다. 뒤의 콘텐츠를 볼 수
479
- 있습니다.
480
- </ModalBody>
481
- <ModalFooter>
482
- <Button onClick={() => setIsOpen(false)}>Close</Button>
483
- </ModalFooter>
484
- </ModalContent>
485
- </Modal>
486
- </>
487
- );
488
- },
489
- };
490
-
491
449
  export const PreventOutsideClick: Story = {
492
450
  args: {
493
451
  headerTitle: 'Cannot Close by Outside Click',
@@ -504,7 +462,6 @@ export const PreventOutsideClick: Story = {
504
462
  onOpenChange={(e) => setIsOpen(e.open)}
505
463
  closeOnInteractOutside={false}
506
464
  >
507
- <ModalOverlay />
508
465
  <ModalContent>
509
466
  <ModalHeader>{args.headerTitle}</ModalHeader>
510
467
  <ModalCloseButton />
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Dialog } from '@chakra-ui/react';
2
+ import { Dialog, Portal } from '@chakra-ui/react';
3
3
 
4
4
  import { ModalProps } from './Modal.types';
5
5
 
@@ -7,6 +7,7 @@ export const Modal = ({
7
7
  children,
8
8
  open,
9
9
  onOpenChange,
10
+ portalProps,
10
11
  ...rest
11
12
  }: ModalProps) => {
12
13
  return (
@@ -17,7 +18,10 @@ export const Modal = ({
17
18
  closeOnInteractOutside
18
19
  {...rest}
19
20
  >
20
- {children}
21
+ <Portal {...portalProps}>
22
+ <Dialog.Backdrop />
23
+ {children}
24
+ </Portal>
21
25
  </Dialog.Root>
22
26
  );
23
27
  };
@@ -1,3 +1,7 @@
1
- import { Dialog } from '@chakra-ui/react';
1
+ import { Dialog, PortalProps } from '@chakra-ui/react';
2
2
 
3
- export type ModalProps = Dialog.RootProps;
3
+ export type ModalProps = Dialog.RootProps & {
4
+ // Allows passing props to the Portal component for more control over where the modal is rendered
5
+ // Added for backwards compatibility.
6
+ portalProps?: PortalProps;
7
+ };