boottent-design 0.1.260 → 0.1.261

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.
Files changed (128) hide show
  1. package/dist/design-system/components/article-asset-card.md +1 -1
  2. package/dist/design-system/components/blog-review-card.md +1 -1
  3. package/dist/design-system/components/camp-card.md +1 -1
  4. package/dist/design-system/components/company-info-card.md +1 -1
  5. package/dist/design-system/components/dday-card.md +1 -1
  6. package/dist/design-system/components/environment-asset-photo.md +1 -1
  7. package/dist/design-system/components/event-asset-banner.md +1 -1
  8. package/dist/design-system/components/event-card.md +1 -1
  9. package/dist/design-system/components/lecturer-card.md +1 -1
  10. package/dist/design-system/components/main-banner-image.md +1 -1
  11. package/dist/design-system/components/mobile-camp-card.md +1 -1
  12. package/dist/design-system/components/partner-list-card.md +1 -1
  13. package/dist/design-system/components/portfolio-asset-card.md +1 -1
  14. package/dist/design-system/components/premium-card.md +1 -1
  15. package/dist/design-system/components/title-tag-card.md +1 -1
  16. package/dist/design-system/components/youtube-video-modal.md +1 -1
  17. package/dist/design-system/design-system.md +3 -2
  18. package/dist/design-system/tokens.md +1 -1
  19. package/dist/design-system/ui/accordion.md +1 -1
  20. package/dist/design-system/ui/alert-dialog.md +1 -1
  21. package/dist/design-system/ui/anchor.md +1 -1
  22. package/dist/design-system/ui/aspect-ratio.md +1 -1
  23. package/dist/design-system/ui/avatar.md +1 -1
  24. package/dist/design-system/ui/badge.md +1 -1
  25. package/dist/design-system/ui/button.md +1 -1
  26. package/dist/design-system/ui/calendar.md +1 -1
  27. package/dist/design-system/ui/callout.md +1 -1
  28. package/dist/design-system/ui/card-label.md +1 -1
  29. package/dist/design-system/ui/card.md +1 -1
  30. package/dist/design-system/ui/checkbox.md +1 -1
  31. package/dist/design-system/ui/circled-check-button.md +1 -1
  32. package/dist/design-system/ui/command.md +1 -1
  33. package/dist/design-system/ui/dialog.md +1 -1
  34. package/dist/design-system/ui/dropdown-menu.md +1 -1
  35. package/dist/design-system/ui/file-uploader.md +1 -1
  36. package/dist/design-system/ui/form.md +1 -1
  37. package/dist/design-system/ui/highlight-text.md +1 -1
  38. package/dist/design-system/ui/icons.md +1 -1
  39. package/dist/design-system/ui/image.md +1 -1
  40. package/dist/design-system/ui/input.md +1 -1
  41. package/dist/design-system/ui/label.md +1 -1
  42. package/dist/design-system/ui/month-picker.md +1 -1
  43. package/dist/design-system/ui/multi-select.md +1 -1
  44. package/dist/design-system/ui/navigation-menu.md +1 -1
  45. package/dist/design-system/ui/popover.md +1 -1
  46. package/dist/design-system/ui/portal.md +64 -0
  47. package/dist/design-system/ui/progress.md +1 -1
  48. package/dist/design-system/ui/radio-group.md +1 -1
  49. package/dist/design-system/ui/scroll-area.md +1 -1
  50. package/dist/design-system/ui/select.md +1 -1
  51. package/dist/design-system/ui/separator.md +1 -1
  52. package/dist/design-system/ui/simple-table.md +1 -1
  53. package/dist/design-system/ui/skeleton.md +1 -1
  54. package/dist/design-system/ui/slider.md +1 -1
  55. package/dist/design-system/ui/switch.md +1 -1
  56. package/dist/design-system/ui/symbols.md +1 -1
  57. package/dist/design-system/ui/tabs.md +1 -1
  58. package/dist/design-system/ui/tag.md +1 -1
  59. package/dist/design-system/ui/text.md +1 -1
  60. package/dist/design-system/ui/textarea.md +1 -1
  61. package/dist/design-system/ui/toast.md +9 -3
  62. package/dist/design-system/ui/toggle-group.md +1 -1
  63. package/dist/design-system/ui/toggle.md +1 -1
  64. package/dist/design-system/ui/tooltip.md +1 -1
  65. package/dist/design-system/usage.md +1 -1
  66. package/dist/design-system/when-to-use.md +3 -2
  67. package/dist/styles.css +1 -1
  68. package/dist/types/button.d.ts +1 -1
  69. package/dist/types/command.d.ts +6 -6
  70. package/dist/types/multi-select.d.ts +2 -2
  71. package/dist/types/portal.d.ts +179 -0
  72. package/dist/types/toast.d.ts +31 -2
  73. package/dist/types/toggle-group.d.ts +2 -2
  74. package/dist/types/toggle.d.ts +2 -2
  75. package/dist/types/ui/accordion.d.ts +1 -1
  76. package/dist/types/ui/alert-dialog.d.ts +1 -1
  77. package/dist/types/ui/anchor.d.ts +1 -1
  78. package/dist/types/ui/aspect-ratio.d.ts +1 -1
  79. package/dist/types/ui/avatar.d.ts +1 -1
  80. package/dist/types/ui/badge.d.ts +1 -1
  81. package/dist/types/ui/button.d.ts +1 -1
  82. package/dist/types/ui/calendar.d.ts +1 -1
  83. package/dist/types/ui/callout.d.ts +1 -1
  84. package/dist/types/ui/card-label.d.ts +1 -1
  85. package/dist/types/ui/card.d.ts +1 -1
  86. package/dist/types/ui/checkbox.d.ts +1 -1
  87. package/dist/types/ui/circled-check-button.d.ts +1 -1
  88. package/dist/types/ui/command.d.ts +1 -1
  89. package/dist/types/ui/dialog.d.ts +1 -1
  90. package/dist/types/ui/dropdown-menu.d.ts +1 -1
  91. package/dist/types/ui/file-uploader.d.ts +1 -1
  92. package/dist/types/ui/form.d.ts +1 -1
  93. package/dist/types/ui/highlight-text.d.ts +1 -1
  94. package/dist/types/ui/icons.d.ts +1 -1
  95. package/dist/types/ui/image.d.ts +1 -1
  96. package/dist/types/ui/input.d.ts +1 -1
  97. package/dist/types/ui/label.d.ts +1 -1
  98. package/dist/types/ui/month-picker.d.ts +1 -1
  99. package/dist/types/ui/multi-select.d.ts +1 -1
  100. package/dist/types/ui/navigation-menu.d.ts +1 -1
  101. package/dist/types/ui/popover.d.ts +1 -1
  102. package/dist/types/ui/portal.d.ts +2 -0
  103. package/dist/types/ui/progress.d.ts +1 -1
  104. package/dist/types/ui/radio-group.d.ts +1 -1
  105. package/dist/types/ui/scroll-area.d.ts +1 -1
  106. package/dist/types/ui/select.d.ts +1 -1
  107. package/dist/types/ui/separator.d.ts +1 -1
  108. package/dist/types/ui/simple-table.d.ts +1 -1
  109. package/dist/types/ui/skeleton.d.ts +1 -1
  110. package/dist/types/ui/slider.d.ts +1 -1
  111. package/dist/types/ui/switch.d.ts +1 -1
  112. package/dist/types/ui/symbols.d.ts +1 -1
  113. package/dist/types/ui/tabs.d.ts +1 -1
  114. package/dist/types/ui/tag.d.ts +1 -1
  115. package/dist/types/ui/text.d.ts +1 -1
  116. package/dist/types/ui/textarea.d.ts +1 -1
  117. package/dist/types/ui/toast.d.ts +1 -1
  118. package/dist/types/ui/toggle-group.d.ts +1 -1
  119. package/dist/types/ui/toggle.d.ts +1 -1
  120. package/dist/types/ui/tooltip.d.ts +1 -1
  121. package/dist/types/ui.d.ts +42 -14
  122. package/dist/ui/portal.cjs.js +1 -0
  123. package/dist/ui/portal.es.js +561 -0
  124. package/dist/ui/toast.cjs.js +1 -1
  125. package/dist/ui/toast.es.js +202 -47
  126. package/dist/ui.cjs.js +1 -1
  127. package/dist/ui.es.js +61 -57
  128. package/package.json +1 -1
