@bioturing/components 0.34.0 → 0.35.3

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 (100) hide show
  1. package/dist/components/base-menu/component.d.ts +12 -0
  2. package/dist/components/base-menu/component.d.ts.map +1 -0
  3. package/dist/components/base-menu/component.js +69 -0
  4. package/dist/components/base-menu/component.js.map +1 -0
  5. package/dist/components/base-menu/index.d.ts +18 -0
  6. package/dist/components/base-menu/index.d.ts.map +1 -0
  7. package/dist/components/base-menu/index.js +11 -0
  8. package/dist/components/base-menu/index.js.map +1 -0
  9. package/dist/components/base-menu/item.css +1 -0
  10. package/dist/components/base-menu/item.d.ts +47 -0
  11. package/dist/components/base-menu/item.d.ts.map +1 -0
  12. package/dist/components/base-menu/item.js +73 -0
  13. package/dist/components/base-menu/item.js.map +1 -0
  14. package/dist/components/base-menu/style.css +1 -0
  15. package/dist/components/breadcrumb/component.d.ts +3 -2
  16. package/dist/components/breadcrumb/component.d.ts.map +1 -1
  17. package/dist/components/breadcrumb/component.js +138 -38
  18. package/dist/components/breadcrumb/component.js.map +1 -1
  19. package/dist/components/breadcrumb/index.d.ts +1 -0
  20. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  21. package/dist/components/breadcrumb/item.d.ts +3 -0
  22. package/dist/components/breadcrumb/item.d.ts.map +1 -0
  23. package/dist/components/breadcrumb/item.js +19 -0
  24. package/dist/components/breadcrumb/item.js.map +1 -0
  25. package/dist/components/breadcrumb/style.css +1 -1
  26. package/dist/components/breadcrumb/types.d.ts +9 -2
  27. package/dist/components/breadcrumb/types.d.ts.map +1 -1
  28. package/dist/components/code-block/types.d.ts +2 -2
  29. package/dist/components/code-block/types.d.ts.map +1 -1
  30. package/dist/components/combobox/component.d.ts +3 -26
  31. package/dist/components/combobox/component.d.ts.map +1 -1
  32. package/dist/components/combobox/component.js +326 -216
  33. package/dist/components/combobox/component.js.map +1 -1
  34. package/dist/components/combobox/style.css +1 -1
  35. package/dist/components/command-palette/component.js +6 -6
  36. package/dist/components/command-palette/component.js.map +1 -1
  37. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  38. package/dist/components/dropdown-menu/component.js +90 -87
  39. package/dist/components/dropdown-menu/component.js.map +1 -1
  40. package/dist/components/dropdown-menu/divider.d.ts.map +1 -1
  41. package/dist/components/dropdown-menu/divider.js +17 -10
  42. package/dist/components/dropdown-menu/divider.js.map +1 -1
  43. package/dist/components/dropdown-menu/item.d.ts +19 -9
  44. package/dist/components/dropdown-menu/item.d.ts.map +1 -1
  45. package/dist/components/dropdown-menu/item.js +82 -131
  46. package/dist/components/dropdown-menu/item.js.map +1 -1
  47. package/dist/components/dropdown-menu/style.css +1 -1
  48. package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -1
  49. package/dist/components/dropdown-menu/useDropdownMenu.js +60 -63
  50. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  51. package/dist/components/field/component.d.ts +5 -1
  52. package/dist/components/field/component.d.ts.map +1 -1
  53. package/dist/components/field/component.js +29 -20
  54. package/dist/components/field/component.js.map +1 -1
  55. package/dist/components/popup-panel/component.d.ts.map +1 -1
  56. package/dist/components/popup-panel/component.js +101 -101
  57. package/dist/components/popup-panel/component.js.map +1 -1
  58. package/dist/components/select-trigger/component.d.ts +71 -9
  59. package/dist/components/select-trigger/component.d.ts.map +1 -1
  60. package/dist/components/select-trigger/component.js +180 -139
  61. package/dist/components/select-trigger/component.js.map +1 -1
  62. package/dist/components/select-trigger/index.d.ts +1 -2
  63. package/dist/components/select-trigger/index.d.ts.map +1 -1
  64. package/dist/components/select-trigger/style.css +1 -1
  65. package/dist/components/table/component.d.ts.map +1 -1
  66. package/dist/components/table/component.js +53 -52
  67. package/dist/components/table/component.js.map +1 -1
  68. package/dist/components/theme-provider/style.css +1 -1
  69. package/dist/components/truncate/component.d.ts.map +1 -1
  70. package/dist/components/truncate/component.js +84 -80
  71. package/dist/components/truncate/component.js.map +1 -1
  72. package/dist/components/truncate/helpers.d.ts +9 -0
  73. package/dist/components/truncate/helpers.d.ts.map +1 -1
  74. package/dist/components/truncate/helpers.js +70 -40
  75. package/dist/components/truncate/helpers.js.map +1 -1
  76. package/dist/components/truncate/index.d.ts +1 -0
  77. package/dist/components/truncate/index.d.ts.map +1 -1
  78. package/dist/components/truncate/useOverflowDetection.d.ts +19 -0
  79. package/dist/components/truncate/useOverflowDetection.d.ts.map +1 -0
  80. package/dist/components/truncate/useOverflowDetection.js +54 -0
  81. package/dist/components/truncate/useOverflowDetection.js.map +1 -0
  82. package/dist/components/utils/WithRenderProp.d.ts.map +1 -1
  83. package/dist/components/utils/WithRenderProp.js +10 -10
  84. package/dist/components/utils/WithRenderProp.js.map +1 -1
  85. package/dist/components/utils/client.d.ts +1 -0
  86. package/dist/components/utils/client.d.ts.map +1 -1
  87. package/dist/components/utils/createSyntheticClickEvent.d.ts +13 -0
  88. package/dist/components/utils/createSyntheticClickEvent.d.ts.map +1 -0
  89. package/dist/components/utils/createSyntheticClickEvent.js +62 -0
  90. package/dist/components/utils/createSyntheticClickEvent.js.map +1 -0
  91. package/dist/components/vertical-collapsible-panel/component.d.ts +14 -0
  92. package/dist/components/vertical-collapsible-panel/component.d.ts.map +1 -1
  93. package/dist/components/vertical-collapsible-panel/component.js +82 -75
  94. package/dist/components/vertical-collapsible-panel/component.js.map +1 -1
  95. package/dist/components/vertical-collapsible-panel/style.css +1 -1
  96. package/dist/index.js +273 -265
  97. package/dist/index.js.map +1 -1
  98. package/dist/stats.html +1 -1
  99. package/package.json +5 -6
  100. package/dist/components/dropdown-menu/item.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/field/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAqB,MAAM,OAAO,CAAC;AAKxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,OAAO,GACjD,QAAQ,GACR,CAAC,SAAS,QAAQ,GAClB,cAAc,GACd,KAAK,CAAC;AAEV,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,cAAc,GAAG;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG,cAAc,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,GACrE,eAAe,GACf,gBAAgB,CAAC;AAErB;;GAEG;AACH,QAAA,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EACrC,kDAOG,UAAU,CAAC,CAAC,CAAC,EAChB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4CA0B9B,CAAC;AAEF,eAAO,MAAM,KAAK,EAA6B,CAAC,CAAC,SAAS,SAAS,EACjE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,KACtD,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/field/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAqB,MAAM,OAAO,CAAC;AAKxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,OAAO,GACjD,QAAQ,GACR,CAAC,SAAS,QAAQ,GAClB,cAAc,GACd,KAAK,CAAC;AAEV,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;CACrD;AAED,KAAK,eAAe,GAAG,cAAc,GAAG;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG,cAAc,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,GACrE,eAAe,GACf,gBAAgB,CAAC;AAErB;;GAEG;AACH,QAAA,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EACrC,8DAQG,UAAU,CAAC,CAAC,CAAC,EAChB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4CA8B9B,CAAC;AAEF,eAAO,MAAM,KAAK,EAA6B,CAAC,CAAC,SAAS,SAAS,EACjE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,KACtD,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,32 +1,41 @@
