@customafk/lunas-ui 0.0.89 → 0.0.90

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 (190) hide show
  1. package/dist/{button-C15dJ7DD.d.ts → button--4Up8V16.d.ts} +6 -6
  2. package/dist/{button-BcvUtvUx.d.cts → button-DvLPviNh.d.cts} +6 -6
  3. package/dist/cards/grid-product-card.cjs +1 -1
  4. package/dist/cards/grid-product-card.js +1 -1
  5. package/dist/cards/product-card.cjs +1 -1
  6. package/dist/cards/product-card.js +1 -1
  7. package/dist/cards/simple-card.d.cts +2 -2
  8. package/dist/{command-DSoZmOak.d.ts → command-DCxlE_7w.d.ts} +12 -12
  9. package/dist/{command-CjM13Tvj.d.cts → command-DvZTC5Zs.d.cts} +11 -11
  10. package/dist/data-display/empty.d.cts +2 -2
  11. package/dist/data-display/empty.d.ts +2 -2
  12. package/dist/data-display/statistic.d.cts +2 -2
  13. package/dist/data-display/statistic.d.ts +2 -2
  14. package/dist/{dialog-l2nFk0v1.d.ts → dialog-BqaZEo5j.d.ts} +12 -12
  15. package/dist/dialogs/detail-dialog/component/sidebar.d.cts +4 -4
  16. package/dist/dialogs/detail-dialog/component/sidebar.d.ts +4 -4
  17. package/dist/dialogs/form-dialog.d.cts +2 -2
  18. package/dist/dialogs/form-dialog.d.ts +2 -2
  19. package/dist/forms/combobox-field.d.cts +2 -2
  20. package/dist/forms/combobox-field.d.ts +2 -2
  21. package/dist/forms/date-field.d.cts +2 -2
  22. package/dist/forms/date-field.d.ts +2 -2
  23. package/dist/forms/form-wrapper.d.cts +2 -2
  24. package/dist/forms/form-wrapper.d.ts +2 -2
  25. package/dist/forms/multi-select-field.d.cts +2 -2
  26. package/dist/forms/multi-select-field.d.ts +2 -2
  27. package/dist/forms/number-field.d.cts +2 -2
  28. package/dist/forms/number-field.d.ts +2 -2
  29. package/dist/forms/password-field.d.cts +2 -2
  30. package/dist/forms/password-field.d.ts +2 -2
  31. package/dist/forms/select-field.d.cts +2 -2
  32. package/dist/forms/select-field.d.ts +2 -2
  33. package/dist/forms/switch-field.d.cts +2 -2
  34. package/dist/forms/switch-field.d.ts +2 -2
  35. package/dist/forms/text-field.d.cts +2 -2
  36. package/dist/forms/text-field.d.ts +2 -2
  37. package/dist/forms/textarea-field.d.cts +2 -2
  38. package/dist/forms/textarea-field.d.ts +2 -2
  39. package/dist/image-BENkCNFO.cjs +2 -0
  40. package/dist/image-BENkCNFO.cjs.map +1 -0
  41. package/dist/image-CQ2i6x3d.js +2 -0
  42. package/dist/image-CQ2i6x3d.js.map +1 -0
  43. package/dist/{input-C3yhFrhm.d.ts → input-ChVagjGs.d.cts} +3 -3
  44. package/dist/{input-BFZu6Cb8.d.cts → input-_Uc9Nudu.d.ts} +3 -3
  45. package/dist/{label-DSlGeKZK.d.ts → label--w6MDGCn.d.ts} +3 -3
  46. package/dist/label-BkmYDt9h.d.cts +11 -0
  47. package/dist/layouts/app-layout/index.d.cts +5 -5
  48. package/dist/layouts/app-layout/index.d.ts +28 -28
  49. package/dist/layouts/flex.d.cts +5 -5
  50. package/dist/layouts/flex.d.ts +7 -7
  51. package/dist/layouts/service-layout/index.cjs +1 -1
  52. package/dist/layouts/service-layout/index.cjs.map +1 -1
  53. package/dist/layouts/service-layout/index.d.cts +5 -5
  54. package/dist/layouts/service-layout/index.d.ts +15 -15
  55. package/dist/layouts/service-layout/index.js +1 -1
  56. package/dist/layouts/service-layout/index.js.map +1 -1
  57. package/dist/pages/FeatureDeveloping.cjs.map +1 -1
  58. package/dist/pages/FeatureDeveloping.d.cts +2 -2
  59. package/dist/pages/FeatureDeveloping.d.ts +2 -2
  60. package/dist/pages/FeatureDeveloping.js.map +1 -1
  61. package/dist/pages/FeatureFixing.d.ts +2 -2
  62. package/dist/pages/NotAuthorized.d.cts +2 -2
  63. package/dist/pages/NotAuthorized.d.ts +2 -2
  64. package/dist/pages/NotFound.d.cts +2 -2
  65. package/dist/pages/NotFound.d.ts +2 -2
  66. package/dist/products/product-quantity-control.d.cts +2 -2
  67. package/dist/products/product-quantity-control.d.ts +2 -2
  68. package/dist/{separator-37DVXMoq.d.ts → separator-CLCuP1xE.d.ts} +3 -3
  69. package/dist/{separator-CM1kQQxq.d.cts → separator-CrQFgLB_.d.cts} +3 -3
  70. package/dist/table/index.d.cts +2 -2
  71. package/dist/table/index.d.ts +2 -2
  72. package/dist/{toggle-DTyO_oae.d.cts → toggle-1Tlu1OKT.d.ts} +4 -4
  73. package/dist/{toggle-CIqx9KlR.d.ts → toggle-ZmWe85dU.d.cts} +5 -5
  74. package/dist/{tooltip-C5kKsbnD.d.ts → tooltip-BEEk7osU.d.ts} +6 -6
  75. package/dist/{tooltip-etV38FoO.d.cts → tooltip-BgwfJliB.d.cts} +6 -6
  76. package/dist/typography/paragraph.d.cts +2 -2
  77. package/dist/typography/paragraph.d.ts +2 -2
  78. package/dist/typography/title.d.cts +2 -2
  79. package/dist/typography/title.d.ts +2 -2
  80. package/dist/ui/alert-dialog.d.cts +12 -12
  81. package/dist/ui/alert-dialog.d.ts +12 -12
  82. package/dist/ui/alert.d.cts +7 -7
  83. package/dist/ui/alert.d.ts +7 -7
  84. package/dist/ui/aspect-ratio.d.cts +2 -2
  85. package/dist/ui/aspect-ratio.d.ts +2 -2
  86. package/dist/ui/avatar.d.cts +4 -4
  87. package/dist/ui/avatar.d.ts +4 -4
  88. package/dist/ui/badge.d.cts +5 -5
  89. package/dist/ui/badge.d.ts +3 -3
  90. package/dist/ui/breadcrumb.d.cts +8 -8
  91. package/dist/ui/breadcrumb.d.ts +8 -8
  92. package/dist/ui/button-group.d.cts +8 -8
  93. package/dist/ui/button-group.d.ts +8 -8
  94. package/dist/ui/button.d.cts +1 -1
  95. package/dist/ui/button.d.ts +1 -1
  96. package/dist/ui/calendar.d.cts +4 -4
  97. package/dist/ui/calendar.d.ts +4 -4
  98. package/dist/ui/card.d.cts +8 -8
  99. package/dist/ui/card.d.ts +8 -8
  100. package/dist/ui/carousel.d.cts +7 -7
  101. package/dist/ui/carousel.d.ts +7 -7
  102. package/dist/ui/collapsible.d.cts +4 -4
  103. package/dist/ui/collapsible.d.ts +4 -4
  104. package/dist/ui/command.d.cts +1 -1
  105. package/dist/ui/command.d.ts +2 -2
  106. package/dist/ui/context-menu.d.cts +16 -16
  107. package/dist/ui/context-menu.d.ts +16 -16
  108. package/dist/ui/dialog.d.ts +1 -1
  109. package/dist/ui/drawer.d.cts +11 -11
  110. package/dist/ui/drawer.d.ts +11 -11
  111. package/dist/ui/dropdown-menu.d.cts +16 -16
  112. package/dist/ui/dropdown-menu.d.ts +16 -16
  113. package/dist/ui/empty.d.cts +7 -7
  114. package/dist/ui/empty.d.ts +7 -7
  115. package/dist/ui/field.d.cts +15 -15
  116. package/dist/ui/field.d.ts +15 -15
  117. package/dist/ui/file-uploader.d.cts +2 -2
  118. package/dist/ui/file-uploader.d.ts +2 -2
  119. package/dist/ui/form.d.cts +7 -7
  120. package/dist/ui/form.d.ts +7 -7
  121. package/dist/ui/hover-card.d.cts +4 -4
  122. package/dist/ui/hover-card.d.ts +4 -4
  123. package/dist/ui/image.cjs +1 -1
  124. package/dist/ui/image.d.cts +1 -0
  125. package/dist/ui/image.d.ts +1 -0
  126. package/dist/ui/image.js +1 -1
  127. package/dist/ui/input-otp.d.cts +5 -5
  128. package/dist/ui/input-otp.d.ts +5 -5
  129. package/dist/ui/input.d.cts +1 -1
  130. package/dist/ui/input.d.ts +1 -1
  131. package/dist/ui/inputs/search-input.d.cts +3 -3
  132. package/dist/ui/inputs/search-input.d.ts +3 -3
  133. package/dist/ui/item.d.cts +15 -15
  134. package/dist/ui/item.d.ts +15 -15
  135. package/dist/ui/label.d.cts +1 -1
  136. package/dist/ui/label.d.ts +1 -1
  137. package/dist/ui/menubar.d.cts +17 -17
  138. package/dist/ui/menubar.d.ts +17 -17
  139. package/dist/ui/multi-select.d.cts +1 -1
  140. package/dist/ui/multi-select.d.ts +2 -2
  141. package/dist/ui/navigation-menu.d.cts +11 -11
  142. package/dist/ui/navigation-menu.d.ts +11 -11
  143. package/dist/ui/pagination.d.cts +9 -9
  144. package/dist/ui/pagination.d.ts +9 -9
  145. package/dist/ui/popover.d.cts +5 -5
  146. package/dist/ui/popover.d.ts +5 -5
  147. package/dist/ui/progress.d.cts +2 -2
  148. package/dist/ui/progress.d.ts +2 -2
  149. package/dist/ui/radio-group.d.cts +3 -3
  150. package/dist/ui/radio-group.d.ts +3 -3
  151. package/dist/ui/resizable.d.cts +4 -4
  152. package/dist/ui/resizable.d.ts +4 -4
  153. package/dist/ui/scroll-area.d.cts +3 -3
  154. package/dist/ui/scroll-area.d.ts +3 -3
  155. package/dist/ui/select.d.cts +11 -11
  156. package/dist/ui/select.d.ts +11 -11
  157. package/dist/ui/separator.d.cts +1 -1
  158. package/dist/ui/separator.d.ts +1 -1
  159. package/dist/ui/sheet.d.cts +9 -9
  160. package/dist/ui/sheet.d.ts +9 -9
  161. package/dist/ui/sidebar.d.cts +30 -30
  162. package/dist/ui/sidebar.d.ts +30 -30
  163. package/dist/ui/skeleton.d.cts +2 -2
  164. package/dist/ui/skeleton.d.ts +2 -2
  165. package/dist/ui/slider.d.cts +2 -2
  166. package/dist/ui/slider.d.ts +2 -2
  167. package/dist/ui/sonner.d.cts +2 -2
  168. package/dist/ui/sonner.d.ts +2 -2
  169. package/dist/ui/spinner.d.cts +2 -2
  170. package/dist/ui/spinner.d.ts +2 -2
  171. package/dist/ui/switch.d.cts +2 -2
  172. package/dist/ui/switch.d.ts +2 -2
  173. package/dist/ui/table.d.cts +9 -9
  174. package/dist/ui/table.d.ts +9 -9
  175. package/dist/ui/tabs.d.cts +5 -5
  176. package/dist/ui/tabs.d.ts +5 -5
  177. package/dist/ui/textarea.d.cts +2 -2
  178. package/dist/ui/textarea.d.ts +2 -2
  179. package/dist/ui/toggle-group.d.cts +4 -4
  180. package/dist/ui/toggle-group.d.ts +4 -4
  181. package/dist/ui/toggle.d.cts +1 -1
  182. package/dist/ui/toggle.d.ts +1 -1
  183. package/dist/ui/tooltip.d.cts +1 -1
  184. package/dist/ui/tooltip.d.ts +1 -1
  185. package/package.json +1 -1
  186. package/dist/image-C0mClPAY.cjs +0 -2
  187. package/dist/image-C0mClPAY.cjs.map +0 -1
  188. package/dist/image-CiQhTTyt.js +0 -2
  189. package/dist/image-CiQhTTyt.js.map +0 -1
  190. package/dist/label-BaRuPui8.d.cts +0 -11
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime161 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime250 from "react/jsx-runtime";
2
2
 
