@hitachivantara/uikit-react-core 5.18.5 → 5.19.1

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 (130) hide show
  1. package/dist/cjs/components/Button/Button.cjs +32 -56
  2. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  3. package/dist/cjs/components/Button/Button.styles.cjs +122 -240
  4. package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Carousel/Carousel.cjs +95 -110
  6. package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
  7. package/dist/cjs/components/Carousel/Carousel.styles.cjs +4 -8
  8. package/dist/cjs/components/Carousel/Carousel.styles.cjs.map +1 -1
  9. package/dist/cjs/components/Carousel/CarouselControls.cjs +62 -0
  10. package/dist/cjs/components/Carousel/CarouselControls.cjs.map +1 -0
  11. package/dist/cjs/components/Carousel/CarouselSlide/CarouselSlide.cjs +2 -1
  12. package/dist/cjs/components/Carousel/CarouselSlide/CarouselSlide.cjs.map +1 -1
  13. package/dist/cjs/components/Carousel/CarouselThumbnail.cjs +30 -0
  14. package/dist/cjs/components/Carousel/CarouselThumbnail.cjs.map +1 -0
  15. package/dist/cjs/components/Carousel/CarouselThumbnails.cjs +44 -0
  16. package/dist/cjs/components/Carousel/CarouselThumbnails.cjs.map +1 -0
  17. package/dist/cjs/components/Dialog/Actions/Actions.cjs +14 -7
  18. package/dist/cjs/components/Dialog/Actions/Actions.cjs.map +1 -1
  19. package/dist/cjs/components/Dialog/Actions/Actions.styles.cjs +18 -38
  20. package/dist/cjs/components/Dialog/Actions/Actions.styles.cjs.map +1 -1
  21. package/dist/cjs/components/Dialog/Content/Content.cjs +11 -6
  22. package/dist/cjs/components/Dialog/Content/Content.cjs.map +1 -1
  23. package/dist/cjs/components/Dialog/Content/Content.styles.cjs +13 -32
  24. package/dist/cjs/components/Dialog/Content/Content.styles.cjs.map +1 -1
  25. package/dist/cjs/components/Dialog/Dialog.cjs +20 -21
  26. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  27. package/dist/cjs/components/Dialog/Dialog.styles.cjs +0 -31
  28. package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
  29. package/dist/cjs/components/Dialog/Title/Title.cjs +22 -11
  30. package/dist/cjs/components/Dialog/Title/Title.cjs.map +1 -1
  31. package/dist/cjs/components/Dialog/Title/Title.styles.cjs +18 -64
  32. package/dist/cjs/components/Dialog/Title/Title.styles.cjs.map +1 -1
  33. package/dist/cjs/components/Drawer/Drawer.cjs +4 -5
  34. package/dist/cjs/components/Drawer/Drawer.cjs.map +1 -1
  35. package/dist/cjs/components/Header/Actions/Actions.styles.cjs +3 -2
  36. package/dist/cjs/components/Header/Actions/Actions.styles.cjs.map +1 -1
  37. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +6 -1
  38. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
  39. package/dist/cjs/components/InlineEditor/InlineEditor.cjs +15 -19
  40. package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
  41. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +3 -2
  42. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
  43. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  44. package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
  45. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
  46. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +1 -1
  47. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
  48. package/dist/cjs/components/Table/TableCell/TableCell.cjs +6 -6
  49. package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
  50. package/dist/cjs/components/Table/TableRow/TableRow.cjs +6 -5
  51. package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
  52. package/dist/cjs/index.cjs +12 -12
  53. package/dist/cjs/utils/classes.cjs +2 -2
  54. package/dist/cjs/utils/classes.cjs.map +1 -1
  55. package/dist/cjs/utils/theme.cjs +6 -7
  56. package/dist/cjs/utils/theme.cjs.map +1 -1
  57. package/dist/esm/components/Button/Button.js +37 -60
  58. package/dist/esm/components/Button/Button.js.map +1 -1
  59. package/dist/esm/components/Button/Button.styles.js +122 -238
  60. package/dist/esm/components/Button/Button.styles.js.map +1 -1
  61. package/dist/esm/components/Carousel/Carousel.js +96 -111
  62. package/dist/esm/components/Carousel/Carousel.js.map +1 -1
  63. package/dist/esm/components/Carousel/Carousel.styles.js +4 -8
  64. package/dist/esm/components/Carousel/Carousel.styles.js.map +1 -1
  65. package/dist/esm/components/Carousel/CarouselControls.js +62 -0
  66. package/dist/esm/components/Carousel/CarouselControls.js.map +1 -0
  67. package/dist/esm/components/Carousel/CarouselSlide/CarouselSlide.js +2 -1
  68. package/dist/esm/components/Carousel/CarouselSlide/CarouselSlide.js.map +1 -1
  69. package/dist/esm/components/Carousel/CarouselThumbnail.js +30 -0
  70. package/dist/esm/components/Carousel/CarouselThumbnail.js.map +1 -0
  71. package/dist/esm/components/Carousel/CarouselThumbnails.js +44 -0
  72. package/dist/esm/components/Carousel/CarouselThumbnails.js.map +1 -0
  73. package/dist/esm/components/Dialog/Actions/Actions.js +15 -9
  74. package/dist/esm/components/Dialog/Actions/Actions.js.map +1 -1
  75. package/dist/esm/components/Dialog/Actions/Actions.styles.js +18 -35
  76. package/dist/esm/components/Dialog/Actions/Actions.styles.js.map +1 -1
  77. package/dist/esm/components/Dialog/Content/Content.js +14 -8
  78. package/dist/esm/components/Dialog/Content/Content.js.map +1 -1
  79. package/dist/esm/components/Dialog/Content/Content.styles.js +13 -30
  80. package/dist/esm/components/Dialog/Content/Content.styles.js.map +1 -1
  81. package/dist/esm/components/Dialog/Dialog.js +20 -22
  82. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  83. package/dist/esm/components/Dialog/Dialog.styles.js +0 -29
  84. package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
  85. package/dist/esm/components/Dialog/Title/Title.js +23 -13
  86. package/dist/esm/components/Dialog/Title/Title.js.map +1 -1
  87. package/dist/esm/components/Dialog/Title/Title.styles.js +18 -61
  88. package/dist/esm/components/Dialog/Title/Title.styles.js.map +1 -1
  89. package/dist/esm/components/Drawer/Drawer.js +4 -5
  90. package/dist/esm/components/Drawer/Drawer.js.map +1 -1
  91. package/dist/esm/components/Header/Actions/Actions.styles.js +3 -2
  92. package/dist/esm/components/Header/Actions/Actions.styles.js.map +1 -1
  93. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +6 -1
  94. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  95. package/dist/esm/components/InlineEditor/InlineEditor.js +16 -20
  96. package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
  97. package/dist/esm/components/MultiButton/MultiButton.styles.js +3 -2
  98. package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
  99. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  100. package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
  101. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
  102. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +1 -1
  103. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
  104. package/dist/esm/components/Table/TableCell/TableCell.js +6 -6
  105. package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
  106. package/dist/esm/components/Table/TableRow/TableRow.js +6 -5
  107. package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
  108. package/dist/esm/index.js +230 -230
  109. package/dist/esm/utils/classes.js +2 -2
  110. package/dist/esm/utils/classes.js.map +1 -1
  111. package/dist/esm/utils/theme.js +6 -7
  112. package/dist/esm/utils/theme.js.map +1 -1
  113. package/dist/types/index.d.ts +193 -154
  114. package/package.json +5 -5
  115. package/dist/cjs/components/Button/buttonClasses.cjs +0 -8
  116. package/dist/cjs/components/Button/buttonClasses.cjs.map +0 -1
  117. package/dist/cjs/components/Dialog/Actions/actionsClasses.cjs +0 -8
  118. package/dist/cjs/components/Dialog/Actions/actionsClasses.cjs.map +0 -1
  119. package/dist/cjs/components/Dialog/Content/contentClasses.cjs +0 -8
  120. package/dist/cjs/components/Dialog/Content/contentClasses.cjs.map +0 -1
  121. package/dist/cjs/components/Dialog/Title/titleClasses.cjs +0 -8
  122. package/dist/cjs/components/Dialog/Title/titleClasses.cjs.map +0 -1
  123. package/dist/esm/components/Button/buttonClasses.js +0 -8
  124. package/dist/esm/components/Button/buttonClasses.js.map +0 -1
  125. package/dist/esm/components/Dialog/Actions/actionsClasses.js +0 -8
  126. package/dist/esm/components/Dialog/Actions/actionsClasses.js.map +0 -1
  127. package/dist/esm/components/Dialog/Content/contentClasses.js +0 -8
  128. package/dist/esm/components/Dialog/Content/contentClasses.js.map +0 -1
  129. package/dist/esm/components/Dialog/Title/titleClasses.js +0 -8
  130. package/dist/esm/components/Dialog/Title/titleClasses.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"classes.cjs","sources":["../../../src/utils/classes.ts"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/css\";\nimport { useCss } from \"@core/hooks/useCss\";\n\nexport type ExtractNames<\n T extends (...args: any) => { classes: Record<string, any>; cx: any }\n> = Partial<ReturnType<T>[\"classes\"]>;\n\nexport const getClasses = <T extends string, N extends string>(\n keys: T[],\n name: N\n) => {\n const classesObj: Record<string, string> = {};\n keys.forEach((key: string) => {\n classesObj[key] = `${name}-${key}`;\n });\n return classesObj as { [P in T]: `${N}-${P}` };\n};\n\nconst deepRenameKeys = <T extends object>(\n obj: T,\n mapFn: (key: string) => string\n): T => {\n const result: any = {};\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n const newKey = mapFn(key);\n const value = obj[key];\n result[newKey] =\n typeof value === \"object\" ? deepRenameKeys(value as any, mapFn) : value;\n }\n }\n return result;\n};\n\n/** Given a `stylesObj`, replaces its keys' `$myClass` with `.{name}-myClass`. */\nexport const replace$ = <T extends object>(stylesObj: T, name: string): T => {\n return deepRenameKeys(stylesObj, (key) => {\n const matches = key.match(/\\$\\w+/g);\n if (!matches?.length) return key;\n const newKey = matches.reduce(\n (acc, match) => acc.replace(match, `.${name}-${match.slice(1)}`),\n key\n );\n return newKey ?? key;\n });\n};\n\n/** Utility function to create classes for a component. */\nexport function createClasses<Name extends string, ClassName extends string>(\n /** Component name in PascalCase (ie. `HvTableCell`). */\n name: Name,\n stylesObject: Record<ClassName, CSSInterpolation>\n) {\n const styles = replace$(stylesObject, name);\n\n const staticClasses = getClasses(Object.keys(styles) as ClassName[], name);\n\n function useClasses(classesProp: Partial<Record<ClassName, string>> = {}) {\n const { cx, css } = useCss();\n\n const mergeClasses = (key: string) =>\n cx(`${name}-${key}`, css(styles[key]), classesProp?.[key]);\n\n const classes = Object.fromEntries(\n Object.keys(styles).map((key) => [key, mergeClasses(key)])\n ) as { [P in ClassName]: string };\n\n return { classes, css, cx };\n }\n\n return { useClasses, staticClasses };\n}\n"],"names":["getClasses","keys","name","classesObj","forEach","key","deepRenameKeys","obj","mapFn","result","Object","hasOwn","newKey","value","replace$","stylesObj","matches","match","length","reduce","acc","replace","slice","createClasses","stylesObject","styles","staticClasses","useClasses","classesProp","cx","css","useCss","mergeClasses","classes","fromEntries","map"],"mappings":";;;AAOaA,MAAAA,aAAa,CACxBC,MACAC,SACG;AACH,QAAMC,aAAqC,CAAA;AACtCC,OAAAA,QAAQ,CAACC,QAAgB;AACjBA,eAAAA,GAAG,IAAK,GAAEH,QAAQG;AAAAA,EAAAA,CAC9B;AACMF,SAAAA;AACT;AAEA,MAAMG,iBAAiB,CACrBC,KACAC,UACM;AACN,QAAMC,SAAc,CAAA;AACpB,aAAWJ,OAAOE,KAAK;AACrB,QAAIG,OAAOC,OAAOJ,KAAKF,GAAG,GAAG;AACrBO,YAAAA,SAASJ,MAAMH,GAAG;AAClBQ,YAAAA,QAAQN,IAAIF,GAAG;AACdO,aAAAA,MAAM,IACX,OAAOC,UAAU,WAAWP,eAAeO,OAAcL,KAAK,IAAIK;AAAAA,IACtE;AAAA,EACF;AACOJ,SAAAA;AACT;AAGaK,MAAAA,WAAW,CAAmBC,WAAcb,SAAoB;AACpEI,SAAAA,eAAeS,WAAYV,CAAQ,QAAA;AAClCW,UAAAA,UAAUX,IAAIY,MAAM,QAAQ;AAClC,QAAI,EAACD,mCAASE;AAAeb,aAAAA;AAC7B,UAAMO,SAASI,QAAQG,OACrB,CAACC,KAAKH,UAAUG,IAAIC,QAAQJ,OAAQ,IAAGf,QAAQe,MAAMK,MAAM,CAAC,GAAG,GAC/DjB,GACF;AACA,WAAOO,UAAUP;AAAAA,EAAAA,CAClB;AACH;AAGgBkB,SAAAA,cAEdrB,MACAsB,cACA;AACMC,QAAAA,SAASX,SAASU,cAActB,IAAI;AAE1C,QAAMwB,gBAAgB1B,WAAWU,OAAOT,KAAKwB,MAAM,GAAkBvB,IAAI;AAEhEyB,WAAAA,WAAWC,cAAkD,IAAI;AAClE,UAAA;AAAA,MAAEC;AAAAA,MAAIC;AAAAA,QAAQC,OAAO,OAAA;AAE3B,UAAMC,eAAeA,CAAC3B,QACpBwB,GAAI,GAAE3B,QAAQG,OAAOyB,IAAIL,OAAOpB,GAAG,CAAC,GAAGuB,2CAAcvB,IAAI;AAE3D,UAAM4B,UAAUvB,OAAOwB,YACrBxB,OAAOT,KAAKwB,MAAM,EAAEU,IAAK9B,CAAAA,QAAQ,CAACA,KAAK2B,aAAa3B,GAAG,CAAC,CAAC,CAC3D;AAEO,WAAA;AAAA,MAAE4B;AAAAA,MAASH;AAAAA,MAAKD;AAAAA,IAAAA;AAAAA,EACzB;AAEO,SAAA;AAAA,IAAEF;AAAAA,IAAYD;AAAAA,EAAAA;AACvB;;;;"}
