erp-pro-ui 0.1.9 → 0.2.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/README.md +14 -0
- package/dist/button.cjs +1 -1
- package/dist/button.mjs +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.mjs +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/chip.cjs +1 -1
- package/dist/chip.mjs +1 -1
- package/dist/chunks/{DropdownMenu-CeD9kl_N.cjs → DropdownMenu-BDrNYO-D.cjs} +5 -4
- package/dist/chunks/DropdownMenu-BDrNYO-D.cjs.map +1 -0
- package/dist/chunks/{DropdownMenu-CBdZoVQs.mjs → DropdownMenu-BtTOri-A.mjs} +5 -4
- package/dist/chunks/DropdownMenu-BtTOri-A.mjs.map +1 -0
- package/dist/chunks/{tooltip-PJaQa8_l.cjs → Tooltip-DD30yj3A.cjs} +1 -1
- package/dist/chunks/{tooltip-PJaQa8_l.cjs.map → Tooltip-DD30yj3A.cjs.map} +1 -1
- package/dist/chunks/{tooltip-CmB8xKOF.mjs → Tooltip-DK3B879v.mjs} +1 -1
- package/dist/chunks/{tooltip-CmB8xKOF.mjs.map → Tooltip-DK3B879v.mjs.map} +1 -1
- package/dist/chunks/{button-DddUhuR-.mjs → button-A6UTvrOu.mjs} +2 -2
- package/dist/chunks/{button-DddUhuR-.mjs.map → button-A6UTvrOu.mjs.map} +1 -1
- package/dist/chunks/{button-xqernofO.cjs → button-C4MXPxsC.cjs} +2 -2
- package/dist/chunks/{button-xqernofO.cjs.map → button-C4MXPxsC.cjs.map} +1 -1
- package/dist/chunks/{calendar-BVuDnWUc.mjs → calendar-5XzPqKbE.mjs} +4 -4
- package/dist/chunks/calendar-5XzPqKbE.mjs.map +1 -0
- package/dist/chunks/{calendar-CYxkfvDv.cjs → calendar-CQJgQ5H_.cjs} +4 -4
- package/dist/chunks/calendar-CQJgQ5H_.cjs.map +1 -0
- package/dist/chunks/{charts-DuVZD7el.cjs → charts-BmIV-mJy.cjs} +40 -9
- package/dist/chunks/charts-BmIV-mJy.cjs.map +1 -0
- package/dist/chunks/{charts-mfevxJSU.mjs → charts-DkVu0rFc.mjs} +40 -9
- package/dist/chunks/charts-DkVu0rFc.mjs.map +1 -0
- package/dist/chunks/{chip-BDrpg5Ux.cjs → chip-B0YzBwkz.cjs} +7 -4
- package/dist/chunks/chip-B0YzBwkz.cjs.map +1 -0
- package/dist/chunks/{chip-Dt0p0_zd.mjs → chip-CqcdcSs2.mjs} +7 -4
- package/dist/chunks/chip-CqcdcSs2.mjs.map +1 -0
- package/dist/chunks/color-palette-C3lesasJ.mjs +329 -0
- package/dist/chunks/color-palette-C3lesasJ.mjs.map +1 -0
- package/dist/chunks/color-palette-pLh6En3n.cjs +384 -0
- package/dist/chunks/color-palette-pLh6En3n.cjs.map +1 -0
- package/dist/chunks/{combobox-0n1_tB8L.mjs → combobox-B6yk5U82.mjs} +4 -4
- package/dist/chunks/combobox-B6yk5U82.mjs.map +1 -0
- package/dist/chunks/{combobox-Ca7-BcLO.cjs → combobox-CtNrGmuR.cjs} +4 -4
- package/dist/chunks/combobox-CtNrGmuR.cjs.map +1 -0
- package/dist/chunks/{data-table-Bt2c9dog.mjs → data-table-Dtf6lKpp.mjs} +11 -11
- package/dist/chunks/{data-table-Bt2c9dog.mjs.map → data-table-Dtf6lKpp.mjs.map} +1 -1
- package/dist/chunks/{data-table-DhCpQjdf.cjs → data-table-fAEuevPn.cjs} +12 -12
- package/dist/chunks/{data-table-DhCpQjdf.cjs.map → data-table-fAEuevPn.cjs.map} +1 -1
- package/dist/chunks/{date-picker-CDACysPq.mjs → date-picker-BmQ0rgwH.mjs} +2 -2
- package/dist/chunks/{date-picker-CDACysPq.mjs.map → date-picker-BmQ0rgwH.mjs.map} +1 -1
- package/dist/chunks/{date-picker-duwF35Rk.cjs → date-picker-qpUZMtZC.cjs} +2 -2
- package/dist/chunks/{date-picker-duwF35Rk.cjs.map → date-picker-qpUZMtZC.cjs.map} +1 -1
- package/dist/chunks/{form-CvNNjA1i.mjs → form-CtZ6U-_B.mjs} +2 -2
- package/dist/chunks/{form-CvNNjA1i.mjs.map → form-CtZ6U-_B.mjs.map} +1 -1
- package/dist/chunks/{form-C_JxqsSZ.cjs → form-X6Vyaavl.cjs} +2 -2
- package/dist/chunks/{form-C_JxqsSZ.cjs.map → form-X6Vyaavl.cjs.map} +1 -1
- package/dist/chunks/{input-BvTrWtRn.mjs → input-Bqo9Q5zF.mjs} +33 -12
- package/dist/chunks/input-Bqo9Q5zF.mjs.map +1 -0
- package/dist/chunks/{input-wAznik-_.cjs → input-DkCPyWXi.cjs} +33 -12
- package/dist/chunks/input-DkCPyWXi.cjs.map +1 -0
- package/dist/chunks/{label-CxmbGh0l.cjs → label-BKzqfAAq.cjs} +2 -2
- package/dist/chunks/{label-CxmbGh0l.cjs.map → label-BKzqfAAq.cjs.map} +1 -1
- package/dist/chunks/{label-C1Ekt3j2.mjs → label-Drxg0cG2.mjs} +2 -2
- package/dist/chunks/{label-C1Ekt3j2.mjs.map → label-Drxg0cG2.mjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-CdPcvP_S.cjs → multi-select-combobox-C0DoDzxQ.cjs} +5 -5
- package/dist/chunks/multi-select-combobox-C0DoDzxQ.cjs.map +1 -0
- package/dist/chunks/{multi-select-combobox-_nuc3cZ3.mjs → multi-select-combobox-Do23ZfOQ.mjs} +5 -5
- package/dist/chunks/multi-select-combobox-Do23ZfOQ.mjs.map +1 -0
- package/dist/chunks/{password-strength-meter-BEx94cfy.mjs → password-strength-meter-BsvqQBAg.mjs} +3 -3
- package/dist/chunks/{password-strength-meter-BEx94cfy.mjs.map → password-strength-meter-BsvqQBAg.mjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-BNnmSgLh.cjs → password-strength-meter-DCi_BP7e.cjs} +3 -3
- package/dist/chunks/{password-strength-meter-BNnmSgLh.cjs.map → password-strength-meter-DCi_BP7e.cjs.map} +1 -1
- package/dist/chunks/radio-CuiM_gDv.mjs +50 -0
- package/dist/chunks/radio-CuiM_gDv.mjs.map +1 -0
- package/dist/chunks/radio-zx9xEW_C.cjs +56 -0
- package/dist/chunks/radio-zx9xEW_C.cjs.map +1 -0
- package/dist/chunks/{select-B3tfHqQo.mjs → select-CUaSNR09.mjs} +4 -4
- package/dist/chunks/select-CUaSNR09.mjs.map +1 -0
- package/dist/chunks/{select-BwB9MsSv.cjs → select-bZ9WqLOc.cjs} +4 -4
- package/dist/chunks/select-bZ9WqLOc.cjs.map +1 -0
- package/dist/chunks/{sidebar-CCKZ_NMW.mjs → sidebar-DYEDFV2u.mjs} +3 -3
- package/dist/chunks/{sidebar-CCKZ_NMW.mjs.map → sidebar-DYEDFV2u.mjs.map} +1 -1
- package/dist/chunks/{sidebar-WG9Wnwnv.cjs → sidebar-Kkr45nuN.cjs} +3 -3
- package/dist/chunks/{sidebar-WG9Wnwnv.cjs.map → sidebar-Kkr45nuN.cjs.map} +1 -1
- package/dist/chunks/{stepper-CvuyKYXC.cjs → stepper-DepvEGfr.cjs} +2 -2
- package/dist/chunks/{stepper-CvuyKYXC.cjs.map → stepper-DepvEGfr.cjs.map} +1 -1
- package/dist/chunks/{stepper-CjywisS9.mjs → stepper-Jv5OS1nY.mjs} +2 -2
- package/dist/chunks/{stepper-CjywisS9.mjs.map → stepper-Jv5OS1nY.mjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-azXKWDYT.mjs → sun-to-moon-button-BJtBEaa3.mjs} +69 -50
- package/dist/chunks/sun-to-moon-button-BJtBEaa3.mjs.map +1 -0
- package/dist/chunks/{sun-to-moon-button-A__wuc_4.cjs → sun-to-moon-button-PwgTPsTW.cjs} +69 -50
- package/dist/chunks/sun-to-moon-button-PwgTPsTW.cjs.map +1 -0
- package/dist/chunks/{switch-DPyzVrNh.cjs → switch-X3l8xnle.cjs} +10 -29
- package/dist/chunks/switch-X3l8xnle.cjs.map +1 -0
- package/dist/chunks/{switch-C1gKE0m0.mjs → switch-iPsN1NS2.mjs} +10 -29
- package/dist/chunks/switch-iPsN1NS2.mjs.map +1 -0
- package/dist/color-palette.cjs +9 -1
- package/dist/color-palette.mjs +2 -2
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.mjs +1 -1
- package/dist/components/data-display/charts/BarChart.d.ts +5 -0
- package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
- package/dist/components/data-display/chip/Chip.d.ts +1 -1
- package/dist/components/data-display/chip/Chip.d.ts.map +1 -1
- package/dist/components/data-display/color-palette/ColorPalette.d.ts +24 -16
- package/dist/components/data-display/color-palette/ColorPalette.d.ts.map +1 -1
- package/dist/components/data-display/color-palette/index.d.ts +2 -1
- package/dist/components/data-display/color-palette/index.d.ts.map +1 -1
- package/dist/components/data-display/dashboard-cards/StatCard.d.ts +11 -3
- package/dist/components/data-display/dashboard-cards/StatCard.d.ts.map +1 -1
- package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts +16 -1
- package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts.map +1 -1
- package/dist/components/effects/sun-to-moon-button/index.d.ts +1 -1
- package/dist/components/effects/sun-to-moon-button/index.d.ts.map +1 -1
- package/dist/components/forms/input/Input.d.ts.map +1 -1
- package/dist/components/forms/input/types.d.ts +2 -0
- package/dist/components/forms/input/types.d.ts.map +1 -1
- package/dist/components/forms/radio/Radio.d.ts.map +1 -1
- package/dist/components/forms/switch/Switch.d.ts.map +1 -1
- package/dist/components/overlays/dropdown-menu/DropdownMenu.d.ts +1 -1
- package/dist/components/overlays/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/overlays/dropdown-menu/types.d.ts +1 -0
- package/dist/components/overlays/dropdown-menu/types.d.ts.map +1 -1
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.mjs +1 -1
- package/dist/date-picker.cjs +1 -1
- package/dist/date-picker.mjs +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +1 -1
- package/dist/index.cjs +81 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +74 -68
- package/dist/index.mjs.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.mjs +1 -1
- package/dist/label.cjs +1 -1
- package/dist/label.mjs +1 -1
- package/dist/multi-select-combobox.cjs +1 -1
- package/dist/multi-select-combobox.mjs +1 -1
- package/dist/password-strength-meter.cjs +1 -1
- package/dist/password-strength-meter.mjs +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.mjs +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.mjs +1 -1
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.mjs +1 -1
- package/dist/sun-to-moon-button.cjs +1 -1
- package/dist/sun-to-moon-button.mjs +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.mjs +1 -1
- package/dist/tooltip.cjs +2 -2
- package/dist/tooltip.mjs +1 -1
- package/package.json +5 -5
- package/dist/chunks/DropdownMenu-CBdZoVQs.mjs.map +0 -1
- package/dist/chunks/DropdownMenu-CeD9kl_N.cjs.map +0 -1
- package/dist/chunks/calendar-BVuDnWUc.mjs.map +0 -1
- package/dist/chunks/calendar-CYxkfvDv.cjs.map +0 -1
- package/dist/chunks/charts-DuVZD7el.cjs.map +0 -1
- package/dist/chunks/charts-mfevxJSU.mjs.map +0 -1
- package/dist/chunks/chip-BDrpg5Ux.cjs.map +0 -1
- package/dist/chunks/chip-Dt0p0_zd.mjs.map +0 -1
- package/dist/chunks/color-palette-BmQC14gE.cjs +0 -789
- package/dist/chunks/color-palette-BmQC14gE.cjs.map +0 -1
- package/dist/chunks/color-palette-DnX1sODj.mjs +0 -782
- package/dist/chunks/color-palette-DnX1sODj.mjs.map +0 -1
- package/dist/chunks/combobox-0n1_tB8L.mjs.map +0 -1
- package/dist/chunks/combobox-Ca7-BcLO.cjs.map +0 -1
- package/dist/chunks/input-BvTrWtRn.mjs.map +0 -1
- package/dist/chunks/input-wAznik-_.cjs.map +0 -1
- package/dist/chunks/multi-select-combobox-CdPcvP_S.cjs.map +0 -1
- package/dist/chunks/multi-select-combobox-_nuc3cZ3.mjs.map +0 -1
- package/dist/chunks/radio-DOkKyKKL.mjs +0 -44
- package/dist/chunks/radio-DOkKyKKL.mjs.map +0 -1
- package/dist/chunks/radio-DyQ3jF-M.cjs +0 -50
- package/dist/chunks/radio-DyQ3jF-M.cjs.map +0 -1
- package/dist/chunks/select-B3tfHqQo.mjs.map +0 -1
- package/dist/chunks/select-BwB9MsSv.cjs.map +0 -1
- package/dist/chunks/sun-to-moon-button-A__wuc_4.cjs.map +0 -1
- package/dist/chunks/sun-to-moon-button-azXKWDYT.mjs.map +0 -1
- package/dist/chunks/switch-C1gKE0m0.mjs.map +0 -1
- package/dist/chunks/switch-DPyzVrNh.cjs.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../src/components/effects/border-beam/BorderBeam.tsx","../src/components/data-display/dashboard-cards/StatCard.tsx","../src/components/data-display/dashboard-cards/ChartCard.tsx","../src/components/data-display/dashboard-cards/TopProductsCard.tsx","../src/components/navigation/tabs/Tabs.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport interface BorderBeamProps {\n className?: string;\n size?: number;\n duration?: number;\n borderWidth?: number;\n anchor?: number;\n colorFrom?: string;\n colorTo?: string;\n delay?: number;\n}\n\nexport function BorderBeam({\n className = \"\",\n size = 200,\n duration = 15,\n anchor = 90,\n borderWidth = 0.5,\n colorFrom = \"var(--ds-color-accent)\",\n colorTo = \"var(--ds-color-accent-hover)\",\n delay = 0,\n}: BorderBeamProps) {\n return (\n <div\n style={\n {\n \"--size\": `${size}px`,\n \"--duration\": `${duration}s`,\n \"--anchor\": `${anchor}`,\n \"--border-width\": `${borderWidth}px`,\n \"--beam-color-from\": colorFrom,\n \"--beam-color-to\": colorTo,\n \"--delay\": `-${delay}s`,\n } as CSSProperties\n }\n className={`border-beam ${className}`}\n />\n );\n}\n","\"use client\";\n\nimport type { FC, ReactNode } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\n// ---------------------------------------------------------------------------\n// Internal: TrendBadge\n// ---------------------------------------------------------------------------\n\ninterface TrendBadgeProps {\n value: string;\n direction: \"up\" | \"down\";\n}\n\nconst TrendBadge: FC<TrendBadgeProps> = ({ value, direction }) => {\n const isUp = direction === \"up\";\n const color = isUp ? \"#05cd99\" : \"#e31d1c\";\n const bg = isUp ? \"rgba(5,205,153,0.10)\" : \"rgba(227,29,28,0.08)\";\n\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-[11px] font-semibold leading-none\"\n style={{ color, borderColor: color, backgroundColor: bg }}\n aria-label={`${value} ${isUp ? \"increase\" : \"decrease\"}`}\n >\n {value}\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n {isUp ? (\n <path d=\"M5 8V2M5 2L2 5M5 2L8 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n ) : (\n <path d=\"M5 2V8M5 8L2 5M5 8L8 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n )}\n </svg>\n </span>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Internal: MenuButton\n// ---------------------------------------------------------------------------\n\nconst MenuButton: FC<{ onClick?: () => void }> = ({ onClick }) => (\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-color-fg-subtle\"\n aria-label=\"More options\"\n onClick={onClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n);\n\n// ---------------------------------------------------------------------------\n// Internal: LegendDot\n// ---------------------------------------------------------------------------\n\nconst LegendDots: FC<{ items: { label: string; color: string }[] }> = ({ items }) => (\n <div className=\"flex items-center gap-3\">\n {items.map((item) => (\n <span key={item.label} className=\"flex items-center gap-1.5 text-xs text-ds-color-fg-muted\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n {item.label}\n </span>\n ))}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport type StatCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface StatCardLegendItem {\n label: string;\n color: string;\n}\n\nexport interface StatCardProps {\n /** Layout size:\n * - \"sm\" → 2-col — metric only, no chart\n * - \"md\" → 4-col — metric + compact chart on the right (default)\n * - \"lg\" → 12-col — metric header + full-width chart below\n */\n size?: StatCardSize;\n title: string;\n badge?: TrendBadgeProps;\n value: ReactNode;\n dateRange: string;\n /** Chart content (any chart component). Ignored when size=\"sm\".\n * For \"md\" the chart is placed in a fixed 68 × 130 px side zone — use\n * compact charts (MiniNeonSparkline, small BarChart, AreaChart, etc.).\n * For \"lg\" the chart spans full card width — set height via the chart prop. */\n chart?: ReactNode;\n /** Legend items shown in the header. Only visible when size=\"lg\". */\n legend?: StatCardLegendItem[];\n className?: string;\n onMenuClick?: () => void;\n}\n\n// ---------------------------------------------------------------------------\n// StatCard\n// ---------------------------------------------------------------------------\n\nexport const StatCard: FC<StatCardProps> = ({\n size = \"md\",\n title,\n badge,\n value,\n dateRange,\n chart,\n legend,\n className,\n onMenuClick,\n}) => {\n const base = mergeClassNames(\n \"rounded-2xl border border-ds-border-2 bg-ds-surface-1\",\n className,\n );\n\n // ── sm: 2-col, metric only ───────────────────────────────────────────────\n if (size === \"sm\") {\n return (\n <div className={mergeClassNames(base, \"flex flex-col gap-3 p-5\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <MenuButton onClick={onMenuClick} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-3xl font-extrabold tracking-tight text-ds-color-fg leading-none\">\n {value}\n </p>\n <p className=\"text-xs text-ds-color-fg-subtle mt-1\">{dateRange}</p>\n </div>\n </div>\n );\n }\n\n // ── md: 4-col, metric + side chart ──────────────────────────────────────\n if (size === \"md\") {\n return (\n <div className={mergeClassNames(base, \"flex flex-col gap-3 p-5\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <MenuButton onClick={onMenuClick} />\n </div>\n <div className=\"flex items-end justify-between gap-3\">\n <div className=\"flex flex-col gap-1 min-w-0\">\n <p className=\"text-3xl font-extrabold tracking-tight text-ds-color-fg leading-none\">\n {value}\n </p>\n <p className=\"text-xs text-ds-color-fg-subtle mt-1\">{dateRange}</p>\n </div>\n {chart && (\n <div className=\"h-[68px] w-[130px] shrink-0 overflow-hidden\">\n {chart}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // ── lg: 12-col, header + full-width chart ────────────────────────────────\n return (\n <div className={mergeClassNames(base, \"flex flex-col p-5\")}>\n {/* Header row */}\n <div className=\"flex flex-wrap items-start justify-between gap-x-6 gap-y-2 mb-4\">\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <p className=\"text-3xl font-extrabold tracking-tight text-ds-color-fg leading-none\">\n {value}\n </p>\n <p className=\"text-xs text-ds-color-fg-subtle\">{dateRange}</p>\n </div>\n <div className=\"flex items-center gap-4 ms-auto\">\n {legend && legend.length > 0 && <LegendDots items={legend} />}\n <MenuButton onClick={onMenuClick} />\n </div>\n </div>\n\n {/* Chart area */}\n {chart && (\n <div className=\"border-t border-ds-border-2 pt-4 w-full\">\n {chart}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC, ReactNode } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport interface ChartCardLegendItem {\n label: string;\n color: string;\n}\n\nexport interface ChartCardProps {\n title: string;\n dateRange?: string;\n legend?: ChartCardLegendItem[];\n className?: string;\n onMenuClick?: () => void;\n children: ReactNode;\n}\n\nexport const ChartCard: FC<ChartCardProps> = ({\n title,\n dateRange,\n legend,\n className,\n onMenuClick,\n children,\n}) => {\n return (\n <div\n className={mergeClassNames(\n \"flex flex-col gap-4 rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-5\",\n className,\n )}\n >\n <div className=\"flex flex-wrap items-start justify-between gap-x-6 gap-y-2\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">\n {title}\n </span>\n {dateRange && (\n <span className=\"text-xs text-ds-color-fg-subtle\">{dateRange}</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-4 ms-auto\">\n {legend && legend.length > 0 && (\n <div className=\"flex items-center gap-3\">\n {legend.map((item) => (\n <span\n key={item.label}\n className=\"flex items-center gap-1.5 text-xs text-ds-color-fg-muted\"\n >\n <span\n className=\"inline-block h-2.5 w-2.5 rounded-full shrink-0\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n {item.label}\n </span>\n ))}\n </div>\n )}\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-color-fg-subtle\"\n aria-label=\"More options\"\n onClick={onMenuClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n </div>\n </div>\n\n <div className=\"w-full\">{children}</div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport interface TopProductItem {\n id: string | number;\n name: string;\n category: string;\n soldCount: number;\n image?: string;\n rank: number;\n}\n\nexport interface TopProductsCardProps {\n title?: string;\n items: TopProductItem[];\n className?: string;\n onMenuClick?: () => void;\n}\n\nconst RankBadge: FC<{ rank: number }> = ({ rank }) => (\n <span\n className=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border text-xs font-semibold\"\n style={{\n borderColor: \"var(--ds-color-accent)\",\n color: \"var(--ds-color-accent)\",\n }}\n aria-label={`Rank ${rank}`}\n >\n {rank}\n </span>\n);\n\nconst ProductImage: FC<{ src?: string; alt: string }> = ({ src, alt }) => {\n if (src) {\n return (\n <img\n src={src}\n alt={alt}\n className=\"h-11 w-11 shrink-0 rounded-md object-contain bg-ds-color-bg-utility p-1\"\n />\n );\n }\n return (\n <div\n className=\"flex h-11 w-11 shrink-0 items-center justify-center rounded-md bg-ds-color-bg-utility text-ds-color-fg-subtle text-lg\"\n aria-hidden=\"true\"\n >\n □\n </div>\n );\n};\n\nexport const TopProductsCard: FC<TopProductsCardProps> = ({\n title = \"Top Products\",\n items,\n className,\n onMenuClick,\n}) => {\n return (\n <div\n className={mergeClassNames(\n \"flex flex-col rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-5\",\n className,\n )}\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">{title}</span>\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-color-fg-subtle\"\n aria-label=\"More options\"\n onClick={onMenuClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n </div>\n\n <ul className=\"flex flex-col divide-y divide-ds-border-2\" role=\"list\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-center gap-3 py-3 first:pt-0 last:pb-0\"\n >\n <ProductImage src={item.image} alt={item.name} />\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className=\"truncate text-sm font-semibold text-ds-color-fg\">\n {item.name}\n </span>\n <span className=\"truncate text-xs text-ds-color-fg-subtle\">\n {item.category} · {item.soldCount.toLocaleString()} sold\n </span>\n </div>\n\n <RankBadge rank={item.rank} />\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { TabsDirection, TabsItem, TabsProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: TabsDirection,\n): Exclude<TabsDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction getFirstEnabledId(items: readonly TabsItem[]): string {\n const fallback = items.find((item) => !item.disabled) ?? items[0];\n return fallback?.id ?? \"\";\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onValueChange,\n dir = \"auto\",\n className,\n listClassName,\n triggerClassName,\n panelClassName,\n animationDurationMs = 220,\n}: TabsProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const tabSlotRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const panelRef = useRef<HTMLDivElement>(null);\n const isControlled = value !== undefined;\n\n const fallbackId = useMemo(() => getFirstEnabledId(items), [items]);\n const [internalValue, setInternalValue] = useState<string>(\n defaultValue ?? fallbackId,\n );\n const rawActiveId = isControlled ? value : internalValue;\n const activeId = items.some((item) => item.id === rawActiveId)\n ? rawActiveId\n : fallbackId;\n\n const activeIndex = useMemo(\n () =>\n Math.max(\n items.findIndex((item) => item.id === activeId),\n 0,\n ),\n [items, activeId],\n );\n\n const previousIndexRef = useRef(activeIndex);\n const [indicator, setIndicator] = useState<{\n left: number;\n width: number;\n } | null>(null);\n\n const getEffectiveDirection = useCallback(() => {\n if (dir !== \"auto\") {\n return dir;\n }\n\n if (typeof window !== \"undefined\" && listRef.current) {\n const cssDirection = window.getComputedStyle(listRef.current).direction;\n if (cssDirection === \"rtl\" || cssDirection === \"ltr\") {\n return cssDirection;\n }\n }\n\n return resolveDirection(\"auto\");\n }, [dir]);\n\n useEffect(() => {\n const previousIndex = previousIndexRef.current;\n if (activeIndex === previousIndex) {\n return;\n }\n\n const panel = panelRef.current;\n if (!panel) {\n previousIndexRef.current = activeIndex;\n return;\n }\n\n const indexDelta = activeIndex - previousIndex;\n const logicalDirection = indexDelta >= 0 ? 1 : -1;\n const visualDirection =\n getEffectiveDirection() === \"rtl\" ? -logicalDirection : logicalDirection;\n const fromX = visualDirection > 0 ? -14 : 14;\n\n panel.animate(\n [\n { opacity: 0, transform: `translateX(${fromX}px)` },\n { opacity: 1, transform: \"translateX(0px)\" },\n ],\n {\n duration: animationDurationMs,\n easing: \"cubic-bezier(0.22, 1, 0.36, 1)\",\n },\n );\n\n previousIndexRef.current = activeIndex;\n }, [activeIndex, animationDurationMs, getEffectiveDirection]);\n\n const activeItem = items[activeIndex] ?? items[0];\n\n useLayoutEffect(() => {\n const updateIndicator = () => {\n const selectedSlot = tabSlotRefs.current[activeItem?.id ?? \"\"];\n if (!selectedSlot) {\n setIndicator(null);\n return;\n }\n\n setIndicator({\n left: selectedSlot.offsetLeft,\n width: selectedSlot.offsetWidth,\n });\n };\n\n updateIndicator();\n window.addEventListener(\"resize\", updateIndicator);\n return () => window.removeEventListener(\"resize\", updateIndicator);\n }, [activeItem?.id, items.length]);\n\n const setValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onValueChange?.(nextValue);\n };\n\n const moveBy = (delta: number) => {\n if (items.length === 0) {\n return;\n }\n\n let probe = activeIndex;\n for (let step = 0; step < items.length; step++) {\n probe = (probe + delta + items.length) % items.length;\n const candidate = items[probe];\n if (!candidate?.disabled) {\n setValue(candidate.id);\n return;\n }\n }\n };\n\n return (\n <div\n ref={rootRef}\n dir={dir === \"auto\" ? undefined : dir}\n className={mergeClassNames(\"w-full\", className)}\n >\n <div\n ref={listRef}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={mergeClassNames(\n \"relative flex h-9 w-full items-center gap-0 overflow-hidden rounded-lg border border-ds-border-3 bg-ds-surface-2 p-1\",\n listClassName,\n )}\n >\n {items.length > 0 && indicator ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute bottom-1 top-1 rounded-md border border-ds-border-accent/45 bg-ds-accent shadow-[0_1px_3px_rgba(0,0,0,0.1),0_1px_2px_rgba(0,0,0,0.06)] transition-transform duration-300 ease-out\"\n style={{\n width: `${indicator.width}px`,\n transform: `translateX(${indicator.left}px)`,\n left: 0,\n }}\n />\n ) : null}\n {items.map((item) => {\n const selected = item.id === activeItem?.id;\n return (\n <div\n key={item.id}\n ref={(node) => {\n tabSlotRefs.current[item.id] = node;\n }}\n className=\"relative z-10 h-full min-w-0 flex-1\"\n >\n <Button\n role=\"tab\"\n id={`tab-${item.id}`}\n aria-selected={selected}\n aria-controls={`tabpanel-${item.id}`}\n tabIndex={selected ? 0 : -1}\n disabled={item.disabled}\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"h-full w-full rounded-md px-3 py-1 text-base font-normal leading-[22px] transition-colors duration-200\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60\",\n selected ? \"text-ds-on-accent\" : \"text-ds-2 hover:text-ds-1\",\n item.disabled && \"cursor-not-allowed opacity-55\",\n triggerClassName,\n )}\n onClick={() => {\n if (!item.disabled) {\n setValue(item.id);\n }\n }}\n onKeyDown={(event) => {\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n moveBy(getEffectiveDirection() === \"rtl\" ? -1 : 1);\n }\n\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n moveBy(getEffectiveDirection() === \"rtl\" ? 1 : -1);\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n const first = items.find((candidate) => !candidate.disabled);\n if (first) {\n setValue(first.id);\n }\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n const reversed = [...items].reverse();\n const last = reversed.find(\n (candidate) => !candidate.disabled,\n );\n if (last) {\n setValue(last.id);\n }\n }\n }}\n >\n {item.label}\n </Button>\n </div>\n );\n })}\n </div>\n\n <div\n ref={panelRef}\n role=\"tabpanel\"\n id={`tabpanel-${activeItem?.id ?? \"\"}`}\n aria-labelledby={`tab-${activeItem?.id ?? \"\"}`}\n className={mergeClassNames(\"mt-2 w-full\", panelClassName)}\n >\n {activeItem?.content}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/components/effects/border-beam/BorderBeam.tsx","../src/components/data-display/dashboard-cards/StatCard.tsx","../src/components/data-display/dashboard-cards/ChartCard.tsx","../src/components/data-display/dashboard-cards/TopProductsCard.tsx","../src/components/navigation/tabs/Tabs.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport interface BorderBeamProps {\n className?: string;\n size?: number;\n duration?: number;\n borderWidth?: number;\n anchor?: number;\n colorFrom?: string;\n colorTo?: string;\n delay?: number;\n}\n\nexport function BorderBeam({\n className = \"\",\n size = 200,\n duration = 15,\n anchor = 90,\n borderWidth = 0.5,\n colorFrom = \"var(--ds-color-accent)\",\n colorTo = \"var(--ds-color-accent-hover)\",\n delay = 0,\n}: BorderBeamProps) {\n return (\n <div\n style={\n {\n \"--size\": `${size}px`,\n \"--duration\": `${duration}s`,\n \"--anchor\": `${anchor}`,\n \"--border-width\": `${borderWidth}px`,\n \"--beam-color-from\": colorFrom,\n \"--beam-color-to\": colorTo,\n \"--delay\": `-${delay}s`,\n } as CSSProperties\n }\n className={`border-beam ${className}`}\n />\n );\n}\n","\"use client\";\n\nimport type { FC, ReactNode } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\n// ---------------------------------------------------------------------------\n// Internal: TrendBadge\n// ---------------------------------------------------------------------------\n\ninterface TrendBadgeProps {\n value: string;\n direction: \"up\" | \"down\";\n}\n\nconst TrendBadge: FC<TrendBadgeProps> = ({ value, direction }) => {\n const isUp = direction === \"up\";\n const color = isUp ? \"var(--ds-color-success)\" : \"var(--ds-color-danger)\";\n const bg = isUp ? \"var(--ds-color-success-subtle)\" : \"var(--ds-color-danger-subtle)\";\n\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-sm border px-1 py-0.5 text-[11px] font-semibold leading-none\"\n style={{ color, borderColor: color, backgroundColor: bg }}\n aria-label={`${value} ${isUp ? \"increase\" : \"decrease\"}`}\n >\n {value}\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n {isUp ? (\n <path d=\"M5 8V2M5 2L2 5M5 2L8 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n ) : (\n <path d=\"M5 2V8M5 8L2 5M5 8L8 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n )}\n </svg>\n \n </span>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Internal: MenuButton\n// ---------------------------------------------------------------------------\n\nconst MenuButton: FC<{ onClick?: () => void }> = ({ onClick }) => (\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-3\"\n aria-label=\"More options\"\n onClick={onClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n);\n\n// ---------------------------------------------------------------------------\n// Internal: LegendDot\n// ---------------------------------------------------------------------------\n\nconst LegendDots: FC<{ items: { label: string; color: string }[] }> = ({ items }) => (\n <div className=\"flex items-center gap-3\">\n {items.map((item) => (\n <span key={item.label} className=\"flex items-center gap-1.5 text-xs text-ds-2\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n {item.label}\n </span>\n ))}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport type StatCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface StatCardLegendItem {\n label: string;\n color: string;\n}\n\nexport interface StatCardProps {\n /** Layout size:\n * - \"sm\" → 2-col — metric only, no chart\n * - \"md\" → 4-col — metric + compact chart on the right (default)\n * - \"lg\" → 12-col — metric header + full-width chart below\n */\n size?: StatCardSize;\n title: string;\n badge?: TrendBadgeProps;\n value: ReactNode;\n dateRange: string;\n /** Chart content (any chart component). Ignored when size=\"sm\".\n * For \"md\" position is controlled by chartPosition.\n * For \"lg\" the chart spans full card width below a divider. */\n chart?: ReactNode;\n /** Controls where the chart renders in size=\"md\".\n * - \"side\" (default) — compact chart to the right of the metric.\n * - \"bottom\" — full-width chart below the metric (good for bar/line/area charts). */\n chartPosition?: \"side\" | \"bottom\";\n /** Override the chart container's size/style.\n * \"md\" side: overrides the side-zone div (default: h-[68px] w-[180px] shrink-0 overflow-hidden).\n * \"md\" bottom: overrides the bottom chart div (default: w-full pt-3).\n * \"lg\": overrides the chart wrapper div (default: border-t border-ds-border-2 pt-4 w-full). */\n chartClassName?: string;\n /** Legend items shown in the header. Only visible when size=\"lg\". */\n legend?: StatCardLegendItem[];\n className?: string;\n onMenuClick?: () => void;\n}\n\n// ---------------------------------------------------------------------------\n// StatCard\n// ---------------------------------------------------------------------------\n\nexport const StatCard: FC<StatCardProps> = ({\n size = \"md\",\n title,\n badge,\n value,\n dateRange,\n chart,\n chartPosition = \"side\",\n chartClassName,\n legend,\n className,\n onMenuClick,\n}) => {\n const base = mergeClassNames(\n \"rounded-lg border border-ds-border-3/80 bg-ds-surface-1\",\n className,\n );\n\n // ── sm: 2-col, metric only ───────────────────────────────────────────────\n if (size === \"sm\") {\n return (\n <div className={mergeClassNames(base, \"flex flex-col gap-7 p-5\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-1\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <MenuButton onClick={onMenuClick} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-2xl font-bold tracking-tight text-ds-1 leading-none\">\n {value}\n </p>\n <p className=\"text-[10px] text-ds-3 mt-1\">{dateRange}</p>\n </div>\n </div>\n );\n }\n\n // ── md: 4-col, metric + chart ────────────────────────────────────────────\n if (size === \"md\") {\n const metricBlock = (\n <div className=\"flex flex-col gap-1 min-w-0\">\n <p className=\"text-3xl font-bold tracking-tight text-ds-1 leading-none\">\n {value}\n </p>\n <p className=\"text-[10px] text-ds-3 mt-1\">{dateRange}</p>\n </div>\n );\n\n return (\n <div className={mergeClassNames(base, \"flex flex-col gap-3 p-5\")}>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-1\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <MenuButton onClick={onMenuClick} />\n </div>\n\n {chartPosition === \"bottom\" ? (\n <>\n {metricBlock}\n {chart && (\n <div className={mergeClassNames(\"w-full pt-3\", chartClassName)}>\n {chart}\n </div>\n )}\n </>\n ) : (\n <div className=\"flex items-end justify-between gap-3\">\n {metricBlock}\n {chart && (\n <div className={mergeClassNames(\"h-[46px] w-[155px] shrink-0 overflow-hidden\", chartClassName)}>\n {chart}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n\n // ── lg: 12-col, header + full-width chart ────────────────────────────────\n return (\n <div className={mergeClassNames(base, \"flex flex-col p-5\")}>\n {/* Header row */}\n <div className=\"flex flex-wrap items-start justify-between gap-x-6 gap-y-2 mb-4\">\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold text-ds-1\">{title}</span>\n {badge && <TrendBadge value={badge.value} direction={badge.direction} />}\n </div>\n <p className=\"text-3xl font-bold tracking-tight text-ds-1 leading-none\">\n {value}\n </p>\n <p className=\"text-xs text-ds-3\">{dateRange}</p>\n </div>\n <div className=\"flex items-center gap-4 ms-auto\">\n {legend && legend.length > 0 && <LegendDots items={legend} />}\n <MenuButton onClick={onMenuClick} />\n </div>\n </div>\n\n {/* Chart area */}\n {chart && (\n <div className={mergeClassNames(\"border-t border-ds-border-2 pt-4 w-full\", chartClassName)}>\n {chart}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC, ReactNode } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport interface ChartCardLegendItem {\n label: string;\n color: string;\n}\n\nexport interface ChartCardProps {\n title: string;\n dateRange?: string;\n legend?: ChartCardLegendItem[];\n className?: string;\n onMenuClick?: () => void;\n children: ReactNode;\n}\n\nexport const ChartCard: FC<ChartCardProps> = ({\n title,\n dateRange,\n legend,\n className,\n onMenuClick,\n children,\n}) => {\n return (\n <div\n className={mergeClassNames(\n \"flex flex-col gap-4 rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-5\",\n className,\n )}\n >\n <div className=\"flex flex-wrap items-start justify-between gap-x-6 gap-y-2\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">\n {title}\n </span>\n {dateRange && (\n <span className=\"text-xs text-ds-color-fg-subtle\">{dateRange}</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-4 ms-auto\">\n {legend && legend.length > 0 && (\n <div className=\"flex items-center gap-3\">\n {legend.map((item) => (\n <span\n key={item.label}\n className=\"flex items-center gap-1.5 text-xs text-ds-color-fg-muted\"\n >\n <span\n className=\"inline-block h-2.5 w-2.5 rounded-full shrink-0\"\n style={{ backgroundColor: item.color }}\n aria-hidden=\"true\"\n />\n {item.label}\n </span>\n ))}\n </div>\n )}\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-color-fg-subtle\"\n aria-label=\"More options\"\n onClick={onMenuClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n </div>\n </div>\n\n <div className=\"w-full\">{children}</div>\n </div>\n );\n};\n","\"use client\";\n\nimport type { FC } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { EllipsisVerticalIcon } from \"../../icons/EllipsisVerticalIcon\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport interface TopProductItem {\n id: string | number;\n name: string;\n category: string;\n soldCount: number;\n image?: string;\n rank: number;\n}\n\nexport interface TopProductsCardProps {\n title?: string;\n items: TopProductItem[];\n className?: string;\n onMenuClick?: () => void;\n}\n\nconst RankBadge: FC<{ rank: number }> = ({ rank }) => (\n <span\n className=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border text-xs font-semibold border-ds-border-3/80 \"\n style={{\n borderColor: \"var(--ds-color-accent)\",\n color: \"var(--ds-color-accent)\",\n }}\n aria-label={`Rank ${rank}`}\n >\n {rank}\n </span>\n);\n\nconst ProductImage: FC<{ src?: string; alt: string }> = ({ src, alt }) => {\n if (src) {\n return (\n <img\n src={src}\n alt={alt}\n className=\"h-11 w-11 shrink-0 rounded-md object-contain bg-ds-color-bg-utility p-1\"\n />\n );\n }\n return (\n <div\n className=\"flex h-11 w-11 shrink-0 items-center justify-center rounded-md bg-ds-color-bg-utility text-ds-color-fg-subtle text-lg\"\n aria-hidden=\"true\"\n >\n □\n </div>\n );\n};\n\nexport const TopProductsCard: FC<TopProductsCardProps> = ({\n title = \"Top Products\",\n items,\n className,\n onMenuClick,\n}) => {\n return (\n <div\n className={mergeClassNames(\n \"flex flex-col rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5\",\n className,\n )}\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <span className=\"text-sm font-semibold text-ds-color-fg\">{title}</span>\n <Button\n variant=\"tertiary\"\n size=\"small\"\n className=\"shrink-0 p-0.5! text-ds-color-fg-subtle\"\n aria-label=\"More options\"\n onClick={onMenuClick}\n >\n <EllipsisVerticalIcon width={18} height={18} />\n </Button>\n </div>\n\n <ul className=\"flex flex-col divide-y divide-ds-border-2\" role=\"list\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-center gap-3 py-3 first:pt-0 last:pb-0\"\n >\n <ProductImage src={item.image} alt={item.name} />\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className=\"truncate text-sm font-semibold text-ds-color-fg\">\n {item.name}\n </span>\n <span className=\"truncate text-xs text-ds-color-fg-subtle\">\n {item.category} · {item.soldCount.toLocaleString()} sold\n </span>\n </div>\n\n <RankBadge rank={item.rank} />\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { TabsDirection, TabsItem, TabsProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: TabsDirection,\n): Exclude<TabsDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction getFirstEnabledId(items: readonly TabsItem[]): string {\n const fallback = items.find((item) => !item.disabled) ?? items[0];\n return fallback?.id ?? \"\";\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onValueChange,\n dir = \"auto\",\n className,\n listClassName,\n triggerClassName,\n panelClassName,\n animationDurationMs = 220,\n}: TabsProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const tabSlotRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const panelRef = useRef<HTMLDivElement>(null);\n const isControlled = value !== undefined;\n\n const fallbackId = useMemo(() => getFirstEnabledId(items), [items]);\n const [internalValue, setInternalValue] = useState<string>(\n defaultValue ?? fallbackId,\n );\n const rawActiveId = isControlled ? value : internalValue;\n const activeId = items.some((item) => item.id === rawActiveId)\n ? rawActiveId\n : fallbackId;\n\n const activeIndex = useMemo(\n () =>\n Math.max(\n items.findIndex((item) => item.id === activeId),\n 0,\n ),\n [items, activeId],\n );\n\n const previousIndexRef = useRef(activeIndex);\n const [indicator, setIndicator] = useState<{\n left: number;\n width: number;\n } | null>(null);\n\n const getEffectiveDirection = useCallback(() => {\n if (dir !== \"auto\") {\n return dir;\n }\n\n if (typeof window !== \"undefined\" && listRef.current) {\n const cssDirection = window.getComputedStyle(listRef.current).direction;\n if (cssDirection === \"rtl\" || cssDirection === \"ltr\") {\n return cssDirection;\n }\n }\n\n return resolveDirection(\"auto\");\n }, [dir]);\n\n useEffect(() => {\n const previousIndex = previousIndexRef.current;\n if (activeIndex === previousIndex) {\n return;\n }\n\n const panel = panelRef.current;\n if (!panel) {\n previousIndexRef.current = activeIndex;\n return;\n }\n\n const indexDelta = activeIndex - previousIndex;\n const logicalDirection = indexDelta >= 0 ? 1 : -1;\n const visualDirection =\n getEffectiveDirection() === \"rtl\" ? -logicalDirection : logicalDirection;\n const fromX = visualDirection > 0 ? -14 : 14;\n\n panel.animate(\n [\n { opacity: 0, transform: `translateX(${fromX}px)` },\n { opacity: 1, transform: \"translateX(0px)\" },\n ],\n {\n duration: animationDurationMs,\n easing: \"cubic-bezier(0.22, 1, 0.36, 1)\",\n },\n );\n\n previousIndexRef.current = activeIndex;\n }, [activeIndex, animationDurationMs, getEffectiveDirection]);\n\n const activeItem = items[activeIndex] ?? items[0];\n\n useLayoutEffect(() => {\n const updateIndicator = () => {\n const selectedSlot = tabSlotRefs.current[activeItem?.id ?? \"\"];\n if (!selectedSlot) {\n setIndicator(null);\n return;\n }\n\n setIndicator({\n left: selectedSlot.offsetLeft,\n width: selectedSlot.offsetWidth,\n });\n };\n\n updateIndicator();\n window.addEventListener(\"resize\", updateIndicator);\n return () => window.removeEventListener(\"resize\", updateIndicator);\n }, [activeItem?.id, items.length]);\n\n const setValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onValueChange?.(nextValue);\n };\n\n const moveBy = (delta: number) => {\n if (items.length === 0) {\n return;\n }\n\n let probe = activeIndex;\n for (let step = 0; step < items.length; step++) {\n probe = (probe + delta + items.length) % items.length;\n const candidate = items[probe];\n if (!candidate?.disabled) {\n setValue(candidate.id);\n return;\n }\n }\n };\n\n return (\n <div\n ref={rootRef}\n dir={dir === \"auto\" ? undefined : dir}\n className={mergeClassNames(\"w-full\", className)}\n >\n <div\n ref={listRef}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={mergeClassNames(\n \"relative flex h-9 w-full items-center gap-0 overflow-hidden rounded-lg border border-ds-border-3 bg-ds-surface-2 p-1\",\n listClassName,\n )}\n >\n {items.length > 0 && indicator ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute bottom-1 top-1 rounded-md border border-ds-border-accent/45 bg-ds-accent shadow-[0_1px_3px_rgba(0,0,0,0.1),0_1px_2px_rgba(0,0,0,0.06)] transition-transform duration-300 ease-out\"\n style={{\n width: `${indicator.width}px`,\n transform: `translateX(${indicator.left}px)`,\n left: 0,\n }}\n />\n ) : null}\n {items.map((item) => {\n const selected = item.id === activeItem?.id;\n return (\n <div\n key={item.id}\n ref={(node) => {\n tabSlotRefs.current[item.id] = node;\n }}\n className=\"relative z-10 h-full min-w-0 flex-1\"\n >\n <Button\n role=\"tab\"\n id={`tab-${item.id}`}\n aria-selected={selected}\n aria-controls={`tabpanel-${item.id}`}\n tabIndex={selected ? 0 : -1}\n disabled={item.disabled}\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"h-full w-full rounded-md px-3 py-1 text-base font-normal leading-[22px] transition-colors duration-200\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60\",\n selected ? \"text-ds-on-accent\" : \"text-ds-2 hover:text-ds-1\",\n item.disabled && \"cursor-not-allowed opacity-55\",\n triggerClassName,\n )}\n onClick={() => {\n if (!item.disabled) {\n setValue(item.id);\n }\n }}\n onKeyDown={(event) => {\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n moveBy(getEffectiveDirection() === \"rtl\" ? -1 : 1);\n }\n\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n moveBy(getEffectiveDirection() === \"rtl\" ? 1 : -1);\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n const first = items.find((candidate) => !candidate.disabled);\n if (first) {\n setValue(first.id);\n }\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n const reversed = [...items].reverse();\n const last = reversed.find(\n (candidate) => !candidate.disabled,\n );\n if (last) {\n setValue(last.id);\n }\n }\n }}\n >\n {item.label}\n </Button>\n </div>\n );\n })}\n </div>\n\n <div\n ref={panelRef}\n role=\"tabpanel\"\n id={`tabpanel-${activeItem?.id ?? \"\"}`}\n aria-labelledby={`tab-${activeItem?.id ?? \"\"}`}\n className={mergeClassNames(\"mt-2 w-full\", panelClassName)}\n >\n {activeItem?.content}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,8 +30,8 @@ export { ProgressBar } from './components/data-display/progress-bar';
|
|
|
30
30
|
export { CircularProgress } from './components/data-display/progress-bar';
|
|
31
31
|
export type { ProgressBarProps, ProgressBarSize, ProgressBarTone, CircularProgressProps, CircularProgressTone, } from './components/data-display/progress-bar';
|
|
32
32
|
export { ChromaGrid } from './components/effects/chroma-grid';
|
|
33
|
-
export { ColorPalette } from './components/data-display/color-palette';
|
|
34
|
-
export type { ColorPaletteProps,
|
|
33
|
+
export { ColorPalette, surfaceGroup, textGroup, borderGroup, accentGroup, accentScaleGroup, brandGroup, statusGroup, defaultGroups } from './components/data-display/color-palette';
|
|
34
|
+
export type { ColorPaletteProps, TokenGroup, TokenSwatch, } from './components/data-display/color-palette';
|
|
35
35
|
export { Combobox } from './components/forms/combobox';
|
|
36
36
|
export type { ComboboxOption, ComboboxProps, } from './components/forms/combobox';
|
|
37
37
|
export { DataTable } from './components/data-display/data-table';
|
|
@@ -73,7 +73,7 @@ export { StepperSteps, StepperStepsNavigation, StepperWizard, StepperWizardStep,
|
|
|
73
73
|
export type { StepperStepsItem, StepperStepsProps, StepperStepsState, StepperWizardIndicatorRenderProps, StepperWizardIndicatorStatus, StepperWizardProps, StepperWizardStepProps, } from './components/navigation/stepper';
|
|
74
74
|
export { SunToMoonButton } from './components/effects/sun-to-moon-button';
|
|
75
75
|
export { ThemeSwitcherButtons } from './components/effects/sun-to-moon-button';
|
|
76
|
-
export type { SunToMoonButtonProps, ThemeSwitcherButtonsProps, } from './components/effects/sun-to-moon-button';
|
|
76
|
+
export type { SunToMoonButtonProps, ThemeSwitcherButtonsProps, ThemeSwitcherLabels, } from './components/effects/sun-to-moon-button';
|
|
77
77
|
export { Switch } from './components/forms/switch';
|
|
78
78
|
export { Textarea } from './components/forms/textarea';
|
|
79
79
|
export { ToastProvider, ToastItem, useToast, } from './components/overlays/toast';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { n as useThemeContext, t as ThemeProvider } from "./chunks/theme-koPrLKQv.mjs";
|
|
2
2
|
import { n as mergeClassNames, r as generateUniqueKey, t as validateEmail } from "./chunks/utils-7S0u48mU.mjs";
|
|
3
|
-
import { a as ThinBreakdownBar, c as NeonLineChart, d as getChartPalette, i as AreaChart, l as chartColorTokens, n as PositiveNegativeBarChart, o as StackedBarChart, r as BarChart, s as MiniNeonSparkline, t as PieChart, u as getChartColorVar } from "./chunks/charts-
|
|
3
|
+
import { a as ThinBreakdownBar, c as NeonLineChart, d as getChartPalette, i as AreaChart, l as chartColorTokens, n as PositiveNegativeBarChart, o as StackedBarChart, r as BarChart, s as MiniNeonSparkline, t as PieChart, u as getChartColorVar } from "./chunks/charts-DkVu0rFc.mjs";
|
|
4
4
|
import { t as TruncatedText } from "./chunks/truncated-text-C9t9o9IA.mjs";
|
|
5
5
|
import { A as ChevronUpIcon, B as BriefcaseBusinessIcon, C as EyeOffIcon, D as ArrowUpDownIcon, E as EllipsisIcon, F as ArrowLeftIcon, G as ShoppingCartIcon, H as SearchIcon, I as ArrowUpIcon, J as CheckIcon, K as HomeIcon, L as ArrowDownIcon, M as ChevronLeftIcon, N as ChevronDownIcon, O as ChevronsRightIcon, P as ArrowRightIcon, R as TrashIcon, S as BellIcon, T as EllipsisVerticalIcon, U as PackageIcon, V as UserIcon, W as SettingsIcon, _ as AlertTriangleIcon, a as RefreshIcon, b as DragIcon, c as MailIcon, d as FilterXIcon, f as FilterProfileIcon, g as AudioWaveIcon, h as CheckCircleIcon, i as RingLoaderIcon, j as ChevronRightIcon, k as ChevronsLeftIcon, l as LoaderIcon, m as ColumnsIcon, n as XCircleIcon, o as QuestionCircleIcon, p as FilterIcon, q as CloseIcon, r as SelectionIcon, s as PlayIcon, t as ZapIcon, u as InfoCircleIcon, v as AlertCircleIcon, w as EyeIcon, x as FullScreenIcon, y as CircleIcon, z as ActivityIcon } from "./chunks/icons-bx3nrxNv.mjs";
|
|
6
6
|
import { t as Accordion } from "./chunks/accordion-6zxJUYXr.mjs";
|
|
7
7
|
import { t as Alert } from "./chunks/alert-XVmYJgds.mjs";
|
|
8
8
|
import { t as AnimatedContent } from "./chunks/animated-content-bK6xp-vc.mjs";
|
|
9
9
|
import { n as BackgroundGradientAnimation } from "./chunks/background-gradient-animation-BR9wx6Z8.mjs";
|
|
10
|
-
import { t as Button } from "./chunks/button-
|
|
10
|
+
import { t as Button } from "./chunks/button-A6UTvrOu.mjs";
|
|
11
11
|
import { t as HoverBorderGradient } from "./chunks/HoverBorderGradient-NbdXeLgC.mjs";
|
|
12
12
|
import { t as ButtonHoverBorderGradient } from "./chunks/button-hover-border-gradient-DnFvjNNw.mjs";
|
|
13
|
-
import { t as DropdownMenu } from "./chunks/DropdownMenu-
|
|
14
|
-
import { t as Select } from "./chunks/select-
|
|
15
|
-
import { t as Calendar } from "./chunks/calendar-
|
|
13
|
+
import { t as DropdownMenu } from "./chunks/DropdownMenu-BtTOri-A.mjs";
|
|
14
|
+
import { t as Select } from "./chunks/select-CUaSNR09.mjs";
|
|
15
|
+
import { t as Calendar } from "./chunks/calendar-5XzPqKbE.mjs";
|
|
16
16
|
import { t as Card } from "./chunks/card-BId1_zHw.mjs";
|
|
17
17
|
import { t as Carousel } from "./chunks/carousel-Dd4rp-jr.mjs";
|
|
18
|
-
import { a as HamburgerIcon, i as NavLink, n as Sidebar, r as SidebarLinks, t as DashboardSidebarShell } from "./chunks/sidebar-
|
|
18
|
+
import { a as HamburgerIcon, i as NavLink, n as Sidebar, r as SidebarLinks, t as DashboardSidebarShell } from "./chunks/sidebar-DYEDFV2u.mjs";
|
|
19
19
|
import { t as Typography } from "./chunks/typography-Ct-jDJP3.mjs";
|
|
20
20
|
import { t as ASCIIText } from "./chunks/ascii-text-Bdy4C5rU.mjs";
|
|
21
21
|
import { t as ChromaGrid } from "./chunks/chroma-grid-opB2DBtS.mjs";
|
|
@@ -24,34 +24,34 @@ import "./hover-border-gradient.mjs";
|
|
|
24
24
|
import { t as SplashCursor } from "./chunks/splash-cursor-N4FdnkOa.mjs";
|
|
25
25
|
import { t as SpotlightCard } from "./chunks/spotlight-card-D9Z3nTmb.mjs";
|
|
26
26
|
import { t as SunToMoonButton } from "./chunks/SunToMoonButton-BkEfkElJ.mjs";
|
|
27
|
-
import { t as ThemeSwitcherButtons } from "./chunks/sun-to-moon-button-
|
|
27
|
+
import { t as ThemeSwitcherButtons } from "./chunks/sun-to-moon-button-BJtBEaa3.mjs";
|
|
28
28
|
import { t as Checkbox } from "./chunks/checkbox-3aB7XC9_.mjs";
|
|
29
|
-
import { n as StatusDotChip, r as Chip, t as SplitChip } from "./chunks/chip-
|
|
29
|
+
import { n as StatusDotChip, r as Chip, t as SplitChip } from "./chunks/chip-CqcdcSs2.mjs";
|
|
30
30
|
import { n as ProgressBar, t as CircularProgress } from "./chunks/progress-bar-DQ5ZKk2Y.mjs";
|
|
31
|
-
import { t as ColorPalette } from "./chunks/color-palette-
|
|
32
|
-
import { t as Combobox } from "./chunks/combobox-
|
|
33
|
-
import { n as InputState, t as Input } from "./chunks/input-
|
|
34
|
-
import {
|
|
35
|
-
import { t as
|
|
36
|
-
import { t as MultiSelectCombobox } from "./chunks/multi-select-combobox-
|
|
37
|
-
import { t as Switch } from "./chunks/switch-
|
|
38
|
-
import { t as DatePicker } from "./chunks/date-picker-
|
|
31
|
+
import { a as brandGroup, c as surfaceGroup, i as borderGroup, l as textGroup, n as accentGroup, o as defaultGroups, r as accentScaleGroup, s as statusGroup, t as ColorPalette } from "./chunks/color-palette-C3lesasJ.mjs";
|
|
32
|
+
import { t as Combobox } from "./chunks/combobox-B6yk5U82.mjs";
|
|
33
|
+
import { n as InputState, t as Input } from "./chunks/input-Bqo9Q5zF.mjs";
|
|
34
|
+
import { t as Tooltip } from "./chunks/Tooltip-DK3B879v.mjs";
|
|
35
|
+
import { a as FilterButton, c as TableBody, d as TableContainer, f as TableFooter, h as TableRow, i as ColumnToggle, l as TableCaption, m as TableHeader, n as FilterProfile, o as FilterDropdown, p as TableHead, s as Table, t as DataTable, u as TableCell } from "./chunks/data-table-Dtf6lKpp.mjs";
|
|
36
|
+
import { t as MultiSelectCombobox } from "./chunks/multi-select-combobox-Do23ZfOQ.mjs";
|
|
37
|
+
import { t as Switch } from "./chunks/switch-iPsN1NS2.mjs";
|
|
38
|
+
import { t as DatePicker } from "./chunks/date-picker-BmQ0rgwH.mjs";
|
|
39
39
|
import { t as Dialog } from "./chunks/dialog-CanVyiAD.mjs";
|
|
40
40
|
import { t as Drawer } from "./chunks/drawer-DaoAXL-w.mjs";
|
|
41
|
-
import { i as FormField, n as FormActions, o as FormSection, s as InputGroup, t as Form } from "./chunks/form-
|
|
41
|
+
import { i as FormField, n as FormActions, o as FormSection, s as InputGroup, t as Form } from "./chunks/form-CtZ6U-_B.mjs";
|
|
42
42
|
import { t as HoverCard } from "./chunks/hover-card-C88rU-nW.mjs";
|
|
43
|
-
import { t as Label } from "./chunks/label-
|
|
43
|
+
import { t as Label } from "./chunks/label-Drxg0cG2.mjs";
|
|
44
44
|
import { a as Pulse, c as Spinner, i as Loading, l as Wave, n as Bounce, o as Ring, r as Dots, s as Skeleton, t as Bars } from "./chunks/loading-Dtosnb4A.mjs";
|
|
45
45
|
import { t as OTPInput } from "./chunks/otp-input-JOysxKfD.mjs";
|
|
46
|
-
import { t as PasswordStrengthMeter } from "./chunks/password-strength-meter-
|
|
47
|
-
import { t as Radio } from "./chunks/radio-
|
|
46
|
+
import { t as PasswordStrengthMeter } from "./chunks/password-strength-meter-BsvqQBAg.mjs";
|
|
47
|
+
import { t as Radio } from "./chunks/radio-CuiM_gDv.mjs";
|
|
48
48
|
import { a as SkeletonImage, c as SkeletonTableRow, i as SkeletonCard, l as SkeletonText, n as SkeletonAvatar, o as SkeletonListItem, r as SkeletonButton, s as SkeletonMetricCard, t as Skeleton$1 } from "./chunks/skeleton-nH1eAN96.mjs";
|
|
49
|
-
import { i as Stepper, n as StepperWizardStep, r as StepperSteps, t as StepperWizard } from "./chunks/stepper-
|
|
49
|
+
import { i as Stepper, n as StepperWizardStep, r as StepperSteps, t as StepperWizard } from "./chunks/stepper-Jv5OS1nY.mjs";
|
|
50
50
|
import { t as Textarea } from "./chunks/textarea-Bdo-Trvi.mjs";
|
|
51
51
|
import { a as useToast, n as ToastProvider, t as ToastItem } from "./chunks/toast-BcBidy5n.mjs";
|
|
52
52
|
import { t as Audio } from "./chunks/spinners-g6_Up5Rb.mjs";
|
|
53
53
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
54
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
54
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
55
55
|
//#region src/components/effects/border-beam/BorderBeam.tsx
|
|
56
56
|
function BorderBeam({ className = "", size = 200, duration = 15, anchor = 90, borderWidth = .5, colorFrom = "var(--ds-color-accent)", colorTo = "var(--ds-color-accent-hover)", delay = 0 }) {
|
|
57
57
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -71,13 +71,13 @@ function BorderBeam({ className = "", size = 200, duration = 15, anchor = 90, bo
|
|
|
71
71
|
//#region src/components/data-display/dashboard-cards/StatCard.tsx
|
|
72
72
|
var TrendBadge = ({ value, direction }) => {
|
|
73
73
|
const isUp = direction === "up";
|
|
74
|
-
const color = isUp ? "
|
|
74
|
+
const color = isUp ? "var(--ds-color-success)" : "var(--ds-color-danger)";
|
|
75
75
|
return /* @__PURE__ */ jsxs("span", {
|
|
76
|
-
className: "inline-flex items-center gap-1 rounded-
|
|
76
|
+
className: "inline-flex items-center gap-1 rounded-sm border px-1 py-0.5 text-[11px] font-semibold leading-none",
|
|
77
77
|
style: {
|
|
78
78
|
color,
|
|
79
79
|
borderColor: color,
|
|
80
|
-
backgroundColor: isUp ? "
|
|
80
|
+
backgroundColor: isUp ? "var(--ds-color-success-subtle)" : "var(--ds-color-danger-subtle)"
|
|
81
81
|
},
|
|
82
82
|
"aria-label": `${value} ${isUp ? "increase" : "decrease"}`,
|
|
83
83
|
children: [value, /* @__PURE__ */ jsx("svg", {
|
|
@@ -105,7 +105,7 @@ var TrendBadge = ({ value, direction }) => {
|
|
|
105
105
|
var MenuButton = ({ onClick }) => /* @__PURE__ */ jsx(Button, {
|
|
106
106
|
variant: "tertiary",
|
|
107
107
|
size: "small",
|
|
108
|
-
className: "shrink-0 p-0.5! text-ds-
|
|
108
|
+
className: "shrink-0 p-0.5! text-ds-3",
|
|
109
109
|
"aria-label": "More options",
|
|
110
110
|
onClick,
|
|
111
111
|
children: /* @__PURE__ */ jsx(EllipsisVerticalIcon, {
|
|
@@ -116,7 +116,7 @@ var MenuButton = ({ onClick }) => /* @__PURE__ */ jsx(Button, {
|
|
|
116
116
|
var LegendDots = ({ items }) => /* @__PURE__ */ jsx("div", {
|
|
117
117
|
className: "flex items-center gap-3",
|
|
118
118
|
children: items.map((item) => /* @__PURE__ */ jsxs("span", {
|
|
119
|
-
className: "flex items-center gap-1.5 text-xs text-ds-
|
|
119
|
+
className: "flex items-center gap-1.5 text-xs text-ds-2",
|
|
120
120
|
children: [/* @__PURE__ */ jsx("span", {
|
|
121
121
|
className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
|
|
122
122
|
style: { backgroundColor: item.color },
|
|
@@ -124,16 +124,16 @@ var LegendDots = ({ items }) => /* @__PURE__ */ jsx("div", {
|
|
|
124
124
|
}), item.label]
|
|
125
125
|
}, item.label))
|
|
126
126
|
});
|
|
127
|
-
var StatCard = ({ size = "md", title, badge, value, dateRange, chart, legend, className, onMenuClick }) => {
|
|
128
|
-
const base = mergeClassNames("rounded-
|
|
127
|
+
var StatCard = ({ size = "md", title, badge, value, dateRange, chart, chartPosition = "side", chartClassName, legend, className, onMenuClick }) => {
|
|
128
|
+
const base = mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className);
|
|
129
129
|
if (size === "sm") return /* @__PURE__ */ jsxs("div", {
|
|
130
|
-
className: mergeClassNames(base, "flex flex-col gap-
|
|
130
|
+
className: mergeClassNames(base, "flex flex-col gap-7 p-5"),
|
|
131
131
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
132
132
|
className: "flex items-start justify-between gap-2",
|
|
133
133
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
134
134
|
className: "flex flex-wrap items-center gap-2",
|
|
135
135
|
children: [/* @__PURE__ */ jsx("span", {
|
|
136
|
-
className: "text-sm font-semibold text-ds-
|
|
136
|
+
className: "text-sm font-semibold text-ds-1",
|
|
137
137
|
children: title
|
|
138
138
|
}), badge && /* @__PURE__ */ jsx(TrendBadge, {
|
|
139
139
|
value: badge.value,
|
|
@@ -143,45 +143,51 @@ var StatCard = ({ size = "md", title, badge, value, dateRange, chart, legend, cl
|
|
|
143
143
|
}), /* @__PURE__ */ jsxs("div", {
|
|
144
144
|
className: "flex flex-col gap-1",
|
|
145
145
|
children: [/* @__PURE__ */ jsx("p", {
|
|
146
|
-
className: "text-
|
|
146
|
+
className: "text-2xl font-bold tracking-tight text-ds-1 leading-none",
|
|
147
147
|
children: value
|
|
148
148
|
}), /* @__PURE__ */ jsx("p", {
|
|
149
|
-
className: "text-
|
|
149
|
+
className: "text-[10px] text-ds-3 mt-1",
|
|
150
150
|
children: dateRange
|
|
151
151
|
})]
|
|
152
152
|
})]
|
|
153
153
|
});
|
|
154
|
-
if (size === "md")
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}), /* @__PURE__ */ jsx(MenuButton, { onClick: onMenuClick })]
|
|
168
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
169
|
-
className: "flex items-end justify-between gap-3",
|
|
154
|
+
if (size === "md") {
|
|
155
|
+
const metricBlock = /* @__PURE__ */ jsxs("div", {
|
|
156
|
+
className: "flex flex-col gap-1 min-w-0",
|
|
157
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
158
|
+
className: "text-3xl font-bold tracking-tight text-ds-1 leading-none",
|
|
159
|
+
children: value
|
|
160
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
161
|
+
className: "text-[10px] text-ds-3 mt-1",
|
|
162
|
+
children: dateRange
|
|
163
|
+
})]
|
|
164
|
+
});
|
|
165
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
166
|
+
className: mergeClassNames(base, "flex flex-col gap-3 p-5"),
|
|
170
167
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
171
|
-
className: "flex
|
|
172
|
-
children: [/* @__PURE__ */
|
|
173
|
-
className: "
|
|
174
|
-
children:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
168
|
+
className: "flex items-start justify-between gap-2",
|
|
169
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
170
|
+
className: "flex flex-wrap items-center gap-2",
|
|
171
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
172
|
+
className: "text-sm font-semibold text-ds-1",
|
|
173
|
+
children: title
|
|
174
|
+
}), badge && /* @__PURE__ */ jsx(TrendBadge, {
|
|
175
|
+
value: badge.value,
|
|
176
|
+
direction: badge.direction
|
|
177
|
+
})]
|
|
178
|
+
}), /* @__PURE__ */ jsx(MenuButton, { onClick: onMenuClick })]
|
|
179
|
+
}), chartPosition === "bottom" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [metricBlock, chart && /* @__PURE__ */ jsx("div", {
|
|
180
|
+
className: mergeClassNames("w-full pt-3", chartClassName),
|
|
181
181
|
children: chart
|
|
182
|
+
})] }) : /* @__PURE__ */ jsxs("div", {
|
|
183
|
+
className: "flex items-end justify-between gap-3",
|
|
184
|
+
children: [metricBlock, chart && /* @__PURE__ */ jsx("div", {
|
|
185
|
+
className: mergeClassNames("h-[46px] w-[155px] shrink-0 overflow-hidden", chartClassName),
|
|
186
|
+
children: chart
|
|
187
|
+
})]
|
|
182
188
|
})]
|
|
183
|
-
})
|
|
184
|
-
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
185
191
|
return /* @__PURE__ */ jsxs("div", {
|
|
186
192
|
className: mergeClassNames(base, "flex flex-col p-5"),
|
|
187
193
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -192,7 +198,7 @@ var StatCard = ({ size = "md", title, badge, value, dateRange, chart, legend, cl
|
|
|
192
198
|
/* @__PURE__ */ jsxs("div", {
|
|
193
199
|
className: "flex flex-wrap items-center gap-2",
|
|
194
200
|
children: [/* @__PURE__ */ jsx("span", {
|
|
195
|
-
className: "text-sm font-semibold text-ds-
|
|
201
|
+
className: "text-sm font-semibold text-ds-1",
|
|
196
202
|
children: title
|
|
197
203
|
}), badge && /* @__PURE__ */ jsx(TrendBadge, {
|
|
198
204
|
value: badge.value,
|
|
@@ -200,11 +206,11 @@ var StatCard = ({ size = "md", title, badge, value, dateRange, chart, legend, cl
|
|
|
200
206
|
})]
|
|
201
207
|
}),
|
|
202
208
|
/* @__PURE__ */ jsx("p", {
|
|
203
|
-
className: "text-3xl font-
|
|
209
|
+
className: "text-3xl font-bold tracking-tight text-ds-1 leading-none",
|
|
204
210
|
children: value
|
|
205
211
|
}),
|
|
206
212
|
/* @__PURE__ */ jsx("p", {
|
|
207
|
-
className: "text-xs text-ds-
|
|
213
|
+
className: "text-xs text-ds-3",
|
|
208
214
|
children: dateRange
|
|
209
215
|
})
|
|
210
216
|
]
|
|
@@ -213,7 +219,7 @@ var StatCard = ({ size = "md", title, badge, value, dateRange, chart, legend, cl
|
|
|
213
219
|
children: [legend && legend.length > 0 && /* @__PURE__ */ jsx(LegendDots, { items: legend }), /* @__PURE__ */ jsx(MenuButton, { onClick: onMenuClick })]
|
|
214
220
|
})]
|
|
215
221
|
}), chart && /* @__PURE__ */ jsx("div", {
|
|
216
|
-
className: "border-t border-ds-border-2 pt-4 w-full",
|
|
222
|
+
className: mergeClassNames("border-t border-ds-border-2 pt-4 w-full", chartClassName),
|
|
217
223
|
children: chart
|
|
218
224
|
})]
|
|
219
225
|
});
|
|
@@ -267,7 +273,7 @@ var ChartCard = ({ title, dateRange, legend, className, onMenuClick, children })
|
|
|
267
273
|
//#endregion
|
|
268
274
|
//#region src/components/data-display/dashboard-cards/TopProductsCard.tsx
|
|
269
275
|
var RankBadge = ({ rank }) => /* @__PURE__ */ jsx("span", {
|
|
270
|
-
className: "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border text-xs font-semibold",
|
|
276
|
+
className: "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border text-xs font-semibold border-ds-border-3/80 ",
|
|
271
277
|
style: {
|
|
272
278
|
borderColor: "var(--ds-color-accent)",
|
|
273
279
|
color: "var(--ds-color-accent)"
|
|
@@ -289,7 +295,7 @@ var ProductImage = ({ src, alt }) => {
|
|
|
289
295
|
};
|
|
290
296
|
var TopProductsCard = ({ title = "Top Products", items, className, onMenuClick }) => {
|
|
291
297
|
return /* @__PURE__ */ jsxs("div", {
|
|
292
|
-
className: mergeClassNames("flex flex-col rounded-
|
|
298
|
+
className: mergeClassNames("flex flex-col rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5", className),
|
|
293
299
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
294
300
|
className: "mb-4 flex items-center justify-between",
|
|
295
301
|
children: [/* @__PURE__ */ jsx("span", {
|
|
@@ -503,6 +509,6 @@ function Tabs({ items, value, defaultValue, onValueChange, dir = "auto", classNa
|
|
|
503
509
|
});
|
|
504
510
|
}
|
|
505
511
|
//#endregion
|
|
506
|
-
export { ASCIIText, Accordion, ActivityIcon, Alert, AlertCircleIcon, AlertTriangleIcon, AnimatedContent, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpDownIcon, ArrowUpIcon, Audio, AudioWaveIcon, BackgroundGradientAnimation, BarChart, Bars, BellIcon, BorderBeam, Bounce, BriefcaseBusinessIcon, Button, ButtonHoverBorderGradient, Calendar, Card, Carousel, ChartCard, CheckCircleIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, Chip, ChromaGrid, CircleIcon, CircularProgress, CloseIcon, ColorPalette, ColumnToggle, ColumnsIcon, Combobox, DashboardSidebarShell, DataTable, DatePicker, Dialog, Dots, DragIcon, Drawer, DropdownMenu, EllipsisIcon, EllipsisVerticalIcon, EyeIcon, EyeOffIcon, FilterButton, FilterDropdown, FilterIcon, FilterProfile, FilterProfileIcon, FilterXIcon, Form, FormActions, FormField, FormSection, FullScreenIcon, GradualBlur, HamburgerIcon, HomeIcon, HoverBorderGradient, HoverCard, InfoCircleIcon, Input, InputGroup, InputState, Label, LoaderIcon, Loading, MailIcon, MiniNeonSparkline, MultiSelectCombobox, NavLink, NeonLineChart, OTPInput, PackageIcon, PasswordStrengthMeter, PieChart, PlayIcon, PositiveNegativeBarChart, ProgressBar, Pulse, QuestionCircleIcon, Radio, RefreshIcon, Ring, RingLoaderIcon, SearchIcon, Select, SelectionIcon, SettingsIcon, ShoppingCartIcon, Sidebar, SidebarLinks, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, Skeleton$1 as SkeletonComponent, SkeletonImage, SkeletonListItem, SkeletonMetricCard, SkeletonTableRow, SkeletonText, Spinner, SplashCursor, SplitChip, SpotlightCard, StackedBarChart, StatCard, StatusDotChip, Stepper, StepperSteps, StepperSteps as StepperStepsNavigation, StepperWizard, StepperWizardStep, SunToMoonButton, Switch, Table, TableBody, TableCaption, TableCell, TableContainer, TableFooter, TableHead, TableHeader, TableRow, Tabs, Textarea, ThemeProvider, ThemeSwitcherButtons, ThinBreakdownBar, ToastItem, ToastProvider, Tooltip, TopProductsCard, TrashIcon, TruncatedText, Typography, UserIcon, Wave, XCircleIcon, ZapIcon, chartColorTokens, generateUniqueKey, getChartColorVar, getChartPalette, mergeClassNames, useThemeContext, useToast, validateEmail };
|
|
512
|
+
export { ASCIIText, Accordion, ActivityIcon, Alert, AlertCircleIcon, AlertTriangleIcon, AnimatedContent, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpDownIcon, ArrowUpIcon, Audio, AudioWaveIcon, BackgroundGradientAnimation, BarChart, Bars, BellIcon, BorderBeam, Bounce, BriefcaseBusinessIcon, Button, ButtonHoverBorderGradient, Calendar, Card, Carousel, ChartCard, CheckCircleIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, Chip, ChromaGrid, CircleIcon, CircularProgress, CloseIcon, ColorPalette, ColumnToggle, ColumnsIcon, Combobox, DashboardSidebarShell, DataTable, DatePicker, Dialog, Dots, DragIcon, Drawer, DropdownMenu, EllipsisIcon, EllipsisVerticalIcon, EyeIcon, EyeOffIcon, FilterButton, FilterDropdown, FilterIcon, FilterProfile, FilterProfileIcon, FilterXIcon, Form, FormActions, FormField, FormSection, FullScreenIcon, GradualBlur, HamburgerIcon, HomeIcon, HoverBorderGradient, HoverCard, InfoCircleIcon, Input, InputGroup, InputState, Label, LoaderIcon, Loading, MailIcon, MiniNeonSparkline, MultiSelectCombobox, NavLink, NeonLineChart, OTPInput, PackageIcon, PasswordStrengthMeter, PieChart, PlayIcon, PositiveNegativeBarChart, ProgressBar, Pulse, QuestionCircleIcon, Radio, RefreshIcon, Ring, RingLoaderIcon, SearchIcon, Select, SelectionIcon, SettingsIcon, ShoppingCartIcon, Sidebar, SidebarLinks, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, Skeleton$1 as SkeletonComponent, SkeletonImage, SkeletonListItem, SkeletonMetricCard, SkeletonTableRow, SkeletonText, Spinner, SplashCursor, SplitChip, SpotlightCard, StackedBarChart, StatCard, StatusDotChip, Stepper, StepperSteps, StepperSteps as StepperStepsNavigation, StepperWizard, StepperWizardStep, SunToMoonButton, Switch, Table, TableBody, TableCaption, TableCell, TableContainer, TableFooter, TableHead, TableHeader, TableRow, Tabs, Textarea, ThemeProvider, ThemeSwitcherButtons, ThinBreakdownBar, ToastItem, ToastProvider, Tooltip, TopProductsCard, TrashIcon, TruncatedText, Typography, UserIcon, Wave, XCircleIcon, ZapIcon, accentGroup, accentScaleGroup, borderGroup, brandGroup, chartColorTokens, defaultGroups, generateUniqueKey, getChartColorVar, getChartPalette, mergeClassNames, statusGroup, surfaceGroup, textGroup, useThemeContext, useToast, validateEmail };
|
|
507
513
|
|
|
508
514
|
//# sourceMappingURL=index.mjs.map
|