3
3
  //#region packages/components/ui/textarea.d.ts
4
4
  declare function Textarea({
@@ -8,7 +8,7 @@ declare function Textarea({
8
8
  ...props
9
9
  }: React.ComponentProps<'textarea'> & {
10
10
  onValueChange?: (value: string) => void;
11
- }): react_jsx_runtime161.JSX.Element;
11
+ }): react_jsx_runtime250.JSX.Element;
12
12
  //#endregion
13
13
  export { Textarea };
14
14
  //# sourceMappingURL=textarea.d.ts.map
@@ -1,5 +1,5 @@
1
- import { toggleVariants } from "../toggle-DTyO_oae.cjs";
2
- import * as react_jsx_runtime244 from "react/jsx-runtime";
1
+ import { toggleVariants } from "../toggle-ZmWe85dU.cjs";
2
+ import * as react_jsx_runtime273 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
5
5
 
@@ -10,14 +10,14 @@ declare function ToggleGroup({
10
10
  size,
11
11
  children,
12
12
  ...props
13
- }: React.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime244.JSX.Element;
13
+ }: React.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime273.JSX.Element;
14
14
  declare function ToggleGroupItem({
15
15
  className,
16
16
  children,
17
17
  variant,
18
18
  size,
19
19
  ...props
20
- }: React.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime244.JSX.Element;
20
+ }: React.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime273.JSX.Element;
21
21
  //#endregion
