@etus/ui 0.4.0-beta.10 → 0.4.0-beta.12
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/{chunk-7B577M5O.js → chunk-2YSZPUQZ.js} +3 -3
- package/dist/{chunk-7B577M5O.js.map → chunk-2YSZPUQZ.js.map} +1 -1
- package/dist/{chunk-IHW6IJE5.js → chunk-3NLWCX2F.js} +3 -3
- package/dist/{chunk-IHW6IJE5.js.map → chunk-3NLWCX2F.js.map} +1 -1
- package/dist/{chunk-WOOBWQHY.js → chunk-3NSIUZGP.js} +3 -3
- package/dist/{chunk-WOOBWQHY.js.map → chunk-3NSIUZGP.js.map} +1 -1
- package/dist/{chunk-Y6ZXHHUS.js → chunk-3W7FXRO5.js} +3 -3
- package/dist/{chunk-Y6ZXHHUS.js.map → chunk-3W7FXRO5.js.map} +1 -1
- package/dist/{chunk-2TAFX4RZ.js → chunk-7GCTZEMK.js} +3 -3
- package/dist/{chunk-2TAFX4RZ.js.map → chunk-7GCTZEMK.js.map} +1 -1
- package/dist/{chunk-6TBA37U7.js → chunk-7TF5PVEU.js} +6 -6
- package/dist/chunk-7TF5PVEU.js.map +1 -0
- package/dist/{chunk-HANDVWJA.js → chunk-BS5XDYOE.js} +3 -3
- package/dist/{chunk-HANDVWJA.js.map → chunk-BS5XDYOE.js.map} +1 -1
- package/dist/{chunk-DQ43X75Q.js → chunk-EYSTEGV5.js} +4 -4
- package/dist/{chunk-DQ43X75Q.js.map → chunk-EYSTEGV5.js.map} +1 -1
- package/dist/{chunk-7SPMPMXE.js → chunk-GGUWEAYD.js} +3 -3
- package/dist/{chunk-7SPMPMXE.js.map → chunk-GGUWEAYD.js.map} +1 -1
- package/dist/{chunk-RRORYKXT.js → chunk-LLI3JFJL.js} +4 -4
- package/dist/{chunk-RRORYKXT.js.map → chunk-LLI3JFJL.js.map} +1 -1
- package/dist/{chunk-RN4WIA4D.js → chunk-OBRJXVWO.js} +3 -3
- package/dist/{chunk-RN4WIA4D.js.map → chunk-OBRJXVWO.js.map} +1 -1
- package/dist/{chunk-36LMNJKG.js → chunk-P27ERD6W.js} +4 -4
- package/dist/{chunk-36LMNJKG.js.map → chunk-P27ERD6W.js.map} +1 -1
- package/dist/{chunk-FBFP6LWC.js → chunk-P7D6S6GX.js} +3 -3
- package/dist/{chunk-FBFP6LWC.js.map → chunk-P7D6S6GX.js.map} +1 -1
- package/dist/{chunk-K3QIPEIV.js → chunk-R3HUGCGR.js} +3 -3
- package/dist/{chunk-K3QIPEIV.js.map → chunk-R3HUGCGR.js.map} +1 -1
- package/dist/{chunk-42RY5GAT.js → chunk-SUU3HNOX.js} +3 -3
- package/dist/{chunk-42RY5GAT.js.map → chunk-SUU3HNOX.js.map} +1 -1
- package/dist/{chunk-WDPGJHLV.js → chunk-SXPBKGLT.js} +3 -3
- package/dist/{chunk-WDPGJHLV.js.map → chunk-SXPBKGLT.js.map} +1 -1
- package/dist/{chunk-VNAC3RM2.js → chunk-T6XRYT6Q.js} +3 -3
- package/dist/{chunk-VNAC3RM2.js.map → chunk-T6XRYT6Q.js.map} +1 -1
- package/dist/{chunk-R52QIEJZ.js → chunk-UYC7M3FM.js} +3 -3
- package/dist/{chunk-R52QIEJZ.js.map → chunk-UYC7M3FM.js.map} +1 -1
- package/dist/{chunk-KO3R4JFH.js → chunk-VLDAHAG6.js} +3 -3
- package/dist/{chunk-KO3R4JFH.js.map → chunk-VLDAHAG6.js.map} +1 -1
- package/dist/{chunk-OWLYSN7L.js → chunk-W7S7GPU5.js} +3 -3
- package/dist/{chunk-OWLYSN7L.js.map → chunk-W7S7GPU5.js.map} +1 -1
- package/dist/{chunk-Z2RO42XL.js → chunk-WXBC3D2N.js} +4 -4
- package/dist/{chunk-Z2RO42XL.js.map → chunk-WXBC3D2N.js.map} +1 -1
- package/dist/{chunk-DCUFQJYP.js → chunk-Y4RKKQMB.js} +14 -5
- package/dist/chunk-Y4RKKQMB.js.map +1 -0
- package/dist/{chunk-ZUNG2RTQ.js → chunk-YUHPTV2A.js} +3 -3
- package/dist/{chunk-ZUNG2RTQ.js.map → chunk-YUHPTV2A.js.map} +1 -1
- package/dist/{chunk-Z46KLLW2.js → chunk-ZP4HYVDG.js} +3 -3
- package/dist/{chunk-Z46KLLW2.js.map → chunk-ZP4HYVDG.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +2 -2
- package/dist/components/advanced/EventCalendar/index.js +2 -2
- package/dist/components/advanced/FilterBuilder/index.js +2 -2
- package/dist/components/advanced/index.js +8 -8
- package/dist/components/data-display/Carousel/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +3 -3
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +2 -2
- package/dist/components/data-display/DataTable/index.js +3 -3
- package/dist/components/data-display/ImageGallery/index.js +3 -3
- package/dist/components/data-display/index.js +16 -16
- package/dist/components/feedback/AlertDialog/index.js +2 -2
- package/dist/components/feedback/ConfirmModal/index.js +3 -3
- package/dist/components/feedback/index.js +5 -5
- package/dist/components/forms/DatePicker/index.js +3 -3
- package/dist/components/forms/DateRangePicker/index.js +3 -3
- package/dist/components/forms/InputGroup/index.js +2 -2
- package/dist/components/forms/index.js +12 -12
- package/dist/components/index.js +59 -59
- package/dist/components/layout/index.js +2 -2
- package/dist/components/navigation/MobileSidebar/index.js +1 -1
- package/dist/components/navigation/Pagination/index.js +2 -2
- package/dist/components/navigation/Sidebar/index.js +2 -2
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/primitives/Button/index.js +1 -1
- package/dist/components/primitives/ConfirmButton/index.js +3 -3
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/index.js +9 -9
- package/dist/components/workflow/ApprovalFlow/index.js +2 -2
- package/dist/components/workflow/CommentSystem/index.js +2 -2
- package/dist/components/workflow/Dashboard/index.js +2 -2
- package/dist/components/workflow/DashboardBuilder/index.js +2 -2
- package/dist/components/workflow/KanbanBoard/index.js +2 -2
- package/dist/components/workflow/ReportGenerator/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +2 -2
- package/dist/components/workflow/index.js +9 -9
- package/dist/index.d.ts +5 -2
- package/dist/index.js +59 -59
- package/dist/styles.css +151 -121
- package/package.json +2 -2
- package/dist/chunk-6TBA37U7.js.map +0 -1
- package/dist/chunk-DCUFQJYP.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etus/ui",
|
|
3
|
-
"version": "0.4.0-beta.
|
|
3
|
+
"version": "0.4.0-beta.12",
|
|
4
4
|
"description": "Seven Design System - UI components for ETUS applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"sonner": "^2.0.7",
|
|
114
114
|
"tailwind-merge": "^3.4.0",
|
|
115
115
|
"vaul": "^1.1.2",
|
|
116
|
-
"@etus/tokens": "^0.4.0-beta.
|
|
116
|
+
"@etus/tokens": "^0.4.0-beta.10"
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
119
|
"@storybook/react-vite": "^10.2.15",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-6TBA37U7.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-success text-success-foreground hover:bg-success/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-warning text-warning-foreground hover:bg-warning/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/Tag/Tag.variants.ts","../src/components/primitives/Tag/TagGroup.tsx","../src/components/primitives/Tag/Tag.tsx"],"names":["jsx","React2"],"mappings":"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","file":"chunk-DCUFQJYP.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Tag style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const tagVariants = cva(\n // Base styles (always applied)\n [\n \"inline-flex items-center justify-center\",\n \"font-medium whitespace-nowrap shrink-0 gap-1.5\",\n \"rounded-[var(--tag-radius)] border bg-background text-foreground\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--tag-size-height-sm)] px-[var(--tag-size-padding-x-sm)] text-[length:var(--tag-size-text-sm)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-sm)]\",\n md: \"h-[var(--tag-size-height-md)] px-[var(--tag-size-padding-x-md)] text-[length:var(--tag-size-text-md)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-md)]\",\n lg: \"h-[var(--tag-size-height-lg)] px-[var(--tag-size-padding-x-lg)] text-[length:var(--tag-size-text-lg)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-lg)]\",\n },\n checked: {\n true: \"border-[color:var(--tag-color-border-checked)] bg-[color:var(--tag-color-bg-checked)]\",\n false: \"border-[color:var(--tag-color-border-default)] bg-[color:var(--tag-color-bg-default)]\",\n },\n disabled: {\n true: \"opacity-50 pointer-events-none\",\n false: \"\",\n },\n interactive: {\n true: \"cursor-pointer hover:bg-[color:var(--tag-color-bg-hover)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n checked: false,\n disabled: false,\n interactive: false,\n },\n }\n)\n\n/**\n * Tag count pill styles\n */\nexport const tagCountVariants = cva(\n [\n \"inline-flex items-center justify-center\",\n \"rounded-[var(--tag-count-radius)] bg-muted text-muted-foreground font-medium\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--tag-size-count-height-sm)] min-w-[var(--tag-size-count-min-width-sm)] px-1 text-[length:var(--tag-size-count-text-sm)]\",\n md: \"h-[var(--tag-size-count-height-md)] min-w-[var(--tag-size-count-min-width-md)] px-1.5 text-[length:var(--tag-size-count-text-md)]\",\n lg: \"h-[var(--tag-size-count-height-lg)] min-w-[var(--tag-size-count-min-width-lg)] px-1.5 text-[length:var(--tag-size-count-text-lg)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Tag checkbox styles\n */\nexport const tagCheckboxVariants = cva(\n [\n \"inline-flex items-center justify-center shrink-0\",\n \"rounded border transition-colors\",\n ],\n {\n variants: {\n size: {\n sm: \"size-[var(--tag-size-checkbox-sm)]\",\n md: \"size-[var(--tag-size-checkbox-md)]\",\n lg: \"size-[var(--tag-size-checkbox-lg)]\",\n },\n checked: {\n true: \"bg-[color:var(--tag-checkbox-bg-checked)] border-[color:var(--tag-checkbox-border-checked)] text-[color:var(--tag-checkbox-text-checked)]\",\n false: \"border-[color:var(--tag-checkbox-border-default)] bg-[color:var(--tag-checkbox-bg-default)]\",\n },\n disabled: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n checked: false,\n disabled: false,\n },\n }\n)\n\nexport type TagVariantProps = VariantProps<typeof tagVariants>\n\n/**\n * TagGroup layout variants\n */\nexport const tagGroupVariants = cva(\"inline-flex\", {\n variants: {\n /**\n * Layout mode for tags\n */\n layout: {\n /** Single line with scroll */\n inline: \"flex-nowrap overflow-x-auto\",\n /** Wrap to multiple lines */\n wrap: \"flex-wrap\",\n /** Vertical stack */\n stack: \"flex-col\",\n },\n /**\n * Gap between tags\n */\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-3\",\n },\n /**\n * Alignment of tags\n */\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n },\n },\n defaultVariants: {\n layout: \"wrap\",\n gap: \"sm\",\n align: \"center\",\n },\n})\n\nexport type TagGroupVariantProps = VariantProps<typeof tagGroupVariants>\n","\"use client\"\n\nimport type { TagGroupContextValue, TagGroupProps } from \"./Tag.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { tagGroupVariants } from \"./Tag.variants\"\n\n/**\n * Context for TagGroup to pass props to child Tags\n */\nconst TagGroupContext = React.createContext<null | TagGroupContextValue>(null)\n\n/**\n * Hook to access TagGroup context\n */\nexport function useTagGroup(): null | TagGroupContextValue {\n return React.use(TagGroupContext)\n}\n\n/**\n * TagGroup - Container for grouping multiple Tag components\n *\n * Provides layout control, gap spacing, and can pass size/disabled\n * props to all child Tags via context.\n *\n * @example\n * ```tsx\n * // Basic grouping with wrap layout\n * <TagGroup>\n * <Tag>React</Tag>\n * <Tag>TypeScript</Tag>\n * <Tag>Tailwind</Tag>\n * </TagGroup>\n *\n * // Inline scrollable\n * <TagGroup layout=\"inline\" gap=\"md\">\n * {tags.map(tag => <Tag key={tag}>{tag}</Tag>)}\n * </TagGroup>\n *\n * // With size inheritance\n * <TagGroup size=\"sm\">\n * <Tag checkbox>Option 1</Tag>\n * <Tag checkbox>Option 2</Tag>\n * </TagGroup>\n *\n * // Vertical stack\n * <TagGroup layout=\"stack\" align=\"start\">\n * <Tag>First</Tag>\n * <Tag>Second</Tag>\n * <Tag>Third</Tag>\n * </TagGroup>\n * ```\n */\nexport function TagGroup({\n children,\n className,\n layout,\n gap,\n align,\n size,\n disabled,\n ...props\n}: TagGroupProps) {\n // Memoize context value to prevent unnecessary re-renders\n const contextValue = React.useMemo<TagGroupContextValue>(\n () => ({\n size,\n disabled,\n }),\n [size, disabled]\n )\n\n return (\n <TagGroupContext value={contextValue}>\n <div\n className={cn(tagGroupVariants({ layout, gap, align }), className)}\n data-slot=\"tag-group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n </TagGroupContext>\n )\n}\n\nTagGroup.displayName = \"TagGroup\"\n","\"use client\"\n\nimport type { TagAvatarProps, TagProps } from \"./Tag.types\"\n\nimport { Check, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { tagCheckboxVariants, tagCountVariants, tagVariants } from \"./Tag.variants\"\nimport { useTagGroup } from \"./TagGroup\"\n\n// Internal checkbox component\nfunction TagCheckbox({\n checked,\n disabled,\n size,\n}: {\n checked: boolean\n disabled?: boolean\n size: \"lg\" | \"md\" | \"sm\"\n}) {\n return (\n <span\n className={cn(tagCheckboxVariants({ size, checked, disabled }))}\n data-slot=\"tag-checkbox\"\n >\n {checked && <Check className=\"size-3\" strokeWidth={3} />}\n </span>\n )\n}\n\n// Internal count pill component\nfunction TagCount({ count, size }: { count: number; size: \"lg\" | \"md\" | \"sm\" }) {\n return (\n <span className={cn(tagCountVariants({ size }))} data-slot=\"tag-count\">\n {count > 999 ? \"999+\" : count}\n </span>\n )\n}\n\n// Dismiss button size mapping (Figma: sm=10px, md=12px, lg=14px icons)\nconst dismissSizeMap = {\n sm: { button: \"size-3.5\", icon: \"size-2.5\" }, // 14px button, 10px icon\n md: { button: \"size-4\", icon: \"size-3\" }, // 16px button, 12px icon\n lg: { button: \"size-4.5\", icon: \"size-3.5\" }, // 18px button, 14px icon\n}\n\n// Internal dismiss button component\nfunction TagDismiss({\n onClick,\n disabled,\n size = \"md\",\n}: {\n disabled?: boolean\n onClick: () => void\n size?: \"lg\" | \"md\" | \"sm\"\n}) {\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!disabled) {\n onClick()\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) {\n e.preventDefault()\n e.stopPropagation()\n onClick()\n }\n }\n\n const sizeClasses = dismissSizeMap[size]\n\n return (\n <button\n className={cn(\n sizeClasses.button,\n \"-mr-0.5 rounded-sm inline-flex items-center justify-center shrink-0\",\n \"text-muted-foreground hover:text-foreground hover:bg-muted\",\n \"transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n disabled && \"pointer-events-none\"\n )}\n aria-label=\"Remove tag\"\n data-slot=\"tag-dismiss\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <X className={sizeClasses.icon} />\n </button>\n )\n}\n\n// Internal avatar component\nfunction TagAvatar({ src, fallback, alt }: TagAvatarProps) {\n const [imageError, setImageError] = React.useState(false)\n\n const initials = fallback\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n\n return (\n <span\n className=\"size-4 -ml-0.5 rounded-full shrink-0 inline-flex items-center justify-center overflow-hidden bg-muted text-3xs font-medium\"\n data-slot=\"tag-avatar\"\n >\n {src && !imageError ? (\n <img\n alt={alt ?? fallback}\n className=\"size-full object-cover\"\n src={src}\n onError={() => {\n setImageError(true)\n }}\n />\n ) : (\n <span aria-label={alt ?? fallback}>{initials}</span>\n )}\n </span>\n )\n}\n\n// Internal dot component\nfunction TagDot() {\n return (\n <span\n className=\"size-1.5 rounded-full shrink-0 bg-[color:var(--tag-color-dot)]\"\n data-slot=\"tag-dot\"\n />\n )\n}\n\n// Internal country flag component\nfunction TagCountry({ code }: { code: string }) {\n const countryToFlag = (countryCode: string) => {\n // eslint-disable-next-line unicorn/prefer-spread -- Array.from handles Unicode correctly for country codes\n const codePoints = Array.from(countryCode.toUpperCase()).map(\n (char) => 127397 + char.charCodeAt(0)\n )\n return String.fromCodePoint(...codePoints)\n }\n\n return (\n <span\n aria-label={`Flag of ${code}`}\n className=\"text-base -ml-0.5 shrink-0 leading-none\"\n data-slot=\"tag-country\"\n role=\"img\"\n >\n {countryToFlag(code)}\n </span>\n )\n}\n\n/**\n * Tag - Interactive selectable/filterable component\n *\n * Used for filtering, categorization, and selection with optional\n * checkbox, count, avatar, country flag, and dismiss functionality.\n *\n * @example\n * ```tsx\n * // Basic tag\n * <Tag>Label</Tag>\n *\n * // With checkbox\n * <Tag checkbox checked={selected} onCheckedChange={setSelected}>\n * React\n * </Tag>\n *\n * // With count and dismiss\n * <Tag count={5} onDismiss={() => {}}>\n * Notifications\n * </Tag>\n * ```\n */\nexport function Tag({\n children,\n className,\n size: sizeProp,\n checkbox,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n dot,\n icon,\n avatar,\n country,\n count,\n onDismiss,\n disabled: disabledProp,\n onClick,\n onKeyDown,\n ...props\n}: TagProps) {\n // Get context from TagGroup (if present)\n const groupContext = useTagGroup()\n\n // Merge with context values\n const size = sizeProp ?? groupContext?.size ?? \"md\"\n const disabled = disabledProp ?? groupContext?.disabled\n\n // Uncontrolled state for checkbox\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n\n // Use controlled or uncontrolled checked value\n const isChecked = controlledChecked ?? internalChecked\n const isInteractive = Boolean(checkbox) || Boolean(onClick)\n\n // Handle checkbox toggle\n const handleToggle = () => {\n if (disabled) return\n\n const newChecked = !isChecked\n setInternalChecked(newChecked)\n onCheckedChange?.(newChecked)\n }\n\n // Handle click\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n if (checkbox) {\n handleToggle()\n }\n\n onClick?.(e)\n }\n\n // Handle keyboard\n const handleKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n // Toggle on Space/Enter for checkbox\n if (checkbox && (e.key === \" \" || e.key === \"Enter\")) {\n e.preventDefault()\n handleToggle()\n }\n\n // Dismiss on Delete/Backspace\n if (onDismiss && (e.key === \"Delete\" || e.key === \"Backspace\")) {\n e.preventDefault()\n onDismiss()\n }\n\n onKeyDown?.(e)\n }\n\n // Render leading content (checkbox, avatar, country, icon, or dot)\n const renderLeading = () => {\n if (checkbox) {\n return <TagCheckbox checked={isChecked} disabled={disabled} size={size} />\n }\n if (avatar) return <TagAvatar {...avatar} />\n if (country) return <TagCountry code={country} />\n if (icon) return <span className=\"shrink-0 [&_svg]:size-3.5\" data-slot=\"tag-icon\">{icon}</span>\n if (dot) return <TagDot />\n return null\n }\n\n // Render trailing content (count, dismiss)\n const renderTrailing = () => {\n return (\n <>\n {count !== undefined && <TagCount count={count} size={size} />}\n {onDismiss && <TagDismiss disabled={disabled} size={size} onClick={onDismiss} />}\n </>\n )\n }\n\n return (\n <span\n className={cn(\n tagVariants({\n size,\n checked: isChecked,\n disabled,\n interactive: isInteractive,\n }),\n className\n )}\n aria-checked={checkbox ? isChecked : undefined}\n aria-disabled={disabled}\n data-slot=\"tag\"\n role={checkbox ? \"checkbox\" : undefined}\n tabIndex={isInteractive && !disabled ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {renderLeading()}\n <span data-slot=\"tag-content\">{children}</span>\n {renderTrailing()}\n </span>\n )\n}\n\nTag.displayName = \"Tag\"\n"]}
|