@@ -159,7 +159,7 @@ export declare interface ButtonProps extends React_2.ButtonHTMLAttributes<HTMLBu
159
159
 
160
160
  export declare const buttonVariants: (props?: ({
161
161
  theme?: "primary" | "secondary" | "etc" | null | undefined;
162
- size?: "xs" | "sm" | "md" | "lg" | "icon" | null | undefined;
162
+ size?: "sm" | "md" | "lg" | "xs" | "icon" | null | undefined;
163
163
  variant?: "text" | "solid" | "outline" | null | undefined;
164
164
  shape?: "square" | "rounded" | null | undefined;
165
165
  } & ClassProp) | undefined) => string;
@@ -220,7 +220,7 @@ export declare const Command: React_2.ForwardRefExoticComponent<Omit<{
220
220
  ref?: React_2.Ref<HTMLDivElement> | undefined;
221
221
  } & {
222
222
  asChild?: boolean | undefined;
223
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild"> & {
223
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
224
224
  label?: string | undefined;
225
225
  shouldFilter?: boolean | undefined;
226
226
  filter?: ((value: string, search: string, keywords?: string[] | undefined) => number) | undefined;
@@ -243,7 +243,7 @@ export declare const CommandEmpty: React_2.ForwardRefExoticComponent<Omit<{
243
243
  ref?: React_2.Ref<HTMLDivElement> | undefined;
244
244
  } & {
245
245
  asChild?: boolean | undefined;
246
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild"> & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
246
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>> & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
247
247
 
248
248
  export declare const CommandGroup: React_2.ForwardRefExoticComponent<Omit<{
249
249
  children?: React_2.ReactNode;
@@ -251,7 +251,7 @@ export declare const CommandGroup: React_2.ForwardRefExoticComponent<Omit<{
251
251
  ref?: React_2.Ref<HTMLDivElement> | undefined;
252
252
  } & {
253
253
  asChild?: boolean | undefined;
254
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
254
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
255
255
  heading?: React_2.ReactNode;
256
256
  value?: string | undefined;
257
257
  forceMount?: boolean | undefined;
@@ -272,7 +272,7 @@ export declare const CommandItem: React_2.ForwardRefExoticComponent<Omit<{
272
272
  ref?: React_2.Ref<HTMLDivElement> | undefined;
273
273
  } & {
274
274
  asChild?: boolean | undefined;
275
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "disabled" | "onSelect"> & {
275
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>>, "value" | "disabled" | "onSelect"> & {
276
276
  disabled?: boolean | undefined;
277
277
  onSelect?: ((value: string) => void) | undefined;
278
278
  value?: string | undefined;
@@ -286,7 +286,7 @@ export declare const CommandList: React_2.ForwardRefExoticComponent<Omit<{
286
286
  ref?: React_2.Ref<HTMLDivElement> | undefined;
287
287
  } & {
288
288
  asChild?: boolean | undefined;
289
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild"> & {
289
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
290
290
  label?: string | undefined;
291
291
  } & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
292
292
 
@@ -294,7 +294,7 @@ export declare const CommandSeparator: React_2.ForwardRefExoticComponent<Omit<Pi
294
294
  ref?: React_2.Ref<HTMLDivElement> | undefined;
295
295
  } & {
296
296
  asChild?: boolean | undefined;
297
- }, "key" | keyof React_2.HTMLAttributes<HTMLDivElement> | "asChild"> & {
297
+ }, "key" | "asChild" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
298
298
  alwaysRender?: boolean | undefined;
299
299
  } & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
300
300
 
@@ -552,7 +552,7 @@ export declare const MultiSelectorItem: default_2.ForwardRefExoticComponent<{
552
552
  ref?: default_2.Ref<HTMLDivElement> | undefined;
553
553
  } & {
554
554
  asChild?: boolean | undefined;
555
- }, "key" | keyof default_2.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "disabled" | "onSelect"> & {
555
+ }, "key" | "asChild" | keyof default_2.HTMLAttributes<HTMLDivElement>>, "value" | "disabled" | "onSelect"> & {
556
556
  disabled?: boolean | undefined;
557
557
  onSelect?: ((value: string) => void) | undefined;
558
558
  value?: string | undefined;
@@ -566,7 +566,7 @@ export declare const MultiSelectorList: default_2.ForwardRefExoticComponent<Omit
566
566
  ref?: default_2.Ref<HTMLDivElement> | undefined;
567
567
  } & {
568
568
  asChild?: boolean | undefined;
569
- }, "key" | keyof default_2.HTMLAttributes<HTMLDivElement> | "asChild"> & {
569
+ }, "key" | "asChild" | keyof default_2.HTMLAttributes<HTMLDivElement>> & {
570
570
  label?: string | undefined;
571
571
  } & default_2.RefAttributes<HTMLDivElement>, "ref"> & default_2.RefAttributes<HTMLDivElement>>;
572
572
 
@@ -801,9 +801,17 @@ declare interface TextProps {
801
801
 
802
802
  export declare const Toast: React_2.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastProps & React_2.RefAttributes<HTMLLIElement>, "ref"> & VariantProps<(props?: ({
803
803
  variant?: "white" | "black" | null | undefined;
804
- size?: "full" | "sm" | "md" | "lg" | "fit" | "xl" | null | undefined;
804
+ size?: "full" | "sm" | "md" | "lg" | "xl" | "fit" | null | undefined;
805
805
  } & ClassProp) | undefined) => string> & React_2.RefAttributes<HTMLLIElement>>;
806
806
 
807
+ export declare function toast({ ...props }: Toast_2): {
808
+ id: string;
809
+ dismiss: () => void;
810
+ update: (props: ToasterProps) => void;
811
+ };
812
+
813
+ declare type Toast_2 = Omit<ToasterProps, "id">;
814
+
807
815
  export declare const ToastAction: React_2.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastActionProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;
808
816
 
809
817
  export declare type ToastActionElement = React_2.ReactElement<typeof ToastAction>;
@@ -812,6 +820,20 @@ export declare const ToastClose: React_2.ForwardRefExoticComponent<Omit<ToastPri
812
820
 
813
821
  export declare const ToastDescription: React_2.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastDescriptionProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
814
822
 
823
+ export declare type ToasterProps = ToastProps & ToastViewportProps & {
824
+ id?: string;
825
+ title?: React_2.ReactNode;
826
+ description?: React_2.ReactNode;
827
+ onAction?: () => void;
828
+ actionBtnText?: string | React_2.ReactNode;
829
+ closeButton?: boolean;
830
+ onClose?: () => void;
831
+ };
832
+
833
+ export declare function ToastForm(props: ToasterProps): JSX_2.Element;
834
+
835
+ export declare function ToastManager(): JSX_2.Element;
836
+
815
837
  export declare type ToastPositionsType = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
816
838
 
817
839
  export declare const toastPositionVariants: Record<ToastPositionsType, string>;
@@ -824,7 +846,7 @@ export declare const ToastTitle: React_2.ForwardRefExoticComponent<Omit<ToastPri
824
846
 
825
847
  export declare const toastVariants: (props?: ({
826
848
  variant?: "white" | "black" | null | undefined;
827
- size?: "full" | "sm" | "md" | "lg" | "fit" | "xl" | null | undefined;
849
+ size?: "full" | "sm" | "md" | "lg" | "xl" | "fit" | null | undefined;
828
850
  } & ClassProp) | undefined) => string;
829
851
 
830
852
  export declare const ToastViewport: React_2.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastViewportProps & React_2.RefAttributes<HTMLOListElement>, "ref"> & {
@@ -836,7 +858,7 @@ export declare type ToastViewportProps = React_2.ComponentPropsWithoutRef<typeof
836
858
  export declare const Toggle: React_2.ForwardRefExoticComponent<Omit<TogglePrimitive.ToggleProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
837
859
  variant?: "solid" | "outline" | null | undefined;
838
860
  theme?: "primary" | "secondary" | null | undefined;
839
- size?: "xs" | "sm" | "md" | "lg" | "icon" | null | undefined;
861
+ size?: "sm" | "md" | "lg" | "xs" | "icon" | null | undefined;
840
862
  shape?: "square" | "rounded" | null | undefined;
841
863
  checked?: boolean | null | undefined;
842
864
  } & ClassProp) | undefined) => string> & React_2.RefAttributes<HTMLButtonElement>>;
@@ -856,7 +878,7 @@ export declare type ToggleButtonType = "single" | "multiple";
856
878
  export declare const ToggleGroup: React_2.ForwardRefExoticComponent<((ToggleGroupPrimitive.ToggleGroupSingleProps | ToggleGroupPrimitive.ToggleGroupMultipleProps) & VariantProps<(props?: ({
857
879
  variant?: "solid" | "outline" | null | undefined;
858
880
  theme?: "primary" | "secondary" | null | undefined;
859
- size?: "xs" | "sm" | "md" | "lg" | "icon" | null | undefined;
881
+ size?: "sm" | "md" | "lg" | "xs" | "icon" | null | undefined;
860
882
  shape?: "square" | "rounded" | null | undefined;
861
883
  checked?: boolean | null | undefined;
862
884
  } & ClassProp) | undefined) => string>) & React_2.RefAttributes<HTMLDivElement>>;
@@ -880,7 +902,7 @@ declare interface ToggleGroupItemProps extends ToggleGroupPrimitive.ToggleGroupI
880
902
  export declare const toggleVariants: (props?: ({
881
903
  variant?: "solid" | "outline" | null | undefined;
882
904
  theme?: "primary" | "secondary" | null | undefined;
883
- size?: "xs" | "sm" | "md" | "lg" | "icon" | null | undefined;
905
+ size?: "sm" | "md" | "lg" | "xs" | "icon" | null | undefined;
884
906
  shape?: "square" | "rounded" | null | undefined;
885
907
  checked?: boolean | null | undefined;
886
908
  } & ClassProp) | undefined) => string;
@@ -940,6 +962,12 @@ export declare const useFormField: () => {
940
962
  formMessageId: string;
941
963
  };
942
964
 
965
+ export declare function useToast(): {
966
+ toast: typeof toast;
967
+ dismiss: (toastId?: string) => void;
968
+ toasts: ToasterProps[];
969
+ };
970
+
943
971
  declare function ViewCard({ size, fill, }: SvgIconType): JSX_2.Element;
944
972
 
945
973
  declare function ViewMore({ size, fill, }: SvgIconType): JSX_2.Element;
@@ -0,0 +1 @@
1
+ "use client";"use strict";var _=Object.defineProperty;var q=(s,e,t)=>e in s?_(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var b=(s,e,t)=>q(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),o=require("react/jsx-runtime"),L=require("react-dom"),g=require("../common-DeneXo5X.cjs"),c=require("./dialog.cjs.js"),M=require("./icons.cjs.js"),C=require("./button.cjs.js"),Y=require("../index-DKCqkplO.cjs");function I(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const v=I(p),B=s=>"forceMount"in s&&s.forceMount===!0;class H{constructor(){b(this,"listeners",new Set);b(this,"portals",new Map);b(this,"queue",[]);b(this,"isProcessing",!1);b(this,"pendingEvents",[]);b(this,"broadcastScheduled",!1);b(this,"openPortalsSnapshot",[])}schedule(e){typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(()=>e()):setTimeout(e,0)}processQueue(){if(this.isProcessing||this.queue.length===0)return;this.isProcessing=!0;const e=()=>{const t=this.queue.shift();if(!t){this.isProcessing=!1;return}try{t()}finally{this.schedule(e)}};e()}scheduleBroadcast(e){this.pendingEvents.push(e),!this.broadcastScheduled&&(this.broadcastScheduled=!0,this.queue.push(()=>{const t=this.pendingEvents.slice();this.pendingEvents=[],this.broadcastScheduled=!1;for(const n of t)this.listeners.forEach(a=>{try{a(n.options,n.isOpen)}catch(u){process.env.NODE_ENV!=="production"&&console.error("[PortalManager] listener error:",u)}})}),this.processQueue())}isPortalOpen(e){var t;return((t=this.portals.get(e))==null?void 0:t.isOpen)??!1}rebuildSnapshot(){const e=[];for(const[t,n]of this.portals.entries())n.isOpen&&e.push(t);this.openPortalsSnapshot=e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}openPortal(e,t){const n=t.id??this.generateId(e);if(this.isPortalOpen(n))return n;const u={...{id:n,type:e,props:{...t,id:n}},isOpen:!0};return this.portals.set(n,u),this.rebuildSnapshot(),this.scheduleBroadcast({options:u,isOpen:!0}),n}setPortalOpen(e,t,n="default"){var u,i;const a=this.portals.get(e);if(a&&!(!t&&B(a.props)&&n!=="force")&&a.isOpen!==t){if(!t){const r=a._openedAt;if(r&&Date.now()-r<300)return}a.isOpen=t,t&&(a._openedAt=Date.now()),this.portals.set(e,a),this.rebuildSnapshot(),this.scheduleBroadcast({options:a,isOpen:t}),t||(i=(u=a.props).onClose)==null||i.call(u)}}updatePortal(e,t,n){const a=this.portals.get(e);if(!a||a.type!==t)return;const u={...a,props:{...a.props,...n}};this.portals.set(e,u),this.scheduleBroadcast({options:u,isOpen:!0})}closePortal(e){this.setPortalOpen(e,!1)}forceClosePortal(e){const t=this.portals.get(e);t&&(t._forceClose=!0,this.setPortalOpen(e,!1,"force"),delete t._forceClose)}closeAllPortals(){this.getOpenPortals().forEach(e=>this.closePortal(e))}getIsPortalOpen(e){var t;return((t=this.portals.get(e))==null?void 0:t.isOpen)??!1}getOpenPortals(){const e=[];for(const[t,n]of this.portals.entries())n.isOpen&&e.push(t);return e}getOpenPortalsSnapshot(){return this.openPortalsSnapshot}generateId(e){const t=typeof window<"u"&&window.location?window.location.pathname:"ssr";return`${e}_${t}`}}const x=new H,U=[],$=s=>x.subscribe(s),K=()=>x.getOpenPortalsSnapshot(),Q=()=>U,W=()=>{const s=p.useSyncExternalStore($,K,Q),e=p.useCallback((l,f)=>x.openPortal(l,{...f,onClose:f.onClose??(()=>{})}),[]),t=p.useCallback(l=>e("modal",l),[e]),n=p.useCallback(l=>typeof l=="string"?e("alert",{description:l}):e("alert",l),[e]),a=p.useCallback(l=>e("dialog",l),[e]),u=p.useCallback(l=>e("custom",l),[e]),i=p.useCallback(l=>x.getIsPortalOpen(l),[]),r=p.useCallback(l=>x.closePortal(l),[]),m=p.useCallback(l=>x.forceClosePortal(l),[]),d=p.useCallback(()=>x.closeAllPortals(),[]);return{open:e,confirm:t,alert:n,dialog:a,custom:u,getIsOpen:i,closePortal:r,forceClosePortal:m,closeAllPortals:d,openPortals:s}},G=new Set(["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," ","Spacebar"]);function J(s){return s instanceof HTMLElement}function F(s,e){let t=s;for(;t;){const n=window.getComputedStyle(t);if(/(auto|scroll|overlay)/.test(n.overflowY)&&t.scrollHeight>t.clientHeight)return t;if(e&&t===e)break;t=t.parentElement}return null}function P(s,e,t){if(!s||!J(e)||!s.contains(e))return!1;const n=F(e,s)??F(s,s);return n?t<0?n.scrollTop>0:t>0?n.scrollTop+n.clientHeight<n.scrollHeight:!0:!1}function O(s,e){const t=p.useRef(null);p.useEffect(()=>{if(typeof document>"u"||!s)return;const n=r=>{P(e.current,r.target,r.deltaY)||r.preventDefault()},a=r=>{var m;t.current=((m=r.touches[0])==null?void 0:m.clientY)??null},u=r=>{var f;const m=(f=r.touches[0])==null?void 0:f.clientY,d=t.current;if(m==null||d==null){r.preventDefault();return}const l=d-m;P(e.current,r.target,l)||r.preventDefault()},i=r=>{if(!G.has(r.key))return;const m=r.key==="ArrowUp"||r.key==="PageUp"||r.key==="Home"?-1:1;P(e.current,document.activeElement,m)||r.preventDefault()};return document.addEventListener("wheel",n,{passive:!1,capture:!0}),document.addEventListener("touchstart",a,{passive:!0,capture:!0}),document.addEventListener("touchmove",u,{passive:!1,capture:!0}),document.addEventListener("keydown",i,{capture:!0}),()=>{document.removeEventListener("wheel",n,{capture:!0}),document.removeEventListener("touchstart",a,{capture:!0}),document.removeEventListener("touchmove",u,{capture:!0}),document.removeEventListener("keydown",i,{capture:!0})}},[s,e])}const V={sm:"w-full max-w-[344px]",md:"w-full max-w-[500px]",lg:"w-full max-w-[640px]",fit:"w-fit max-w-fit"},z=({title:s="알림",description:e,confirmText:t="확인",onConfirm:n,size:a="sm",onClose:u,theme:i="primary",children:r,forceMount:m,open:d=!0})=>{const l=v.useRef(null);return O(!0,l),o.jsxs(c.Dialog,{modal:!1,open:r?void 0:d,onOpenChange:f=>{!f&&u&&u()},children:[r&&o.jsx(c.DialogTrigger,{asChild:!0,children:r}),o.jsx("div",{"aria-hidden":"true","data-state":d?"open":"closed",className:g.cn("bt-ds-portal-backdrop fixed inset-0 z-50 bg-black/60 transition-opacity duration-200 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0")}),o.jsxs(c.DialogContent,{ref:l,forceMount:m,onInteractOutside:f=>f.preventDefault(),className:g.cn("z-[60] gap-4 rounded-lg p-4",V[a]),children:[o.jsxs(c.DialogHeader,{className:"space-y-2 text-left md:text-left",children:[o.jsx(c.DialogTitle,{className:"whitespace-pre-wrap px-0 text-base font-semibold md:px-0",children:s}),o.jsx(c.DialogDescription,{className:"w-full whitespace-pre-wrap px-0 text-sm text-grey-600 md:px-0",children:e})]}),o.jsx(c.DialogClose,{asChild:!0,children:o.jsx(C.Button,{theme:i,size:"sm",className:g.cn("w-full font-normal"),onClick:()=>{n&&n()},children:t})})]})]})},X={sm:"w-full max-w-[324px]",md:"w-full max-w-[324px] md:max-w-[600px]",lg:"w-full max-w-[324px] md:max-w-[600px] lg:max-w-[800px]",xl:"w-full max-w-[324px] md:max-w-[600px] lg:max-w-[900px] xl:max-w-[1100px]",max:"w-full max-w-[324px] md:max-w-[600px] lg:max-w-[1000px] xl:max-w-[1280px]",fit:"w-fit min-w-[324px]",full:"w-screen h-screen max-w-none max-h-none",auto:"w-full max-w-[324px] md:max-w-[600px] lg:max-w-[80vw] xl:max-w-[90vw]"},S=p.forwardRef(({id:s,title:e,description:t,onClose:n,content:a,className:u,open:i=!0,onOpenChange:r,footer:m,children:d,forceMount:l,size:f="md",...h},w)=>o.jsxs(c.Dialog,{modal:!1,open:d?void 0:i,onOpenChange:j=>{!j&&n&&n()},children:[d&&o.jsx(c.DialogTrigger,{asChild:!0,children:d}),o.jsx("div",{"aria-hidden":"true","data-state":i?"open":"closed",className:g.cn("bt-ds-portal-backdrop fixed inset-0 z-50 bg-black/50 transition-opacity duration-200 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0")}),o.jsxs(c.DialogContent,{ref:w,forceMount:l,className:g.cn("z-[60] flex flex-col gap-4 overflow-hidden rounded-lg px-0 py-0 pb-3 md:rounded-xl md:pb-4",X[f],u),...h,children:[o.jsxs(c.DialogHeader,{className:"sticky left-0 right-0 top-0 z-50 border-b border-b-border bg-white",children:[o.jsx(c.DialogTitle,{className:"flex w-full items-center justify-start whitespace-pre-wrap p-3 md:justify-center md:p-4",children:e}),!l&&o.jsxs(c.DialogClose,{className:"absolute right-2 top-3 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground md:right-3 md:top-4",children:[o.jsx(M.Icon.Cancel,{size:"14"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]}),t&&o.jsx(c.DialogDescription,{className:"text-sm text-grey-600",children:t}),a&&o.jsx(c.DialogDescription,{children:a}),m&&o.jsx(c.DialogFooter,{children:m})]})]}));S.displayName="DialogForm";const E=p.forwardRef(({open:s=!0,onClose:e,className:t,contents:n,children:a,...u},i)=>o.jsxs(c.Dialog,{modal:!1,open:a?void 0:s,onOpenChange:r=>{!r&&e&&e()},children:[a&&o.jsx(c.DialogTrigger,{asChild:!0,children:a}),o.jsx("div",{"aria-hidden":"true","data-state":s?"open":"closed",className:g.cn("bt-ds-portal-backdrop fixed inset-0 z-50 bg-black/50 transition-opacity duration-200 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0")}),o.jsx(c.DialogContent,{ref:i,className:g.cn("z-[60] flex flex-col gap-0 px-0 py-0",t),...u,children:n&&o.jsx(o.Fragment,{children:n})})]}));E.displayName="FreeForm";const Z={sm:"w-full max-w-[344px]",md:"w-full max-w-[500px]",lg:"w-full max-w-[640px]",fit:"w-fit max-w-fit"},N=v.forwardRef(({title:s,description:e,subDescription:t,contents:n,onConfirm:a,confirmText:u="확인",onCancel:i,cancelText:r="취소",size:m="sm",className:d,onClose:l,theme:f="primary",children:h,forceMount:w,open:j=!0,...A},D)=>{const k=v.useRef(null);O(!0,k);const R=y=>{k.current=y,typeof D=="function"?D(y):D&&(D.current=y)};return o.jsxs(c.Dialog,{modal:!1,open:h?void 0:j,onOpenChange:y=>{!y&&l&&l()},children:[h&&o.jsx(c.DialogTrigger,{asChild:!0,children:h}),o.jsx("div",{"aria-hidden":"true","data-state":j?"open":"closed",className:g.cn("bt-ds-portal-backdrop fixed inset-0 z-50 bg-black/60 transition-opacity duration-200 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0")}),o.jsxs(c.DialogContent,{ref:R,forceMount:w,onInteractOutside:y=>y.preventDefault(),className:g.cn("z-[60] gap-2 rounded-lg p-4",Z[m],d),...A,children:[o.jsxs(c.DialogHeader,{className:"space-y-2 text-left md:text-left",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(c.DialogTitle,{className:"px-0 text-base font-semibold leading-6 md:px-0",children:s}),!w&&o.jsx(c.DialogClose,{asChild:!0,children:o.jsx("button",{type:"button",className:"mt-0 h-auto w-auto border-none p-0",children:o.jsx(M.Icon.Cancel,{size:"14",fill:Y.colors.grey[600]})})})]}),e&&o.jsx(c.DialogDescription,{className:"w-full px-0 text-start text-sm text-grey-800 md:px-0",children:e}),t&&o.jsx(c.DialogDescription,{className:"w-full px-0 text-start text-xs text-grey-600",children:t})]}),n&&o.jsx(o.Fragment,{children:n}),o.jsxs(c.DialogFooter,{className:"flex w-full flex-col gap-1 border-t-0 px-0 md:flex-row md:items-center md:justify-between md:gap-2 md:px-0",children:[o.jsx(c.DialogClose,{asChild:!0,children:o.jsx(C.Button,{variant:"outline",theme:"secondary",size:"sm",onClick:()=>{i&&i()},className:"w-full md:w-1/2",children:r})}),o.jsx(c.DialogClose,{asChild:!0,children:o.jsx(C.Button,{theme:f,size:"sm",onClick:()=>{a&&a()},className:"w-full md:w-1/2",children:u})})]})]})]})});N.displayName="ModalForm";const T=s=>"forceMount"in s&&s.forceMount===!0,ee={modal:(s,e)=>o.jsx(N,{...s.props,open:s.isOpen,onClose:e},s.id),alert:(s,e)=>o.jsx(z,{...s.props,open:s.isOpen,onClose:e},s.id),dialog:(s,e)=>o.jsx(S,{...s.props,open:s.isOpen,onClose:e},s.id),custom:(s,e)=>o.jsx(E,{...s.props,open:s.isOpen,onClose:e},s.id)},te=()=>{const[s,e]=p.useState([]),t=p.useRef(new Map),n=300,a=p.useRef(new Map);p.useEffect(()=>{const i=x.subscribe((r,m)=>{e(d=>{const l=d.findIndex(f=>f.id===r.id);if(m)if(l===-1){const f=[...d,{...r,isOpen:!0}];a.current.set(r.id,Date.now());const h=t.current.get(r.id);return h&&(clearTimeout(h),t.current.delete(r.id)),f}else{const f=d.slice();f[l]={...f[l],...r,isOpen:!0},a.current.set(r.id,Date.now());const h=t.current.get(r.id);return h&&(clearTimeout(h),t.current.delete(r.id)),f}else{if(l===-1)return d;const f=r._forceClose===!0;if(T(d[l].props)&&!f)return d;const h=a.current.get(r.id);if(h&&Date.now()-h<n)return d;const w=d.slice();return w[l]={...w[l],isOpen:!1},w}})});return()=>i()},[]);const u=p.useCallback(i=>{const r=s.find(m=>m.id===i);r&&T(r.props)||x.setPortalOpen(i,!1)},[s]);return p.useEffect(()=>{const i=t.current;s.forEach(r=>{if(!r.isOpen&&!i.has(r.id)){const m=setTimeout(()=>{e(d=>d.filter(l=>l.id!==r.id)),i.delete(r.id)},300);i.set(r.id,m)}})},[s]),p.useEffect(()=>{const i=t.current;return()=>{i.forEach(r=>clearTimeout(r)),i.clear()}},[]),o.jsx(se,{children:s.map(i=>{const r=ee[i.type];return r(i,()=>u(i.id))})})},se=({children:s})=>{const[e,t]=p.useState(null);return p.useEffect(()=>{if(typeof document>"u")return;let n=document.getElementById("portal");n||(n=document.createElement("div"),n.id="portal",document.body.appendChild(n)),t(n)},[]),e?L.createPortal(s,e):null};exports.AlertForm=z;exports.DialogForm=S;exports.FreeForm=E;exports.ModalForm=N;exports.PortalProvider=te;exports.portalManager=x;exports.usePortal=W;exports.usePortalBodyScrollLock=O;