1
+ {"version":3,"file":"classes.cjs","sources":["../../../src/utils/classes.ts"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/css\";\nimport { useCss } from \"@core/hooks/useCss\";\n\nexport type ExtractNames<\n T extends (...args: any) => { classes: Record<string, any>; cx: any }\n> = Partial<ReturnType<T>[\"classes\"]>;\n\nexport const getClasses = <T extends string, N extends string>(\n keys: T[],\n name: N\n) => {\n const classesObj: Record<string, string> = {};\n keys.forEach((key: string) => {\n classesObj[key] = `${name}-${key}`;\n });\n return classesObj as { [P in T]: `${N}-${P}` };\n};\n\nconst deepRenameKeys = <T extends object>(\n obj: T,\n mapFn: (key: string) => string\n): T => {\n const result: any = {};\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n const newKey = mapFn(key);\n const value = obj[key];\n result[newKey] =\n typeof value === \"object\" ? deepRenameKeys(value as any, mapFn) : value;\n }\n }\n return result;\n};\n\n/** Given a `stylesObj`, replaces its keys' `$myClass` with `.{name}-myClass`. */\nexport const replace$ = <T extends object>(stylesObj: T, name: string): T => {\n return deepRenameKeys(stylesObj, (key) => {\n const matches = key.match(/\\$\\w+/g);\n if (!matches?.length) return key;\n const newKey = matches.reduce(\n (acc, match) => acc.replace(match, `.${name}-${match.slice(1)}`),\n key\n );\n return newKey ?? key;\n });\n};\n\n/** Utility function to create classes for a component. */\nexport function createClasses<Name extends string, ClassName extends string>(\n /** Component name in PascalCase (ie. `HvTableCell`). */\n name: Name,\n stylesObject: Record<ClassName, CSSInterpolation>\n) {\n const styles = replace$(stylesObject, name);\n\n const staticClasses = getClasses(Object.keys(styles) as ClassName[], name);\n\n /**\n * Hook that takes in a component's `classesProp` overrides, and returns the\n * concatenated static/internal/override `classes`, and the cached `cx` and `css` utilities.\n */\n function useClasses(\n classesProp: Partial<Record<ClassName, string>> = {},\n /** Whether to add the static classes. Disable when included by `classesProp` */\n addStatic = true\n ) {\n const { cx, css } = useCss();\n\n const mergeClasses = (key: string) =>\n cx(addStatic && `${name}-${key}`, css(styles[key]), classesProp?.[key]);\n\n const classes = Object.fromEntries(\n Object.keys(styles).map((key) => [key, mergeClasses(key)])\n ) as { [P in ClassName]: string };\n\n return { classes, css, cx };\n }\n\n return { useClasses, staticClasses };\n}\n"],"names":["getClasses","keys","name","classesObj","forEach","key","deepRenameKeys","obj","mapFn","result","Object","hasOwn","newKey","value","replace$","stylesObj","matches","match","length","reduce","acc","replace","slice","createClasses","stylesObject","styles","staticClasses","useClasses","classesProp","addStatic","cx","css","useCss","mergeClasses","classes","fromEntries","map"],"mappings":";;;AAOaA,MAAAA,aAAa,CACxBC,MACAC,SACG;AACH,QAAMC,aAAqC,CAAA;AACtCC,OAAAA,QAAQ,CAACC,QAAgB;AACjBA,eAAAA,GAAG,IAAK,GAAEH,QAAQG;AAAAA,EAAAA,CAC9B;AACMF,SAAAA;AACT;AAEA,MAAMG,iBAAiB,CACrBC,KACAC,UACM;AACN,QAAMC,SAAc,CAAA;AACpB,aAAWJ,OAAOE,KAAK;AACrB,QAAIG,OAAOC,OAAOJ,KAAKF,GAAG,GAAG;AACrBO,YAAAA,SAASJ,MAAMH,GAAG;AAClBQ,YAAAA,QAAQN,IAAIF,GAAG;AACdO,aAAAA,MAAM,IACX,OAAOC,UAAU,WAAWP,eAAeO,OAAcL,KAAK,IAAIK;AAAAA,IACtE;AAAA,EACF;AACOJ,SAAAA;AACT;AAGaK,MAAAA,WAAW,CAAmBC,WAAcb,SAAoB;AACpEI,SAAAA,eAAeS,WAAYV,CAAQ,QAAA;AAClCW,UAAAA,UAAUX,IAAIY,MAAM,QAAQ;AAClC,QAAI,EAACD,mCAASE;AAAeb,aAAAA;AAC7B,UAAMO,SAASI,QAAQG,OACrB,CAACC,KAAKH,UAAUG,IAAIC,QAAQJ,OAAQ,IAAGf,QAAQe,MAAMK,MAAM,CAAC,GAAG,GAC/DjB,GACF;AACA,WAAOO,UAAUP;AAAAA,EAAAA,CAClB;AACH;AAGgBkB,SAAAA,cAEdrB,MACAsB,cACA;AACMC,QAAAA,SAASX,SAASU,cAActB,IAAI;AAE1C,QAAMwB,gBAAgB1B,WAAWU,OAAOT,KAAKwB,MAAM,GAAkBvB,IAAI;AAMzE,WAASyB,WACPC,cAAkD,IAElDC,YAAY,MACZ;AACM,UAAA;AAAA,MAAEC;AAAAA,MAAIC;AAAAA,QAAQC,OAAO,OAAA;AAE3B,UAAMC,eAAeA,CAAC5B,QACpByB,GAAGD,aAAc,GAAE3B,QAAQG,OAAO0B,IAAIN,OAAOpB,GAAG,CAAC,GAAGuB,2CAAcvB,IAAI;AAExE,UAAM6B,UAAUxB,OAAOyB,YACrBzB,OAAOT,KAAKwB,MAAM,EAAEW,IAAK/B,CAAAA,QAAQ,CAACA,KAAK4B,aAAa5B,GAAG,CAAC,CAAC,CAC3D;AAEO,WAAA;AAAA,MAAE6B;AAAAA,MAASH;AAAAA,MAAKD;AAAAA,IAAAA;AAAAA,EACzB;AAEO,SAAA;AAAA,IAAEH;AAAAA,IAAYD;AAAAA,EAAAA;AACvB;;;;"}
@@ -91,13 +91,12 @@ const processThemes = (themesList) => {
91
91
  }
