@owp/core 2.5.30 → 2.5.32

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 (44) hide show
  1. package/dist/_virtual/index20.js +2 -2
  2. package/dist/_virtual/index21.js +2 -2
  3. package/dist/_virtual/index22.js +2 -2
  4. package/dist/components/OwpPageContent/OwpPageContent.js +1 -1
  5. package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
  6. package/dist/components/OwpSection/OwpSection.js +1 -1
  7. package/dist/components/OwpSection/OwpSection.js.map +1 -1
  8. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +813 -241
  9. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  10. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +266 -252
  11. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  12. package/dist/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.js +59 -0
  13. package/dist/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.js.map +1 -0
  14. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.js +27 -0
  15. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.js.map +1 -0
  16. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +607 -510
  17. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  18. package/dist/components/OwpTreeGrid/internal/treeGridSelection.js +61 -0
  19. package/dist/components/OwpTreeGrid/internal/treeGridSelection.js.map +1 -0
  20. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +157 -154
  21. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  22. package/dist/hooks/useMinimumVisibleState.js.map +1 -0
  23. package/dist/hooks.js +47 -45
  24. package/dist/hooks.js.map +1 -1
  25. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/match/index.js +1 -1
  26. package/dist/node_modules/.pnpm/autosuggest-highlight@3.3.4/node_modules/autosuggest-highlight/parse/index.js +1 -1
  27. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  28. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  29. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  30. package/dist/types/components/OwpSelectorBase/types/types.d.ts +2 -0
  31. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +5 -1
  32. package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.d.ts +12 -0
  33. package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.d.ts +17 -0
  34. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +6 -1
  35. package/dist/types/components/OwpTreeGrid/internal/treeGridSelection.d.ts +12 -0
  36. package/dist/types/hooks/index.d.ts +1 -0
  37. package/dist/types/hooks/useMinimumVisibleState.d.ts +6 -0
  38. package/dist/types/utils/treeGridUtil.d.ts +6 -1
  39. package/dist/utils/treeGridUtil.js +299 -251
  40. package/dist/utils/treeGridUtil.js.map +1 -1
  41. package/package.json +1 -1
  42. package/dist/hooks/internal/useMinimumVisibleState.js.map +0 -1
  43. package/dist/types/hooks/internal/useMinimumVisibleState.d.ts +0 -7
  44. /package/dist/hooks/{internal/useMinimumVisibleState.js → useMinimumVisibleState.js} +0 -0
@@ -1,5 +1,5 @@
1
- var a = { exports: {} };
1
+ var p = { exports: {} };
2
2
  export {
3
- a as __module
3
+ p as __module
4
4
  };
5
5
  //# sourceMappingURL=index20.js.map
@@ -1,5 +1,5 @@
1
- var e = { exports: {} };
1
+ var a = { exports: {} };
2
2
  export {
3
- e as __module
3
+ a as __module
4
4
  };
5
5
  //# sourceMappingURL=index21.js.map
@@ -1,5 +1,5 @@
1
- var p = { exports: {} };
1
+ var e = { exports: {} };
2
2
  export {
3
- p as __module
3
+ e as __module
4
4
  };
5
5
  //# sourceMappingURL=index22.js.map
@@ -2,7 +2,7 @@ var c = Object.defineProperty;
2
2
  var n = (e, o) => c(e, "name", { value: o, configurable: !0 });
3
3
  import { jsxs as a, jsx as s } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
4
  import { Divider as f } from "@mui/material";
5
- import { useMinimumVisibleState as p } from "../../hooks/internal/useMinimumVisibleState.js";
5
+ import { useMinimumVisibleState as p } from "../../hooks/useMinimumVisibleState.js";
6
6
  import { OwpPageTitle as h } from "../OwpPageTitle/OwpPageTitle.js";
