asterui 0.12.13 → 0.12.14

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 (177) hide show
  1. package/dist/components/Button.d.ts +4 -0
  2. package/dist/components/Drawer.d.ts +47 -6
  3. package/dist/components/Dropdown.d.ts +65 -9
  4. package/dist/components/Input.d.ts +15 -1
  5. package/dist/components/Modal.d.ts +5 -1
  6. package/dist/components/Navbar.d.ts +15 -1
  7. package/dist/components/SidebarDrawer.d.ts +21 -0
  8. package/dist/components/Tabs.d.ts +30 -4
  9. package/dist/index.d.ts +6 -4
  10. package/dist/index.js +169 -167
  11. package/dist/index.js.map +1 -1
  12. package/dist/index100.js +44 -11
  13. package/dist/index100.js.map +1 -1
  14. package/dist/index101.js +10 -12
  15. package/dist/index101.js.map +1 -1
  16. package/dist/index102.js +14 -7
  17. package/dist/index102.js.map +1 -1
  18. package/dist/index103.js +7 -12
  19. package/dist/index103.js.map +1 -1
  20. package/dist/index104.js +11 -29
  21. package/dist/index104.js.map +1 -1
  22. package/dist/index105.js +29 -16
  23. package/dist/index105.js.map +1 -1
  24. package/dist/index106.js +21 -0
  25. package/dist/index106.js.map +1 -0
  26. package/dist/index21.js +1 -1
  27. package/dist/index26.js +171 -40
  28. package/dist/index26.js.map +1 -1
  29. package/dist/index27.js +41 -17
  30. package/dist/index27.js.map +1 -1
  31. package/dist/index28.js +17 -33
  32. package/dist/index28.js.map +1 -1
  33. package/dist/index29.js +33 -52
  34. package/dist/index29.js.map +1 -1
  35. package/dist/index30.js +50 -61
  36. package/dist/index30.js.map +1 -1
  37. package/dist/index31.js +60 -181
  38. package/dist/index31.js.map +1 -1
  39. package/dist/index32.js +184 -18
  40. package/dist/index32.js.map +1 -1
  41. package/dist/index33.js +15 -217
  42. package/dist/index33.js.map +1 -1
  43. package/dist/index34.js +216 -1083
  44. package/dist/index34.js.map +1 -1
  45. package/dist/index35.js +1086 -16
  46. package/dist/index35.js.map +1 -1
  47. package/dist/index36.js +16 -121
  48. package/dist/index36.js.map +1 -1
  49. package/dist/index37.js +119 -37
  50. package/dist/index37.js.map +1 -1
  51. package/dist/index38.js +34 -208
  52. package/dist/index38.js.map +1 -1
  53. package/dist/index39.js +390 -89
  54. package/dist/index39.js.map +1 -1
  55. package/dist/index40.js +93 -158
  56. package/dist/index40.js.map +1 -1
  57. package/dist/index41.js +211 -135
  58. package/dist/index41.js.map +1 -1
  59. package/dist/index42.js +146 -15
  60. package/dist/index42.js.map +1 -1
  61. package/dist/index43.js +15 -17
  62. package/dist/index43.js.map +1 -1
  63. package/dist/index44.js +17 -21
  64. package/dist/index44.js.map +1 -1
  65. package/dist/index45.js +18 -134
  66. package/dist/index45.js.map +1 -1
  67. package/dist/index46.js +134 -10
  68. package/dist/index46.js.map +1 -1
  69. package/dist/index47.js +13 -35
  70. package/dist/index47.js.map +1 -1
  71. package/dist/index48.js +35 -34
  72. package/dist/index48.js.map +1 -1
  73. package/dist/index49.js +34 -81
  74. package/dist/index49.js.map +1 -1
  75. package/dist/index50.js +71 -166
  76. package/dist/index50.js.map +1 -1
  77. package/dist/index51.js +167 -144
  78. package/dist/index51.js.map +1 -1
  79. package/dist/index52.js +152 -11
  80. package/dist/index52.js.map +1 -1
  81. package/dist/index53.js +10 -20
  82. package/dist/index53.js.map +1 -1
  83. package/dist/index54.js +22 -14
  84. package/dist/index54.js.map +1 -1
  85. package/dist/index55.js +14 -7
  86. package/dist/index55.js.map +1 -1
  87. package/dist/index56.js +6 -310
  88. package/dist/index56.js.map +1 -1
  89. package/dist/index57.js +334 -17
  90. package/dist/index57.js.map +1 -1
  91. package/dist/index58.js +47 -122
  92. package/dist/index58.js.map +1 -1
  93. package/dist/index59.js +120 -108
  94. package/dist/index59.js.map +1 -1
  95. package/dist/index60.js +107 -167
  96. package/dist/index60.js.map +1 -1
  97. package/dist/index61.js +167 -29
  98. package/dist/index61.js.map +1 -1
  99. package/dist/index62.js +30 -120
  100. package/dist/index62.js.map +1 -1
  101. package/dist/index63.js +116 -80
  102. package/dist/index63.js.map +1 -1
  103. package/dist/index64.js +85 -19
  104. package/dist/index64.js.map +1 -1
  105. package/dist/index65.js +19 -73
  106. package/dist/index65.js.map +1 -1
  107. package/dist/index66.js +71 -54
  108. package/dist/index66.js.map +1 -1
  109. package/dist/index67.js +56 -44
  110. package/dist/index67.js.map +1 -1
  111. package/dist/index68.js +42 -49
  112. package/dist/index68.js.map +1 -1
  113. package/dist/index69.js +52 -62
  114. package/dist/index69.js.map +1 -1
  115. package/dist/index70.js +56 -101
  116. package/dist/index70.js.map +1 -1
  117. package/dist/index71.js +107 -41
  118. package/dist/index71.js.map +1 -1
  119. package/dist/index72.js +41 -68
  120. package/dist/index72.js.map +1 -1
  121. package/dist/index73.js +66 -19
  122. package/dist/index73.js.map +1 -1
  123. package/dist/index74.js +18 -55
  124. package/dist/index74.js.map +1 -1
  125. package/dist/index75.js +55 -251
  126. package/dist/index75.js.map +1 -1
  127. package/dist/index76.js +254 -22
  128. package/dist/index76.js.map +1 -1
  129. package/dist/index77.js +22 -31
  130. package/dist/index77.js.map +1 -1
  131. package/dist/index78.js +30 -93
  132. package/dist/index78.js.map +1 -1
  133. package/dist/index79.js +89 -324
  134. package/dist/index79.js.map +1 -1
  135. package/dist/index80.js +323 -50
  136. package/dist/index80.js.map +1 -1
  137. package/dist/index81.js +79 -39
  138. package/dist/index81.js.map +1 -1
  139. package/dist/index82.js +40 -23
  140. package/dist/index82.js.map +1 -1
  141. package/dist/index83.js +21 -93
  142. package/dist/index83.js.map +1 -1
  143. package/dist/index84.js +87 -148
  144. package/dist/index84.js.map +1 -1
  145. package/dist/index85.js +147 -152
  146. package/dist/index85.js.map +1 -1
  147. package/dist/index86.js +159 -63
  148. package/dist/index86.js.map +1 -1
  149. package/dist/index87.js +65 -35
  150. package/dist/index87.js.map +1 -1
  151. package/dist/index88.js +35 -234
  152. package/dist/index88.js.map +1 -1
  153. package/dist/index89.js +231 -31
  154. package/dist/index89.js.map +1 -1
  155. package/dist/index9.js +69 -44
  156. package/dist/index9.js.map +1 -1
  157. package/dist/index90.js +34 -210
  158. package/dist/index90.js.map +1 -1
  159. package/dist/index91.js +195 -198
  160. package/dist/index91.js.map +1 -1
  161. package/dist/index92.js +159 -241
  162. package/dist/index92.js.map +1 -1
  163. package/dist/index93.js +283 -166
  164. package/dist/index93.js.map +1 -1
  165. package/dist/index94.js +173 -253
  166. package/dist/index94.js.map +1 -1
  167. package/dist/index95.js +258 -14
  168. package/dist/index95.js.map +1 -1
  169. package/dist/index96.js +12 -31
  170. package/dist/index96.js.map +1 -1
  171. package/dist/index97.js +32 -5
  172. package/dist/index97.js.map +1 -1
  173. package/dist/index98.js +5 -13
  174. package/dist/index98.js.map +1 -1
  175. package/dist/index99.js +11 -43
  176. package/dist/index99.js.map +1 -1
  177. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index63.js","sources":["../src/components/Popover.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\n\nexport type PopoverPlacement =\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n\nexport type PopoverTrigger = 'hover' | 'click' | 'focus'\n\nexport interface PopoverProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'title'> {\n children: React.ReactNode\n content: React.ReactNode\n title?: React.ReactNode\n trigger?: PopoverTrigger\n placement?: PopoverPlacement\n open?: boolean\n onOpenChange?: (open: boolean) => void\n overlayClassName?: string\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n content,\n title,\n trigger = 'hover',\n placement = 'top',\n open: controlledOpen,\n onOpenChange,\n className = '',\n overlayClassName = '',\n ...rest\n}) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const triggerRef = useRef<HTMLDivElement>(null)\n const popoverRef = useRef<HTMLDivElement>(null)\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined)\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n\n const setOpen = (value: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n }\n\n const handleMouseEnter = () => {\n if (trigger === 'hover') {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n setOpen(true)\n }\n }\n\n const handleMouseLeave = () => {\n if (trigger === 'hover') {\n timeoutRef.current = setTimeout(() => setOpen(false), 100)\n }\n }\n\n const handleClick = () => {\n if (trigger === 'click') {\n setOpen(!isOpen)\n }\n }\n\n const handleFocus = () => {\n if (trigger === 'focus') {\n setOpen(true)\n }\n }\n\n const handleBlur = () => {\n if (trigger === 'focus') {\n setOpen(false)\n }\n }\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n trigger === 'click' &&\n isOpen &&\n triggerRef.current &&\n popoverRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n setOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [trigger, isOpen])\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n }\n }, [])\n\n const getPlacementClasses = () => {\n const baseClasses = 'absolute z-50'\n\n const placements: Record<PopoverPlacement, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n topLeft: 'bottom-full left-0 mb-2',\n topRight: 'bottom-full right-0 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n bottomLeft: 'top-full left-0 mt-2',\n bottomRight: 'top-full right-0 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n leftTop: 'right-full top-0 mr-2',\n leftBottom: 'right-full bottom-0 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n rightTop: 'left-full top-0 ml-2',\n rightBottom: 'left-full bottom-0 ml-2',\n }\n\n return `${baseClasses} ${placements[placement]}`\n }\n\n return (\n <div className={`relative inline-block ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <div\n ref={triggerRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n </div>\n\n {isOpen && (\n <div\n ref={popoverRef}\n className={getPlacementClasses()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div\n className={`bg-base-100 border border-base-content/10 rounded-lg shadow-lg p-3 min-w-[200px] max-w-xs ${overlayClassName}`}\n >\n {title && (\n <div className=\"font-semibold mb-2 text-base-content border-b border-base-content/10 pb-2\">\n {title}\n </div>\n )}\n <div className=\"text-sm text-base-content/80\">{content}</div>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nPopover.displayName = 'Popover'\n\nexport default Popover\n"],"names":["Popover","children","content","title","trigger","placement","controlledOpen","onOpenChange","className","overlayClassName","rest","internalOpen","setInternalOpen","useState","triggerRef","useRef","popoverRef","timeoutRef","isOpen","setOpen","value","handleMouseEnter","handleMouseLeave","handleClick","handleFocus","handleBlur","useEffect","handleClickOutside","event","getPlacementClasses","jsxs","jsx"],"mappings":";;AA6BO,MAAMA,IAAkC,CAAC;AAAA,EAC9C,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,kBAAAC,IAAmB;AAAA,EACnB,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChDC,IAAaC,EAAuB,IAAI,GACxCC,IAAaD,EAAuB,IAAI,GACxCE,IAAaF,EAAmC,MAAS,GAEzDG,IAASZ,MAAmB,SAAYA,IAAiBK,GAEzDQ,IAAU,CAACC,MAAmB;AAClC,IAAId,MAAmB,UACrBM,EAAgBQ,CAAK,GAEvBb,IAAea,CAAK;AAAA,EACtB,GAEMC,IAAmB,MAAM;AAC7B,IAAIjB,MAAY,YACVa,EAAW,WAAS,aAAaA,EAAW,OAAO,GACvDE,EAAQ,EAAI;AAAA,EAEhB,GAEMG,IAAmB,MAAM;AAC7B,IAAIlB,MAAY,YACda,EAAW,UAAU,WAAW,MAAME,EAAQ,EAAK,GAAG,GAAG;AAAA,EAE7D,GAEMI,IAAc,MAAM;AACxB,IAAInB,MAAY,WACde,EAAQ,CAACD,CAAM;AAAA,EAEnB,GAEMM,IAAc,MAAM;AACxB,IAAIpB,MAAY,WACde,EAAQ,EAAI;AAAA,EAEhB,GAEMM,IAAa,MAAM;AACvB,IAAIrB,MAAY,WACde,EAAQ,EAAK;AAAA,EAEjB;AAEA,EAAAO,EAAU,MAAM;AACd,UAAMC,IAAqB,CAACC,MAAsB;AAChD,MACExB,MAAY,WACZc,KACAJ,EAAW,WACXE,EAAW,WACX,CAACF,EAAW,QAAQ,SAASc,EAAM,MAAc,KACjD,CAACZ,EAAW,QAAQ,SAASY,EAAM,MAAc,KAEjDT,EAAQ,EAAK;AAAA,IAEjB;AAEA,oBAAS,iBAAiB,aAAaQ,CAAkB,GAClD,MAAM,SAAS,oBAAoB,aAAaA,CAAkB;AAAA,EAC3E,GAAG,CAACvB,GAASc,CAAM,CAAC,GAEpBQ,EAAU,MACD,MAAM;AACX,IAAIT,EAAW,WAAS,aAAaA,EAAW,OAAO;AAAA,EACzD,GACC,CAAA,CAAE;AAEL,QAAMY,IAAsB,MAkBnB,iBAf8C;AAAA,IACnD,KAAK;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,EAAA,EAGqBxB,CAAS,CAAC;AAGhD,SACE,gBAAAyB,EAAC,OAAA,EAAI,WAAW,yBAAyBtB,CAAS,IAAI,cAAYU,IAAS,SAAS,UAAW,GAAGR,GAChG,UAAA;AAAA,IAAA,gBAAAqB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKjB;AAAA,QACL,cAAcO;AAAA,QACd,cAAcC;AAAA,QACd,SAASC;AAAA,QACT,SAASC;AAAA,QACT,QAAQC;AAAA,QAEP,UAAAxB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFiB,KACC,gBAAAa;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKf;AAAA,QACL,WAAWa,EAAA;AAAA,QACX,cAAcR;AAAA,QACd,cAAcC;AAAA,QAEd,UAAA,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,6FAA6FrB,CAAgB;AAAA,YAEvH,UAAA;AAAA,cAAAN,KACC,gBAAA4B,EAAC,OAAA,EAAI,WAAU,6EACZ,UAAA5B,GACH;AAAA,cAEF,gBAAA4B,EAAC,OAAA,EAAI,WAAU,gCAAgC,UAAA7B,EAAA,CAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACzD;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ;AAEAF,EAAQ,cAAc;"}
1
+ {"version":3,"file":"index63.js","sources":["../src/components/Popconfirm.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\n\nexport interface PopconfirmProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children: React.ReactElement\n title: React.ReactNode\n description?: React.ReactNode\n onConfirm?: () => void | Promise<void>\n onCancel?: () => void\n okText?: string\n cancelText?: string\n okType?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'error' | 'info'\n cancelType?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'error' | 'info' | 'ghost'\n placement?: 'top' | 'bottom' | 'left' | 'right'\n disabled?: boolean\n icon?: React.ReactNode\n showCancel?: boolean\n}\n\nexport const Popconfirm: React.FC<PopconfirmProps> = ({\n children,\n title,\n description,\n onConfirm,\n onCancel,\n okText = 'OK',\n cancelText = 'Cancel',\n okType = 'primary',\n cancelType = 'ghost',\n placement = 'top',\n disabled = false,\n icon,\n showCancel = true,\n className,\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n const [loading, setLoading] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n const popupRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n popupRef.current &&\n !popupRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleTriggerClick = (e: React.MouseEvent) => {\n if (disabled) return\n e.stopPropagation()\n setIsOpen(!isOpen)\n }\n\n const handleConfirm = async () => {\n if (onConfirm) {\n setLoading(true)\n try {\n await onConfirm()\n setIsOpen(false)\n } finally {\n setLoading(false)\n }\n } else {\n setIsOpen(false)\n }\n }\n\n const handleCancel = () => {\n onCancel?.()\n setIsOpen(false)\n }\n\n const getPopupContainerClasses = () => {\n const positions = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-3',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-3',\n left: 'right-full top-1/2 -translate-y-1/2 mr-3',\n right: 'left-full top-1/2 -translate-y-1/2 ml-3',\n }\n\n return `absolute z-50 ${positions[placement]}`\n }\n\n const getPopupClasses = () => {\n return 'bg-base-100 rounded-lg p-4 min-w-[200px] max-w-[300px] shadow-lg'\n }\n\n const getArrowClasses = () => {\n const base = 'absolute w-2.5 h-2.5 bg-base-100 rotate-45 shadow-lg'\n\n const positions = {\n top: 'bottom-[-5px] left-1/2 -translate-x-1/2',\n bottom: 'top-[-5px] left-1/2 -translate-x-1/2',\n left: 'right-[-5px] top-1/2 -translate-y-1/2',\n right: 'left-[-5px] top-1/2 -translate-y-1/2',\n }\n\n return `${base} ${positions[placement]}`\n }\n\n const buttonClasses = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n info: 'btn-info',\n ghost: 'btn-ghost',\n } as const\n\n const getButtonClass = (type: keyof typeof buttonClasses) => {\n return buttonClasses[type]\n }\n\n const defaultIcon = (\n <svg\n className=\"w-5 h-5 text-warning\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n )\n\n return (\n <div ref={containerRef} className={`relative inline-block ${className || ''}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n {React.cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n handleTriggerClick(e)\n const originalOnClick = (children.props as any)?.onClick\n if (originalOnClick) {\n originalOnClick(e)\n }\n },\n } as any)}\n\n {isOpen && (\n <div className={getPopupContainerClasses()}>\n <div ref={popupRef} className={getPopupClasses()}>\n <div className=\"flex gap-3 relative z-10\">\n <div className=\"flex-shrink-0 mt-0.5\">\n {icon !== undefined ? icon : defaultIcon}\n </div>\n <div className=\"flex-1\">\n <div className=\"font-semibold text-base-content mb-1\">{title}</div>\n {description && (\n <div className=\"text-sm text-base-content/70 mb-3\">{description}</div>\n )}\n <div className=\"flex justify-end gap-2 mt-3\">\n {showCancel && (\n <button\n className={`btn btn-sm ${getButtonClass(cancelType)}`}\n onClick={handleCancel}\n disabled={loading}\n >\n {cancelText}\n </button>\n )}\n <button\n className={`btn btn-sm ${getButtonClass(okType)}`}\n onClick={handleConfirm}\n disabled={loading}\n >\n {loading && <span className=\"loading loading-spinner loading-xs\"></span>}\n {okText}\n </button>\n </div>\n </div>\n </div>\n <div className={getArrowClasses()} />\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["Popconfirm","children","title","description","onConfirm","onCancel","okText","cancelText","okType","cancelType","placement","disabled","icon","showCancel","className","rest","isOpen","setIsOpen","useState","loading","setLoading","containerRef","useRef","popupRef","useEffect","handleClickOutside","event","handleTriggerClick","e","handleConfirm","handleCancel","getPopupContainerClasses","getPopupClasses","getArrowClasses","buttonClasses","getButtonClass","type","defaultIcon","jsx","jsxs","React","originalOnClick"],"mappings":"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"}
package/dist/index64.js CHANGED
@@ -1,23 +1,89 @@
1
- import { jsx as c } from "react/jsx-runtime";
2
- const p = {
3
- neutral: "progress-neutral",
4
- primary: "progress-primary",
5
- secondary: "progress-secondary",
6
- accent: "progress-accent",
7
- info: "progress-info",
8
- success: "progress-success",
9
- warning: "progress-warning",
10
- error: "progress-error"
1
+ import { jsxs as p, jsx as l } from "react/jsx-runtime";
2
+ import { useState as B, useRef as f, useEffect as b } from "react";
3
+ const $ = ({
4
+ children: h,
5
+ content: v,
6
+ title: i,
7
+ trigger: t = "hover",
8
+ placement: x = "top",
9
+ open: r,
10
+ onOpenChange: L,
11
+ className: g = "",
12
+ overlayClassName: k = "",
13
+ ...C
14
+ }) => {
15
+ const [E, M] = B(!1), a = f(null), c = f(null), n = f(void 0), s = r !== void 0 ? r : E, e = (o) => {
16
+ r === void 0 && M(o), L?.(o);
17
+ }, m = () => {
18
+ t === "hover" && (n.current && clearTimeout(n.current), e(!0));
19
+ }, d = () => {
20
+ t === "hover" && (n.current = setTimeout(() => e(!1), 100));
21
+ }, N = () => {
22
+ t === "click" && e(!s);
23
+ }, R = () => {
24
+ t === "focus" && e(!0);
25
+ }, w = () => {
26
+ t === "focus" && e(!1);
27
+ };
28
+ b(() => {
29
+ const o = (u) => {
30
+ t === "click" && s && a.current && c.current && !a.current.contains(u.target) && !c.current.contains(u.target) && e(!1);
31
+ };
32
+ return document.addEventListener("mousedown", o), () => document.removeEventListener("mousedown", o);
33
+ }, [t, s]), b(() => () => {
34
+ n.current && clearTimeout(n.current);
35
+ }, []);
36
+ const T = () => `absolute z-50 ${{
37
+ top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
38
+ topLeft: "bottom-full left-0 mb-2",
39
+ topRight: "bottom-full right-0 mb-2",
40
+ bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
41
+ bottomLeft: "top-full left-0 mt-2",
42
+ bottomRight: "top-full right-0 mt-2",
43
+ left: "right-full top-1/2 -translate-y-1/2 mr-2",
44
+ leftTop: "right-full top-0 mr-2",
45
+ leftBottom: "right-full bottom-0 mr-2",
46
+ right: "left-full top-1/2 -translate-y-1/2 ml-2",
47
+ rightTop: "left-full top-0 ml-2",
48
+ rightBottom: "left-full bottom-0 ml-2"
49
+ }[x]}`;
50
+ return /* @__PURE__ */ p("div", { className: `relative inline-block ${g}`, "data-state": s ? "open" : "closed", ...C, children: [
51
+ /* @__PURE__ */ l(
52
+ "div",
53
+ {
54
+ ref: a,
55
+ onMouseEnter: m,
56
+ onMouseLeave: d,
57
+ onClick: N,
58
+ onFocus: R,
59
+ onBlur: w,
60
+ children: h
61
+ }
62
+ ),
63
+ s && /* @__PURE__ */ l(
64
+ "div",
65
+ {
66
+ ref: c,
67
+ className: T(),
68
+ onMouseEnter: m,
69
+ onMouseLeave: d,
70
+ children: /* @__PURE__ */ p(
71
+ "div",
72
+ {
73
+ className: `bg-base-100 border border-base-content/10 rounded-lg shadow-lg p-3 min-w-[200px] max-w-xs ${k}`,
74
+ children: [
75
+ i && /* @__PURE__ */ l("div", { className: "font-semibold mb-2 text-base-content border-b border-base-content/10 pb-2", children: i }),
76
+ /* @__PURE__ */ l("div", { className: "text-sm text-base-content/80", children: v })
77
+ ]
78
+ }
79
+ )
80
+ }
81
+ )
82
+ ] });
11
83
  };
12
- function t({ value: s, max: e = 100, type: r, className: o = "", ...n }) {
13
- const a = [
14
- "progress",
15
- r && p[r],
16
- o
17
- ].filter(Boolean).join(" ");
18
- return /* @__PURE__ */ c("progress", { className: a, value: s, max: e, ...n });
19
- }
84
+ $.displayName = "Popover";
20
85
  export {
21
- t as Progress
86
+ $ as Popover,
87
+ $ as default
22
88
  };
23
89
  //# sourceMappingURL=index64.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index64.js","sources":["../src/components/Progress.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface ProgressProps extends React.ProgressHTMLAttributes<HTMLProgressElement> {\n type?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n}\n\nconst typeClasses = {\n neutral: 'progress-neutral',\n primary: 'progress-primary',\n secondary: 'progress-secondary',\n accent: 'progress-accent',\n info: 'progress-info',\n success: 'progress-success',\n warning: 'progress-warning',\n error: 'progress-error',\n} as const\n\nexport function Progress({ value, max = 100, type, className = '', ...rest }: ProgressProps) {\n const classes = [\n 'progress',\n type && typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <progress className={classes} value={value} max={max} {...rest} />\n}\n"],"names":["typeClasses","Progress","value","max","type","className","rest","classes"],"mappings":";AAMA,MAAMA,IAAc;AAAA,EAClB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEO,SAASC,EAAS,EAAE,OAAAC,GAAO,KAAAC,IAAM,KAAK,MAAAC,GAAM,WAAAC,IAAY,IAAI,GAAGC,KAAuB;AAC3F,QAAMC,IAAU;AAAA,IACd;AAAA,IACAH,KAAQJ,EAAYI,CAAI;AAAA,IACxBC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,YAAA,EAAS,WAAWE,GAAS,OAAAL,GAAc,KAAAC,GAAW,GAAGG,GAAM;AACzE;"}
1
+ {"version":3,"file":"index64.js","sources":["../src/components/Popover.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\n\nexport type PopoverPlacement =\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n\nexport type PopoverTrigger = 'hover' | 'click' | 'focus'\n\nexport interface PopoverProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'title'> {\n children: React.ReactNode\n content: React.ReactNode\n title?: React.ReactNode\n trigger?: PopoverTrigger\n placement?: PopoverPlacement\n open?: boolean\n onOpenChange?: (open: boolean) => void\n overlayClassName?: string\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n content,\n title,\n trigger = 'hover',\n placement = 'top',\n open: controlledOpen,\n onOpenChange,\n className = '',\n overlayClassName = '',\n ...rest\n}) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const triggerRef = useRef<HTMLDivElement>(null)\n const popoverRef = useRef<HTMLDivElement>(null)\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined)\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n\n const setOpen = (value: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n }\n\n const handleMouseEnter = () => {\n if (trigger === 'hover') {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n setOpen(true)\n }\n }\n\n const handleMouseLeave = () => {\n if (trigger === 'hover') {\n timeoutRef.current = setTimeout(() => setOpen(false), 100)\n }\n }\n\n const handleClick = () => {\n if (trigger === 'click') {\n setOpen(!isOpen)\n }\n }\n\n const handleFocus = () => {\n if (trigger === 'focus') {\n setOpen(true)\n }\n }\n\n const handleBlur = () => {\n if (trigger === 'focus') {\n setOpen(false)\n }\n }\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n trigger === 'click' &&\n isOpen &&\n triggerRef.current &&\n popoverRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n setOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [trigger, isOpen])\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n }\n }, [])\n\n const getPlacementClasses = () => {\n const baseClasses = 'absolute z-50'\n\n const placements: Record<PopoverPlacement, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n topLeft: 'bottom-full left-0 mb-2',\n topRight: 'bottom-full right-0 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n bottomLeft: 'top-full left-0 mt-2',\n bottomRight: 'top-full right-0 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n leftTop: 'right-full top-0 mr-2',\n leftBottom: 'right-full bottom-0 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n rightTop: 'left-full top-0 ml-2',\n rightBottom: 'left-full bottom-0 ml-2',\n }\n\n return `${baseClasses} ${placements[placement]}`\n }\n\n return (\n <div className={`relative inline-block ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <div\n ref={triggerRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n </div>\n\n {isOpen && (\n <div\n ref={popoverRef}\n className={getPlacementClasses()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div\n className={`bg-base-100 border border-base-content/10 rounded-lg shadow-lg p-3 min-w-[200px] max-w-xs ${overlayClassName}`}\n >\n {title && (\n <div className=\"font-semibold mb-2 text-base-content border-b border-base-content/10 pb-2\">\n {title}\n </div>\n )}\n <div className=\"text-sm text-base-content/80\">{content}</div>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nPopover.displayName = 'Popover'\n\nexport default Popover\n"],"names":["Popover","children","content","title","trigger","placement","controlledOpen","onOpenChange","className","overlayClassName","rest","internalOpen","setInternalOpen","useState","triggerRef","useRef","popoverRef","timeoutRef","isOpen","setOpen","value","handleMouseEnter","handleMouseLeave","handleClick","handleFocus","handleBlur","useEffect","handleClickOutside","event","getPlacementClasses","jsxs","jsx"],"mappings":"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"}
package/dist/index65.js CHANGED
@@ -1,77 +1,23 @@
1
- import { jsx as e, jsxs as y } from "react/jsx-runtime";
2
- import { useRef as Q, useState as j, useEffect as R } from "react";
3
- import F from "qrcode";
4
- const k = ({
5
- value: m,
6
- size: a = 160,
7
- errorLevel: v = "M",
8
- icon: f,
9
- iconSize: t = 40,
10
- type: h = "canvas",
11
- color: x = "#000000",
12
- bgColor: g = "#FFFFFF",
13
- bordered: l = !0,
14
- status: n = "active",
15
- onRefresh: p,
16
- className: C = "",
17
- ...c
18
- }) => {
19
- const s = Q(null), [w, i] = j(n === "loading");
20
- R(() => {
21
- i(n === "loading");
22
- }, [n]), R(() => {
23
- if (n !== "active" || !m) return;
24
- (async () => {
25
- try {
26
- if (i(!0), h === "canvas" && s.current && (await F.toCanvas(s.current, m, {
27
- width: a,
28
- margin: 1,
29
- color: {
30
- dark: x,
31
- light: g
32
- },
33
- errorCorrectionLevel: v
34
- }), f)) {
35
- const o = s.current.getContext("2d");
36
- if (o) {
37
- const d = new Image();
38
- d.crossOrigin = "anonymous", d.onload = () => {
39
- const u = (a - t) / 2, b = (a - t) / 2;
40
- o.fillStyle = g, o.fillRect(u - 4, b - 4, t + 8, t + 8), o.drawImage(d, u, b, t, t);
41
- }, d.src = f;
42
- }
43
- }
44
- i(!1);
45
- } catch (N) {
46
- console.error("QR Code generation error:", N), i(!1);
47
- }
48
- })();
49
- }, [m, a, v, f, t, h, x, g, n]);
50
- const r = [
51
- "inline-flex items-center justify-center",
52
- l && "border border-base-content/20 p-3",
53
- "bg-base-100",
54
- C
55
- ].filter(Boolean).join(" ");
56
- return n === "loading" || w ? /* @__PURE__ */ e("div", { className: r, style: { width: a + (l ? 24 : 0), height: a + (l ? 24 : 0) }, "data-state": "loading", ...c, children: /* @__PURE__ */ y("div", { className: "flex flex-col items-center justify-center gap-2", children: [
57
- /* @__PURE__ */ e("span", { className: "loading loading-spinner loading-lg" }),
58
- /* @__PURE__ */ e("span", { className: "text-sm text-base-content/70", children: "Loading..." })
59
- ] }) }) : n === "expired" ? /* @__PURE__ */ e("div", { className: r, style: { width: a + (l ? 24 : 0), height: a + (l ? 24 : 0) }, "data-state": "expired", ...c, children: /* @__PURE__ */ y("div", { className: "flex flex-col items-center justify-center gap-2", children: [
60
- /* @__PURE__ */ e("svg", { className: "w-12 h-12 text-base-content/30", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ e(
61
- "path",
62
- {
63
- fillRule: "evenodd",
64
- d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",
65
- clipRule: "evenodd"
66
- }
67
- ) }),
68
- /* @__PURE__ */ e("span", { className: "text-sm text-base-content/70", children: "QR Code Expired" }),
69
- p && /* @__PURE__ */ e("button", { className: "btn btn-sm btn-primary", onClick: p, children: "Refresh" })
70
- ] }) }) : h === "canvas" ? /* @__PURE__ */ e("div", { className: "inline-block", "data-state": "active", ...c, children: /* @__PURE__ */ e("div", { className: r, children: /* @__PURE__ */ e("canvas", { ref: s, style: { display: "block" } }) }) }) : /* @__PURE__ */ e("div", { className: "inline-block", "data-state": "active", ...c, children: /* @__PURE__ */ e("div", { className: r, children: /* @__PURE__ */ e("div", { style: { width: a, height: a }, className: "bg-base-content/5", children: /* @__PURE__ */ e("span", { className: "text-xs text-base-content/50", children: "SVG mode placeholder" }) }) }) });
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ const p = {
3
+ neutral: "progress-neutral",
4
+ primary: "progress-primary",
5
+ secondary: "progress-secondary",
6
+ accent: "progress-accent",
7
+ info: "progress-info",
8
+ success: "progress-success",
9
+ warning: "progress-warning",
10
+ error: "progress-error"
71
11
  };
72
- k.displayName = "QRCode";
12
+ function t({ value: s, max: e = 100, type: r, className: o = "", ...n }) {
13
+ const a = [
14
+ "progress",
15
+ r && p[r],
16
+ o
17
+ ].filter(Boolean).join(" ");
18
+ return /* @__PURE__ */ c("progress", { className: a, value: s, max: e, ...n });
19
+ }
73
20
  export {
74
- k as QRCode,
75
- k as default
21
+ t as Progress
76
22
  };
77
23
  //# sourceMappingURL=index65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index65.js","sources":["../src/components/QRCode.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport QRCodeLib from 'qrcode'\n\nexport type QRCodeErrorLevel = 'L' | 'M' | 'Q' | 'H'\nexport type QRCodeType = 'canvas' | 'svg'\nexport type QRCodeStatus = 'active' | 'loading' | 'expired'\n\nexport interface QRCodeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color'> {\n value: string\n size?: number\n errorLevel?: QRCodeErrorLevel\n icon?: string\n iconSize?: number\n type?: QRCodeType\n color?: string\n bgColor?: string\n bordered?: boolean\n status?: QRCodeStatus\n onRefresh?: () => void\n}\n\nexport const QRCode: React.FC<QRCodeProps> = ({\n value,\n size = 160,\n errorLevel = 'M',\n icon,\n iconSize = 40,\n type = 'canvas',\n color = '#000000',\n bgColor = '#FFFFFF',\n bordered = true,\n status = 'active',\n onRefresh,\n className = '',\n ...rest\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const [loading, setLoading] = useState(status === 'loading')\n\n useEffect(() => {\n setLoading(status === 'loading')\n }, [status])\n\n useEffect(() => {\n if (status !== 'active' || !value) return\n\n const generateQRCode = async () => {\n try {\n setLoading(true)\n\n if (type === 'canvas' && canvasRef.current) {\n await QRCodeLib.toCanvas(canvasRef.current, value, {\n width: size,\n margin: 1,\n color: {\n dark: color,\n light: bgColor,\n },\n errorCorrectionLevel: errorLevel,\n })\n\n if (icon) {\n const canvas = canvasRef.current\n const ctx = canvas.getContext('2d')\n if (ctx) {\n const img = new Image()\n img.crossOrigin = 'anonymous'\n img.onload = () => {\n const iconX = (size - iconSize) / 2\n const iconY = (size - iconSize) / 2\n ctx.fillStyle = bgColor\n ctx.fillRect(iconX - 4, iconY - 4, iconSize + 8, iconSize + 8)\n ctx.drawImage(img, iconX, iconY, iconSize, iconSize)\n }\n img.src = icon\n }\n }\n }\n\n setLoading(false)\n } catch (error) {\n console.error('QR Code generation error:', error)\n setLoading(false)\n }\n }\n\n generateQRCode()\n }, [value, size, errorLevel, icon, iconSize, type, color, bgColor, status])\n\n // Download functionality can be implemented by consumers\n // by accessing the canvas ref and converting to data URL\n\n const containerClasses = [\n 'inline-flex items-center justify-center',\n bordered && 'border border-base-content/20 p-3',\n 'bg-base-100',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (status === 'loading' || loading) {\n return (\n <div className={containerClasses} style={{ width: size + (bordered ? 24 : 0), height: size + (bordered ? 24 : 0) }} data-state=\"loading\" {...rest}>\n <div className=\"flex flex-col items-center justify-center gap-2\">\n <span className=\"loading loading-spinner loading-lg\"></span>\n <span className=\"text-sm text-base-content/70\">Loading...</span>\n </div>\n </div>\n )\n }\n\n if (status === 'expired') {\n return (\n <div className={containerClasses} style={{ width: size + (bordered ? 24 : 0), height: size + (bordered ? 24 : 0) }} data-state=\"expired\" {...rest}>\n <div className=\"flex flex-col items-center justify-center gap-2\">\n <svg className=\"w-12 h-12 text-base-content/30\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"text-sm text-base-content/70\">QR Code Expired</span>\n {onRefresh && (\n <button className=\"btn btn-sm btn-primary\" onClick={onRefresh}>\n Refresh\n </button>\n )}\n </div>\n </div>\n )\n }\n\n if (type === 'canvas') {\n return (\n <div className=\"inline-block\" data-state=\"active\" {...rest}>\n <div className={containerClasses}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"inline-block\" data-state=\"active\" {...rest}>\n <div className={containerClasses}>\n <div style={{ width: size, height: size }} className=\"bg-base-content/5\">\n <span className=\"text-xs text-base-content/50\">SVG mode placeholder</span>\n </div>\n </div>\n </div>\n )\n}\n\nQRCode.displayName = 'QRCode'\n\nexport default QRCode\n"],"names":["QRCode","value","size","errorLevel","icon","iconSize","type","color","bgColor","bordered","status","onRefresh","className","rest","canvasRef","useRef","loading","setLoading","useState","useEffect","QRCodeLib","ctx","img","iconX","iconY","error","containerClasses","jsx","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index65.js","sources":["../src/components/Progress.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface ProgressProps extends React.ProgressHTMLAttributes<HTMLProgressElement> {\n type?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n}\n\nconst typeClasses = {\n neutral: 'progress-neutral',\n primary: 'progress-primary',\n secondary: 'progress-secondary',\n accent: 'progress-accent',\n info: 'progress-info',\n success: 'progress-success',\n warning: 'progress-warning',\n error: 'progress-error',\n} as const\n\nexport function Progress({ value, max = 100, type, className = '', ...rest }: ProgressProps) {\n const classes = [\n 'progress',\n type && typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <progress className={classes} value={value} max={max} {...rest} />\n}\n"],"names":["typeClasses","Progress","value","max","type","className","rest","classes"],"mappings":";AAMA,MAAMA,IAAc;AAAA,EAClB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEO,SAASC,EAAS,EAAE,OAAAC,GAAO,KAAAC,IAAM,KAAK,MAAAC,GAAM,WAAAC,IAAY,IAAI,GAAGC,KAAuB;AAC3F,QAAMC,IAAU;AAAA,IACd;AAAA,IACAH,KAAQJ,EAAYI,CAAI;AAAA,IACxBC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,YAAA,EAAS,WAAWE,GAAS,OAAAL,GAAc,KAAAC,GAAW,GAAGG,GAAM;AACzE;"}
package/dist/index66.js CHANGED
@@ -1,60 +1,77 @@
1
- import { jsx as n, jsxs as N } from "react/jsx-runtime";
2
- import S, { forwardRef as b, useContext as G, createContext as V } from "react";
3
- const f = V(null);
4
- function w({ children: r, value: e, defaultValue: i, onChange: o, name: t, className: c = "" }) {
5
- const [d, s] = S.useState(i), l = e !== void 0 ? e : d, u = (a) => {
6
- e === void 0 && s(a), o?.({ target: { value: a, name: t } });
7
- };
8
- return /* @__PURE__ */ n(f.Provider, { value: { value: l, onChange: u, name: t }, children: /* @__PURE__ */ n("div", { className: c, children: r }) });
9
- }
10
- const g = b(
11
- ({ size: r, color: e, className: i = "", value: o, checked: t, onChange: c, name: d, children: s, ...l }, u) => {
12
- const a = G(f), h = {
13
- xs: "radio-xs",
14
- sm: "radio-sm",
15
- md: "radio-md",
16
- lg: "radio-lg",
17
- xl: "radio-xl"
18
- }, x = {
19
- neutral: "radio-neutral",
20
- primary: "radio-primary",
21
- secondary: "radio-secondary",
22
- accent: "radio-accent",
23
- info: "radio-info",
24
- success: "radio-success",
25
- warning: "radio-warning",
26
- error: "radio-error"
27
- }, C = ["radio", r && h[r], e && x[e]].filter(Boolean).join(" "), m = a ? a.value === o : t, y = (k) => {
28
- if (a && o !== void 0) {
29
- const j = typeof o == "string" || typeof o == "number" ? o : String(o);
30
- a.onChange?.(j);
1
+ import { jsx as e, jsxs as y } from "react/jsx-runtime";
2
+ import { useRef as Q, useState as j, useEffect as R } from "react";
3
+ import F from "qrcode";
4
+ const k = ({
5
+ value: m,
6
+ size: a = 160,
7
+ errorLevel: v = "M",
8
+ icon: f,
9
+ iconSize: t = 40,
10
+ type: h = "canvas",
11
+ color: x = "#000000",
12
+ bgColor: g = "#FFFFFF",
13
+ bordered: l = !0,
14
+ status: n = "active",
15
+ onRefresh: p,
16
+ className: C = "",
17
+ ...c
18
+ }) => {
19
+ const s = Q(null), [w, i] = j(n === "loading");
20
+ R(() => {
21
+ i(n === "loading");
22
+ }, [n]), R(() => {
23
+ if (n !== "active" || !m) return;
24
+ (async () => {
25
+ try {
26
+ if (i(!0), h === "canvas" && s.current && (await F.toCanvas(s.current, m, {
27
+ width: a,
28
+ margin: 1,
29
+ color: {
30
+ dark: x,
31
+ light: g
32
+ },
33
+ errorCorrectionLevel: v
34
+ }), f)) {
35
+ const o = s.current.getContext("2d");
36
+ if (o) {
37
+ const d = new Image();
38
+ d.crossOrigin = "anonymous", d.onload = () => {
39
+ const u = (a - t) / 2, b = (a - t) / 2;
40
+ o.fillStyle = g, o.fillRect(u - 4, b - 4, t + 8, t + 8), o.drawImage(d, u, b, t, t);
41
+ }, d.src = f;
42
+ }
43
+ }
44
+ i(!1);
45
+ } catch (N) {
46
+ console.error("QR Code generation error:", N), i(!1);
31
47
  }
32
- c?.(k);
33
- }, R = a?.name || d, p = /* @__PURE__ */ n(
34
- "input",
48
+ })();
49
+ }, [m, a, v, f, t, h, x, g, n]);
50
+ const r = [
51
+ "inline-flex items-center justify-center",
52
+ l && "border border-base-content/20 p-3",
53
+ "bg-base-100",
54
+ C
55
+ ].filter(Boolean).join(" ");
56
+ return n === "loading" || w ? /* @__PURE__ */ e("div", { className: r, style: { width: a + (l ? 24 : 0), height: a + (l ? 24 : 0) }, "data-state": "loading", ...c, children: /* @__PURE__ */ y("div", { className: "flex flex-col items-center justify-center gap-2", children: [
57
+ /* @__PURE__ */ e("span", { className: "loading loading-spinner loading-lg" }),
58
+ /* @__PURE__ */ e("span", { className: "text-sm text-base-content/70", children: "Loading..." })
59
+ ] }) }) : n === "expired" ? /* @__PURE__ */ e("div", { className: r, style: { width: a + (l ? 24 : 0), height: a + (l ? 24 : 0) }, "data-state": "expired", ...c, children: /* @__PURE__ */ y("div", { className: "flex flex-col items-center justify-center gap-2", children: [
60
+ /* @__PURE__ */ e("svg", { className: "w-12 h-12 text-base-content/30", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ e(
61
+ "path",
35
62
  {
36
- ref: u,
37
- type: "radio",
38
- className: C,
39
- value: o,
40
- checked: m,
41
- onChange: y,
42
- name: R,
43
- "data-state": m ? "checked" : "unchecked",
44
- ...l
63
+ fillRule: "evenodd",
64
+ d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",
65
+ clipRule: "evenodd"
45
66
  }
46
- );
47
- return s ? /* @__PURE__ */ N("label", { className: `flex items-center gap-2 cursor-pointer ${i}`, children: [
48
- /* @__PURE__ */ n("span", { className: "flex-shrink-0", children: p }),
49
- /* @__PURE__ */ n("span", { children: s })
50
- ] }) : p;
51
- }
52
- );
53
- g.displayName = "Radio";
54
- const I = Object.assign(g, {
55
- Group: w
56
- });
67
+ ) }),
68
+ /* @__PURE__ */ e("span", { className: "text-sm text-base-content/70", children: "QR Code Expired" }),
69
+ p && /* @__PURE__ */ e("button", { className: "btn btn-sm btn-primary", onClick: p, children: "Refresh" })
70
+ ] }) }) : h === "canvas" ? /* @__PURE__ */ e("div", { className: "inline-block", "data-state": "active", ...c, children: /* @__PURE__ */ e("div", { className: r, children: /* @__PURE__ */ e("canvas", { ref: s, style: { display: "block" } }) }) }) : /* @__PURE__ */ e("div", { className: "inline-block", "data-state": "active", ...c, children: /* @__PURE__ */ e("div", { className: r, children: /* @__PURE__ */ e("div", { style: { width: a, height: a }, className: "bg-base-content/5", children: /* @__PURE__ */ e("span", { className: "text-xs text-base-content/50", children: "SVG mode placeholder" }) }) }) });
71
+ };
72
+ k.displayName = "QRCode";
57
73
  export {
58
- I as Radio
74
+ k as QRCode,
75
+ k as default
59
76
  };
60
77
  //# sourceMappingURL=index66.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index66.js","sources":["../src/components/Radio.tsx"],"sourcesContent":["import React, { forwardRef, createContext, useContext } from 'react'\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n className?: string\n children?: React.ReactNode\n}\n\nexport interface RadioGroupChangeEvent {\n target: {\n value: string | number\n name?: string\n }\n}\n\nexport interface RadioGroupProps {\n children: React.ReactNode\n value?: string | number\n defaultValue?: string | number\n onChange?: (e: RadioGroupChangeEvent) => void\n name?: string\n className?: string\n}\n\ninterface RadioGroupContextValue {\n value?: string | number\n onChange?: (value: string | number) => void\n name?: string\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction RadioGroup({ children, value, defaultValue, onChange, name, className = '' }: RadioGroupProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n const handleChange = (newValue: string | number) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.({ target: { value: newValue, name } })\n }\n\n return (\n <RadioGroupContext.Provider value={{ value: currentValue, onChange: handleChange, name }}>\n <div className={className}>{children}</div>\n </RadioGroupContext.Provider>\n )\n}\n\nconst RadioRoot = forwardRef<HTMLInputElement, RadioProps>(\n ({ size, color, className = '', value, checked, onChange, name: nameProp, children, ...props }, ref) => {\n const groupContext = useContext(RadioGroupContext)\n\n const sizeClasses = {\n xs: 'radio-xs',\n sm: 'radio-sm',\n md: 'radio-md',\n lg: 'radio-lg',\n xl: 'radio-xl',\n }\n\n const colorClasses = {\n neutral: 'radio-neutral',\n primary: 'radio-primary',\n secondary: 'radio-secondary',\n accent: 'radio-accent',\n info: 'radio-info',\n success: 'radio-success',\n warning: 'radio-warning',\n error: 'radio-error',\n }\n\n const radioClasses = ['radio', size && sizeClasses[size], color && colorClasses[color]]\n .filter(Boolean)\n .join(' ')\n\n // If in a group, use group's value and onChange\n const isChecked = groupContext ? groupContext.value === value : checked\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (groupContext && value !== undefined) {\n const normalizedValue = typeof value === 'string' || typeof value === 'number' ? value : String(value)\n groupContext.onChange?.(normalizedValue)\n }\n onChange?.(e)\n }\n const name = groupContext?.name || nameProp\n\n const dataState = isChecked ? 'checked' : 'unchecked'\n\n const input = (\n <input\n ref={ref}\n type=\"radio\"\n className={radioClasses}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n name={name}\n data-state={dataState}\n {...props}\n />\n )\n\n // If children are provided, wrap in a label\n if (children) {\n return (\n <label className={`flex items-center gap-2 cursor-pointer ${className}`}>\n <span className=\"flex-shrink-0\">{input}</span>\n <span>{children}</span>\n </label>\n )\n }\n\n return input\n }\n)\n\nRadioRoot.displayName = 'Radio'\n\nexport const Radio = Object.assign(RadioRoot, {\n Group: RadioGroup,\n})\n"],"names":["RadioGroupContext","createContext","RadioGroup","children","value","defaultValue","onChange","name","className","internalValue","setInternalValue","React","currentValue","handleChange","newValue","jsx","RadioRoot","forwardRef","size","color","checked","nameProp","props","ref","groupContext","useContext","sizeClasses","colorClasses","radioClasses","isChecked","e","normalizedValue","input","jsxs","Radio"],"mappings":";;AA+BA,MAAMA,IAAoBC,EAA6C,IAAI;AAE3E,SAASC,EAAW,EAAE,UAAAC,GAAU,OAAAC,GAAO,cAAAC,GAAc,UAAAC,GAAU,MAAAC,GAAM,WAAAC,IAAY,MAAuB;AACtG,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAM,SAASN,CAAY,GAC/DO,IAAeR,MAAU,SAAYA,IAAQK,GAE7CI,IAAe,CAACC,MAA8B;AAClD,IAAIV,MAAU,UACZM,EAAiBI,CAAQ,GAE3BR,IAAW,EAAE,QAAQ,EAAE,OAAOQ,GAAU,MAAAP,EAAA,GAAQ;AAAA,EAClD;AAEA,2BACGP,EAAkB,UAAlB,EAA2B,OAAO,EAAE,OAAOY,GAAc,UAAUC,GAAc,MAAAN,KAChF,UAAA,gBAAAQ,EAAC,OAAA,EAAI,WAAAP,GAAuB,UAAAL,GAAS,GACvC;AAEJ;AAEA,MAAMa,IAAYC;AAAA,EAChB,CAAC,EAAE,MAAAC,GAAM,OAAAC,GAAO,WAAAX,IAAY,IAAI,OAAAJ,GAAO,SAAAgB,GAAS,UAAAd,GAAU,MAAMe,GAAU,UAAAlB,GAAU,GAAGmB,EAAA,GAASC,MAAQ;AACtG,UAAMC,IAAeC,EAAWzB,CAAiB,GAE3C0B,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGAC,IAAe;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,GAGHC,IAAe,CAAC,SAASV,KAAQQ,EAAYR,CAAI,GAAGC,KAASQ,EAAaR,CAAK,CAAC,EACnF,OAAO,OAAO,EACd,KAAK,GAAG,GAGLU,IAAYL,IAAeA,EAAa,UAAUpB,IAAQgB,GAC1DP,IAAe,CAACiB,MAA2C;AAC/D,UAAIN,KAAgBpB,MAAU,QAAW;AACvC,cAAM2B,IAAkB,OAAO3B,KAAU,YAAY,OAAOA,KAAU,WAAWA,IAAQ,OAAOA,CAAK;AACrG,QAAAoB,EAAa,WAAWO,CAAe;AAAA,MACzC;AACA,MAAAzB,IAAWwB,CAAC;AAAA,IACd,GACMvB,IAAOiB,GAAc,QAAQH,GAI7BW,IACJ,gBAAAjB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAQ;AAAA,QACA,MAAK;AAAA,QACL,WAAWK;AAAA,QACX,OAAAxB;AAAA,QACA,SAASyB;AAAA,QACT,UAAUhB;AAAA,QACV,MAAAN;AAAA,QACA,cAXcsB,IAAY,YAAY;AAAA,QAYrC,GAAGP;AAAA,MAAA;AAAA,IAAA;AAKR,WAAInB,IAEA,gBAAA8B,EAAC,SAAA,EAAM,WAAW,0CAA0CzB,CAAS,IACnE,UAAA;AAAA,MAAA,gBAAAO,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAiB,GAAM;AAAA,MACvC,gBAAAjB,EAAC,UAAM,UAAAZ,EAAA,CAAS;AAAA,IAAA,GAClB,IAIG6B;AAAA,EACT;AACF;AAEAhB,EAAU,cAAc;AAEjB,MAAMkB,IAAQ,OAAO,OAAOlB,GAAW;AAAA,EAC5C,OAAOd;AACT,CAAC;"}
1
+ {"version":3,"file":"index66.js","sources":["../src/components/QRCode.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport QRCodeLib from 'qrcode'\n\nexport type QRCodeErrorLevel = 'L' | 'M' | 'Q' | 'H'\nexport type QRCodeType = 'canvas' | 'svg'\nexport type QRCodeStatus = 'active' | 'loading' | 'expired'\n\nexport interface QRCodeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color'> {\n value: string\n size?: number\n errorLevel?: QRCodeErrorLevel\n icon?: string\n iconSize?: number\n type?: QRCodeType\n color?: string\n bgColor?: string\n bordered?: boolean\n status?: QRCodeStatus\n onRefresh?: () => void\n}\n\nexport const QRCode: React.FC<QRCodeProps> = ({\n value,\n size = 160,\n errorLevel = 'M',\n icon,\n iconSize = 40,\n type = 'canvas',\n color = '#000000',\n bgColor = '#FFFFFF',\n bordered = true,\n status = 'active',\n onRefresh,\n className = '',\n ...rest\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const [loading, setLoading] = useState(status === 'loading')\n\n useEffect(() => {\n setLoading(status === 'loading')\n }, [status])\n\n useEffect(() => {\n if (status !== 'active' || !value) return\n\n const generateQRCode = async () => {\n try {\n setLoading(true)\n\n if (type === 'canvas' && canvasRef.current) {\n await QRCodeLib.toCanvas(canvasRef.current, value, {\n width: size,\n margin: 1,\n color: {\n dark: color,\n light: bgColor,\n },\n errorCorrectionLevel: errorLevel,\n })\n\n if (icon) {\n const canvas = canvasRef.current\n const ctx = canvas.getContext('2d')\n if (ctx) {\n const img = new Image()\n img.crossOrigin = 'anonymous'\n img.onload = () => {\n const iconX = (size - iconSize) / 2\n const iconY = (size - iconSize) / 2\n ctx.fillStyle = bgColor\n ctx.fillRect(iconX - 4, iconY - 4, iconSize + 8, iconSize + 8)\n ctx.drawImage(img, iconX, iconY, iconSize, iconSize)\n }\n img.src = icon\n }\n }\n }\n\n setLoading(false)\n } catch (error) {\n console.error('QR Code generation error:', error)\n setLoading(false)\n }\n }\n\n generateQRCode()\n }, [value, size, errorLevel, icon, iconSize, type, color, bgColor, status])\n\n // Download functionality can be implemented by consumers\n // by accessing the canvas ref and converting to data URL\n\n const containerClasses = [\n 'inline-flex items-center justify-center',\n bordered && 'border border-base-content/20 p-3',\n 'bg-base-100',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (status === 'loading' || loading) {\n return (\n <div className={containerClasses} style={{ width: size + (bordered ? 24 : 0), height: size + (bordered ? 24 : 0) }} data-state=\"loading\" {...rest}>\n <div className=\"flex flex-col items-center justify-center gap-2\">\n <span className=\"loading loading-spinner loading-lg\"></span>\n <span className=\"text-sm text-base-content/70\">Loading...</span>\n </div>\n </div>\n )\n }\n\n if (status === 'expired') {\n return (\n <div className={containerClasses} style={{ width: size + (bordered ? 24 : 0), height: size + (bordered ? 24 : 0) }} data-state=\"expired\" {...rest}>\n <div className=\"flex flex-col items-center justify-center gap-2\">\n <svg className=\"w-12 h-12 text-base-content/30\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"text-sm text-base-content/70\">QR Code Expired</span>\n {onRefresh && (\n <button className=\"btn btn-sm btn-primary\" onClick={onRefresh}>\n Refresh\n </button>\n )}\n </div>\n </div>\n )\n }\n\n if (type === 'canvas') {\n return (\n <div className=\"inline-block\" data-state=\"active\" {...rest}>\n <div className={containerClasses}>\n <canvas ref={canvasRef} style={{ display: 'block' }} />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"inline-block\" data-state=\"active\" {...rest}>\n <div className={containerClasses}>\n <div style={{ width: size, height: size }} className=\"bg-base-content/5\">\n <span className=\"text-xs text-base-content/50\">SVG mode placeholder</span>\n </div>\n </div>\n </div>\n )\n}\n\nQRCode.displayName = 'QRCode'\n\nexport default QRCode\n"],"names":["QRCode","value","size","errorLevel","icon","iconSize","type","color","bgColor","bordered","status","onRefresh","className","rest","canvasRef","useRef","loading","setLoading","useState","useEffect","QRCodeLib","ctx","img","iconX","iconY","error","containerClasses","jsx","jsxs"],"mappings":"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"}