@fuf-stack/pixels 1.5.0 → 1.6.0

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 (79) hide show
  1. package/dist/AvatarGroup/index.cjs +2 -2
  2. package/dist/AvatarGroup/index.js +1 -1
  3. package/dist/Progress/index.cjs +3 -3
  4. package/dist/Progress/index.js +2 -2
  5. package/dist/ProgressCircular/index.cjs +3 -3
  6. package/dist/ProgressCircular/index.js +2 -2
  7. package/dist/{chunk-NGN5JCSI.js → chunk-4SBEERL5.js} +2 -2
  8. package/dist/chunk-4SBEERL5.js.map +1 -0
  9. package/dist/chunk-EJKGMMBT.cjs +23 -0
  10. package/dist/chunk-EJKGMMBT.cjs.map +1 -0
  11. package/dist/{chunk-N7J3ZGJG.cjs → chunk-FQJ32476.cjs} +3 -3
  12. package/dist/chunk-FQJ32476.cjs.map +1 -0
  13. package/dist/chunk-GKYJUGD4.js +14 -0
  14. package/dist/chunk-GKYJUGD4.js.map +1 -0
  15. package/dist/{chunk-SZGVYMRD.js → chunk-HSREBNZV.js} +11 -9
  16. package/dist/chunk-HSREBNZV.js.map +1 -0
  17. package/dist/chunk-IXBNFKOS.cjs +62 -0
  18. package/dist/chunk-IXBNFKOS.cjs.map +1 -0
  19. package/dist/{chunk-ZOSD26X7.cjs → chunk-K5VPNWIJ.cjs} +3 -3
  20. package/dist/chunk-K5VPNWIJ.cjs.map +1 -0
  21. package/dist/chunk-M3Y2DZZE.js +62 -0
  22. package/dist/chunk-M3Y2DZZE.js.map +1 -0
  23. package/dist/{chunk-JIK5JCPT.js → chunk-OFZQFYUT.js} +2 -2
  24. package/dist/chunk-OFZQFYUT.js.map +1 -0
  25. package/dist/chunk-ON3PVFZY.cjs +14 -0
  26. package/dist/chunk-ON3PVFZY.cjs.map +1 -0
  27. package/dist/chunk-U5J6GTQE.js +123 -0
  28. package/dist/chunk-U5J6GTQE.js.map +1 -0
  29. package/dist/{chunk-S4O4KDC3.cjs → chunk-VHESFBAQ.cjs} +11 -9
  30. package/dist/chunk-VHESFBAQ.cjs.map +1 -0
  31. package/dist/chunk-WCE3O6UA.cjs +123 -0
  32. package/dist/chunk-WCE3O6UA.cjs.map +1 -0
  33. package/dist/chunk-XLR7LQR6.js +23 -0
  34. package/dist/chunk-XLR7LQR6.js.map +1 -0
  35. package/dist/hooks/useDebounce/index.cjs +8 -0
  36. package/dist/hooks/useDebounce/index.cjs.map +1 -0
  37. package/dist/hooks/useDebounce/index.d.cts +9 -0
  38. package/dist/hooks/useDebounce/index.d.ts +9 -0
  39. package/dist/hooks/useDebounce/index.js +8 -0
  40. package/dist/hooks/useIsInitialRenderCycle/index.cjs +8 -0
  41. package/dist/hooks/useIsInitialRenderCycle/index.cjs.map +1 -0
  42. package/dist/hooks/useIsInitialRenderCycle/index.d.cts +8 -0
  43. package/dist/hooks/useIsInitialRenderCycle/index.d.ts +8 -0
  44. package/dist/hooks/useIsInitialRenderCycle/index.js +8 -0
  45. package/dist/hooks/useIsInitialRenderCycle/index.js.map +1 -0
  46. package/dist/hooks/useLocalStorage/index.cjs +8 -0
  47. package/dist/hooks/useLocalStorage/index.cjs.map +1 -0
  48. package/dist/hooks/useLocalStorage/index.d.cts +5 -0
  49. package/dist/hooks/useLocalStorage/index.d.ts +5 -0
  50. package/dist/hooks/useLocalStorage/index.js +8 -0
  51. package/dist/hooks/useLocalStorage/index.js.map +1 -0
  52. package/dist/index.cjs +13 -5
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +4 -1
  55. package/dist/index.d.ts +4 -1
  56. package/dist/index.js +15 -7
  57. package/dist/utils/createWithSuspense/index.cjs +8 -0
  58. package/dist/utils/createWithSuspense/index.cjs.map +1 -0
  59. package/dist/utils/createWithSuspense/index.d.cts +72 -0
  60. package/dist/utils/createWithSuspense/index.d.ts +72 -0
  61. package/dist/utils/createWithSuspense/index.js +8 -0
  62. package/dist/utils/createWithSuspense/index.js.map +1 -0
  63. package/package.json +22 -6
  64. package/dist/chunk-2C53JQ3R.js +0 -87
  65. package/dist/chunk-2C53JQ3R.js.map +0 -1
  66. package/dist/chunk-BVZHFHLJ.cjs +0 -87
  67. package/dist/chunk-BVZHFHLJ.cjs.map +0 -1
  68. package/dist/chunk-JIK5JCPT.js.map +0 -1
  69. package/dist/chunk-N7J3ZGJG.cjs.map +0 -1
  70. package/dist/chunk-NGN5JCSI.js.map +0 -1
  71. package/dist/chunk-S4O4KDC3.cjs.map +0 -1
  72. package/dist/chunk-SZGVYMRD.js.map +0 -1
  73. package/dist/chunk-ZOSD26X7.cjs.map +0 -1
  74. package/dist/hooks/index.cjs +0 -12
  75. package/dist/hooks/index.cjs.map +0 -1
  76. package/dist/hooks/index.d.cts +0 -21
  77. package/dist/hooks/index.d.ts +0 -21
  78. package/dist/hooks/index.js +0 -12
  79. /package/dist/hooks/{index.js.map → useDebounce/index.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkS4O4KDC3cjs = require('../chunk-S4O4KDC3.cjs');
4
+ var _chunkVHESFBAQcjs = require('../chunk-VHESFBAQ.cjs');
5
5
  require('../chunk-77J7NZYB.cjs');
6
6
  require('../chunk-AHEA4IJV.cjs');
7
7
 
8
8
 
9
9
 
10
- exports.AvatarGroup = _chunkS4O4KDC3cjs.AvatarGroup_default; exports.default = _chunkS4O4KDC3cjs.AvatarGroup_default2;
10
+ exports.AvatarGroup = _chunkVHESFBAQcjs.AvatarGroup_default; exports.default = _chunkVHESFBAQcjs.AvatarGroup_default2;
11
11
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AvatarGroup_default,
3
3
  AvatarGroup_default2
4
- } from "../chunk-SZGVYMRD.js";
4
+ } from "../chunk-HSREBNZV.js";
5
5
  import "../chunk-4Y4W74D7.js";
6
6
  import "../chunk-OAIRL2FN.js";
