softable-pixels-web 1.1.7 → 1.1.9

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 (103) hide show
  1. package/dist/{Button-BiSdxI2A.js → Button-DCVmSier.js} +13 -13
  2. package/dist/Button-DCVmSier.js.map +1 -0
  3. package/dist/{CheckItem-DsIiS-2X.js → CheckItem-itm2oIeW.js} +6 -6
  4. package/dist/CheckItem-itm2oIeW.js.map +1 -0
  5. package/dist/{Checkbox-6ivVbzcX.js → Checkbox-ly07FlTH.js} +10 -10
  6. package/dist/Checkbox-ly07FlTH.js.map +1 -0
  7. package/dist/ContextMenu-fSz83oSd.js +304 -0
  8. package/dist/ContextMenu-fSz83oSd.js.map +1 -0
  9. package/dist/{Icon-Cv0qztmq.js → Icon-61UaAUrM.js} +5 -5
  10. package/dist/Icon-61UaAUrM.js.map +1 -0
  11. package/dist/{IconButton-BBdkzg3b.js → IconButton-CsHFWO8K.js} +2 -2
  12. package/dist/IconButton-CsHFWO8K.js.map +1 -0
  13. package/dist/{InfoSummary-uorFDD40.js → InfoSummary-DcupqKIy.js} +13 -13
  14. package/dist/InfoSummary-DcupqKIy.js.map +1 -0
  15. package/dist/Input-DLJz5Mrn.js +177 -0
  16. package/dist/Input-DLJz5Mrn.js.map +1 -0
  17. package/dist/Label-BhqH21lT.js +25 -0
  18. package/dist/Label-BhqH21lT.js.map +1 -0
  19. package/dist/Popover-BsDGCJ-f.js +81 -0
  20. package/dist/Popover-BsDGCJ-f.js.map +1 -0
  21. package/dist/Switch-B4e9qBOu.js +49 -0
  22. package/dist/Switch-B4e9qBOu.js.map +1 -0
  23. package/dist/{TabSwitch-De30bFX2.js → TabSwitch-CvnlK0NZ.js} +8 -8
  24. package/dist/TabSwitch-CvnlK0NZ.js.map +1 -0
  25. package/dist/{TextArea-CpIx36BV.js → TextArea-CUrG_9je.js} +5 -5
  26. package/dist/TextArea-CUrG_9je.js.map +1 -0
  27. package/dist/{ThemeContext-Dro_peJg.js → ThemeContext-CesN6Ejm.js} +28 -8
  28. package/dist/ThemeContext-CesN6Ejm.js.map +1 -0
  29. package/dist/{Typography-BE-vQSfx.js → Typography-j84zoCoZ.js} +5 -5
  30. package/dist/Typography-j84zoCoZ.js.map +1 -0
  31. package/dist/button.d.ts +2 -2
  32. package/dist/button.js +3 -3
  33. package/dist/check-item.d.ts +1 -1
  34. package/dist/check-item.js +4 -4
  35. package/dist/checkbox.d.ts +2 -2
  36. package/dist/checkbox.js +4 -4
  37. package/dist/context-menu.d.ts +2 -0
  38. package/dist/context-menu.js +9 -0
  39. package/dist/icon-button.d.ts +1 -1
  40. package/dist/icon-button.js +2 -2
  41. package/dist/{index-DUrGjyKy.d.ts → index-2WYvBk8I.d.ts} +23 -9
  42. package/dist/{index-akSk71wZ.d.ts → index-8GUY3yRY.d.ts} +3 -3
  43. package/dist/index-BANOx3xI.d.ts +44 -0
  44. package/dist/{index-CyvtOmP2.d.ts → index-BHhl7wD8.d.ts} +4 -3
  45. package/dist/index-BglHC9EI.d.ts +61 -0
  46. package/dist/{index-CIxyqe-m.d.ts → index-CCiP7SPG.d.ts} +8 -4
  47. package/dist/{index-C9iMLJTU.d.ts → index-Cmj1xJBu.d.ts} +4 -4
  48. package/dist/{index-BspBF3Mv.d.ts → index-CyntoY7A.d.ts} +33 -4
  49. package/dist/index-DH0vhxG-.d.ts +103 -0
  50. package/dist/index-DewFmT68.d.ts +15 -0
  51. package/dist/{index-DVz2cTUe.d.ts → index-YYjoEwNX.d.ts} +39 -5
  52. package/dist/index.d.ts +16 -10
  53. package/dist/index.js +20 -14
  54. package/dist/info-summary.d.ts +2 -2
  55. package/dist/info-summary.js +3 -3
  56. package/dist/input.d.ts +1 -2
  57. package/dist/input.js +5 -5
  58. package/dist/popover.d.ts +2 -0
  59. package/dist/popover.js +6 -0
  60. package/dist/{styleProps-D405c8KF.d.ts → styleProps-5iqKZpC1.d.ts} +1 -1
  61. package/dist/switch.d.ts +2 -0
  62. package/dist/switch.js +4 -0
  63. package/dist/tab-switch.d.ts +1 -1
  64. package/dist/tab-switch.js +3 -3
  65. package/dist/text-area.d.ts +2 -2
  66. package/dist/text-area.js +5 -5
  67. package/dist/theme-context.d.ts +1 -1
  68. package/dist/theme-context.js +1 -1
  69. package/dist/types-Dsf33Reg.d.ts +15 -0
  70. package/dist/{types-CDUx-y9q.d.ts → types-ubME1KhJ.d.ts} +5 -5
  71. package/dist/typography.d.ts +2 -2
  72. package/dist/typography.js +2 -2
  73. package/dist/use-dismiss.d.ts +20 -0
  74. package/dist/use-dismiss.js +3 -0
  75. package/dist/use-floating.d.ts +15 -0
  76. package/dist/use-floating.js +3 -0
  77. package/dist/use-virtual-anchor.d.ts +12 -0
  78. package/dist/use-virtual-anchor.js +40 -0
  79. package/dist/use-virtual-anchor.js.map +1 -0
  80. package/dist/useDismiss-DJ1mh-X3.js +35 -0
  81. package/dist/useDismiss-DJ1mh-X3.js.map +1 -0
  82. package/dist/useFloating--PcINgSt.js +295 -0
  83. package/dist/useFloating--PcINgSt.js.map +1 -0
  84. package/dist/{useThemedStyles-B7irjShy.d.ts → useThemedStyles-C6dNoaRC.d.ts} +25 -6
  85. package/dist/{useThemedStyles-3rUXJYgS.js → useThemedStyles-MLtE91hE.js} +1 -1
  86. package/dist/useThemedStyles-MLtE91hE.js.map +1 -0
  87. package/package.json +46 -1
  88. package/dist/Button-BiSdxI2A.js.map +0 -1
  89. package/dist/CheckItem-DsIiS-2X.js.map +0 -1
  90. package/dist/Checkbox-6ivVbzcX.js.map +0 -1
  91. package/dist/Icon-Cv0qztmq.js.map +0 -1
  92. package/dist/IconButton-BBdkzg3b.js.map +0 -1
  93. package/dist/InfoSummary-uorFDD40.js.map +0 -1
  94. package/dist/Input-BvbMEjwE.js +0 -327
  95. package/dist/Input-BvbMEjwE.js.map +0 -1
  96. package/dist/Label-QQpNWSeV.js +0 -79
  97. package/dist/Label-QQpNWSeV.js.map +0 -1
  98. package/dist/TabSwitch-De30bFX2.js.map +0 -1
  99. package/dist/TextArea-CpIx36BV.js.map +0 -1
  100. package/dist/ThemeContext-Dro_peJg.js.map +0 -1
  101. package/dist/Typography-BE-vQSfx.js.map +0 -1
  102. package/dist/index-pnnP9M22.d.ts +0 -49
  103. package/dist/useThemedStyles-3rUXJYgS.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton-CsHFWO8K.js","names":["IconButton: React.FC<IconButtonProps>"],"sources":["../src/components/commons/buttons/IconButton/styles.ts","../src/components/commons/buttons/IconButton/index.tsx"],"sourcesContent":["// Types\nimport type { CSSProperties } from 'react'\nimport type {\n IconButtonSize,\n IconButtonProps,\n IconButtonVariant\n} from './types'\nimport { styled } from '@hooks/useThemedStyles/types'\n\nexport function createIconButtonStyles(props: IconButtonProps) {\n const {\n variant = 'outlined',\n size = 'md',\n borderColor,\n backgroundColor\n } = props\n\n return styled({\n button: {\n ...(getSize(size) as any),\n backgroundColor: getBackgroundColor(variant, backgroundColor),\n border: getBorder(variant, borderColor),\n borderRadius: 'var(--px-radius-lg)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n\n boxShadow:\n '0px 1px 2px 0px #0A0D120D, 0px -2px 0px 0px #0A0D120D inset, 0px 0px 0px 1px #0A0D121A inset',\n\n __rules: {\n '&:hover': {\n opacity: '0.85 !important'\n },\n '&:disabled': {\n opacity: '0.5',\n cursor: 'not-allowed'\n }\n }\n }\n })\n}\n\nfunction getSize(size: IconButtonSize | string): CSSProperties {\n switch (size) {\n case 'lg':\n return { minHeight: '3.25rem', minWidth: '3.25rem' }\n case 'md':\n return { minHeight: '2.75rem', minWidth: '2.75rem' }\n case 'sm':\n return { minHeight: '2.25rem', minWidth: '2.25rem' }\n case 'xs':\n return { minHeight: '1.75rem', minWidth: '1.75rem' }\n default:\n return { minHeight: size, minWidth: size }\n }\n}\n\nfunction getBackgroundColor(\n variant?: IconButtonVariant,\n color?: string\n): string {\n if (color) return color\n\n if (variant === 'filled') return 'var(--px-btn-outlined-bg)'\n\n if (variant === 'outlined') return 'var(--px-btn-outlined-bg)'\n\n return 'var(--px-btn-outlined-bg)'\n}\n\nfunction getBorder(variant?: IconButtonVariant, color?: string): string {\n if (color) return `1px solid ${color}`\n\n if (variant === 'filled') return '1px solid var(--px-btn-filled-bg)'\n\n if (variant === 'outlined') return '1px solid var(--px-btn-outlined-border)'\n\n return '1px solid var(--px-color-primary)'\n}\n","// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { IconButtonProps } from './types'\n\n// Styles\nimport { createIconButtonStyles } from './styles'\n\nexport const IconButton: React.FC<IconButtonProps> = props => {\n // Constants\n const disabled = props.isDisabled || props.isLoading\n\n // Hooks\n const { styles, classes } = useThemedStyles(props, createIconButtonStyles, {\n pick: p => [p.size, p.variant, p.borderColor, p.backgroundColor],\n override: props.styles,\n applyCommonProps: true,\n commonSlot: 'button'\n })\n\n return (\n <button\n disabled={disabled}\n aria-busy={props.isLoading}\n type=\"button\"\n className={classes.button}\n style={styles.button}\n onClick={props.onClick}\n >\n {props.icon}\n </button>\n )\n}\n"],"mappings":";;;;AASA,SAAgB,uBAAuB,OAAwB;CAC7D,MAAM,EACJ,UAAU,YACV,OAAO,MACP,aACA,oBACE;AAEJ,QAAO,OAAO,EACZ,QAAQ;EACN,GAAI,QAAQ,KAAK;EACjB,iBAAiB,mBAAmB,SAAS,gBAAgB;EAC7D,QAAQ,UAAU,SAAS,YAAY;EACvC,cAAc;EACd,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ,QAAQ;EACR,YAAY;EAEZ,WACE;EAEF,SAAS;GACP,WAAW,EACT,SAAS,mBACV;GACD,cAAc;IACZ,SAAS;IACT,QAAQ;IACT;GACF;EACF,EACF,CAAC;;AAGJ,SAAS,QAAQ,MAA8C;AAC7D,SAAQ,MAAR;EACE,KAAK,KACH,QAAO;GAAE,WAAW;GAAW,UAAU;GAAW;EACtD,KAAK,KACH,QAAO;GAAE,WAAW;GAAW,UAAU;GAAW;EACtD,KAAK,KACH,QAAO;GAAE,WAAW;GAAW,UAAU;GAAW;EACtD,KAAK,KACH,QAAO;GAAE,WAAW;GAAW,UAAU;GAAW;EACtD,QACE,QAAO;GAAE,WAAW;GAAM,UAAU;GAAM;;;AAIhD,SAAS,mBACP,SACA,OACQ;AACR,KAAI,MAAO,QAAO;AAElB,KAAI,YAAY,SAAU,QAAO;AAEjC,KAAI,YAAY,WAAY,QAAO;AAEnC,QAAO;;AAGT,SAAS,UAAU,SAA6B,OAAwB;AACtE,KAAI,MAAO,QAAO,aAAa;AAE/B,KAAI,YAAY,SAAU,QAAO;AAEjC,KAAI,YAAY,WAAY,QAAO;AAEnC,QAAO;;;;;ACvET,MAAaA,cAAwC,UAAS;CAE5D,MAAM,WAAW,MAAM,cAAc,MAAM;CAG3C,MAAM,EAAE,QAAQ,YAAY,gBAAgB,OAAO,wBAAwB;EACzE,OAAM,MAAK;GAAC,EAAE;GAAM,EAAE;GAAS,EAAE;GAAa,EAAE;GAAgB;EAChE,UAAU,MAAM;EAChB,kBAAkB;EAClB,YAAY;EACb,CAAC;AAEF,QACE,oBAAC;EACW;EACV,aAAW,MAAM;EACjB,MAAK;EACL,WAAW,QAAQ;EACnB,OAAO,OAAO;EACd,SAAS,MAAM;YAEd,MAAM;GACA"}