22
22
  export { ToggleGroup, ToggleGroupItem };
23
23
  //# sourceMappingURL=toggle-group.d.cts.map
@@ -1,5 +1,5 @@
1
- import { toggleVariants } from "../toggle-CIqx9KlR.js";
2
- import * as react_jsx_runtime200 from "react/jsx-runtime";
1
+ import { toggleVariants } from "../toggle-1Tlu1OKT.js";
2
+ import * as react_jsx_runtime255 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
5
5
 
@@ -10,14 +10,14 @@ declare function ToggleGroup({
10
10
  size,
11
11
  children,
12
12
  ...props
13
- }: React.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime200.JSX.Element;
13
+ }: React.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime255.JSX.Element;
14
14
  declare function ToggleGroupItem({
15
15
  className,
16
16
  children,
17
17
  variant,
18
18
  size,
19
19
  ...props
20
- }: React.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime200.JSX.Element;
20
+ }: React.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime255.JSX.Element;
21
21
  //#endregion
22
22
  export { ToggleGroup, ToggleGroupItem };
23
23
  //# sourceMappingURL=toggle-group.d.ts.map
@@ -1,2 +1,2 @@
1
- import { Toggle, toggleVariants } from "../toggle-DTyO_oae.cjs";
1
+ import { Toggle, toggleVariants } from "../toggle-ZmWe85dU.cjs";
2
2
  export { Toggle, toggleVariants };
