@proveanything/smartlinks-utils-ui 0.1.3 → 0.1.5
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.
- package/README.md +29 -0
- package/dist/chunk-4Z46C4MJ.js +1090 -0
- package/dist/chunk-4Z46C4MJ.js.map +1 -0
- package/dist/{chunk-HLFNSOPD.js → chunk-DL2VRBE6.js} +3 -3
- package/dist/chunk-DL2VRBE6.js.map +1 -0
- package/dist/{chunk-V7JHAER7.js → chunk-WOCLZGRB.js} +64 -64
- package/dist/chunk-WOCLZGRB.js.map +1 -0
- package/dist/components/AssetPicker/index.js +1 -1
- package/dist/components/FontPicker/index.d.ts +134 -0
- package/dist/components/FontPicker/index.js +4 -0
- package/dist/components/FontPicker/index.js.map +1 -0
- package/dist/components/IconPicker/index.js +1 -1
- package/dist/index.css +139 -103
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -2
- package/package.json +5 -1
- package/dist/chunk-HLFNSOPD.js.map +0 -1
- package/dist/chunk-V7JHAER7.js.map +0 -1
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/*\r\n * @proveanything/smartlinks-ui — Pre-compiled styles\r\n *\r\n * This file is processed by Tailwind CSS during build to generate\r\n * all utility classes used by library components. Consumers import\r\n * the compiled version: import '@proveanything/smartlinks-ui/styles.css'\r\n *\r\n * NOTE: This does NOT include base/reset styles or CSS variable definitions.\r\n * The consuming app must provide its own design tokens (--primary, --border, etc.)\r\n * via its own CSS (e.g. shadcn's globals.css).\r\n */\r\n\r\n.pointer-events-none {\r\n\r\n pointer-events: none\n}\r\n\r\n.fixed {\r\n\r\n position: fixed\n}\r\n\r\n.absolute {\r\n\r\n position: absolute\n}\r\n\r\n.relative {\r\n\r\n position: relative\n}\r\n\r\n.inset-0 {\r\n\r\n inset: 0px\n}\r\n\r\n.left-2 {\r\n\r\n left: 0.5rem\n}\r\n\r\n.left-2\\.5 {\r\n\r\n left: 0.625rem\n}\r\n\r\n.left-3 {\r\n\r\n left: 0.75rem\n}\r\n\r\n.right-2 {\r\n\r\n right: 0.5rem\n}\r\n\r\n.right-3 {\r\n\r\n right: 0.75rem\n}\r\n\r\n.top-0\\.5 {\r\n\r\n top: 0.125rem\n}\r\n\r\n.top-1\\/2 {\r\n\r\n top: 50%\n}\r\n\r\n.top-2 {\r\n\r\n top: 0.5rem\n}\r\n\r\n.z-10 {\r\n\r\n z-index: 10\n}\r\n\r\n.z-50 {\r\n\r\n z-index: 50\n}\r\n\r\n.mx-4 {\r\n\r\n margin-left: 1rem;\r\n\r\n margin-right: 1rem\n}\r\n\r\n.mx-auto {\r\n\r\n margin-left: auto;\r\n\r\n margin-right: auto\n}\r\n\r\n.-mb-px {\r\n\r\n margin-bottom: -1px\n}\r\n\r\n.mb-0\\.5 {\r\n\r\n margin-bottom: 0.125rem\n}\r\n\r\n.mb-2 {\r\n\r\n margin-bottom: 0.5rem\n}\r\n\r\n.mb-3 {\r\n\r\n margin-bottom: 0.75rem\n}\r\n\r\n.ml-auto {\r\n\r\n margin-left: auto\n}\r\n\r\n.mt-0\\.5 {\r\n\r\n margin-top: 0.125rem\n}\r\n\r\n.mt-1 {\r\n\r\n margin-top: 0.25rem\n}\r\n\r\n.block {\r\n\r\n display: block\n}\r\n\r\n.inline {\r\n\r\n display: inline\n}\r\n\r\n.flex {\r\n\r\n display: flex\n}\r\n\r\n.inline-flex {\r\n\r\n display: inline-flex\n}\r\n\r\n.grid {\r\n\r\n display: grid\n}\r\n\r\n.hidden {\r\n\r\n display: none\n}\r\n\r\n.aspect-square {\r\n\r\n aspect-ratio: 1 / 1\n}\r\n\r\n.h-1\\.5 {\r\n\r\n height: 0.375rem\n}\r\n\r\n.h-10 {\r\n\r\n height: 2.5rem\n}\r\n\r\n.h-16 {\r\n\r\n height: 4rem\n}\r\n\r\n.h-3 {\r\n\r\n height: 0.75rem\n}\r\n\r\n.h-3\\.5 {\r\n\r\n height: 0.875rem\n}\r\n\r\n.h-4 {\r\n\r\n height: 1rem\n}\r\n\r\n.h-5 {\r\n\r\n height: 1.25rem\n}\r\n\r\n.h-6 {\r\n\r\n height: 1.5rem\n}\r\n\r\n.h-8 {\r\n\r\n height: 2rem\n}\r\n\r\n.h-full {\r\n\r\n height: 100%\n}\r\n\r\n.max-h-32 {\r\n\r\n max-height: 8rem\n}\r\n\r\n.max-h-\\[80vh\\] {\r\n\r\n max-height: 80vh\n}\r\n\r\n.w-10 {\r\n\r\n width: 2.5rem\n}\r\n\r\n.w-16 {\r\n\r\n width: 4rem\n}\r\n\r\n.w-3 {\r\n\r\n width: 0.75rem\n}\r\n\r\n.w-3\\.5 {\r\n\r\n width: 0.875rem\n}\r\n\r\n.w-36 {\r\n\r\n width: 9rem\n}\r\n\r\n.w-4 {\r\n\r\n width: 1rem\n}\r\n\r\n.w-5 {\r\n\r\n width: 1.25rem\n}\r\n\r\n.w-6 {\r\n\r\n width: 1.5rem\n}\r\n\r\n.w-8 {\r\n\r\n width: 2rem\n}\r\n\r\n.w-9 {\r\n\r\n width: 2.25rem\n}\r\n\r\n.w-fit {\r\n\r\n width: -moz-fit-content;\r\n\r\n width: fit-content\n}\r\n\r\n.w-full {\r\n\r\n width: 100%\n}\r\n\r\n.min-w-0 {\r\n\r\n min-width: 0px\n}\r\n\r\n.max-w-2xl {\r\n\r\n max-width: 42rem\n}\r\n\r\n.max-w-\\[200px\\] {\r\n\r\n max-width: 200px\n}\r\n\r\n.max-w-full {\r\n\r\n max-width: 100%\n}\r\n\r\n.max-w-xl {\r\n\r\n max-width: 36rem\n}\r\n\r\n.max-w-xs {\r\n\r\n max-width: 20rem\n}\r\n\r\n.flex-1 {\r\n\r\n flex: 1 1 0%\n}\r\n\r\n.flex-shrink-0 {\r\n\r\n flex-shrink: 0\n}\r\n\r\n.-translate-y-1\\/2 {\r\n\r\n --tw-translate-y: -50%;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-0\\.5 {\r\n\r\n --tw-translate-x: 0.125rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-3\\.5 {\r\n\r\n --tw-translate-x: 0.875rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-4 {\r\n\r\n --tw-translate-x: 1rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.scale-110 {\r\n\r\n --tw-scale-x: 1.1;\r\n\r\n --tw-scale-y: 1.1;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n@keyframes spin {\r\n\r\n to {\r\n\r\n transform: rotate(360deg)\n }\n}\r\n\r\n.animate-spin {\r\n\r\n animation: spin 1s linear infinite\n}\r\n\r\n.cursor-pointer {\r\n\r\n cursor: pointer\n}\r\n\r\n.select-none {\r\n\r\n -webkit-user-select: none;\r\n\r\n -moz-user-select: none;\r\n\r\n user-select: none\n}\r\n\r\n.appearance-none {\r\n\r\n -webkit-appearance: none;\r\n\r\n -moz-appearance: none;\r\n\r\n appearance: none\n}\r\n\r\n.grid-cols-2 {\r\n\r\n grid-template-columns: repeat(2, minmax(0, 1fr))\n}\r\n\r\n.grid-cols-3 {\r\n\r\n grid-template-columns: repeat(3, minmax(0, 1fr))\n}\r\n\r\n.grid-cols-8 {\r\n\r\n grid-template-columns: repeat(8, minmax(0, 1fr))\n}\r\n\r\n.flex-col {\r\n\r\n flex-direction: column\n}\r\n\r\n.flex-wrap {\r\n\r\n flex-wrap: wrap\n}\r\n\r\n.items-center {\r\n\r\n align-items: center\n}\r\n\r\n.justify-center {\r\n\r\n justify-content: center\n}\r\n\r\n.justify-between {\r\n\r\n justify-content: space-between\n}\r\n\r\n.gap-0\\.5 {\r\n\r\n gap: 0.125rem\n}\r\n\r\n.gap-1 {\r\n\r\n gap: 0.25rem\n}\r\n\r\n.gap-1\\.5 {\r\n\r\n gap: 0.375rem\n}\r\n\r\n.gap-2 {\r\n\r\n gap: 0.5rem\n}\r\n\r\n.gap-3 {\r\n\r\n gap: 0.75rem\n}\r\n\r\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(1rem * var(--tw-space-y-reverse))\n}\r\n\r\n.overflow-hidden {\r\n\r\n overflow: hidden\n}\r\n\r\n.overflow-y-auto {\r\n\r\n overflow-y: auto\n}\r\n\r\n.truncate {\r\n\r\n overflow: hidden;\r\n\r\n text-overflow: ellipsis;\r\n\r\n white-space: nowrap\n}\r\n\r\n.rounded {\r\n\r\n border-radius: 0.25rem\n}\r\n\r\n.rounded-full {\r\n\r\n border-radius: 9999px\n}\r\n\r\n.rounded-lg {\r\n\r\n border-radius: var(--radius)\n}\r\n\r\n.rounded-md {\r\n\r\n border-radius: calc(var(--radius) - 2px)\n}\r\n\r\n.rounded-xl {\r\n\r\n border-radius: 0.75rem\n}\r\n\r\n.border {\r\n\r\n border-width: 1px\n}\r\n\r\n.border-2 {\r\n\r\n border-width: 2px\n}\r\n\r\n.border-b {\r\n\r\n border-bottom-width: 1px\n}\r\n\r\n.border-b-2 {\r\n\r\n border-bottom-width: 2px\n}\r\n\r\n.border-t {\r\n\r\n border-top-width: 1px\n}\r\n\r\n.border-solid {\r\n\r\n border-style: solid\n}\r\n\r\n.border-dashed {\r\n\r\n border-style: dashed\n}\r\n\r\n.border-blue-300 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(147 197 253 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-blue-400 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(96 165 250 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-blue-500 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-border {\r\n\r\n border-color: hsl(var(--border))\n}\r\n\r\n.border-gray-100 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-gray-200 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-gray-300 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-red-400 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(248 113 113 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-transparent {\r\n\r\n border-color: transparent\n}\r\n\r\n.bg-accent {\r\n\r\n background-color: hsl(var(--accent))\n}\r\n\r\n.bg-background {\r\n\r\n background-color: hsl(var(--background))\n}\r\n\r\n.bg-black\\/50 {\r\n\r\n background-color: rgb(0 0 0 / 0.5)\n}\r\n\r\n.bg-blue-100 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-blue-50 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-blue-500 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-foreground {\r\n\r\n background-color: hsl(var(--foreground))\n}\r\n\r\n.bg-gray-100 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-gray-200 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-gray-300 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-muted {\r\n\r\n background-color: hsl(var(--muted))\n}\r\n\r\n.bg-primary {\r\n\r\n background-color: hsl(var(--primary))\n}\r\n\r\n.bg-primary\\/10 {\r\n\r\n background-color: hsl(var(--primary) / 0.1)\n}\r\n\r\n.bg-red-50 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-red-500\\/80 {\r\n\r\n background-color: rgb(239 68 68 / 0.8)\n}\r\n\r\n.bg-transparent {\r\n\r\n background-color: transparent\n}\r\n\r\n.bg-white {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.object-contain {\r\n\r\n -o-object-fit: contain;\r\n\r\n object-fit: contain\n}\r\n\r\n.object-cover {\r\n\r\n -o-object-fit: cover;\r\n\r\n object-fit: cover\n}\r\n\r\n.p-0\\.5 {\r\n\r\n padding: 0.125rem\n}\r\n\r\n.p-1 {\r\n\r\n padding: 0.25rem\n}\r\n\r\n.p-2 {\r\n\r\n padding: 0.5rem\n}\r\n\r\n.p-3 {\r\n\r\n padding: 0.75rem\n}\r\n\r\n.p-4 {\r\n\r\n padding: 1rem\n}\r\n\r\n.px-2 {\r\n\r\n padding-left: 0.5rem;\r\n\r\n padding-right: 0.5rem\n}\r\n\r\n.px-2\\.5 {\r\n\r\n padding-left: 0.625rem;\r\n\r\n padding-right: 0.625rem\n}\r\n\r\n.px-3 {\r\n\r\n padding-left: 0.75rem;\r\n\r\n padding-right: 0.75rem\n}\r\n\r\n.px-4 {\r\n\r\n padding-left: 1rem;\r\n\r\n padding-right: 1rem\n}\r\n\r\n.py-0\\.5 {\r\n\r\n padding-top: 0.125rem;\r\n\r\n padding-bottom: 0.125rem\n}\r\n\r\n.py-1 {\r\n\r\n padding-top: 0.25rem;\r\n\r\n padding-bottom: 0.25rem\n}\r\n\r\n.py-1\\.5 {\r\n\r\n padding-top: 0.375rem;\r\n\r\n padding-bottom: 0.375rem\n}\r\n\r\n.py-10 {\r\n\r\n padding-top: 2.5rem;\r\n\r\n padding-bottom: 2.5rem\n}\r\n\r\n.py-12 {\r\n\r\n padding-top: 3rem;\r\n\r\n padding-bottom: 3rem\n}\r\n\r\n.py-2 {\r\n\r\n padding-top: 0.5rem;\r\n\r\n padding-bottom: 0.5rem\n}\r\n\r\n.py-3 {\r\n\r\n padding-top: 0.75rem;\r\n\r\n padding-bottom: 0.75rem\n}\r\n\r\n.pb-2 {\r\n\r\n padding-bottom: 0.5rem\n}\r\n\r\n.pl-1 {\r\n\r\n padding-left: 0.25rem\n}\r\n\r\n.pl-7 {\r\n\r\n padding-left: 1.75rem\n}\r\n\r\n.pl-8 {\r\n\r\n padding-left: 2rem\n}\r\n\r\n.pl-9 {\r\n\r\n padding-left: 2.25rem\n}\r\n\r\n.pr-2 {\r\n\r\n padding-right: 0.5rem\n}\r\n\r\n.pr-3 {\r\n\r\n padding-right: 0.75rem\n}\r\n\r\n.pr-5 {\r\n\r\n padding-right: 1.25rem\n}\r\n\r\n.pr-9 {\r\n\r\n padding-right: 2.25rem\n}\r\n\r\n.pt-2 {\r\n\r\n padding-top: 0.5rem\n}\r\n\r\n.text-center {\r\n\r\n text-align: center\n}\r\n\r\n.text-\\[10px\\] {\r\n\r\n font-size: 10px\n}\r\n\r\n.text-\\[11px\\] {\r\n\r\n font-size: 11px\n}\r\n\r\n.text-base {\r\n\r\n font-size: 1rem;\r\n\r\n line-height: 1.5rem\n}\r\n\r\n.text-sm {\r\n\r\n font-size: 0.875rem;\r\n\r\n line-height: 1.25rem\n}\r\n\r\n.text-xs {\r\n\r\n font-size: 0.75rem;\r\n\r\n line-height: 1rem\n}\r\n\r\n.font-medium {\r\n\r\n font-weight: 500\n}\r\n\r\n.font-semibold {\r\n\r\n font-weight: 600\n}\r\n\r\n.capitalize {\r\n\r\n text-transform: capitalize\n}\r\n\r\n.italic {\r\n\r\n font-style: italic\n}\r\n\r\n.text-accent-foreground {\r\n\r\n color: hsl(var(--accent-foreground))\n}\r\n\r\n.text-background {\r\n\r\n color: hsl(var(--background))\n}\r\n\r\n.text-blue-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(59 130 246 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-blue-600 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(37 99 235 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-blue-700 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(29 78 216 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-destructive {\r\n\r\n color: hsl(var(--destructive))\n}\r\n\r\n.text-foreground {\r\n\r\n color: hsl(var(--foreground))\n}\r\n\r\n.text-gray-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-600 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(75 85 99 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-700 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(55 65 81 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-800 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(31 41 55 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-900 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(17 24 39 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-muted-foreground {\r\n\r\n color: hsl(var(--muted-foreground))\n}\r\n\r\n.text-muted-foreground\\/40 {\r\n\r\n color: hsl(var(--muted-foreground) / 0.4)\n}\r\n\r\n.text-primary {\r\n\r\n color: hsl(var(--primary))\n}\r\n\r\n.text-primary-foreground {\r\n\r\n color: hsl(var(--primary-foreground))\n}\r\n\r\n.text-red-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(248 113 113 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-red-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(239 68 68 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-red-600 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(220 38 38 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-white {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(255 255 255 / var(--tw-text-opacity, 1))\n}\r\n\r\n.underline {\r\n\r\n text-decoration-line: underline\n}\r\n\r\n.opacity-0 {\r\n\r\n opacity: 0\n}\r\n\r\n.opacity-50 {\r\n\r\n opacity: 0.5\n}\r\n\r\n.opacity-70 {\r\n\r\n opacity: 0.7\n}\r\n\r\n.shadow {\r\n\r\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\r\n\r\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.shadow-2xl {\r\n\r\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\r\n\r\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.shadow-sm {\r\n\r\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\r\n\r\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.ring-2 {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.ring-primary {\r\n\r\n --tw-ring-color: hsl(var(--primary))\n}\r\n\r\n.filter {\r\n\r\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)\n}\r\n\r\n.backdrop-blur-sm {\r\n\r\n --tw-backdrop-blur: blur(4px);\r\n\r\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)\n}\r\n\r\n.transition-all {\r\n\r\n transition-property: all;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-colors {\r\n\r\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-opacity {\r\n\r\n transition-property: opacity;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-shadow {\r\n\r\n transition-property: box-shadow;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-transform {\r\n\r\n transition-property: transform;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.duration-300 {\r\n\r\n transition-duration: 300ms\n}\r\n\r\n.placeholder\\:text-gray-400::-moz-placeholder {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}\r\n\r\n.placeholder\\:text-gray-400::placeholder {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:border-blue-400:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(96 165 250 / var(--tw-border-opacity, 1))\n}\r\n\r\n.hover\\:border-gray-300:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))\n}\r\n\r\n.hover\\:border-gray-400:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(156 163 175 / var(--tw-border-opacity, 1))\n}\r\n\r\n.hover\\:border-ring:hover {\r\n\r\n border-color: hsl(var(--ring))\n}\r\n\r\n.hover\\:bg-accent:hover {\r\n\r\n background-color: hsl(var(--accent))\n}\r\n\r\n.hover\\:bg-accent\\/50:hover {\r\n\r\n background-color: hsl(var(--accent) / 0.5)\n}\r\n\r\n.hover\\:bg-blue-50\\/50:hover {\r\n\r\n background-color: rgb(239 246 255 / 0.5)\n}\r\n\r\n.hover\\:bg-blue-600:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-gray-100:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-gray-200:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-gray-50:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-red-100:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-red-600:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:text-accent-foreground:hover {\r\n\r\n color: hsl(var(--accent-foreground))\n}\r\n\r\n.hover\\:text-blue-500:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(59 130 246 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:text-gray-700:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(55 65 81 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:text-gray-900:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(17 24 39 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:shadow-md:hover {\r\n\r\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\r\n\r\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.hover\\:shadow-sm:hover {\r\n\r\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\r\n\r\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.focus\\:outline-none:focus {\r\n\r\n outline: 2px solid transparent;\r\n\r\n outline-offset: 2px\n}\r\n\r\n.focus\\:ring-1:focus {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.focus\\:ring-2:focus {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.focus\\:ring-blue-500:focus {\r\n\r\n --tw-ring-opacity: 1;\r\n\r\n --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))\n}\r\n\r\n.focus\\:ring-ring:focus {\r\n\r\n --tw-ring-color: hsl(var(--ring))\n}\r\n\r\n.disabled\\:cursor-not-allowed:disabled {\r\n\r\n cursor: not-allowed\n}\r\n\r\n.disabled\\:opacity-30:disabled {\r\n\r\n opacity: 0.3\n}\r\n\r\n.disabled\\:opacity-50:disabled {\r\n\r\n opacity: 0.5\n}\r\n\r\n.group:hover .group-hover\\:opacity-100 {\r\n\r\n opacity: 1\n}\r\n\r\n@media (min-width: 640px) {\r\n\r\n .sm\\:grid-cols-10 {\r\n\r\n grid-template-columns: repeat(10, minmax(0, 1fr))\n }\r\n\r\n .sm\\:grid-cols-4 {\r\n\r\n grid-template-columns: repeat(4, minmax(0, 1fr))\n }\n}\r\n\r\n@media (min-width: 768px) {\r\n\r\n .md\\:grid-cols-12 {\r\n\r\n grid-template-columns: repeat(12, minmax(0, 1fr))\n }\r\n\r\n .md\\:grid-cols-5 {\r\n\r\n grid-template-columns: repeat(5, minmax(0, 1fr))\n }\n}\r\n\r\n@media (prefers-color-scheme: dark) {\r\n\r\n .dark\\:border-blue-500 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-blue-700 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(29 78 216 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-600 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-700 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-800 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(31 41 55 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-red-500 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:bg-blue-900\\/40 {\r\n\r\n background-color: rgb(30 58 138 / 0.4)\n }\r\n\r\n .dark\\:bg-blue-950\\/30 {\r\n\r\n background-color: rgb(23 37 84 / 0.3)\n }\r\n\r\n .dark\\:bg-gray-600 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-700 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-800 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-900 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-red-950\\/30 {\r\n\r\n background-color: rgb(69 10 10 / 0.3)\n }\r\n\r\n .dark\\:text-blue-300 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(147 197 253 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-blue-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(96 165 250 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-100 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(243 244 246 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-200 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(229 231 235 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-300 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(209 213 219 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-red-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(248 113 113 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:placeholder\\:text-gray-500::-moz-placeholder {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:placeholder\\:text-gray-500::placeholder {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:border-blue-500:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:border-gray-500:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(107 114 128 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:border-gray-600:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-blue-950\\/20:hover {\r\n\r\n background-color: rgb(23 37 84 / 0.2)\n }\r\n\r\n .dark\\:hover\\:bg-gray-700:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-gray-800:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-gray-800\\/50:hover {\r\n\r\n background-color: rgb(31 41 55 / 0.5)\n }\r\n\r\n .dark\\:hover\\:bg-red-900\\/30:hover {\r\n\r\n background-color: rgb(127 29 29 / 0.3)\n }\r\n\r\n .dark\\:hover\\:text-blue-400:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(96 165 250 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:text-gray-100:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(243 244 246 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:text-gray-300:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(209 213 219 / var(--tw-text-opacity, 1))\n }\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/*\r\n * @proveanything/smartlinks-ui — Pre-compiled styles\r\n *\r\n * This file is processed by Tailwind CSS during build to generate\r\n * all utility classes used by library components. Consumers import\r\n * the compiled version: import '@proveanything/smartlinks-ui/styles.css'\r\n *\r\n * NOTE: This does NOT include base/reset styles or CSS variable definitions.\r\n * The consuming app must provide its own design tokens (--primary, --border, etc.)\r\n * via its own CSS (e.g. shadcn's globals.css).\r\n */\r\n\r\n.pointer-events-none {\r\n\r\n pointer-events: none\n}\r\n\r\n.fixed {\r\n\r\n position: fixed\n}\r\n\r\n.absolute {\r\n\r\n position: absolute\n}\r\n\r\n.relative {\r\n\r\n position: relative\n}\r\n\r\n.inset-0 {\r\n\r\n inset: 0px\n}\r\n\r\n.left-2 {\r\n\r\n left: 0.5rem\n}\r\n\r\n.left-2\\.5 {\r\n\r\n left: 0.625rem\n}\r\n\r\n.left-3 {\r\n\r\n left: 0.75rem\n}\r\n\r\n.right-2 {\r\n\r\n right: 0.5rem\n}\r\n\r\n.right-3 {\r\n\r\n right: 0.75rem\n}\r\n\r\n.top-0\\.5 {\r\n\r\n top: 0.125rem\n}\r\n\r\n.top-1\\/2 {\r\n\r\n top: 50%\n}\r\n\r\n.top-2 {\r\n\r\n top: 0.5rem\n}\r\n\r\n.z-10 {\r\n\r\n z-index: 10\n}\r\n\r\n.z-50 {\r\n\r\n z-index: 50\n}\r\n\r\n.mx-4 {\r\n\r\n margin-left: 1rem;\r\n\r\n margin-right: 1rem\n}\r\n\r\n.mx-auto {\r\n\r\n margin-left: auto;\r\n\r\n margin-right: auto\n}\r\n\r\n.-mb-px {\r\n\r\n margin-bottom: -1px\n}\r\n\r\n.mb-0\\.5 {\r\n\r\n margin-bottom: 0.125rem\n}\r\n\r\n.mb-2 {\r\n\r\n margin-bottom: 0.5rem\n}\r\n\r\n.mb-3 {\r\n\r\n margin-bottom: 0.75rem\n}\r\n\r\n.ml-1 {\r\n\r\n margin-left: 0.25rem\n}\r\n\r\n.ml-auto {\r\n\r\n margin-left: auto\n}\r\n\r\n.mt-0\\.5 {\r\n\r\n margin-top: 0.125rem\n}\r\n\r\n.mt-1 {\r\n\r\n margin-top: 0.25rem\n}\r\n\r\n.block {\r\n\r\n display: block\n}\r\n\r\n.inline {\r\n\r\n display: inline\n}\r\n\r\n.flex {\r\n\r\n display: flex\n}\r\n\r\n.inline-flex {\r\n\r\n display: inline-flex\n}\r\n\r\n.grid {\r\n\r\n display: grid\n}\r\n\r\n.hidden {\r\n\r\n display: none\n}\r\n\r\n.aspect-square {\r\n\r\n aspect-ratio: 1 / 1\n}\r\n\r\n.h-1\\.5 {\r\n\r\n height: 0.375rem\n}\r\n\r\n.h-10 {\r\n\r\n height: 2.5rem\n}\r\n\r\n.h-16 {\r\n\r\n height: 4rem\n}\r\n\r\n.h-2\\.5 {\r\n\r\n height: 0.625rem\n}\r\n\r\n.h-3 {\r\n\r\n height: 0.75rem\n}\r\n\r\n.h-3\\.5 {\r\n\r\n height: 0.875rem\n}\r\n\r\n.h-4 {\r\n\r\n height: 1rem\n}\r\n\r\n.h-5 {\r\n\r\n height: 1.25rem\n}\r\n\r\n.h-6 {\r\n\r\n height: 1.5rem\n}\r\n\r\n.h-8 {\r\n\r\n height: 2rem\n}\r\n\r\n.h-full {\r\n\r\n height: 100%\n}\r\n\r\n.max-h-32 {\r\n\r\n max-height: 8rem\n}\r\n\r\n.max-h-\\[300px\\] {\r\n\r\n max-height: 300px\n}\r\n\r\n.max-h-\\[400px\\] {\r\n\r\n max-height: 400px\n}\r\n\r\n.max-h-\\[80vh\\] {\r\n\r\n max-height: 80vh\n}\r\n\r\n.w-10 {\r\n\r\n width: 2.5rem\n}\r\n\r\n.w-16 {\r\n\r\n width: 4rem\n}\r\n\r\n.w-2\\.5 {\r\n\r\n width: 0.625rem\n}\r\n\r\n.w-3 {\r\n\r\n width: 0.75rem\n}\r\n\r\n.w-3\\.5 {\r\n\r\n width: 0.875rem\n}\r\n\r\n.w-36 {\r\n\r\n width: 9rem\n}\r\n\r\n.w-4 {\r\n\r\n width: 1rem\n}\r\n\r\n.w-5 {\r\n\r\n width: 1.25rem\n}\r\n\r\n.w-6 {\r\n\r\n width: 1.5rem\n}\r\n\r\n.w-8 {\r\n\r\n width: 2rem\n}\r\n\r\n.w-9 {\r\n\r\n width: 2.25rem\n}\r\n\r\n.w-fit {\r\n\r\n width: -moz-fit-content;\r\n\r\n width: fit-content\n}\r\n\r\n.w-full {\r\n\r\n width: 100%\n}\r\n\r\n.min-w-0 {\r\n\r\n min-width: 0px\n}\r\n\r\n.max-w-2xl {\r\n\r\n max-width: 42rem\n}\r\n\r\n.max-w-\\[200px\\] {\r\n\r\n max-width: 200px\n}\r\n\r\n.max-w-full {\r\n\r\n max-width: 100%\n}\r\n\r\n.max-w-lg {\r\n\r\n max-width: 32rem\n}\r\n\r\n.max-w-xl {\r\n\r\n max-width: 36rem\n}\r\n\r\n.max-w-xs {\r\n\r\n max-width: 20rem\n}\r\n\r\n.flex-1 {\r\n\r\n flex: 1 1 0%\n}\r\n\r\n.flex-shrink-0 {\r\n\r\n flex-shrink: 0\n}\r\n\r\n.shrink-0 {\r\n\r\n flex-shrink: 0\n}\r\n\r\n.-translate-y-1\\/2 {\r\n\r\n --tw-translate-y: -50%;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-0\\.5 {\r\n\r\n --tw-translate-x: 0.125rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-3\\.5 {\r\n\r\n --tw-translate-x: 0.875rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.translate-x-4 {\r\n\r\n --tw-translate-x: 1rem;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n.scale-110 {\r\n\r\n --tw-scale-x: 1.1;\r\n\r\n --tw-scale-y: 1.1;\r\n\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))\n}\r\n\r\n@keyframes spin {\r\n\r\n to {\r\n\r\n transform: rotate(360deg)\n }\n}\r\n\r\n.animate-spin {\r\n\r\n animation: spin 1s linear infinite\n}\r\n\r\n.cursor-pointer {\r\n\r\n cursor: pointer\n}\r\n\r\n.select-none {\r\n\r\n -webkit-user-select: none;\r\n\r\n -moz-user-select: none;\r\n\r\n user-select: none\n}\r\n\r\n.appearance-none {\r\n\r\n -webkit-appearance: none;\r\n\r\n -moz-appearance: none;\r\n\r\n appearance: none\n}\r\n\r\n.grid-cols-2 {\r\n\r\n grid-template-columns: repeat(2, minmax(0, 1fr))\n}\r\n\r\n.grid-cols-3 {\r\n\r\n grid-template-columns: repeat(3, minmax(0, 1fr))\n}\r\n\r\n.grid-cols-8 {\r\n\r\n grid-template-columns: repeat(8, minmax(0, 1fr))\n}\r\n\r\n.flex-col {\r\n\r\n flex-direction: column\n}\r\n\r\n.flex-wrap {\r\n\r\n flex-wrap: wrap\n}\r\n\r\n.items-end {\r\n\r\n align-items: flex-end\n}\r\n\r\n.items-center {\r\n\r\n align-items: center\n}\r\n\r\n.justify-end {\r\n\r\n justify-content: flex-end\n}\r\n\r\n.justify-center {\r\n\r\n justify-content: center\n}\r\n\r\n.justify-between {\r\n\r\n justify-content: space-between\n}\r\n\r\n.gap-0\\.5 {\r\n\r\n gap: 0.125rem\n}\r\n\r\n.gap-1 {\r\n\r\n gap: 0.25rem\n}\r\n\r\n.gap-1\\.5 {\r\n\r\n gap: 0.375rem\n}\r\n\r\n.gap-2 {\r\n\r\n gap: 0.5rem\n}\r\n\r\n.gap-3 {\r\n\r\n gap: 0.75rem\n}\r\n\r\n.space-y-0\\.5 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.125rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse))\n}\r\n\r\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\r\n\r\n --tw-space-y-reverse: 0;\r\n\r\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\r\n\r\n margin-bottom: calc(1rem * var(--tw-space-y-reverse))\n}\r\n\r\n.overflow-hidden {\r\n\r\n overflow: hidden\n}\r\n\r\n.overflow-y-auto {\r\n\r\n overflow-y: auto\n}\r\n\r\n.truncate {\r\n\r\n overflow: hidden;\r\n\r\n text-overflow: ellipsis;\r\n\r\n white-space: nowrap\n}\r\n\r\n.rounded {\r\n\r\n border-radius: 0.25rem\n}\r\n\r\n.rounded-full {\r\n\r\n border-radius: 9999px\n}\r\n\r\n.rounded-lg {\r\n\r\n border-radius: var(--radius)\n}\r\n\r\n.rounded-md {\r\n\r\n border-radius: calc(var(--radius) - 2px)\n}\r\n\r\n.rounded-xl {\r\n\r\n border-radius: 0.75rem\n}\r\n\r\n.border {\r\n\r\n border-width: 1px\n}\r\n\r\n.border-2 {\r\n\r\n border-width: 2px\n}\r\n\r\n.border-b {\r\n\r\n border-bottom-width: 1px\n}\r\n\r\n.border-b-2 {\r\n\r\n border-bottom-width: 2px\n}\r\n\r\n.border-t {\r\n\r\n border-top-width: 1px\n}\r\n\r\n.border-solid {\r\n\r\n border-style: solid\n}\r\n\r\n.border-dashed {\r\n\r\n border-style: dashed\n}\r\n\r\n.border-blue-300 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(147 197 253 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-border {\r\n\r\n border-color: hsl(var(--border))\n}\r\n\r\n.border-destructive {\r\n\r\n border-color: hsl(var(--destructive))\n}\r\n\r\n.border-destructive\\/50 {\r\n\r\n border-color: hsl(var(--destructive) / 0.5)\n}\r\n\r\n.border-gray-100 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-gray-200 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-gray-300 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))\n}\r\n\r\n.border-primary {\r\n\r\n border-color: hsl(var(--primary))\n}\r\n\r\n.border-primary\\/50 {\r\n\r\n border-color: hsl(var(--primary) / 0.5)\n}\r\n\r\n.border-transparent {\r\n\r\n border-color: transparent\n}\r\n\r\n.bg-accent {\r\n\r\n background-color: hsl(var(--accent))\n}\r\n\r\n.bg-background {\r\n\r\n background-color: hsl(var(--background))\n}\r\n\r\n.bg-black\\/50 {\r\n\r\n background-color: rgb(0 0 0 / 0.5)\n}\r\n\r\n.bg-blue-100 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-blue-500 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-card {\r\n\r\n background-color: hsl(var(--card))\n}\r\n\r\n.bg-destructive\\/10 {\r\n\r\n background-color: hsl(var(--destructive) / 0.1)\n}\r\n\r\n.bg-destructive\\/5 {\r\n\r\n background-color: hsl(var(--destructive) / 0.05)\n}\r\n\r\n.bg-destructive\\/80 {\r\n\r\n background-color: hsl(var(--destructive) / 0.8)\n}\r\n\r\n.bg-foreground {\r\n\r\n background-color: hsl(var(--foreground))\n}\r\n\r\n.bg-gray-100 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-gray-300 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.bg-muted {\r\n\r\n background-color: hsl(var(--muted))\n}\r\n\r\n.bg-primary {\r\n\r\n background-color: hsl(var(--primary))\n}\r\n\r\n.bg-primary\\/10 {\r\n\r\n background-color: hsl(var(--primary) / 0.1)\n}\r\n\r\n.bg-primary\\/5 {\r\n\r\n background-color: hsl(var(--primary) / 0.05)\n}\r\n\r\n.bg-transparent {\r\n\r\n background-color: transparent\n}\r\n\r\n.bg-white {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.object-contain {\r\n\r\n -o-object-fit: contain;\r\n\r\n object-fit: contain\n}\r\n\r\n.object-cover {\r\n\r\n -o-object-fit: cover;\r\n\r\n object-fit: cover\n}\r\n\r\n.p-0\\.5 {\r\n\r\n padding: 0.125rem\n}\r\n\r\n.p-1 {\r\n\r\n padding: 0.25rem\n}\r\n\r\n.p-2 {\r\n\r\n padding: 0.5rem\n}\r\n\r\n.p-3 {\r\n\r\n padding: 0.75rem\n}\r\n\r\n.p-4 {\r\n\r\n padding: 1rem\n}\r\n\r\n.p-6 {\r\n\r\n padding: 1.5rem\n}\r\n\r\n.px-1\\.5 {\r\n\r\n padding-left: 0.375rem;\r\n\r\n padding-right: 0.375rem\n}\r\n\r\n.px-2 {\r\n\r\n padding-left: 0.5rem;\r\n\r\n padding-right: 0.5rem\n}\r\n\r\n.px-2\\.5 {\r\n\r\n padding-left: 0.625rem;\r\n\r\n padding-right: 0.625rem\n}\r\n\r\n.px-3 {\r\n\r\n padding-left: 0.75rem;\r\n\r\n padding-right: 0.75rem\n}\r\n\r\n.px-4 {\r\n\r\n padding-left: 1rem;\r\n\r\n padding-right: 1rem\n}\r\n\r\n.py-0\\.5 {\r\n\r\n padding-top: 0.125rem;\r\n\r\n padding-bottom: 0.125rem\n}\r\n\r\n.py-1 {\r\n\r\n padding-top: 0.25rem;\r\n\r\n padding-bottom: 0.25rem\n}\r\n\r\n.py-1\\.5 {\r\n\r\n padding-top: 0.375rem;\r\n\r\n padding-bottom: 0.375rem\n}\r\n\r\n.py-10 {\r\n\r\n padding-top: 2.5rem;\r\n\r\n padding-bottom: 2.5rem\n}\r\n\r\n.py-12 {\r\n\r\n padding-top: 3rem;\r\n\r\n padding-bottom: 3rem\n}\r\n\r\n.py-2 {\r\n\r\n padding-top: 0.5rem;\r\n\r\n padding-bottom: 0.5rem\n}\r\n\r\n.py-2\\.5 {\r\n\r\n padding-top: 0.625rem;\r\n\r\n padding-bottom: 0.625rem\n}\r\n\r\n.py-3 {\r\n\r\n padding-top: 0.75rem;\r\n\r\n padding-bottom: 0.75rem\n}\r\n\r\n.pb-2 {\r\n\r\n padding-bottom: 0.5rem\n}\r\n\r\n.pl-1 {\r\n\r\n padding-left: 0.25rem\n}\r\n\r\n.pl-7 {\r\n\r\n padding-left: 1.75rem\n}\r\n\r\n.pl-8 {\r\n\r\n padding-left: 2rem\n}\r\n\r\n.pl-9 {\r\n\r\n padding-left: 2.25rem\n}\r\n\r\n.pr-2 {\r\n\r\n padding-right: 0.5rem\n}\r\n\r\n.pr-3 {\r\n\r\n padding-right: 0.75rem\n}\r\n\r\n.pr-5 {\r\n\r\n padding-right: 1.25rem\n}\r\n\r\n.pr-9 {\r\n\r\n padding-right: 2.25rem\n}\r\n\r\n.pt-1 {\r\n\r\n padding-top: 0.25rem\n}\r\n\r\n.pt-2 {\r\n\r\n padding-top: 0.5rem\n}\r\n\r\n.pt-3 {\r\n\r\n padding-top: 0.75rem\n}\r\n\r\n.text-left {\r\n\r\n text-align: left\n}\r\n\r\n.text-center {\r\n\r\n text-align: center\n}\r\n\r\n.text-\\[10px\\] {\r\n\r\n font-size: 10px\n}\r\n\r\n.text-\\[11px\\] {\r\n\r\n font-size: 11px\n}\r\n\r\n.text-base {\r\n\r\n font-size: 1rem;\r\n\r\n line-height: 1.5rem\n}\r\n\r\n.text-sm {\r\n\r\n font-size: 0.875rem;\r\n\r\n line-height: 1.25rem\n}\r\n\r\n.text-xs {\r\n\r\n font-size: 0.75rem;\r\n\r\n line-height: 1rem\n}\r\n\r\n.font-medium {\r\n\r\n font-weight: 500\n}\r\n\r\n.font-semibold {\r\n\r\n font-weight: 600\n}\r\n\r\n.uppercase {\r\n\r\n text-transform: uppercase\n}\r\n\r\n.capitalize {\r\n\r\n text-transform: capitalize\n}\r\n\r\n.\\!italic {\r\n\r\n font-style: italic !important\n}\r\n\r\n.italic {\r\n\r\n font-style: italic\n}\r\n\r\n.tracking-wide {\r\n\r\n letter-spacing: 0.025em\n}\r\n\r\n.text-accent-foreground {\r\n\r\n color: hsl(var(--accent-foreground))\n}\r\n\r\n.text-background {\r\n\r\n color: hsl(var(--background))\n}\r\n\r\n.text-blue-700 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(29 78 216 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-destructive {\r\n\r\n color: hsl(var(--destructive))\n}\r\n\r\n.text-destructive-foreground {\r\n\r\n color: hsl(var(--destructive-foreground))\n}\r\n\r\n.text-foreground {\r\n\r\n color: hsl(var(--foreground))\n}\r\n\r\n.text-gray-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-600 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(75 85 99 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-700 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(55 65 81 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-800 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(31 41 55 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-gray-900 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(17 24 39 / var(--tw-text-opacity, 1))\n}\r\n\r\n.text-muted-foreground {\r\n\r\n color: hsl(var(--muted-foreground))\n}\r\n\r\n.text-muted-foreground\\/40 {\r\n\r\n color: hsl(var(--muted-foreground) / 0.4)\n}\r\n\r\n.text-primary {\r\n\r\n color: hsl(var(--primary))\n}\r\n\r\n.text-primary-foreground {\r\n\r\n color: hsl(var(--primary-foreground))\n}\r\n\r\n.text-red-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(248 113 113 / var(--tw-text-opacity, 1))\n}\r\n\r\n.underline {\r\n\r\n text-decoration-line: underline\n}\r\n\r\n.opacity-0 {\r\n\r\n opacity: 0\n}\r\n\r\n.opacity-50 {\r\n\r\n opacity: 0.5\n}\r\n\r\n.opacity-70 {\r\n\r\n opacity: 0.7\n}\r\n\r\n.shadow {\r\n\r\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\r\n\r\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.shadow-2xl {\r\n\r\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\r\n\r\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.shadow-sm {\r\n\r\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\r\n\r\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.ring-1 {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.ring-2 {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.ring-primary {\r\n\r\n --tw-ring-color: hsl(var(--primary))\n}\r\n\r\n.filter {\r\n\r\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)\n}\r\n\r\n.backdrop-blur-sm {\r\n\r\n --tw-backdrop-blur: blur(4px);\r\n\r\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)\n}\r\n\r\n.transition-all {\r\n\r\n transition-property: all;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-colors {\r\n\r\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-opacity {\r\n\r\n transition-property: opacity;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-shadow {\r\n\r\n transition-property: box-shadow;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.transition-transform {\r\n\r\n transition-property: transform;\r\n\r\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n transition-duration: 150ms\n}\r\n\r\n.duration-300 {\r\n\r\n transition-duration: 300ms\n}\r\n\r\n.placeholder\\:text-muted-foreground::-moz-placeholder {\r\n\r\n color: hsl(var(--muted-foreground))\n}\r\n\r\n.placeholder\\:text-muted-foreground::placeholder {\r\n\r\n color: hsl(var(--muted-foreground))\n}\r\n\r\n.hover\\:border-blue-400:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(96 165 250 / var(--tw-border-opacity, 1))\n}\r\n\r\n.hover\\:border-gray-300:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))\n}\r\n\r\n.hover\\:border-muted-foreground:hover {\r\n\r\n border-color: hsl(var(--muted-foreground))\n}\r\n\r\n.hover\\:border-muted-foreground\\/40:hover {\r\n\r\n border-color: hsl(var(--muted-foreground) / 0.4)\n}\r\n\r\n.hover\\:border-ring:hover {\r\n\r\n border-color: hsl(var(--ring))\n}\r\n\r\n.hover\\:bg-accent:hover {\r\n\r\n background-color: hsl(var(--accent))\n}\r\n\r\n.hover\\:bg-accent\\/30:hover {\r\n\r\n background-color: hsl(var(--accent) / 0.3)\n}\r\n\r\n.hover\\:bg-accent\\/50:hover {\r\n\r\n background-color: hsl(var(--accent) / 0.5)\n}\r\n\r\n.hover\\:bg-blue-50\\/50:hover {\r\n\r\n background-color: rgb(239 246 255 / 0.5)\n}\r\n\r\n.hover\\:bg-destructive:hover {\r\n\r\n background-color: hsl(var(--destructive))\n}\r\n\r\n.hover\\:bg-destructive\\/10:hover {\r\n\r\n background-color: hsl(var(--destructive) / 0.1)\n}\r\n\r\n.hover\\:bg-gray-100:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-gray-200:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-gray-50:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:bg-primary\\/90:hover {\r\n\r\n background-color: hsl(var(--primary) / 0.9)\n}\r\n\r\n.hover\\:bg-red-100:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1))\n}\r\n\r\n.hover\\:text-accent-foreground:hover {\r\n\r\n color: hsl(var(--accent-foreground))\n}\r\n\r\n.hover\\:text-blue-500:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(59 130 246 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:text-destructive:hover {\r\n\r\n color: hsl(var(--destructive))\n}\r\n\r\n.hover\\:text-destructive\\/80:hover {\r\n\r\n color: hsl(var(--destructive) / 0.8)\n}\r\n\r\n.hover\\:text-foreground:hover {\r\n\r\n color: hsl(var(--foreground))\n}\r\n\r\n.hover\\:text-gray-700:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(55 65 81 / var(--tw-text-opacity, 1))\n}\r\n\r\n.hover\\:shadow-md:hover {\r\n\r\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\r\n\r\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.hover\\:shadow-sm:hover {\r\n\r\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\r\n\r\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\r\n\r\n.focus\\:outline-none:focus {\r\n\r\n outline: 2px solid transparent;\r\n\r\n outline-offset: 2px\n}\r\n\r\n.focus\\:ring-1:focus {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.focus\\:ring-2:focus {\r\n\r\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\r\n\r\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\r\n\r\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)\n}\r\n\r\n.focus\\:ring-blue-500:focus {\r\n\r\n --tw-ring-opacity: 1;\r\n\r\n --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))\n}\r\n\r\n.focus\\:ring-ring:focus {\r\n\r\n --tw-ring-color: hsl(var(--ring))\n}\r\n\r\n.disabled\\:cursor-not-allowed:disabled {\r\n\r\n cursor: not-allowed\n}\r\n\r\n.disabled\\:opacity-30:disabled {\r\n\r\n opacity: 0.3\n}\r\n\r\n.disabled\\:opacity-40:disabled {\r\n\r\n opacity: 0.4\n}\r\n\r\n.disabled\\:opacity-50:disabled {\r\n\r\n opacity: 0.5\n}\r\n\r\n.group:hover .group-hover\\:opacity-100 {\r\n\r\n opacity: 1\n}\r\n\r\n@media (min-width: 640px) {\r\n\r\n .sm\\:grid-cols-10 {\r\n\r\n grid-template-columns: repeat(10, minmax(0, 1fr))\n }\r\n\r\n .sm\\:grid-cols-4 {\r\n\r\n grid-template-columns: repeat(4, minmax(0, 1fr))\n }\n}\r\n\r\n@media (min-width: 768px) {\r\n\r\n .md\\:grid-cols-12 {\r\n\r\n grid-template-columns: repeat(12, minmax(0, 1fr))\n }\r\n\r\n .md\\:grid-cols-5 {\r\n\r\n grid-template-columns: repeat(5, minmax(0, 1fr))\n }\n}\r\n\r\n@media (prefers-color-scheme: dark) {\r\n\r\n .dark\\:border-blue-700 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(29 78 216 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-600 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-700 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:border-gray-800 {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(31 41 55 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:bg-blue-900\\/40 {\r\n\r\n background-color: rgb(30 58 138 / 0.4)\n }\r\n\r\n .dark\\:bg-gray-600 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-700 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-800 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:bg-gray-900 {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:text-blue-300 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(147 197 253 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-100 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(243 244 246 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-200 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(229 231 235 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-300 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(209 213 219 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-400 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:text-gray-500 {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:border-blue-500:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:border-gray-600:hover {\r\n\r\n --tw-border-opacity: 1;\r\n\r\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-blue-950\\/20:hover {\r\n\r\n background-color: rgb(23 37 84 / 0.2)\n }\r\n\r\n .dark\\:hover\\:bg-gray-700:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-gray-800:hover {\r\n\r\n --tw-bg-opacity: 1;\r\n\r\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:bg-gray-800\\/50:hover {\r\n\r\n background-color: rgb(31 41 55 / 0.5)\n }\r\n\r\n .dark\\:hover\\:bg-red-900\\/30:hover {\r\n\r\n background-color: rgb(127 29 29 / 0.3)\n }\r\n\r\n .dark\\:hover\\:text-blue-400:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(96 165 250 / var(--tw-text-opacity, 1))\n }\r\n\r\n .dark\\:hover\\:text-gray-300:hover {\r\n\r\n --tw-text-opacity: 1;\r\n\r\n color: rgb(209 213 219 / var(--tw-text-opacity, 1))\n }\n}\r\n"],"mappings":";AAYA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,YAAU;AACd;AAEA,CAAC;AAEG,YAAU;AACd;AAEA,CAAC;AAEG,YAAU;AACd;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,QAAM;AACV;AAEA,CAAC;AAEG,QAAM;AACV;AAEA,CAAC;AAEG,QAAM;AACV;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,eAAa;AAEb,gBAAc;AAClB;AAEA,CAAC;AAEG,eAAa;AAEb,gBAAc;AAClB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,gBAAc,EAAE,EAAE;AACtB;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AAEP,SAAO;AACX;AAEA,CAAC;AAEG,SAAO;AACX;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,QAAM,EAAE,EAAE;AACd;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,oBAAkB;AAElB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AAEA,CAAC;AAEG,oBAAkB;AAElB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AAEA,CAAC;AAEG,oBAAkB;AAElB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AAEA,CAAC;AAEG,oBAAkB;AAElB,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AAEA,CAAC;AAEG,gBAAc;AAEd,gBAAc;AAEd,aAAW,UAAU,IAAI,iBAAiB,EAAE,IAAI,mBAAmB,OAAO,IAAI,cAAc,MAAM,IAAI,cAAc,MAAM,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI;AACrL;AAEA,WAAW;AAEP;AAEI,eAAW,OAAO;AACtB;AACJ;AAEA,CAAC;AAEG,aAAW,KAAK,GAAG,OAAO;AAC9B;AAEA,CAAC;AAEG,UAAQ;AACZ;AAEA,CAAC;AAEG,uBAAqB;AAElB,oBAAkB;AAEb,eAAa;AACzB;AAEA,CAAC;AAEG,sBAAoB;AAEjB,mBAAiB;AAEZ,cAAY;AACxB;AAEA,CAAC;AAEG,yBAAuB,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAC/C;AAEA,CAAC;AAEG,yBAAuB,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAC/C;AAEA,CAAC;AAEG,yBAAuB,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAC/C;AAEA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,mBAAiB;AACrB;AAEA,CAAC;AAEG,mBAAiB;AACrB;AAEA,CAAC;AAEG,mBAAiB;AACrB;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC;AAEG,OAAK;AACT;AAEA,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEnC,wBAAsB;AAEtB,cAAY,KAAK,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI;AAEzC,iBAAe,KAAK,SAAS,EAAE,IAAI;AACvC;AAEA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEhC,wBAAsB;AAEtB,cAAY,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI;AAExC,iBAAe,KAAK,QAAQ,EAAE,IAAI;AACtC;AAEA,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEnC,wBAAsB;AAEtB,cAAY,KAAK,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI;AAEzC,iBAAe,KAAK,SAAS,EAAE,IAAI;AACvC;AAEA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEhC,wBAAsB;AAEtB,cAAY,KAAK,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI;AAEvC,iBAAe,KAAK,OAAO,EAAE,IAAI;AACrC;AAEA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEhC,wBAAsB;AAEtB,cAAY,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI;AAExC,iBAAe,KAAK,QAAQ,EAAE,IAAI;AACtC;AAEA,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAEhC,wBAAsB;AAEtB,cAAY,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI;AAErC,iBAAe,KAAK,KAAK,EAAE,IAAI;AACnC;AAEA,CAAC;AAEG,YAAU;AACd;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,YAAU;AAEV,iBAAe;AAEf,eAAa;AACjB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe,IAAI;AACvB;AAEA,CAAC;AAEG,iBAAe,KAAK,IAAI,UAAU,EAAE;AACxC;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,uBAAqB;AACzB;AAEA,CAAC;AAEG,uBAAqB;AACzB;AAEA,CAAC;AAEG,oBAAkB;AACtB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,uBAAqB;AAErB,gBAAc,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC7D;AAEA,CAAC;AAEG,gBAAc,IAAI,IAAI;AAC1B;AAEA,CAAC;AAEG,gBAAc,IAAI,IAAI;AAC1B;AAEA,CAAC;AAEG,gBAAc,IAAI,IAAI,eAAe,EAAE;AAC3C;AAEA,CAAC;AAEG,uBAAqB;AAErB,gBAAc,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC7D;AAEA,CAAC;AAEG,uBAAqB;AAErB,gBAAc,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC7D;AAEA,CAAC;AAEG,uBAAqB;AAErB,gBAAc,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC7D;AAEA,CAAC;AAEG,gBAAc,IAAI,IAAI;AAC1B;AAEA,CAAC;AAEG,gBAAc,IAAI,IAAI,WAAW,EAAE;AACvC;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,oBAAkB,IAAI,EAAE,EAAE,EAAE,EAAE;AAClC;AAEA,CAAC;AAEG,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC;AAEG,mBAAiB;AAEjB,oBAAkB,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC5D;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI,eAAe,EAAE;AAC/C;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI,eAAe,EAAE;AAC/C;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI,eAAe,EAAE;AAC/C;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC;AAEG,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI,WAAW,EAAE;AAC3C;AAEA,CAAC;AAEG,oBAAkB,IAAI,IAAI,WAAW,EAAE;AAC3C;AAEA,CAAC;AAEG,oBAAkB;AACtB;AAEA,CAAC;AAEG,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC;AAEG,iBAAe;AAEZ,cAAY;AACnB;AAEA,CAAC;AAEG,iBAAe;AAEZ,cAAY;AACnB;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,gBAAc;AAEd,iBAAe;AACnB;AAEA,CAAC;AAEG,gBAAc;AAEd,iBAAe;AACnB;AAEA,CAAC;AAEG,gBAAc;AAEd,iBAAe;AACnB;AAEA,CAAC;AAEG,gBAAc;AAEd,iBAAe;AACnB;AAEA,CAAC;AAEG,gBAAc;AAEd,iBAAe;AACnB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,eAAa;AAEb,kBAAgB;AACpB;AAEA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,gBAAc;AAClB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,iBAAe;AACnB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AACf;AAEA,CAAC;AAEG,aAAW;AAEX,eAAa;AACjB;AAEA,CAAC;AAEG,aAAW;AAEX,eAAa;AACjB;AAEA,CAAC;AAEG,aAAW;AAEX,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,eAAa;AACjB;AAEA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,cAAY;AAChB;AAEA,CAAC;AAEG,kBAAgB;AACpB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,iBAAiB,EAAE;AAClD;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,iBAAiB,EAAE;AACjD;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,iBAAiB,EAAE;AACjD;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,iBAAiB,EAAE;AACjD;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,iBAAiB,EAAE;AACjD;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI,oBAAoB,EAAE;AACzC;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC;AAEG,qBAAmB;AAEnB,SAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,CAAC;AAEG,wBAAsB;AAC1B;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,WAAS;AACb;AAEA,CAAC;AAEG,eAAa,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;AAEtE,uBAAqB,EAAE,IAAI,IAAI,EAAE,IAAI,kBAAkB,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI;AAE5E;AAAA,IAAY,IAAI,uBAAuB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,gBAAgB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAAC;AAEG,eAAa,EAAE,KAAK,KAAK,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE;AAE3C,uBAAqB,EAAE,KAAK,KAAK,MAAM,IAAI;AAE3C;AAAA,IAAY,IAAI,uBAAuB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,gBAAgB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAAC;AAEG,eAAa,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAErC,uBAAqB,EAAE,IAAI,IAAI,EAAE,IAAI;AAErC;AAAA,IAAY,IAAI,uBAAuB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,gBAAgB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAAC;AAEG,2BAAyB,IAAI,iBAAiB,EAAE,EAAE,EAAE,IAAI,wBAAwB,IAAI;AAEpF,oBAAkB,IAAI,iBAAiB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,yBAAyB,IAAI;AAEzF;AAAA,IAAY,IAAI,wBAAwB;AAAA,IAAE,IAAI,iBAAiB;AAAA,IAAE,IAAI,WAAW,EAAE,EAAE,EAAE;AAC1F;AAEA,CAAC;AAEG,2BAAyB,IAAI,iBAAiB,EAAE,EAAE,EAAE,IAAI,wBAAwB,IAAI;AAEpF,oBAAkB,IAAI,iBAAiB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,yBAAyB,IAAI;AAEzF;AAAA,IAAY,IAAI,wBAAwB;AAAA,IAAE,IAAI,iBAAiB;AAAA,IAAE,IAAI,WAAW,EAAE,EAAE,EAAE;AAC1F;AAEA,CAAC;AAEG,mBAAiB,IAAI,IAAI;AAC7B;AAEA,CAAC;AAEG,UAAQ,IAAI,WAAW,IAAI,iBAAiB,IAAI,eAAe,IAAI,gBAAgB,IAAI,iBAAiB,IAAI,aAAa,IAAI,eAAe,IAAI,YAAY,IAAI;AACpK;AAEA,CAAC;AAEG,sBAAoB,KAAK;AAEzB,mBAAiB,IAAI,oBAAoB,IAAI,0BAA0B,IAAI,wBAAwB,IAAI,yBAAyB,IAAI,0BAA0B,IAAI,sBAAsB,IAAI,uBAAuB,IAAI,wBAAwB,IAAI;AACvP;AAEA,CAAC;AAEG,uBAAqB;AAErB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACzB;AAEA,CAAC;AAEG;AAAA,IAAqB,KAAK;AAAA,IAAE,gBAAgB;AAAA,IAAE,YAAY;AAAA,IAAE,qBAAqB;AAAA,IAAE,IAAI;AAAA,IAAE;AAEzF,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACzB;AAEA,CAAC;AAEG,uBAAqB;AAErB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACzB;AAEA,CAAC;AAEG,uBAAqB;AAErB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACzB;AAEA,CAAC;AAEG,uBAAqB;AAErB,8BAA4B,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAEtD,uBAAqB;AACzB;AAEA,CAAC;AAEG,uBAAqB;AACzB;AAEA,CAAC,kCAAkC;AAE/B,SAAO,IAAI,IAAI;AACnB;AAEA,CALC,kCAKkC;AAE/B,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC,sBAAsB;AAEnB,uBAAqB;AAErB,gBAAc,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC5D;AAEA,CAAC,sBAAsB;AAEnB,uBAAqB;AAErB,gBAAc,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC7D;AAEA,CAAC,8BAA8B;AAE3B,gBAAc,IAAI,IAAI;AAC1B;AAEA,CAAC,kCAAkC;AAE/B,gBAAc,IAAI,IAAI,oBAAoB,EAAE;AAChD;AAEA,CAAC,kBAAkB;AAEf,gBAAc,IAAI,IAAI;AAC1B;AAEA,CAAC,gBAAgB;AAEb,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC,oBAAoB;AAEjB,oBAAkB,IAAI,IAAI,UAAU,EAAE;AAC1C;AAEA,CAAC,oBAAoB;AAEjB,oBAAkB,IAAI,IAAI,UAAU,EAAE;AAC1C;AAEA,CAAC,qBAAqB;AAElB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE;AACxC;AAEA,CAAC,qBAAqB;AAElB,oBAAkB,IAAI,IAAI;AAC9B;AAEA,CAAC,yBAAyB;AAEtB,oBAAkB,IAAI,IAAI,eAAe,EAAE;AAC/C;AAEA,CAAC,kBAAkB;AAEf,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC,kBAAkB;AAEf,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC,iBAAiB;AAEd,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC,qBAAqB;AAElB,oBAAkB,IAAI,IAAI,WAAW,EAAE;AAC3C;AAEA,CAAC,iBAAiB;AAEd,mBAAiB;AAEjB,oBAAkB,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,eAAe,EAAE;AAC7D;AAEA,CAAC,6BAA6B;AAE1B,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC,oBAAoB;AAEjB,qBAAmB;AAEnB,SAAO,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACnD;AAEA,CAAC,uBAAuB;AAEpB,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC,2BAA2B;AAExB,SAAO,IAAI,IAAI,eAAe,EAAE;AACpC;AAEA,CAAC,sBAAsB;AAEnB,SAAO,IAAI,IAAI;AACnB;AAEA,CAAC,oBAAoB;AAEjB,qBAAmB;AAEnB,SAAO,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,iBAAiB,EAAE;AACjD;AAEA,CAAC,gBAAgB;AAEb,eAAa,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE;AAEzE,uBAAqB,EAAE,IAAI,IAAI,KAAK,IAAI,kBAAkB,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI;AAE/E;AAAA,IAAY,IAAI,uBAAuB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,gBAAgB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAAC,gBAAgB;AAEb,eAAa,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAErC,uBAAqB,EAAE,IAAI,IAAI,EAAE,IAAI;AAErC;AAAA,IAAY,IAAI,uBAAuB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI,gBAAgB,EAAE,EAAE,EAAE,MAAM;AAAA,IAAE,IAAI;AAC/F;AAEA,CAAC,mBAAmB;AAEhB,WAAS,IAAI,MAAM;AAEnB,kBAAgB;AACpB;AAEA,CAAC,aAAa;AAEV,2BAAyB,IAAI,iBAAiB,EAAE,EAAE,EAAE,IAAI,wBAAwB,IAAI;AAEpF,oBAAkB,IAAI,iBAAiB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,yBAAyB,IAAI;AAEzF;AAAA,IAAY,IAAI,wBAAwB;AAAA,IAAE,IAAI,iBAAiB;AAAA,IAAE,IAAI,WAAW,EAAE,EAAE,EAAE;AAC1F;AAEA,CAAC,aAAa;AAEV,2BAAyB,IAAI,iBAAiB,EAAE,EAAE,EAAE,IAAI,wBAAwB,IAAI;AAEpF,oBAAkB,IAAI,iBAAiB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,yBAAyB,IAAI;AAEzF;AAAA,IAAY,IAAI,wBAAwB;AAAA,IAAE,IAAI,iBAAiB;AAAA,IAAE,IAAI,WAAW,EAAE,EAAE,EAAE;AAC1F;AAEA,CAAC,oBAAoB;AAEjB,qBAAmB;AAEnB,mBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AAC7D;AAEA,CAAC,gBAAgB;AAEb,mBAAiB,IAAI,IAAI;AAC7B;AAEA,CAAC,4BAA4B;AAEzB,UAAQ;AACZ;AAEA,CAAC,oBAAoB;AAEjB,WAAS;AACb;AAEA,CAAC,oBAAoB;AAEjB,WAAS;AACb;AAEA,CAAC,oBAAoB;AAEjB,WAAS;AACb;AAEA,CAAC,KAAK,OAAO,CAAC;AAEV,WAAS;AACb;AAEA,QAAO,WAAY;AAEf,GAAC;AAEG,2BAAuB,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE;AAChD;AAEA,GAAC;AAEG,2BAAuB,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAC/C;AACJ;AAEA,QAAO,WAAY;AAEf,GAAC;AAEG,2BAAuB,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE;AAChD;AAEA,GAAC;AAEG,2BAAuB,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAC/C;AACJ;AAEA,QAAO,sBAAuB;AAE1B,GAAC;AAEG,yBAAqB;AAErB,kBAAc,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC3D;AAEA,GAAC;AAEG,yBAAqB;AAErB,kBAAc,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,mBAAmB,EAAE;AAC1D;AAEA,GAAC;AAEG,yBAAqB;AAErB,kBAAc,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,mBAAmB,EAAE;AAC1D;AAEA,GAAC;AAEG,yBAAqB;AAErB,kBAAc,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,mBAAmB,EAAE;AAC1D;AAEA,GAAC;AAEG,sBAAkB,IAAI,GAAG,GAAG,IAAI,EAAE;AACtC;AAEA,GAAC;AAEG,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC;AAEG,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC;AAEG,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC;AAEG,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC;AAEG,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AAEA,GAAC,4BAA4B;AAEzB,yBAAqB;AAErB,kBAAc,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,mBAAmB,EAAE;AAC5D;AAEA,GAAC,4BAA4B;AAEzB,yBAAqB;AAErB,kBAAc,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,mBAAmB,EAAE;AAC1D;AAEA,GAAC,4BAA4B;AAEzB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE;AACrC;AAEA,GAAC,wBAAwB;AAErB,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC,wBAAwB;AAErB,qBAAiB;AAEjB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,eAAe,EAAE;AAC1D;AAEA,GAAC,4BAA4B;AAEzB,sBAAkB,IAAI,GAAG,GAAG,GAAG,EAAE;AACrC;AAEA,GAAC,2BAA2B;AAExB,sBAAkB,IAAI,IAAI,GAAG,GAAG,EAAE;AACtC;AAEA,GAAC,0BAA0B;AAEvB,uBAAmB;AAEnB,WAAO,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACnD;AAEA,GAAC,0BAA0B;AAEvB,uBAAmB;AAEnB,WAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,iBAAiB,EAAE;AACpD;AACJ;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { A as ASSET_MIME_FILTERS, a as AssetItem, b as AssetMimeFilter, c as AssetPicker, d as AssetPickerMode, e as AssetPickerProps, f as AssetPickerSelection, g as AssetScope, h as AssetViewMode, u as useAssets } from './index-B8GE7cLC.js';
|
|
2
2
|
export { Condition, ConditionGroup, ConditionType, ConditionTypeMeta, ConditionsEditor, ConditionsEditorProps, SelectOption, VersionOption } from './components/ConditionsEditor/index.js';
|
|
3
3
|
export { I as IconPicker, a as IconPickerProps, b as IconSelection } from './IconPicker-BMMQLR5I.js';
|
|
4
|
+
export { CATEGORY_FALLBACKS, CATEGORY_LABELS, FontCategory, FontEntry, FontPicker, FontPickerProps, FontScope, FontSelection, FontSource, FontWeight, GOOGLE_FONTS_CATALOG, getGoogleFontUrl } from './components/FontPicker/index.js';
|
|
4
5
|
import { ClassValue } from 'clsx';
|
|
5
6
|
import 'react';
|
|
6
7
|
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { ASSET_MIME_FILTERS, AssetPicker, useAssets } from './chunk-
|
|
1
|
+
export { ASSET_MIME_FILTERS, AssetPicker, useAssets } from './chunk-WOCLZGRB.js';
|
|
2
2
|
export { ConditionsEditor } from './chunk-IVUFK6SS.js';
|
|
3
|
-
export { IconPicker } from './chunk-
|
|
3
|
+
export { IconPicker } from './chunk-DL2VRBE6.js';
|
|
4
|
+
export { CATEGORY_FALLBACKS, CATEGORY_LABELS, FontPicker, GOOGLE_FONTS_CATALOG, getGoogleFontUrl } from './chunk-4Z46C4MJ.js';
|
|
4
5
|
export { cn } from './chunk-L7FQ52F5.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proveanything/smartlinks-utils-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Reusable React components for SmartLinks microapps — Asset Picker, Conditions Editor, Icon Picker, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"./icon-picker": {
|
|
24
24
|
"types": "./dist/components/IconPicker/index.d.ts",
|
|
25
25
|
"import": "./dist/components/IconPicker/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./font-picker": {
|
|
28
|
+
"types": "./dist/components/FontPicker/index.d.ts",
|
|
29
|
+
"import": "./dist/components/FontPicker/index.js"
|
|
26
30
|
}
|
|
27
31
|
},
|
|
28
32
|
"sideEffects": false,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/IconPicker/icon-index.ts","../src/components/IconPicker/useIconSearch.ts","../src/components/IconPicker/IconPicker.tsx"],"names":["useRef","useState","useEffect","useCallback"],"mappings":"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","file":"chunk-HLFNSOPD.js","sourcesContent":["// =============================================================================\r\n// ICON PICKER — FA GraphQL API Client\r\n// =============================================================================\r\n// Search-only approach: uses FA's Algolia search for queries.\r\n// For browsing (no query), fetches letter-by-letter in background.\r\n// =============================================================================\r\n\r\nimport type { IconFamily, IconStyle } from './types';\r\n\r\nexport interface IconEntry {\r\n id: string;\r\n label: string;\r\n unicode: string;\r\n families: IconFamily[];\r\n styles: IconStyle[];\r\n isBrand: boolean;\r\n terms: string[];\r\n}\r\n\r\nconst FA_API = 'https://api.fontawesome.com';\r\nconst FA_VERSION = '7.x';\r\n\r\nconst SEARCH_QUERY = `\r\n query Search($version: String!, $query: String!, $first: Int) {\r\n search(version: $version, query: $query, first: $first) {\r\n id\r\n label\r\n unicode\r\n familyStylesByLicense {\r\n pro {\r\n family\r\n style\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ninterface FamilyStyleEntry { family: string; style: string; }\r\ninterface RawIcon {\r\n id: string;\r\n label: string;\r\n unicode: string;\r\n familyStylesByLicense: { pro: FamilyStyleEntry[] };\r\n}\r\n\r\nfunction mapRawIcon(raw: RawIcon): IconEntry {\r\n const proStyles = raw.familyStylesByLicense?.pro || [];\r\n const families = new Set<IconFamily>();\r\n const styles = new Set<IconStyle>();\r\n let isBrand = false;\r\n\r\n for (const fs of proStyles) {\r\n // FA API returns brand icons as {family:\"classic\", style:\"brands\"}\r\n if (fs.style === 'brands' || fs.family === 'brands') {\r\n families.add('brands');\r\n isBrand = true;\r\n } else if (fs.family === 'classic' || fs.family === 'sharp') {\r\n families.add('classic');\r\n if (['solid', 'regular', 'light'].includes(fs.style)) styles.add(fs.style as IconStyle);\r\n } else if (fs.family === 'duotone') {\r\n families.add('duotone');\r\n if (['solid', 'regular', 'light'].includes(fs.style)) styles.add(fs.style as IconStyle);\r\n }\r\n }\r\n\r\n return {\r\n id: raw.id, label: raw.label || raw.id, unicode: raw.unicode || '',\r\n families: [...families], styles: [...styles], isBrand,\r\n terms: [raw.id, raw.label?.toLowerCase() || ''],\r\n };\r\n}\r\n\r\nasync function gqlRequest<T>(query: string, variables: Record<string, any>): Promise<T> {\r\n const res = await fetch(FA_API, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ query, variables }),\r\n });\r\n if (!res.ok) throw new Error(`FA API error: ${res.status}`);\r\n const json = await res.json();\r\n if (json.errors?.length) throw new Error(json.errors[0].message);\r\n return json.data;\r\n}\r\n\r\n/** Search icons using FA's Algolia-powered search */\r\nexport async function searchIcons(query: string, first = 200): Promise<IconEntry[]> {\r\n const data = await gqlRequest<{ search: RawIcon[] }>(SEARCH_QUERY, {\r\n version: FA_VERSION, query, first,\r\n });\r\n return (data.search || []).map(mapRawIcon);\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Background catalog builder — fetches letter-by-letter\r\n// ---------------------------------------------------------------------------\r\nlet _catalog: Map<string, IconEntry> = new Map();\r\nlet _catalogListeners: Set<() => void> = new Set();\r\nlet _catalogLoading = false;\r\nlet _catalogLoaded = false;\r\n\r\nexport function getCatalog(): IconEntry[] {\r\n return [..._catalog.values()].sort((a, b) => a.id.localeCompare(b.id));\r\n}\r\n\r\nexport function isCatalogLoaded(): boolean { return _catalogLoaded; }\r\nexport function isCatalogLoading(): boolean { return _catalogLoading; }\r\n\r\nexport function subscribeCatalog(fn: () => void): () => void {\r\n _catalogListeners.add(fn);\r\n return () => { _catalogListeners.delete(fn); };\r\n}\r\n\r\nfunction notifyListeners() {\r\n for (const fn of _catalogListeners) fn();\r\n}\r\n\r\nconst BROWSE_QUERIES = [\r\n 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\r\n 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\r\n '0', '1', '2', '3', '4', '5',\r\n];\r\n\r\nexport async function loadCatalogInBackground(): Promise<void> {\r\n if (_catalogLoaded || _catalogLoading) return;\r\n _catalogLoading = true;\r\n notifyListeners();\r\n\r\n // Fetch in batches of 3 to avoid hammering the API\r\n for (let i = 0; i < BROWSE_QUERIES.length; i += 3) {\r\n const batch = BROWSE_QUERIES.slice(i, i + 3);\r\n const results = await Promise.all(\r\n batch.map(q => searchIcons(q, 200).catch(() => [] as IconEntry[]))\r\n );\r\n for (const icons of results) {\r\n for (const icon of icons) {\r\n if (!_catalog.has(icon.id)) _catalog.set(icon.id, icon);\r\n }\r\n }\r\n notifyListeners();\r\n }\r\n\r\n _catalogLoaded = true;\r\n _catalogLoading = false;\r\n notifyListeners();\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Class helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function toFaClass(id: string, family: IconFamily, style: IconStyle | null): string {\r\n if (family === 'brands') return `fa-brands fa-${id}`;\r\n const stylePrefix = style ? `fa-${style}` : 'fa-solid';\r\n if (family === 'duotone') return `fa-duotone ${stylePrefix} fa-${id}`;\r\n return `${stylePrefix} fa-${id}`;\r\n}\r\n\r\nexport function parseFaClass(cls: string): { id: string; family: IconFamily; style: IconStyle | null } | null {\r\n if (!cls) return null;\r\n const parts = cls.trim().split(/\\s+/);\r\n if (parts.length < 2) return null;\r\n\r\n const hasDuotone = parts.includes('fa-duotone');\r\n const hasBrands = parts.includes('fa-brands');\r\n const prefixes = new Set(['fa-solid', 'fa-regular', 'fa-light', 'fa-thin', 'fa-brands', 'fa-duotone']);\r\n const namePart = parts.find(p => p.startsWith('fa-') && !prefixes.has(p));\r\n if (!namePart) return null;\r\n const id = namePart.replace(/^fa-/, '');\r\n\r\n if (hasBrands) return { id, family: 'brands', style: null };\r\n\r\n let style: IconStyle = 'solid';\r\n if (parts.includes('fa-regular')) style = 'regular';\r\n else if (parts.includes('fa-light')) style = 'light';\r\n\r\n return { id, family: hasDuotone ? 'duotone' : 'classic', style };\r\n}\r\n","// =============================================================================\r\n// ICON PICKER — Search Hook (FA GraphQL API, search-first)\r\n// =============================================================================\r\n\r\nimport { useState, useEffect, useMemo, useCallback, useRef } from 'react';\r\nimport type { IconEntry } from './icon-index';\r\nimport { searchIcons, loadCatalogInBackground, getCatalog, isCatalogLoaded, subscribeCatalog } from './icon-index';\r\nimport type { IconFamily, IconStyle } from './types';\r\n\r\nexport interface UseIconSearchOptions {\r\n families?: IconFamily[];\r\n styles?: IconStyle[];\r\n pageSize?: number;\r\n}\r\n\r\nexport function useIconSearch(options: UseIconSearchOptions = {}) {\r\n const { families, styles, pageSize = 100 } = options;\r\n\r\n const [catalog, setCatalog] = useState<IconEntry[]>(() => getCatalog());\r\n const [catalogReady, setCatalogReady] = useState(() => isCatalogLoaded());\r\n const [searchResults, setSearchResults] = useState<IconEntry[] | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n const [searching, setSearching] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [query, setQuery] = useState('');\r\n const [activeFamily, setActiveFamily] = useState<IconFamily>('classic');\r\n const [activeStyle, setActiveStyle] = useState<IconStyle | null>(null);\r\n const [page, setPage] = useState(0);\r\n const debounceRef = useRef<ReturnType<typeof setTimeout>>();\r\n\r\n // Subscribe to catalog updates\r\n useEffect(() => {\r\n const unsub = subscribeCatalog(() => {\r\n setCatalog(getCatalog());\r\n setCatalogReady(isCatalogLoaded());\r\n });\r\n return unsub;\r\n }, []);\r\n\r\n // Start background catalog load\r\n useEffect(() => {\r\n loadCatalogInBackground()\r\n .then(() => setLoading(false))\r\n .catch(err => { setError(err.message); setLoading(false); });\r\n }, []);\r\n\r\n // Mark not loading once we have some icons\r\n useEffect(() => {\r\n if (catalog.length > 0) setLoading(false);\r\n }, [catalog.length]);\r\n\r\n // Debounced search via GraphQL API\r\n const setSearch = useCallback((q: string) => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n debounceRef.current = setTimeout(async () => {\r\n setPage(0);\r\n const trimmed = q.trim();\r\n setQuery(trimmed);\r\n\r\n if (!trimmed) {\r\n setSearchResults(null);\r\n setSearching(false);\r\n return;\r\n }\r\n\r\n setSearching(true);\r\n try {\r\n const results = await searchIcons(trimmed, 300);\r\n setSearchResults(results);\r\n } catch {\r\n setSearchResults(null);\r\n } finally {\r\n setSearching(false);\r\n }\r\n }, 250);\r\n }, []);\r\n\r\n const source = searchResults ?? catalog;\r\n\r\n const availableFamilies = useMemo(() => {\r\n const set = new Set<IconFamily>();\r\n for (const icon of source) {\r\n for (const f of icon.families) {\r\n if (!families || families.includes(f)) set.add(f);\r\n }\r\n }\r\n const order: IconFamily[] = ['classic', 'duotone', 'brands'];\r\n return order.filter(f => set.has(f));\r\n }, [source, families]);\r\n\r\n // Auto-switch family if current one has no results (e.g. searching \"github\" → brands)\r\n useEffect(() => {\r\n if (availableFamilies.length > 0 && !availableFamilies.includes(activeFamily)) {\r\n setActiveFamily(availableFamilies[0]);\r\n }\r\n }, [availableFamilies, activeFamily]);\r\n\r\n const availableStyles = useMemo(() => {\r\n if (activeFamily === 'brands') return [];\r\n const set = new Set<IconStyle>();\r\n for (const icon of source) {\r\n if (!icon.families.includes(activeFamily)) continue;\r\n for (const s of icon.styles) {\r\n if (!styles || styles.includes(s)) set.add(s);\r\n }\r\n }\r\n const order: IconStyle[] = ['solid', 'regular', 'light'];\r\n return order.filter(s => set.has(s));\r\n }, [source, activeFamily, styles]);\r\n\r\n const handleSetFamily = useCallback((f: IconFamily) => {\r\n setActiveFamily(f);\r\n setActiveStyle(null);\r\n setPage(0);\r\n }, []);\r\n\r\n const filtered = useMemo(() => {\r\n let result = source;\r\n result = result.filter(icon => icon.families.includes(activeFamily));\r\n if (activeStyle && activeFamily !== 'brands') {\r\n result = result.filter(icon => icon.styles.includes(activeStyle));\r\n }\r\n if (query && !searchResults) {\r\n const lower = query.toLowerCase();\r\n const terms = lower.split(/\\s+/);\r\n result = result.filter(icon =>\r\n terms.every(term => icon.terms.some(t => t.includes(term)))\r\n );\r\n }\r\n return result;\r\n }, [source, searchResults, activeFamily, activeStyle, query]);\r\n\r\n const totalPages = Math.ceil(filtered.length / pageSize);\r\n const pageIcons = useMemo(\r\n () => filtered.slice(page * pageSize, (page + 1) * pageSize),\r\n [filtered, page, pageSize]\r\n );\r\n\r\n return {\r\n loading: loading && catalog.length === 0,\r\n searching,\r\n error,\r\n query,\r\n setSearch,\r\n activeFamily,\r\n setActiveFamily: handleSetFamily,\r\n availableFamilies,\r\n activeStyle,\r\n setActiveStyle: useCallback((s: IconStyle | null) => { setActiveStyle(s); setPage(0); }, []),\r\n availableStyles,\r\n filtered,\r\n pageIcons,\r\n page,\r\n setPage,\r\n totalPages,\r\n totalCount: filtered.length,\r\n catalogReady,\r\n };\r\n}\r\n","// =============================================================================\r\n// ICON PICKER — Component (FA7 two-level hierarchy)\r\n// =============================================================================\r\n// Family tabs (Classic/Duotone/Brands) → Style pills (Solid/Regular/Light)\r\n// =============================================================================\r\n\r\nimport React, { useState, useCallback, useRef, useEffect } from 'react';\r\nimport type { IconPickerProps, IconSelection, IconFamily, IconStyle } from './types';\r\nimport { useIconSearch } from './useIconSearch';\r\nimport { toFaClass, parseFaClass } from './icon-index';\r\nimport { cn } from '../../utils/cn';\r\nimport { Search, X, ChevronLeft, ChevronRight, Loader2, AlertCircle, Smile } from 'lucide-react';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Family labels\r\n// ---------------------------------------------------------------------------\r\nconst FAMILY_LABELS: Record<IconFamily, string> = {\r\n classic: 'Classic',\r\n duotone: 'Duotone',\r\n brands: 'Brands',\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Icon Grid Content\r\n// ---------------------------------------------------------------------------\r\nconst IconPickerContent: React.FC<\r\n IconPickerProps & { onConfirm?: (icon: IconSelection) => void }\r\n> = ({\r\n value,\r\n onSelect,\r\n onConfirm,\r\n families: allowedFamilies,\r\n styles: allowedStyles,\r\n pageSize = 100,\r\n className,\r\n}) => {\r\n const {\r\n loading, searching, error, setSearch,\r\n activeFamily, setActiveFamily, availableFamilies,\r\n activeStyle, setActiveStyle, availableStyles,\r\n pageIcons, page, setPage, totalPages, totalCount,\r\n } = useIconSearch({ families: allowedFamilies, styles: allowedStyles, pageSize });\r\n\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const parsed = value ? parseFaClass(value) : null;\r\n const [hoveredId, setHoveredId] = useState<string | null>(null);\r\n\r\n useEffect(() => { inputRef.current?.focus(); }, [loading]);\r\n\r\n const handleSelect = useCallback((id: string) => {\r\n const family = activeFamily;\r\n const style: IconStyle | null = family === 'brands' ? null : (activeStyle || 'solid');\r\n const icon: IconSelection = {\r\n name: toFaClass(id, family, style),\r\n family,\r\n style,\r\n label: id,\r\n };\r\n onSelect?.(icon);\r\n onConfirm?.(icon);\r\n }, [onSelect, onConfirm, activeFamily, activeStyle]);\r\n\r\n if (loading) {\r\n return (\r\n <div className={cn('flex flex-col items-center justify-center py-12 gap-3', className)}>\r\n <Loader2 className=\"w-6 h-6 animate-spin text-muted-foreground\" />\r\n <p className=\"text-sm text-muted-foreground\">Loading icons…</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className={cn('flex flex-col items-center justify-center py-12 gap-3', className)}>\r\n <AlertCircle className=\"w-6 h-6 text-destructive\" />\r\n <p className=\"text-sm text-destructive\">{error}</p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={cn('space-y-3', className)}>\r\n {/* Search */}\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\r\n {searching && <Loader2 className=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 animate-spin text-muted-foreground\" />}\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n placeholder=\"Search icons…\"\r\n onChange={(e) => setSearch(e.target.value)}\r\n className=\"w-full pl-9 pr-9 py-2 text-sm rounded-md border border-border bg-transparent focus:outline-none focus:ring-1 focus:ring-ring\"\r\n />\r\n </div>\r\n\r\n {/* Family tabs (primary) */}\r\n {availableFamilies.length > 1 && (\r\n <div className=\"flex gap-1 border-b border-border pb-2\">\r\n {availableFamilies.map((f) => (\r\n <button\r\n key={f}\r\n onClick={() => setActiveFamily(f)}\r\n className={cn(\r\n 'px-3 py-1.5 text-xs font-semibold rounded-md transition-colors',\r\n f === activeFamily\r\n ? 'bg-primary text-primary-foreground'\r\n : 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'\r\n )}\r\n >\r\n {FAMILY_LABELS[f]}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Style pills (secondary) — not shown for Brands */}\r\n {availableStyles.length > 1 && (\r\n <div className=\"flex gap-1 flex-wrap items-center\">\r\n <button\r\n onClick={() => setActiveStyle(null)}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded-full transition-colors',\r\n !activeStyle\r\n ? 'bg-foreground text-background'\r\n : 'bg-muted text-muted-foreground hover:bg-accent'\r\n )}\r\n >\r\n All\r\n </button>\r\n {availableStyles.map((s) => (\r\n <button\r\n key={s}\r\n onClick={() => setActiveStyle(s === activeStyle ? null : s)}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded-full capitalize transition-colors',\r\n s === activeStyle\r\n ? 'bg-foreground text-background'\r\n : 'bg-muted text-muted-foreground hover:bg-accent'\r\n )}\r\n >\r\n {s}\r\n </button>\r\n ))}\r\n <span className=\"ml-auto text-[11px] text-muted-foreground\">\r\n {totalCount} icons\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* Grid */}\r\n {pageIcons.length === 0 ? (\r\n <div className=\"flex flex-col items-center justify-center py-10 gap-2\">\r\n <Smile className=\"w-6 h-6 text-muted-foreground/40\" />\r\n <p className=\"text-sm text-muted-foreground\">No icons found</p>\r\n </div>\r\n ) : (\r\n <div className=\"grid grid-cols-8 sm:grid-cols-10 md:grid-cols-12 gap-1\">\r\n {pageIcons.map((icon) => {\r\n const isSelected = parsed?.id === icon.id && parsed?.family === activeFamily;\r\n const isHovered = hoveredId === icon.id;\r\n const displayStyle: IconStyle | null = activeFamily === 'brands' ? null : (activeStyle || 'solid');\r\n const cssClass = toFaClass(icon.id, activeFamily, displayStyle);\r\n\r\n return (\r\n <button\r\n key={icon.id}\r\n onClick={() => handleSelect(icon.id)}\r\n onMouseEnter={() => setHoveredId(icon.id)}\r\n onMouseLeave={() => setHoveredId(null)}\r\n title={icon.label}\r\n className={cn(\r\n 'aspect-square flex items-center justify-center rounded-md text-base transition-all',\r\n isSelected\r\n ? 'bg-primary/10 text-primary ring-2 ring-primary'\r\n : isHovered\r\n ? 'bg-accent text-accent-foreground scale-110'\r\n : 'text-muted-foreground hover:bg-accent/50'\r\n )}\r\n >\r\n <i className={cssClass} />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n )}\r\n\r\n {/* Hover preview — fixed height to prevent layout shift */}\r\n <div className=\"h-6 text-center\">\r\n {hoveredId && (\r\n <code className=\"text-[11px] text-muted-foreground bg-muted px-2 py-0.5 rounded\">\r\n fa-{hoveredId}\r\n </code>\r\n )}\r\n </div>\r\n\r\n {/* Pagination */}\r\n {totalPages > 1 && (\r\n <div className=\"flex items-center justify-center gap-2\">\r\n <button\r\n onClick={() => setPage(Math.max(0, page - 1))}\r\n disabled={page === 0}\r\n className=\"p-1 rounded hover:bg-accent disabled:opacity-30 transition-colors\"\r\n >\r\n <ChevronLeft className=\"w-4 h-4\" />\r\n </button>\r\n <span className=\"text-xs text-muted-foreground\">\r\n {page + 1} / {totalPages}\r\n </span>\r\n <button\r\n onClick={() => setPage(Math.min(totalPages - 1, page + 1))}\r\n disabled={page >= totalPages - 1}\r\n className=\"p-1 rounded hover:bg-accent disabled:opacity-30 transition-colors\"\r\n >\r\n <ChevronRight className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Dialog wrapper\r\n// ---------------------------------------------------------------------------\r\nconst PickerDialog: React.FC<{\r\n open: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}> = ({ open, onClose, children }) => {\r\n if (!open) return null;\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\r\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\r\n <div className=\"relative z-10 w-full max-w-xl max-h-[80vh] bg-background rounded-xl shadow-2xl border border-border flex flex-col overflow-hidden mx-4\">\r\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-border\">\r\n <h3 className=\"text-sm font-semibold text-foreground\">Select Icon</h3>\r\n <button onClick={onClose} className=\"p-1 rounded hover:bg-accent transition-colors\">\r\n <X className=\"w-4 h-4 text-muted-foreground\" />\r\n </button>\r\n </div>\r\n <div className=\"flex-1 overflow-y-auto p-4\">{children}</div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public API\r\n// ---------------------------------------------------------------------------\r\nexport const IconPicker: React.FC<IconPickerProps> = (props) => {\r\n const { mode = 'inline', trigger, open: controlledOpen, onClose, value, onSelect, className, ...rest } = props;\r\n\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const isOpen = controlledOpen ?? internalOpen;\r\n\r\n const handleClose = useCallback(() => {\r\n setInternalOpen(false);\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n const handleSelectAndClose = useCallback((icon: IconSelection) => {\r\n onSelect?.(icon);\r\n handleClose();\r\n }, [onSelect, handleClose]);\r\n\r\n // Inline mode\r\n if (mode === 'inline') {\r\n return <IconPickerContent value={value} onSelect={onSelect} className={className} {...rest} />;\r\n }\r\n\r\n // Dialog mode\r\n const parsed = value ? parseFaClass(value) : null;\r\n const triggerElement = trigger || (\r\n <div className={cn(\r\n 'inline-flex items-center gap-2 px-3 py-2 rounded-md border border-border cursor-pointer',\r\n 'hover:border-ring transition-colors',\r\n className,\r\n )}>\r\n {parsed ? (\r\n <>\r\n <i className={value!} />\r\n <span className=\"text-sm text-muted-foreground\">fa-{parsed.id}</span>\r\n </>\r\n ) : (\r\n <span className=\"text-sm text-muted-foreground\">Choose icon…</span>\r\n )}\r\n <ChevronRight className=\"w-3.5 h-3.5 text-muted-foreground ml-auto\" />\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n <span onClick={() => setInternalOpen(true)} className=\"cursor-pointer\">{triggerElement}</span>\r\n <PickerDialog open={isOpen} onClose={handleClose}>\r\n <IconPickerContent value={value} onSelect={handleSelectAndClose} {...rest} />\r\n </PickerDialog>\r\n </>\r\n );\r\n};\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AssetPicker/types.ts","../src/components/AssetPicker/useAssets.ts","../src/components/AssetPicker/AssetGrid.tsx","../src/components/AssetPicker/UploadZone.tsx","../src/components/AssetPicker/UrlImport.tsx","../src/components/AssetPicker/AssetPickerContent.tsx","../src/components/AssetPicker/AssetPicker.tsx"],"names":["asset","useState","useRef","useEffect","useCallback","jsx","jsxs","Check","Loader2","X"],"mappings":"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","file":"chunk-V7JHAER7.js","sourcesContent":["// =============================================================================\r\n// ASSET PICKER — Types\r\n// =============================================================================\r\n\r\n/** Where to scope asset operations */\r\nexport type AssetScope =\r\n | { type: 'collection'; collectionId: string }\r\n | { type: 'product'; collectionId: string; productId: string }\r\n | { type: 'proof'; collectionId: string; productId: string; proofId: string };\r\n\r\n/** How the picker presents itself */\r\nexport type AssetPickerMode = 'inline' | 'dialog';\r\n\r\n/** An asset returned from SmartLinks */\r\nexport interface AssetItem {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mimeType?: string;\r\n size?: number;\r\n createdAt?: string;\r\n metadata?: Record<string, any>;\r\n assetType?: string;\r\n type?: string;\r\n collectionId?: string;\r\n hash?: string;\r\n thumbnails?: {\r\n x100?: string;\r\n x200?: string;\r\n x512?: string;\r\n [key: string]: string | undefined;\r\n };\r\n site?: string;\r\n cleanName?: string;\r\n}\r\n\r\n/** What the picker returns on selection */\r\nexport interface AssetPickerSelection {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mimeType?: string;\r\n size?: number;\r\n metadata?: Record<string, any>;\r\n thumbnails?: AssetItem['thumbnails'];\r\n}\r\n\r\n/** View mode for the asset grid */\r\nexport type AssetViewMode = 'grid' | 'list';\r\n\r\n/** MIME type filter presets */\r\nexport type AssetMimeFilter = 'all' | 'image' | 'video' | 'audio' | 'document' | 'pdf';\r\n\r\nexport const ASSET_MIME_FILTERS: { value: AssetMimeFilter; label: string; prefix?: string }[] = [\r\n { value: 'all', label: 'All files' },\r\n { value: 'image', label: 'Images', prefix: 'image/' },\r\n { value: 'video', label: 'Videos', prefix: 'video/' },\r\n { value: 'audio', label: 'Audio', prefix: 'audio/' },\r\n { value: 'document', label: 'Documents', prefix: 'application/' },\r\n { value: 'pdf', label: 'PDFs', prefix: 'application/pdf' },\r\n];\r\n\r\nexport interface AssetPickerProps {\r\n /** Scope determines which assets are listed and where uploads go */\r\n scope: AssetScope;\r\n\r\n /**\r\n * Optional product scope — when provided alongside a collection scope,\r\n * shows tabs for \"Collection\" and \"Product\" assets.\r\n */\r\n productScope?: { collectionId: string; productId: string };\r\n\r\n /** Display mode — inline grid or dialog/modal popup */\r\n mode?: AssetPickerMode;\r\n\r\n /** Whether to allow uploading new assets */\r\n allowUpload?: boolean;\r\n\r\n /** Whether to allow importing from URL */\r\n allowUrlImport?: boolean;\r\n\r\n /** Whether to allow selecting multiple assets */\r\n multiple?: boolean;\r\n\r\n /** Filter by MIME type prefix, e.g. 'image/' */\r\n accept?: string;\r\n\r\n /** Show the MIME type filter dropdown (default: true when accept is not set) */\r\n showTypeFilter?: boolean;\r\n\r\n /** Currently selected asset ID(s) */\r\n value?: string | string[];\r\n\r\n /** Called when selection changes */\r\n onSelect?: (selection: AssetPickerSelection | AssetPickerSelection[]) => void;\r\n\r\n /** Called when picker is dismissed (dialog mode) */\r\n onClose?: () => void;\r\n\r\n /** Whether the dialog is open (dialog mode, controlled) */\r\n open?: boolean;\r\n\r\n /** Trigger element for dialog mode (renders as the button that opens it) */\r\n trigger?: React.ReactNode;\r\n\r\n /** Additional CSS class */\r\n className?: string;\r\n\r\n /** Admin mode — required for upload/delete operations */\r\n admin?: boolean;\r\n\r\n /** Max number of assets to load per page */\r\n pageSize?: number;\r\n\r\n /** Whether to allow deleting assets (admin only) */\r\n allowDelete?: boolean;\r\n\r\n /** Default view mode */\r\n defaultView?: AssetViewMode;\r\n\r\n /** Placeholder text for empty state */\r\n emptyText?: string;\r\n}\r\n","// =============================================================================\r\n// ASSET PICKER — useAssets hook\r\n// =============================================================================\r\n// Manages asset fetching, uploading, and deletion via the SmartLinks SDK.\r\n\r\nimport { useState, useCallback, useEffect, useRef } from 'react';\r\nimport * as SL from '@proveanything/smartlinks';\r\nimport type { AssetScope, AssetItem } from './types';\r\n\r\ninterface UseAssetsOptions {\r\n scope: AssetScope;\r\n accept?: string;\r\n admin?: boolean;\r\n pageSize?: number;\r\n}\r\n\r\ninterface UseAssetsReturn {\r\n assets: AssetItem[];\r\n loading: boolean;\r\n error: string | null;\r\n refresh: () => Promise<void>;\r\n upload: (file: File, onProgress?: (pct: number) => void) => Promise<AssetItem | null>;\r\n uploadFromUrl: (url: string, name?: string) => Promise<AssetItem | null>;\r\n remove: (assetId: string) => Promise<boolean>;\r\n uploading: boolean;\r\n uploadProgress: number;\r\n}\r\n\r\nexport function useAssets({ scope, accept, admin, pageSize }: UseAssetsOptions): UseAssetsReturn {\r\n const [assets, setAssets] = useState<AssetItem[]>([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState<string | null>(null);\r\n const [uploading, setUploading] = useState(false);\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n mountedRef.current = true;\r\n return () => { mountedRef.current = false; };\r\n }, []);\r\n\r\n const fetchAssets = useCallback(async () => {\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n const result = await SL.asset.list({\r\n scope,\r\n mimeTypePrefix: accept,\r\n limit: pageSize,\r\n });\r\n if (mountedRef.current) {\r\n setAssets(result as AssetItem[]);\r\n }\r\n } catch (err: any) {\r\n if (mountedRef.current) {\r\n setError(err?.message || 'Failed to load assets');\r\n setAssets([]);\r\n }\r\n } finally {\r\n if (mountedRef.current) setLoading(false);\r\n }\r\n }, [scope.type, (scope as any).collectionId, (scope as any).productId, (scope as any).proofId, accept, pageSize]);\r\n\r\n useEffect(() => {\r\n fetchAssets();\r\n }, [fetchAssets]);\r\n\r\n const upload = useCallback(async (file: File, onProgress?: (pct: number) => void): Promise<AssetItem | null> => {\r\n setUploading(true);\r\n setUploadProgress(0);\r\n try {\r\n const result = await SL.asset.upload({\r\n file,\r\n scope,\r\n name: file.name,\r\n admin,\r\n onProgress: (pct: number) => {\r\n setUploadProgress(pct);\r\n onProgress?.(pct);\r\n },\r\n });\r\n if (mountedRef.current) {\r\n setAssets(prev => [result as AssetItem, ...prev]);\r\n }\r\n return result as AssetItem;\r\n } catch (err: any) {\r\n if (mountedRef.current) setError(err?.message || 'Upload failed');\r\n return null;\r\n } finally {\r\n if (mountedRef.current) {\r\n setUploading(false);\r\n setUploadProgress(0);\r\n }\r\n }\r\n }, [scope, admin]);\r\n\r\n const uploadFromUrl = useCallback(async (url: string, name?: string): Promise<AssetItem | null> => {\r\n setUploading(true);\r\n setUploadProgress(0);\r\n try {\r\n // Fetch the file from URL first, then upload\r\n const response = await fetch(url);\r\n if (!response.ok) throw new Error(`Failed to fetch: ${response.statusText}`);\r\n const blob = await response.blob();\r\n const fileName = name || url.split('/').pop()?.split('?')[0] || 'imported-file';\r\n const file = new File([blob], fileName, { type: blob.type });\r\n return await upload(file);\r\n } catch (err: any) {\r\n if (mountedRef.current) setError(err?.message || 'URL import failed');\r\n return null;\r\n } finally {\r\n if (mountedRef.current) {\r\n setUploading(false);\r\n setUploadProgress(0);\r\n }\r\n }\r\n }, [upload]);\r\n\r\n const remove = useCallback(async (assetId: string): Promise<boolean> => {\r\n try {\r\n await SL.asset.remove({ assetId, scope });\r\n if (mountedRef.current) {\r\n setAssets(prev => prev.filter(a => a.id !== assetId));\r\n }\r\n return true;\r\n } catch (err: any) {\r\n if (mountedRef.current) setError(err?.message || 'Delete failed');\r\n return false;\r\n }\r\n }, [scope]);\r\n\r\n return {\r\n assets,\r\n loading,\r\n error,\r\n refresh: fetchAssets,\r\n upload,\r\n uploadFromUrl,\r\n remove,\r\n uploading,\r\n uploadProgress,\r\n };\r\n}\r\n","// =============================================================================\r\n// ASSET PICKER — Asset Grid / List View\r\n// =============================================================================\r\n\r\nimport React from 'react';\r\nimport type { AssetItem, AssetViewMode } from './types';\r\nimport { cn } from '../../utils/cn';\r\nimport { Trash2, Check, FileIcon, Image, Film, Music, FileText } from 'lucide-react';\r\n\r\ninterface AssetGridProps {\r\n assets: AssetItem[];\r\n viewMode: AssetViewMode;\r\n selectedIds: Set<string>;\r\n onToggleSelect: (asset: AssetItem) => void;\r\n onDelete?: (assetId: string) => void;\r\n allowDelete?: boolean;\r\n}\r\n\r\nfunction getIcon(mimeType?: string) {\r\n if (!mimeType) return FileIcon;\r\n if (mimeType.startsWith('image/')) return Image;\r\n if (mimeType.startsWith('video/')) return Film;\r\n if (mimeType.startsWith('audio/')) return Music;\r\n return FileText;\r\n}\r\n\r\nfunction formatSize(bytes?: number): string {\r\n if (!bytes) return '';\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nfunction getThumbnail(asset: AssetItem): string | null {\r\n if (asset.thumbnails?.x200) return asset.thumbnails.x200;\r\n if (asset.thumbnails?.x100) return asset.thumbnails.x100;\r\n if (asset.thumbnails?.x512) return asset.thumbnails.x512;\r\n if (asset.mimeType?.startsWith('image/')) return asset.url;\r\n return null;\r\n}\r\n\r\nconst AssetGridItem: React.FC<{\r\n asset: AssetItem;\r\n selected: boolean;\r\n onToggle: () => void;\r\n onDelete?: () => void;\r\n allowDelete?: boolean;\r\n}> = ({ asset, selected, onToggle, onDelete, allowDelete }) => {\r\n const thumb = getThumbnail(asset);\r\n const Icon = getIcon(asset.mimeType);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'group relative rounded-lg border-2 cursor-pointer transition-all overflow-hidden',\r\n 'hover:shadow-md',\r\n selected\r\n ? 'border-blue-500 bg-blue-50 dark:bg-blue-950/30'\r\n : 'border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'\r\n )}\r\n onClick={onToggle}\r\n role=\"button\"\r\n tabIndex={0}\r\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onToggle(); } }}\r\n >\r\n {/* Thumbnail / Icon */}\r\n <div className=\"aspect-square bg-gray-100 dark:bg-gray-800 flex items-center justify-center overflow-hidden\">\r\n {thumb ? (\r\n <img\r\n src={thumb}\r\n alt={asset.name || asset.id}\r\n className=\"w-full h-full object-cover\"\r\n loading=\"lazy\"\r\n />\r\n ) : (\r\n <Icon className=\"w-8 h-8 text-gray-400 dark:text-gray-500\" />\r\n )}\r\n </div>\r\n\r\n {/* Name */}\r\n <div className=\"p-2\">\r\n <p className=\"text-xs font-medium truncate text-gray-700 dark:text-gray-300\" title={asset.name}>\r\n {asset.cleanName || asset.name || asset.id}\r\n </p>\r\n <p className=\"text-[10px] text-gray-400 dark:text-gray-500 mt-0.5\">\r\n {formatSize(asset.size)}\r\n {asset.mimeType && ` • ${asset.mimeType.split('/')[1]?.toUpperCase() || asset.mimeType}`}\r\n </p>\r\n </div>\r\n\r\n {/* Selection check */}\r\n {selected && (\r\n <div className=\"absolute top-2 right-2 w-5 h-5 rounded-full bg-blue-500 flex items-center justify-center\">\r\n <Check className=\"w-3 h-3 text-white\" />\r\n </div>\r\n )}\r\n\r\n {/* Delete button */}\r\n {allowDelete && onDelete && (\r\n <button\r\n className=\"absolute top-2 left-2 w-6 h-6 rounded-full bg-red-500/80 hover:bg-red-600 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity\"\r\n onClick={(e) => { e.stopPropagation(); onDelete(); }}\r\n title=\"Delete asset\"\r\n >\r\n <Trash2 className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst AssetListItem: React.FC<{\r\n asset: AssetItem;\r\n selected: boolean;\r\n onToggle: () => void;\r\n onDelete?: () => void;\r\n allowDelete?: boolean;\r\n}> = ({ asset, selected, onToggle, onDelete, allowDelete }) => {\r\n const thumb = getThumbnail(asset);\r\n const Icon = getIcon(asset.mimeType);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'group flex items-center gap-3 p-2 rounded-lg border cursor-pointer transition-all',\r\n 'hover:shadow-sm',\r\n selected\r\n ? 'border-blue-500 bg-blue-50 dark:bg-blue-950/30'\r\n : 'border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'\r\n )}\r\n onClick={onToggle}\r\n role=\"button\"\r\n tabIndex={0}\r\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onToggle(); } }}\r\n >\r\n {/* Thumbnail */}\r\n <div className=\"w-10 h-10 rounded bg-gray-100 dark:bg-gray-800 flex items-center justify-center overflow-hidden flex-shrink-0\">\r\n {thumb ? (\r\n <img src={thumb} alt={asset.name} className=\"w-full h-full object-cover\" loading=\"lazy\" />\r\n ) : (\r\n <Icon className=\"w-4 h-4 text-gray-400\" />\r\n )}\r\n </div>\r\n\r\n {/* Info */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium truncate text-gray-700 dark:text-gray-300\">\r\n {asset.cleanName || asset.name || asset.id}\r\n </p>\r\n <p className=\"text-xs text-gray-400 dark:text-gray-500\">\r\n {formatSize(asset.size)}\r\n {asset.mimeType && ` • ${asset.mimeType}`}\r\n </p>\r\n </div>\r\n\r\n {/* Selection */}\r\n {selected && (\r\n <div className=\"w-5 h-5 rounded-full bg-blue-500 flex items-center justify-center flex-shrink-0\">\r\n <Check className=\"w-3 h-3 text-white\" />\r\n </div>\r\n )}\r\n\r\n {/* Delete */}\r\n {allowDelete && onDelete && (\r\n <button\r\n className=\"w-6 h-6 rounded-full bg-red-500/80 hover:bg-red-600 text-white flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0\"\r\n onClick={(e) => { e.stopPropagation(); onDelete(); }}\r\n title=\"Delete\"\r\n >\r\n <Trash2 className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const AssetGrid: React.FC<AssetGridProps> = ({\r\n assets,\r\n viewMode,\r\n selectedIds,\r\n onToggleSelect,\r\n onDelete,\r\n allowDelete,\r\n}) => {\r\n if (assets.length === 0) return null;\r\n\r\n if (viewMode === 'list') {\r\n return (\r\n <div className=\"space-y-1\">\r\n {assets.map(asset => (\r\n <AssetListItem\r\n key={asset.id}\r\n asset={asset}\r\n selected={selectedIds.has(asset.id)}\r\n onToggle={() => onToggleSelect(asset)}\r\n onDelete={allowDelete && onDelete ? () => onDelete(asset.id) : undefined}\r\n allowDelete={allowDelete}\r\n />\r\n ))}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 gap-2\">\r\n {assets.map(asset => (\r\n <AssetGridItem\r\n key={asset.id}\r\n asset={asset}\r\n selected={selectedIds.has(asset.id)}\r\n onToggle={() => onToggleSelect(asset)}\r\n onDelete={allowDelete && onDelete ? () => onDelete(asset.id) : undefined}\r\n allowDelete={allowDelete}\r\n />\r\n ))}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// ASSET PICKER — Upload Zone (drag-and-drop + file picker + clipboard paste)\r\n// =============================================================================\r\n\r\nimport React, { useState, useCallback, useRef, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Upload, Loader2, Clipboard, X, Check, Pencil } from 'lucide-react';\r\n\r\ninterface UploadZoneProps {\r\n onFiles: (files: File[]) => void;\r\n accept?: string;\r\n multiple?: boolean;\r\n uploading?: boolean;\r\n uploadProgress?: number;\r\n className?: string;\r\n}\r\n\r\ninterface PastedFile {\r\n file: File;\r\n previewUrl: string;\r\n name: string;\r\n}\r\n\r\nexport const UploadZone: React.FC<UploadZoneProps> = ({\r\n onFiles,\r\n accept,\r\n multiple,\r\n uploading,\r\n uploadProgress = 0,\r\n className,\r\n}) => {\r\n const [dragOver, setDragOver] = useState(false);\r\n const [pastedFile, setPastedFile] = useState<PastedFile | null>(null);\r\n const [editingName, setEditingName] = useState(false);\r\n const [fileName, setFileName] = useState('');\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const nameInputRef = useRef<HTMLInputElement>(null);\r\n const zoneRef = useRef<HTMLDivElement>(null);\r\n\r\n // Cleanup preview URL on unmount\r\n useEffect(() => {\r\n return () => {\r\n if (pastedFile?.previewUrl) URL.revokeObjectURL(pastedFile.previewUrl);\r\n };\r\n }, [pastedFile]);\r\n\r\n // Focus name input when editing\r\n useEffect(() => {\r\n if (editingName) nameInputRef.current?.select();\r\n }, [editingName]);\r\n\r\n // Listen for paste events when this zone or its container is focused\r\n useEffect(() => {\r\n const handlePaste = (e: ClipboardEvent) => {\r\n if (uploading) return;\r\n const items = e.clipboardData?.items;\r\n if (!items) return;\r\n\r\n for (const item of Array.from(items)) {\r\n if (item.kind === 'file') {\r\n const file = item.getAsFile();\r\n if (!file) continue;\r\n\r\n // Check accept filter\r\n if (accept && !file.type.startsWith(accept.replace('*', ''))) continue;\r\n\r\n e.preventDefault();\r\n const previewUrl = file.type.startsWith('image/') ? URL.createObjectURL(file) : '';\r\n const defaultName = file.name === 'image.png'\r\n ? `pasted-${new Date().toISOString().slice(0, 19).replace(/[T:]/g, '-')}`\r\n : file.name.replace(/\\.[^.]+$/, '');\r\n setPastedFile({ file, previewUrl, name: defaultName });\r\n setFileName(defaultName);\r\n setEditingName(false);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('paste', handlePaste);\r\n return () => document.removeEventListener('paste', handlePaste);\r\n }, [uploading, accept]);\r\n\r\n const handleConfirmPaste = useCallback(() => {\r\n if (!pastedFile) return;\r\n const ext = pastedFile.file.name.includes('.') ? pastedFile.file.name.split('.').pop() : 'png';\r\n const finalName = `${fileName.trim() || 'pasted-image'}.${ext}`;\r\n const renamedFile = new File([pastedFile.file], finalName, { type: pastedFile.file.type });\r\n onFiles([renamedFile]);\r\n if (pastedFile.previewUrl) URL.revokeObjectURL(pastedFile.previewUrl);\r\n setPastedFile(null);\r\n }, [pastedFile, fileName, onFiles]);\r\n\r\n const handleCancelPaste = useCallback(() => {\r\n if (pastedFile?.previewUrl) URL.revokeObjectURL(pastedFile.previewUrl);\r\n setPastedFile(null);\r\n setEditingName(false);\r\n }, [pastedFile]);\r\n\r\n const handleDrag = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }, []);\r\n\r\n const handleDragIn = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragOver(true);\r\n }, []);\r\n\r\n const handleDragOut = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragOver(false);\r\n }, []);\r\n\r\n const handleDrop = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragOver(false);\r\n const files = Array.from(e.dataTransfer.files);\r\n if (files.length > 0) {\r\n onFiles(multiple ? files : [files[0]]);\r\n }\r\n }, [onFiles, multiple]);\r\n\r\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = Array.from(e.target.files || []);\r\n if (files.length > 0) {\r\n onFiles(multiple ? files : [files[0]]);\r\n }\r\n e.target.value = '';\r\n }, [onFiles, multiple]);\r\n\r\n // Pasted file preview state\r\n if (pastedFile) {\r\n return (\r\n <div className={cn(\r\n 'border-2 border-solid border-blue-400 dark:border-blue-500 rounded-lg p-4 transition-colors',\r\n className\r\n )}>\r\n <div className=\"flex flex-col items-center gap-3\">\r\n {/* Preview */}\r\n {pastedFile.previewUrl ? (\r\n <img\r\n src={pastedFile.previewUrl}\r\n alt=\"Pasted content\"\r\n className=\"max-h-32 max-w-full rounded-md object-contain border border-gray-200 dark:border-gray-700\"\r\n />\r\n ) : (\r\n <div className=\"w-16 h-16 rounded-md bg-gray-100 dark:bg-gray-800 flex items-center justify-center\">\r\n <Clipboard className=\"w-6 h-6 text-gray-400\" />\r\n </div>\r\n )}\r\n\r\n {/* File name */}\r\n <div className=\"flex items-center gap-1.5 w-full max-w-xs\">\r\n {editingName ? (\r\n <input\r\n ref={nameInputRef}\r\n type=\"text\"\r\n value={fileName}\r\n onChange={(e) => setFileName(e.target.value)}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') { setEditingName(false); handleConfirmPaste(); }\r\n if (e.key === 'Escape') setEditingName(false);\r\n }}\r\n onBlur={() => setEditingName(false)}\r\n className=\"flex-1 px-2 py-1 text-sm rounded border border-gray-300 dark:border-gray-600 bg-transparent focus:outline-none focus:ring-1 focus:ring-blue-500 text-center\"\r\n placeholder=\"File name\"\r\n />\r\n ) : (\r\n <button\r\n onClick={() => setEditingName(true)}\r\n className=\"flex items-center gap-1 mx-auto px-2 py-1 text-sm text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors\"\r\n title=\"Rename\"\r\n >\r\n <span className=\"truncate max-w-[200px]\">{fileName}</span>\r\n <Pencil className=\"w-3 h-3 flex-shrink-0 opacity-50\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Size info */}\r\n <p className=\"text-[10px] text-gray-400 dark:text-gray-500\">\r\n {pastedFile.file.type} · {(pastedFile.file.size / 1024).toFixed(1)} KB\r\n </p>\r\n\r\n {/* Actions */}\r\n <div className=\"flex gap-2\">\r\n <button\r\n onClick={handleCancelPaste}\r\n className=\"px-3 py-1.5 text-xs font-medium rounded-md border border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors flex items-center gap-1\"\r\n >\r\n <X className=\"w-3 h-3\" /> Cancel\r\n </button>\r\n <button\r\n onClick={handleConfirmPaste}\r\n className=\"px-3 py-1.5 text-xs font-medium rounded-md bg-blue-500 text-white hover:bg-blue-600 transition-colors flex items-center gap-1\"\r\n >\r\n <Check className=\"w-3 h-3\" /> Upload\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={zoneRef}\r\n className={cn(\r\n 'relative border-2 border-dashed rounded-lg p-4 text-center cursor-pointer transition-colors',\r\n dragOver\r\n ? 'border-blue-400 bg-blue-50 dark:bg-blue-950/30'\r\n : 'border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500',\r\n uploading && 'pointer-events-none opacity-70',\r\n className\r\n )}\r\n onDrag={handleDrag}\r\n onDragOver={handleDragIn}\r\n onDragEnter={handleDragIn}\r\n onDragLeave={handleDragOut}\r\n onDrop={handleDrop}\r\n onClick={() => inputRef.current?.click()}\r\n role=\"button\"\r\n tabIndex={0}\r\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') inputRef.current?.click(); }}\r\n >\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleInputChange}\r\n className=\"hidden\"\r\n />\r\n\r\n {uploading ? (\r\n <div className=\"flex flex-col items-center gap-2 py-2\">\r\n <Loader2 className=\"w-6 h-6 text-blue-500 animate-spin\" />\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n Uploading… {uploadProgress > 0 ? `${Math.round(uploadProgress)}%` : ''}\r\n </p>\r\n {uploadProgress > 0 && (\r\n <div className=\"w-full max-w-xs h-1.5 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden\">\r\n <div\r\n className=\"h-full bg-blue-500 rounded-full transition-all duration-300\"\r\n style={{ width: `${uploadProgress}%` }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"flex flex-col items-center gap-1 py-2\">\r\n <Upload className=\"w-6 h-6 text-gray-400 dark:text-gray-500\" />\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n Drop files here, <span className=\"text-blue-500 underline\">browse</span>, or paste from clipboard\r\n </p>\r\n <p className=\"text-[10px] text-gray-400 dark:text-gray-500 flex items-center gap-1\">\r\n <Clipboard className=\"w-3 h-3\" /> Ctrl+V / ⌘V to paste\r\n </p>\r\n {accept && (\r\n <p className=\"text-[10px] text-gray-400 dark:text-gray-500\">\r\n Accepts: {accept}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// ASSET PICKER — URL Import Panel\r\n// =============================================================================\r\n\r\nimport React, { useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Link, Loader2 } from 'lucide-react';\r\n\r\ninterface UrlImportProps {\r\n onImport: (url: string, name?: string) => Promise<any>;\r\n importing?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const UrlImport: React.FC<UrlImportProps> = ({\r\n onImport,\r\n importing,\r\n className,\r\n}) => {\r\n const [url, setUrl] = useState('');\r\n const [error, setError] = useState('');\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (!url.trim()) return;\r\n\r\n try {\r\n new URL(url.trim());\r\n } catch {\r\n setError('Please enter a valid URL');\r\n return;\r\n }\r\n\r\n setError('');\r\n const result = await onImport(url.trim());\r\n if (result) setUrl('');\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} className={cn('flex gap-2', className)}>\r\n <div className=\"relative flex-1\">\r\n <Link className=\"absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400\" />\r\n <input\r\n type=\"text\"\r\n value={url}\r\n onChange={(e) => { setUrl(e.target.value); setError(''); }}\r\n placeholder=\"https://example.com/image.png\"\r\n disabled={importing}\r\n className={cn(\r\n 'w-full pl-8 pr-3 py-2 text-sm rounded-md border bg-transparent',\r\n 'placeholder:text-gray-400 dark:placeholder:text-gray-500',\r\n 'focus:outline-none focus:ring-2 focus:ring-blue-500',\r\n error\r\n ? 'border-red-400 dark:border-red-500'\r\n : 'border-gray-300 dark:border-gray-600'\r\n )}\r\n />\r\n </div>\r\n <button\r\n type=\"submit\"\r\n disabled={!url.trim() || importing}\r\n className={cn(\r\n 'px-3 py-2 text-sm font-medium rounded-md transition-colors',\r\n 'bg-blue-500 text-white hover:bg-blue-600',\r\n 'disabled:opacity-50 disabled:cursor-not-allowed',\r\n 'flex items-center gap-1.5'\r\n )}\r\n >\r\n {importing ? <Loader2 className=\"w-3.5 h-3.5 animate-spin\" /> : null}\r\n Import\r\n </button>\r\n {error && <p className=\"text-xs text-red-500 mt-1 absolute\">{error}</p>}\r\n </form>\r\n );\r\n};\r\n","// =============================================================================\r\n// ASSET PICKER — Main Content (shared between inline and dialog modes)\r\n// =============================================================================\r\n\r\nimport React, { useState, useCallback, useMemo } from 'react';\r\nimport type { AssetPickerProps, AssetItem, AssetPickerSelection, AssetViewMode, AssetMimeFilter, AssetScope } from './types';\r\nimport { ASSET_MIME_FILTERS } from './types';\r\nimport { useAssets } from './useAssets';\r\nimport { AssetGrid } from './AssetGrid';\r\nimport { UploadZone } from './UploadZone';\r\nimport { UrlImport } from './UrlImport';\r\nimport { cn } from '../../utils/cn';\r\nimport {\r\n RefreshCw,\r\n LayoutGrid,\r\n List,\r\n Search,\r\n Link,\r\n Loader2,\r\n AlertCircle,\r\n ImageOff,\r\n Filter,\r\n} from 'lucide-react';\r\n\r\ntype Tab = 'browse' | 'upload' | 'url';\r\ntype ScopeTab = 'collection' | 'product';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Scope-specific asset panel (fetches & renders assets for one scope)\r\n// ---------------------------------------------------------------------------\r\nconst ScopedAssetBrowser: React.FC<{\r\n scope: AssetScope;\r\n accept?: string;\r\n admin: boolean;\r\n pageSize: number;\r\n viewMode: AssetViewMode;\r\n search: string;\r\n selectedIds: Set<string>;\r\n onToggleSelect: (asset: AssetItem) => void;\r\n onDelete?: (assetId: string) => void;\r\n allowDelete: boolean;\r\n emptyText?: string;\r\n}> = ({ scope, accept, admin, pageSize, viewMode, search, selectedIds, onToggleSelect, onDelete, allowDelete, emptyText }) => {\r\n const { assets, loading, error, refresh } = useAssets({ scope, accept, admin, pageSize });\r\n\r\n const filteredAssets = useMemo(() => {\r\n if (!search.trim()) return assets;\r\n const q = search.toLowerCase();\r\n return assets.filter(a =>\r\n (a.name || '').toLowerCase().includes(q) ||\r\n (a.cleanName || '').toLowerCase().includes(q) ||\r\n (a.mimeType || '').toLowerCase().includes(q)\r\n );\r\n }, [assets, search]);\r\n\r\n if (loading && assets.length === 0) {\r\n return (\r\n <div className=\"flex items-center justify-center py-12\">\r\n <Loader2 className=\"w-6 h-6 text-gray-400 animate-spin\" />\r\n </div>\r\n );\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className=\"flex items-center gap-2 p-3 rounded-md bg-red-50 dark:bg-red-950/30 text-red-600 dark:text-red-400 text-sm\">\r\n <AlertCircle className=\"w-4 h-4 flex-shrink-0\" />\r\n {error}\r\n <button onClick={refresh} className=\"ml-auto underline text-xs\">Retry</button>\r\n </div>\r\n );\r\n }\r\n\r\n if (filteredAssets.length === 0) {\r\n return (\r\n <div className=\"flex flex-col items-center justify-center py-12 text-gray-400 dark:text-gray-500\">\r\n <ImageOff className=\"w-8 h-8 mb-2\" />\r\n <p className=\"text-sm\">{emptyText || 'No assets found'}</p>\r\n {search && <p className=\"text-xs mt-1\">Try adjusting your search</p>}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <AssetGrid\r\n assets={filteredAssets}\r\n viewMode={viewMode}\r\n selectedIds={selectedIds}\r\n onToggleSelect={onToggleSelect}\r\n onDelete={admin && allowDelete ? onDelete : undefined}\r\n allowDelete={admin && allowDelete}\r\n />\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Main content component\r\n// ---------------------------------------------------------------------------\r\nexport const AssetPickerContent: React.FC<AssetPickerProps & {\r\n onConfirm?: (selection: AssetPickerSelection[]) => void;\r\n}> = ({\r\n scope,\r\n productScope,\r\n allowUpload = true,\r\n allowUrlImport = true,\r\n multiple = false,\r\n accept: acceptProp,\r\n showTypeFilter,\r\n value,\r\n onSelect,\r\n admin = false,\r\n allowDelete = false,\r\n defaultView = 'grid',\r\n emptyText,\r\n pageSize = 50,\r\n onConfirm,\r\n}) => {\r\n // For upload/url-import we still need one canonical useAssets instance\r\n const { assets, upload, uploadFromUrl, uploading, uploadProgress } = useAssets({\r\n scope,\r\n accept: acceptProp,\r\n admin,\r\n pageSize,\r\n });\r\n\r\n const [tab, setTab] = useState<Tab>('browse');\r\n const [viewMode, setViewMode] = useState<AssetViewMode>(defaultView);\r\n const [search, setSearch] = useState('');\r\n const [mimeFilter, setMimeFilter] = useState<AssetMimeFilter>('all');\r\n const [selectedIds, setSelectedIds] = useState<Set<string>>(() => {\r\n if (!value) return new Set();\r\n return new Set(Array.isArray(value) ? value : [value]);\r\n });\r\n\r\n // Determine if we show scope tabs\r\n const hasProductScope = !!productScope;\r\n const [scopeTab, setScopeTab] = useState<ScopeTab>('collection');\r\n\r\n // Compute effective accept/mimeTypePrefix\r\n const effectiveAccept = useMemo(() => {\r\n // If the caller locked to a specific MIME, use that always\r\n if (acceptProp) return acceptProp;\r\n // Otherwise use filter dropdown\r\n const entry = ASSET_MIME_FILTERS.find(f => f.value === mimeFilter);\r\n return entry?.prefix;\r\n }, [acceptProp, mimeFilter]);\r\n\r\n // Show filter dropdown when accept is not locked by caller\r\n const shouldShowFilter = showTypeFilter ?? !acceptProp;\r\n\r\n // Active scope for the browse panel\r\n const activeScope: AssetScope = useMemo(() => {\r\n if (hasProductScope && scopeTab === 'product') {\r\n return { type: 'product', collectionId: productScope!.collectionId, productId: productScope!.productId };\r\n }\r\n return scope;\r\n }, [scope, productScope, scopeTab, hasProductScope]);\r\n\r\n const toSelection = useCallback((asset: AssetItem): AssetPickerSelection => ({\r\n id: asset.id,\r\n url: asset.url,\r\n name: asset.name,\r\n mimeType: asset.mimeType,\r\n size: asset.size,\r\n metadata: asset.metadata,\r\n thumbnails: asset.thumbnails,\r\n }), []);\r\n\r\n const handleToggleSelect = useCallback((asset: AssetItem) => {\r\n setSelectedIds(prev => {\r\n const next = new Set(prev);\r\n if (next.has(asset.id)) {\r\n next.delete(asset.id);\r\n } else {\r\n if (!multiple) next.clear();\r\n next.add(asset.id);\r\n }\r\n\r\n // Fire onSelect immediately for inline mode\r\n if (!onConfirm) {\r\n // We need to find the asset from the selection — it came from the grid\r\n const sel = toSelection(asset);\r\n if (multiple) {\r\n // For multiple we can't easily reconstruct all assets from both scopes,\r\n // but the toggle gives us the latest set\r\n if (next.has(asset.id)) {\r\n onSelect?.([sel]); // Simplified — caller should track cumulative\r\n }\r\n } else {\r\n onSelect?.(next.has(asset.id) ? sel : { id: '', url: '', name: '' });\r\n }\r\n }\r\n\r\n return next;\r\n });\r\n }, [multiple, onSelect, onConfirm, toSelection]);\r\n\r\n const handleUploadFiles = useCallback(async (files: File[]) => {\r\n for (const file of files) {\r\n const result = await upload(file);\r\n if (result && !multiple) {\r\n setSelectedIds(new Set([result.id]));\r\n onSelect?.(toSelection(result));\r\n }\r\n }\r\n setTab('browse');\r\n }, [upload, multiple, onSelect, toSelection]);\r\n\r\n const handleUrlImport = useCallback(async (url: string) => {\r\n const result = await uploadFromUrl(url);\r\n if (result) {\r\n setTab('browse');\r\n if (!multiple) {\r\n setSelectedIds(new Set([result.id]));\r\n onSelect?.(toSelection(result));\r\n }\r\n }\r\n return result;\r\n }, [uploadFromUrl, multiple, onSelect, toSelection]);\r\n\r\n const handleDelete = useCallback(async (assetId: string) => {\r\n // Deletion is handled inside ScopedAssetBrowser's own useAssets\r\n // but we still need to deselect\r\n setSelectedIds(prev => {\r\n const next = new Set(prev);\r\n next.delete(assetId);\r\n return next;\r\n });\r\n }, []);\r\n\r\n const handleConfirm = useCallback(() => {\r\n const selectedAssets = assets.filter(a => selectedIds.has(a.id)).map(toSelection);\r\n onConfirm?.(selectedAssets);\r\n }, [assets, selectedIds, onConfirm, toSelection]);\r\n\r\n const tabs: { key: Tab; label: string; show: boolean }[] = [\r\n { key: 'browse', label: 'Browse', show: true },\r\n { key: 'upload', label: 'Upload', show: allowUpload },\r\n { key: 'url', label: 'URL', show: allowUrlImport },\r\n ];\r\n\r\n return (\r\n <div className=\"smartlinks-ui-asset-picker-content flex flex-col gap-3\">\r\n {/* Toolbar */}\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n {/* Tab buttons */}\r\n <div className=\"flex gap-1 bg-gray-100 dark:bg-gray-800 rounded-md p-0.5\">\r\n {tabs.filter(t => t.show).map(t => (\r\n <button\r\n key={t.key}\r\n onClick={() => setTab(t.key)}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded transition-colors flex items-center gap-1',\r\n tab === t.key\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n {t.label}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"flex-1\" />\r\n\r\n {/* MIME type filter dropdown */}\r\n {tab === 'browse' && shouldShowFilter && (\r\n <div className=\"relative flex items-center gap-1\">\r\n <Filter className=\"w-3.5 h-3.5 text-gray-400\" />\r\n <select\r\n value={mimeFilter}\r\n onChange={(e) => setMimeFilter(e.target.value as AssetMimeFilter)}\r\n className=\"text-xs py-1 pl-1 pr-5 rounded-md border border-gray-300 dark:border-gray-600 bg-transparent text-gray-700 dark:text-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500 appearance-none cursor-pointer\"\r\n >\r\n {ASSET_MIME_FILTERS.map(f => (\r\n <option key={f.value} value={f.value}>{f.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n )}\r\n\r\n {/* Search (browse mode) */}\r\n {tab === 'browse' && (\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-gray-400\" />\r\n <input\r\n type=\"text\"\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n placeholder=\"Search…\"\r\n className=\"pl-7 pr-2 py-1 text-xs rounded-md border border-gray-300 dark:border-gray-600 bg-transparent focus:outline-none focus:ring-1 focus:ring-blue-500 w-36\"\r\n />\r\n </div>\r\n )}\r\n\r\n {/* View toggle */}\r\n {tab === 'browse' && (\r\n <div className=\"flex gap-0.5 bg-gray-100 dark:bg-gray-800 rounded p-0.5\">\r\n <button\r\n onClick={() => setViewMode('grid')}\r\n className={cn('p-1 rounded', viewMode === 'grid' ? 'bg-white dark:bg-gray-700 shadow-sm' : '')}\r\n title=\"Grid view\"\r\n >\r\n <LayoutGrid className=\"w-3.5 h-3.5 text-gray-600 dark:text-gray-400\" />\r\n </button>\r\n <button\r\n onClick={() => setViewMode('list')}\r\n className={cn('p-1 rounded', viewMode === 'list' ? 'bg-white dark:bg-gray-700 shadow-sm' : '')}\r\n title=\"List view\"\r\n >\r\n <List className=\"w-3.5 h-3.5 text-gray-600 dark:text-gray-400\" />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Scope tabs (collection vs product) */}\r\n {tab === 'browse' && hasProductScope && (\r\n <div className=\"flex gap-1 border-b border-gray-200 dark:border-gray-700\">\r\n <button\r\n onClick={() => setScopeTab('collection')}\r\n className={cn(\r\n 'px-3 py-1.5 text-xs font-medium border-b-2 transition-colors -mb-px',\r\n scopeTab === 'collection'\r\n ? 'border-blue-500 text-blue-600 dark:text-blue-400'\r\n : 'border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n Collection Assets\r\n </button>\r\n <button\r\n onClick={() => setScopeTab('product')}\r\n className={cn(\r\n 'px-3 py-1.5 text-xs font-medium border-b-2 transition-colors -mb-px',\r\n scopeTab === 'product'\r\n ? 'border-blue-500 text-blue-600 dark:text-blue-400'\r\n : 'border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n Product Assets\r\n </button>\r\n </div>\r\n )}\r\n\r\n {/* Content */}\r\n {tab === 'browse' && (\r\n <ScopedAssetBrowser\r\n key={`${activeScope.type}-${(activeScope as any).productId || ''}-${effectiveAccept || 'all'}`}\r\n scope={activeScope}\r\n accept={effectiveAccept}\r\n admin={admin}\r\n pageSize={pageSize}\r\n viewMode={viewMode}\r\n search={search}\r\n selectedIds={selectedIds}\r\n onToggleSelect={handleToggleSelect}\r\n onDelete={handleDelete}\r\n allowDelete={allowDelete}\r\n emptyText={emptyText}\r\n />\r\n )}\r\n\r\n {tab === 'upload' && (\r\n <UploadZone\r\n onFiles={handleUploadFiles}\r\n accept={acceptProp}\r\n multiple={multiple}\r\n uploading={uploading}\r\n uploadProgress={uploadProgress}\r\n />\r\n )}\r\n\r\n {tab === 'url' && (\r\n <UrlImport\r\n onImport={handleUrlImport}\r\n importing={uploading}\r\n />\r\n )}\r\n\r\n {/* Confirm bar (dialog mode) */}\r\n {onConfirm && (\r\n <div className=\"flex items-center justify-between pt-2 border-t border-gray-200 dark:border-gray-700\">\r\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\r\n {selectedIds.size} selected\r\n </span>\r\n <button\r\n onClick={handleConfirm}\r\n disabled={selectedIds.size === 0}\r\n className={cn(\r\n 'px-4 py-1.5 text-sm font-medium rounded-md transition-colors',\r\n 'bg-blue-500 text-white hover:bg-blue-600',\r\n 'disabled:opacity-50 disabled:cursor-not-allowed'\r\n )}\r\n >\r\n Confirm\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// ASSET PICKER — Main Component\r\n// =============================================================================\r\n// Supports inline and dialog modes. Dialog mode renders a trigger element and\r\n// opens a modal with the picker content.\r\n\r\nimport React, { useState, useCallback } from 'react';\r\nimport type { AssetPickerProps, AssetPickerSelection } from './types';\r\nimport { AssetPickerContent } from './AssetPickerContent';\r\nimport { cn } from '../../utils/cn';\r\nimport { X } from 'lucide-react';\r\n\r\n// Lightweight built-in dialog — no dependency on shadcn or radix\r\nconst PickerDialog: React.FC<{\r\n open: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}> = ({ open, onClose, children }) => {\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\r\n {/* Backdrop */}\r\n <div\r\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\r\n onClick={onClose}\r\n />\r\n {/* Panel */}\r\n <div className=\"relative z-10 w-full max-w-2xl max-h-[80vh] bg-white dark:bg-gray-900 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden mx-4\">\r\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700\">\r\n <h3 className=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">\r\n Select Asset\r\n </h3>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors\"\r\n >\r\n <X className=\"w-4 h-4 text-gray-500\" />\r\n </button>\r\n </div>\r\n <div className=\"flex-1 overflow-y-auto p-4\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * SmartLinks Asset Picker\r\n *\r\n * Browse, upload, and select media assets scoped to a collection, product, or proof.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Inline mode\r\n * <AssetPicker\r\n * scope={{ type: 'collection', collectionId: 'abc123' }}\r\n * onSelect={(asset) => console.log('Selected:', asset)}\r\n * />\r\n *\r\n * // Dialog mode\r\n * <AssetPicker\r\n * scope={{ type: 'collection', collectionId: 'abc123' }}\r\n * mode=\"dialog\"\r\n * trigger={<button>Choose Image</button>}\r\n * onSelect={(asset) => console.log('Selected:', asset)}\r\n * />\r\n * ```\r\n */\r\nexport const AssetPicker: React.FC<AssetPickerProps> = (props) => {\r\n const { mode = 'inline', open: controlledOpen, onClose, trigger, onSelect, multiple, className } = props;\r\n\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const isOpen = controlledOpen ?? internalOpen;\r\n\r\n const handleOpen = useCallback(() => {\r\n setInternalOpen(true);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setInternalOpen(false);\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n const handleConfirm = useCallback((selections: AssetPickerSelection[]) => {\r\n if (multiple) {\r\n onSelect?.(selections);\r\n } else {\r\n onSelect?.(selections[0] || { id: '', url: '', name: '' });\r\n }\r\n handleClose();\r\n }, [onSelect, multiple, handleClose]);\r\n\r\n // Inline mode — render content directly\r\n if (mode === 'inline') {\r\n return (\r\n <div className={cn('smartlinks-ui-asset-picker', className)}>\r\n <AssetPickerContent {...props} />\r\n </div>\r\n );\r\n }\r\n\r\n // Dialog mode\r\n return (\r\n <>\r\n {trigger && (\r\n <span onClick={handleOpen} className=\"cursor-pointer\">\r\n {trigger}\r\n </span>\r\n )}\r\n <PickerDialog open={isOpen} onClose={handleClose}>\r\n <AssetPickerContent {...props} onConfirm={handleConfirm} />\r\n </PickerDialog>\r\n </>\r\n );\r\n};\r\n"]}
|