@@ -1,8 +1,8 @@
1
- import { n as styled, t as useThemedStyles } from "./useThemedStyles-3rUXJYgS.js";
2
- import { t as Typography } from "./Typography-BE-vQSfx.js";
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { t as Typography } from "./Typography-j84zoCoZ.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
 
5
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/styles.ts
5
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/styles.ts
6
6
  function createSummaryHeaderStyles() {
7
7
  return styled({
8
8
  container: {
@@ -32,7 +32,7 @@ function createSummaryHeaderStyles() {
32
32
  }
33
33
 
34
34
  //#endregion
35
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/index.tsx
35
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/index.tsx
36
36
  const SummaryHeader = ({ icon, title }) => {
37
37
  const { styles } = useThemedStyles({}, createSummaryHeaderStyles);
38
38
  return /* @__PURE__ */ jsxs("header", {
@@ -53,7 +53,7 @@ const SummaryHeader = ({ icon, title }) => {
53
53
  };
54
54
 
55
55
  //#endregion
56
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/styles.ts
56
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/styles.ts
57
57
  function createSummaryCaptionStyles() {
58
58
  return styled({
59
59
  container: {
@@ -80,7 +80,7 @@ function createSummaryCaptionStyles() {
80
80
  }
81
81
 
82
82
  //#endregion
83
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/index.tsx
83
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/index.tsx
84
84
  const SummaryCaption = ({ loading, captionText }) => {
85
85
  const { styles } = useThemedStyles({}, createSummaryCaptionStyles);
86
86
  return /* @__PURE__ */ jsx("div", {
@@ -100,7 +100,7 @@ const SummaryCaption = ({ loading, captionText }) => {
100
100
  };
101
101
 
102
102
  //#endregion
103
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/styles.ts
103
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/styles.ts
104
104
  function createSummaryHighlightStyles() {
105
105
  return styled({
106
106
  container: {
@@ -131,7 +131,7 @@ function createSummaryHighlightStyles() {
131
131
  }
132
132
 
133
133
  //#endregion
134
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/index.tsx
134
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/index.tsx
135
135
  const SummaryHighlight = ({ loading, highlightText, highlightIcon }) => {
136
136
  const { styles } = useThemedStyles({}, createSummaryHighlightStyles);
137
137
  return /* @__PURE__ */ jsxs("div", {
@@ -154,7 +154,7 @@ const SummaryHighlight = ({ loading, highlightText, highlightIcon }) => {
154
154
  };
155
155
 
156
156
  //#endregion
157
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/styles.ts
157
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/styles.ts
158
158
  function createSummaryItemStyles(props) {
159
159
  return styled({
160
160
  container: {
@@ -174,7 +174,7 @@ function createSummaryItemStyles(props) {
174
174
  }
175
175
 
176
176
  //#endregion
177
- //#region src/components/toolkit/InfoSummary/components/SummaryItem/index.tsx
177
+ //#region src/components/commons/toolkit/InfoSummary/components/SummaryItem/index.tsx
178
178
  const SummaryItem = (props) => {
179
179
  const { styles } = useThemedStyles(props, createSummaryItemStyles);
180
180
  return /* @__PURE__ */ jsx("li", {
@@ -201,7 +201,7 @@ const SummaryItem = (props) => {
201
201
  };
202
202
 
203
203
  //#endregion
204
- //#region src/components/toolkit/InfoSummary/styles.ts
204
+ //#region src/components/commons/toolkit/InfoSummary/styles.ts
205
205
  function createInfoSummaryStyles() {
206
206
  return styled({
207
207
  section: {
@@ -228,7 +228,7 @@ function createInfoSummaryStyles() {
228
228
  }
229
229
 
230
230
  //#endregion
231
- //#region src/components/toolkit/InfoSummary/index.tsx
231
+ //#region src/components/commons/toolkit/InfoSummary/index.tsx
232
232
  const InfoSummary = ({ infos, loading }) => {
233
233
  const { styles } = useThemedStyles({}, createInfoSummaryStyles);
234
234
  function renderSummaryItems() {
@@ -249,4 +249,4 @@ const InfoSummary = ({ infos, loading }) => {
249
249
 
250
250
  //#endregion
251
251
  export { InfoSummary as t };
252
- //# sourceMappingURL=InfoSummary-uorFDD40.js.map
252
+ //# sourceMappingURL=InfoSummary-DcupqKIy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoSummary-DcupqKIy.js","names":["SummaryHeader: React.FC<Props>","SummaryCaption: React.FC<Props>","SummaryHighlight: React.FC<Props>","SummaryItem: React.FC<SummaryItemProps>","InfoSummary: React.FC<InfoSummaryProps>"],"sources":["../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/styles.ts","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHeader/index.tsx","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/styles.ts","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryCaption/index.tsx","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/styles.ts","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/components/SummaryHighlight/index.tsx","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/styles.ts","../src/components/commons/toolkit/InfoSummary/components/SummaryItem/index.tsx","../src/components/commons/toolkit/InfoSummary/styles.ts","../src/components/commons/toolkit/InfoSummary/index.tsx"],"sourcesContent":["// Types\nimport { styled, type StyleMap } from '@hooks/useThemedStyles/types'\n\nexport function createSummaryHeaderStyles(): StyleMap {\n return styled({\n container: {\n width: '100%',\n minHeight: '1rem',\n\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n\n gap: '0.125rem'\n },\n\n iconContainer: {\n display: 'flex',\n alignItems: 'flex-start'\n },\n\n textContainer: {\n flex: '1',\n maxWidth: '8rem',\n\n display: 'flex',\n alignItems: 'flex-start',\n\n __rules: {\n '& > p': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n }\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\nimport type { ReactNode } from 'react'\n\n// Components\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Styles\nimport { createSummaryHeaderStyles } from './styles'\n\ninterface Props {\n title: string\n icon?: ReactNode\n}\n\nexport const SummaryHeader: React.FC<Props> = ({ icon, title }) => {\n const { styles } = useThemedStyles({}, createSummaryHeaderStyles)\n\n return (\n <header style={styles.container}>\n {icon ? <div style={styles.iconContainer}>{icon}</div> : null}\n\n <div style={styles.textContainer}>\n <Typography variant=\"b1\" lineHeight=\"100%\" fontSize=\"0.75rem\">\n {title}\n </Typography>\n </div>\n </header>\n )\n}\n","// Types\nimport { styled, type StyleMap } from '@hooks/useThemedStyles/types'\n\nexport function createSummaryCaptionStyles(): StyleMap {\n return styled({\n container: {\n width: '100%',\n minHeight: '0.625rem',\n\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyItems: 'start',\n\n columnGap: '0.125rem'\n },\n\n textContainer: {\n flex: '1',\n maxWidth: '8rem',\n\n display: 'flex',\n alignItems: 'center',\n\n __rules: {\n '& > p': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n }\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\n\n// Components\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Styles\nimport { createSummaryCaptionStyles } from './styles'\n\ninterface Props {\n loading?: boolean\n captionText?: string\n}\n\nexport const SummaryCaption: React.FC<Props> = ({ loading, captionText }) => {\n // Hooks\n const { styles } = useThemedStyles({}, createSummaryCaptionStyles)\n\n return (\n <div style={styles.container}>\n <div style={styles.textContainer}>\n <Typography\n variant=\"b3\"\n lineHeight=\"100%\"\n isLoading={loading}\n fontSize=\"0.625rem\"\n color=\"var(--px-text-secondary)\"\n >\n {captionText}\n </Typography>\n </div>\n </div>\n )\n}\n","// Types\nimport { styled, type StyleMap } from '@hooks/useThemedStyles/types'\n\nexport function createSummaryHighlightStyles(): StyleMap {\n return styled({\n container: {\n width: '100%',\n minHeight: '1rem',\n\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n\n columnGap: '0.125rem'\n },\n\n iconContainer: {\n display: 'flex',\n alignItems: 'flex-start'\n },\n\n textContainer: {\n flex: '1',\n maxWidth: '8rem',\n\n display: 'flex',\n alignItems: 'flex-start',\n\n __rules: {\n '& > p': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: '1'\n }\n }\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\nimport type { ReactNode } from 'react'\n\n// Components\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Styles\nimport { createSummaryHighlightStyles } from './styles'\n\ninterface Props {\n loading?: boolean\n highlightText?: string\n highlightIcon?: ReactNode\n}\n\nexport const SummaryHighlight: React.FC<Props> = ({\n loading,\n highlightText,\n highlightIcon\n}) => {\n // Hooks\n const { styles } = useThemedStyles({}, createSummaryHighlightStyles)\n\n return (\n <div style={styles.container}>\n {highlightIcon ? (\n <div style={styles.iconContainer}>{highlightIcon}</div>\n ) : null}\n\n <div style={styles.textContainer}>\n <Typography\n variant=\"b1\"\n lineHeight=\"100%\"\n fontSize=\"0.875rem\"\n fontWeight=\"regular\"\n isLoading={loading}\n >\n {highlightText}\n </Typography>\n </div>\n </div>\n )\n}\n","// Types\nimport type { SummaryItemProps } from './types'\nimport { styled, type StyleMap } from '@hooks/useThemedStyles/types'\n\nexport function createSummaryItemStyles(props: SummaryItemProps): StyleMap {\n return styled({\n container: {\n height: '100%',\n borderRight: props.isLast ? 'none' : '1px solid var(--border-secondary)'\n },\n\n content: {\n minWidth: '8rem',\n height: '100%',\n\n display: 'flex',\n flexDirection: 'column',\n\n rowGap: '0.125rem',\n paddingBlock: '0.5rem',\n paddingInline: '1rem'\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\n\n// Components\nimport { SummaryHeader } from './components/SummaryHeader'\nimport { SummaryCaption } from './components/SummaryCaption'\nimport { SummaryHighlight } from './components/SummaryHighlight'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { SummaryItemProps } from './types'\n\n// Styles\nimport { createSummaryItemStyles } from './styles'\n\nexport const SummaryItem: React.FC<SummaryItemProps> = props => {\n // Hooks\n const { styles } = useThemedStyles(props, createSummaryItemStyles)\n\n return (\n <li style={styles.container}>\n <article style={styles.content}>\n <SummaryHeader icon={props.item.titleIcon} title={props.item.title} />\n\n <SummaryHighlight\n loading={props.loading}\n highlightText={props.item.highlight}\n highlightIcon={props.item.highlightIcon}\n />\n\n <SummaryCaption\n loading={props.loading}\n captionText={props.item.caption}\n />\n </article>\n </li>\n )\n}\n","// Types\nimport { styled, type StyleMap } from '@hooks/useThemedStyles/types'\n\nexport function createInfoSummaryStyles(): StyleMap {\n return styled({\n section: {\n height: '5rem',\n minHeight: '5rem',\n\n width: 'fit-content',\n\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n\n borderWidth: 1,\n backgroundColor: 'var(--px-bg)',\n borderColor: 'var(--px-border-primary)',\n\n borderRadius: '10px',\n paddingBlock: 'var(--px-space-sm)'\n },\n\n summaryListContainer: {\n width: '100%',\n height: '100%',\n\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start'\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\n\n// Components\nimport { SummaryItem } from './components/SummaryItem'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { InfoSummaryProps } from './types'\n\n// Styles\nimport { createInfoSummaryStyles } from './styles'\n\nexport * from './types'\n\nexport const InfoSummary: React.FC<InfoSummaryProps> = ({ infos, loading }) => {\n // Hooks\n const { styles } = useThemedStyles({}, createInfoSummaryStyles)\n\n // Functions\n function renderSummaryItems() {\n return (\n <ul style={styles.summaryListContainer}>\n {infos.map((info, index) => (\n <SummaryItem\n item={info}\n key={info.id}\n loading={loading}\n isLast={index === infos.length - 1}\n />\n ))}\n </ul>\n )\n }\n\n return <section style={styles.section}>{renderSummaryItems()}</section>\n}\n"],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { t as Icon } from "./Icon-61UaAUrM.js";
3
+ import { t as Label } from "./Label-BhqH21lT.js";
4
+ import { forwardRef, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+
7
+ //#region src/components/commons/inputs/Input/hooks/useInput/index.ts
8
+ function useInput({ onChange }) {
9
+ const inputRef = useRef(null);
10
+ const [showPassword, setShowPassword] = useState(false);
11
+ function togglePasswordVisibility() {
12
+ setShowPassword((prev) => !prev);
13
+ }
14
+ function handleRefMethods() {
15
+ return {
16
+ focus: handleFocus,
17
+ blur: handleBlur
18
+ };
19
+ }
20
+ function handleFocus() {
21
+ inputRef.current?.focus();
22
+ }
23
+ function handleBlur() {
24
+ inputRef.current?.blur();
25
+ }
26
+ function handleChange(e) {
27
+ const value = e.target.value;
28
+ onChange?.(value);
29
+ }
30
+ return {
31
+ inputRef,
32
+ showPassword,
33
+ handleChange,
34
+ handleRefMethods,
35
+ togglePasswordVisibility
36
+ };
37
+ }
38
+
39
+ //#endregion
40
+ //#region src/components/commons/inputs/Input/styles.ts
41
+ function createInputStyles(props) {
42
+ return styled({
43
+ container: {
44
+ width: "100%",
45
+ display: "flex",
46
+ flexDirection: "column",
47
+ rowGap: "0.375rem"
48
+ },
49
+ wrapper: {
50
+ width: "100%",
51
+ display: "flex",
52
+ alignItems: "center",
53
+ borderWidth: 1,
54
+ columnGap: "0.25rem",
55
+ borderRadius: "0.5rem",
56
+ padding: "0.625rem 0.875rem",
57
+ opacity: props.disabled ? .5 : 1,
58
+ boxShadow: "0px 1px 2px 0px #0A0D120D",
59
+ borderColor: props.errorMessage ? "var(--px-color-error)" : "var(--px-border-primary)",
60
+ __rules: { "&:focus-within": {
61
+ outlineOffset: "-1px",
62
+ outline: `2px solid var(${props.errorMessage ? "--px-color-error" : "--px-color-primary"})`
63
+ } }
64
+ },
65
+ input: {
66
+ flex: 1,
67
+ fontWeight: 500,
68
+ fontSize: "1rem",
69
+ lineHeight: "1.5rem",
70
+ fontFamily: "inherit",
71
+ color: "var(--px-text-primary)",
72
+ __rules: {
73
+ "&:disabled": { cursor: "not-allowed" },
74
+ "&:focus": { outline: "none" },
75
+ "&::placeholder": {
76
+ fontWeight: 400,
77
+ color: "var(--px-text-secondary)"
78
+ }
79
+ }
80
+ },
81
+ error: {
82
+ display: "block",
83
+ fontWeight: 400,
84
+ lineHeight: "1rem",
85
+ fontSize: "0.75rem",
86
+ fontFamily: "inherit",
87
+ color: "var(--px-text-error)"
88
+ },
89
+ button: {
90
+ display: "flex",
91
+ alignItems: "center",
92
+ justifyContent: "center",
93
+ cursor: "pointer",
94
+ padding: "0.25rem",
95
+ borderRadius: "0.5rem",
96
+ __rules: { "&:focus": { outline: "1px solid var(--px-border-primary)" } }
97
+ }
98
+ });
99
+ }
100
+
101
+ //#endregion
102
+ //#region src/components/commons/inputs/Input/index.tsx
103
+ const Input = forwardRef((props, ref) => {
104
+ const { errorMessage, ...rest } = props;
105
+ const reactId = useId();
106
+ const inputId = useMemo(() => {
107
+ return props.id || `input-${reactId}`;
108
+ }, [props.id, reactId]);
109
+ const { inputRef, showPassword, handleChange, handleRefMethods, togglePasswordVisibility } = useInput(props);
110
+ useImperativeHandle(ref, handleRefMethods);
111
+ const { styles, classes } = useThemedStyles(props, createInputStyles, {
112
+ pick: (p) => [
113
+ p.disabled,
114
+ p.errorMessage,
115
+ p.required
116
+ ],
117
+ override: props.styles,
118
+ applyCommonProps: true,
119
+ commonSlot: "input"
120
+ });
121
+ function getType() {
122
+ if (props.type === "password" && showPassword) return "text";
123
+ return props.type;
124
+ }
125
+ function renderEndContent() {
126
+ if (props.type === "password") return /* @__PURE__ */ jsx("button", {
127
+ type: "button",
128
+ style: styles.button,
129
+ className: classes.button,
130
+ onClick: togglePasswordVisibility,
131
+ children: /* @__PURE__ */ jsx(Icon, {
132
+ size: "sm",
133
+ name: showPassword ? "general-eye-off" : "general-eye"
134
+ })
135
+ });
136
+ return props.endIcon ?? null;
137
+ }
138
+ return /* @__PURE__ */ jsxs("div", {
139
+ style: styles.container,
140
+ children: [
141
+ /* @__PURE__ */ jsx(Label, {
142
+ htmlFor: inputId,
143
+ label: props.label,
144
+ required: props.required,
145
+ requiredColor: props.requiredColor,
146
+ ...props.labelConfig
147
+ }),
148
+ /* @__PURE__ */ jsxs("div", {
149
+ style: styles.wrapper,
150
+ className: classes.wrapper,
151
+ children: [
152
+ props.startIcon,
153
+ /* @__PURE__ */ jsx("input", {
154
+ ref: inputRef,
155
+ id: inputId,
156
+ ...rest,
157
+ type: getType(),
158
+ value: props.value,
159
+ style: styles.input,
160
+ className: classes.input,
161
+ onChange: handleChange
162
+ }),
163
+ renderEndContent()
164
+ ]
165
+ }),
166
+ errorMessage ? /* @__PURE__ */ jsx("span", {
167
+ style: styles.error,
168
+ children: errorMessage
169
+ }) : null
170
+ ]
171
+ });
172
+ });
173
+ Input.displayName = "Input";
174
+
175
+ //#endregion
176
+ export { Input as t };
177
+ //# sourceMappingURL=Input-DLJz5Mrn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-DLJz5Mrn.js","names":[],"sources":["../src/components/commons/inputs/Input/hooks/useInput/index.ts","../src/components/commons/inputs/Input/styles.ts","../src/components/commons/inputs/Input/index.tsx"],"sourcesContent":["// External Libraries\nimport { useState, useRef } from 'react'\n\n// Types\nimport type { InputProps } from '../../types'\n\nexport function useInput({ onChange }: InputProps) {\n // Refs\n const inputRef = useRef<HTMLInputElement>(null)\n\n // States\n const [showPassword, setShowPassword] = useState(false)\n\n // Functions\n function togglePasswordVisibility() {\n setShowPassword(prev => !prev)\n }\n\n function handleRefMethods() {\n return { focus: handleFocus, blur: handleBlur }\n }\n\n function handleFocus() {\n inputRef.current?.focus()\n }\n\n function handleBlur() {\n inputRef.current?.blur()\n }\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n const value = e.target.value\n onChange?.(value)\n }\n\n return {\n inputRef,\n showPassword,\n handleChange,\n handleRefMethods,\n togglePasswordVisibility\n }\n}\n","// Hooks\nimport { styled } from '@hooks/useThemedStyles/types'\n\n// Types\nimport type { InputProps } from './types'\n\nexport function createInputStyles(props: InputProps) {\n return styled({\n container: {\n width: '100%',\n\n display: 'flex',\n flexDirection: 'column',\n\n rowGap: '0.375rem'\n },\n wrapper: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n\n borderWidth: 1,\n columnGap: '0.25rem',\n borderRadius: '0.5rem',\n padding: '0.625rem 0.875rem',\n\n opacity: props.disabled ? 0.5 : 1,\n boxShadow: '0px 1px 2px 0px #0A0D120D',\n borderColor: props.errorMessage\n ? 'var(--px-color-error)'\n : 'var(--px-border-primary)',\n\n __rules: {\n '&:focus-within': {\n outlineOffset: '-1px',\n outline: `2px solid var(${props.errorMessage ? '--px-color-error' : '--px-color-primary'})`\n }\n }\n },\n\n input: {\n flex: 1,\n\n fontWeight: 500,\n fontSize: '1rem',\n lineHeight: '1.5rem',\n fontFamily: 'inherit',\n color: 'var(--px-text-primary)',\n\n __rules: {\n '&:disabled': {\n cursor: 'not-allowed'\n },\n\n '&:focus': {\n outline: 'none'\n },\n\n '&::placeholder': {\n fontWeight: 400,\n color: 'var(--px-text-secondary)'\n }\n }\n },\n\n error: {\n display: 'block',\n fontWeight: 400,\n lineHeight: '1rem',\n fontSize: '0.75rem',\n fontFamily: 'inherit',\n color: 'var(--px-text-error)'\n },\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n cursor: 'pointer',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n\n __rules: {\n '&:focus': {\n outline: '1px solid var(--px-border-primary)'\n }\n }\n }\n })\n}\n","// External Libraries\nimport { forwardRef, useId, useImperativeHandle, useMemo } from 'react'\n\n// Components\nimport { Label } from '../../Label'\nimport { Icon } from '@components/commons/toolkit/Icon'\n\n// Types\nimport type { InputProps, InputMethods } from './types'\n\n// Hooks\nimport { useInput } from './hooks/useInput'\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Styles\nimport { createInputStyles } from './styles'\n\nexport const Input = forwardRef<InputMethods, InputProps>((props, ref) => {\n const { errorMessage, ...rest } = props\n\n // Constants\n const reactId = useId()\n const inputId = useMemo(() => {\n return props.id || `input-${reactId}`\n }, [props.id, reactId])\n\n // Hooks\n const {\n inputRef,\n showPassword,\n handleChange,\n handleRefMethods,\n togglePasswordVisibility\n } = useInput(props)\n useImperativeHandle(ref, handleRefMethods)\n\n // Hooks\n const { styles, classes } = useThemedStyles(props, createInputStyles, {\n pick: p => [p.disabled, p.errorMessage, p.required],\n override: props.styles,\n applyCommonProps: true,\n commonSlot: 'input'\n })\n\n // Functions\n function getType() {\n if (props.type === 'password' && showPassword) return 'text'\n return props.type\n }\n\n function renderEndContent() {\n if (props.type === 'password') {\n return (\n <button\n type=\"button\"\n style={styles.button}\n className={classes.button}\n onClick={togglePasswordVisibility}\n >\n <Icon\n size=\"sm\"\n name={showPassword ? 'general-eye-off' : 'general-eye'}\n />\n </button>\n )\n }\n\n return props.endIcon ?? null\n }\n\n return (\n <div style={styles.container}>\n <Label\n htmlFor={inputId}\n label={props.label}\n required={props.required}\n requiredColor={props.requiredColor}\n {...props.labelConfig}\n />\n\n <div style={styles.wrapper} className={classes.wrapper}>\n {props.startIcon}\n\n <input\n ref={inputRef}\n id={inputId}\n {...rest}\n type={getType()}\n value={props.value}\n style={styles.input}\n className={classes.input}\n onChange={handleChange}\n />\n\n {renderEndContent()}\n </div>\n\n {errorMessage ? <span style={styles.error}>{errorMessage}</span> : null}\n </div>\n )\n})\n\nInput.displayName = 'Input'\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { t as Typography } from "./Typography-j84zoCoZ.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+
4
+ //#region src/components/commons/Label/index.tsx
5
+ const Label = (props) => {
6
+ const { label, color, htmlFor, required, requiredColor, variant = "b2", ...rest } = props;
7
+ return /* @__PURE__ */ jsx("label", {
8
+ htmlFor,
9
+ children: /* @__PURE__ */ jsxs(Typography, {
10
+ variant,
11
+ color: color ?? "var(px-text-primary)",
12
+ ...rest,
13
+ children: [label, required ? /* @__PURE__ */ jsxs(Typography, {
14
+ as: "span",
15
+ variant: "b2",
16
+ color: requiredColor ?? "var(--px-text-error)",
17
+ children: [" ", "*"]
18
+ }) : null]
19
+ })
20
+ });
21
+ };
22
+
23
+ //#endregion
24
+ export { Label as t };
25
+ //# sourceMappingURL=Label-BhqH21lT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label-BhqH21lT.js","names":["Label: React.FC<LabelProps>"],"sources":["../src/components/commons/Label/index.tsx"],"sourcesContent":["// Components\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Types\nimport type { LabelProps } from './types'\n\nexport const Label: React.FC<LabelProps> = props => {\n const {\n label,\n color,\n htmlFor,\n required,\n requiredColor,\n variant = 'b2',\n ...rest\n } = props\n\n return (\n <label htmlFor={htmlFor}>\n <Typography\n variant={variant}\n color={color ?? 'var(px-text-primary)'}\n {...rest}\n >\n {label}\n\n {required ? (\n <Typography\n as=\"span\"\n variant=\"b2\"\n color={requiredColor ?? 'var(--px-text-error)'}\n >\n {' '}\n *\n </Typography>\n ) : null}\n </Typography>\n </label>\n )\n}\n"],"mappings":";;;;AAMA,MAAaA,SAA8B,UAAS;CAClD,MAAM,EACJ,OACA,OACA,SACA,UACA,eACA,UAAU,MACV,GAAG,SACD;AAEJ,QACE,oBAAC;EAAe;YACd,qBAAC;GACU;GACT,OAAO,SAAS;GAChB,GAAI;cAEH,OAEA,WACC,qBAAC;IACC,IAAG;IACH,SAAQ;IACR,OAAO,iBAAiB;eAEvB,KAAI;KAEM,GACX;IACO;GACP"}
@@ -0,0 +1,81 @@
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { t as useDismiss } from "./useDismiss-DJ1mh-X3.js";
3
+ import { t as useFloating } from "./useFloating--PcINgSt.js";
4
+ import { useCallback, useEffect, useRef, useState } from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { createPortal } from "react-dom";
7
+
8
+ //#region src/components/commons/toolkit/Popover/styles.ts
9
+ function createPopoverStyles(_props) {
10
+ return styled({ popoverNode: {
11
+ position: "fixed",
12
+ left: 0,
13
+ top: 0,
14
+ zIndex: 10,
15
+ padding: "0.25rem",
16
+ boxShadow: "var(--px-ring-1)",
17
+ backgroundColor: "var(--px-bg)",
18
+ borderRadius: "var(--px-radius-xl)"
19
+ } });
20
+ }
21
+
22
+ //#endregion
23
+ //#region src/components/commons/toolkit/Popover/index.tsx
24
+ const Popover = (props) => {
25
+ const { anchorRef, floatingOptions, closeOnEscape = true, open: controlledOpen, closeOnOutsideClick = true, trigger, content, onOpenChange, onMouseEnter, onMouseLeave } = props;
26
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
27
+ const open = controlledOpen ?? uncontrolledOpen;
28
+ const { styles } = useThemedStyles(props, createPopoverStyles, {
29
+ applyCommonProps: true,
30
+ override: props.styles,
31
+ pick: (p) => [p.open, p.content]
32
+ });
33
+ function setOpen(v) {
34
+ onOpenChange?.(v);
35
+ if (controlledOpen === void 0) setUncontrolledOpen(v);
36
+ }
37
+ const close = useCallback(() => setOpen(false), [setOpen]);
38
+ const triggerRef = useRef(null);
39
+ const resolvedAnchorRef = anchorRef ?? triggerRef;
40
+ const popoverRef = useRef(null);
41
+ const { floatingRef, update } = useFloating(resolvedAnchorRef, {
42
+ offsetY: 6,
43
+ strategy: "fixed",
44
+ keepInViewport: true,
45
+ placement: "bottom-start",
46
+ ...floatingOptions
47
+ });
48
+ useDismiss({
49
+ open,
50
+ closeOnEscape,
51
+ closeOnOutsideClick,
52
+ refs: [resolvedAnchorRef, popoverRef],
53
+ onClose: close
54
+ });
55
+ useEffect(() => {
56
+ if (open) requestAnimationFrame(update);
57
+ }, [open, update]);
58
+ const triggerNode = trigger?.({
59
+ "aria-expanded": open,
60
+ ref: triggerRef,
61
+ onClick: () => setOpen(!open)
62
+ }) ?? null;
63
+ const popoverNode = open ? /* @__PURE__ */ jsx("div", {
64
+ ref: (el) => {
65
+ popoverRef.current = el;
66
+ floatingRef(el);
67
+ },
68
+ role: "dialog",
69
+ style: styles.popoverNode,
70
+ onMouseEnter,
71
+ onMouseLeave,
72
+ onMouseDownCapture: (e) => e.stopPropagation(),
73
+ onPointerDownCapture: (e) => e.stopPropagation(),
74
+ children: content({ close })
75
+ }) : null;
76
+ return /* @__PURE__ */ jsxs(Fragment, { children: [triggerNode, typeof document !== "undefined" ? createPortal(popoverNode, document.body) : null] });
77
+ };
78
+
79
+ //#endregion
80
+ export { Popover as t };
81
+ //# sourceMappingURL=Popover-BsDGCJ-f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover-BsDGCJ-f.js","names":["Popover: React.FC<PopoverProps>"],"sources":["../src/components/commons/toolkit/Popover/styles.ts","../src/components/commons/toolkit/Popover/index.tsx"],"sourcesContent":["// Types\nimport type { PopoverProps } from './types'\nimport { styled } from '@hooks/useThemedStyles/types'\n\nexport function createPopoverStyles(_props: PopoverProps) {\n return styled({\n popoverNode: {\n position: 'fixed',\n left: 0,\n top: 0,\n\n zIndex: 10,\n\n padding: '0.25rem',\n\n boxShadow: 'var(--px-ring-1)',\n backgroundColor: 'var(--px-bg)',\n\n borderRadius: 'var(--px-radius-xl)'\n }\n })\n}\n","// External Libraries\n/** biome-ignore-all lint/suspicious/noExplicitAny: <Not needed> */\n/** biome-ignore-all lint/correctness/useExhaustiveDependencies: <Not needed> */\nimport type React from 'react'\nimport { createPortal } from 'react-dom'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\n// Hooks\nimport { useDismiss } from '@hooks/useDismiss'\nimport { useFloating } from '@hooks/useFloating'\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { PopoverProps } from './types'\n\n// Styles\nimport { createPopoverStyles } from './styles'\n\nexport const Popover: React.FC<PopoverProps> = props => {\n const {\n anchorRef,\n floatingOptions,\n closeOnEscape = true,\n open: controlledOpen,\n closeOnOutsideClick = true,\n trigger,\n content,\n onOpenChange,\n onMouseEnter,\n onMouseLeave\n } = props\n\n // States\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false)\n\n const open = controlledOpen ?? uncontrolledOpen\n\n // Hooks\n const { styles } = useThemedStyles(props, createPopoverStyles, {\n applyCommonProps: true,\n override: props.styles,\n pick: p => [p.open, p.content]\n })\n\n // Functions\n function setOpen(v: boolean) {\n onOpenChange?.(v)\n if (controlledOpen === undefined) setUncontrolledOpen(v)\n }\n\n const close = useCallback(() => setOpen(false), [setOpen])\n\n const triggerRef = useRef<HTMLElement | null>(null)\n const resolvedAnchorRef = (anchorRef ?? triggerRef) as any\n\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const { floatingRef, update } = useFloating(resolvedAnchorRef, {\n offsetY: 6,\n strategy: 'fixed',\n keepInViewport: true,\n placement: 'bottom-start',\n ...floatingOptions\n })\n\n useDismiss({\n open,\n closeOnEscape,\n closeOnOutsideClick,\n refs: [resolvedAnchorRef, popoverRef],\n onClose: close\n })\n\n useEffect(() => {\n if (open) requestAnimationFrame(update)\n }, [open, update])\n\n const triggerNode =\n trigger?.({\n 'aria-expanded': open,\n ref: triggerRef as any,\n onClick: () => setOpen(!open)\n }) ?? null\n\n const popoverNode = open ? (\n <div\n ref={el => {\n popoverRef.current = el\n floatingRef(el)\n }}\n role=\"dialog\"\n style={styles.popoverNode}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseDownCapture={e => e.stopPropagation()}\n onPointerDownCapture={e => e.stopPropagation()}\n >\n {content({ close })}\n </div>\n ) : null\n\n return (\n <>\n {triggerNode}\n {typeof document !== 'undefined'\n ? createPortal(popoverNode, document.body)\n : null}\n </>\n )\n}\n"],"mappings":";;;;;;;;AAIA,SAAgB,oBAAoB,QAAsB;AACxD,QAAO,OAAO,EACZ,aAAa;EACX,UAAU;EACV,MAAM;EACN,KAAK;EAEL,QAAQ;EAER,SAAS;EAET,WAAW;EACX,iBAAiB;EAEjB,cAAc;EACf,EACF,CAAC;;;;;ACFJ,MAAaA,WAAkC,UAAS;CACtD,MAAM,EACJ,WACA,iBACA,gBAAgB,MAChB,MAAM,gBACN,sBAAsB,MACtB,SACA,SACA,cACA,cACA,iBACE;CAGJ,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,MAAM;CAE/D,MAAM,OAAO,kBAAkB;CAG/B,MAAM,EAAE,WAAW,gBAAgB,OAAO,qBAAqB;EAC7D,kBAAkB;EAClB,UAAU,MAAM;EAChB,OAAM,MAAK,CAAC,EAAE,MAAM,EAAE,QAAQ;EAC/B,CAAC;CAGF,SAAS,QAAQ,GAAY;AAC3B,iBAAe,EAAE;AACjB,MAAI,mBAAmB,OAAW,qBAAoB,EAAE;;CAG1D,MAAM,QAAQ,kBAAkB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;CAE1D,MAAM,aAAa,OAA2B,KAAK;CACnD,MAAM,oBAAqB,aAAa;CAExC,MAAM,aAAa,OAA8B,KAAK;CAEtD,MAAM,EAAE,aAAa,WAAW,YAAY,mBAAmB;EAC7D,SAAS;EACT,UAAU;EACV,gBAAgB;EAChB,WAAW;EACX,GAAG;EACJ,CAAC;AAEF,YAAW;EACT;EACA;EACA;EACA,MAAM,CAAC,mBAAmB,WAAW;EACrC,SAAS;EACV,CAAC;AAEF,iBAAgB;AACd,MAAI,KAAM,uBAAsB,OAAO;IACtC,CAAC,MAAM,OAAO,CAAC;CAElB,MAAM,cACJ,UAAU;EACR,iBAAiB;EACjB,KAAK;EACL,eAAe,QAAQ,CAAC,KAAK;EAC9B,CAAC,IAAI;CAER,MAAM,cAAc,OAClB,oBAAC;EACC,MAAK,OAAM;AACT,cAAW,UAAU;AACrB,eAAY,GAAG;;EAEjB,MAAK;EACL,OAAO,OAAO;EACA;EACA;EACd,qBAAoB,MAAK,EAAE,iBAAiB;EAC5C,uBAAsB,MAAK,EAAE,iBAAiB;YAE7C,QAAQ,EAAE,OAAO,CAAC;GACf,GACJ;AAEJ,QACE,4CACG,aACA,OAAO,aAAa,cACjB,aAAa,aAAa,SAAS,KAAK,GACxC,QACH"}
@@ -0,0 +1,49 @@
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+
4
+ //#region src/components/commons/toolkit/Switch/styles.ts
5
+ function createSwitchThumbStyles({ checked, colorActive, colorInactive, colorIndicator }) {
6
+ return styled({
7
+ container: {
8
+ width: "2.5rem",
9
+ height: "1.25rem",
10
+ position: "relative",
11
+ display: "inline-flex",
12
+ alignItems: "center",
13
+ marginLeft: "0.5rem",
14
+ borderRadius: "2rem",
15
+ padding: "0.125rem",
16
+ transition: "background-color 0.5s",
17
+ backgroundColor: checked ? colorActive ?? "var(--px-color-success)" : colorInactive ?? "var(--px-color-disabled)"
18
+ },
19
+ indicator: {
20
+ height: "1rem",
21
+ width: "1rem",
22
+ position: "absolute",
23
+ left: "0.125rem",
24
+ top: "0.125rem",
25
+ borderRadius: "9999px",
26
+ backgroundColor: colorIndicator ?? "var(--px-surface)",
27
+ transition: "transform 0.5s",
28
+ transform: checked ? "translateX(1.25rem)" : "translateX(0)",
29
+ willChange: "transform"
30
+ }
31
+ });
32
+ }
33
+
34
+ //#endregion
35
+ //#region src/components/commons/toolkit/Switch/index.tsx
36
+ const Switch = (props) => {
37
+ const { styles } = useThemedStyles(props, createSwitchThumbStyles, {
38
+ applyCommonProps: true,
39
+ pick: (p) => [p.checked]
40
+ });
41
+ return /* @__PURE__ */ jsx("span", {
42
+ style: styles.container,
43
+ children: /* @__PURE__ */ jsx("span", { style: styles.indicator })
44
+ });
45
+ };
46
+
47
+ //#endregion
48
+ export { Switch as t };
49
+ //# sourceMappingURL=Switch-B4e9qBOu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch-B4e9qBOu.js","names":["Switch: React.FC<SwitchThumbProps>"],"sources":["../src/components/commons/toolkit/Switch/styles.ts","../src/components/commons/toolkit/Switch/index.tsx"],"sourcesContent":["// Types\nimport type { SwitchThumbProps } from './types'\n\n// Styles\nimport { styled } from '@hooks/useThemedStyles/types'\nexport function createSwitchThumbStyles({\n checked,\n colorActive,\n colorInactive,\n colorIndicator\n}: SwitchThumbProps) {\n return styled({\n container: {\n width: '2.5rem',\n height: '1.25rem',\n\n position: 'relative',\n\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: '0.5rem',\n\n borderRadius: '2rem',\n padding: '0.125rem',\n\n transition: 'background-color 0.5s',\n backgroundColor: checked\n ? (colorActive ?? 'var(--px-color-success)')\n : (colorInactive ?? 'var(--px-color-disabled)')\n },\n\n indicator: {\n height: '1rem',\n width: '1rem',\n\n position: 'absolute',\n left: '0.125rem',\n top: '0.125rem',\n\n borderRadius: '9999px',\n backgroundColor: colorIndicator ?? 'var(--px-surface)',\n\n transition: 'transform 0.5s',\n transform: checked ? 'translateX(1.25rem)' : 'translateX(0)',\n willChange: 'transform'\n }\n })\n}\n","// External Libraries\nimport type React from 'react'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { SwitchThumbProps } from './types'\n\n// Styles\nimport { createSwitchThumbStyles } from './styles'\n\nexport const Switch: React.FC<SwitchThumbProps> = props => {\n // Hooks\n const { styles } = useThemedStyles(props, createSwitchThumbStyles, {\n applyCommonProps: true,\n pick: p => [p.checked]\n })\n\n return (\n <span style={styles.container}>\n <span style={styles.indicator} />\n </span>\n )\n}\n"],"mappings":";;;;AAKA,SAAgB,wBAAwB,EACtC,SACA,aACA,eACA,kBACmB;AACnB,QAAO,OAAO;EACZ,WAAW;GACT,OAAO;GACP,QAAQ;GAER,UAAU;GAEV,SAAS;GACT,YAAY;GACZ,YAAY;GAEZ,cAAc;GACd,SAAS;GAET,YAAY;GACZ,iBAAiB,UACZ,eAAe,4BACf,iBAAiB;GACvB;EAED,WAAW;GACT,QAAQ;GACR,OAAO;GAEP,UAAU;GACV,MAAM;GACN,KAAK;GAEL,cAAc;GACd,iBAAiB,kBAAkB;GAEnC,YAAY;GACZ,WAAW,UAAU,wBAAwB;GAC7C,YAAY;GACb;EACF,CAAC;;;;;AClCJ,MAAaA,UAAqC,UAAS;CAEzD,MAAM,EAAE,WAAW,gBAAgB,OAAO,yBAAyB;EACjE,kBAAkB;EAClB,OAAM,MAAK,CAAC,EAAE,QAAQ;EACvB,CAAC;AAEF,QACE,oBAAC;EAAK,OAAO,OAAO;YAClB,oBAAC,UAAK,OAAO,OAAO,YAAa;GAC5B"}
@@ -1,9 +1,9 @@
1
- import { n as styled, t as useThemedStyles } from "./useThemedStyles-3rUXJYgS.js";
2
- import { t as Typography } from "./Typography-BE-vQSfx.js";
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { t as Typography } from "./Typography-j84zoCoZ.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { motion } from "framer-motion";
5
5
 
6
- //#region src/components/toolkit/TabSwitch/components/TabSwitchItem/styles.ts
6
+ //#region src/components/commons/toolkit/TabSwitch/components/TabSwitchItem/styles.ts
7
7
  function createTabSwitchItemStyles({ variant, disabled, selected, selectedColor }) {
8
8
  const accent = selectedColor ?? "var(--px-color-primary)";
9
9
  return styled({
@@ -41,7 +41,7 @@ function createTabSwitchItemStyles({ variant, disabled, selected, selectedColor
41
41
  }
42
42
 
43
43
  //#endregion
44
- //#region src/components/toolkit/TabSwitch/components/TabSwitchItem/index.tsx
44
+ //#region src/components/commons/toolkit/TabSwitch/components/TabSwitchItem/index.tsx
45
45
  const SwitchItem = (props) => {
46
46
  const { option, disabled, selected, layoutId, onClick } = props;
47
47
  const { styles, classes } = useThemedStyles(props, createTabSwitchItemStyles, { pick: (p) => [
@@ -76,7 +76,7 @@ const SwitchItem = (props) => {
76
76
  };
77
77
 
78
78
  //#endregion
79
- //#region src/components/toolkit/TabSwitch/styles.ts
79
+ //#region src/components/commons/toolkit/TabSwitch/styles.ts
80
80
  function createTabSwitchStyles(props) {
81
81
  const { fitContent } = props;
82
82
  return styled({ container: {
@@ -85,14 +85,14 @@ function createTabSwitchStyles(props) {
85
85
  alignItems: "center",
86
86
  color: "var(--px-text-primary, #4b5563)",
87
87
  width: fitContent ? "fit-content" : "100%",
88
- borderBottom: "1px solid var(--px-border-primaryder, #e5e7eb)",
88
+ borderBottom: "1px solid var(--px-border-primary, #e5e7eb)",
89
89
  gap: 0,
90
90
  __rules: { "& svg": { zIndex: 1 } }
91
91
  } });
92
92
  }
93
93
 
94
94
  //#endregion
95
- //#region src/components/toolkit/TabSwitch/index.tsx
95
+ //#region src/components/commons/toolkit/TabSwitch/index.tsx
96
96
  const TabSwitch = (props) => {
97
97
  {
98
98
  const { options, disabled, layoutId, currentValue, variant = "default", onChange } = props;
@@ -120,4 +120,4 @@ const TabSwitch = (props) => {
120
120
 
121
121
  //#endregion
122
122
  export { TabSwitch as t };
123
- //# sourceMappingURL=TabSwitch-De30bFX2.js.map
123
+ //# sourceMappingURL=TabSwitch-CvnlK0NZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabSwitch-CvnlK0NZ.js","names":[],"sources":["../src/components/commons/toolkit/TabSwitch/components/TabSwitchItem/styles.ts","../src/components/commons/toolkit/TabSwitch/components/TabSwitchItem/index.tsx","../src/components/commons/toolkit/TabSwitch/styles.ts","../src/components/commons/toolkit/TabSwitch/index.tsx"],"sourcesContent":["// External Libraries\nimport { styled } from '@hooks/useThemedStyles/types'\n\ninterface Params {\n disabled?: boolean\n selected?: boolean\n selectedColor?: string\n variant: 'default' | 'underline'\n}\n\nexport function createTabSwitchItemStyles({\n variant,\n disabled,\n selected,\n selectedColor\n}: Params) {\n const accent = selectedColor ?? 'var(--px-color-primary)'\n\n return styled({\n item: {\n minHeight: '1.25rem',\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 4,\n background: 'transparent',\n border: 0,\n padding: '8px 10px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.5 : 1,\n userSelect: 'none',\n whiteSpace: 'nowrap',\n __rules: { '& > p': { zIndex: 1 } }\n },\n\n selectedBg:\n variant === 'default'\n ? {\n position: 'absolute',\n inset: 0,\n borderRadius: 6,\n border: '1px solid var(--px-border-primary)',\n background: selected ? accent : 'transparent'\n }\n : {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: -2,\n height: 2,\n background: selected ? accent : 'transparent'\n }\n })\n}\n","// External Libraries\nimport { motion } from 'framer-motion'\n\n// Components\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Types\nimport type { SwitchOption } from '../../types'\n\n// Styles\nimport { createTabSwitchItemStyles } from './styles'\n\ntype Props<T> = {\n option: SwitchOption<T>\n selected: boolean\n layoutId?: string\n disabled?: boolean\n selectedColor?: string\n selectedLabelColor?: string\n variant: 'default' | 'underline'\n onClick: (value: T) => void\n}\n\nexport const SwitchItem = <T,>(props: Props<T>) => {\n const { option, disabled, selected, layoutId, onClick } = props\n\n const { styles, classes } = useThemedStyles(\n props,\n createTabSwitchItemStyles,\n {\n pick: p => [p.variant, p.selectedColor, p.selectedLabelColor, p.selected]\n }\n )\n\n const isDisabled = disabled || option.disabled\n\n return (\n <button\n type=\"button\"\n style={styles.item}\n className={classes.item}\n tabIndex={isDisabled ? -1 : 0}\n onClick={() => !isDisabled && onClick(option.value)}\n >\n {selected ? (\n <motion.div\n layoutId={layoutId || 'pixel-tabswitch-selected'}\n style={styles.selectedBg}\n />\n ) : null}\n\n {option.icon ? (\n <span style={{ display: 'inline-flex' }}>{option.icon}</span>\n ) : null}\n\n <Typography variant=\"b1\" fontWeight=\"bold\">\n {option.label}\n </Typography>\n </button>\n )\n}\n","// Types\nimport type { TabSwitchProps } from './types'\nimport { styled } from '@hooks/useThemedStyles/types'\n\nexport function createTabSwitchStyles<T>(props: TabSwitchProps<T>) {\n const { fitContent } = props\n\n return styled({\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n color: 'var(--px-text-primary, #4b5563)',\n width: fitContent ? 'fit-content' : '100%',\n borderBottom: '1px solid var(--px-border-primary, #e5e7eb)',\n gap: 0,\n __rules: { '& svg': { zIndex: 1 } }\n }\n })\n}\n","// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Components\nimport { SwitchItem } from './components/TabSwitchItem'\n\n// Types\nimport type { TabSwitchProps } from './types'\n\n// Styles\nimport { createTabSwitchStyles } from './styles'\n\nexport * from './types'\n\nexport const TabSwitch = <T,>(props: TabSwitchProps<T>) => {\n {\n const {\n options,\n disabled,\n layoutId,\n currentValue,\n variant = 'default',\n onChange\n } = props\n\n const { styles, classes } = useThemedStyles(props, createTabSwitchStyles, {\n pick: p => [p.disabled, p.currentValue],\n override: props.styles,\n applyCommonProps: true\n })\n\n return (\n <div style={styles.container} className={classes.container}>\n {options.map(opt => (\n <SwitchItem\n key={String(opt.value)}\n option={opt}\n variant={variant}\n layoutId={layoutId}\n disabled={disabled}\n selectedColor={props.selectedColor}\n selected={currentValue === opt.value}\n selectedLabelColor={props.selectedLabelColor}\n onClick={onChange}\n />\n ))}\n </div>\n )\n }\n}\n"],"mappings":";;;;;;AAUA,SAAgB,0BAA0B,EACxC,SACA,UACA,UACA,iBACS;CACT,MAAM,SAAS,iBAAiB;AAEhC,QAAO,OAAO;EACZ,MAAM;GACJ,WAAW;GACX,UAAU;GACV,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,KAAK;GACL,YAAY;GACZ,QAAQ;GACR,SAAS;GACT,QAAQ,WAAW,gBAAgB;GACnC,SAAS,WAAW,KAAM;GAC1B,YAAY;GACZ,YAAY;GACZ,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE;GACpC;EAED,YACE,YAAY,YACR;GACE,UAAU;GACV,OAAO;GACP,cAAc;GACd,QAAQ;GACR,YAAY,WAAW,SAAS;GACjC,GACD;GACE,UAAU;GACV,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,YAAY,WAAW,SAAS;GACjC;EACR,CAAC;;;;;AC3BJ,MAAa,cAAkB,UAAoB;CACjD,MAAM,EAAE,QAAQ,UAAU,UAAU,UAAU,YAAY;CAE1D,MAAM,EAAE,QAAQ,YAAY,gBAC1B,OACA,2BACA,EACE,OAAM,MAAK;EAAC,EAAE;EAAS,EAAE;EAAe,EAAE;EAAoB,EAAE;EAAS,EAC1E,CACF;CAED,MAAM,aAAa,YAAY,OAAO;AAEtC,QACE,qBAAC;EACC,MAAK;EACL,OAAO,OAAO;EACd,WAAW,QAAQ;EACnB,UAAU,aAAa,KAAK;EAC5B,eAAe,CAAC,cAAc,QAAQ,OAAO,MAAM;;GAElD,WACC,oBAAC,OAAO;IACN,UAAU,YAAY;IACtB,OAAO,OAAO;KACd,GACA;GAEH,OAAO,OACN,oBAAC;IAAK,OAAO,EAAE,SAAS,eAAe;cAAG,OAAO;KAAY,GAC3D;GAEJ,oBAAC;IAAW,SAAQ;IAAK,YAAW;cACjC,OAAO;KACG;;GACN;;;;;ACzDb,SAAgB,sBAAyB,OAA0B;CACjE,MAAM,EAAE,eAAe;AAEvB,QAAO,OAAO,EACZ,WAAW;EACT,SAAS;EACT,eAAe;EACf,YAAY;EACZ,OAAO;EACP,OAAO,aAAa,gBAAgB;EACpC,cAAc;EACd,KAAK;EACL,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE;EACpC,EACF,CAAC;;;;;ACJJ,MAAa,aAAiB,UAA6B;CACzD;EACE,MAAM,EACJ,SACA,UACA,UACA,cACA,UAAU,WACV,aACE;EAEJ,MAAM,EAAE,QAAQ,YAAY,gBAAgB,OAAO,uBAAuB;GACxE,OAAM,MAAK,CAAC,EAAE,UAAU,EAAE,aAAa;GACvC,UAAU,MAAM;GAChB,kBAAkB;GACnB,CAAC;AAEF,SACE,oBAAC;GAAI,OAAO,OAAO;GAAW,WAAW,QAAQ;aAC9C,QAAQ,KAAI,QACX,oBAAC;IAEC,QAAQ;IACC;IACC;IACA;IACV,eAAe,MAAM;IACrB,UAAU,iBAAiB,IAAI;IAC/B,oBAAoB,MAAM;IAC1B,SAAS;MARJ,OAAO,IAAI,MAAM,CAStB,CACF;IACE"}
@@ -1,7 +1,7 @@
1
- import { t as Icon } from "./Icon-Cv0qztmq.js";
2
- import { n as styled, t as useThemedStyles } from "./useThemedStyles-3rUXJYgS.js";
3
- import { t as Typography } from "./Typography-BE-vQSfx.js";
4
- import { t as Label } from "./Label-QQpNWSeV.js";
1
+ import { n as styled, t as useThemedStyles } from "./useThemedStyles-MLtE91hE.js";
2
+ import { t as Icon } from "./Icon-61UaAUrM.js";
3
+ import { t as Typography } from "./Typography-j84zoCoZ.js";
4
+ import { t as Label } from "./Label-BhqH21lT.js";
5
5
  import { useId } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
@@ -111,4 +111,4 @@ const TextArea = (props) => {
111
111
 
112
112
  //#endregion
113
113
  export { TextArea as t };
114
- //# sourceMappingURL=TextArea-CpIx36BV.js.map
114
+ //# sourceMappingURL=TextArea-CUrG_9je.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea-CUrG_9je.js","names":[],"sources":["../src/components/commons/inputs/TextArea/styles.ts","../src/components/commons/inputs/TextArea/index.tsx"],"sourcesContent":["// Types\nimport { styled } from '@hooks/useThemedStyles/types'\nimport type { TextAreaProps } from './types'\n\nexport function createTextAreaStyles(props: TextAreaProps) {\n const { height = '8rem', readOnly, startIcon } = props\n\n const focusRingColor = props.focusedRingColor || 'var(--px-color-info)'\n const placeHolderColor =\n props.placeholderColor || 'var(--px-text-placeholder)'\n\n return styled({\n iconContainer: {\n position: 'absolute',\n left: '0.75rem',\n top: '1.375rem',\n transform: 'translateY(-50%)'\n },\n textArea: {\n height,\n width: '100%',\n paddingBlock: '0.75rem',\n paddingInline: '0.875rem',\n borderRadius: '0.5rem',\n resize: 'none',\n\n fontWeight: '400',\n fontSize: '1rem',\n color: 'var(--px-text-primary)',\n\n border: '1px solid red',\n outlineOffset: '-1px',\n\n cursor: readOnly ? 'default' : undefined,\n paddingLeft: startIcon ? '2.5rem' : undefined,\n\n __rules: {\n '&::placeholder': {\n color: `${placeHolderColor}`\n },\n '&:focus': readOnly\n ? { outline: 'none' }\n : { outline: `2px solid ${focusRingColor}` }\n }\n }\n })\n}\n","// External Libraries\nimport { useId } from 'react'\n\n// Types\nimport type { TextAreaProps } from './types'\n\n// Components\nimport { Label } from '@components/commons/Label'\nimport { Icon } from '@components/commons/toolkit/Icon'\nimport { Typography } from '@components/commons/toolkit/Typography'\n\n// Hooks\nimport { useThemedStyles } from '@hooks/useThemedStyles'\n\n// Styles\nimport { createTextAreaStyles } from './styles'\n\nexport const TextArea = (props: TextAreaProps) => {\n const {\n value,\n disabled,\n readOnly,\n maxLength,\n hideMaxLength,\n textMaxLength,\n placeholder,\n\n label,\n required,\n requiredColor,\n labelColor,\n labelWeight,\n labelVariant,\n\n startIcon,\n iconColor\n } = props\n\n // Hooks\n const inputId = useId()\n\n const { styles, classes } = useThemedStyles(props, createTextAreaStyles, {\n pick: p => [\n p.height,\n p.readOnly,\n p.startIcon,\n p.placeholderColor,\n p.focusedRingColor\n ],\n override: props.styles,\n applyCommonProps: true\n })\n\n // Functions\n function handleChange(e: React.ChangeEvent<HTMLTextAreaElement>) {\n if (disabled || readOnly) return\n props.onChange?.(e.target.value)\n }\n\n function renderLabel() {\n if (!label) return null\n\n return (\n <div className=\"flex items-center gap-3\">\n <Label\n htmlFor={inputId}\n label={label}\n required={required}\n requiredColor={requiredColor}\n labelColor={labelColor}\n labelWeight={labelWeight}\n labelVariant={labelVariant}\n />\n </div>\n )\n }\n\n return (\n <div>\n {renderLabel()}\n\n <div style={{ position: 'relative' }}>\n {startIcon && (\n <div style={styles.iconContainer}>\n <Icon\n name={startIcon}\n color={iconColor ? iconColor : 'var(--px-text-primary)'}\n />\n </div>\n )}\n\n <textarea\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n maxLength={maxLength}\n placeholder={placeholder}\n style={styles.textArea}\n className={classes.textArea}\n onChange={handleChange}\n />\n </div>\n\n {maxLength && !hideMaxLength ? (\n <Typography variant=\"b2\" styles={{ text: { marginLeft: 'auto' } }}>\n {value.length}/{maxLength} {textMaxLength}\n </Typography>\n ) : null}\n </div>\n )\n}\n"],"mappings":";;;;;;;;AAIA,SAAgB,qBAAqB,OAAsB;CACzD,MAAM,EAAE,SAAS,QAAQ,UAAU,cAAc;CAEjD,MAAM,iBAAiB,MAAM,oBAAoB;CACjD,MAAM,mBACJ,MAAM,oBAAoB;AAE5B,QAAO,OAAO;EACZ,eAAe;GACb,UAAU;GACV,MAAM;GACN,KAAK;GACL,WAAW;GACZ;EACD,UAAU;GACR;GACA,OAAO;GACP,cAAc;GACd,eAAe;GACf,cAAc;GACd,QAAQ;GAER,YAAY;GACZ,UAAU;GACV,OAAO;GAEP,QAAQ;GACR,eAAe;GAEf,QAAQ,WAAW,YAAY;GAC/B,aAAa,YAAY,WAAW;GAEpC,SAAS;IACP,kBAAkB,EAChB,OAAO,GAAG,oBACX;IACD,WAAW,WACP,EAAE,SAAS,QAAQ,GACnB,EAAE,SAAS,aAAa,kBAAkB;IAC/C;GACF;EACF,CAAC;;;;;AC5BJ,MAAa,YAAY,UAAyB;CAChD,MAAM,EACJ,OACA,UACA,UACA,WACA,eACA,eACA,aAEA,OACA,UACA,eACA,YACA,aACA,cAEA,WACA,cACE;CAGJ,MAAM,UAAU,OAAO;CAEvB,MAAM,EAAE,QAAQ,YAAY,gBAAgB,OAAO,sBAAsB;EACvE,OAAM,MAAK;GACT,EAAE;GACF,EAAE;GACF,EAAE;GACF,EAAE;GACF,EAAE;GACH;EACD,UAAU,MAAM;EAChB,kBAAkB;EACnB,CAAC;CAGF,SAAS,aAAa,GAA2C;AAC/D,MAAI,YAAY,SAAU;AAC1B,QAAM,WAAW,EAAE,OAAO,MAAM;;CAGlC,SAAS,cAAc;AACrB,MAAI,CAAC,MAAO,QAAO;AAEnB,SACE,oBAAC;GAAI,WAAU;aACb,oBAAC;IACC,SAAS;IACF;IACG;IACK;IACH;IACC;IACC;KACd;IACE;;AAIV,QACE,qBAAC;EACE,aAAa;EAEd,qBAAC;GAAI,OAAO,EAAE,UAAU,YAAY;cACjC,aACC,oBAAC;IAAI,OAAO,OAAO;cACjB,oBAAC;KACC,MAAM;KACN,OAAO,YAAY,YAAY;MAC/B;KACE,EAGR,oBAAC;IACQ;IACG;IACA;IACC;IACE;IACb,OAAO,OAAO;IACd,WAAW,QAAQ;IACnB,UAAU;KACV;IACE;EAEL,aAAa,CAAC,gBACb,qBAAC;GAAW,SAAQ;GAAK,QAAQ,EAAE,MAAM,EAAE,YAAY,QAAQ,EAAE;;IAC9D,MAAM;IAAO;IAAE;IAAU;IAAE;;IACjB,GACX;KACA"}