7
7
  export {
@@ -2,12 +2,12 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkZOSD26X7cjs = require('../chunk-ZOSD26X7.cjs');
6
- require('../chunk-BVZHFHLJ.cjs');
5
+ var _chunkK5VPNWIJcjs = require('../chunk-K5VPNWIJ.cjs');
6
+ require('../chunk-ON3PVFZY.cjs');
7
7
  require('../chunk-AHEA4IJV.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.Progress = _chunkZOSD26X7cjs.Progress_default; exports.default = _chunkZOSD26X7cjs.Progress_default2; exports.progressVariants = _chunkZOSD26X7cjs.progressVariants;
12
+ exports.Progress = _chunkK5VPNWIJcjs.Progress_default; exports.default = _chunkK5VPNWIJcjs.Progress_default2; exports.progressVariants = _chunkK5VPNWIJcjs.progressVariants;
13
13
  //# sourceMappingURL=index.cjs.map
@@ -2,8 +2,8 @@ import {
2
2
  Progress_default,
3
3
  Progress_default2,
4
4
  progressVariants
5
- } from "../chunk-JIK5JCPT.js";
6
- import "../chunk-2C53JQ3R.js";
5
+ } from "../chunk-OFZQFYUT.js";
6
+ import "../chunk-GKYJUGD4.js";
7
7
  import "../chunk-OAIRL2FN.js";
8
8
  export {
9
9
  Progress_default as Progress,
@@ -2,12 +2,12 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkN7J3ZGJGcjs = require('../chunk-N7J3ZGJG.cjs');
6
- require('../chunk-BVZHFHLJ.cjs');
5
+ var _chunkFQJ32476cjs = require('../chunk-FQJ32476.cjs');
6
+ require('../chunk-ON3PVFZY.cjs');
7
7
  require('../chunk-AHEA4IJV.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.ProgressCircular = _chunkN7J3ZGJGcjs.ProgressCircular_default; exports.default = _chunkN7J3ZGJGcjs.ProgressCircular_default2; exports.progressCircularVariants = _chunkN7J3ZGJGcjs.progressCircularVariants;
12
+ exports.ProgressCircular = _chunkFQJ32476cjs.ProgressCircular_default; exports.default = _chunkFQJ32476cjs.ProgressCircular_default2; exports.progressCircularVariants = _chunkFQJ32476cjs.progressCircularVariants;
13
13
  //# sourceMappingURL=index.cjs.map
@@ -2,8 +2,8 @@ import {
2
2
  ProgressCircular_default,
3
3
  ProgressCircular_default2,
4
4
  progressCircularVariants
5
- } from "../chunk-NGN5JCSI.js";
6
- import "../chunk-2C53JQ3R.js";
5
+ } from "../chunk-4SBEERL5.js";
6
+ import "../chunk-GKYJUGD4.js";
7
7
  import "../chunk-OAIRL2FN.js";
8
8
  export {
9
9
  ProgressCircular_default as ProgressCircular,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useIsInitialRenderCycle
3
- } from "./chunk-2C53JQ3R.js";
3
+ } from "./chunk-GKYJUGD4.js";
4
4
  import {
5
5
  __spreadValues
6
6
  } from "./chunk-OAIRL2FN.js";
@@ -142,4 +142,4 @@ export {
142
142
  ProgressCircular_default,
143
143
  ProgressCircular_default2
144
144
  };
145
- //# sourceMappingURL=chunk-NGN5JCSI.js.map
145
+ //# sourceMappingURL=chunk-4SBEERL5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ProgressCircular/ProgressCircular.tsx","../src/ProgressCircular/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { CircularProgressProps as HeroCircularProgressProps } from '@heroui/progress';\nimport type { ReactNode } from 'react';\n\nimport { FaCheck, FaTimes } from 'react-icons/fa';\n\nimport { CircularProgress as HeroCircularProgress } from '@heroui/progress';\nimport { circularProgress as heroCircularProgressVariants } from '@heroui/theme';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useIsInitialRenderCycle } from '../hooks/useIsInitialRenderCycle';\n\nexport const progressCircularVariants = tv({\n slots: {\n // wrapper around the whole component\n base: '',\n // indicator of the circle (finished part)\n indicator: '',\n // label next to the svgWrapper\n label: '',\n // wrapper for the circle\n svg: '',\n // wrapper around progress svg and value span\n svgWrapper: '',\n // track of the circle (not finished part)\n track: 'stroke-default-300',\n // outer span next to the svg\n value: '',\n },\n variants: {\n color: {\n info: {\n svg: 'text-info',\n },\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/progress.ts\n ...heroCircularProgressVariants.variants.color,\n },\n hasError: {\n true: {\n svg: 'text-danger',\n },\n },\n isFinished: {\n true: {\n svg: 'text-success',\n },\n },\n size: {\n xs: {\n svg: 'h-10 w-10',\n value: 'text-[0.6rem]',\n },\n sm: {\n svg: 'h-12 w-12',\n value: 'text-xs',\n },\n md: {\n svg: 'h-16 w-16',\n value: 'text-md',\n },\n lg: {\n svg: 'h-20 w-20',\n value: 'text-lg',\n },\n xl: {\n svg: 'h-24 w-24',\n value: 'text-xl',\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof progressCircularVariants>;\ntype ClassName = TVClassName<typeof progressCircularVariants>;\n\nexport interface ProgressCircularProps extends VariantProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** CSS class name */\n className?: ClassName;\n /** color options */\n color?: VariantProps['color'];\n /** disables all animations */\n disableAnimation?: boolean;\n /** disables special finished state (checkmark icon and success color) */\n disableFinishedState?: boolean;\n /** formats the display value of the progress in the center */\n format?: (percent?: number) => ReactNode;\n /** enables error version */\n hasError?: boolean;\n /** percentage / progress of the circular progress bar */\n percent: number;\n /** size options */\n size?: VariantProps['size'];\n /** stroke width of the circular progress bar */\n strokeWidth?: number;\n}\n\n/** formats percent with percent sign */\nconst defaultFormat = (percent = 0) => {\n return `${percent}%`;\n};\n\n/**\n * ProgressCircular component based on [HeroUI CircularProgress](https://www.heroui.com/docs/components/circular-progress)\n */\nconst ProgressCircular = ({\n ariaLabel = 'progress',\n className = undefined,\n format = defaultFormat,\n hasError = false,\n percent,\n disableAnimation = false,\n disableFinishedState = false,\n size = 'md',\n color = 'info',\n strokeWidth: strokeWidthProp = undefined,\n}: ProgressCircularProps) => {\n // used to disable animation on initial render cycle\n const isInitialRenderCycle = useIsInitialRenderCycle();\n\n // Apply finished state if percent is 100 or more and not disabled by disableFinishedState\n const isFinished = !hasError && percent >= 100 && !disableFinishedState;\n\n const variants = progressCircularVariants({\n color,\n hasError,\n isFinished,\n size,\n });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // format value\n let value = format(percent);\n\n let strokeWidth = strokeWidthProp;\n // set strokeWidth based on size prop when no strokeWidth provided\n if (!strokeWidth) {\n switch (size) {\n case 'xs':\n strokeWidth = 2;\n break;\n case 'sm':\n strokeWidth = 1.8;\n break;\n default:\n strokeWidth = 1.6;\n break;\n }\n }\n\n // handle special states\n let progressColor: VariantProps['color'] = color;\n if (hasError) {\n progressColor = 'danger';\n value = <FaTimes className=\"text-danger\" />;\n } else if (isFinished) {\n progressColor = 'success';\n value = <FaCheck className=\"text-success\" />;\n }\n\n // pass only HeroUI colors as props\n const heroUiColor = Object.keys(\n heroCircularProgressVariants.variants.color,\n ).includes(color)\n ? (progressColor as HeroCircularProgressProps['color'])\n : undefined;\n\n return (\n <HeroCircularProgress\n showValueLabel\n aria-label={ariaLabel}\n classNames={classNames}\n color={heroUiColor}\n disableAnimation={isInitialRenderCycle || disableAnimation}\n strokeWidth={strokeWidth}\n // INFO: we do NOT use spinner animation when no percent provided\n value={percent || 0}\n valueLabel={value}\n />\n );\n};\n\nexport default ProgressCircular;\n","import ProgressCircular, { progressCircularVariants } from './ProgressCircular';\n\nexport type { ProgressCircularProps } from './ProgressCircular';\n\nexport { ProgressCircular, progressCircularVariants };\n\nexport default ProgressCircular;\n"],"mappings":";;;;;;;;AAIA,SAAS,SAAS,eAAe;AAEjC,SAAS,oBAAoB,4BAA4B;AACzD,SAAS,oBAAoB,oCAAoC;AAEjE,SAAS,IAAI,4BAA4B;AAmJ7B;AA/IL,IAAM,2BAA2B,GAAG;AAAA,EACzC,OAAO;AAAA;AAAA,IAEL,MAAM;AAAA;AAAA,IAEN,WAAW;AAAA;AAAA,IAEX,OAAO;AAAA;AAAA,IAEP,KAAK;AAAA;AAAA,IAEL,YAAY;AAAA;AAAA,IAEZ,OAAO;AAAA;AAAA,IAEP,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,KAAK;AAAA,MACP;AAAA,OAEG,6BAA6B,SAAS;AAAA,IAE3C,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,MACP;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,KAAK;AAAA,MACP;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,QACF,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,QACF,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,QACF,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,MACA,IAAI;AAAA,QACF,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,CAAC;AA6BD,IAAM,gBAAgB,CAAC,UAAU,MAAM;AACrC,SAAO,GAAG,OAAO;AACnB;AAKA,IAAM,mBAAmB,CAAC;AAAA,EACxB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa,kBAAkB;AACjC,MAA6B;AAE3B,QAAM,uBAAuB,wBAAwB;AAGrD,QAAM,aAAa,CAAC,YAAY,WAAW,OAAO,CAAC;AAEnD,QAAM,WAAW,yBAAyB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,aAAa,qBAAqB,UAAU,WAAW,MAAM;AAGnE,MAAI,QAAQ,OAAO,OAAO;AAE1B,MAAI,cAAc;AAElB,MAAI,CAAC,aAAa;AAChB,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF;AACE,sBAAc;AACd;AAAA,IACJ;AAAA,EACF;AAGA,MAAI,gBAAuC;AAC3C,MAAI,UAAU;AACZ,oBAAgB;AAChB,YAAQ,oBAAC,WAAQ,WAAU,eAAc;AAAA,EAC3C,WAAW,YAAY;AACrB,oBAAgB;AAChB,YAAQ,oBAAC,WAAQ,WAAU,gBAAe;AAAA,EAC5C;AAGA,QAAM,cAAc,OAAO;AAAA,IACzB,6BAA6B,SAAS;AAAA,EACxC,EAAE,SAAS,KAAK,IACX,gBACD;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc;AAAA,MACd,cAAY;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,MACP,kBAAkB,wBAAwB;AAAA,MAC1C;AAAA,MAEA,OAAO,WAAW;AAAA,MAClB,YAAY;AAAA;AAAA,EACd;AAEJ;AAEA,IAAO,2BAAQ;;;AClLf,IAAOA,4BAAQ;","names":["ProgressCircular_default"]}
@@ -0,0 +1,23 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/hooks/useDebounce/useDebounce.ts
2
+ var _react = require('react');
3
+ var useDebounce = (value, delay) => {
4
+ const [debouncedValue, setDebouncedValue] = _react.useState.call(void 0, value);
5
+ _react.useEffect.call(void 0,
6
+ () => {
7
+ const handler = setTimeout(() => {
8
+ setDebouncedValue(value);
9
+ }, delay);
10
+ return () => {
11
+ clearTimeout(handler);
12
+ };
13
+ },
14
+ [value, delay]
15
+ // Only re-call effect if value or delay changes
16
+ );
17
+ return debouncedValue;
18
+ };
19
+
20
+
21
+
22
+ exports.useDebounce = useDebounce;
23
+ //# sourceMappingURL=chunk-EJKGMMBT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-EJKGMMBT.cjs","../src/hooks/useDebounce/useDebounce.ts"],"names":[],"mappings":"AAAA;ACEA,8BAAoC;AAQ7B,IAAM,YAAA,EAAc,CAAQ,KAAA,EAAc,KAAA,EAAA,GAAkB;AAEjE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE1D,EAAA,8BAAA;AAAA,IACE,CAAA,EAAA,GAAM;AAEJ,MAAA,MAAM,QAAA,EAAU,UAAA,CAAW,CAAA,EAAA,GAAM;AAC/B,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,MACzB,CAAA,EAAG,KAAK,CAAA;AAKR,MAAA,OAAO,CAAA,EAAA,GAAM;AACX,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA,MACtB,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,KAAK;AAAA;AAAA,EACf,CAAA;AAEA,EAAA,OAAO,cAAA;AACT,CAAA;ADdA;AACA;AACE;AACF,kCAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-EJKGMMBT.cjs","sourcesContent":[null,"/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook that debounces a value\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds\n * @returns The debounced value\n */\nexport const useDebounce = <Value>(value: Value, delay: number) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkBVZHFHLJcjs = require('./chunk-BVZHFHLJ.cjs');
3
+ var _chunkON3PVFZYcjs = require('./chunk-ON3PVFZY.cjs');
4
4
 
5
5
 
6
6
  var _chunkAHEA4IJVcjs = require('./chunk-AHEA4IJV.cjs');
@@ -83,7 +83,7 @@ var ProgressCircular = ({
83
83
  color = "info",
84
84
  strokeWidth: strokeWidthProp = void 0
85
85
  }) => {
86
- const isInitialRenderCycle = _chunkBVZHFHLJcjs.useIsInitialRenderCycle.call(void 0, );
86
+ const isInitialRenderCycle = _chunkON3PVFZYcjs.useIsInitialRenderCycle.call(void 0, );
87
87
  const isFinished = !hasError && percent >= 100 && !disableFinishedState;
88
88
  const variants = progressCircularVariants({
89
89
  color,
@@ -142,4 +142,4 @@ var ProgressCircular_default2 = ProgressCircular_default;
142
142
 
143
143
 
144
144
  exports.progressCircularVariants = progressCircularVariants; exports.ProgressCircular_default = ProgressCircular_default; exports.ProgressCircular_default2 = ProgressCircular_default2;
145
- //# sourceMappingURL=chunk-N7J3ZGJG.cjs.map
145
+ //# sourceMappingURL=chunk-FQJ32476.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-FQJ32476.cjs","../src/ProgressCircular/ProgressCircular.tsx","../src/ProgressCircular/index.ts"],"names":["ProgressCircular_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,oCAAiC;AAEjC,4CAAyD;AACzD,sCAAiE;AAEjE,oDAAyC;AAmJ7B,+CAAA;AA/IL,IAAM,yBAAA,EAA2B,4BAAA;AAAG,EACzC,KAAA,EAAO;AAAA;AAAA,IAEL,IAAA,EAAM,EAAA;AAAA;AAAA,IAEN,SAAA,EAAW,EAAA;AAAA;AAAA,IAEX,KAAA,EAAO,EAAA;AAAA;AAAA,IAEP,GAAA,EAAK,EAAA;AAAA;AAAA,IAEL,UAAA,EAAY,EAAA;AAAA;AAAA,IAEZ,KAAA,EAAO,oBAAA;AAAA;AAAA,IAEP,KAAA,EAAO;AAAA,EACT,CAAA;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,8CAAA;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK;AAAA,MACP;AAAA,IAAA,CAAA,EAEG,uBAAA,CAA6B,QAAA,CAAS,KAAA,CAAA;AAAA,IAE3C,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK;AAAA,MACP;AAAA,IACF,CAAA;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK;AAAA,MACP;AAAA,IACF,CAAA;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI;AAAA,QACF,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,MACT,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,MACT,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,MACT,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,MACT,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,CAAC,CAAA;AA6BD,IAAM,cAAA,EAAgB,CAAC,QAAA,EAAU,CAAA,EAAA,GAAM;AACrC,EAAA,OAAO,CAAA,EAAA;AACT;AAKM;AACJ,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACC,EAAA;AACR,EAAA;AAC2B;AAErB,EAAA;AAGA,EAAA;AAEA,EAAA;AACJ,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACD,EAAA;AACK,EAAA;AAGF,EAAA;AAEA,EAAA;AAEC,EAAA;AACH,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACJ,IAAA;AACF,EAAA;AAGI,EAAA;AACA,EAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACE,IAAA;AACA,IAAA;AACF,EAAA;AAGM,EAAA;AACJ,IAAA;AACA,EAAA;AAKA,EAAA;AAAC,IAAA;AAAA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AAEA,MAAA;AACA,MAAA;AAAY,IAAA;AACd,EAAA;AAEJ;AAEO;ADjDG;AACA;AElIHA;AFoIG;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-FQJ32476.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { CircularProgressProps as HeroCircularProgressProps } from '@heroui/progress';\nimport type { ReactNode } from 'react';\n\nimport { FaCheck, FaTimes } from 'react-icons/fa';\n\nimport { CircularProgress as HeroCircularProgress } from '@heroui/progress';\nimport { circularProgress as heroCircularProgressVariants } from '@heroui/theme';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useIsInitialRenderCycle } from '../hooks/useIsInitialRenderCycle';\n\nexport const progressCircularVariants = tv({\n slots: {\n // wrapper around the whole component\n base: '',\n // indicator of the circle (finished part)\n indicator: '',\n // label next to the svgWrapper\n label: '',\n // wrapper for the circle\n svg: '',\n // wrapper around progress svg and value span\n svgWrapper: '',\n // track of the circle (not finished part)\n track: 'stroke-default-300',\n // outer span next to the svg\n value: '',\n },\n variants: {\n color: {\n info: {\n svg: 'text-info',\n },\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/progress.ts\n ...heroCircularProgressVariants.variants.color,\n },\n hasError: {\n true: {\n svg: 'text-danger',\n },\n },\n isFinished: {\n true: {\n svg: 'text-success',\n },\n },\n size: {\n xs: {\n svg: 'h-10 w-10',\n value: 'text-[0.6rem]',\n },\n sm: {\n svg: 'h-12 w-12',\n value: 'text-xs',\n },\n md: {\n svg: 'h-16 w-16',\n value: 'text-md',\n },\n lg: {\n svg: 'h-20 w-20',\n value: 'text-lg',\n },\n xl: {\n svg: 'h-24 w-24',\n value: 'text-xl',\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof progressCircularVariants>;\ntype ClassName = TVClassName<typeof progressCircularVariants>;\n\nexport interface ProgressCircularProps extends VariantProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** CSS class name */\n className?: ClassName;\n /** color options */\n color?: VariantProps['color'];\n /** disables all animations */\n disableAnimation?: boolean;\n /** disables special finished state (checkmark icon and success color) */\n disableFinishedState?: boolean;\n /** formats the display value of the progress in the center */\n format?: (percent?: number) => ReactNode;\n /** enables error version */\n hasError?: boolean;\n /** percentage / progress of the circular progress bar */\n percent: number;\n /** size options */\n size?: VariantProps['size'];\n /** stroke width of the circular progress bar */\n strokeWidth?: number;\n}\n\n/** formats percent with percent sign */\nconst defaultFormat = (percent = 0) => {\n return `${percent}%`;\n};\n\n/**\n * ProgressCircular component based on [HeroUI CircularProgress](https://www.heroui.com/docs/components/circular-progress)\n */\nconst ProgressCircular = ({\n ariaLabel = 'progress',\n className = undefined,\n format = defaultFormat,\n hasError = false,\n percent,\n disableAnimation = false,\n disableFinishedState = false,\n size = 'md',\n color = 'info',\n strokeWidth: strokeWidthProp = undefined,\n}: ProgressCircularProps) => {\n // used to disable animation on initial render cycle\n const isInitialRenderCycle = useIsInitialRenderCycle();\n\n // Apply finished state if percent is 100 or more and not disabled by disableFinishedState\n const isFinished = !hasError && percent >= 100 && !disableFinishedState;\n\n const variants = progressCircularVariants({\n color,\n hasError,\n isFinished,\n size,\n });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // format value\n let value = format(percent);\n\n let strokeWidth = strokeWidthProp;\n // set strokeWidth based on size prop when no strokeWidth provided\n if (!strokeWidth) {\n switch (size) {\n case 'xs':\n strokeWidth = 2;\n break;\n case 'sm':\n strokeWidth = 1.8;\n break;\n default:\n strokeWidth = 1.6;\n break;\n }\n }\n\n // handle special states\n let progressColor: VariantProps['color'] = color;\n if (hasError) {\n progressColor = 'danger';\n value = <FaTimes className=\"text-danger\" />;\n } else if (isFinished) {\n progressColor = 'success';\n value = <FaCheck className=\"text-success\" />;\n }\n\n // pass only HeroUI colors as props\n const heroUiColor = Object.keys(\n heroCircularProgressVariants.variants.color,\n ).includes(color)\n ? (progressColor as HeroCircularProgressProps['color'])\n : undefined;\n\n return (\n <HeroCircularProgress\n showValueLabel\n aria-label={ariaLabel}\n classNames={classNames}\n color={heroUiColor}\n disableAnimation={isInitialRenderCycle || disableAnimation}\n strokeWidth={strokeWidth}\n // INFO: we do NOT use spinner animation when no percent provided\n value={percent || 0}\n valueLabel={value}\n />\n );\n};\n\nexport default ProgressCircular;\n","import ProgressCircular, { progressCircularVariants } from './ProgressCircular';\n\nexport type { ProgressCircularProps } from './ProgressCircular';\n\nexport { ProgressCircular, progressCircularVariants };\n\nexport default ProgressCircular;\n"]}
@@ -0,0 +1,14 @@
1
+ // src/hooks/useIsInitialRenderCycle/useIsInitialRenderCycle.ts
2
+ import { useEffect, useRef } from "react";
3
+ var useIsInitialRenderCycle = () => {
4
+ const isInitialRender = useRef(true);
5
+ useEffect(() => {
6
+ isInitialRender.current = false;
7
+ }, []);
8
+ return isInitialRender.current;
9
+ };
10
+
11
+ export {
12
+ useIsInitialRenderCycle
13
+ };
14
+ //# sourceMappingURL=chunk-GKYJUGD4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useIsInitialRenderCycle/useIsInitialRenderCycle.ts"],"sourcesContent":["/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useRef } from 'react';\n\n/**\n * A hook that returns true on initial render and false afterward.\n *\n * @returns {boolean} - True on initial render, false afterward\n */\nexport const useIsInitialRenderCycle = (): boolean => {\n // Use ref to avoid re-renders\n const isInitialRender = useRef(true);\n\n // Update ref after first render\n useEffect(() => {\n // Set to false after component mounts\n isInitialRender.current = false;\n\n // No cleanup needed for this effect\n }, []);\n\n return isInitialRender.current;\n};\n"],"mappings":";AAEA,SAAS,WAAW,cAAc;AAO3B,IAAM,0BAA0B,MAAe;AAEpD,QAAM,kBAAkB,OAAO,IAAI;AAGnC,YAAU,MAAM;AAEd,oBAAgB,UAAU;AAAA,EAG5B,GAAG,CAAC,CAAC;AAEL,SAAO,gBAAgB;AACzB;","names":[]}
@@ -2,6 +2,7 @@ import {
2
2
  Avatar_default
3
3
  } from "./chunk-4Y4W74D7.js";
4
4
  import {
5
+ __objRest,
5
6
  __spreadProps,
6
7
  __spreadValues
7
8
  } from "./chunk-OAIRL2FN.js";
@@ -28,25 +29,26 @@ var AvatarGroup = ({
28
29
  max,
29
30
  radius: rounded,
30
31
  size,
31
- children: avatars == null ? void 0 : avatars.map((avatar) => {
32
- return AvatarWrapper ? /* @__PURE__ */ jsx(AvatarWrapper, __spreadProps(__spreadValues({}, avatar.wrapperProps), { children: /* @__PURE__ */ jsx(
32
+ children: avatars == null ? void 0 : avatars.map((avatar, index) => {
33
+ const avatarKey = avatar.src ? `${avatar.src}-${index}` : `avatar-${index}`;
34
+ const _a = avatar, { wrapperProps } = _a, avatarProps = __objRest(_a, ["wrapperProps"]);
35
+ return AvatarWrapper ? /* @__PURE__ */ jsx(AvatarWrapper, __spreadProps(__spreadValues({}, wrapperProps), { children: /* @__PURE__ */ jsx(
33
36
  Avatar_default,
34
- __spreadProps(__spreadValues({}, avatar), {
37
+ __spreadProps(__spreadValues({}, avatarProps), {
35
38
  bordered,
36
39
  disabled: disabled || (avatar == null ? void 0 : avatar.disabled),
37
40
  rounded,
38
41
  size
39
- }),
40
- avatar.src
41
- ) })) : /* @__PURE__ */ jsx(
42
+ })
43
+ ) }), avatarKey) : /* @__PURE__ */ jsx(
42
44
  Avatar_default,
43
- __spreadProps(__spreadValues({}, avatar), {
45
+ __spreadProps(__spreadValues({}, avatarProps), {
44
46
  bordered,
45
47
  disabled: disabled || (avatar == null ? void 0 : avatar.disabled),
46
48
  rounded,
47
49
  size
48
50
  }),
49
- avatar.src
51
+ avatarKey
50
52
  );
51
53
  })
52
54
  }
@@ -61,4 +63,4 @@ export {
61
63
  AvatarGroup_default,
62
64
  AvatarGroup_default2
63
65
  };
64
- //# sourceMappingURL=chunk-SZGVYMRD.js.map
66
+ //# sourceMappingURL=chunk-HSREBNZV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/AvatarGroup/AvatarGroup.tsx","../src/AvatarGroup/index.ts"],"sourcesContent":["import type { JSX } from 'react';\nimport type { AvatarProps } from '../Avatar/Avatar';\n\nimport { AvatarGroup as HeroAvatarGroup } from '@heroui/avatar';\n\nimport { Avatar } from '../Avatar';\n\nexport interface AvatarGroupProps {\n /* Display a border ring around the Avatar */\n bordered?: boolean;\n /* Roundness of the border around the Avatar */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** CSS class name */\n className?: string;\n /* Disables the Avatar */\n disabled?: boolean;\n /* Size of the Avatar */\n size?: 'sm' | 'md' | 'lg';\n /* Maximum number of avatars to display before +X is displayed */\n max?: number;\n /* Array of avatarProps */\n avatars?: (Omit<AvatarProps, 'size' | 'rounded' | 'bordered'> & {\n /* Custom wrapperProps for each avatarWrapper */\n wrapperProps?: Record<string, unknown>;\n })[];\n /* Custom wrapper for each avatar */\n avatarWrapper?: JSX.ElementType;\n}\n\n/**\n * AvatarGroup component based on [HeroUI AvatarGroup](https://www.heroui.com//docs/components/avatar)\n */\nconst AvatarGroup = ({\n bordered = false,\n rounded = 'full',\n className = '',\n disabled = false,\n size = 'md',\n avatars = [],\n max = 3,\n avatarWrapper: AvatarWrapper = undefined,\n}: AvatarGroupProps) => {\n return (\n <HeroAvatarGroup\n className={className}\n isBordered={bordered}\n isDisabled={disabled}\n max={max}\n radius={rounded}\n size={size}\n >\n {avatars?.map((avatar, index) => {\n const avatarKey = avatar.src\n ? `${avatar.src}-${index}`\n : `avatar-${index}`;\n const { wrapperProps, ...avatarProps } = avatar;\n return AvatarWrapper ? (\n <AvatarWrapper key={avatarKey} {...wrapperProps}>\n <Avatar\n {...avatarProps}\n bordered={bordered}\n disabled={disabled || avatar?.disabled}\n rounded={rounded}\n size={size}\n />\n </AvatarWrapper>\n ) : (\n <Avatar\n key={avatarKey}\n {...avatarProps}\n bordered={bordered}\n disabled={disabled || avatar?.disabled}\n rounded={rounded}\n size={size}\n />\n );\n })}\n </HeroAvatarGroup>\n );\n};\n\nexport default AvatarGroup;\n","import AvatarGroup from './AvatarGroup';\n\nexport type { AvatarGroupProps } from './AvatarGroup';\n\nexport { AvatarGroup };\n\nexport default AvatarGroup;\n"],"mappings":";;;;;;;;;;AAGA,SAAS,eAAe,uBAAuB;AAuDnC;AA1BZ,IAAM,cAAc,CAAC;AAAA,EACnB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU,CAAC;AAAA,EACX,MAAM;AAAA,EACN,eAAe,gBAAgB;AACjC,MAAwB;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MAEC,6CAAS,IAAI,CAAC,QAAQ,UAAU;AAC/B,cAAM,YAAY,OAAO,MACrB,GAAG,OAAO,GAAG,IAAI,KAAK,KACtB,UAAU,KAAK;AACnB,cAAyC,aAAjC,eAvDhB,IAuDiD,IAAhB,wBAAgB,IAAhB,CAAjB;AACR,eAAO,gBACL,oBAAC,gDAAkC,eAAlC,EACC;AAAA,UAAC;AAAA,2CACK,cADL;AAAA,YAEC;AAAA,YACA,UAAU,aAAY,iCAAQ;AAAA,YAC9B;AAAA,YACA;AAAA;AAAA,QACF,MAPkB,SAQpB,IAEA;AAAA,UAAC;AAAA,2CAEK,cAFL;AAAA,YAGC;AAAA,YACA,UAAU,aAAY,iCAAQ;AAAA,YAC9B;AAAA,YACA;AAAA;AAAA,UALK;AAAA,QAMP;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,sBAAQ;;;AC3Ef,IAAOA,uBAAQ;","names":["AvatarGroup_default"]}
@@ -0,0 +1,62 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/hooks/useLocalStorage/useLocalStorage.ts
2
+ var _react = require('react');
3
+ var useLocalStorage = (key, initialValue) => {
4
+ const readValue = () => {
5
+ const resolveInitialValue = () => {
6
+ return typeof initialValue === "function" ? initialValue() : initialValue;
7
+ };
8
+ if (typeof window === "undefined") {
9
+ return resolveInitialValue();
10
+ }
11
+ try {
12
+ const item = window.localStorage.getItem(key);
13
+ if (item) {
14
+ return JSON.parse(item);
15
+ }
16
+ return resolveInitialValue();
17
+ } catch (error) {
18
+ console.warn(`Error reading localStorage key "${key}":`, error);
19
+ return resolveInitialValue();
20
+ }
21
+ };
22
+ const [storedValue, setStoredValue] = _react.useState.call(void 0, readValue);
23
+ const setValue = (value) => {
24
+ if (typeof window === "undefined") {
25
+ console.warn(
26
+ `Tried setting localStorage key "${key}" even though environment is not a client`
27
+ );
28
+ return;
29
+ }
30
+ try {
31
+ const newValue = value instanceof Function ? value(storedValue) : value;
32
+ window.localStorage.setItem(key, JSON.stringify(newValue));
33
+ setStoredValue(newValue);
34
+ window.dispatchEvent(new Event("local-storage"));
35
+ } catch (error) {
36
+ console.warn(`Error setting localStorage key "${key}":`, error);
37
+ }
38
+ };
39
+ _react.useEffect.call(void 0, () => {
40
+ setStoredValue(readValue());
41
+ }, []);
42
+ _react.useEffect.call(void 0, () => {
43
+ if (typeof window === "undefined") {
44
+ return void 0;
45
+ }
46
+ const handleStorageChange = () => {
47
+ setStoredValue(readValue());
48
+ };
49
+ window.addEventListener("storage", handleStorageChange);
50
+ window.addEventListener("local-storage", handleStorageChange);
51
+ return () => {
52
+ window.removeEventListener("storage", handleStorageChange);
53
+ window.removeEventListener("local-storage", handleStorageChange);
54
+ };
55
+ }, []);
56
+ return [storedValue, setValue];
57
+ };
58
+
59
+
60
+
61
+ exports.useLocalStorage = useLocalStorage;
62
+ //# sourceMappingURL=chunk-IXBNFKOS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-IXBNFKOS.cjs","../src/hooks/useLocalStorage/useLocalStorage.ts"],"names":[],"mappings":"AAAA;ACIA,8BAAoC;AAE7B,IAAM,gBAAA,EAAkB,CAC7B,GAAA,EACA,YAAA,EAAA,GACqC;AAGrC,EAAA,MAAM,UAAA,EAAY,CAAA,EAAA,GAAS;AAEzB,IAAA,MAAM,oBAAA,EAAsB,CAAA,EAAA,GAAS;AACnC,MAAA,OAAO,OAAO,aAAA,IAAiB,WAAA,EAC1B,YAAA,CAAyB,EAAA,EAC1B,YAAA;AAAA,IACN,CAAA;AAGA,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,MAAA,OAAO,mBAAA,CAAoB,CAAA;AAAA,IAC7B;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,KAAA,EAAO,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAG,CAAA;AAC5C,MAAA,GAAA,CAAI,IAAA,EAAM;AACR,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,MACxB;AACA,MAAA,OAAO,mBAAA,CAAoB,CAAA;AAAA,IAC7B,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,gCAAA,EAAmC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AAC9D,MAAA,OAAO,mBAAA,CAAoB,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA;AAIA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,EAAA,EAAI,6BAAA,SAAqB,CAAA;AAI3D,EAAA,MAAM,SAAA,EAAwC,CAAC,KAAA,EAAA,GAAU;AAEvD,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,CAAA,gCAAA,EAAmC,GAAG,CAAA,yCAAA;AAAA,MACxC,CAAA;AACA,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,SAAA,EAAW,MAAA,WAAiB,SAAA,EAAW,KAAA,CAAM,WAAW,EAAA,EAAI,KAAA;AAIlE,MAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA;AAGzD,MAAA,cAAA,CAAe,QAAQ,CAAA;AAGvB,MAAA,MAAA,CAAO,aAAA,CAAc,IAAI,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,IACjD,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,gCAAA,EAAmC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AAAA,IAChE;AAAA,EACF,CAAA;AAEA,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,cAAA,CAAe,SAAA,CAAU,CAAC,CAAA;AAAA,EAE5B,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,8BAAA,CAAU,EAAA,GAAM;AAEd,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,MAAM,oBAAA,EAAsB,CAAA,EAAA,GAAM;AAChC,MAAA,cAAA,CAAe,SAAA,CAAU,CAAC,CAAA;AAAA,IAC5B,CAAA;AAGA,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAA,EAAW,mBAAmB,CAAA;AAGtD,IAAA,MAAA,CAAO,gBAAA,CAAiB,eAAA,EAAiB,mBAAmB,CAAA;AAE5D,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,mBAAmB,CAAA;AACzD,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAA,EAAiB,mBAAmB,CAAA;AAAA,IACjE,CAAA;AAAA,EAEF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,OAAO,CAAC,WAAA,EAAa,QAAQ,CAAA;AAC/B,CAAA;AD3CA;AACA;AACE;AACF,0CAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-IXBNFKOS.cjs","sourcesContent":[null,"/* eslint-disable import-x/prefer-default-export */\n\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { useEffect, useState } from 'react';\n\nexport const useLocalStorage = <T>(\n key: string,\n initialValue: T | (() => T),\n): [T, Dispatch<SetStateAction<T>>] => {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = (): T => {\n // Helper to resolve initial value (handle function or direct value)\n const resolveInitialValue = (): T => {\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n };\n\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === 'undefined') {\n return resolveInitialValue();\n }\n\n try {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const item = window.localStorage.getItem(key);\n if (item) {\n return JSON.parse(item) as T;\n }\n return resolveInitialValue();\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error);\n return resolveInitialValue();\n }\n };\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: Dispatch<SetStateAction<T>> = (value) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === 'undefined') {\n console.warn(\n `Tried setting localStorage key \"${key}\" even though environment is not a client`,\n );\n return;\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n window.localStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n window.dispatchEvent(new Event('local-storage'));\n } catch (error) {\n console.warn(`Error setting localStorage key \"${key}\":`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // Skip event listeners in SSR environment\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n const handleStorageChange = () => {\n setStoredValue(readValue());\n };\n\n // this only works for other documents, not the current one\n window.addEventListener('storage', handleStorageChange);\n\n // this is a custom event, triggered in writeValueToLocalStorage\n window.addEventListener('local-storage', handleStorageChange);\n\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n window.removeEventListener('local-storage', handleStorageChange);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return [storedValue, setValue];\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkBVZHFHLJcjs = require('./chunk-BVZHFHLJ.cjs');
3
+ var _chunkON3PVFZYcjs = require('./chunk-ON3PVFZY.cjs');
4
4
 
5
5
  // src/Progress/Progress.tsx
6
6
  var _progress = require('@heroui/progress');
@@ -65,7 +65,7 @@ var Progress = ({
65
65
  size = "md",
66
66
  testId = void 0
67
67
  }) => {
68
- const isInitialRenderCycle = _chunkBVZHFHLJcjs.useIsInitialRenderCycle.call(void 0, );
68
+ const isInitialRenderCycle = _chunkON3PVFZYcjs.useIsInitialRenderCycle.call(void 0, );
69
69
  const isFinished = percent >= 100 && !disableFinishedState;
70
70
  let progressColor = color;
71
71
  if (isFinished) {
@@ -100,4 +100,4 @@ var Progress_default2 = Progress_default;
100
100
 
101
101
 
102
102
  exports.progressVariants = progressVariants; exports.Progress_default = Progress_default; exports.Progress_default2 = Progress_default2;
103
- //# sourceMappingURL=chunk-ZOSD26X7.cjs.map
103
+ //# sourceMappingURL=chunk-K5VPNWIJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-K5VPNWIJ.cjs","../src/Progress/Progress.tsx","../src/Progress/index.ts"],"names":["Progress_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACDA,4CAAyC;AAEzC,oDAAyC;AAsHrC,+CAAA;AAjHG,IAAM,iBAAA,EAAmB,4BAAA;AAAG,EACjC,KAAA,EAAO;AAAA;AAAA,IAEL,IAAA,EAAM,EAAA;AAAA;AAAA,IAEN,SAAA,EAAW,EAAA;AAAA;AAAA,IAEX,KAAA,EAAO,EAAA;AAAA;AAAA,IAEP,YAAA,EAAc,EAAA;AAAA;AAAA,IAEd,KAAA,EAAO,EAAA;AAAA;AAAA,IAEP,KAAA,EAAO;AAAA,EACT,CAAA;AAAA,EACA,QAAA,EAAU;AAAA;AAAA,IAER,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ;AAAA,QACN,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACT,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA,MACb,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,SAAA,EAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF,CAAC,CAAA;AAiCD,IAAM,cAAA,EAAgB,CAAC,QAAA,EAAU,CAAA,EAAA,GAAM;AACrC,EAAA,OAAO,CAAA,EAAA;AACT;AAKM;AACJ,EAAA;AACA,EAAA;AACQ,EAAA;AACR,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACQ,EAAA;AACR,EAAA;AACA,EAAA;AACO,EAAA;AACP,EAAA;AACmB;AAEb,EAAA;AAGA,EAAA;AAGF,EAAA;AACA,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AAEA,EAAA;AAGJ,EAAA;AAAC,IAAA;AAAA,IAAA;AACC,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AAAyB,IAAA;AAC3B,EAAA;AAEJ;AAEO;AD7CG;AACA;AExFHA;AF0FG;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-K5VPNWIJ.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { Progress as HeroProgress } from '@heroui/progress';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useIsInitialRenderCycle } from '../hooks/useIsInitialRenderCycle';\n\n// progress styling variants\nexport const progressVariants = tv({\n slots: {\n // wrapper around the whole component\n base: '',\n // indicator of the progress (finished part)\n indicator: '',\n // label at the top left of the progress bar\n label: '',\n // wrapper around progress label and label span\n labelWrapper: '',\n // track of the progress (not finished part)\n track: '',\n // span around the progress value\n value: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/progress.ts\n color: {\n danger: {\n indicator: 'bg-danger',\n },\n default: {\n indicator: 'bg-default-400',\n },\n info: {\n indicator: 'bg-info',\n },\n primary: {\n indicator: 'bg-primary',\n },\n secondary: {\n indicator: 'bg-secondary',\n },\n success: {\n indicator: 'bg-success',\n },\n warning: {\n indicator: 'bg-warning',\n },\n },\n },\n});\n\nexport type VariantProps = TVProps<typeof progressVariants>;\ntype ClassName = TVClassName<typeof progressVariants>;\n\nexport interface ProgressProps extends VariantProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** CSS class name */\n className?: ClassName;\n /** color of the progress bar */\n color?: VariantProps['color'];\n /** disables all animations */\n disableAnimation?: boolean;\n /** disables special finished state (checkmark icon and success color) */\n disableFinishedState?: boolean;\n /** function to format the progress value */\n format?: (percent: number) => ReactNode;\n /** shows indeterminate progress animation */\n indeterminate?: boolean;\n /** label of the progress bar */\n label?: ReactNode;\n /** percentage / progress of the progress bar */\n percent: number;\n /** whether to show the value label */\n showValueLabel?: boolean;\n /** size of the progress bar */\n size?: 'sm' | 'md' | 'lg';\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/** formats percent with percent sign */\nconst defaultFormat = (percent = 0) => {\n return `${percent}%`;\n};\n\n/**\n * Progress component based on [HeroUI Progress](https://www.heroui.com//docs/components/progress)\n */\nconst Progress = ({\n ariaLabel = 'progress',\n className = undefined,\n color = 'info',\n disableAnimation = false,\n disableFinishedState = false,\n format = defaultFormat,\n indeterminate = false,\n label = undefined,\n percent,\n showValueLabel = false,\n size = 'md',\n testId = undefined,\n}: ProgressProps) => {\n // used to disable animation on initial render cycle\n const isInitialRenderCycle = useIsInitialRenderCycle();\n\n // Apply finished state if percent is 100 or more and not disabled by disableFinishedState\n const isFinished = percent >= 100 && !disableFinishedState;\n\n // handle special states\n let progressColor: VariantProps['color'] = color;\n if (isFinished) {\n progressColor = 'success';\n }\n\n const variants = progressVariants({ color: progressColor });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const value = format(percent);\n\n return (\n <HeroProgress\n aria-label={ariaLabel}\n classNames={classNames}\n data-testid={testId}\n disableAnimation={isInitialRenderCycle || disableAnimation}\n isIndeterminate={indeterminate}\n label={label}\n showValueLabel={showValueLabel}\n size={size}\n value={percent || 0}\n valueLabel={!!percent && value}\n />\n );\n};\n\nexport default Progress;\n","import Progress, { progressVariants } from './Progress';\n\nexport type { ProgressProps } from './Progress';\n\nexport { Progress, progressVariants };\n\nexport default Progress;\n"]}
@@ -0,0 +1,62 @@
1
+ // src/hooks/useLocalStorage/useLocalStorage.ts
2
+ import { useEffect, useState } from "react";
3
+ var useLocalStorage = (key, initialValue) => {
4
+ const readValue = () => {
5
+ const resolveInitialValue = () => {
6
+ return typeof initialValue === "function" ? initialValue() : initialValue;
7
+ };
8
+ if (typeof window === "undefined") {
9
+ return resolveInitialValue();
10
+ }
11
+ try {
12
+ const item = window.localStorage.getItem(key);
13
+ if (item) {
14
+ return JSON.parse(item);
15
+ }
16
+ return resolveInitialValue();
17
+ } catch (error) {
18
+ console.warn(`Error reading localStorage key "${key}":`, error);
19
+ return resolveInitialValue();
20
+ }
21
+ };
22
+ const [storedValue, setStoredValue] = useState(readValue);
23
+ const setValue = (value) => {
24
+ if (typeof window === "undefined") {
25
+ console.warn(
26
+ `Tried setting localStorage key "${key}" even though environment is not a client`
27
+ );
28
+ return;
29
+ }
30
+ try {
31
+ const newValue = value instanceof Function ? value(storedValue) : value;
32
+ window.localStorage.setItem(key, JSON.stringify(newValue));
33
+ setStoredValue(newValue);
34
+ window.dispatchEvent(new Event("local-storage"));
35
+ } catch (error) {
36
+ console.warn(`Error setting localStorage key "${key}":`, error);
37
+ }
38
+ };
39
+ useEffect(() => {
40
+ setStoredValue(readValue());
41
+ }, []);
42
+ useEffect(() => {
43
+ if (typeof window === "undefined") {
44
+ return void 0;
45
+ }
46
+ const handleStorageChange = () => {
47
+ setStoredValue(readValue());
48
+ };
49
+ window.addEventListener("storage", handleStorageChange);
50
+ window.addEventListener("local-storage", handleStorageChange);
51
+ return () => {
52
+ window.removeEventListener("storage", handleStorageChange);
53
+ window.removeEventListener("local-storage", handleStorageChange);
54
+ };
55
+ }, []);
56
+ return [storedValue, setValue];
57
+ };
58
+
59
+ export {
60
+ useLocalStorage
61
+ };
62
+ //# sourceMappingURL=chunk-M3Y2DZZE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useLocalStorage/useLocalStorage.ts"],"sourcesContent":["/* eslint-disable import-x/prefer-default-export */\n\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { useEffect, useState } from 'react';\n\nexport const useLocalStorage = <T>(\n key: string,\n initialValue: T | (() => T),\n): [T, Dispatch<SetStateAction<T>>] => {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = (): T => {\n // Helper to resolve initial value (handle function or direct value)\n const resolveInitialValue = (): T => {\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n };\n\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === 'undefined') {\n return resolveInitialValue();\n }\n\n try {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const item = window.localStorage.getItem(key);\n if (item) {\n return JSON.parse(item) as T;\n }\n return resolveInitialValue();\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error);\n return resolveInitialValue();\n }\n };\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: Dispatch<SetStateAction<T>> = (value) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === 'undefined') {\n console.warn(\n `Tried setting localStorage key \"${key}\" even though environment is not a client`,\n );\n return;\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n window.localStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n window.dispatchEvent(new Event('local-storage'));\n } catch (error) {\n console.warn(`Error setting localStorage key \"${key}\":`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // Skip event listeners in SSR environment\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n const handleStorageChange = () => {\n setStoredValue(readValue());\n };\n\n // this only works for other documents, not the current one\n window.addEventListener('storage', handleStorageChange);\n\n // this is a custom event, triggered in writeValueToLocalStorage\n window.addEventListener('local-storage', handleStorageChange);\n\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n window.removeEventListener('local-storage', handleStorageChange);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return [storedValue, setValue];\n};\n"],"mappings":";AAIA,SAAS,WAAW,gBAAgB;AAE7B,IAAM,kBAAkB,CAC7B,KACA,iBACqC;AAGrC,QAAM,YAAY,MAAS;AAEzB,UAAM,sBAAsB,MAAS;AACnC,aAAO,OAAO,iBAAiB,aAC1B,aAAyB,IAC1B;AAAA,IACN;AAGA,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,oBAAoB;AAAA,IAC7B;AAEA,QAAI;AAEF,YAAM,OAAO,OAAO,aAAa,QAAQ,GAAG;AAC5C,UAAI,MAAM;AACR,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB;AACA,aAAO,oBAAoB;AAAA,IAC7B,SAAS,OAAO;AACd,cAAQ,KAAK,mCAAmC,GAAG,MAAM,KAAK;AAC9D,aAAO,oBAAoB;AAAA,IAC7B;AAAA,EACF;AAIA,QAAM,CAAC,aAAa,cAAc,IAAI,SAAY,SAAS;AAI3D,QAAM,WAAwC,CAAC,UAAU;AAEvD,QAAI,OAAO,WAAW,aAAa;AACjC,cAAQ;AAAA,QACN,mCAAmC,GAAG;AAAA,MACxC;AACA;AAAA,IACF;AAEA,QAAI;AAEF,YAAM,WAAW,iBAAiB,WAAW,MAAM,WAAW,IAAI;AAIlE,aAAO,aAAa,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;AAGzD,qBAAe,QAAQ;AAGvB,aAAO,cAAc,IAAI,MAAM,eAAe,CAAC;AAAA,IACjD,SAAS,OAAO;AACd,cAAQ,KAAK,mCAAmC,GAAG,MAAM,KAAK;AAAA,IAChE;AAAA,EACF;AAEA,YAAU,MAAM;AACd,mBAAe,UAAU,CAAC;AAAA,EAE5B,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAEd,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAAA,IACT;AAEA,UAAM,sBAAsB,MAAM;AAChC,qBAAe,UAAU,CAAC;AAAA,IAC5B;AAGA,WAAO,iBAAiB,WAAW,mBAAmB;AAGtD,WAAO,iBAAiB,iBAAiB,mBAAmB;AAE5D,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,mBAAmB;AACzD,aAAO,oBAAoB,iBAAiB,mBAAmB;AAAA,IACjE;AAAA,EAEF,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,aAAa,QAAQ;AAC/B;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useIsInitialRenderCycle
3
- } from "./chunk-2C53JQ3R.js";
3
+ } from "./chunk-GKYJUGD4.js";
4
4
 
5
5
  // src/Progress/Progress.tsx
6
6
  import { Progress as HeroProgress } from "@heroui/progress";
@@ -100,4 +100,4 @@ export {
100
100
  Progress_default,
101
101
  Progress_default2
102
102
  };
103
- //# sourceMappingURL=chunk-JIK5JCPT.js.map
103
+ //# sourceMappingURL=chunk-OFZQFYUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Progress/Progress.tsx","../src/Progress/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\n\nimport { Progress as HeroProgress } from '@heroui/progress';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useIsInitialRenderCycle } from '../hooks/useIsInitialRenderCycle';\n\n// progress styling variants\nexport const progressVariants = tv({\n slots: {\n // wrapper around the whole component\n base: '',\n // indicator of the progress (finished part)\n indicator: '',\n // label at the top left of the progress bar\n label: '',\n // wrapper around progress label and label span\n labelWrapper: '',\n // track of the progress (not finished part)\n track: '',\n // span around the progress value\n value: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/progress.ts\n color: {\n danger: {\n indicator: 'bg-danger',\n },\n default: {\n indicator: 'bg-default-400',\n },\n info: {\n indicator: 'bg-info',\n },\n primary: {\n indicator: 'bg-primary',\n },\n secondary: {\n indicator: 'bg-secondary',\n },\n success: {\n indicator: 'bg-success',\n },\n warning: {\n indicator: 'bg-warning',\n },\n },\n },\n});\n\nexport type VariantProps = TVProps<typeof progressVariants>;\ntype ClassName = TVClassName<typeof progressVariants>;\n\nexport interface ProgressProps extends VariantProps {\n /** sets HTML aria-label attribute */\n ariaLabel?: string;\n /** CSS class name */\n className?: ClassName;\n /** color of the progress bar */\n color?: VariantProps['color'];\n /** disables all animations */\n disableAnimation?: boolean;\n /** disables special finished state (checkmark icon and success color) */\n disableFinishedState?: boolean;\n /** function to format the progress value */\n format?: (percent: number) => ReactNode;\n /** shows indeterminate progress animation */\n indeterminate?: boolean;\n /** label of the progress bar */\n label?: ReactNode;\n /** percentage / progress of the progress bar */\n percent: number;\n /** whether to show the value label */\n showValueLabel?: boolean;\n /** size of the progress bar */\n size?: 'sm' | 'md' | 'lg';\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/** formats percent with percent sign */\nconst defaultFormat = (percent = 0) => {\n return `${percent}%`;\n};\n\n/**\n * Progress component based on [HeroUI Progress](https://www.heroui.com//docs/components/progress)\n */\nconst Progress = ({\n ariaLabel = 'progress',\n className = undefined,\n color = 'info',\n disableAnimation = false,\n disableFinishedState = false,\n format = defaultFormat,\n indeterminate = false,\n label = undefined,\n percent,\n showValueLabel = false,\n size = 'md',\n testId = undefined,\n}: ProgressProps) => {\n // used to disable animation on initial render cycle\n const isInitialRenderCycle = useIsInitialRenderCycle();\n\n // Apply finished state if percent is 100 or more and not disabled by disableFinishedState\n const isFinished = percent >= 100 && !disableFinishedState;\n\n // handle special states\n let progressColor: VariantProps['color'] = color;\n if (isFinished) {\n progressColor = 'success';\n }\n\n const variants = progressVariants({ color: progressColor });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const value = format(percent);\n\n return (\n <HeroProgress\n aria-label={ariaLabel}\n classNames={classNames}\n data-testid={testId}\n disableAnimation={isInitialRenderCycle || disableAnimation}\n isIndeterminate={indeterminate}\n label={label}\n showValueLabel={showValueLabel}\n size={size}\n value={percent || 0}\n valueLabel={!!percent && value}\n />\n );\n};\n\nexport default Progress;\n","import Progress, { progressVariants } from './Progress';\n\nexport type { ProgressProps } from './Progress';\n\nexport { Progress, progressVariants };\n\nexport default Progress;\n"],"mappings":";;;;;AAGA,SAAS,YAAY,oBAAoB;AAEzC,SAAS,IAAI,4BAA4B;AAsHrC;AAjHG,IAAM,mBAAmB,GAAG;AAAA,EACjC,OAAO;AAAA;AAAA,IAEL,MAAM;AAAA;AAAA,IAEN,WAAW;AAAA;AAAA,IAEX,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA;AAAA,IAEd,OAAO;AAAA;AAAA,IAEP,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA;AAAA,IAER,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA,WAAW;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAiCD,IAAM,gBAAgB,CAAC,UAAU,MAAM;AACrC,SAAO,GAAG,OAAO;AACnB;AAKA,IAAM,WAAW,CAAC;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,SAAS;AACX,MAAqB;AAEnB,QAAM,uBAAuB,wBAAwB;AAGrD,QAAM,aAAa,WAAW,OAAO,CAAC;AAGtC,MAAI,gBAAuC;AAC3C,MAAI,YAAY;AACd,oBAAgB;AAAA,EAClB;AAEA,QAAM,WAAW,iBAAiB,EAAE,OAAO,cAAc,CAAC;AAC1D,QAAM,aAAa,qBAAqB,UAAU,WAAW,MAAM;AAEnE,QAAM,QAAQ,OAAO,OAAO;AAE5B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY;AAAA,MACZ;AAAA,MACA,eAAa;AAAA,MACb,kBAAkB,wBAAwB;AAAA,MAC1C,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,WAAW;AAAA,MAClB,YAAY,CAAC,CAAC,WAAW;AAAA;AAAA,EAC3B;AAEJ;AAEA,IAAO,mBAAQ;;;ACpIf,IAAOA,oBAAQ;","names":["Progress_default"]}
@@ -0,0 +1,14 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/hooks/useIsInitialRenderCycle/useIsInitialRenderCycle.ts
2
+ var _react = require('react');
3
+ var useIsInitialRenderCycle = () => {
4
+ const isInitialRender = _react.useRef.call(void 0, true);
5
+ _react.useEffect.call(void 0, () => {
6
+ isInitialRender.current = false;
7
+ }, []);
8
+ return isInitialRender.current;
9
+ };
10
+
11
+
12
+
13
+ exports.useIsInitialRenderCycle = useIsInitialRenderCycle;
14
+ //# sourceMappingURL=chunk-ON3PVFZY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-ON3PVFZY.cjs","../src/hooks/useIsInitialRenderCycle/useIsInitialRenderCycle.ts"],"names":[],"mappings":"AAAA;ACEA,8BAAkC;AAO3B,IAAM,wBAAA,EAA0B,CAAA,EAAA,GAAe;AAEpD,EAAA,MAAM,gBAAA,EAAkB,2BAAA,IAAW,CAAA;AAGnC,EAAA,8BAAA,CAAU,EAAA,GAAM;AAEd,IAAA,eAAA,CAAgB,QAAA,EAAU,KAAA;AAAA,EAG5B,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,OAAO,eAAA,CAAgB,OAAA;AACzB,CAAA;ADbA;AACA;AACE;AACF,0DAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-ON3PVFZY.cjs","sourcesContent":[null,"/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useRef } from 'react';\n\n/**\n * A hook that returns true on initial render and false afterward.\n *\n * @returns {boolean} - True on initial render, false afterward\n */\nexport const useIsInitialRenderCycle = (): boolean => {\n // Use ref to avoid re-renders\n const isInitialRender = useRef(true);\n\n // Update ref after first render\n useEffect(() => {\n // Set to false after component mounts\n isInitialRender.current = false;\n\n // No cleanup needed for this effect\n }, []);\n\n return isInitialRender.current;\n};\n"]}