@mieweb/ui 0.3.0-dev.99 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brands/bluehive.cjs +3 -3
- package/dist/brands/bluehive.css +1 -1
- package/dist/brands/bluehive.js +1 -1
- package/dist/brands/ccme.cjs +18 -0
- package/dist/brands/ccme.cjs.map +1 -0
- package/dist/brands/ccme.css +185 -0
- package/dist/brands/ccme.d.cts +17 -0
- package/dist/brands/ccme.d.ts +17 -0
- package/dist/brands/ccme.js +3 -0
- package/dist/brands/ccme.js.map +1 -0
- package/dist/brands/index.cjs +23 -18
- package/dist/brands/index.d.cts +2 -0
- package/dist/brands/index.d.ts +2 -0
- package/dist/brands/index.js +7 -6
- package/dist/brands/mieweb.css +1 -1
- package/dist/brands/ozwell.cjs +2 -2
- package/dist/brands/ozwell.css +1 -1
- package/dist/brands/ozwell.js +1 -1
- package/dist/brands/webchart.css +1 -1
- package/dist/{chunk-JYAWYBA3.js → chunk-2DS3RJ2D.js} +9 -2
- package/dist/chunk-2DS3RJ2D.js.map +1 -0
- package/dist/{chunk-FYEK4RZ3.js → chunk-3CJBUAJ4.js} +10 -2
- package/dist/chunk-3CJBUAJ4.js.map +1 -0
- package/dist/{chunk-IWU7H3YS.cjs → chunk-3M4P2KMG.cjs} +7 -5
- package/dist/chunk-3M4P2KMG.cjs.map +1 -0
- package/dist/{chunk-XB7QCKK7.js → chunk-3T7QGLNB.js} +3 -3
- package/dist/{chunk-XB7QCKK7.js.map → chunk-3T7QGLNB.js.map} +1 -1
- package/dist/{chunk-VACI5SP7.cjs → chunk-5MAGWW5X.cjs} +4 -2
- package/dist/chunk-5MAGWW5X.cjs.map +1 -0
- package/dist/{chunk-IGWABMSM.js → chunk-5YUBQIC7.js} +3 -3
- package/dist/{chunk-IGWABMSM.js.map → chunk-5YUBQIC7.js.map} +1 -1
- package/dist/{chunk-JWUVVPKM.js → chunk-6555OYRU.js} +7 -5
- package/dist/chunk-6555OYRU.js.map +1 -0
- package/dist/{chunk-4O3WJY4C.cjs → chunk-CV4CVGLO.cjs} +4 -2
- package/dist/chunk-CV4CVGLO.cjs.map +1 -0
- package/dist/{chunk-JW5GWKV7.js → chunk-CW66SO5O.js} +3 -3
- package/dist/{chunk-JW5GWKV7.js.map → chunk-CW66SO5O.js.map} +1 -1
- package/dist/{chunk-PU6ZC4GI.js → chunk-EZKRAW2X.js} +4 -4
- package/dist/chunk-EZKRAW2X.js.map +1 -0
- package/dist/{chunk-WZBCK7KG.cjs → chunk-FQ3UCZUX.cjs} +3 -2
- package/dist/chunk-FQ3UCZUX.cjs.map +1 -0
- package/dist/{chunk-CVF4HRWL.js → chunk-HYEJLKXI.js} +4 -2
- package/dist/chunk-HYEJLKXI.js.map +1 -0
- package/dist/{chunk-E35GUUTC.cjs → chunk-IBZXDX4L.cjs} +9 -2
- package/dist/chunk-IBZXDX4L.cjs.map +1 -0
- package/dist/{chunk-WTDCNXZO.js → chunk-IUFDGB5O.js} +3 -3
- package/dist/{chunk-WTDCNXZO.js.map → chunk-IUFDGB5O.js.map} +1 -1
- package/dist/{chunk-TGCY5FNL.js → chunk-IYIYL2SQ.js} +3 -2
- package/dist/chunk-IYIYL2SQ.js.map +1 -0
- package/dist/{chunk-YTZPVEIO.js → chunk-JLBT76WH.js} +4 -4
- package/dist/chunk-JLBT76WH.js.map +1 -0
- package/dist/{chunk-JV7UJGBM.js → chunk-K3IVCUPP.js} +5 -4
- package/dist/chunk-K3IVCUPP.js.map +1 -0
- package/dist/{chunk-CJQXWFIW.js → chunk-KAKH2UZA.js} +4 -4
- package/dist/chunk-KAKH2UZA.js.map +1 -0
- package/dist/{chunk-AWUADXYI.cjs → chunk-KJPOFUF5.cjs} +3 -3
- package/dist/{chunk-AWUADXYI.cjs.map → chunk-KJPOFUF5.cjs.map} +1 -1
- package/dist/{chunk-MIGLLTTD.cjs → chunk-KQAXXJ4G.cjs} +10 -2
- package/dist/chunk-KQAXXJ4G.cjs.map +1 -0
- package/dist/{chunk-66S4PT6C.cjs → chunk-LCQGAOAZ.cjs} +3 -3
- package/dist/{chunk-66S4PT6C.cjs.map → chunk-LCQGAOAZ.cjs.map} +1 -1
- package/dist/{chunk-WJU3KLVV.cjs → chunk-LOTMAKUG.cjs} +4 -4
- package/dist/chunk-LOTMAKUG.cjs.map +1 -0
- package/dist/{chunk-C4QQAUYN.js → chunk-MPOWJVV4.js} +4 -2
- package/dist/chunk-MPOWJVV4.js.map +1 -0
- package/dist/{chunk-GFZNSSSN.js → chunk-NERS5ZT6.js} +3 -3
- package/dist/{chunk-GFZNSSSN.js.map → chunk-NERS5ZT6.js.map} +1 -1
- package/dist/{chunk-MXQNNKPX.cjs → chunk-NINI4WVS.cjs} +4 -2
- package/dist/chunk-NINI4WVS.cjs.map +1 -0
- package/dist/{chunk-OGOFYY22.js → chunk-OX2RIVN7.js} +4 -2
- package/dist/chunk-OX2RIVN7.js.map +1 -0
- package/dist/{chunk-EAXY5X33.cjs → chunk-OXGUG57G.cjs} +5 -4
- package/dist/chunk-OXGUG57G.cjs.map +1 -0
- package/dist/{chunk-2LF7PSSX.cjs → chunk-PJAQDAMZ.cjs} +4 -4
- package/dist/chunk-PJAQDAMZ.cjs.map +1 -0
- package/dist/{chunk-QO6U5VOT.cjs → chunk-RR2MJBGV.cjs} +3 -3
- package/dist/{chunk-QO6U5VOT.cjs.map → chunk-RR2MJBGV.cjs.map} +1 -1
- package/dist/chunk-SCQRJPSV.js +98 -0
- package/dist/chunk-SCQRJPSV.js.map +1 -0
- package/dist/{chunk-GXQFRLTN.cjs → chunk-U7VQUOLS.cjs} +3 -3
- package/dist/{chunk-GXQFRLTN.cjs.map → chunk-U7VQUOLS.cjs.map} +1 -1
- package/dist/chunk-UCGUA3QV.cjs +100 -0
- package/dist/chunk-UCGUA3QV.cjs.map +1 -0
- package/dist/{chunk-QITBJX4A.cjs → chunk-WNJRS7Y7.cjs} +3 -3
- package/dist/{chunk-QITBJX4A.cjs.map → chunk-WNJRS7Y7.cjs.map} +1 -1
- package/dist/{chunk-YDJUUR4Y.js → chunk-WO5CAOAN.js} +3 -2
- package/dist/chunk-WO5CAOAN.js.map +1 -0
- package/dist/{chunk-ZKFVGYBK.cjs → chunk-XP6HELVG.cjs} +4 -4
- package/dist/chunk-XP6HELVG.cjs.map +1 -0
- package/dist/{chunk-2VCAWAPC.cjs → chunk-ZNZZCB2M.cjs} +3 -2
- package/dist/chunk-ZNZZCB2M.cjs.map +1 -0
- package/dist/components/AudioPlayer/index.cjs +6 -6
- package/dist/components/AudioPlayer/index.js +1 -1
- package/dist/components/Avatar/index.cjs +5 -5
- package/dist/components/Avatar/index.js +1 -1
- package/dist/components/Card/index.cjs +15 -15
- package/dist/components/Card/index.js +1 -1
- package/dist/components/DateInput/index.cjs +2 -2
- package/dist/components/DateInput/index.js +1 -1
- package/dist/components/Dropdown/index.cjs +7 -7
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/Modal/index.cjs +10 -10
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/PhoneInput/index.cjs +3 -3
- package/dist/components/PhoneInput/index.js +1 -1
- package/dist/components/Progress/index.cjs +6 -6
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/QuickAction/index.cjs +6 -6
- package/dist/components/QuickAction/index.js +1 -1
- package/dist/components/Radio/index.cjs +4 -4
- package/dist/components/Radio/index.js +1 -1
- package/dist/components/Text/index.cjs +4 -4
- package/dist/components/Text/index.js +1 -1
- package/dist/esheet.cjs +17 -0
- package/dist/esheet.cjs.map +1 -0
- package/dist/esheet.d.cts +3 -0
- package/dist/esheet.d.ts +3 -0
- package/dist/esheet.js +4 -0
- package/dist/esheet.js.map +1 -0
- package/dist/index.cjs +1169 -623
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +59 -4
- package/dist/index.d.ts +59 -4
- package/dist/index.js +803 -264
- package/dist/index.js.map +1 -1
- package/dist/mieweb-6JCRWKSO.cjs +18 -0
- package/dist/{mieweb-4XR6UKDQ.cjs.map → mieweb-6JCRWKSO.cjs.map} +1 -1
- package/dist/mieweb-GIKY6EMN.js +3 -0
- package/dist/{mieweb-N6UMH4MU.js.map → mieweb-GIKY6EMN.js.map} +1 -1
- package/dist/styles/init.css +2 -2
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/utils/index.cjs +5 -5
- package/dist/utils/index.js +1 -1
- package/dist/webchart-37OYZ42V.cjs +18 -0
- package/dist/{webchart-H3BHYNHB.cjs.map → webchart-37OYZ42V.cjs.map} +1 -1
- package/dist/webchart-72YMJ45P.js +3 -0
- package/dist/{webchart-F6EIMC3I.js.map → webchart-72YMJ45P.js.map} +1 -1
- package/package.json +36 -2
- package/dist/chunk-2LF7PSSX.cjs.map +0 -1
- package/dist/chunk-2VCAWAPC.cjs.map +0 -1
- package/dist/chunk-4O3WJY4C.cjs.map +0 -1
- package/dist/chunk-C4QQAUYN.js.map +0 -1
- package/dist/chunk-CJQXWFIW.js.map +0 -1
- package/dist/chunk-CVF4HRWL.js.map +0 -1
- package/dist/chunk-E35GUUTC.cjs.map +0 -1
- package/dist/chunk-EAXY5X33.cjs.map +0 -1
- package/dist/chunk-FYEK4RZ3.js.map +0 -1
- package/dist/chunk-IWU7H3YS.cjs.map +0 -1
- package/dist/chunk-JV7UJGBM.js.map +0 -1
- package/dist/chunk-JWUVVPKM.js.map +0 -1
- package/dist/chunk-JYAWYBA3.js.map +0 -1
- package/dist/chunk-MIGLLTTD.cjs.map +0 -1
- package/dist/chunk-MXQNNKPX.cjs.map +0 -1
- package/dist/chunk-OGOFYY22.js.map +0 -1
- package/dist/chunk-PU6ZC4GI.js.map +0 -1
- package/dist/chunk-TGCY5FNL.js.map +0 -1
- package/dist/chunk-VACI5SP7.cjs.map +0 -1
- package/dist/chunk-WJU3KLVV.cjs.map +0 -1
- package/dist/chunk-WZBCK7KG.cjs.map +0 -1
- package/dist/chunk-YDJUUR4Y.js.map +0 -1
- package/dist/chunk-YTZPVEIO.js.map +0 -1
- package/dist/chunk-ZKFVGYBK.cjs.map +0 -1
- package/dist/mieweb-4XR6UKDQ.cjs +0 -18
- package/dist/mieweb-N6UMH4MU.js +0 -3
- package/dist/webchart-F6EIMC3I.js +0 -3
- package/dist/webchart-H3BHYNHB.cjs +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/QuickAction/QuickAction.tsx"],"names":[],"mappings":"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","file":"chunk-3CJBUAJ4.js","sourcesContent":["import * as React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst quickActionIconVariants = cva(\n ['flex items-center justify-center rounded-xl', 'h-10 w-10'],\n {\n variants: {\n color: {\n primary:\n 'bg-primary-100 text-primary-800 dark:bg-primary-900/50 dark:text-primary-400',\n green:\n 'bg-emerald-100 text-emerald-600 dark:bg-emerald-900/50 dark:text-emerald-400',\n purple:\n 'bg-violet-100 text-violet-600 dark:bg-violet-900/50 dark:text-violet-400',\n orange:\n 'bg-orange-100 text-orange-600 dark:bg-orange-900/50 dark:text-orange-400',\n blue: 'bg-sky-100 text-sky-600 dark:bg-sky-900/50 dark:text-sky-400',\n red: 'bg-rose-100 text-rose-600 dark:bg-rose-900/50 dark:text-rose-400',\n amber:\n 'bg-amber-100 text-amber-600 dark:bg-amber-900/50 dark:text-amber-400',\n neutral:\n 'bg-neutral-100 text-neutral-600 dark:bg-neutral-800 dark:text-neutral-400',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n }\n);\n\nconst quickActionVariants = cva(\n [\n 'flex items-center gap-3 rounded-xl border p-4 text-left',\n 'transition-colors duration-200',\n 'border-neutral-200 bg-white',\n 'hover:border-primary-300 hover:bg-primary-50',\n 'dark:border-neutral-700 dark:bg-neutral-800',\n 'dark:hover:border-primary-700 dark:hover:bg-primary-900/20',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n 'dark:focus-visible:ring-offset-neutral-900',\n ],\n {\n variants: {\n disabled: {\n true: [\n 'opacity-50 cursor-not-allowed',\n 'hover:border-neutral-200 hover:bg-white',\n 'dark:hover:border-neutral-700 dark:hover:bg-neutral-800',\n ],\n false: 'cursor-pointer',\n },\n },\n defaultVariants: {\n disabled: false,\n },\n }\n);\n\nexport type QuickActionColor =\n | 'primary'\n | 'green'\n | 'purple'\n | 'orange'\n | 'blue'\n | 'red'\n | 'amber'\n | 'neutral';\n\nexport interface QuickActionProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'color' | 'disabled'\n> {\n /** The main title text */\n title: string;\n /** The subtitle/description text */\n subtitle: string;\n /** Icon to display in the colored background */\n icon: React.ReactNode;\n /** Color theme for the icon background */\n color?: QuickActionColor;\n /** Render as a different element (e.g., 'a' for links) */\n as?: 'button' | 'a';\n /** URL when rendered as a link */\n href?: string;\n /** Whether the action is disabled */\n disabled?: boolean;\n}\n\n/**\n * A quick action card component for dashboard navigation.\n * Displays an icon, title, and subtitle in a compact, clickable card.\n *\n * @example\n * ```tsx\n * <QuickAction\n * title=\"Schedule Exam\"\n * subtitle=\"Find providers nearby\"\n * color=\"primary\"\n * icon={<CalendarIcon className=\"h-5 w-5\" />}\n * onClick={() => navigate('/schedule')}\n * />\n * ```\n */\nconst QuickAction = React.forwardRef<HTMLButtonElement, QuickActionProps>(\n (\n {\n className,\n title,\n subtitle,\n icon,\n color = 'primary',\n disabled,\n as = 'button',\n href,\n ...props\n },\n ref\n ) => {\n const content = (\n <>\n <div\n data-slot=\"quick-action-icon\"\n className={cn(quickActionIconVariants({ color }))}\n >\n {icon}\n </div>\n <div data-slot=\"quick-action-content\">\n <div\n data-slot=\"quick-action-title\"\n className=\"font-medium text-neutral-900 dark:text-white\"\n >\n {title}\n </div>\n <div\n data-slot=\"quick-action-subtitle\"\n className=\"text-muted-foreground text-xs\"\n >\n {subtitle}\n </div>\n </div>\n </>\n );\n\n if (as === 'a' && href) {\n return (\n <a\n data-slot=\"quick-action\"\n href={href}\n className={cn(quickActionVariants({ disabled }), className)}\n aria-disabled={disabled}\n {...(props as React.AnchorHTMLAttributes<globalThis.HTMLAnchorElement>)}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n data-slot=\"quick-action\"\n ref={ref}\n type=\"button\"\n disabled={disabled ?? undefined}\n className={cn(quickActionVariants({ disabled }), className)}\n {...props}\n >\n {content}\n </button>\n );\n }\n);\n\nQuickAction.displayName = 'QuickAction';\n\n// Predefined icons for common quick actions\nexport const QuickActionIcons = {\n Calendar: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n ),\n Clipboard: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"\n />\n </svg>\n ),\n User: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\"\n />\n </svg>\n ),\n Document: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\n />\n </svg>\n ),\n Settings: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n ),\n Help: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n Search: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n ),\n Bell: (props: React.SVGProps<globalThis.SVGSVGElement>) => (\n <svg\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\"\n />\n </svg>\n ),\n};\n\n/**\n * A group/container component for displaying multiple QuickAction cards in a grid.\n *\n * @example\n * ```tsx\n * <QuickActionGroup title=\"Quick Actions\">\n * <QuickAction title=\"Action 1\" ... />\n * <QuickAction title=\"Action 2\" ... />\n * </QuickActionGroup>\n * ```\n */\nexport interface QuickActionGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Optional title to display above the quick actions */\n title?: string;\n /** Number of columns on different screen sizes */\n columns?: {\n base?: 1 | 2;\n sm?: 1 | 2;\n md?: 2 | 3 | 4;\n lg?: 2 | 3 | 4;\n };\n}\n\nconst QuickActionGroup = React.forwardRef<\n HTMLDivElement,\n QuickActionGroupProps\n>(\n (\n {\n className,\n title,\n columns = { base: 1, sm: 2, md: 2, lg: 4 },\n children,\n ...props\n },\n ref\n ) => {\n const gridCols = cn(\n 'grid gap-4',\n // Base (mobile)\n columns.base === 1 ? 'grid-cols-1' : 'grid-cols-2',\n // Small screens\n columns.sm === 1 ? 'sm:grid-cols-1' : 'sm:grid-cols-2',\n // Medium screens\n columns.md === 2\n ? 'md:grid-cols-2'\n : columns.md === 3\n ? 'md:grid-cols-3'\n : columns.md === 4\n ? 'md:grid-cols-4'\n : '',\n // Large screens\n columns.lg === 2\n ? 'lg:grid-cols-2'\n : columns.lg === 3\n ? 'lg:grid-cols-3'\n : 'lg:grid-cols-4'\n );\n\n return (\n <div\n data-slot=\"quick-action-group\"\n ref={ref}\n className={className}\n {...props}\n >\n {title && (\n <h2\n data-slot=\"quick-action-group-title\"\n className=\"mb-4 text-lg font-semibold text-neutral-900 dark:text-white\"\n >\n {title}\n </h2>\n )}\n <div data-slot=\"quick-action-group-grid\" className={gridCols}>\n {children}\n </div>\n </div>\n );\n }\n);\n\nQuickActionGroup.displayName = 'QuickActionGroup';\n\nexport {\n QuickAction,\n QuickActionGroup,\n quickActionVariants,\n quickActionIconVariants,\n};\n"]}
|
|
@@ -238,8 +238,8 @@ var CardBadge = React__namespace.forwardRef(
|
|
|
238
238
|
const variantClasses = {
|
|
239
239
|
default: "bg-muted text-muted-foreground",
|
|
240
240
|
primary: "bg-primary-800 text-white",
|
|
241
|
-
success: "bg-success text-success-foreground",
|
|
242
|
-
warning: "bg-warning text-warning-foreground",
|
|
241
|
+
success: "bg-success-700 text-success-foreground",
|
|
242
|
+
warning: "bg-warning-700 text-warning-foreground",
|
|
243
243
|
destructive: "bg-destructive text-destructive-foreground"
|
|
244
244
|
};
|
|
245
245
|
const positionClasses = {
|
|
@@ -341,6 +341,7 @@ var CardCollapsible = React__namespace.forwardRef(
|
|
|
341
341
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
342
342
|
"svg",
|
|
343
343
|
{
|
|
344
|
+
"aria-hidden": "true",
|
|
344
345
|
className: chunkOR5DRJCW_cjs.cn(
|
|
345
346
|
"h-4 w-4 transition-transform",
|
|
346
347
|
expanded && "rotate-180"
|
|
@@ -397,12 +398,13 @@ var CardStat = React__namespace.forwardRef(
|
|
|
397
398
|
{
|
|
398
399
|
className: chunkOR5DRJCW_cjs.cn(
|
|
399
400
|
"mt-1 flex items-center gap-1 text-sm",
|
|
400
|
-
trend.value >= 0 ? "text-success" : "text-destructive"
|
|
401
|
+
trend.value >= 0 ? "text-success-700 dark:text-success-300" : "text-destructive-700 dark:text-destructive-400"
|
|
401
402
|
),
|
|
402
403
|
children: [
|
|
403
404
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
404
405
|
"svg",
|
|
405
406
|
{
|
|
407
|
+
"aria-hidden": "true",
|
|
406
408
|
className: chunkOR5DRJCW_cjs.cn("h-4 w-4", trend.value < 0 && "rotate-180"),
|
|
407
409
|
fill: "none",
|
|
408
410
|
stroke: "currentColor",
|
|
@@ -448,5 +450,5 @@ exports.CardStat = CardStat;
|
|
|
448
450
|
exports.CardTitle = CardTitle;
|
|
449
451
|
exports.cardAccentVariants = cardAccentVariants;
|
|
450
452
|
exports.cardVariants = cardVariants;
|
|
451
|
-
//# sourceMappingURL=chunk-
|
|
452
|
-
//# sourceMappingURL=chunk-
|
|
453
|
+
//# sourceMappingURL=chunk-3M4P2KMG.cjs.map
|
|
454
|
+
//# sourceMappingURL=chunk-3M4P2KMG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Card/Card.tsx"],"names":["cva","React","jsxs","cn","jsx","Fragment"],"mappings":"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","file":"chunk-3M4P2KMG.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst cardVariants = cva(\n [\n 'rounded-xl bg-card text-card-foreground',\n 'border border-border',\n 'relative overflow-hidden',\n ],\n {\n variants: {\n padding: {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n },\n variant: {\n default: 'shadow-card',\n elevated: 'shadow-lg border-0',\n outlined: 'shadow-none border-2',\n ghost: 'shadow-none border-0 bg-transparent',\n filled: 'shadow-none border-0 bg-muted',\n },\n interactive: {\n true: [\n 'transition-all duration-200',\n 'hover:shadow-md hover:border-primary-200',\n 'dark:hover:border-primary-800',\n 'cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n ],\n false: '',\n },\n selected: {\n true: 'ring-2 ring-primary-500 border-primary-500',\n false: '',\n },\n orientation: {\n vertical: 'flex flex-col',\n horizontal: 'flex flex-row',\n },\n },\n defaultVariants: {\n padding: 'md',\n variant: 'default',\n interactive: false,\n selected: false,\n orientation: 'vertical',\n },\n }\n);\n\nconst cardAccentVariants = cva('absolute left-0 top-0 bottom-0 w-1', {\n variants: {\n color: {\n primary: 'bg-primary-800',\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-primary-200',\n },\n },\n});\n\nexport interface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n /** Semantic HTML element to render as */\n as?: 'div' | 'article' | 'section' | 'aside';\n /** Accent color bar on the left side */\n accent?: 'primary' | 'success' | 'warning' | 'destructive' | 'info';\n /** Loading state - shows skeleton overlay */\n loading?: boolean;\n}\n\n/**\n * A card container component for grouping related content.\n *\n * @example\n * ```tsx\n * <Card padding=\"lg\" variant=\"elevated\">\n * <CardHeader>\n * <CardTitle>Card Title</CardTitle>\n * </CardHeader>\n * <CardContent>Card content goes here</CardContent>\n * </Card>\n * ```\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n padding,\n variant,\n interactive,\n selected,\n orientation,\n accent,\n loading,\n as: Component = 'div',\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n cardVariants({\n padding,\n variant,\n interactive,\n selected,\n orientation,\n }),\n accent && 'pl-4',\n className\n )}\n data-slot=\"card\"\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n {accent && (\n <div\n className={cn(cardAccentVariants({ color: accent }))}\n aria-hidden=\"true\"\n />\n )}\n {loading && (\n <div className=\"bg-card/80 absolute inset-0 z-10 flex items-center justify-center backdrop-blur-sm\">\n <div className=\"flex gap-1\">\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full [animation-delay:-0.3s]\" />\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full [animation-delay:-0.15s]\" />\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full\" />\n </div>\n </div>\n )}\n {children}\n </Component>\n );\n }\n);\n\nCard.displayName = 'Card';\n\n/**\n * Header section of a Card\n */\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-header\"\n className={cn('flex flex-col gap-1.5 pb-4', className)}\n {...props}\n />\n));\n\nCardHeader.displayName = 'CardHeader';\n\n/**\n * Title for a Card\n */\nexport interface CardTitleProps extends React.HTMLAttributes<globalThis.HTMLHeadingElement> {\n /** Heading level — defaults to `h3` */\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst CardTitle = React.forwardRef<\n globalThis.HTMLHeadingElement,\n CardTitleProps\n>(({ className, children, as: Comp = 'h3', ...props }, ref) => (\n <Comp\n ref={ref}\n data-slot=\"card-title\"\n className={cn(\n 'text-lg leading-none font-semibold tracking-tight',\n className\n )}\n {...props}\n >\n {children}\n </Comp>\n));\n\nCardTitle.displayName = 'CardTitle';\n\n/**\n * Description text for a Card\n */\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"card-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\n\nCardDescription.displayName = 'CardDescription';\n\n/**\n * Main content area of a Card\n */\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-content\"\n className={cn('', className)}\n {...props}\n />\n));\n\nCardContent.displayName = 'CardContent';\n\n/**\n * Footer section of a Card\n */\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-footer\"\n className={cn('flex items-center pt-4', className)}\n {...props}\n />\n));\n\nCardFooter.displayName = 'CardFooter';\n\n/**\n * Image/Media section for a Card - typically used at the top\n */\nexport interface CardMediaProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Aspect ratio of the media */\n aspectRatio?: 'video' | 'square' | 'wide' | 'auto';\n /** Optional overlay content */\n overlay?: React.ReactNode;\n}\n\nconst CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\n ({ className, aspectRatio = 'video', overlay, src, alt, ...props }, ref) => {\n const aspectClasses = {\n video: 'aspect-video',\n square: 'aspect-square',\n wide: 'aspect-[21/9]',\n auto: '',\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-media\"\n className={cn(\n 'relative -mx-4 -mt-4 overflow-hidden first:rounded-t-xl',\n className\n )}\n >\n <img\n src={src}\n alt={alt}\n className={cn('w-full object-cover', aspectClasses[aspectRatio])}\n {...props}\n />\n {overlay && (\n <div className=\"absolute inset-0 flex items-end bg-gradient-to-t from-neutral-900/60 to-transparent p-4\">\n {overlay}\n </div>\n )}\n </div>\n );\n }\n);\n\nCardMedia.displayName = 'CardMedia';\n\n/**\n * Badge/Label component for Cards\n */\nexport interface CardBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Badge color variant */\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'destructive';\n /** Position of the badge */\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n}\n\nconst CardBadge = React.forwardRef<HTMLSpanElement, CardBadgeProps>(\n (\n {\n className,\n variant = 'default',\n position = 'top-right',\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary-800 text-white',\n success: 'bg-success-700 text-success-foreground',\n warning: 'bg-warning-700 text-warning-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n };\n\n const positionClasses = {\n 'top-left': 'top-2 left-2',\n 'top-right': 'top-2 right-2',\n 'bottom-left': 'bottom-2 left-2',\n 'bottom-right': 'bottom-2 right-2',\n };\n\n return (\n <span\n ref={ref}\n data-slot=\"card-badge\"\n className={cn(\n 'absolute z-10 rounded-md px-2 py-1 text-xs font-medium',\n variantClasses[variant],\n positionClasses[position],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nCardBadge.displayName = 'CardBadge';\n\n/**\n * Actions area for Card buttons/links\n */\nexport interface CardActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Alignment of actions */\n align?: 'left' | 'center' | 'right' | 'between' | 'around';\n}\n\nconst CardActions = React.forwardRef<HTMLDivElement, CardActionsProps>(\n ({ className, align = 'right', children, ...props }, ref) => {\n const alignClasses = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-actions\"\n className={cn(\n 'flex items-center gap-2 pt-4',\n alignClasses[align],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCardActions.displayName = 'CardActions';\n\n/**\n * Divider line within a Card\n */\nconst CardDivider = React.forwardRef<\n globalThis.HTMLHRElement,\n React.HTMLAttributes<globalThis.HTMLHRElement>\n>(({ className, ...props }, ref) => (\n <hr\n ref={ref}\n data-slot=\"card-divider\"\n className={cn('border-border -mx-4 my-4', className)}\n {...props}\n />\n));\n\nCardDivider.displayName = 'CardDivider';\n\n/**\n * Collapsible content section for Cards\n */\nexport interface CardCollapsibleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the content is expanded */\n expanded?: boolean;\n /** Callback when expand state changes */\n onExpandChange?: (expanded: boolean) => void;\n /** Trigger element/text for expanding */\n trigger?: React.ReactNode;\n}\n\nconst CardCollapsible = React.forwardRef<HTMLDivElement, CardCollapsibleProps>(\n (\n {\n className,\n expanded: controlledExpanded,\n onExpandChange,\n trigger = 'Show more',\n children,\n ...props\n },\n ref\n ) => {\n const [internalExpanded, setInternalExpanded] = React.useState(false);\n const isControlled = controlledExpanded !== undefined;\n const expanded = isControlled ? controlledExpanded : internalExpanded;\n\n const handleToggle = () => {\n if (isControlled) {\n onExpandChange?.(!expanded);\n } else {\n setInternalExpanded(!expanded);\n }\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-collapsible\"\n className={cn('', className)}\n {...props}\n >\n <button\n type=\"button\"\n onClick={handleToggle}\n className=\"text-primary-800 focus-visible:ring-primary-500 flex items-center gap-1 rounded text-sm hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\"\n aria-expanded={expanded}\n >\n {typeof trigger === 'string' ? (\n <>\n {expanded ? 'Show less' : trigger}\n <svg\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-4 transition-transform',\n expanded && 'rotate-180'\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </>\n ) : (\n trigger\n )}\n </button>\n <div\n className={cn(\n 'grid transition-all duration-300 ease-in-out',\n expanded\n ? 'mt-3 grid-rows-[1fr] opacity-100'\n : 'grid-rows-[0fr] opacity-0'\n )}\n >\n <div className=\"overflow-hidden\">{children}</div>\n </div>\n </div>\n );\n }\n);\n\nCardCollapsible.displayName = 'CardCollapsible';\n\n/**\n * Stat/Metric display for Cards\n */\nexport interface CardStatProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The main value/number */\n value: React.ReactNode;\n /** Label describing the stat */\n label: string;\n /** Trend indicator */\n trend?: { value: number; label?: string };\n /** Icon to display */\n icon?: React.ReactNode;\n}\n\nconst CardStat = React.forwardRef<HTMLDivElement, CardStatProps>(\n ({ className, value, label, trend, icon, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"card-stat\"\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && (\n <div className=\"bg-primary-500/10 text-primary-800 rounded-lg p-2\">\n {icon}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-2xl font-bold tracking-tight\">{value}</div>\n <div className=\"text-muted-foreground text-sm\">{label}</div>\n {trend && (\n <div\n className={cn(\n 'mt-1 flex items-center gap-1 text-sm',\n trend.value >= 0\n ? 'text-success-700 dark:text-success-300'\n : 'text-destructive-700 dark:text-destructive-400'\n )}\n >\n <svg\n aria-hidden=\"true\"\n className={cn('h-4 w-4', trend.value < 0 && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 10l7-7m0 0l7 7m-7-7v18\"\n />\n </svg>\n <span>{Math.abs(trend.value)}%</span>\n {trend.label && (\n <span className=\"text-muted-foreground\">{trend.label}</span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nCardStat.displayName = 'CardStat';\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n CardMedia,\n CardBadge,\n CardActions,\n CardDivider,\n CardCollapsible,\n CardStat,\n cardVariants,\n cardAccentVariants,\n};\n"]}
|
|
@@ -25,7 +25,7 @@ var bluehiveBrand = {
|
|
|
25
25
|
card: "#ffffff",
|
|
26
26
|
cardForeground: "#171717",
|
|
27
27
|
muted: "#f5f5f5",
|
|
28
|
-
mutedForeground: "#
|
|
28
|
+
mutedForeground: "#494949",
|
|
29
29
|
border: "#e5e7eb",
|
|
30
30
|
input: "#e5e7eb",
|
|
31
31
|
ring: "#27aae1",
|
|
@@ -78,5 +78,5 @@ var bluehiveBrand = {
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
export { bluehiveBrand };
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-3T7QGLNB.js.map
|
|
82
|
+
//# sourceMappingURL=chunk-3T7QGLNB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/brands/bluehive.ts"],"names":[],"mappings":";AAaO,IAAM,aAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,iBAAA;AAAA,EACb,WAAA,EAAa,4DAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,QAAA,EAAU,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC3D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/brands/bluehive.ts"],"names":[],"mappings":";AAaO,IAAM,aAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,iBAAA;AAAA,EACb,WAAA,EAAa,4DAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,QAAA,EAAU,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC3D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-3T7QGLNB.js","sourcesContent":["/**\n * BlueHive Brand Configuration\n *\n * The official brand theme for BlueHive Health.\n * Primary color: #27aae1 (BlueHive Blue)\n */\n\nimport type { BrandConfig } from './types';\n\n/**\n * BlueHive brand configuration.\n * This defines all the design tokens used in BlueHive Health applications.\n */\nexport const bluehiveBrand: BrandConfig = {\n name: 'bluehive',\n displayName: 'BlueHive Health',\n description: 'DOT Physical scheduling and healthcare compliance platform',\n\n colors: {\n // Primary color scale - BlueHive Blue (#27aae1)\n primary: {\n 50: '#e6f7fc',\n 100: '#b3e6f6',\n 200: '#80d5f0',\n 300: '#4dc4ea',\n 400: '#27aae1',\n 500: '#27aae1',\n 600: '#1f98ca',\n 700: '#1786b3',\n 800: '#0f749c',\n 900: '#086285',\n 950: '#00506e',\n },\n\n // Light mode semantic colors\n light: {\n background: '#ffffff',\n foreground: '#171717',\n card: '#ffffff',\n cardForeground: '#171717',\n muted: '#f5f5f5',\n mutedForeground: '#494949',\n border: '#e5e7eb',\n input: '#e5e7eb',\n ring: '#27aae1',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n success: '#22c55e',\n successForeground: '#ffffff',\n warning: '#f59e0b',\n warningForeground: '#ffffff',\n },\n\n // Dark mode semantic colors\n dark: {\n background: '#171717',\n foreground: '#fafafa',\n card: '#262626',\n cardForeground: '#fafafa',\n muted: '#404040',\n mutedForeground: '#a1a1aa',\n border: '#404040',\n input: '#404040',\n ring: '#27aae1',\n destructive: '#dc2626',\n destructiveForeground: '#fafafa',\n success: '#16a34a',\n successForeground: '#fafafa',\n warning: '#d97706',\n warningForeground: '#fafafa',\n },\n },\n\n typography: {\n fontFamily: {\n sans: ['Nunito', 'ui-sans-serif', 'system-ui', 'sans-serif'],\n mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],\n },\n },\n\n borderRadius: {\n none: '0',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n '2xl': '1.5rem',\n full: '9999px',\n },\n\n boxShadow: {\n card: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n dropdown:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n modal: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n};\n\n/**\n * BlueHive Tailwind preset.\n * Use this in your tailwind.config.js:\n *\n * ```js\n * import { bluehivePreset } from '@mieweb/ui/brands/bluehive';\n *\n * export default {\n * presets: [bluehivePreset],\n * // ... rest of config\n * }\n * ```\n */\nexport { bluehiveBrand as default };\n"]}
|
|
@@ -202,6 +202,7 @@ function PhoneInputGroup({
|
|
|
202
202
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
203
203
|
"svg",
|
|
204
204
|
{
|
|
205
|
+
"aria-hidden": "true",
|
|
205
206
|
"data-slot": "phone-add-icon",
|
|
206
207
|
className: "h-5 w-5",
|
|
207
208
|
fill: "none",
|
|
@@ -237,6 +238,7 @@ function PhoneInputGroup({
|
|
|
237
238
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
238
239
|
"svg",
|
|
239
240
|
{
|
|
241
|
+
"aria-hidden": "true",
|
|
240
242
|
"data-slot": "phone-remove-icon",
|
|
241
243
|
className: "h-5 w-5",
|
|
242
244
|
fill: "none",
|
|
@@ -266,5 +268,5 @@ PhoneInputGroup.displayName = "PhoneInputGroup";
|
|
|
266
268
|
|
|
267
269
|
exports.PhoneInput = PhoneInput;
|
|
268
270
|
exports.PhoneInputGroup = PhoneInputGroup;
|
|
269
|
-
//# sourceMappingURL=chunk-
|
|
270
|
-
//# sourceMappingURL=chunk-
|
|
271
|
+
//# sourceMappingURL=chunk-5MAGWW5X.cjs.map
|
|
272
|
+
//# sourceMappingURL=chunk-5MAGWW5X.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/PhoneInput/PhoneInput.tsx"],"names":["React","formatPhoneNumber","unformatPhoneNumber","isValidPhoneNumber","jsx","Input","cn","jsxs"],"mappings":"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","file":"chunk-5MAGWW5X.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n formatPhoneNumber,\n unformatPhoneNumber,\n isValidPhoneNumber,\n} from '../../utils/phone';\nimport { Input, type InputProps } from '../Input';\n\nexport interface PhoneInputProps extends Omit<\n InputProps,\n 'type' | 'onChange' | 'value'\n> {\n /** The phone number value (can be formatted or unformatted) */\n value?: string;\n /** Callback fired when the value changes, receives the unformatted value */\n onChange?: (value: string) => void;\n /** Callback fired when the formatted value changes */\n onFormattedChange?: (formattedValue: string) => void;\n /** Whether to validate and show error state for incomplete phone numbers */\n validateOnBlur?: boolean;\n}\n\n/**\n * A phone number input that automatically formats to US format: (XXX) XXX-XXXX\n *\n * @example\n * ```tsx\n * const [phone, setPhone] = useState('');\n * <PhoneInput\n * label=\"Phone Number\"\n * value={phone}\n * onChange={setPhone}\n * validateOnBlur\n * />\n * ```\n */\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n (\n {\n value = '',\n onChange,\n onFormattedChange,\n validateOnBlur,\n className,\n onBlur,\n hasError,\n error,\n ...props\n },\n ref\n ) => {\n const [displayValue, setDisplayValue] = React.useState(() =>\n formatPhoneNumber(value)\n );\n const [localError, setLocalError] = React.useState<string | undefined>();\n\n // Sync external value changes\n React.useEffect(() => {\n setDisplayValue(formatPhoneNumber(value));\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const formatted = formatPhoneNumber(e.target.value);\n setDisplayValue(formatted);\n\n const unformatted = unformatPhoneNumber(formatted);\n onChange?.(unformatted);\n onFormattedChange?.(formatted);\n\n // Clear error when user starts typing again\n if (localError) {\n setLocalError(undefined);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n\n if (validateOnBlur) {\n const unformatted = unformatPhoneNumber(displayValue);\n if (unformatted.length > 0 && !isValidPhoneNumber(displayValue)) {\n setLocalError('Please enter a valid 10-digit phone number');\n } else {\n setLocalError(undefined);\n }\n }\n };\n\n return (\n <Input\n ref={ref}\n type=\"tel\"\n inputMode=\"numeric\"\n autoComplete=\"tel-national\"\n placeholder=\"(555) 555-5555\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n hasError={hasError || !!localError}\n error={error || localError}\n className={cn(className)}\n {...props}\n />\n );\n }\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\n// =============================================================================\n// Phone Types\n// =============================================================================\n\nexport type PhoneType = 'cell' | 'landline' | 'home' | 'work' | 'fax';\n\nexport interface PhoneEntry {\n number: string;\n type: PhoneType;\n}\n\nconst PHONE_TYPES: { value: PhoneType; label: string }[] = [\n { value: 'cell', label: 'Cell' },\n { value: 'landline', label: 'Landline' },\n { value: 'home', label: 'Home' },\n { value: 'work', label: 'Work' },\n { value: 'fax', label: 'Fax' },\n];\n\n// =============================================================================\n// PhoneInputGroup\n// =============================================================================\n\nexport interface PhoneInputGroupProps {\n /** Array of phone entries */\n value: PhoneEntry[];\n /** Callback when phone entries change */\n onChange: (phones: PhoneEntry[]) => void;\n /** Minimum number of phone entries (default: 1) */\n minEntries?: number;\n /** Maximum number of phone entries (default: 5) */\n maxEntries?: number;\n /** Whether the first entry is required */\n required?: boolean;\n /** Whether all inputs are disabled */\n disabled?: boolean;\n /** Validate on blur */\n validateOnBlur?: boolean;\n /** Label for the phone input */\n label?: string;\n /** Labels for type options (for i18n) */\n typeLabels?: Record<PhoneType, string>;\n /** Custom className */\n className?: string;\n}\n\n/**\n * A group of phone inputs with type selection and add/remove functionality.\n *\n * @example\n * ```tsx\n * const [phones, setPhones] = useState<PhoneEntry[]>([\n * { number: '', type: 'cell' }\n * ]);\n *\n * <PhoneInputGroup\n * value={phones}\n * onChange={setPhones}\n * required\n * />\n * ```\n */\nfunction PhoneInputGroup({\n value,\n onChange,\n minEntries = 1,\n maxEntries = 5,\n required = false,\n disabled = false,\n validateOnBlur = false,\n label,\n typeLabels,\n className,\n}: PhoneInputGroupProps) {\n // Ensure we always have at least minEntries\n const phones = React.useMemo(() => {\n if (value.length >= minEntries) return value;\n const padding: PhoneEntry[] = Array(minEntries - value.length)\n .fill(null)\n .map(() => ({ number: '', type: 'cell' as PhoneType }));\n return [...value, ...padding];\n }, [value, minEntries]);\n\n const handlePhoneChange = (index: number, number: string) => {\n const updated = [...phones];\n updated[index] = { ...updated[index], number };\n onChange(updated);\n };\n\n const handleTypeChange = (index: number, type: PhoneType) => {\n const updated = [...phones];\n updated[index] = { ...updated[index], type };\n onChange(updated);\n };\n\n const handleAdd = () => {\n if (phones.length < maxEntries) {\n onChange([...phones, { number: '', type: 'cell' }]);\n }\n };\n\n const handleRemove = (index: number) => {\n if (phones.length > minEntries) {\n onChange(phones.filter((_, i) => i !== index));\n }\n };\n\n const getTypeLabel = (type: PhoneType): string => {\n if (typeLabels?.[type]) return typeLabels[type];\n return PHONE_TYPES.find((t) => t.value === type)?.label || type;\n };\n\n const canAdd = phones.length < maxEntries;\n const canRemove = phones.length > minEntries;\n\n return (\n <div data-slot=\"phone-group\" className={cn('space-y-3', className)}>\n {phones.map((phone, index) => (\n <div\n key={index}\n data-slot=\"phone-row\"\n className=\"flex items-start gap-2\"\n >\n {/* Phone number input */}\n <div className=\"flex-1\">\n <PhoneInput\n label={index === 0 ? label : undefined}\n value={phone.number}\n onChange={(num) => handlePhoneChange(index, num)}\n disabled={disabled}\n validateOnBlur={validateOnBlur}\n required={required && index === 0}\n />\n </div>\n\n {/* Type selector */}\n <div className=\"w-24 shrink-0 sm:w-32\">\n <label htmlFor={`phone-type-${index}`} className=\"sr-only\">\n Phone type\n </label>\n <select\n id={`phone-type-${index}`}\n data-slot=\"phone-type-select\"\n value={phone.type}\n onChange={(e) =>\n handleTypeChange(index, e.target.value as PhoneType)\n }\n disabled={disabled}\n className={cn(\n 'h-10 w-full rounded-md border px-3 py-2 text-sm',\n 'border-gray-300 bg-white text-gray-900',\n 'focus:border-brand-500 focus:ring-brand-500/20 focus:ring-2 focus:outline-none',\n 'disabled:text-muted-foreground disabled:cursor-not-allowed disabled:bg-gray-50',\n 'dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100',\n 'dark:focus:border-brand-400 dark:focus:ring-brand-400/20',\n index === 0 && label ? 'mt-[26px]' : ''\n )}\n >\n {PHONE_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {getTypeLabel(type.value)}\n </option>\n ))}\n </select>\n </div>\n\n {/* Add/Remove buttons */}\n <div\n data-slot=\"phone-action\"\n className={cn(\n 'flex shrink-0 items-center',\n index === 0 && label ? 'mt-[26px]' : ''\n )}\n >\n {index === 0 ? (\n <button\n type=\"button\"\n data-slot=\"phone-add-btn\"\n onClick={handleAdd}\n disabled={disabled || !canAdd}\n className={cn(\n 'rounded-full p-2 transition-colors',\n 'text-brand-600 hover:bg-brand-50',\n 'disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent',\n 'dark:text-brand-400 dark:hover:bg-brand-900/20',\n 'dark:disabled:text-muted-foreground'\n )}\n aria-label=\"Add phone number\"\n >\n <svg\n aria-hidden=\"true\"\n data-slot=\"phone-add-icon\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v16m8-8H4\"\n />\n </svg>\n </button>\n ) : (\n <button\n type=\"button\"\n data-slot=\"phone-remove-btn\"\n onClick={() => handleRemove(index)}\n disabled={disabled || !canRemove}\n className={cn(\n 'rounded-full p-2 transition-colors',\n 'text-red-600 hover:bg-red-50',\n 'disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent',\n 'dark:text-red-400 dark:hover:bg-red-900/20',\n 'dark:disabled:text-muted-foreground'\n )}\n aria-label=\"Remove phone number\"\n >\n <svg\n aria-hidden=\"true\"\n data-slot=\"phone-remove-icon\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M20 12H4\"\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nPhoneInputGroup.displayName = 'PhoneInputGroup';\n\nexport { PhoneInput, PhoneInputGroup };\n"]}
|
|
@@ -25,7 +25,7 @@ var ozwellBrand = {
|
|
|
25
25
|
card: "#ffffff",
|
|
26
26
|
cardForeground: "#171717",
|
|
27
27
|
muted: "#f5f5f5",
|
|
28
|
-
mutedForeground: "#
|
|
28
|
+
mutedForeground: "#494949",
|
|
29
29
|
border: "#e5e7eb",
|
|
30
30
|
input: "#e5e7eb",
|
|
31
31
|
ring: "#27aae1",
|
|
@@ -78,5 +78,5 @@ var ozwellBrand = {
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
export { ozwellBrand };
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-5YUBQIC7.js.map
|
|
82
|
+
//# sourceMappingURL=chunk-5YUBQIC7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/brands/ozwell.ts"],"names":[],"mappings":";AAcO,IAAM,WAAA,GAA2B;AAAA,EACtC,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,QAAA;AAAA,EACb,WAAA,EAAa,wCAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,2BAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,QAAA,EAAU,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC3D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/brands/ozwell.ts"],"names":[],"mappings":";AAcO,IAAM,WAAA,GAA2B;AAAA,EACtC,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,QAAA;AAAA,EACb,WAAA,EAAa,wCAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,2BAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,QAAA,EAAU,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC3D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-5YUBQIC7.js","sourcesContent":["/**\n * Ozwell Brand Configuration\n *\n * The official brand theme for Ozwell AI Assistant.\n * Primary color: #27aae1 (BlueHive Blue)\n * Font: Nunito\n */\n\nimport type { BrandConfig } from './types';\n\n/**\n * Ozwell brand configuration.\n * This defines all the design tokens used in the Ozwell AI Assistant.\n */\nexport const ozwellBrand: BrandConfig = {\n name: 'ozwell',\n displayName: 'Ozwell',\n description: 'Ozwell AI Assistant by BlueHive Health',\n\n colors: {\n // Primary color scale - BlueHive Blue (#27aae1)\n primary: {\n 50: '#e6f7fc',\n 100: '#b3e6f6',\n 200: '#80d5f0',\n 300: '#4dc4ea',\n 400: '#27aae1',\n 500: '#27aae1',\n 600: '#1f98ca',\n 700: '#1786b3',\n 800: '#0f749c',\n 900: '#086285',\n 950: '#00506e',\n },\n\n // Light mode semantic colors\n light: {\n background: '#ffffff',\n foreground: '#171717',\n card: '#ffffff',\n cardForeground: '#171717',\n muted: '#f5f5f5',\n mutedForeground: '#494949',\n border: '#e5e7eb',\n input: '#e5e7eb',\n ring: '#27aae1',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n success: '#22c55e',\n successForeground: '#ffffff',\n warning: '#f59e0b',\n warningForeground: '#ffffff',\n },\n\n // Dark mode semantic colors\n dark: {\n background: '#181818',\n foreground: '#dee2e6',\n card: '#181818',\n cardForeground: '#dee2e6',\n muted: '#2b3035',\n mutedForeground: '#adb5bd',\n border: 'rgba(255, 255, 255, 0.15)',\n input: '#495057',\n ring: '#27aae1',\n destructive: '#dc2626',\n destructiveForeground: '#fafafa',\n success: '#16a34a',\n successForeground: '#fafafa',\n warning: '#d97706',\n warningForeground: '#fafafa',\n },\n },\n\n typography: {\n fontFamily: {\n sans: ['Nunito', 'ui-sans-serif', 'system-ui', 'sans-serif'],\n mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],\n },\n },\n\n borderRadius: {\n none: '0',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n '2xl': '1.5rem',\n full: '9999px',\n },\n\n boxShadow: {\n card: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n dropdown:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n modal: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n};\n"]}
|
|
@@ -216,8 +216,8 @@ var CardBadge = React.forwardRef(
|
|
|
216
216
|
const variantClasses = {
|
|
217
217
|
default: "bg-muted text-muted-foreground",
|
|
218
218
|
primary: "bg-primary-800 text-white",
|
|
219
|
-
success: "bg-success text-success-foreground",
|
|
220
|
-
warning: "bg-warning text-warning-foreground",
|
|
219
|
+
success: "bg-success-700 text-success-foreground",
|
|
220
|
+
warning: "bg-warning-700 text-warning-foreground",
|
|
221
221
|
destructive: "bg-destructive text-destructive-foreground"
|
|
222
222
|
};
|
|
223
223
|
const positionClasses = {
|
|
@@ -319,6 +319,7 @@ var CardCollapsible = React.forwardRef(
|
|
|
319
319
|
/* @__PURE__ */ jsx(
|
|
320
320
|
"svg",
|
|
321
321
|
{
|
|
322
|
+
"aria-hidden": "true",
|
|
322
323
|
className: cn(
|
|
323
324
|
"h-4 w-4 transition-transform",
|
|
324
325
|
expanded && "rotate-180"
|
|
@@ -375,12 +376,13 @@ var CardStat = React.forwardRef(
|
|
|
375
376
|
{
|
|
376
377
|
className: cn(
|
|
377
378
|
"mt-1 flex items-center gap-1 text-sm",
|
|
378
|
-
trend.value >= 0 ? "text-success" : "text-destructive"
|
|
379
|
+
trend.value >= 0 ? "text-success-700 dark:text-success-300" : "text-destructive-700 dark:text-destructive-400"
|
|
379
380
|
),
|
|
380
381
|
children: [
|
|
381
382
|
/* @__PURE__ */ jsx(
|
|
382
383
|
"svg",
|
|
383
384
|
{
|
|
385
|
+
"aria-hidden": "true",
|
|
384
386
|
className: cn("h-4 w-4", trend.value < 0 && "rotate-180"),
|
|
385
387
|
fill: "none",
|
|
386
388
|
stroke: "currentColor",
|
|
@@ -413,5 +415,5 @@ var CardStat = React.forwardRef(
|
|
|
413
415
|
CardStat.displayName = "CardStat";
|
|
414
416
|
|
|
415
417
|
export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants };
|
|
416
|
-
//# sourceMappingURL=chunk-
|
|
417
|
-
//# sourceMappingURL=chunk-
|
|
418
|
+
//# sourceMappingURL=chunk-6555OYRU.js.map
|
|
419
|
+
//# sourceMappingURL=chunk-6555OYRU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Card/Card.tsx"],"names":[],"mappings":"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","file":"chunk-6555OYRU.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst cardVariants = cva(\n [\n 'rounded-xl bg-card text-card-foreground',\n 'border border-border',\n 'relative overflow-hidden',\n ],\n {\n variants: {\n padding: {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n },\n variant: {\n default: 'shadow-card',\n elevated: 'shadow-lg border-0',\n outlined: 'shadow-none border-2',\n ghost: 'shadow-none border-0 bg-transparent',\n filled: 'shadow-none border-0 bg-muted',\n },\n interactive: {\n true: [\n 'transition-all duration-200',\n 'hover:shadow-md hover:border-primary-200',\n 'dark:hover:border-primary-800',\n 'cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n ],\n false: '',\n },\n selected: {\n true: 'ring-2 ring-primary-500 border-primary-500',\n false: '',\n },\n orientation: {\n vertical: 'flex flex-col',\n horizontal: 'flex flex-row',\n },\n },\n defaultVariants: {\n padding: 'md',\n variant: 'default',\n interactive: false,\n selected: false,\n orientation: 'vertical',\n },\n }\n);\n\nconst cardAccentVariants = cva('absolute left-0 top-0 bottom-0 w-1', {\n variants: {\n color: {\n primary: 'bg-primary-800',\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-primary-200',\n },\n },\n});\n\nexport interface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n /** Semantic HTML element to render as */\n as?: 'div' | 'article' | 'section' | 'aside';\n /** Accent color bar on the left side */\n accent?: 'primary' | 'success' | 'warning' | 'destructive' | 'info';\n /** Loading state - shows skeleton overlay */\n loading?: boolean;\n}\n\n/**\n * A card container component for grouping related content.\n *\n * @example\n * ```tsx\n * <Card padding=\"lg\" variant=\"elevated\">\n * <CardHeader>\n * <CardTitle>Card Title</CardTitle>\n * </CardHeader>\n * <CardContent>Card content goes here</CardContent>\n * </Card>\n * ```\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n padding,\n variant,\n interactive,\n selected,\n orientation,\n accent,\n loading,\n as: Component = 'div',\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n cardVariants({\n padding,\n variant,\n interactive,\n selected,\n orientation,\n }),\n accent && 'pl-4',\n className\n )}\n data-slot=\"card\"\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n {accent && (\n <div\n className={cn(cardAccentVariants({ color: accent }))}\n aria-hidden=\"true\"\n />\n )}\n {loading && (\n <div className=\"bg-card/80 absolute inset-0 z-10 flex items-center justify-center backdrop-blur-sm\">\n <div className=\"flex gap-1\">\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full [animation-delay:-0.3s]\" />\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full [animation-delay:-0.15s]\" />\n <div className=\"bg-primary-800 h-2 w-2 animate-bounce rounded-full\" />\n </div>\n </div>\n )}\n {children}\n </Component>\n );\n }\n);\n\nCard.displayName = 'Card';\n\n/**\n * Header section of a Card\n */\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-header\"\n className={cn('flex flex-col gap-1.5 pb-4', className)}\n {...props}\n />\n));\n\nCardHeader.displayName = 'CardHeader';\n\n/**\n * Title for a Card\n */\nexport interface CardTitleProps extends React.HTMLAttributes<globalThis.HTMLHeadingElement> {\n /** Heading level — defaults to `h3` */\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst CardTitle = React.forwardRef<\n globalThis.HTMLHeadingElement,\n CardTitleProps\n>(({ className, children, as: Comp = 'h3', ...props }, ref) => (\n <Comp\n ref={ref}\n data-slot=\"card-title\"\n className={cn(\n 'text-lg leading-none font-semibold tracking-tight',\n className\n )}\n {...props}\n >\n {children}\n </Comp>\n));\n\nCardTitle.displayName = 'CardTitle';\n\n/**\n * Description text for a Card\n */\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"card-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\n\nCardDescription.displayName = 'CardDescription';\n\n/**\n * Main content area of a Card\n */\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-content\"\n className={cn('', className)}\n {...props}\n />\n));\n\nCardContent.displayName = 'CardContent';\n\n/**\n * Footer section of a Card\n */\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card-footer\"\n className={cn('flex items-center pt-4', className)}\n {...props}\n />\n));\n\nCardFooter.displayName = 'CardFooter';\n\n/**\n * Image/Media section for a Card - typically used at the top\n */\nexport interface CardMediaProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** Aspect ratio of the media */\n aspectRatio?: 'video' | 'square' | 'wide' | 'auto';\n /** Optional overlay content */\n overlay?: React.ReactNode;\n}\n\nconst CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\n ({ className, aspectRatio = 'video', overlay, src, alt, ...props }, ref) => {\n const aspectClasses = {\n video: 'aspect-video',\n square: 'aspect-square',\n wide: 'aspect-[21/9]',\n auto: '',\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-media\"\n className={cn(\n 'relative -mx-4 -mt-4 overflow-hidden first:rounded-t-xl',\n className\n )}\n >\n <img\n src={src}\n alt={alt}\n className={cn('w-full object-cover', aspectClasses[aspectRatio])}\n {...props}\n />\n {overlay && (\n <div className=\"absolute inset-0 flex items-end bg-gradient-to-t from-neutral-900/60 to-transparent p-4\">\n {overlay}\n </div>\n )}\n </div>\n );\n }\n);\n\nCardMedia.displayName = 'CardMedia';\n\n/**\n * Badge/Label component for Cards\n */\nexport interface CardBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Badge color variant */\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'destructive';\n /** Position of the badge */\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n}\n\nconst CardBadge = React.forwardRef<HTMLSpanElement, CardBadgeProps>(\n (\n {\n className,\n variant = 'default',\n position = 'top-right',\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary-800 text-white',\n success: 'bg-success-700 text-success-foreground',\n warning: 'bg-warning-700 text-warning-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n };\n\n const positionClasses = {\n 'top-left': 'top-2 left-2',\n 'top-right': 'top-2 right-2',\n 'bottom-left': 'bottom-2 left-2',\n 'bottom-right': 'bottom-2 right-2',\n };\n\n return (\n <span\n ref={ref}\n data-slot=\"card-badge\"\n className={cn(\n 'absolute z-10 rounded-md px-2 py-1 text-xs font-medium',\n variantClasses[variant],\n positionClasses[position],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nCardBadge.displayName = 'CardBadge';\n\n/**\n * Actions area for Card buttons/links\n */\nexport interface CardActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Alignment of actions */\n align?: 'left' | 'center' | 'right' | 'between' | 'around';\n}\n\nconst CardActions = React.forwardRef<HTMLDivElement, CardActionsProps>(\n ({ className, align = 'right', children, ...props }, ref) => {\n const alignClasses = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-actions\"\n className={cn(\n 'flex items-center gap-2 pt-4',\n alignClasses[align],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCardActions.displayName = 'CardActions';\n\n/**\n * Divider line within a Card\n */\nconst CardDivider = React.forwardRef<\n globalThis.HTMLHRElement,\n React.HTMLAttributes<globalThis.HTMLHRElement>\n>(({ className, ...props }, ref) => (\n <hr\n ref={ref}\n data-slot=\"card-divider\"\n className={cn('border-border -mx-4 my-4', className)}\n {...props}\n />\n));\n\nCardDivider.displayName = 'CardDivider';\n\n/**\n * Collapsible content section for Cards\n */\nexport interface CardCollapsibleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the content is expanded */\n expanded?: boolean;\n /** Callback when expand state changes */\n onExpandChange?: (expanded: boolean) => void;\n /** Trigger element/text for expanding */\n trigger?: React.ReactNode;\n}\n\nconst CardCollapsible = React.forwardRef<HTMLDivElement, CardCollapsibleProps>(\n (\n {\n className,\n expanded: controlledExpanded,\n onExpandChange,\n trigger = 'Show more',\n children,\n ...props\n },\n ref\n ) => {\n const [internalExpanded, setInternalExpanded] = React.useState(false);\n const isControlled = controlledExpanded !== undefined;\n const expanded = isControlled ? controlledExpanded : internalExpanded;\n\n const handleToggle = () => {\n if (isControlled) {\n onExpandChange?.(!expanded);\n } else {\n setInternalExpanded(!expanded);\n }\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"card-collapsible\"\n className={cn('', className)}\n {...props}\n >\n <button\n type=\"button\"\n onClick={handleToggle}\n className=\"text-primary-800 focus-visible:ring-primary-500 flex items-center gap-1 rounded text-sm hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\"\n aria-expanded={expanded}\n >\n {typeof trigger === 'string' ? (\n <>\n {expanded ? 'Show less' : trigger}\n <svg\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-4 transition-transform',\n expanded && 'rotate-180'\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </>\n ) : (\n trigger\n )}\n </button>\n <div\n className={cn(\n 'grid transition-all duration-300 ease-in-out',\n expanded\n ? 'mt-3 grid-rows-[1fr] opacity-100'\n : 'grid-rows-[0fr] opacity-0'\n )}\n >\n <div className=\"overflow-hidden\">{children}</div>\n </div>\n </div>\n );\n }\n);\n\nCardCollapsible.displayName = 'CardCollapsible';\n\n/**\n * Stat/Metric display for Cards\n */\nexport interface CardStatProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The main value/number */\n value: React.ReactNode;\n /** Label describing the stat */\n label: string;\n /** Trend indicator */\n trend?: { value: number; label?: string };\n /** Icon to display */\n icon?: React.ReactNode;\n}\n\nconst CardStat = React.forwardRef<HTMLDivElement, CardStatProps>(\n ({ className, value, label, trend, icon, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"card-stat\"\n className={cn('flex items-start gap-3', className)}\n {...props}\n >\n {icon && (\n <div className=\"bg-primary-500/10 text-primary-800 rounded-lg p-2\">\n {icon}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-2xl font-bold tracking-tight\">{value}</div>\n <div className=\"text-muted-foreground text-sm\">{label}</div>\n {trend && (\n <div\n className={cn(\n 'mt-1 flex items-center gap-1 text-sm',\n trend.value >= 0\n ? 'text-success-700 dark:text-success-300'\n : 'text-destructive-700 dark:text-destructive-400'\n )}\n >\n <svg\n aria-hidden=\"true\"\n className={cn('h-4 w-4', trend.value < 0 && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 10l7-7m0 0l7 7m-7-7v18\"\n />\n </svg>\n <span>{Math.abs(trend.value)}%</span>\n {trend.label && (\n <span className=\"text-muted-foreground\">{trend.label}</span>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nCardStat.displayName = 'CardStat';\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n CardMedia,\n CardBadge,\n CardActions,\n CardDivider,\n CardCollapsible,\n CardStat,\n cardVariants,\n cardAccentVariants,\n};\n"]}
|
|
@@ -454,6 +454,7 @@ function DropdownItemCheckbox({
|
|
|
454
454
|
children: indeterminate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
455
455
|
"svg",
|
|
456
456
|
{
|
|
457
|
+
"aria-hidden": "true",
|
|
457
458
|
className: "h-3 w-3",
|
|
458
459
|
xmlns: "http://www.w3.org/2000/svg",
|
|
459
460
|
viewBox: "0 0 16 16",
|
|
@@ -471,6 +472,7 @@ function DropdownItemCheckbox({
|
|
|
471
472
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
472
473
|
"svg",
|
|
473
474
|
{
|
|
475
|
+
"aria-hidden": "true",
|
|
474
476
|
className: "h-3 w-3",
|
|
475
477
|
xmlns: "http://www.w3.org/2000/svg",
|
|
476
478
|
viewBox: "0 0 16 16",
|
|
@@ -611,5 +613,5 @@ exports.DropdownHeader = DropdownHeader;
|
|
|
611
613
|
exports.DropdownItem = DropdownItem;
|
|
612
614
|
exports.DropdownLabel = DropdownLabel;
|
|
613
615
|
exports.DropdownSeparator = DropdownSeparator;
|
|
614
|
-
//# sourceMappingURL=chunk-
|
|
615
|
-
//# sourceMappingURL=chunk-
|
|
616
|
+
//# sourceMappingURL=chunk-CV4CVGLO.cjs.map
|
|
617
|
+
//# sourceMappingURL=chunk-CV4CVGLO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Dropdown/Dropdown.tsx"],"names":["React","useClickOutside","useEscapeKey","jsx","jsxs","cn","inputVariants","Fragment"],"mappings":"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","file":"chunk-CV4CVGLO.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { useEscapeKey } from '../../hooks/useEscapeKey';\nimport { inputVariants } from '../Input';\n\nexport type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'bottom';\n\nexport interface DropdownProps {\n /** The trigger element (usually a button) */\n trigger: React.ReactElement<{\n onClick?: () => void;\n disabled?: boolean;\n 'aria-haspopup'?: string;\n 'aria-expanded'?: boolean;\n 'aria-controls'?: string;\n }>;\n /** Dropdown content */\n children: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: DropdownPlacement;\n /** Additional class name for the dropdown menu */\n className?: string;\n /** Width of the dropdown menu */\n width?: 'auto' | 'trigger' | number;\n /** Whether the dropdown is disabled */\n disabled?: boolean;\n /** Whether to render a search field at the top of the dropdown */\n searchable?: boolean;\n /** Placeholder text for the search input */\n searchPlaceholder?: string;\n /** Accessible label for the search input */\n searchAriaLabel?: string;\n /** Content to render when no items match the search query */\n searchEmptyState?: React.ReactNode;\n /** Whether dropdown items support multi-select checkboxes */\n multiSelect?: boolean;\n /** Selected item values for controlled multi-select dropdowns */\n selectedValues?: string[];\n /** Initial selected item values for uncontrolled multi-select dropdowns */\n defaultSelectedValues?: string[];\n /** Callback fired when selected values change in multi-select mode */\n onSelectedValuesChange?: (values: string[]) => void;\n /** Whether to render a select-all control for multi-select dropdowns */\n showSelectAll?: boolean;\n /** Label for the select-all control */\n selectAllLabel?: React.ReactNode;\n}\n\nconst placementStyles: Record<DropdownPlacement, string> = {\n 'bottom-start': 'top-full left-0 mt-2',\n 'bottom-end': 'top-full right-0 mt-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n};\n\ninterface DropdownContextValue {\n multiSelect: boolean;\n selectedValues: string[];\n toggleSelectedValue: (value: string) => void;\n}\n\nconst DropdownContext = React.createContext<DropdownContextValue | null>(null);\n\nfunction getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getNodeText).join(' ');\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction isDropdownElement<P>(\n node: React.ReactNode,\n component: React.JSXElementConstructor<P>\n): node is React.ReactElement<P> {\n return React.isValidElement(node) && node.type === component;\n}\n\nfunction hasVisibleDropdownContent(node: React.ReactNode): boolean {\n if (node == null || typeof node === 'boolean') {\n return false;\n }\n\n if (Array.isArray(node)) {\n return node.some(hasVisibleDropdownContent);\n }\n\n if (!React.isValidElement<{ children?: React.ReactNode }>(node)) {\n if (typeof node === 'string') {\n return node.trim().length > 0;\n }\n\n return true;\n }\n\n if (node.type === React.Fragment) {\n return React.Children.toArray(node.props.children).some(\n hasVisibleDropdownContent\n );\n }\n\n if (\n node.type === DropdownSeparator ||\n node.type === DropdownLabel ||\n node.type === DropdownHeader\n ) {\n return false;\n }\n\n if (node.type === DropdownContent) {\n return React.Children.toArray(node.props.children).some(\n hasVisibleDropdownContent\n );\n }\n\n return true;\n}\n\nfunction normalizeDropdownSiblings(\n children: React.ReactNode[]\n): React.ReactNode[] {\n const hasContentBefore = (index: number) => {\n for (let current = index - 1; current >= 0; current -= 1) {\n const child = children[current];\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return false;\n }\n\n if (hasVisibleDropdownContent(child)) {\n return true;\n }\n }\n\n return false;\n };\n\n const hasContentAfter = (index: number) => {\n for (let current = index + 1; current < children.length; current += 1) {\n const child = children[current];\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return false;\n }\n\n if (hasVisibleDropdownContent(child)) {\n return true;\n }\n }\n\n return false;\n };\n\n return children.filter((child, index) => {\n if (isDropdownElement(child, DropdownSeparator)) {\n return hasContentBefore(index) && hasContentAfter(index);\n }\n\n if (isDropdownElement(child, DropdownLabel)) {\n return hasContentAfter(index);\n }\n\n return true;\n });\n}\n\nfunction filterDropdownChildren(\n children: React.ReactNode,\n query: string\n): React.ReactNode[] {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return React.Children.toArray(children);\n }\n\n const filteredChildren = React.Children.toArray(children)\n .map((child) => {\n if (!React.isValidElement<{ children?: React.ReactNode }>(child)) {\n if (typeof child === 'string' || typeof child === 'number') {\n return String(child).toLowerCase().includes(normalizedQuery)\n ? child\n : null;\n }\n\n return null;\n }\n\n if (child.type === React.Fragment) {\n const fragmentChildren = filterDropdownChildren(\n child.props.children,\n normalizedQuery\n );\n\n return fragmentChildren.length > 0\n ? React.cloneElement(child, undefined, fragmentChildren)\n : null;\n }\n\n if (isDropdownElement(child, DropdownHeader)) {\n return child;\n }\n\n if (isDropdownElement(child, DropdownItem)) {\n const searchText = [\n getNodeText(child.props.children),\n child.props.searchText,\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n\n return searchText.includes(normalizedQuery) ? child : null;\n }\n\n if (isDropdownElement(child, DropdownContent)) {\n const contentChildren = filterDropdownChildren(\n child.props.children,\n normalizedQuery\n );\n\n return hasVisibleDropdownContent(contentChildren)\n ? React.cloneElement(child, undefined, contentChildren)\n : null;\n }\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return child;\n }\n\n if (isDropdownElement(child, DropdownLabel)) {\n return child;\n }\n\n const nestedChildren = child.props.children;\n\n if (nestedChildren === undefined) {\n return child;\n }\n\n const filteredNestedChildren = filterDropdownChildren(\n nestedChildren,\n normalizedQuery\n );\n\n return filteredNestedChildren.length > 0\n ? React.cloneElement(child, undefined, filteredNestedChildren)\n : null;\n })\n .filter((child) => child !== null);\n\n return normalizeDropdownSiblings(filteredChildren);\n}\n\nfunction getSelectableValues(children: React.ReactNode): string[] {\n return React.Children.toArray(children).flatMap((child) => {\n if (\n !React.isValidElement<{ children?: React.ReactNode; value?: unknown }>(\n child\n )\n ) {\n return [];\n }\n\n if (child.type === React.Fragment || child.type === DropdownContent) {\n return getSelectableValues(child.props.children);\n }\n\n if (isDropdownElement(child, DropdownItem)) {\n return typeof child.props.value === 'string' ? [child.props.value] : [];\n }\n\n return child.props.children !== undefined\n ? getSelectableValues(child.props.children)\n : [];\n });\n}\n\n/**\n * An accessible dropdown menu component.\n *\n * @example\n * ```tsx\n * <Dropdown\n * trigger={<Button>Options</Button>}\n * >\n * <DropdownItem onClick={() => console.log('Edit')}>Edit</DropdownItem>\n * <DropdownItem onClick={() => console.log('Delete')} variant=\"danger\">Delete</DropdownItem>\n * </Dropdown>\n * ```\n */\nfunction Dropdown({\n trigger,\n children,\n open: controlledOpen,\n onOpenChange,\n placement = 'bottom-start',\n className,\n width = 'auto',\n disabled = false,\n searchable = false,\n searchPlaceholder = 'Search...',\n searchAriaLabel = 'Search dropdown items',\n searchEmptyState = 'No results found',\n multiSelect = false,\n selectedValues: controlledSelectedValues,\n defaultSelectedValues = [],\n onSelectedValuesChange,\n showSelectAll = false,\n selectAllLabel = 'Select all',\n}: DropdownProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const [uncontrolledSelectedValues, setUncontrolledSelectedValues] =\n React.useState(defaultSelectedValues);\n const [searchQuery, setSearchQuery] = React.useState('');\n const containerRef = React.useRef<HTMLDivElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const menuId = React.useId();\n\n const isControlled = controlledOpen !== undefined;\n const isSelectedValuesControlled = controlledSelectedValues !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const selectedValues = isSelectedValuesControlled\n ? controlledSelectedValues\n : uncontrolledSelectedValues;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange]\n );\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setOpen(!isOpen);\n }\n }, [disabled, isOpen, setOpen]);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const setSelectedValues = React.useCallback(\n (values: string[]) => {\n if (!isSelectedValuesControlled) {\n setUncontrolledSelectedValues(values);\n }\n onSelectedValuesChange?.(values);\n },\n [isSelectedValuesControlled, onSelectedValuesChange]\n );\n\n const toggleSelectedValue = React.useCallback(\n (value: string) => {\n if (!multiSelect) {\n return;\n }\n\n setSelectedValues(\n selectedValues.includes(value)\n ? selectedValues.filter((selectedValue) => selectedValue !== value)\n : [...selectedValues, value]\n );\n },\n [multiSelect, selectedValues, setSelectedValues]\n );\n\n const dropdownContext = React.useMemo<DropdownContextValue>(\n () => ({\n multiSelect,\n selectedValues,\n toggleSelectedValue,\n }),\n [multiSelect, selectedValues, toggleSelectedValue]\n );\n\n useClickOutside(containerRef, handleClose, isOpen);\n useEscapeKey(handleClose, isOpen);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchQuery('');\n return;\n }\n\n if (searchable) {\n requestAnimationFrame(() => searchInputRef.current?.focus());\n }\n }, [isOpen, searchable]);\n\n // Clone trigger to add event handlers\n const triggerElement = React.cloneElement(trigger, {\n onClick: handleToggle,\n 'aria-haspopup': 'menu',\n 'aria-expanded': isOpen,\n 'aria-controls': isOpen ? menuId : undefined,\n disabled: disabled || trigger.props.disabled,\n });\n\n const widthStyle =\n typeof width === 'number'\n ? { width: `${width}px` }\n : width === 'trigger'\n ? { minWidth: '100%' }\n : {};\n\n const filteredChildren = React.useMemo(\n () => filterDropdownChildren(children, searchQuery),\n [children, searchQuery]\n );\n const visibleSelectableValues = React.useMemo(\n () => getSelectableValues(searchable ? filteredChildren : children),\n [children, filteredChildren, searchable]\n );\n const hasSearchResults = React.useMemo(\n () => hasVisibleDropdownContent(filteredChildren),\n [filteredChildren]\n );\n const allVisibleSelected =\n visibleSelectableValues.length > 0 &&\n visibleSelectableValues.every((value) => selectedValues.includes(value));\n const someVisibleSelected = visibleSelectableValues.some((value) =>\n selectedValues.includes(value)\n );\n\n const handleSelectAll = React.useCallback(() => {\n if (!multiSelect || visibleSelectableValues.length === 0) {\n return;\n }\n\n const visibleValueSet = new Set(visibleSelectableValues);\n\n setSelectedValues(\n allVisibleSelected\n ? selectedValues.filter((value) => !visibleValueSet.has(value))\n : Array.from(new Set([...selectedValues, ...visibleSelectableValues]))\n );\n }, [\n allVisibleSelected,\n multiSelect,\n selectedValues,\n setSelectedValues,\n visibleSelectableValues,\n ]);\n\n return (\n <DropdownContext.Provider value={dropdownContext}>\n <div ref={containerRef} className=\"relative inline-flex\">\n {triggerElement}\n {isOpen && (\n <div\n style={widthStyle}\n data-slot=\"dropdown-menu\"\n className={cn(\n 'absolute z-50 min-w-[12rem]',\n 'rounded-xl border border-neutral-200 bg-white shadow-lg',\n 'dark:border-neutral-700 dark:bg-neutral-800',\n 'animate-in fade-in zoom-in-95 duration-100',\n placementStyles[placement],\n className\n )}\n >\n {searchable && (\n <div\n className=\"border-b border-neutral-200 p-2 dark:border-neutral-700\"\n data-slot=\"dropdown-search\"\n >\n <input\n ref={searchInputRef}\n type=\"search\"\n value={searchQuery}\n onChange={(event) => setSearchQuery(event.target.value)}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n aria-controls={menuId}\n aria-autocomplete=\"list\"\n data-slot=\"dropdown-search-input\"\n className={cn(\n inputVariants({ size: 'sm' }),\n 'text-sm',\n 'dark:border-neutral-600 dark:bg-neutral-700 dark:text-neutral-100'\n )}\n />\n </div>\n )}\n <div id={menuId} role=\"menu\">\n {multiSelect &&\n showSelectAll &&\n visibleSelectableValues.length > 0 && (\n <>\n <div className=\"p-2\" data-slot=\"dropdown-select-all\">\n <DropdownItem\n checked={allVisibleSelected}\n indeterminate={\n !allVisibleSelected && someVisibleSelected\n }\n onClick={handleSelectAll}\n >\n {selectAllLabel}\n </DropdownItem>\n </div>\n <DropdownSeparator />\n </>\n )}\n {searchable ? (\n hasSearchResults ? (\n filteredChildren\n ) : (\n <div\n className=\"text-muted-foreground px-3 py-4 text-center text-sm\"\n data-slot=\"dropdown-empty\"\n >\n {searchEmptyState}\n </div>\n )\n ) : (\n children\n )}\n </div>\n </div>\n )}\n </div>\n </DropdownContext.Provider>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\n// ============================================================================\n// Dropdown Header Component\n// ============================================================================\n\nexport interface DropdownHeaderProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n /** Avatar element or image */\n avatar?: React.ReactNode;\n /** Primary text (e.g., user name) */\n title: React.ReactNode;\n /** Secondary text (e.g., email) */\n subtitle?: React.ReactNode;\n}\n\n/**\n * A header section for dropdown menus, typically used for user info.\n *\n * @example\n * ```tsx\n * <DropdownHeader\n * avatar={<Avatar name=\"John Doe\" />}\n * title=\"John Doe\"\n * subtitle=\"john@example.com\"\n * />\n * ```\n */\nconst DropdownHeader = React.forwardRef<HTMLDivElement, DropdownHeaderProps>(\n ({ className, avatar, title, subtitle, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"dropdown-header\"\n className={cn(\n 'border-b border-neutral-200 p-4 dark:border-neutral-700',\n className\n )}\n {...props}\n >\n <div\n className=\"flex items-center gap-3\"\n data-slot=\"dropdown-header-row\"\n >\n {avatar}\n <div className=\"min-w-0 flex-1\">\n <p\n className=\"truncate text-sm font-semibold text-neutral-900 dark:text-white\"\n data-slot=\"dropdown-header-title\"\n >\n {title}\n </p>\n {subtitle && (\n <p\n className=\"text-muted-foreground truncate text-xs\"\n data-slot=\"dropdown-header-subtitle\"\n >\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n }\n);\n\nDropdownHeader.displayName = 'DropdownHeader';\n\n// ============================================================================\n// Dropdown Content Component\n// ============================================================================\n\nexport type DropdownContentProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * A container for dropdown menu items with proper padding.\n */\nconst DropdownContent = React.forwardRef<HTMLDivElement, DropdownContentProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"dropdown-content\"\n className={cn('p-2', className)}\n {...props}\n />\n );\n }\n);\n\nDropdownContent.displayName = 'DropdownContent';\n\n// ============================================================================\n// Dropdown Item Component\n// ============================================================================\n\nexport interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display before the label */\n icon?: React.ReactNode;\n /** Danger variant for destructive actions */\n variant?: 'default' | 'danger';\n /** Optional text used when filtering searchable dropdown items */\n searchText?: string;\n /** Checked state for multi-select items */\n checked?: boolean;\n /** Indeterminate state for multi-select items */\n indeterminate?: boolean;\n /** Callback fired when a multi-select item changes */\n onCheckedChange?: (checked: boolean) => void;\n}\n\nfunction DropdownItemCheckbox({\n checked,\n indeterminate = false,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n data-slot=\"dropdown-checkbox\"\n className={cn(\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded border-2 transition-colors duration-150',\n checked || indeterminate\n ? 'border-primary-500 bg-primary-800 text-white'\n : 'border-input bg-background text-transparent'\n )}\n >\n {indeterminate ? (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n ) : (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n );\n}\n\n/**\n * An item within a Dropdown menu.\n */\nconst DropdownItem = React.forwardRef<HTMLButtonElement, DropdownItemProps>(\n (\n {\n className,\n icon,\n variant = 'default',\n children,\n searchText,\n checked,\n indeterminate = false,\n onCheckedChange,\n onClick,\n value,\n disabled,\n ...props\n },\n ref\n ) => {\n const dropdownContext = React.useContext(DropdownContext);\n const itemValue = typeof value === 'string' ? value : undefined;\n const contextSelectedValues = dropdownContext?.selectedValues ?? [];\n const isMultiSelectItem =\n (dropdownContext?.multiSelect === true && itemValue !== undefined) ||\n checked !== undefined ||\n indeterminate;\n const isChecked =\n checked ??\n (isMultiSelectItem\n ? itemValue !== undefined && contextSelectedValues.includes(itemValue)\n : false);\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (\n dropdownContext &&\n isMultiSelectItem &&\n itemValue !== undefined &&\n !disabled\n ) {\n dropdownContext.toggleSelectedValue(itemValue);\n onCheckedChange?.(!isChecked);\n }\n\n onClick?.(event);\n },\n [\n disabled,\n dropdownContext,\n isChecked,\n isMultiSelectItem,\n itemValue,\n onCheckedChange,\n onClick,\n ]\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role={isMultiSelectItem ? 'menuitemcheckbox' : 'menuitem'}\n aria-checked={\n isMultiSelectItem ? (indeterminate ? 'mixed' : isChecked) : undefined\n }\n disabled={disabled}\n data-slot=\"dropdown-item\"\n className={cn(\n 'flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm',\n 'transition-colors duration-150',\n 'focus:outline-none',\n variant === 'default' && [\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\n 'focus:bg-neutral-100 dark:focus:bg-neutral-700',\n ],\n variant === 'danger' && [\n 'text-red-600 dark:text-red-400',\n 'hover:bg-red-50 dark:hover:bg-red-900/20',\n 'focus:bg-red-50 dark:focus:bg-red-900/20',\n ],\n className\n )}\n data-search-text={searchText}\n onClick={handleClick}\n value={value}\n {...props}\n >\n {isMultiSelectItem && (\n <DropdownItemCheckbox\n checked={isChecked}\n indeterminate={indeterminate}\n />\n )}\n {icon && (\n <span className=\"h-4 w-4 shrink-0\" data-slot=\"dropdown-item-icon\">\n {icon}\n </span>\n )}\n <span className=\"font-medium\" data-slot=\"dropdown-item-label\">\n {children}\n </span>\n </button>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\n// ============================================================================\n// Dropdown Separator Component\n// ============================================================================\n\n/**\n * A separator between dropdown items.\n */\nfunction DropdownSeparator({ className }: { className?: string }) {\n return (\n <hr\n data-slot=\"dropdown-separator\"\n className={cn(\n 'border-t border-neutral-200 dark:border-neutral-700',\n className\n )}\n />\n );\n}\n\nDropdownSeparator.displayName = 'DropdownSeparator';\n\n// ============================================================================\n// Dropdown Label Component\n// ============================================================================\n\n/**\n * A label/header for a group of dropdown items.\n */\nfunction DropdownLabel({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"dropdown-label\"\n className={cn(\n 'px-3 py-1.5 text-xs font-semibold tracking-wider uppercase',\n 'text-muted-foreground',\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nDropdownLabel.displayName = 'DropdownLabel';\n\nexport {\n Dropdown,\n DropdownHeader,\n DropdownContent,\n DropdownItem,\n DropdownSeparator,\n DropdownLabel,\n};\n"]}
|
|
@@ -25,7 +25,7 @@ var webchartBrand = {
|
|
|
25
25
|
card: "#ffffff",
|
|
26
26
|
cardForeground: "#171717",
|
|
27
27
|
muted: "#f5f5f5",
|
|
28
|
-
mutedForeground: "#
|
|
28
|
+
mutedForeground: "#494949",
|
|
29
29
|
border: "#e5e7eb",
|
|
30
30
|
input: "#e5e7eb",
|
|
31
31
|
ring: "#f5841f",
|
|
@@ -78,5 +78,5 @@ var webchartBrand = {
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
export { webchartBrand };
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-CW66SO5O.js.map
|
|
82
|
+
//# sourceMappingURL=chunk-CW66SO5O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/brands/webchart.ts"],"names":[],"mappings":";AAaO,IAAM,aAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,UAAA;AAAA,EACb,WAAA,EAAa,8CAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,OAAA,EAAS,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC1D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/brands/webchart.ts"],"names":[],"mappings":";AAaO,IAAM,aAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,UAAA;AAAA,EACN,WAAA,EAAa,UAAA;AAAA,EACb,WAAA,EAAa,8CAAA;AAAA,EAEb,MAAA,EAAQ;AAAA;AAAA,IAEN,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA;AAAA,IAGA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAAA,IAGA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,cAAA,EAAgB,SAAA;AAAA,MAChB,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa,SAAA;AAAA,MACb,qBAAA,EAAuB,SAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB,SAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,CAAC,OAAA,EAAS,eAAA,EAAiB,aAAa,YAAY,CAAA;AAAA,MAC1D,IAAA,EAAM,CAAC,cAAA,EAAgB,gBAAA,EAAkB,SAAS,WAAW;AAAA;AAC/D,GACF;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,+DAAA;AAAA,IACN,QAAA,EACE,kEAAA;AAAA,IACF,KAAA,EAAO;AAAA;AAEX","file":"chunk-CW66SO5O.js","sourcesContent":["/**\n * WebChart Brand Configuration\n *\n * The official brand theme for WebChart EHR.\n * Primary color: #f5841f (WebChart Orange)\n */\n\nimport type { BrandConfig } from './types';\n\n/**\n * WebChart brand configuration.\n * This defines all the design tokens used in WebChart applications.\n */\nexport const webchartBrand: BrandConfig = {\n name: 'webchart',\n displayName: 'WebChart',\n description: 'Future-ready electronic health record system',\n\n colors: {\n // Primary color scale - WebChart Orange (#f5841f)\n primary: {\n 50: '#fff7ed',\n 100: '#ffedd5',\n 200: '#fed7aa',\n 300: '#fdba74',\n 400: '#fb923c',\n 500: '#f5841f',\n 600: '#ea580c',\n 700: '#c2410c',\n 800: '#9a3412',\n 900: '#7c2d12',\n 950: '#431407',\n },\n\n // Light mode semantic colors\n light: {\n background: '#ffffff',\n foreground: '#171717',\n card: '#ffffff',\n cardForeground: '#171717',\n muted: '#f5f5f5',\n mutedForeground: '#494949',\n border: '#e5e7eb',\n input: '#e5e7eb',\n ring: '#f5841f',\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n success: '#22c55e',\n successForeground: '#ffffff',\n warning: '#f59e0b',\n warningForeground: '#ffffff',\n },\n\n // Dark mode semantic colors\n dark: {\n background: '#171717',\n foreground: '#fafafa',\n card: '#262626',\n cardForeground: '#fafafa',\n muted: '#404040',\n mutedForeground: '#a1a1aa',\n border: '#404040',\n input: '#404040',\n ring: '#f5841f',\n destructive: '#dc2626',\n destructiveForeground: '#fafafa',\n success: '#16a34a',\n successForeground: '#fafafa',\n warning: '#d97706',\n warningForeground: '#fafafa',\n },\n },\n\n typography: {\n fontFamily: {\n sans: ['Inter', 'ui-sans-serif', 'system-ui', 'sans-serif'],\n mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],\n },\n },\n\n borderRadius: {\n none: '0',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n '2xl': '1.5rem',\n full: '9999px',\n },\n\n boxShadow: {\n card: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n dropdown:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n modal: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n};\n\nexport { webchartBrand as default };\n"]}
|