{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "marker",
  "type": "registry:ui",
  "title": "Marker",
  "description": "Status marker component for Tile UI.",
  "dependencies": [
    "@radix-ui/react-slot"
  ],
  "devDependencies": [
    "sass"
  ],
  "registryDependencies": [
    "@tile-ui/core",
    "@tile-ui/styles"
  ],
  "files": [
    {
      "path": "packages/react/src/components/marker/marker.tsx",
      "type": "registry:ui",
      "target": "components/ui/marker/marker.tsx",
      "content": "import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { getMarkerVariantKey, markerStyleKeys } from '../lib/core';\nimport type { MarkerBaseProps } from '../lib/core';\nimport styles from './marker.module.scss';\n\nexport interface MarkerProps extends React.HTMLAttributes<HTMLDivElement>, MarkerBaseProps {}\n\nconst Marker = React.forwardRef<HTMLDivElement, MarkerProps>(({ className = '', variant = 'default', asChild = false, children, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : 'div';\n\tconst variantKey = getMarkerVariantKey(variant);\n\tconst classes = [styles[markerStyleKeys.root], styles[variantKey], className].filter(Boolean).join(' ');\n\n\treturn (\n\t\t<Comp ref={ref} data-slot=\"marker\" data-variant={variant} className={classes} {...props}>\n\t\t\t{children}\n\t\t</Comp>\n\t);\n});\nMarker.displayName = 'Marker';\n\nexport interface MarkerIconProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nfunction CircleIcon() {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t<circle cx=\"12\" cy=\"12\" r=\"6\" />\n\t\t</svg>\n\t);\n}\n\nconst MarkerIcon = React.forwardRef<HTMLSpanElement, MarkerIconProps>(({ className = '', children, ...props }, ref) => {\n\treturn (\n\t\t<span ref={ref} data-slot=\"marker-icon\" aria-hidden=\"true\" className={`${styles[markerStyleKeys.icon]} ${className}`} {...props}>\n\t\t\t{children ?? <CircleIcon />}\n\t\t</span>\n\t);\n});\nMarkerIcon.displayName = 'MarkerIcon';\n\nexport interface MarkerContentProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst MarkerContent = React.forwardRef<HTMLSpanElement, MarkerContentProps>(({ className = '', children, ...props }, ref) => {\n\treturn (\n\t\t<span ref={ref} data-slot=\"marker-content\" className={`${styles[markerStyleKeys.content]} ${className}`} {...props}>\n\t\t\t{children}\n\t\t</span>\n\t);\n});\nMarkerContent.displayName = 'MarkerContent';\n\nexport { Marker, MarkerIcon, MarkerContent };\nexport default Marker;\n"
    },
    {
      "path": "packages/styles/scss/components/marker.module.scss",
      "type": "registry:file",
      "target": "components/ui/marker/marker.module.scss",
      "content": "@use '../../../styles/variables/colors' as *;\n\n// Marker 根容器\n.marker {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-height: $spacing-4;\n\twidth: 100%;\n\talign-items: center;\n\tgap: $spacing-2;\n\ttext-align: left;\n\tfont-size: $text-sm;\n\tcolor: var(--tile-marker-color, $muted-foreground);\n\n\ta {\n\t\ttext-decoration: underline;\n\t\ttext-underline-offset: 3px;\n\t}\n\n\ta:hover {\n\t\tcolor: $foreground;\n\t}\n\n\t// 变体\n\t&.variantDefault {\n\t\t// 默认无额外修饰\n\t}\n\n\t&.variantSeparator {\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tmargin-right: $spacing-1;\n\t\t\theight: 1px;\n\t\t\tmin-width: 0;\n\t\t\tflex: 1;\n\t\t\tbackground-color: var(--tile-marker-line, $border);\n\t\t}\n\n\t\t&::after {\n\t\t\tcontent: '';\n\t\t\tmargin-left: $spacing-1;\n\t\t\theight: 1px;\n\t\t\tmin-width: 0;\n\t\t\tflex: 1;\n\t\t\tbackground-color: var(--tile-marker-line, $border);\n\t\t}\n\n\t\t.markerContent {\n\t\t\tflex: none;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n\n\t&.variantBorder {\n\t\tborder-bottom: 1px solid var(--tile-marker-line, $border);\n\t\tpadding-bottom: $spacing-2;\n\t}\n}\n\n// 图标容器\n.markerIcon {\n\tdisplay: flex;\n\tflex-shrink: 0;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: $spacing-4;\n\theight: $spacing-4;\n\n\tsvg {\n\t\twidth: $spacing-4;\n\t\theight: $spacing-4;\n\t}\n}\n\n// 内容\n.markerContent {\n\tmin-width: 0;\n\toverflow-wrap: break-word;\n}\n"
    },
    {
      "path": "packages/react/src/components/marker/index.ts",
      "type": "registry:ui",
      "target": "components/ui/marker/index.ts",
      "content": "export { Marker, MarkerIcon, MarkerContent, type MarkerProps, type MarkerIconProps, type MarkerContentProps } from './marker';\n"
    }
  ]
}