92
92
  return [uikitStyles.themes.ds5];
93
93
  };
94
- const getVarValue = (cssVar) => {
95
- const tempEl = document.createElement("div");
96
- tempEl.style.setProperty("--temp", cssVar);
97
- document.body.appendChild(tempEl);
98
- const computedValue = getComputedStyle(tempEl).getPropertyValue("--temp").trim();
99
- document.body.removeChild(tempEl);
100
- return computedValue;
94
+ const getVarValue = (cssVar, rootElementId) => {
95
+ const root = document.getElementById(rootElementId || "hv-root");
96
+ if (root) {
97
+ const computedValue = getComputedStyle(root).getPropertyValue(cssVar.replace("var(", "").replace(")", "")).trim();
98
+ return computedValue;
99
+ }
101
100
  };
102
101
  exports.createTheme = createTheme;
103
102
  exports.getVarValue = getVarValue;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.cjs","sources":["../../../src/utils/theme.ts"],"sourcesContent":["/* eslint import/namespace: [2, { allowComputed: true }] */\nimport { CSSProperties } from \"react\";\nimport {\n themes,\n HvThemeColorModeStructure,\n HvThemeStructure,\n theme,\n} from \"@hitachivantara/uikit-styles\";\nimport { HvTheme, HvCreateThemeProps } from \"@core/types\";\n\n/**\n * Sets the element style properties.\n */\nconst setElementStyle = (element: HTMLElement, style: CSSProperties) => {\n Object.entries(style).forEach(([property, value]) => {\n element.style[property] = value;\n });\n};\n\n/**\n * Sets the element attributes and style for a theme and color mode.\n */\nexport const setElementAttrs = (\n themeName: string,\n modeName: string,\n colorScheme: string,\n themeRootId?: string\n) => {\n const element = themeRootId\n ? document.getElementById(themeRootId)\n : document.body;\n\n if (element) {\n element.setAttribute(`data-theme`, themeName);\n element.setAttribute(`data-color-mode`, modeName);\n\n // Set default properties for all components to inherit\n setElementStyle(element, {\n colorScheme,\n backgroundColor: theme.colors.backgroundColor,\n accentColor: theme.colors.secondary,\n color: theme.colors.secondary,\n fontSize: theme.typography.body.fontSize,\n fontWeight: theme.typography.body.fontWeight,\n lineHeight: theme.typography.body.lineHeight,\n letterSpacing: theme.typography.body.letterSpacing,\n fontFamily: theme.fontFamily.body,\n });\n }\n};\n\n/**\n * Applies customizations to a theme.\n */\nconst applyThemeCustomizations = (obj: object, customizations: object) => {\n const isObject = (val: any) =>\n val && typeof val === \"object\" && !Array.isArray(val);\n\n // Customized theme\n const customizedTheme = { ...obj };\n\n // Add new values to the theme or replace values\n Object.keys(customizations).forEach((key) => {\n if (customizedTheme[key]) {\n if (isObject(customizedTheme[key]) && isObject(customizations[key])) {\n customizedTheme[key] = applyThemeCustomizations(\n customizedTheme[key],\n customizations[key]\n );\n } else if (typeof customizedTheme[key] === typeof customizations[key]) {\n customizedTheme[key] = customizations[key];\n }\n } else {\n customizedTheme[key] = customizations[key];\n }\n });\n\n return customizedTheme;\n};\n\n/**\n * Creates a customized theme based on the base theme and customizations given.\n * For the color modes, the colors that are not defined will be replaced by the values from the dawn mode of the base theme.\n */\nexport const createTheme = (\n props: HvCreateThemeProps\n): HvTheme | HvThemeStructure => {\n const {\n name,\n base = \"ds5\",\n inheritColorModes = true,\n ...customizations\n } = props;\n\n // Apply customizations to the base theme\n const customizedTheme: HvTheme | HvThemeStructure = customizations\n ? (applyThemeCustomizations(themes[base], customizations) as HvTheme)\n : { ...themes[base] };\n\n // Set theme name\n customizedTheme.name = name.trim();\n // Set theme base\n customizedTheme.base = base;\n\n // Fill new color modes with missing colors\n if (customizations) {\n Object.keys(customizedTheme.colors.modes).forEach((mode) => {\n if (!themes[base].colors.modes[mode]) {\n customizedTheme.colors.modes[mode] = {\n ...themes[base].colors.modes.dawn,\n ...(customizedTheme.colors.modes[mode] as Partial<\n HvThemeColorModeStructure & { [key: string]: string }\n >),\n };\n }\n });\n }\n\n // If the flag `inheritColorModes` is false and customizations were given for the color modes,\n // we're removing any color modes that might have been inherited\n if (!inheritColorModes && customizations.colors?.modes) {\n Object.keys(customizedTheme.colors.modes).forEach((mode) => {\n if (!Object.keys(customizations.colors?.modes || {}).includes(mode)) {\n delete customizedTheme.colors.modes[mode];\n }\n });\n }\n\n // Created theme\n return customizedTheme;\n};\n\n/**\n * Process the themes provided to the HvProvider:\n * - Cleans themes with the same name\n * - Returns the default if the list is empty (ds5)\n */\nexport const processThemes = (\n themesList?: (HvTheme | HvThemeStructure)[]\n): (HvTheme | HvThemeStructure)[] => {\n if (themesList && Array.isArray(themesList) && themesList.length > 0) {\n const list: (HvTheme | HvThemeStructure)[] = [];\n\n themesList.forEach((thm) => {\n const i: number = list.findIndex(\n (t) => t.name.trim() === thm.name.trim()\n );\n\n if (i !== -1) {\n list.splice(i, 1);\n list.push(thm);\n } else {\n list.push(thm);\n }\n });\n\n // Cleaned themes\n return list;\n }\n // DS5\n return [themes.ds5];\n};\n\n/**\n * Returns the computed value of a theme CSS var\n */\nexport const getVarValue = (cssVar: string): string => {\n const tempEl = document.createElement(\"div\");\n tempEl.style.setProperty(\"--temp\", cssVar);\n document.body.appendChild(tempEl);\n const computedValue = getComputedStyle(tempEl)\n .getPropertyValue(\"--temp\")\n .trim();\n document.body.removeChild(tempEl);\n return computedValue;\n};\n"],"names":["setElementStyle","element","style","entries","forEach","property","value","setElementAttrs","themeName","modeName","colorScheme","themeRootId","document","getElementById","body","setAttribute","backgroundColor","theme","colors","accentColor","secondary","color","fontSize","typography","fontWeight","lineHeight","letterSpacing","fontFamily","applyThemeCustomizations","obj","customizations","isObject","val","Array","isArray","customizedTheme","Object","keys","key","createTheme","props","name","base","inheritColorModes","themes","trim","modes","mode","dawn","includes","processThemes","themesList","length","list","thm","i","findIndex","t","splice","push","ds5","getVarValue","cssVar","tempEl","createElement","setProperty","appendChild","computedValue","getComputedStyle","getPropertyValue","removeChild"],"mappings":"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"}