1
1
  "use client";
2
2
  import { jsxs as m, jsx as n } from "react/jsx-runtime";
3
- import { Select as d, Input as f } from "antd";
4
- import { forwardRef as h, useId as x } from "react";
3
+ import { Select as h, Input as x } from "antd";
4
+ import { forwardRef as I, useId as N } from "react";
5
5
  import './style.css';/* empty css */
6
- import { useCls as I } from "../utils/antdUtils.js";
7
- import { useTheme as N } from "../theme-provider/context/themeStore.js";
8
- import { clsx as F } from "../utils/cn.js";
9
- const j = ({
6
+ import { useCls as F } from "../utils/antdUtils.js";
7
+ import { useTheme as j } from "../theme-provider/context/themeStore.js";
8
+ import { clsx as c } from "../utils/cn.js";
9
+ const C = ({
10
10
  label: r,
11
- className: c,
11
+ className: i,
12
12
  size: t = "small",
13
- colon: i = !0,
14
- type: p = "input",
13
+ colon: p = !0,
14
+ type: u = "input",
15
+ labelProps: a = {},
15
16
  ...s
16
17
  }, o) => {
17
- const l = I(), e = x(), { className: u } = N(), a = () => p === "select" ? (
18
+ const l = F(), e = N(), { className: d } = j(), f = () => u === "select" ? (
18
19
  // @ts-expect-error: this is a workaround for the type error
19
- /* @__PURE__ */ n(d, { id: e, ref: o, size: t, ...s.selectProps || {} })
20
- ) : /* @__PURE__ */ n(f, { id: e, ref: o, size: t, ...s.inputProps || {} });
21
- return /* @__PURE__ */ m("div", { className: F(l("field"), u, c), children: [
22
- r && /* @__PURE__ */ m("label", { htmlFor: e, className: l("field-label"), children: [
23
- r,
24
- i ? ":" : ""
25
- ] }),
26
- a()
20
+ /* @__PURE__ */ n(h, { id: e, ref: o, size: t, ...s.selectProps || {} })
21
+ ) : /* @__PURE__ */ n(x, { id: e, ref: o, size: t, ...s.inputProps || {} });
22
+ return /* @__PURE__ */ m("div", { className: c(l("field"), d, i), children: [
23
+ r && /* @__PURE__ */ m(
24
+ "label",
25
+ {
26
+ htmlFor: e,
27
+ className: c(l("field-label")),
28
+ ...a,
29
+ children: [
30
+ r,
31
+ p ? ":" : ""
32
+ ]
33
+ }
34
+ ),
35
+ f()
27
36
  ] });
28
- }, R = h(j);
37
+ }, T = I(C);
29
38
  export {
30
- R as Field
39
+ T as Field
31
40
  };
32
41
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/field/component.tsx"],"sourcesContent":["\"use client\";\nimport type { InputProps, InputRef, SelectProps } from \"antd\";\nimport { Input, Select } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { RefSelectProps } from \"antd/es/select\";\nimport { ForwardedRef, forwardRef, useId } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport { useTheme } from \"../theme-provider\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type FieldType = \"input\" | \"select\";\n\ntype RefType<T extends FieldType> = T extends \"input\"\n ? InputRef\n : T extends \"select\"\n ? RefSelectProps\n : never;\n\ninterface BaseFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: React.ReactNode;\n /**\n * Block or inline display\n * @default false\n */\n block?: boolean;\n /**\n * Size of the field\n * @default \"small\"\n */\n size?: SizeType;\n /**\n * Colon after label\n * @default true\n */\n colon?: boolean;\n}\n\ntype InputFieldProps = BaseFieldProps & {\n type?: \"input\";\n inputProps: InputProps;\n};\n\ntype SelectFieldProps = BaseFieldProps & {\n type: \"select\";\n selectProps: SelectProps;\n};\n\nexport type FieldProps<T extends FieldType = \"input\"> = T extends \"input\"\n ? InputFieldProps\n : SelectFieldProps;\n\n/**\n * Generic Field component that forwards ref to Input or Select\n */\nconst FieldInner = <T extends FieldType>(\n {\n label,\n className,\n size = \"small\",\n colon = true,\n type = \"input\",\n ...rest\n }: FieldProps<T>,\n ref: ForwardedRef<RefType<T>>\n) => {\n const cls = useCls();\n const id = useId();\n const { className: themeClassName } = useTheme();\n const renderInputOrSelect = () => {\n if (type === \"select\") {\n return (\n // @ts-expect-error: this is a workaround for the type error\n <Select id={id} ref={ref} size={size} {...(rest.selectProps || {})} />\n );\n }\n // @ts-expect-error: this is a workaround for the type error\n return <Input id={id} ref={ref} size={size} {...(rest.inputProps || {})} />;\n };\n return (\n <div className={clsx(cls(\"field\"), themeClassName, className)}>\n {label && (\n <label htmlFor={id} className={cls(\"field-label\")}>\n {label}\n {colon ? \":\" : \"\"}\n </label>\n )}\n {renderInputOrSelect()}\n </div>\n );\n};\n\nexport const Field = forwardRef(FieldInner) as <T extends FieldType>(\n props: FieldProps<T> & { ref?: ForwardedRef<RefType<T>> }\n) => ReturnType<typeof FieldInner<T>>;\n"],"names":["FieldInner","label","className","size","colon","type","rest","ref","cls","useCls","id","useId","themeClassName","useTheme","renderInputOrSelect","jsx","Select","Input","jsxs","clsx","Field","forwardRef"],"mappings":";;;;;;;;AAwDA,MAAMA,IAAa,CACjB;AAAA,EACE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,MACG;AACH,QAAMC,IAAMC,EAAA,GACNC,IAAKC,EAAA,GACL,EAAE,WAAWC,EAAA,IAAmBC,EAAA,GAChCC,IAAsB,MACtBT,MAAS;AAAA;AAAA,IAGT,gBAAAU,EAACC,KAAO,IAAAN,GAAQ,KAAAH,GAAU,MAAAJ,GAAa,GAAIG,EAAK,eAAe,GAAC,CAAI;AAAA,MAIjE,gBAAAS,EAACE,KAAM,IAAAP,GAAQ,KAAAH,GAAU,MAAAJ,GAAa,GAAIG,EAAK,cAAc,CAAA,GAAK;AAE3E,SACE,gBAAAY,EAAC,SAAI,WAAWC,EAAKX,EAAI,OAAO,GAAGI,GAAgBV,CAAS,GACzD,UAAA;AAAA,IAAAD,uBACE,SAAA,EAAM,SAASS,GAAI,WAAWF,EAAI,aAAa,GAC7C,UAAA;AAAA,MAAAP;AAAA,MACAG,IAAQ,MAAM;AAAA,IAAA,GACjB;AAAA,IAEDU,EAAA;AAAA,EAAoB,GACvB;AAEJ,GAEaM,IAAQC,EAAWrB,CAAU;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/field/component.tsx"],"sourcesContent":["\"use client\";\nimport type { InputProps, InputRef, SelectProps } from \"antd\";\nimport { Input, Select } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { RefSelectProps } from \"antd/es/select\";\nimport { ForwardedRef, forwardRef, useId } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport { useTheme } from \"../theme-provider\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type FieldType = \"input\" | \"select\";\n\ntype RefType<T extends FieldType> = T extends \"input\"\n ? InputRef\n : T extends \"select\"\n ? RefSelectProps\n : never;\n\ninterface BaseFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: React.ReactNode;\n /**\n * Block or inline display\n * @default false\n */\n block?: boolean;\n /**\n * Size of the field\n * @default \"small\"\n */\n size?: SizeType;\n /**\n * Colon after label\n * @default true\n */\n colon?: boolean;\n /**\n * Props for the label element\n */\n labelProps?: React.HTMLAttributes<HTMLLabelElement>;\n}\n\ntype InputFieldProps = BaseFieldProps & {\n type?: \"input\";\n inputProps: InputProps;\n};\n\ntype SelectFieldProps = BaseFieldProps & {\n type: \"select\";\n selectProps: SelectProps;\n};\n\nexport type FieldProps<T extends FieldType = \"input\"> = T extends \"input\"\n ? InputFieldProps\n : SelectFieldProps;\n\n/**\n * Generic Field component that forwards ref to Input or Select\n */\nconst FieldInner = <T extends FieldType>(\n {\n label,\n className,\n size = \"small\",\n colon = true,\n type = \"input\",\n labelProps = {},\n ...rest\n }: FieldProps<T>,\n ref: ForwardedRef<RefType<T>>\n) => {\n const cls = useCls();\n const id = useId();\n const { className: themeClassName } = useTheme();\n const renderInputOrSelect = () => {\n if (type === \"select\") {\n return (\n // @ts-expect-error: this is a workaround for the type error\n <Select id={id} ref={ref} size={size} {...(rest.selectProps || {})} />\n );\n }\n // @ts-expect-error: this is a workaround for the type error\n return <Input id={id} ref={ref} size={size} {...(rest.inputProps || {})} />;\n };\n return (\n <div className={clsx(cls(\"field\"), themeClassName, className)}>\n {label && (\n <label\n htmlFor={id}\n className={clsx(cls(\"field-label\"))}\n {...labelProps}\n >\n {label}\n {colon ? \":\" : \"\"}\n </label>\n )}\n {renderInputOrSelect()}\n </div>\n );\n};\n\nexport const Field = forwardRef(FieldInner) as <T extends FieldType>(\n props: FieldProps<T> & { ref?: ForwardedRef<RefType<T>> }\n) => ReturnType<typeof FieldInner<T>>;\n"],"names":["FieldInner","label","className","size","colon","type","labelProps","rest","ref","cls","useCls","id","useId","themeClassName","useTheme","renderInputOrSelect","jsx","Select","Input","jsxs","clsx","Field","forwardRef"],"mappings":";;;;;;;;AA4DA,MAAMA,IAAa,CACjB;AAAA,EACE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,YAAAC,IAAa,CAAA;AAAA,EACb,GAAGC;AACL,GACAC,MACG;AACH,QAAMC,IAAMC,EAAA,GACNC,IAAKC,EAAA,GACL,EAAE,WAAWC,EAAA,IAAmBC,EAAA,GAChCC,IAAsB,MACtBV,MAAS;AAAA;AAAA,IAGT,gBAAAW,EAACC,KAAO,IAAAN,GAAQ,KAAAH,GAAU,MAAAL,GAAa,GAAII,EAAK,eAAe,GAAC,CAAI;AAAA,MAIjE,gBAAAS,EAACE,KAAM,IAAAP,GAAQ,KAAAH,GAAU,MAAAL,GAAa,GAAII,EAAK,cAAc,CAAA,GAAK;AAE3E,SACE,gBAAAY,EAAC,SAAI,WAAWC,EAAKX,EAAI,OAAO,GAAGI,GAAgBX,CAAS,GACzD,UAAA;AAAA,IAAAD,KACC,gBAAAkB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASR;AAAA,QACT,WAAWS,EAAKX,EAAI,aAAa,CAAC;AAAA,QACjC,GAAGH;AAAA,QAEH,UAAA;AAAA,UAAAL;AAAA,UACAG,IAAQ,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGlBW,EAAA;AAAA,EAAoB,GACvB;AAEJ,GAEaM,IAAQC,EAAWtB,CAAU;"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/component.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C,OAAO,aAAa,CAAC;AAIrB,MAAM,WAAW,eACf,SAAQ,IAAI,CACR,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAClC,OAAO,GAAG,SAAS,GAAG,UAAU,CACjC,EACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;IACtC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,2DAA2D;IAC3D,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClD,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,8CAA8C;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EACH,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,UAAU,GAAI,mUAyBxB,eAAe,4CAqMjB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/component.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C,OAAO,aAAa,CAAC;AAIrB,MAAM,WAAW,eACf,SAAQ,IAAI,CACR,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAClC,OAAO,GAAG,SAAS,GAAG,UAAU,CACjC,EACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;IACtC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,2DAA2D;IAC3D,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClD,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,8CAA8C;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EACH,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,UAAU,GAAI,mUAyBxB,eAAe,4CAsMjB,CAAC"}
@@ -1,182 +1,182 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- import { Popover as o } from "@base-ui-components/react/popover";
4
- import { useMemo as W, useRef as w, useState as Y, useEffect as Z, useCallback as _ } from "react";
5
- import { X as B } from "@bioturing/assets";
2
+ import { jsx as e, jsxs as l } from "react/jsx-runtime";
3
+ import { Popover as i } from "@base-ui-components/react/popover";
4
+ import { useMemo as Y, useRef as N, useState as Z, useEffect as _, useCallback as B } from "react";
5
+ import { X as D } from "@bioturing/assets";
6
6
  import { PopupPanelSize as ee } from "./constants.js";
7
- import { Stack as te } from "../stack/index.js";
7
+ import { Stack as re } from "../stack/index.js";
8
8
  import './style.css';/* empty css */
9
- import { parseAntdPlacement as re, buildAntdPlacement as ne } from "../utils/placement.js";
10
- import { useDraggable as ie } from "../hooks/useDraggable.js";
11
- import { Resizable as oe } from "../resizable/component.js";
9
+ import { parseAntdPlacement as te, buildAntdPlacement as ne } from "../utils/placement.js";
10
+ import { useDraggable as oe } from "../hooks/useDraggable.js";
11
+ import { Resizable as ie } from "../resizable/component.js";
12
12
  import { useControlledState as pe } from "../hooks/useControlledState.js";
13
13
  import { useCls as ae } from "../utils/antdUtils.js";
14
- import { useTheme as le } from "../theme-provider/context/themeStore.js";
14
+ import { useTheme as se } from "../theme-provider/context/themeStore.js";
15
15
  import { clsx as p } from "../utils/cn.js";
16
- import { IconButton as se } from "../icon-button/component.js";
16
+ import { IconButton as le } from "../icon-button/component.js";
17
17
  const Re = ({
18
- children: z,
19
- placement: k,
20
- openOnHover: H = !1,
21
- open: I,
22
- onOpenChange: K,
23
- content: j,
24
- title: f,
25
- trigger: E = "click",
26
- className: M,
27
- anchor: T,
28
- beforeCloseButton: y,
29
- afterCloseButton: C,
30
- afterTitle: m,
31
- size: g = "medium",
18
+ children: x,
19
+ placement: z,
20
+ openOnHover: k = !1,
21
+ open: H,
22
+ onOpenChange: I,
23
+ content: K,
24
+ title: d,
25
+ trigger: j = "click",
26
+ className: E,
27
+ anchor: M,
28
+ beforeCloseButton: w,
29
+ afterCloseButton: y,
30
+ afterTitle: f,
31
+ size: m = "medium",
32
32
  footer: c,
33
- defaultOpen: D,
34
- resizable: O = !1,
33
+ defaultOpen: T = !1,
34
+ resizable: C = !1,
35
35
  draggable: F = !1,
36
36
  maintainAspectRatio: U = !1,
37
- classNames: r,
37
+ classNames: t,
38
38
  modal: V = !1,
39
39
  closeOnClickOutside: X = !0,
40
- onPlacementChange: h,
40
+ onPlacementChange: g,
41
41
  ...$
42
42
  }) => {
43
- const [b, R] = pe(
43
+ const [h, O] = pe(
44
+ H,
44
45
  I,
45
- K,
46
- D ?? !1
46
+ T
47
47
  // Always provide a default value to prevent undefined
48
- ), t = ae(), { className: q } = le(), u = re(k), A = W(() => /* @__PURE__ */ e(B, { size: 16 }), []), S = w(null), v = w(u.side), P = w(u.align), [G, J] = Y(0);
49
- Z(() => {
50
- const a = S.current;
51
- if (!a || !b) return;
52
- const d = new MutationObserver((l) => {
53
- let N = !1;
54
- if (l.forEach((i) => {
55
- if (i.type === "attributes" && i.attributeName === "data-side") {
56
- const n = a.getAttribute(i.attributeName);
57
- n && n !== v.current && (v.current = n, N = !0);
48
+ ), r = ae(), { className: q } = se(), u = te(z), R = Y(() => /* @__PURE__ */ e(D, { size: 16 }), []), A = N(null), b = N(u.side), P = N(u.align), [G, J] = Z(0);
49
+ _(() => {
50
+ const a = A.current;
51
+ if (!a || !h) return;
52
+ const s = new MutationObserver((W) => {
53
+ let v = !1;
54
+ if (W.forEach((o) => {
55
+ if (o.type === "attributes" && o.attributeName === "data-side") {
56
+ const n = a.getAttribute(o.attributeName);
57
+ n && n !== b.current && (b.current = n, v = !0);
58
58
  }
59
- if (i.type === "attributes" && i.attributeName === "data-align") {
60
- const n = a.getAttribute(i.attributeName);
61
- n && n !== P.current && (P.current = n, N = !0);
59
+ if (o.type === "attributes" && o.attributeName === "data-align") {
60
+ const n = a.getAttribute(o.attributeName);
61
+ n && n !== P.current && (P.current = n, v = !0);
62
62
  }
63
- }), N) {
64
- const i = ne({
65
- side: v.current,
63
+ }), v) {
64
+ const o = ne({
65
+ side: b.current,
66
66
  align: P.current
67
67
  });
68
- J((n) => n + 1), h && h(i);
68
+ J((n) => n + 1), g && g(o);
69
69
  }
70
70
  });
71
- return d.observe(a, {
71
+ return s.observe(a, {
72
72
  attributes: !0,
73
73
  attributeFilter: ["data-side", "data-align"],
74
74
  attributeOldValue: !0
75
75
  }), () => {
76
- d.disconnect();
76
+ s.disconnect();
77
77
  };
78
- }, [h, b]);
79
- const L = _(() => /* @__PURE__ */ s("div", { className: p(t("popup-panel-header"), r?.header), children: [
80
- /* @__PURE__ */ s(
81
- te,
78
+ }, [g, h]);
79
+ const L = B(() => /* @__PURE__ */ l("div", { className: p(r("popup-panel-header"), t?.header), children: [
80
+ /* @__PURE__ */ l(
81
+ re,
82
82
  {
83
83
  align: "center",
84
84
  gap: 8,
85
- className: t("popup-panel-title-wrapper"),
85
+ className: r("popup-panel-title-wrapper"),
86
86
  children: [
87
87
  /* @__PURE__ */ e(
88
- o.Title,
88
+ i.Title,
89
89
  {
90
- render: /* @__PURE__ */ e("div", { className: p(t("grow", "truncate"), r?.title), children: f })
90
+ render: /* @__PURE__ */ e("div", { className: p(r("grow", "truncate"), t?.title), children: d })
91
91
  }
92
92
  ),
93
- /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
94
- y,
93
+ /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
94
+ w,
95
95
  /* @__PURE__ */ e(
96
- o.Close,
96
+ i.Close,
97
97
  {
98
- render: /* @__PURE__ */ e(se, { children: A })
98
+ render: /* @__PURE__ */ e(le, { children: R })
99
99
  }
100
100
  ),
101
- C
101
+ y
102
102
  ] })
103
103
  ]
104
104
  }
105
105
  ),
106
- m || null
106
+ f || null
107
107
  ] }), [
108
- C,
109
- m,
110
108
  y,
111
- t,
112
- r?.header,
113
- r?.title,
114
- A,
115
- f
116
- ]), { ref: Q } = ie(F), x = /* @__PURE__ */ s(
117
- o.Popup,
109
+ f,
110
+ w,
111
+ r,
112
+ t?.header,
113
+ t?.title,
114
+ R,
115
+ d
116
+ ]), { ref: Q } = oe(F), S = /* @__PURE__ */ l(
117
+ i.Popup,
118
118
  {
119
119
  className: p(
120
- t("popup-panel"),
121
- t(`popup-panel-size-${g}`),
122
- M,
123
- r?.popup
120
+ r("popup-panel"),
121
+ r(`popup-panel-size-${m}`),
122
+ E,
123
+ t?.popup
124
124
  ),
125
125
  ref: Q,
126
126
  children: [
127
- f && L(),
128
- /* @__PURE__ */ e("div", { className: p(t("popup-panel-content"), r?.content), children: /* @__PURE__ */ e("div", { className: t("popup-panel-content-inner"), children: j }) }),
129
- c && /* @__PURE__ */ e("div", { className: p(t("popup-panel-footer"), r?.footer), children: typeof c == "function" ? c({ close: () => R(!1) }) : c })
127
+ d && L(),
128
+ /* @__PURE__ */ e("div", { className: p(r("popup-panel-content"), t?.content), children: /* @__PURE__ */ e("div", { className: r("popup-panel-content-inner"), children: K }) }),
129
+ c && /* @__PURE__ */ e("div", { className: p(r("popup-panel-footer"), t?.footer), children: typeof c == "function" ? c({ close: () => O(!1) }) : c })
130
130
  ]
131
131
  }
132
132
  );
133
- return /* @__PURE__ */ s(
134
- o.Root,
133
+ return /* @__PURE__ */ l(
134
+ i.Root,
135
135
  {
136
- openOnHover: E === "hover" ? !0 : H,
137
- open: b,
138
- onOpenChange: (a, d, l) => {
139
- (l === "outside-press" || l === "focus-out") && !X || R(a, d, l);
136
+ openOnHover: j === "hover" ? !0 : k,
137
+ open: h,
138
+ onOpenChange: (a, s) => {
139
+ (s.reason === "outside-press" || s.reason === "focus-out") && !X || O(a, s);
140
140
  },
141
141
  modal: V,
142
142
  ...$,
143
143
  children: [
144
144
  /* @__PURE__ */ e(
145
- o.Trigger,
145
+ i.Trigger,
146
146
  {
147
- render: z,
148
- className: p(t("popup-panel-trigger"), r?.trigger)
147
+ render: x,
148
+ className: p(r("popup-panel-trigger"), t?.trigger)
149
149
  }
150
150
  ),
151
- /* @__PURE__ */ e(o.Portal, { children: /* @__PURE__ */ e(
152
- o.Positioner,
151
+ /* @__PURE__ */ e(i.Portal, { children: /* @__PURE__ */ e(
152
+ i.Positioner,
153
153
  {
154
- ref: S,
154
+ ref: A,
155
155
  className: p(
156
- t("popup-panel-root"),
156
+ r("popup-panel-root"),
157
157
  q,
158
- r?.root
158
+ t?.root
159
159
  ),
160
160
  side: u.side,
161
161
  align: u.align,
162
162
  sideOffset: 4,
163
- anchor: T,
163
+ anchor: M,
164
164
  style: {
165
- "--size-width": g ? ee[g] : void 0
165
+ "--size-width": m ? ee[m] : void 0
166
166
  },
167
- children: O ? /* @__PURE__ */ e(
168
- oe,
167
+ children: C ? /* @__PURE__ */ e(
168
+ ie,
169
169
  {
170
- resizable: O,
170
+ resizable: C,
171
171
  absolutePositioning: !0,
172
172
  resetKey: G,
173
173
  maintainAspectRatio: U,
174
174
  classNames: {
175
- resizeHandle: r?.resizeHandle
175
+ resizeHandle: t?.resizeHandle
176
176
  },
177
- children: x
177
+ children: S
178
178
  }
179
- ) : x
179
+ ) : S
180
180
  }
181
181
  ) })
182
182
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n useCls,\n clsx,\n parseAntdPlacement,\n buildAntdPlacement,\n BaseUIPlacement,\n BaseUISide,\n BaseUIAlign,\n} from \"../utils\";\nimport { Popover } from \"@base-ui-components/react/popover\";\n\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { IconButton } from \"../icon-button\";\nimport { X } from \"@bioturing/assets\";\nimport { PopupPanelSize } from \"./constants\";\nimport { useControlledState, useDraggable } from \"../hooks\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\n\n// Import component-specific styles\nimport \"./style.css\";\nimport { useRef } from \"react\";\nimport { useTheme } from \"../theme-provider\";\n\nexport interface PopupPanelProps\n extends Omit<\n React.ComponentPropsWithRef<\"div\">,\n \"title\" | \"content\" | \"children\"\n >,\n Omit<Popover.Root.Props, \"children\"> {\n /** The trigger element that opens the popup panel */\n children?: React.ComponentProps<typeof Popover.Trigger>[\"render\"];\n /** Placement of the popup panel relative to its trigger */\n placement?: PopoverProps[\"placement\"];\n /** Whether to open the popup panel on hover */\n openOnHover?: boolean;\n /** Controls the open state of the popup panel */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: Popover.Root.Props[\"onOpenChange\"];\n /** Content to display inside the popup panel */\n content?: React.ReactNode;\n /** Title text or element to display in the panel header */\n title?: React.ReactNode;\n /** The event that triggers the popup panel */\n /**\n * @default \"click\"\n */\n trigger?: \"click\" | \"hover\";\n /** Custom anchor element for positioning the panel */\n anchor?: Popover.Positioner.Props[\"anchor\"];\n /** Content to display before the close button */\n beforeCloseButton?: React.ReactNode;\n /** Content to display after the close button */\n afterCloseButton?: React.ReactNode;\n /** Content to display after the title */\n afterTitle?: React.ReactNode;\n /**\n * Predefined sizes for the popup panel\n * - xsmall: 320px\n * - small: 400px\n * - medium: 480px (default)\n * - large: 640px\n * - xlarge: 840px\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?: keyof typeof PopupPanelSize;\n /**\n * Footer content for the popup panel\n * Can be a React node or a function that returns a React node\n */\n footer?:\n | React.ReactNode\n | ((props: { close: () => void }) => React.ReactNode);\n /**\n * Whether the panel should be open by default when uncontrolled\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Whether the panel should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Whether the panel should be draggable\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether to maintain aspect ratio when resizing\n * Only applies when resizable is true\n * @default false\n */\n maintainAspectRatio?: boolean;\n /**\n * Custom class names for different parts of the popup panel\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n header?: string;\n title?: string;\n content?: string;\n footer?: string;\n resizeHandle?: string;\n };\n /**\n * Whether to close the panel when clicking outside\n * @default true\n */\n closeOnClickOutside?: boolean;\n /**\n * Whether to use modal mode\n * @default false\n */\n modal?: Popover.Root.Props[\"modal\"];\n /**\n * Callback function when the placement changes\n */\n onPlacementChange?: (placement: PopoverProps[\"placement\"]) => void;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen ?? false // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n const positionerRef = useRef<HTMLDivElement>(null);\n const currentSideRef = useRef<BaseUISide>(baseUIPlacement.side);\n const currentAlignRef = useRef<BaseUIAlign>(baseUIPlacement.align);\n const [placementChangeKey, setPlacementChangeKey] = useState(0);\n\n useEffect(() => {\n const positioner = positionerRef.current;\n if (!positioner || !open) return; // Only observe when popup is open\n\n // Create MutationObserver to watch for data-side changes\n const observer = new MutationObserver((mutations) => {\n let hasPlacementChanged = false;\n\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-side\"\n ) {\n const newSide = positioner.getAttribute(mutation.attributeName);\n if (newSide && newSide !== currentSideRef.current) {\n currentSideRef.current = newSide as BaseUISide;\n hasPlacementChanged = true;\n }\n }\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-align\"\n ) {\n const newAlign = positioner.getAttribute(mutation.attributeName);\n if (newAlign && newAlign !== currentAlignRef.current) {\n currentAlignRef.current = newAlign as BaseUIAlign;\n hasPlacementChanged = true;\n }\n }\n });\n\n // Only trigger callbacks if placement actually changed\n if (hasPlacementChanged) {\n const newPlacement = buildAntdPlacement({\n side: currentSideRef.current,\n align: currentAlignRef.current,\n });\n\n // Trigger resizable dimensions reset when placement changes\n setPlacementChangeKey((prev) => prev + 1);\n\n if (onPlacementChange) {\n onPlacementChange(newPlacement);\n }\n }\n });\n\n // Start observing\n observer.observe(positioner, {\n attributes: true,\n attributeFilter: [\"data-side\", \"data-align\"],\n attributeOldValue: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, [onPlacementChange, open]);\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n );\n\n return (\n <Popover.Root\n openOnHover={trigger === \"hover\" ? true : openOnHover}\n open={open}\n onOpenChange={(open, event, reason) => {\n if (\n (reason === \"outside-press\" || reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(open, event, reason);\n }}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n render={children}\n className={clsx(cls(\"popup-panel-trigger\"), classNames?.trigger)}\n ></Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner\n ref={positionerRef}\n className={clsx(\n cls(\"popup-panel-root\"),\n themeClassName,\n classNames?.root\n )}\n side={baseUIPlacement.side}\n align={baseUIPlacement.align}\n sideOffset={4}\n anchor={anchor}\n style={\n {\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties\n }\n >\n {resizable ? (\n <Resizable\n resizable={resizable}\n absolutePositioning={true}\n resetKey={placementChangeKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n >\n {popup}\n </Resizable>\n ) : (\n popup\n )}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["PopupPanel","children","placement","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","onPlacementChange","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","defaultCloseIcon","useMemo","jsx","X","positionerRef","useRef","currentSideRef","currentAlignRef","placementChangeKey","setPlacementChangeKey","useState","useEffect","positioner","observer","mutations","hasPlacementChanged","mutation","newSide","newAlign","newPlacement","buildAntdPlacement","prev","renderTitle","useCallback","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","event","reason","PopupPanelSize","Resizable"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n useCls,\n clsx,\n parseAntdPlacement,\n buildAntdPlacement,\n BaseUIPlacement,\n BaseUISide,\n BaseUIAlign,\n} from \"../utils\";\nimport { Popover } from \"@base-ui-components/react/popover\";\n\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { IconButton } from \"../icon-button\";\nimport { X } from \"@bioturing/assets\";\nimport { PopupPanelSize } from \"./constants\";\nimport { useControlledState, useDraggable } from \"../hooks\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\n\n// Import component-specific styles\nimport \"./style.css\";\nimport { useRef } from \"react\";\nimport { useTheme } from \"../theme-provider\";\n\nexport interface PopupPanelProps\n extends Omit<\n React.ComponentPropsWithRef<\"div\">,\n \"title\" | \"content\" | \"children\"\n >,\n Omit<Popover.Root.Props, \"children\"> {\n /** The trigger element that opens the popup panel */\n children?: React.ComponentProps<typeof Popover.Trigger>[\"render\"];\n /** Placement of the popup panel relative to its trigger */\n placement?: PopoverProps[\"placement\"];\n /** Whether to open the popup panel on hover */\n openOnHover?: boolean;\n /** Controls the open state of the popup panel */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: Popover.Root.Props[\"onOpenChange\"];\n /** Content to display inside the popup panel */\n content?: React.ReactNode;\n /** Title text or element to display in the panel header */\n title?: React.ReactNode;\n /** The event that triggers the popup panel */\n /**\n * @default \"click\"\n */\n trigger?: \"click\" | \"hover\";\n /** Custom anchor element for positioning the panel */\n anchor?: Popover.Positioner.Props[\"anchor\"];\n /** Content to display before the close button */\n beforeCloseButton?: React.ReactNode;\n /** Content to display after the close button */\n afterCloseButton?: React.ReactNode;\n /** Content to display after the title */\n afterTitle?: React.ReactNode;\n /**\n * Predefined sizes for the popup panel\n * - xsmall: 320px\n * - small: 400px\n * - medium: 480px (default)\n * - large: 640px\n * - xlarge: 840px\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?: keyof typeof PopupPanelSize;\n /**\n * Footer content for the popup panel\n * Can be a React node or a function that returns a React node\n */\n footer?:\n | React.ReactNode\n | ((props: { close: () => void }) => React.ReactNode);\n /**\n * Whether the panel should be open by default when uncontrolled\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Whether the panel should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Whether the panel should be draggable\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether to maintain aspect ratio when resizing\n * Only applies when resizable is true\n * @default false\n */\n maintainAspectRatio?: boolean;\n /**\n * Custom class names for different parts of the popup panel\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n header?: string;\n title?: string;\n content?: string;\n footer?: string;\n resizeHandle?: string;\n };\n /**\n * Whether to close the panel when clicking outside\n * @default true\n */\n closeOnClickOutside?: boolean;\n /**\n * Whether to use modal mode\n * @default false\n */\n modal?: Popover.Root.Props[\"modal\"];\n /**\n * Callback function when the placement changes\n */\n onPlacementChange?: (placement: PopoverProps[\"placement\"]) => void;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen = false,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n const positionerRef = useRef<HTMLDivElement>(null);\n const currentSideRef = useRef<BaseUISide>(baseUIPlacement.side);\n const currentAlignRef = useRef<BaseUIAlign>(baseUIPlacement.align);\n const [placementChangeKey, setPlacementChangeKey] = useState(0);\n\n useEffect(() => {\n const positioner = positionerRef.current;\n if (!positioner || !open) return; // Only observe when popup is open\n\n // Create MutationObserver to watch for data-side changes\n const observer = new MutationObserver((mutations) => {\n let hasPlacementChanged = false;\n\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-side\"\n ) {\n const newSide = positioner.getAttribute(mutation.attributeName);\n if (newSide && newSide !== currentSideRef.current) {\n currentSideRef.current = newSide as BaseUISide;\n hasPlacementChanged = true;\n }\n }\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-align\"\n ) {\n const newAlign = positioner.getAttribute(mutation.attributeName);\n if (newAlign && newAlign !== currentAlignRef.current) {\n currentAlignRef.current = newAlign as BaseUIAlign;\n hasPlacementChanged = true;\n }\n }\n });\n\n // Only trigger callbacks if placement actually changed\n if (hasPlacementChanged) {\n const newPlacement = buildAntdPlacement({\n side: currentSideRef.current,\n align: currentAlignRef.current,\n });\n\n // Trigger resizable dimensions reset when placement changes\n setPlacementChangeKey((prev) => prev + 1);\n\n if (onPlacementChange) {\n onPlacementChange(newPlacement);\n }\n }\n });\n\n // Start observing\n observer.observe(positioner, {\n attributes: true,\n attributeFilter: [\"data-side\", \"data-align\"],\n attributeOldValue: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, [onPlacementChange, open]);\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n );\n\n return (\n <Popover.Root\n openOnHover={trigger === \"hover\" ? true : openOnHover}\n open={open}\n onOpenChange={(open, eventDetails) => {\n if (\n (eventDetails.reason === \"outside-press\" ||\n eventDetails.reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(open, eventDetails);\n }}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n render={children}\n className={clsx(cls(\"popup-panel-trigger\"), classNames?.trigger)}\n ></Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner\n ref={positionerRef}\n className={clsx(\n cls(\"popup-panel-root\"),\n themeClassName,\n classNames?.root\n )}\n side={baseUIPlacement.side}\n align={baseUIPlacement.align}\n sideOffset={4}\n anchor={anchor}\n style={\n {\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties\n }\n >\n {resizable ? (\n <Resizable\n resizable={resizable}\n absolutePositioning={true}\n resetKey={placementChangeKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n >\n {popup}\n </Resizable>\n ) : (\n popup\n )}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["PopupPanel","children","placement","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","onPlacementChange","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","defaultCloseIcon","useMemo","jsx","X","positionerRef","useRef","currentSideRef","currentAlignRef","placementChangeKey","setPlacementChangeKey","useState","useEffect","positioner","observer","mutations","hasPlacementChanged","mutation","newSide","newAlign","newPlacement","buildAntdPlacement","prev","renderTitle","useCallback","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","eventDetails","PopupPanelSize","Resizable"],"mappings":"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"}
@@ -1,13 +1,31 @@
1
- import { default as React } from 'react';
1
+ import { ComponentPropsWithRef, default as React } from 'react';
2
2
  import { WithRenderPropProps } from '../utils/WithRenderProp';
3
+ import { ElementTypeToDOMType } from '../utils/types';
3
4
  import { ValidateStatus } from 'antd/es/form/FormItem';
4
- export type SelectTriggerState = {
5
+ export type SelectTriggerContextType = {
5
6
  disabled: boolean;
6
7
  open: boolean;
7
8
  hasValue: boolean;
8
9
  size: "small" | "middle" | "large";
10
+ status?: ValidateStatus;
11
+ value?: React.ReactNode;
12
+ placeholder?: string;
13
+ allowClear: boolean;
14
+ suffixIcon?: React.ReactNode;
15
+ clearIcon?: React.ReactNode;
16
+ onClear?: () => void;
17
+ onOpenChange?: (open: boolean) => void;
18
+ classNames?: {
19
+ trigger?: string;
20
+ content?: string;
21
+ prefix?: string;
22
+ suffix?: string;
23
+ arrow?: string;
24
+ placeholder?: string;
25
+ value?: string;
26
+ };
9
27
  };
10
- export interface SelectTriggerProps extends Omit<WithRenderPropProps<"button", SelectTriggerState>, "value" | "prefix"> {
28
+ export type SelectTriggerRootProps<T extends React.ElementType = "button"> = WithRenderPropProps<T> & {
11
29
  /** Size variant */
12
30
  size?: "small" | "middle" | "large";
13
31
  /** Whether the component is disabled */
@@ -18,10 +36,8 @@ export interface SelectTriggerProps extends Omit<WithRenderPropProps<"button", S
18
36
  status?: ValidateStatus;
19
37
  /** Placeholder text */
20
38
  placeholder?: string;
21
- /** Current value/content to display */
22
- value?: React.ReactNode;
23
- /** Prefix content to display before the value (e.g., icon) */
24
- prefix?: React.ReactNode;
39
+ /** Current display value/content */
40
+ displayValue?: React.ReactNode;
25
41
  /** Whether to show clear button when there's a value */
26
42
  allowClear?: boolean;
27
43
  /** Custom suffix icon (arrow icon) */
@@ -36,10 +52,56 @@ export interface SelectTriggerProps extends Omit<WithRenderPropProps<"button", S
36
52
  classNames?: {
37
53
  trigger?: string;
38
54
  content?: string;
55
+ prefix?: string;
39
56
  suffix?: string;
57
+ arrow?: string;
40
58
  placeholder?: string;
41
59
  value?: string;
42
60
  };
43
- }
44
- export declare const SelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<HTMLButtonElement>>;
61
+ };
62
+ declare const SelectTriggerRootInner: <T extends React.ElementType = "button">({ size, disabled, open, status, placeholder, displayValue, allowClear, suffixIcon, clearIcon, onClear, onOpenChange, classNames, as, children, role, className, ...rest }: SelectTriggerRootProps<T>, ref: React.Ref<ElementTypeToDOMType<T>>) => import("react/jsx-runtime").JSX.Element;
63
+ export declare const SelectTriggerRoot: <T extends React.ElementType = "button">(props: SelectTriggerRootProps<T> & {
64
+ ref?: ComponentPropsWithRef<T>["ref"];
65
+ }) => ReturnType<typeof SelectTriggerRootInner>;
66
+ export type SelectTriggerContentProps<T extends React.ElementType = "div"> = WithRenderPropProps<T> & {
67
+ contentRender?: WithRenderPropProps<"span", {
68
+ prefix: React.ReactNode;
69
+ suffix: React.ReactNode;
70
+ }>["render"];
71
+ prefix?: React.ReactNode;
72
+ suffix?: React.ReactNode;
73
+ };
74
+ declare const SelectTriggerContentInner: <T extends React.ElementType = "div">({ className, as, contentRender, prefix, suffix, ...rest }: SelectTriggerContentProps<T>, ref: React.ForwardedRef<ElementTypeToDOMType<T>>) => import("react/jsx-runtime").JSX.Element;
75
+ export declare const SelectTriggerContent: <T extends React.ElementType = "div">(props: SelectTriggerContentProps<T> & {
76
+ ref?: ComponentPropsWithRef<T>["ref"];
77
+ }) => ReturnType<typeof SelectTriggerContentInner>;
78
+ export type SelectTriggerClearProps<T extends React.ElementType = "button"> = WithRenderPropProps<T>;
79
+ declare const SelectTriggerClearInner: <T extends React.ElementType = "button">({ className, as, onClick, ...rest }: SelectTriggerClearProps<T>, ref: React.Ref<ElementTypeToDOMType<T>>) => import("react/jsx-runtime").JSX.Element;
80
+ export declare const SelectTriggerClear: <T extends React.ElementType = "button">(props: SelectTriggerClearProps<T> & {
81
+ ref?: ComponentPropsWithRef<T>;
82
+ }) => ReturnType<typeof SelectTriggerClearInner>;
83
+ export type SelectTriggerArrowProps<T extends React.ElementType = "span"> = WithRenderPropProps<T, {
84
+ icon: React.ReactNode;
85
+ }>;
86
+ declare const SelectTriggerArrowInner: <T extends React.ElementType = "span">({ className, as, render, ...rest }: SelectTriggerArrowProps<T>, ref: React.ForwardedRef<ElementTypeToDOMType<T>>) => import("react/jsx-runtime").JSX.Element;
87
+ export declare const SelectTriggerArrow: <T extends React.ElementType = "span">(props: SelectTriggerArrowProps<T> & {
88
+ ref?: ComponentPropsWithRef<T>;
89
+ }) => ReturnType<typeof SelectTriggerArrowInner>;
90
+ export declare const SelectTrigger: (<T extends React.ElementType = "button">(props: SelectTriggerRootProps<T> & {
91
+ ref?: ComponentPropsWithRef<T>["ref"];
92
+ }) => ReturnType<typeof SelectTriggerRootInner>) & {
93
+ Root: <T extends React.ElementType = "button">(props: SelectTriggerRootProps<T> & {
94
+ ref?: ComponentPropsWithRef<T>["ref"];
95
+ }) => ReturnType<typeof SelectTriggerRootInner>;
96
+ Content: <T extends React.ElementType = "div">(props: SelectTriggerContentProps<T> & {
97
+ ref?: ComponentPropsWithRef<T>["ref"];
98
+ }) => ReturnType<typeof SelectTriggerContentInner>;
99
+ Clear: <T extends React.ElementType = "button">(props: SelectTriggerClearProps<T> & {
100
+ ref?: ComponentPropsWithRef<T>;
101
+ }) => ReturnType<typeof SelectTriggerClearInner>;
102
+ Arrow: <T extends React.ElementType = "span">(props: SelectTriggerArrowProps<T> & {
103
+ ref?: ComponentPropsWithRef<T>;
104
+ }) => ReturnType<typeof SelectTriggerArrowInner>;
105
+ };
106
+ export {};
45
107
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/select-trigger/component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAkB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACjD,OAAO,GAAG,QAAQ,CACnB;IACD,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,wBAAwB;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,yBAAyB;IACzB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,eAAO,MAAM,aAAa,8FAuKzB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/select-trigger/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAO,MAAM,OAAO,CAAC;AAGnD,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,EAAkB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAiBF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,IACvE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,wBAAwB;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,yBAAyB;IACzB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAGJ,QAAA,MAAM,sBAAsB,GAAI,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EACpE,2KAkBG,sBAAsB,CAAC,CAAC,CAAC,EAC5B,KAAK,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAoExC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAyC,CACrE,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EAEtC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG;IACjC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACvC,KACE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAG/C,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,IACvE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACvB,aAAa,CAAC,EAAE,mBAAmB,CACjC,MAAM,EACN;QAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CACrD,CAAC,QAAQ,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEJ,QAAA,MAAM,yBAAyB,GAAI,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EACpE,2DAOG,yBAAyB,CAAC,CAAC,CAAC,EAC/B,KAAK,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAuCjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAA4C,CAC3E,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,EAEnC,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG;IACpC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACvC,KACE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAGlD,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,IACxE,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAEzB,QAAA,MAAM,uBAAuB,GAAI,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EACrE,qCAAqC,uBAAuB,CAAC,CAAC,CAAC,EAC/D,KAAK,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAiCxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAA0C,CACvE,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EAEtC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG;IAClC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAChC,KACE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGhD,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,IACtE,mBAAmB,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,CAAC;AAEpD,QAAA,MAAM,uBAAuB,GAAI,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,EACnE,oCAAoC,uBAAuB,CAAC,CAAC,CAAC,EAC9D,KAAK,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAoCjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAA0C,CACvE,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,EAEpC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG;IAClC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAChC,KACE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGhD,eAAO,MAAM,aAAa,IAlLxB,CAAC,SAAS,KAAK,CAAC,WAAW,oBAEpB,sBAAsB,CAAC,CAAC,CAAC,GAAG;IACjC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACvC,KACE,UAAU,CAAC,OAAO,sBAAsB,CAAC;WAL5C,CAAC,SAAS,KAAK,CAAC,WAAW,oBAEpB,sBAAsB,CAAC,CAAC,CAAC,GAAG;QACjC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACvC,KACE,UAAU,CAAC,OAAO,sBAAsB,CAAC;cAgE5C,CAAC,SAAS,KAAK,CAAC,WAAW,iBAEpB,yBAAyB,CAAC,CAAC,CAAC,GAAG;QACpC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACvC,KACE,UAAU,CAAC,OAAO,yBAAyB,CAAC;YA4C/C,CAAC,SAAS,KAAK,CAAC,WAAW,oBAEpB,uBAAuB,CAAC,CAAC,CAAC,GAAG;QAClC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAChC,KACE,UAAU,CAAC,OAAO,uBAAuB,CAAC;YA+C7C,CAAC,SAAS,KAAK,CAAC,WAAW,kBAEpB,uBAAuB,CAAC,CAAC,CAAC,GAAG;QAClC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAChC,KACE,UAAU,CAAC,OAAO,uBAAuB,CAAC;CAQ7C,CAAC"}