7
7
  const P = /* @__PURE__ */ n(({
8
8
  title: e,
@@ -1 +1 @@
1
- {"version":3,"file":"OwpPageContent.js","sources":["../../../src/components/OwpPageContent/OwpPageContent.tsx"],"sourcesContent":["import { Divider } from '@mui/material';\nimport { useMinimumVisibleState } from '@/hooks/internal/useMinimumVisibleState';\nimport type { ReactNode } from 'react';\nimport { OwpPageTitle } from '../OwpPageTitle';\n\ninterface OwpPageContentProps {\n title?: ReactNode;\n leftSlot?: ReactNode;\n centerSlot?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n loading?: boolean;\n}\n\n/**\n * OwpPageContent 컴포넌트\n * @param title 제목\n * @param leftSlot leftSlot 값\n * @param centerSlot centerSlot 값\n * @param actions 액션 영역\n * @param children 하위 콘텐츠\n * @param loading 로딩 상태\n */\nconst OwpPageContent = ({\n title,\n leftSlot,\n centerSlot,\n actions,\n children,\n loading,\n}: OwpPageContentProps) => {\n const hasTitle = title !== undefined && title !== null && title !== '';\n const isLoadingVisible = useMinimumVisibleState(loading);\n const shouldRenderHeader = Boolean(hasTitle || leftSlot || centerSlot || actions);\n\n return (\n <div className=\"OwpPageContent-root flex h-full w-full flex-col\">\n {shouldRenderHeader && (\n <div className=\"OwpPageContent-header sticky\">\n <OwpPageTitle\n title={title}\n leftSlot={leftSlot}\n centerSlot={centerSlot}\n actions={actions}\n loading={isLoadingVisible}\n />\n <Divider className=\"my-12\" />\n </div>\n )}\n <div className=\"OwpPageContent-body flex min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n};\n\nexport { OwpPageContent };\n"],"names":["OwpPageContent","__name","title","leftSlot","centerSlot","actions","children","loading","hasTitle","isLoadingVisible","useMinimumVisibleState","jsxs","jsx","OwpPageTitle","Divider"],"mappings":";;;;;;AAuBA,MAAMA,IAAiB,gBAAAC,EAAA,CAAC;AAAA,EACtB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AACF,MAA2B;AACzB,QAAMC,IAAkCN,KAAU,QAAQA,MAAU,IAC9DO,IAAmBC,EAAuBH,CAAO;AAGvD,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,IAJsB,GAAQH,KAAYL,KAAYC,KAAcC,MAKnE,gBAAAM,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAAX;AAAA,UACA,UAAAC;AAAA,UACA,YAAAC;AAAA,UACA,SAAAC;AAAA,UACA,SAASI;AAAA,QAAA;AAAA,MAAA;AAAA,MAEX,gBAAAG,EAACE,GAAA,EAAQ,WAAU,QAAA,CAAQ;AAAA,IAAA,GAC7B;AAAA,IAEF,gBAAAF,EAAC,OAAA,EAAI,WAAU,oDAAoD,UAAAN,EAAA,CAAS;AAAA,EAAA,GAC9E;AAEJ,GA7BuB;"}
1
+ {"version":3,"file":"OwpPageContent.js","sources":["../../../src/components/OwpPageContent/OwpPageContent.tsx"],"sourcesContent":["import { Divider } from '@mui/material';\nimport { useMinimumVisibleState } from '@/hooks/useMinimumVisibleState';\nimport type { ReactNode } from 'react';\nimport { OwpPageTitle } from '../OwpPageTitle';\n\ninterface OwpPageContentProps {\n title?: ReactNode;\n leftSlot?: ReactNode;\n centerSlot?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n loading?: boolean;\n}\n\n/**\n * OwpPageContent 컴포넌트\n * @param title 제목\n * @param leftSlot leftSlot 값\n * @param centerSlot centerSlot 값\n * @param actions 액션 영역\n * @param children 하위 콘텐츠\n * @param loading 로딩 상태\n */\nconst OwpPageContent = ({\n title,\n leftSlot,\n centerSlot,\n actions,\n children,\n loading,\n}: OwpPageContentProps) => {\n const hasTitle = title !== undefined && title !== null && title !== '';\n const isLoadingVisible = useMinimumVisibleState(loading);\n const shouldRenderHeader = Boolean(hasTitle || leftSlot || centerSlot || actions);\n\n return (\n <div className=\"OwpPageContent-root flex h-full w-full flex-col\">\n {shouldRenderHeader && (\n <div className=\"OwpPageContent-header sticky\">\n <OwpPageTitle\n title={title}\n leftSlot={leftSlot}\n centerSlot={centerSlot}\n actions={actions}\n loading={isLoadingVisible}\n />\n <Divider className=\"my-12\" />\n </div>\n )}\n <div className=\"OwpPageContent-body flex min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n};\n\nexport { OwpPageContent };\n"],"names":["OwpPageContent","__name","title","leftSlot","centerSlot","actions","children","loading","hasTitle","isLoadingVisible","useMinimumVisibleState","jsxs","jsx","OwpPageTitle","Divider"],"mappings":";;;;;;AAuBA,MAAMA,IAAiB,gBAAAC,EAAA,CAAC;AAAA,EACtB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AACF,MAA2B;AACzB,QAAMC,IAAkCN,KAAU,QAAQA,MAAU,IAC9DO,IAAmBC,EAAuBH,CAAO;AAGvD,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,IAJsB,GAAQH,KAAYL,KAAYC,KAAcC,MAKnE,gBAAAM,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAAX;AAAA,UACA,UAAAC;AAAA,UACA,YAAAC;AAAA,UACA,SAAAC;AAAA,UACA,SAASI;AAAA,QAAA;AAAA,MAAA;AAAA,MAEX,gBAAAG,EAACE,GAAA,EAAQ,WAAU,QAAA,CAAQ;AAAA,IAAA,GAC7B;AAAA,IAEF,gBAAAF,EAAC,OAAA,EAAI,WAAU,oDAAoD,UAAAN,EAAA,CAAS;AAAA,EAAA,GAC9E;AAEJ,GA7BuB;"}
@@ -4,7 +4,7 @@ import { jsxs as n, jsx as e } from "../../node_modules/.pnpm/@emotion_react@11.
4
4
  import V from "../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Fitbit.js";
5
5
  import { CircularProgress as W, Divider as _ } from "@mui/material";
6
6
  import { useHeaderWrapState as z } from "../../hooks/internal/useHeaderWrapState.js";
7
- import { useMinimumVisibleState as F } from "../../hooks/internal/useMinimumVisibleState.js";
7
+ import { useMinimumVisibleState as F } from "../../hooks/useMinimumVisibleState.js";
8
8
  import { clsx as s } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
9
9
  const g = /* @__PURE__ */ t((l) => {
10
10
  switch (l) {
@@ -1 +1 @@
1
- {"version":3,"file":"OwpSection.js","sources":["../../../src/components/OwpSection/OwpSection.tsx"],"sourcesContent":["import FitbitIcon from '@mui/icons-material/Fitbit';\nimport { CircularProgress, Divider, type IconProps } from '@mui/material';\nimport { useHeaderWrapState } from '@/hooks/internal/useHeaderWrapState';\nimport { useMinimumVisibleState } from '@/hooks/internal/useMinimumVisibleState';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\n/**\n * 제목 아이콘 크기\n * @param iconSize MUI 아이콘 크기\n */\nconst getTitleIconSize = (iconSize?: IconProps['fontSize']) => {\n switch (iconSize) {\n case 'inherit':\n return '1em';\n case 'small':\n return '1.25rem';\n case 'large':\n return '2.1875rem';\n case 'medium':\n return '1.5rem';\n default:\n return 24;\n }\n};\n\ninterface OwpSectionProps {\n className?: string;\n headerProps?: HTMLAttributes<HTMLDivElement>;\n titleContainerClassName?: string;\n titleIconClassName?: string;\n titleTextClassName?: string;\n disableTitleIcon?: boolean;\n title?: ReactNode;\n actions?: ReactNode;\n leftSlot?: ReactNode;\n centerSlot?: ReactNode;\n children?: ReactNode;\n iconSize?: IconProps['fontSize'];\n loading?: boolean;\n showDivider?: boolean;\n}\n\n/**\n * OwpSection 컴포넌트\n * @param className CSS 클래스명\n * @param title 제목\n * @param disableTitleIcon disableTitleIcon 값\n * @param headerProps headerProps props\n * @param titleContainerClassName 제목 영역 CSS 클래스명\n * @param titleIconClassName 제목 아이콘 CSS 클래스명\n * @param titleTextClassName 제목 텍스트 CSS 클래스명\n * @param leftSlot leftSlot 값\n * @param centerSlot centerSlot 값\n * @param actions 액션 영역\n * @param loading 로딩 상태\n * @param showDivider 구분선 표시 여부\n */\nconst OwpSection = ({\n className,\n title,\n disableTitleIcon,\n headerProps,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n actions,\n leftSlot,\n centerSlot,\n children,\n iconSize,\n loading,\n showDivider = false,\n}: OwpSectionProps) => {\n const hasTitle = title !== undefined && title !== null && title !== '';\n const hasSlots = Boolean(leftSlot || centerSlot);\n const isLoadingVisible = useMinimumVisibleState(loading);\n const { containerRef, titleRef, slotsRef, actionsRef, isWrapped } = useHeaderWrapState([\n title,\n leftSlot,\n centerSlot,\n actions,\n disableTitleIcon,\n iconSize,\n isLoadingVisible,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n ]);\n const shouldRenderHeader = Boolean(hasTitle || actions || leftSlot || centerSlot);\n\n return (\n <div className={clsx('OwpSection-root flex h-full w-full flex-col', className)}>\n {shouldRenderHeader && (\n <div className={clsx('OwpSection-header min-h-36 w-full', !showDivider && 'mb-12')}>\n <div\n ref={containerRef}\n {...headerProps}\n className={clsx(\n 'min-h-36 w-full',\n isWrapped\n ? 'flex flex-col gap-8'\n : 'grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-8 gap-y-8',\n headerProps?.className,\n )}\n >\n {hasTitle && (\n <div\n ref={titleRef}\n className={clsx(\n 'flex shrink-0 items-center gap-8 whitespace-nowrap',\n isWrapped ? 'order-1 self-start' : 'col-start-1',\n titleContainerClassName,\n )}\n >\n {!disableTitleIcon &&\n (isLoadingVisible ? (\n <CircularProgress\n className={clsx('shrink-0', titleIconClassName)}\n size={getTitleIconSize(iconSize)}\n sx={{ color: 'secondary.main' }}\n />\n ) : (\n <FitbitIcon\n className={clsx('shrink-0', titleIconClassName)}\n sx={{ fontSize: getTitleIconSize(iconSize), color: 'secondary.main' }}\n />\n ))}\n <div\n className={clsx(\n 'shrink-0 whitespace-nowrap text-2xl font-medium',\n titleTextClassName,\n )}\n >\n {title}\n </div>\n </div>\n )}\n {hasSlots && (\n <div\n ref={slotsRef}\n className={clsx(\n 'flex max-w-full',\n isWrapped ? 'order-2 self-end justify-end' : 'col-start-2 justify-self-center',\n )}\n >\n <div\n className={clsx(\n 'flex max-w-full items-center gap-8',\n isWrapped ? 'flex-wrap justify-end' : 'flex-nowrap justify-center',\n )}\n >\n {leftSlot && <div className=\"max-w-full\">{leftSlot}</div>}\n {centerSlot && <div className=\"max-w-full\">{centerSlot}</div>}\n </div>\n </div>\n )}\n {actions && (\n <div\n ref={actionsRef}\n className={clsx(\n 'flex max-w-full justify-end',\n isWrapped ? 'order-3 self-end' : 'col-start-3 justify-self-end',\n )}\n >\n <div className=\"flex max-w-full flex-wrap items-center gap-8\">{actions}</div>\n </div>\n )}\n </div>\n {showDivider && <Divider className=\"my-12\" />}\n </div>\n )}\n <div className=\"OwpSection-body flex min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n};\n\nexport { OwpSection };\n"],"names":["getTitleIconSize","__name","iconSize","OwpSection","className","title","disableTitleIcon","headerProps","titleContainerClassName","titleIconClassName","titleTextClassName","actions","leftSlot","centerSlot","children","loading","showDivider","hasTitle","hasSlots","isLoadingVisible","useMinimumVisibleState","containerRef","titleRef","slotsRef","actionsRef","isWrapped","useHeaderWrapState","shouldRenderHeader","clsx","jsxs","jsx","CircularProgress","FitbitIcon","Divider"],"mappings":"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"}
1
+ {"version":3,"file":"OwpSection.js","sources":["../../../src/components/OwpSection/OwpSection.tsx"],"sourcesContent":["import FitbitIcon from '@mui/icons-material/Fitbit';\nimport { CircularProgress, Divider, type IconProps } from '@mui/material';\nimport { useHeaderWrapState } from '@/hooks/internal/useHeaderWrapState';\nimport { useMinimumVisibleState } from '@/hooks/useMinimumVisibleState';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\n/**\n * 제목 아이콘 크기\n * @param iconSize MUI 아이콘 크기\n */\nconst getTitleIconSize = (iconSize?: IconProps['fontSize']) => {\n switch (iconSize) {\n case 'inherit':\n return '1em';\n case 'small':\n return '1.25rem';\n case 'large':\n return '2.1875rem';\n case 'medium':\n return '1.5rem';\n default:\n return 24;\n }\n};\n\ninterface OwpSectionProps {\n className?: string;\n headerProps?: HTMLAttributes<HTMLDivElement>;\n titleContainerClassName?: string;\n titleIconClassName?: string;\n titleTextClassName?: string;\n disableTitleIcon?: boolean;\n title?: ReactNode;\n actions?: ReactNode;\n leftSlot?: ReactNode;\n centerSlot?: ReactNode;\n children?: ReactNode;\n iconSize?: IconProps['fontSize'];\n loading?: boolean;\n showDivider?: boolean;\n}\n\n/**\n * OwpSection 컴포넌트\n * @param className CSS 클래스명\n * @param title 제목\n * @param disableTitleIcon disableTitleIcon 값\n * @param headerProps headerProps props\n * @param titleContainerClassName 제목 영역 CSS 클래스명\n * @param titleIconClassName 제목 아이콘 CSS 클래스명\n * @param titleTextClassName 제목 텍스트 CSS 클래스명\n * @param leftSlot leftSlot 값\n * @param centerSlot centerSlot 값\n * @param actions 액션 영역\n * @param loading 로딩 상태\n * @param showDivider 구분선 표시 여부\n */\nconst OwpSection = ({\n className,\n title,\n disableTitleIcon,\n headerProps,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n actions,\n leftSlot,\n centerSlot,\n children,\n iconSize,\n loading,\n showDivider = false,\n}: OwpSectionProps) => {\n const hasTitle = title !== undefined && title !== null && title !== '';\n const hasSlots = Boolean(leftSlot || centerSlot);\n const isLoadingVisible = useMinimumVisibleState(loading);\n const { containerRef, titleRef, slotsRef, actionsRef, isWrapped } = useHeaderWrapState([\n title,\n leftSlot,\n centerSlot,\n actions,\n disableTitleIcon,\n iconSize,\n isLoadingVisible,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n ]);\n const shouldRenderHeader = Boolean(hasTitle || actions || leftSlot || centerSlot);\n\n return (\n <div className={clsx('OwpSection-root flex h-full w-full flex-col', className)}>\n {shouldRenderHeader && (\n <div className={clsx('OwpSection-header min-h-36 w-full', !showDivider && 'mb-12')}>\n <div\n ref={containerRef}\n {...headerProps}\n className={clsx(\n 'min-h-36 w-full',\n isWrapped\n ? 'flex flex-col gap-8'\n : 'grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-8 gap-y-8',\n headerProps?.className,\n )}\n >\n {hasTitle && (\n <div\n ref={titleRef}\n className={clsx(\n 'flex shrink-0 items-center gap-8 whitespace-nowrap',\n isWrapped ? 'order-1 self-start' : 'col-start-1',\n titleContainerClassName,\n )}\n >\n {!disableTitleIcon &&\n (isLoadingVisible ? (\n <CircularProgress\n className={clsx('shrink-0', titleIconClassName)}\n size={getTitleIconSize(iconSize)}\n sx={{ color: 'secondary.main' }}\n />\n ) : (\n <FitbitIcon\n className={clsx('shrink-0', titleIconClassName)}\n sx={{ fontSize: getTitleIconSize(iconSize), color: 'secondary.main' }}\n />\n ))}\n <div\n className={clsx(\n 'shrink-0 whitespace-nowrap text-2xl font-medium',\n titleTextClassName,\n )}\n >\n {title}\n </div>\n </div>\n )}\n {hasSlots && (\n <div\n ref={slotsRef}\n className={clsx(\n 'flex max-w-full',\n isWrapped ? 'order-2 self-end justify-end' : 'col-start-2 justify-self-center',\n )}\n >\n <div\n className={clsx(\n 'flex max-w-full items-center gap-8',\n isWrapped ? 'flex-wrap justify-end' : 'flex-nowrap justify-center',\n )}\n >\n {leftSlot && <div className=\"max-w-full\">{leftSlot}</div>}\n {centerSlot && <div className=\"max-w-full\">{centerSlot}</div>}\n </div>\n </div>\n )}\n {actions && (\n <div\n ref={actionsRef}\n className={clsx(\n 'flex max-w-full justify-end',\n isWrapped ? 'order-3 self-end' : 'col-start-3 justify-self-end',\n )}\n >\n <div className=\"flex max-w-full flex-wrap items-center gap-8\">{actions}</div>\n </div>\n )}\n </div>\n {showDivider && <Divider className=\"my-12\" />}\n </div>\n )}\n <div className=\"OwpSection-body flex min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n};\n\nexport { OwpSection };\n"],"names":["getTitleIconSize","__name","iconSize","OwpSection","className","title","disableTitleIcon","headerProps","titleContainerClassName","titleIconClassName","titleTextClassName","actions","leftSlot","centerSlot","children","loading","showDivider","hasTitle","hasSlots","isLoadingVisible","useMinimumVisibleState","containerRef","titleRef","slotsRef","actionsRef","isWrapped","useHeaderWrapState","shouldRenderHeader","clsx","jsxs","jsx","CircularProgress","FitbitIcon","Divider"],"mappings":"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"}