1
+ {"version":3,"file":"theme.cjs","sources":["../../../src/utils/theme.ts"],"sourcesContent":["/* eslint import/namespace: [2, { allowComputed: true }] */\nimport { CSSProperties } from \"react\";\nimport {\n themes,\n HvThemeColorModeStructure,\n HvThemeStructure,\n theme,\n} from \"@hitachivantara/uikit-styles\";\nimport { HvTheme, HvCreateThemeProps } from \"@core/types\";\n\n/**\n * Sets the element style properties.\n */\nconst setElementStyle = (element: HTMLElement, style: CSSProperties) => {\n Object.entries(style).forEach(([property, value]) => {\n element.style[property] = value;\n });\n};\n\n/**\n * Sets the element attributes and style for a theme and color mode.\n */\nexport const setElementAttrs = (\n themeName: string,\n modeName: string,\n colorScheme: string,\n themeRootId?: string\n) => {\n const element = themeRootId\n ? document.getElementById(themeRootId)\n : document.body;\n\n if (element) {\n element.setAttribute(`data-theme`, themeName);\n element.setAttribute(`data-color-mode`, modeName);\n\n // Set default properties for all components to inherit\n setElementStyle(element, {\n colorScheme,\n backgroundColor: theme.colors.backgroundColor,\n accentColor: theme.colors.secondary,\n color: theme.colors.secondary,\n fontSize: theme.typography.body.fontSize,\n fontWeight: theme.typography.body.fontWeight,\n lineHeight: theme.typography.body.lineHeight,\n letterSpacing: theme.typography.body.letterSpacing,\n fontFamily: theme.fontFamily.body,\n });\n }\n};\n\n/**\n * Applies customizations to a theme.\n */\nconst applyThemeCustomizations = (obj: object, customizations: object) => {\n const isObject = (val: any) =>\n val && typeof val === \"object\" && !Array.isArray(val);\n\n // Customized theme\n const customizedTheme = { ...obj };\n\n // Add new values to the theme or replace values\n Object.keys(customizations).forEach((key) => {\n if (customizedTheme[key]) {\n if (isObject(customizedTheme[key]) && isObject(customizations[key])) {\n customizedTheme[key] = applyThemeCustomizations(\n customizedTheme[key],\n customizations[key]\n );\n } else if (typeof customizedTheme[key] === typeof customizations[key]) {\n customizedTheme[key] = customizations[key];\n }\n } else {\n customizedTheme[key] = customizations[key];\n }\n });\n\n return customizedTheme;\n};\n\n/**\n * Creates a customized theme based on the base theme and customizations given.\n * For the color modes, the colors that are not defined will be replaced by the values from the dawn mode of the base theme.\n */\nexport const createTheme = (\n props: HvCreateThemeProps\n): HvTheme | HvThemeStructure => {\n const {\n name,\n base = \"ds5\",\n inheritColorModes = true,\n ...customizations\n } = props;\n\n // Apply customizations to the base theme\n const customizedTheme: HvTheme | HvThemeStructure = customizations\n ? (applyThemeCustomizations(themes[base], customizations) as HvTheme)\n : { ...themes[base] };\n\n // Set theme name\n customizedTheme.name = name.trim();\n // Set theme base\n customizedTheme.base = base;\n\n // Fill new color modes with missing colors\n if (customizations) {\n Object.keys(customizedTheme.colors.modes).forEach((mode) => {\n if (!themes[base].colors.modes[mode]) {\n customizedTheme.colors.modes[mode] = {\n ...themes[base].colors.modes.dawn,\n ...(customizedTheme.colors.modes[mode] as Partial<\n HvThemeColorModeStructure & { [key: string]: string }\n >),\n };\n }\n });\n }\n\n // If the flag `inheritColorModes` is false and customizations were given for the color modes,\n // we're removing any color modes that might have been inherited\n if (!inheritColorModes && customizations.colors?.modes) {\n Object.keys(customizedTheme.colors.modes).forEach((mode) => {\n if (!Object.keys(customizations.colors?.modes || {}).includes(mode)) {\n delete customizedTheme.colors.modes[mode];\n }\n });\n }\n\n // Created theme\n return customizedTheme;\n};\n\n/**\n * Process the themes provided to the HvProvider:\n * - Cleans themes with the same name\n * - Returns the default if the list is empty (ds5)\n */\nexport const processThemes = (\n themesList?: (HvTheme | HvThemeStructure)[]\n): (HvTheme | HvThemeStructure)[] => {\n if (themesList && Array.isArray(themesList) && themesList.length > 0) {\n const list: (HvTheme | HvThemeStructure)[] = [];\n\n themesList.forEach((thm) => {\n const i: number = list.findIndex(\n (t) => t.name.trim() === thm.name.trim()\n );\n\n if (i !== -1) {\n list.splice(i, 1);\n list.push(thm);\n } else {\n list.push(thm);\n }\n });\n\n // Cleaned themes\n return list;\n }\n // DS5\n return [themes.ds5];\n};\n\nexport const getVarValue = (cssVar: string, rootElementId?: string) => {\n const root = document.getElementById(rootElementId || \"hv-root\");\n if (root) {\n const computedValue = getComputedStyle(root)\n .getPropertyValue(cssVar.replace(\"var(\", \"\").replace(\")\", \"\"))\n .trim();\n\n return computedValue;\n }\n};\n"],"names":["setElementStyle","element","style","entries","forEach","property","value","setElementAttrs","themeName","modeName","colorScheme","themeRootId","document","getElementById","body","setAttribute","backgroundColor","theme","colors","accentColor","secondary","color","fontSize","typography","fontWeight","lineHeight","letterSpacing","fontFamily","applyThemeCustomizations","obj","customizations","isObject","val","Array","isArray","customizedTheme","Object","keys","key","createTheme","props","name","base","inheritColorModes","themes","trim","modes","mode","dawn","includes","processThemes","themesList","length","list","thm","i","findIndex","t","splice","push","ds5","getVarValue","cssVar","rootElementId","root","computedValue","getComputedStyle","getPropertyValue","replace"],"mappings":";;;AAaA,MAAMA,kBAAkBA,CAACC,SAAsBC,UAAyB;AAC/DC,SAAAA,QAAQD,KAAK,EAAEE,QAAQ,CAAC,CAACC,UAAUC,KAAK,MAAM;AAC3CJ,YAAAA,MAAMG,QAAQ,IAAIC;AAAAA,EAAAA,CAC3B;AACH;AAKO,MAAMC,kBAAkBA,CAC7BC,WACAC,UACAC,aACAC,gBACG;AACH,QAAMV,UAAUU,cACZC,SAASC,eAAeF,WAAW,IACnCC,SAASE;AAEb,MAAIb,SAAS;AACHc,YAAAA,aAAc,cAAaP,SAAS;AACpCO,YAAAA,aAAc,mBAAkBN,QAAQ;AAGhDT,oBAAgBC,SAAS;AAAA,MACvBS;AAAAA,MACAM,iBAAiBC,YAAAA,MAAMC,OAAOF;AAAAA,MAC9BG,aAAaF,YAAAA,MAAMC,OAAOE;AAAAA,MAC1BC,OAAOJ,YAAAA,MAAMC,OAAOE;AAAAA,MACpBE,UAAUL,YAAMM,MAAAA,WAAWT,KAAKQ;AAAAA,MAChCE,YAAYP,YAAMM,MAAAA,WAAWT,KAAKU;AAAAA,MAClCC,YAAYR,YAAMM,MAAAA,WAAWT,KAAKW;AAAAA,MAClCC,eAAeT,YAAMM,MAAAA,WAAWT,KAAKY;AAAAA,MACrCC,YAAYV,YAAAA,MAAMU,WAAWb;AAAAA,IAAAA,CAC9B;AAAA,EACH;AACF;AAKA,MAAMc,2BAA2BA,CAACC,KAAaC,mBAA2B;AAClEC,QAAAA,WAAWA,CAACC,QAChBA,OAAO,OAAOA,QAAQ,YAAY,CAACC,MAAMC,QAAQF,GAAG;AAGtD,QAAMG,kBAAkB;AAAA,IAAE,GAAGN;AAAAA,EAAAA;AAG7BO,SAAOC,KAAKP,cAAc,EAAE1B,QAASkC,CAAQ,QAAA;AACvCH,QAAAA,gBAAgBG,GAAG,GAAG;AACpBP,UAAAA,SAASI,gBAAgBG,GAAG,CAAC,KAAKP,SAASD,eAAeQ,GAAG,CAAC,GAAG;AACnDA,wBAAAA,GAAG,IAAIV,yBACrBO,gBAAgBG,GAAG,GACnBR,eAAeQ,GAAG,CACpB;AAAA,MAAA,WACS,OAAOH,gBAAgBG,GAAG,MAAM,OAAOR,eAAeQ,GAAG,GAAG;AACrDA,wBAAAA,GAAG,IAAIR,eAAeQ,GAAG;AAAA,MAC3C;AAAA,IAAA,OACK;AACWA,sBAAAA,GAAG,IAAIR,eAAeQ,GAAG;AAAA,IAC3C;AAAA,EAAA,CACD;AAEMH,SAAAA;AACT;AAMaI,MAAAA,cAAcA,CACzBC,UAC+B;;AACzB,QAAA;AAAA,IACJC;AAAAA,IACAC,OAAO;AAAA,IACPC,oBAAoB;AAAA,IACpB,GAAGb;AAAAA,EACDU,IAAAA;AAGJ,QAAML,kBAA8CL,iBAC/CF,yBAAyBgB,mBAAOF,IAAI,GAAGZ,cAAc,IACtD;AAAA,IAAE,GAAGc,YAAAA,OAAOF,IAAI;AAAA,EAAA;AAGJD,kBAAAA,OAAOA,KAAKI;AAE5BV,kBAAgBO,OAAOA;AAGvB,MAAIZ,gBAAgB;AAClBM,WAAOC,KAAKF,gBAAgBjB,OAAO4B,KAAK,EAAE1C,QAAS2C,CAAS,SAAA;AAC1D,UAAI,CAACH,YAAOF,OAAAA,IAAI,EAAExB,OAAO4B,MAAMC,IAAI,GAAG;AACpB7B,wBAAAA,OAAO4B,MAAMC,IAAI,IAAI;AAAA,UACnC,GAAGH,YAAAA,OAAOF,IAAI,EAAExB,OAAO4B,MAAME;AAAAA,UAC7B,GAAIb,gBAAgBjB,OAAO4B,MAAMC,IAAI;AAAA,QAAA;AAAA,MAIzC;AAAA,IAAA,CACD;AAAA,EACH;AAIA,MAAI,CAACJ,uBAAqBb,oBAAeZ,WAAfY,mBAAuBgB,QAAO;AACtDV,WAAOC,KAAKF,gBAAgBjB,OAAO4B,KAAK,EAAE1C,QAAS2C,CAAS,SAAA;;AACtD,UAAA,CAACX,OAAOC,OAAKP,MAAAA,eAAeZ,WAAfY,gBAAAA,IAAuBgB,UAAS,EAAE,EAAEG,SAASF,IAAI,GAAG;AAC5DZ,eAAAA,gBAAgBjB,OAAO4B,MAAMC,IAAI;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,EACH;AAGOZ,SAAAA;AACT;AAOae,MAAAA,gBAAgBA,CAC3BC,eACmC;AACnC,MAAIA,cAAclB,MAAMC,QAAQiB,UAAU,KAAKA,WAAWC,SAAS,GAAG;AACpE,UAAMC,OAAuC,CAAA;AAE7CF,eAAW/C,QAASkD,CAAQ,QAAA;AACpBC,YAAAA,IAAYF,KAAKG,UACpBC,CAAMA,MAAAA,EAAEhB,KAAKI,KAAWS,MAAAA,IAAIb,KAAKI,KACpC,CAAA;AAEA,UAAIU,MAAM,IAAI;AACPG,aAAAA,OAAOH,GAAG,CAAC;AAChBF,aAAKM,KAAKL,GAAG;AAAA,MAAA,OACR;AACLD,aAAKM,KAAKL,GAAG;AAAA,MACf;AAAA,IAAA,CACD;AAGMD,WAAAA;AAAAA,EACT;AAEO,SAAA,CAACT,YAAAA,OAAOgB,GAAG;AACpB;AAEaC,MAAAA,cAAcA,CAACC,QAAgBC,kBAA2B;AACrE,QAAMC,OAAOpD,SAASC,eAAekD,iBAAiB,SAAS;AAC/D,MAAIC,MAAM;AACR,UAAMC,gBAAgBC,iBAAiBF,IAAI,EACxCG,iBAAiBL,OAAOM,QAAQ,QAAQ,EAAE,EAAEA,QAAQ,KAAK,EAAE,CAAC,EAC5DvB;AAEIoB,WAAAA;AAAAA,EACT;AACF;;;;;"}
@@ -1,94 +1,71 @@
1
- import { clsx } from "clsx";
2
- import { forwardRef, useMemo } from "react";
3
- import { StyledButton, StyledContentDiv, StyledIconSpan, StyledChildren } from "./Button.styles.js";
4
- import buttonClasses from "./buttonClasses.js";
5
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
1
+ import { forwardRef } from "react";
2
+ import { useClasses, getVariantStyles, getSizeStyles, getRadiusStyles, getOverrideColors } from "./Button.styles.js";
3
+ import { staticClasses } from "./Button.styles.js";
4
+ import { jsxs, jsx } from "@emotion/react/jsx-runtime";
6
5
  import { useTheme } from "../../hooks/useTheme.js";