@@ -1,2 +1,2 @@
1
- import { Toggle, toggleVariants } from "../toggle-CIqx9KlR.js";
1
+ import { Toggle, toggleVariants } from "../toggle-1Tlu1OKT.js";
2
2
  export { Toggle, toggleVariants };
@@ -1,2 +1,2 @@
1
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-etV38FoO.cjs";
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-BgwfJliB.cjs";
2
2
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -1,2 +1,2 @@
1
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-C5kKsbnD.js";
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-BEEk7osU.js";
2
2
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customafk/lunas-ui",
3
- "version": "0.0.89",
3
+ "version": "0.0.90",
4
4
  "description": "UI library for Lunas Enterprise",
5
5
  "type": "module",
6
6
  "author": {
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./skeleton-BC2E_ohw.cjs`);let n=require(`lucide-react`);n=e.__toESM(n);let r=require(`@customafk/react-toolkit/utils`);r=e.__toESM(r);let i=require(`react`);i=e.__toESM(i);let a=require(`react/jsx-runtime`);a=e.__toESM(a);const o=({src:e,alt:o,width:s,height:c,maxRetries:l=3,retryDelay:u=500,className:d,onClick:f})=>{let p=(0,i.useRef)(null),[m,h]=(0,i.useState)(e),[g,_]=(0,i.useState)(0),[v,y]=(0,i.useState)(!1),[b,x]=(0,i.useState)(!1),S=(0,i.useCallback)(()=>{y(!0)},[]),C=(0,i.useCallback)(()=>{if(g<l){x(!1);let t=g+1;_(t),setTimeout(()=>{let n=`?retry=${Date.now()}&attempt=${t}`;h(e+n)},u*t);return}x(!0),y(!0),h(e)},[l,g,u,e]);return b?(0,a.jsx)(`div`,{style:{width:s,height:c},className:(0,r.cn)(`@container relative inline-block`,d),children:(0,a.jsxs)(`div`,{className:`bg-danger-muted shadow-card flex size-full flex-col items-center justify-center gap-y-2 rounded-md`,children:[(0,a.jsx)(n.AlertCircleIcon,{className:`text-danger size-8 @max-[52px]:size-6`}),(0,a.jsx)(`span`,{className:`text-danger-weak text-center text-xs @max-[96px]:sr-only`,children:`Image failed to load`})]})}):(0,a.jsxs)(`div`,{style:{width:s,height:c},className:(0,r.cn)(`relative flex items-center justify-center overflow-hidden rounded-md`,d),onClick:f,children:[!v&&(0,a.jsx)(t.Skeleton,{className:`absolute inset-0 flex size-full animate-pulse items-center justify-center`}),(0,a.jsx)(`img`,{src:m,className:`absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60`}),(0,a.jsx)(`img`,{id:m,ref:p,src:m,alt:o,loading:`lazy`,className:(0,r.cn)(`shadow-card relative h-[120%] w-auto object-cover transition-opacity duration-300`,v&&`opacity-100`,!v&&`pointer-events-none opacity-0`),onLoad:S,onError:C})]})};Object.defineProperty(exports,`Image`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=image-C0mClPAY.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-C0mClPAY.cjs","names":["Image: React.FC<Props>","AlertCircleIcon","Skeleton"],"sources":["../packages/components/ui/image.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircleIcon } from 'lucide-react';\n\nimport { Skeleton } from './skeleton';\n\ntype Props = {\n src?: string;\n alt?: string;\n width?: number | string;\n height?: number | string;\n maxRetries?: number;\n retryDelay?: number;\n className?: string;\n onClick?: () => void;\n};\nexport const Image: React.FC<Props> = ({ src, alt, width, height, maxRetries = 3, retryDelay = 500, className, onClick }) => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [currentSrc, setCurrentSrc] = useState<string | undefined>(src);\n const [retryCount, setRetryCount] = useState<number>(0);\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [hasError, setHasError] = useState<boolean>(false);\n\n const handleLoad = useCallback(() => {\n setIsLoaded(true);\n }, []);\n\n const handleError = useCallback(() => {\n if (retryCount < maxRetries) {\n // imageRef.current?.style.setProperty('display', 'none')\n setHasError(false);\n const newRetryCount = retryCount + 1;\n setRetryCount(newRetryCount);\n\n // Retry with exponential backoff and cache busting\n setTimeout(() => {\n const cacheBuster = `?retry=${Date.now()}&attempt=${newRetryCount}`;\n setCurrentSrc(src + cacheBuster);\n }, retryDelay * newRetryCount);\n return;\n }\n\n setHasError(true);\n setIsLoaded(true);\n setCurrentSrc(src);\n }, [maxRetries, retryCount, retryDelay, src]);\n\n if (hasError) {\n return (\n <div style={{ width, height }} className={cn('@container relative inline-block', className)}>\n <div className=\"bg-danger-muted shadow-card flex size-full flex-col items-center justify-center gap-y-2 rounded-md\">\n <AlertCircleIcon className=\"text-danger size-8 @max-[52px]:size-6\" />\n <span className=\"text-danger-weak text-center text-xs @max-[96px]:sr-only\">Image failed to load</span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={{ width, height }} className={cn('relative flex items-center justify-center overflow-hidden rounded-md', className)} onClick={onClick}>\n {!isLoaded && <Skeleton className=\"absolute inset-0 flex size-full animate-pulse items-center justify-center\" />}\n <img src={currentSrc} className=\"absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60\" />\n <img\n id={currentSrc}\n ref={imageRef}\n src={currentSrc}\n alt={alt}\n loading=\"lazy\"\n className={cn(\n 'shadow-card relative h-[120%] w-auto object-cover transition-opacity duration-300',\n isLoaded && 'opacity-100',\n !isLoaded && 'pointer-events-none opacity-0'\n )}\n onLoad={handleLoad}\n onError={handleError}\n />\n </div>\n );\n};\n"],"mappings":"iRAiBA,MAAaA,GAA0B,CAAE,MAAK,MAAK,QAAO,SAAQ,aAAa,EAAG,aAAa,IAAK,YAAW,aAAc,CAC3H,IAAM,GAAA,EAAA,EAAA,QAAoC,KAAK,CACzC,CAAC,EAAY,IAAA,EAAA,EAAA,UAA8C,EAAI,CAC/D,CAAC,EAAY,IAAA,EAAA,EAAA,UAAkC,EAAE,CACjD,CAAC,EAAU,IAAA,EAAA,EAAA,UAAiC,GAAM,CAClD,CAAC,EAAU,IAAA,EAAA,EAAA,UAAiC,GAAM,CAElD,GAAA,EAAA,EAAA,iBAA+B,CACnC,EAAY,GAAK,EAChB,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,iBAAgC,CACpC,GAAI,EAAa,EAAY,CAE3B,EAAY,GAAM,CAClB,IAAM,EAAgB,EAAa,EACnC,EAAc,EAAc,CAG5B,eAAiB,CACf,IAAM,EAAc,UAAU,KAAK,KAAK,CAAC,WAAW,IACpD,EAAc,EAAM,EAAY,EAC/B,EAAa,EAAc,CAC9B,OAGF,EAAY,GAAK,CACjB,EAAY,GAAK,CACjB,EAAc,EAAI,EACjB,CAAC,EAAY,EAAY,EAAY,EAAI,CAAC,CAa7C,OAXI,GAEA,EAAA,EAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,WAAA,EAAA,EAAA,IAAc,mCAAoC,EAAU,WACzF,EAAA,EAAA,MAAC,MAAA,CAAI,UAAU,gHACb,EAAA,EAAA,KAACC,EAAAA,gBAAAA,CAAgB,UAAU,wCAAA,CAA0C,EACrE,EAAA,EAAA,KAAC,OAAA,CAAK,UAAU,oEAA2D,wBAA2B,CAAA,EAClG,EACF,EAKR,EAAA,EAAA,MAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,WAAA,EAAA,EAAA,IAAc,uEAAwE,EAAU,CAAW,oBACvI,CAAC,IAAY,EAAA,EAAA,KAACC,EAAAA,SAAAA,CAAS,UAAU,4EAAA,CAA8E,EAChH,EAAA,EAAA,KAAC,MAAA,CAAI,IAAK,EAAY,UAAU,+EAAgF,EAChH,EAAA,EAAA,KAAC,MAAA,CACC,GAAI,EACJ,IAAK,EACL,IAAK,EACA,MACL,QAAQ,OACR,WAAA,EAAA,EAAA,IACE,oFACA,GAAY,cACZ,CAAC,GAAY,gCACd,CACD,OAAQ,EACR,QAAS,GACT,GACE"}
@@ -1,2 +0,0 @@
1
- import{Skeleton as e}from"./skeleton-ByN-MrQO.js";import{AlertCircleIcon as t}from"lucide-react";import{cn as n}from"@customafk/react-toolkit/utils";import{useCallback as r,useRef as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=({src:c,alt:l,width:u,height:d,maxRetries:f=3,retryDelay:p=500,className:m,onClick:h})=>{let g=i(null),[_,v]=a(c),[y,b]=a(0),[x,S]=a(!1),[C,w]=a(!1),T=r(()=>{S(!0)},[]),E=r(()=>{if(y<f){w(!1);let e=y+1;b(e),setTimeout(()=>{let t=`?retry=${Date.now()}&attempt=${e}`;v(c+t)},p*e);return}w(!0),S(!0),v(c)},[f,y,p,c]);return C?o(`div`,{style:{width:u,height:d},className:n(`@container relative inline-block`,m),children:s(`div`,{className:`bg-danger-muted shadow-card flex size-full flex-col items-center justify-center gap-y-2 rounded-md`,children:[o(t,{className:`text-danger size-8 @max-[52px]:size-6`}),o(`span`,{className:`text-danger-weak text-center text-xs @max-[96px]:sr-only`,children:`Image failed to load`})]})}):s(`div`,{style:{width:u,height:d},className:n(`relative flex items-center justify-center overflow-hidden rounded-md`,m),onClick:h,children:[!x&&o(e,{className:`absolute inset-0 flex size-full animate-pulse items-center justify-center`}),o(`img`,{src:_,className:`absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60`}),o(`img`,{id:_,ref:g,src:_,alt:l,loading:`lazy`,className:n(`shadow-card relative h-[120%] w-auto object-cover transition-opacity duration-300`,x&&`opacity-100`,!x&&`pointer-events-none opacity-0`),onLoad:T,onError:E})]})};export{c as Image};
2
- //# sourceMappingURL=image-CiQhTTyt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-CiQhTTyt.js","names":["Image: React.FC<Props>"],"sources":["../packages/components/ui/image.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircleIcon } from 'lucide-react';\n\nimport { Skeleton } from './skeleton';\n\ntype Props = {\n src?: string;\n alt?: string;\n width?: number | string;\n height?: number | string;\n maxRetries?: number;\n retryDelay?: number;\n className?: string;\n onClick?: () => void;\n};\nexport const Image: React.FC<Props> = ({ src, alt, width, height, maxRetries = 3, retryDelay = 500, className, onClick }) => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [currentSrc, setCurrentSrc] = useState<string | undefined>(src);\n const [retryCount, setRetryCount] = useState<number>(0);\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [hasError, setHasError] = useState<boolean>(false);\n\n const handleLoad = useCallback(() => {\n setIsLoaded(true);\n }, []);\n\n const handleError = useCallback(() => {\n if (retryCount < maxRetries) {\n // imageRef.current?.style.setProperty('display', 'none')\n setHasError(false);\n const newRetryCount = retryCount + 1;\n setRetryCount(newRetryCount);\n\n // Retry with exponential backoff and cache busting\n setTimeout(() => {\n const cacheBuster = `?retry=${Date.now()}&attempt=${newRetryCount}`;\n setCurrentSrc(src + cacheBuster);\n }, retryDelay * newRetryCount);\n return;\n }\n\n setHasError(true);\n setIsLoaded(true);\n setCurrentSrc(src);\n }, [maxRetries, retryCount, retryDelay, src]);\n\n if (hasError) {\n return (\n <div style={{ width, height }} className={cn('@container relative inline-block', className)}>\n <div className=\"bg-danger-muted shadow-card flex size-full flex-col items-center justify-center gap-y-2 rounded-md\">\n <AlertCircleIcon className=\"text-danger size-8 @max-[52px]:size-6\" />\n <span className=\"text-danger-weak text-center text-xs @max-[96px]:sr-only\">Image failed to load</span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={{ width, height }} className={cn('relative flex items-center justify-center overflow-hidden rounded-md', className)} onClick={onClick}>\n {!isLoaded && <Skeleton className=\"absolute inset-0 flex size-full animate-pulse items-center justify-center\" />}\n <img src={currentSrc} className=\"absolute inset-0 z-0 size-full scale-110 object-cover blur-xl brightness-60\" />\n <img\n id={currentSrc}\n ref={imageRef}\n src={currentSrc}\n alt={alt}\n loading=\"lazy\"\n className={cn(\n 'shadow-card relative h-[120%] w-auto object-cover transition-opacity duration-300',\n isLoaded && 'opacity-100',\n !isLoaded && 'pointer-events-none opacity-0'\n )}\n onLoad={handleLoad}\n onError={handleError}\n />\n </div>\n );\n};\n"],"mappings":"qQAiBA,MAAaA,GAA0B,CAAE,MAAK,MAAK,QAAO,SAAQ,aAAa,EAAG,aAAa,IAAK,YAAW,aAAc,CAC3H,IAAM,EAAW,EAAyB,KAAK,CACzC,CAAC,EAAY,GAAiB,EAA6B,EAAI,CAC/D,CAAC,EAAY,GAAiB,EAAiB,EAAE,CACjD,CAAC,EAAU,GAAe,EAAkB,GAAM,CAClD,CAAC,EAAU,GAAe,EAAkB,GAAM,CAElD,EAAa,MAAkB,CACnC,EAAY,GAAK,EAChB,EAAE,CAAC,CAEA,EAAc,MAAkB,CACpC,GAAI,EAAa,EAAY,CAE3B,EAAY,GAAM,CAClB,IAAM,EAAgB,EAAa,EACnC,EAAc,EAAc,CAG5B,eAAiB,CACf,IAAM,EAAc,UAAU,KAAK,KAAK,CAAC,WAAW,IACpD,EAAc,EAAM,EAAY,EAC/B,EAAa,EAAc,CAC9B,OAGF,EAAY,GAAK,CACjB,EAAY,GAAK,CACjB,EAAc,EAAI,EACjB,CAAC,EAAY,EAAY,EAAY,EAAI,CAAC,CAa7C,OAXI,EAEA,EAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,UAAW,EAAG,mCAAoC,EAAU,UACzF,EAAC,MAAA,CAAI,UAAU,+GACb,EAAC,EAAA,CAAgB,UAAU,wCAAA,CAA0C,CACrE,EAAC,OAAA,CAAK,UAAU,oEAA2D,wBAA2B,CAAA,EAClG,EACF,CAKR,EAAC,MAAA,CAAI,MAAO,CAAE,QAAO,SAAQ,CAAE,UAAW,EAAG,uEAAwE,EAAU,CAAW,oBACvI,CAAC,GAAY,EAAC,EAAA,CAAS,UAAU,4EAAA,CAA8E,CAChH,EAAC,MAAA,CAAI,IAAK,EAAY,UAAU,+EAAgF,CAChH,EAAC,MAAA,CACC,GAAI,EACJ,IAAK,EACL,IAAK,EACA,MACL,QAAQ,OACR,UAAW,EACT,oFACA,GAAY,cACZ,CAAC,GAAY,gCACd,CACD,OAAQ,EACR,QAAS,GACT,GACE"}
@@ -1,11 +0,0 @@
1
- import * as react_jsx_runtime100 from "react/jsx-runtime";
2
- import { Label } from "radix-ui";
3
-
4
- //#region packages/components/ui/label.d.ts
5
- declare function Label$1({
6
- className,
7
- ...props
8
- }: React.ComponentProps<typeof Label.Root>): react_jsx_runtime100.JSX.Element;
9
- //#endregion
10
- export { Label$1 as Label };
11
- //# sourceMappingURL=label-BaRuPui8.d.cts.map