7
6
  const mapVariant = (variant, theme) => {
8
- if (theme !== "ds3") {
9
- if (variant === "secondary") {
10
- console.warn("Button variant 'secondary' is deprecated. Please use 'secondarySubtle'.");
11
- return "secondarySubtle";
12
- }
13
- if (variant === "ghost") {
14
- console.warn("Button variant 'ghost' is deprecated. Please use 'primaryGhost'.");
15
- return "primaryGhost";
16
- }
7
+ if (theme === "ds3")
8
+ return variant;
9
+ const deprecatedVariantMap = {
10
+ secondary: "secondarySubtle",
11
+ ghost: "primaryGhost"
12
+ };
13
+ const mappedVariant = deprecatedVariantMap[variant];
14
+ if (mappedVariant) {
15
+ console.warn(`Button variant '${variant}' is deprecated. Please use '${mappedVariant}'.`);
17
16
  }
18
- return variant;
17
+ return mappedVariant || variant;
19
18
  };
20
19
  const HvButton = forwardRef((props, ref) => {
21
20
  const {
22
21
  id,
23
- classes,
22
+ classes: classesProp,
24
23
  children,
25
- variant = "primary",
26
- onClick,
24
+ variant: variantProp = "primary",
27
25
  disabled = false,
28
26
  className,
29
27
  startIcon,
30
28
  endIcon,
31
29
  icon = false,
32
30
  size,
33
- radius = "base",
31
+ radius,
34
32
  overrideIconColors = true,
35
33
  component: Component = "button",
36
34
  ...others
37
35
  } = props;
36
+ const {
37
+ classes,
38
+ css,
39
+ cx
40
+ } = useClasses(classesProp);
38
41
  const {
39
42
  activeTheme
40
43
  } = useTheme();
41
- const onFocusHandler = (event) => {
42
- event.target.classList.add("HvIsFocusVisible");
43
- event.target.classList.add(buttonClasses.focusVisible);
44
- if (classes == null ? void 0 : classes.focusVisible) {
45
- event.target.classList.add(classes.focusVisible);
46
- }
47
- };
48
- const onBlurHandler = (event) => {
49
- event.target.classList.remove("HvIsFocusVisible");
50
- event.target.classList.remove(buttonClasses.focusVisible);
51
- if (classes == null ? void 0 : classes.focusVisible) {
52
- event.target.classList.remove(classes.focusVisible);
53
- }
54
- };
55
- const StyledComponent = useMemo(() => StyledButton(Component), [Component]);
56
- return /* @__PURE__ */ jsx(StyledComponent, {
57
- id,
44
+ const variant = mapVariant(variantProp, activeTheme == null ? void 0 : activeTheme.name);
45
+ return /* @__PURE__ */ jsxs(Component, {
58
46
  ref,
59
47
  type: "button",
60
- className: clsx(className, classes == null ? void 0 : classes.root, buttonClasses.root),
61
- onClick,
62
- onFocus: onFocusHandler,
63
- onBlur: onBlurHandler,
64
- $variant: mapVariant(variant, activeTheme == null ? void 0 : activeTheme.name),
65
- $iconOnly: icon,
66
- $size: size,
67
- $radius: radius,
68
- $overrideIconColors: overrideIconColors,
69
- $startIcon: !!startIcon,
70
- $endIcon: !!endIcon,
48
+ className: cx(classes.root, css(getVariantStyles(variant)), size && css(getSizeStyles(size)), radius && css(getRadiusStyles(radius)), overrideIconColors && css(getOverrideColors(variant)), {
49
+ [classes.icon]: icon,
50
+ [classes.disabled]: disabled
51
+ }, className),
71
52
  ...disabled && {
72
- $disabled: true,
73
53
  disabled: true,
74
54
  tabIndex: -1,
75
55
  "aria-disabled": true
76
56
  },
77
57
  ...others,
78
- children: /* @__PURE__ */ jsxs(StyledContentDiv, {
79
- children: [startIcon && /* @__PURE__ */ jsx(StyledIconSpan, {
80
- className: clsx(classes == null ? void 0 : classes.startIcon, buttonClasses.startIcon),
81
- children: startIcon
82
- }), children && /* @__PURE__ */ jsx(StyledChildren, {
83
- children
84
- }), endIcon && /* @__PURE__ */ jsx(StyledIconSpan, {
85
- className: clsx(classes == null ? void 0 : classes.endIcon, buttonClasses.endIcon),
86
- children: endIcon
87
- })]
88
- })
58
+ children: [startIcon && /* @__PURE__ */ jsx("span", {
59
+ className: classes.startIcon,
60
+ children: startIcon
61
+ }), children, endIcon && /* @__PURE__ */ jsx("span", {
62
+ className: classes.endIcon,
63
+ children: endIcon
64
+ })]
89
65
  });
90
66
  });
91
67
  export {
92
- HvButton
68
+ HvButton,
69
+ staticClasses as buttonClasses
93
70
  };
94
71
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, { forwardRef, ReactElement, useMemo } from \"react\";\nimport { useTheme } from \"@core/hooks\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\nimport {\n StyledButton,\n StyledChildren,\n StyledContentDiv,\n StyledIconSpan,\n} from \"./Button.styles\";\nimport buttonClasses, { HvButtonClasses } from \"./buttonClasses\";\n\nexport const buttonVariant = [\n \"primary\",\n \"primarySubtle\",\n \"primaryGhost\",\n \"secondarySubtle\",\n \"secondaryGhost\",\n \"semantic\",\n // deprecated props\n \"secondary\",\n \"ghost\",\n] as const;\nexport type HvButtonVariant = (typeof buttonVariant)[number];\n\nexport const buttonSize = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as const;\nexport type HvButtonSize = (typeof buttonSize)[number];\n\nexport const buttonRadius = [\n \"none\",\n \"base\",\n \"round\",\n \"circle\",\n \"full\",\n] as const;\nexport type HvButtonRadius = (typeof buttonRadius)[number];\n\nexport type HvButtonProps<C extends React.ElementType = \"button\"> =\n PolymorphicComponentRef<\n C,\n {\n /** Use the variant prop to change the visual style of the Button. */\n variant?: HvButtonVariant;\n /** Whether the Button is an icon-only button. */\n icon?: boolean;\n /** Whether the Button is disabled or not. */\n disabled?: boolean;\n /** Class names to be applied. */\n className?: string;\n /** Element placed before the children. */\n startIcon?: ReactElement;\n /** Element placed after the children. */\n endIcon?: ReactElement;\n /** Button size. */\n size?: HvButtonSize;\n /** Button border radius. */\n radius?: HvButtonRadius;\n /** Defines the default colors of the button are forced into the icon. */\n overrideIconColors?: boolean;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvButtonClasses;\n /** Whether the Button is selected or not. */\n selected?: boolean;\n }\n >;\n\n/**\n * Normalize the button variant. It's meant to give us some retro-compatibility with\n * the DS 3.6 API.\n *\n * @param variant the variant of the button\n * @returns the normalized variant in DS 5 API\n */\nconst mapVariant = (\n variant: HvButtonVariant,\n theme?: string\n): HvButtonVariant => {\n if (theme !== \"ds3\") {\n if (variant === \"secondary\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'secondary' is deprecated. Please use 'secondarySubtle'.\"\n );\n return \"secondarySubtle\";\n }\n if (variant === \"ghost\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"Button variant 'ghost' is deprecated. Please use 'primaryGhost'.\"\n );\n return \"primaryGhost\";\n }\n }\n return variant;\n};\n\n/**\n * Button component is used to trigger an action or event.\n */\nexport const HvButton: <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>\n) => React.ReactElement | null = forwardRef(\n <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>,\n ref: PolymorphicRef<C>\n ) => {\n const {\n id,\n classes,\n children,\n variant = \"primary\",\n onClick,\n disabled = false,\n className,\n startIcon,\n endIcon,\n icon = false,\n size,\n radius = \"base\",\n overrideIconColors = true,\n component: Component = \"button\",\n ...others\n } = props;\n\n const { activeTheme } = useTheme();\n\n const onFocusHandler = (event) => {\n event.target.classList.add(\"HvIsFocusVisible\");\n event.target.classList.add(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.add(classes.focusVisible);\n }\n };\n\n const onBlurHandler = (event) => {\n event.target.classList.remove(\"HvIsFocusVisible\");\n event.target.classList.remove(buttonClasses.focusVisible);\n if (classes?.focusVisible) {\n event.target.classList.remove(classes.focusVisible);\n }\n };\n\n const StyledComponent = useMemo(() => StyledButton(Component), [Component]);\n\n return (\n <StyledComponent\n id={id}\n ref={ref}\n type=\"button\"\n className={clsx(className, classes?.root, buttonClasses.root)}\n onClick={onClick}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n $variant={mapVariant(variant, activeTheme?.name)}\n $iconOnly={icon}\n $size={size}\n $radius={radius}\n $overrideIconColors={overrideIconColors}\n $startIcon={!!startIcon}\n $endIcon={!!endIcon}\n {...(disabled && {\n $disabled: true,\n disabled: true,\n tabIndex: -1,\n \"aria-disabled\": true,\n })}\n {...others}\n >\n <StyledContentDiv>\n {startIcon && (\n <StyledIconSpan\n className={clsx(classes?.startIcon, buttonClasses.startIcon)}\n >\n {startIcon}\n </StyledIconSpan>\n )}\n {children && <StyledChildren>{children}</StyledChildren>}\n {endIcon && (\n <StyledIconSpan\n className={clsx(classes?.endIcon, buttonClasses.endIcon)}\n >\n {endIcon}\n </StyledIconSpan>\n )}\n </StyledContentDiv>\n </StyledComponent>\n );\n }\n);\n"],"names":["mapVariant","variant","theme","console","warn","HvButton","forwardRef","props","ref","id","classes","children","onClick","disabled","className","startIcon","endIcon","icon","size","radius","overrideIconColors","component","Component","others","activeTheme","useTheme","onFocusHandler","event","target","classList","add","buttonClasses","focusVisible","onBlurHandler","remove","StyledComponent","useMemo","StyledButton","type","clsx","root","onFocus","onBlur","$variant","name","$iconOnly","$size","$radius","$overrideIconColors","$startIcon","$endIcon","$disabled","tabIndex","StyledContentDiv","_jsx","StyledIconSpan","StyledChildren"],"mappings":";;;;;;AAyEA,MAAMA,aAAaA,CACjBC,SACAC,UACoB;AACpB,MAAIA,UAAU,OAAO;AACnB,QAAID,YAAY,aAAa;AAE3BE,cAAQC,KACN,yEACF;AACO,aAAA;AAAA,IACT;AACA,QAAIH,YAAY,SAAS;AAEvBE,cAAQC,KACN,kEACF;AACO,aAAA;AAAA,IACT;AAAA,EACF;AACOH,SAAAA;AACT;AAKO,MAAMI,WAEoBC,WAC/B,CACEC,OACAC,QACG;AACG,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAV,UAAU;AAAA,IACVW;AAAAA,IACAC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC,SAAS;AAAA,IACTC,qBAAqB;AAAA,IACrBC,WAAWC,YAAY;AAAA,IACvB,GAAGC;AAAAA,EACDhB,IAAAA;AAEE,QAAA;AAAA,IAAEiB;AAAAA,MAAgBC,SAAS;AAEjC,QAAMC,iBAAkBC,CAAU,UAAA;AAC1BC,UAAAA,OAAOC,UAAUC,IAAI,kBAAkB;AAC7CH,UAAMC,OAAOC,UAAUC,IAAIC,cAAcC,YAAY;AACrD,QAAItB,mCAASsB,cAAc;AACzBL,YAAMC,OAAOC,UAAUC,IAAIpB,QAAQsB,YAAY;AAAA,IACjD;AAAA,EAAA;AAGF,QAAMC,gBAAiBN,CAAU,UAAA;AACzBC,UAAAA,OAAOC,UAAUK,OAAO,kBAAkB;AAChDP,UAAMC,OAAOC,UAAUK,OAAOH,cAAcC,YAAY;AACxD,QAAItB,mCAASsB,cAAc;AACzBL,YAAMC,OAAOC,UAAUK,OAAOxB,QAAQsB,YAAY;AAAA,IACpD;AAAA,EAAA;AAGIG,QAAAA,kBAAkBC,QAAQ,MAAMC,aAAaf,SAAS,GAAG,CAACA,SAAS,CAAC;AAE1E,6BACGa,iBAAe;AAAA,IACd1B;AAAAA,IACAD;AAAAA,IACA8B,MAAK;AAAA,IACLxB,WAAWyB,KAAKzB,WAAWJ,mCAAS8B,MAAMT,cAAcS,IAAI;AAAA,IAC5D5B;AAAAA,IACA6B,SAASf;AAAAA,IACTgB,QAAQT;AAAAA,IACRU,UAAU3C,WAAWC,SAASuB,2CAAaoB,IAAI;AAAA,IAC/CC,WAAW5B;AAAAA,IACX6B,OAAO5B;AAAAA,IACP6B,SAAS5B;AAAAA,IACT6B,qBAAqB5B;AAAAA,IACrB6B,YAAY,CAAC,CAAClC;AAAAA,IACdmC,UAAU,CAAC,CAAClC;AAAAA,IAAQ,GACfH,YAAY;AAAA,MACfsC,WAAW;AAAA,MACXtC,UAAU;AAAA,MACVuC,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB;AAAA,IAAC,GACG7B;AAAAA,IAAMZ,+BAET0C,kBAAgB;AAAA,MAAA1C,UACdI,CAAAA,aACCuC,oBAACC,gBAAc;AAAA,QACbzC,WAAWyB,KAAK7B,mCAASK,WAAWgB,cAAchB,SAAS;AAAA,QAAEJ,UAE5DI;AAAAA,MAAAA,CACa,GAEjBJ,YAAY2C,oBAACE,gBAAc;AAAA,QAAA7C;AAAAA,MAAAA,CAA2B,GACtDK,WACCsC,oBAACC,gBAAc;AAAA,QACbzC,WAAWyB,KAAK7B,mCAASM,SAASe,cAAcf,OAAO;AAAA,QAAEL,UAExDK;AAAAA,MAAAA,CACa,CACjB;AAAA,IAAA,CACe;AAAA,EAAA,CACH;AAErB,CACF;"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import React, { forwardRef, ReactElement } from \"react\";\nimport { useTheme } from \"@core/hooks\";\nimport { PolymorphicComponentRef, PolymorphicRef } from \"@core/types\";\nimport { ExtractNames } from \"@core/utils\";\nimport {\n staticClasses as buttonClasses,\n getOverrideColors,\n getRadiusStyles,\n getSizeStyles,\n getVariantStyles,\n useClasses,\n} from \"./Button.styles\";\n\nexport { buttonClasses };\n\nexport type HvButtonClasses = ExtractNames<typeof useClasses>;\n\nexport const buttonVariant = [\n \"primary\",\n \"primarySubtle\",\n \"primaryGhost\",\n \"secondarySubtle\",\n \"secondaryGhost\",\n \"semantic\",\n // deprecated props\n \"secondary\",\n \"ghost\",\n] as const;\nexport type HvButtonVariant = (typeof buttonVariant)[number];\n\nexport const buttonSize = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as const;\nexport type HvButtonSize = (typeof buttonSize)[number];\n\nexport const buttonRadius = [\n \"none\",\n \"base\",\n \"round\",\n \"circle\",\n \"full\",\n] as const;\nexport type HvButtonRadius = (typeof buttonRadius)[number];\n\nexport type HvButtonProps<C extends React.ElementType = \"button\"> =\n PolymorphicComponentRef<\n C,\n {\n /** Use the variant prop to change the visual style of the Button. */\n variant?: HvButtonVariant;\n /** Whether the Button is an icon-only button. */\n icon?: boolean;\n /** Whether the Button is disabled or not. */\n disabled?: boolean;\n /** Class names to be applied. */\n className?: string;\n /** Element placed before the children. */\n startIcon?: ReactElement;\n /** Element placed after the children. */\n endIcon?: ReactElement;\n /** Button size. */\n size?: HvButtonSize;\n /** Button border radius. */\n radius?: HvButtonRadius;\n /** Defines the default colors of the button are forced into the icon. */\n overrideIconColors?: boolean;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvButtonClasses;\n /** Whether the Button is selected or not. */\n selected?: boolean;\n }\n >;\n\n/**\n * Normalize the button variant. It's meant to give us some retro-compatibility with\n * the DS 3.6 API.\n * @returns the normalized variant in DS 5 API\n */\nconst mapVariant = (\n variant: HvButtonVariant,\n theme?: string\n): HvButtonVariant => {\n if (theme === \"ds3\") return variant;\n\n const deprecatedVariantMap: Record<string, HvButtonVariant> = {\n secondary: \"secondarySubtle\",\n ghost: \"primaryGhost\",\n };\n\n const mappedVariant = deprecatedVariantMap[variant];\n\n if (mappedVariant) {\n // eslint-disable-next-line no-console\n console.warn(\n `Button variant '${variant}' is deprecated. Please use '${mappedVariant}'.`\n );\n }\n\n return mappedVariant || variant;\n};\n\n/**\n * Button component is used to trigger an action or event.\n */\nexport const HvButton: <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>\n) => React.ReactElement | null = forwardRef(\n <C extends React.ElementType = \"button\">(\n props: HvButtonProps<C>,\n ref: PolymorphicRef<C>\n ) => {\n const {\n id,\n classes: classesProp,\n children,\n variant: variantProp = \"primary\",\n disabled = false,\n className,\n startIcon,\n endIcon,\n icon = false,\n size,\n radius,\n overrideIconColors = true,\n component: Component = \"button\",\n ...others\n } = props;\n const { classes, css, cx } = useClasses(classesProp);\n const { activeTheme } = useTheme();\n\n const variant = mapVariant(variantProp, activeTheme?.name);\n\n return (\n <Component\n ref={ref}\n type=\"button\"\n className={cx(\n classes.root,\n css(getVariantStyles(variant)),\n size && css(getSizeStyles(size)),\n radius && css(getRadiusStyles(radius)),\n overrideIconColors && css(getOverrideColors(variant)),\n {\n [classes.icon]: icon,\n [classes.disabled]: disabled,\n },\n className\n )}\n {...(disabled && {\n disabled: true,\n tabIndex: -1,\n \"aria-disabled\": true,\n })}\n {...others}\n >\n {startIcon && <span className={classes.startIcon}>{startIcon}</span>}\n {children}\n {endIcon && <span className={classes.endIcon}>{endIcon}</span>}\n </Component>\n );\n }\n);\n"],"names":["mapVariant","variant","theme","deprecatedVariantMap","secondary","ghost","mappedVariant","warn","HvButton","forwardRef","props","ref","id","classes","classesProp","children","variantProp","disabled","className","startIcon","endIcon","icon","size","radius","overrideIconColors","component","Component","others","css","cx","useClasses","activeTheme","useTheme","name","type","root","getVariantStyles","getSizeStyles","getRadiusStyles","getOverrideColors","tabIndex","_jsx"],"mappings":";;;;;AA4EA,MAAMA,aAAaA,CACjBC,SACAC,UACoB;AACpB,MAAIA,UAAU;AAAcD,WAAAA;AAE5B,QAAME,uBAAwD;AAAA,IAC5DC,WAAW;AAAA,IACXC,OAAO;AAAA,EAAA;AAGHC,QAAAA,gBAAgBH,qBAAqBF,OAAO;AAElD,MAAIK,eAAe;AAETC,YAAAA,KACL,mBAAkBN,uCAAuCK,iBAC5D;AAAA,EACF;AAEA,SAAOA,iBAAiBL;AAC1B;AAKO,MAAMO,WAEoBC,WAC/B,CACEC,OACAC,QACG;AACG,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAd,SAASe,cAAc;AAAA,IACvBC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC,qBAAqB;AAAA,IACrBC,WAAWC,YAAY;AAAA,IACvB,GAAGC;AAAAA,EACDjB,IAAAA;AACE,QAAA;AAAA,IAAEG;AAAAA,IAASe;AAAAA,IAAKC;AAAAA,EAAAA,IAAOC,WAAWhB,WAAW;AAC7C,QAAA;AAAA,IAAEiB;AAAAA,MAAgBC,SAAS;AAEjC,QAAM/B,UAAUD,WAAWgB,aAAae,2CAAaE,IAAI;AAEzD,8BACGP,WAAS;AAAA,IACRf;AAAAA,IACAuB,MAAK;AAAA,IACLhB,WAAWW,GACThB,QAAQsB,MACRP,IAAIQ,iBAAiBnC,OAAO,CAAC,GAC7BqB,QAAQM,IAAIS,cAAcf,IAAI,CAAC,GAC/BC,UAAUK,IAAIU,gBAAgBf,MAAM,CAAC,GACrCC,sBAAsBI,IAAIW,kBAAkBtC,OAAO,CAAC,GACpD;AAAA,MACE,CAACY,QAAQQ,IAAI,GAAGA;AAAAA,MAChB,CAACR,QAAQI,QAAQ,GAAGA;AAAAA,OAEtBC,SACF;AAAA,IAAE,GACGD,YAAY;AAAA,MACfA,UAAU;AAAA,MACVuB,UAAU;AAAA,MACV,iBAAiB;AAAA,IACnB;AAAA,IAAC,GACGb;AAAAA,IAAMZ,UAAA,CAETI,aAAasB,oBAAA,QAAA;AAAA,MAAMvB,WAAWL,QAAQM;AAAAA,MAAUJ,UAAEI;AAAAA,IAAgB,CAAA,GAClEJ,UACAK,+BAAW,QAAA;AAAA,MAAMF,WAAWL,QAAQO;AAAAA,MAAQL,UAAEK;AAAAA,IAAAA,CAAc,CAAC;AAAA,EAAA,CACrD;AAEf,CACF;"}