@jbpark/ui-kit 9.1.1 → 10.0.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.
Files changed (112) hide show
  1. package/README.ko.md +18 -17
  2. package/README.md +18 -17
  3. package/dist/Button.d.mts +1 -1
  4. package/dist/Button.d.mts.map +1 -1
  5. package/dist/Button.mjs +4 -5
  6. package/dist/Button.mjs.map +1 -1
  7. package/dist/Tag.d.mts.map +1 -1
  8. package/dist/Tag.mjs.map +1 -1
  9. package/dist/components/atoms/checkbox/checkbox.mjs.map +1 -1
  10. package/dist/components/atoms/option-group.mjs.map +1 -1
  11. package/dist/components/atoms/popover.d.mts +3 -1
  12. package/dist/components/atoms/popover.d.mts.map +1 -1
  13. package/dist/components/atoms/popover.mjs +10 -111
  14. package/dist/components/atoms/popover.mjs.map +1 -1
  15. package/dist/components/atoms/progress.mjs +3 -4
  16. package/dist/components/atoms/progress.mjs.map +1 -1
  17. package/dist/components/atoms/radio/context.mjs +2 -2
  18. package/dist/components/atoms/radio/context.mjs.map +1 -1
  19. package/dist/components/atoms/radio/group.mjs +6 -6
  20. package/dist/components/atoms/radio/group.mjs.map +1 -1
  21. package/dist/components/atoms/radio/radio.d.mts +2 -5
  22. package/dist/components/atoms/radio/radio.d.mts.map +1 -1
  23. package/dist/components/atoms/radio/radio.mjs +0 -1
  24. package/dist/components/atoms/radio/radio.mjs.map +1 -1
  25. package/dist/components/atoms/rich-text-editor/content-classes.mjs +1 -1
  26. package/dist/components/atoms/rich-text-editor/content-classes.mjs.map +1 -1
  27. package/dist/components/atoms/rich-text-editor/rich-text-editor.mjs +1 -1
  28. package/dist/components/atoms/rich-text-editor/rich-text-editor.mjs.map +1 -1
  29. package/dist/components/atoms/rich-text-editor/toolbar-button.mjs.map +1 -1
  30. package/dist/components/atoms/rich-text-editor/toolbar-presets.mjs.map +1 -1
  31. package/dist/components/atoms/rich-text-editor/toolbar.mjs +1 -1
  32. package/dist/components/atoms/rich-text-editor/toolbar.mjs.map +1 -1
  33. package/dist/components/atoms/select.mjs +5 -1
  34. package/dist/components/atoms/select.mjs.map +1 -1
  35. package/dist/components/atoms/slider/slider.mjs.map +1 -1
  36. package/dist/components/atoms/switch.d.mts +1 -1
  37. package/dist/components/atoms/switch.d.mts.map +1 -1
  38. package/dist/components/atoms/switch.mjs +3 -3
  39. package/dist/components/atoms/switch.mjs.map +1 -1
  40. package/dist/components/molecules/collapse.mjs +3 -10
  41. package/dist/components/molecules/collapse.mjs.map +1 -1
  42. package/dist/components/organisms/drawer.d.mts +1 -2
  43. package/dist/components/organisms/drawer.d.mts.map +1 -1
  44. package/dist/components/organisms/drawer.mjs +5 -7
  45. package/dist/components/organisms/drawer.mjs.map +1 -1
  46. package/dist/components/organisms/modal.d.mts.map +1 -1
  47. package/dist/components/organisms/modal.mjs +1 -3
  48. package/dist/components/organisms/modal.mjs.map +1 -1
  49. package/dist/components/templates/container.d.mts +4 -3
  50. package/dist/components/templates/container.d.mts.map +1 -1
  51. package/dist/components/templates/container.mjs +10 -6
  52. package/dist/components/templates/container.mjs.map +1 -1
  53. package/dist/components/templates/index.d.mts +13 -0
  54. package/dist/components/templates/layout/content.d.mts +4 -3
  55. package/dist/components/templates/layout/content.d.mts.map +1 -1
  56. package/dist/components/templates/layout/content.mjs +14 -9
  57. package/dist/components/templates/layout/content.mjs.map +1 -1
  58. package/dist/core/accordion.d.mts +1 -1
  59. package/dist/core/accordion.mjs +12 -12
  60. package/dist/core/accordion.mjs.map +1 -1
  61. package/dist/core/badge.d.mts +5 -17
  62. package/dist/core/badge.d.mts.map +1 -1
  63. package/dist/core/badge.mjs +12 -21
  64. package/dist/core/badge.mjs.map +1 -1
  65. package/dist/core/button.d.mts +7 -6
  66. package/dist/core/button.d.mts.map +1 -1
  67. package/dist/core/button.mjs +4 -4
  68. package/dist/core/button.mjs.map +1 -1
  69. package/dist/core/calendar.mjs +2 -1
  70. package/dist/core/calendar.mjs.map +1 -1
  71. package/dist/core/checkbox.d.mts +1 -1
  72. package/dist/core/checkbox.mjs +14 -14
  73. package/dist/core/checkbox.mjs.map +1 -1
  74. package/dist/core/dialog.d.mts +1 -1
  75. package/dist/core/dialog.mjs +25 -33
  76. package/dist/core/dialog.mjs.map +1 -1
  77. package/dist/core/drawer.d.mts +1 -1
  78. package/dist/core/drawer.mjs +45 -46
  79. package/dist/core/drawer.mjs.map +1 -1
  80. package/dist/core/label.d.mts +1 -2
  81. package/dist/core/label.mjs +1 -3
  82. package/dist/core/label.mjs.map +1 -1
  83. package/dist/core/popover.d.mts +1 -1
  84. package/dist/core/popover.mjs +42 -37
  85. package/dist/core/popover.mjs.map +1 -1
  86. package/dist/core/progress.d.mts +1 -1
  87. package/dist/core/progress.mjs +7 -10
  88. package/dist/core/progress.mjs.map +1 -1
  89. package/dist/core/radio-group.d.mts +3 -7
  90. package/dist/core/radio-group.mjs +14 -13
  91. package/dist/core/radio-group.mjs.map +1 -1
  92. package/dist/core/select.d.mts +7 -3
  93. package/dist/core/select.d.mts.map +1 -1
  94. package/dist/core/select.mjs +60 -56
  95. package/dist/core/select.mjs.map +1 -1
  96. package/dist/core/separator.d.mts +1 -1
  97. package/dist/core/separator.mjs +6 -5
  98. package/dist/core/separator.mjs.map +1 -1
  99. package/dist/core/slider.d.mts +1 -1
  100. package/dist/core/slider.mjs +38 -27
  101. package/dist/core/slider.mjs.map +1 -1
  102. package/dist/core/switch.d.mts +1 -1
  103. package/dist/core/switch.mjs +15 -15
  104. package/dist/core/switch.mjs.map +1 -1
  105. package/dist/index.d.mts +1 -0
  106. package/dist/lib/z-layers.mjs +4 -6
  107. package/dist/lib/z-layers.mjs.map +1 -1
  108. package/dist/providers/config/config.mjs +2 -2
  109. package/dist/providers/config/config.mjs.map +1 -1
  110. package/dist/style.css +327 -462
  111. package/package.json +7 -20
  112. package/dist/core/radio-group.d.mts.map +0 -1
@@ -4,55 +4,60 @@ import { cn } from "../utils.mjs";
4
4
  import { useConfig } from "../providers/config/context.mjs";
5
5
  import { OVERLAY_LAYER } from "../lib/z-layers.mjs";
6
6
  import "react";
7
- import { jsx } from "react/jsx-runtime";
8
- import * as PopoverPrimitive from "@radix-ui/react-popover";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Popover } from "@base-ui/react/popover";
9
9
  //#region src/core/popover.tsx
10
10
  var popover_exports = /* @__PURE__ */ __exportAll({
11
- Popover: () => Popover,
12
- PopoverAnchor: () => PopoverAnchor,
11
+ Popover: () => Popover$1,
12
+ PopoverArrow: () => PopoverArrow,
13
13
  PopoverContent: () => PopoverContent,
14
14
  PopoverDescription: () => PopoverDescription,
15
15
  PopoverHeader: () => PopoverHeader,
16
16
  PopoverTitle: () => PopoverTitle,
17
17
  PopoverTrigger: () => PopoverTrigger
18
18
  });
19
- function Popover({ ...props }) {
20
- return /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
21
- "data-slot": "popover",
22
- ...props
23
- });
24
- }
25
- function PopoverTrigger({ ...props }) {
26
- return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
27
- "data-slot": "popover-trigger",
28
- ...props
29
- });
30
- }
31
- function PopoverContent({ className, align = "center", sideOffset = 4, container, ...props }) {
19
+ const Popover$1 = Popover.Root;
20
+ const PopoverTrigger = Popover.Trigger;
21
+ function PopoverContent({ className, align = "center", side = "bottom", sideOffset = 4, container, ...props }) {
32
22
  const { getContainer } = useConfig();
33
- return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, {
23
+ return /* @__PURE__ */ jsx(Popover.Portal, {
34
24
  container: container ?? getContainer(),
35
- children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
36
- "data-slot": "popover-content",
25
+ children: /* @__PURE__ */ jsx(Popover.Positioner, {
26
+ side,
37
27
  align,
38
28
  sideOffset,
39
- className: cn(`bg-popover text-popover-foreground data-[state=open]:animate-in
40
- data-[state=closed]:animate-out data-[state=closed]:fade-out-0
41
- data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95
42
- data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2
43
- data-[side=left]:slide-in-from-right-2
44
- data-[side=right]:slide-in-from-left-2
45
- data-[side=top]:slide-in-from-bottom-2 w-72
46
- origin-(--radix-popover-content-transform-origin) rounded-md border
47
- p-4 shadow-md outline-hidden`, OVERLAY_LAYER, className),
48
- ...props
29
+ arrowPadding: 16,
30
+ className: OVERLAY_LAYER,
31
+ children: /* @__PURE__ */ jsx(Popover.Popup, {
32
+ "data-slot": "popover-content",
33
+ className: cn(`bg-popover text-popover-foreground w-72 origin-(--transform-origin)
34
+ rounded-md border p-4 shadow-md outline-hidden
35
+ transition-[opacity,transform] duration-150
36
+ data-ending-style:scale-95 data-ending-style:opacity-0
37
+ data-starting-style:scale-95 data-starting-style:opacity-0`, className),
38
+ ...props
39
+ })
49
40
  })
50
41
  });
51
42
  }
52
- function PopoverAnchor({ ...props }) {
53
- return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
54
- "data-slot": "popover-anchor",
55
- ...props
43
+ function PopoverArrow() {
44
+ return /* @__PURE__ */ jsx(Popover.Arrow, {
45
+ "data-slot": "popover-arrow",
46
+ className: "data-[side=bottom]:-top-2 data-[side=left]:-right-[13px]\n data-[side=left]:rotate-90 data-[side=right]:-left-[13px]\n data-[side=right]:-rotate-90 data-[side=top]:-bottom-2\n data-[side=top]:rotate-180",
47
+ children: /* @__PURE__ */ jsxs("svg", {
48
+ className: "block",
49
+ width: "18",
50
+ height: "9",
51
+ viewBox: "0 0 18 9",
52
+ fill: "none",
53
+ children: [/* @__PURE__ */ jsx("path", {
54
+ d: "M0 9 9 0 18 9",
55
+ className: "fill-border"
56
+ }), /* @__PURE__ */ jsx("path", {
57
+ d: "M1 9 9 1 17 9",
58
+ className: "fill-popover"
59
+ })]
60
+ })
56
61
  });
57
62
  }
58
63
  function PopoverHeader({ className, ...props }) {
@@ -63,20 +68,20 @@ function PopoverHeader({ className, ...props }) {
63
68
  });
64
69
  }
65
70
  function PopoverTitle({ className, ...props }) {
66
- return /* @__PURE__ */ jsx("div", {
71
+ return /* @__PURE__ */ jsx(Popover.Title, {
67
72
  "data-slot": "popover-title",
68
73
  className: cn("font-medium", className),
69
74
  ...props
70
75
  });
71
76
  }
72
77
  function PopoverDescription({ className, ...props }) {
73
- return /* @__PURE__ */ jsx("p", {
78
+ return /* @__PURE__ */ jsx(Popover.Description, {
74
79
  "data-slot": "popover-description",
75
80
  className: cn("text-muted-foreground", className),
76
81
  ...props
77
82
  });
78
83
  }
79
84
  //#endregion
80
- export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, popover_exports };
85
+ export { Popover$1 as Popover, PopoverArrow, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, popover_exports };
81
86
 
82
87
  //# sourceMappingURL=popover.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.mjs","names":[],"sources":["../../src/core/popover.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { OVERLAY_LAYER } from '../lib/z-layers';\n\n/*\n * Vendored from shadcn's `new-york-v4` popover registry entry.\n *\n * Local patches — re-apply these after any `shadcn add popover`:\n * 1. Imports: `PopoverPrimitive` from `@radix-ui/react-popover` (upstream uses\n * the unified `radix-ui` package, which this repo doesn't install), `cn`\n * from `@repo/ui/utils`.\n * 2. `OVERLAY_LAYER` (src/lib/z-layers.ts) replaces upstream's `z-50` on\n * `PopoverContent`. Why: this package is published and can't assume it owns\n * the app's z-index scale — see #359.\n * 3. `PopoverContent` takes a `container` prop, defaulted to\n * `useConfig().getContainer()`, and passes it to `PopoverPrimitive.Portal`\n * (upstream renders the portal with no `container`). Why: portalled content\n * must stay inside the themed wrapper, or dark mode and the CSS custom\n * properties don't reach it.\n *\n * The rest of what `shadcn add popover --diff` reports is Tailwind class\n * ordering and prettier line-wrapping from this repo's formatter, not a patch.\n */\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n container,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement;\n}) {\n const { getContainer } = useConfig();\n\n return (\n <PopoverPrimitive.Portal container={container ?? getContainer()}>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `bg-popover text-popover-foreground data-[state=open]:animate-in\n data-[state=closed]:animate-out data-[state=closed]:fade-out-0\n data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95\n data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2\n data-[side=left]:slide-in-from-right-2\n data-[side=right]:slide-in-from-left-2\n data-[side=top]:slide-in-from-bottom-2 w-72\n origin-(--radix-popover-content-transform-origin) rounded-md border\n p-4 shadow-md outline-hidden`,\n OVERLAY_LAYER,\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn('flex flex-col gap-1 text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn('font-medium', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn('text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AA8BA,SAAS,QAAQ,EACf,GAAG,SACkD;CACrD,OAAO,oBAAC,iBAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA;AAChE;AAEA,SAAS,eAAe,EACtB,GAAG,SACqD;CACxD,OAAO,oBAAC,iBAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,WACA,GAAG,SAGF;CACD,MAAM,EAAE,iBAAiB,UAAU;CAEnC,OACE,oBAAC,iBAAiB,QAAlB;EAAyB,WAAW,aAAa,aAAa;EAC5D,UAAA,oBAAC,iBAAiB,SAAlB;GACE,aAAU;GACH;GACK;GACZ,WAAW,GACT;;;;;;;;yCASA,eACA,SACF;GACA,GAAI;EACL,CAAA;CACsB,CAAA;AAE7B;AAEA,SAAS,cAAc,EACrB,GAAG,SACoD;CACvD,OAAO,oBAAC,iBAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAqC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,eAAe,SAAS;EACtC,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyB;CAC5B,OACE,oBAAC,KAAD;EACE,aAAU;EACV,WAAW,GAAG,yBAAyB,SAAS;EAChD,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"popover.mjs","names":["Popover","PopoverPrimitive"],"sources":["../../src/core/popover.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport { useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { OVERLAY_LAYER } from '../lib/z-layers';\n\n// Base UI primitives with repo-owned styling; no longer vendored from shadcn.\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nfunction PopoverContent({\n className,\n align = 'center',\n side = 'bottom',\n sideOffset = 4,\n container,\n ...props\n}: Omit<React.ComponentProps<typeof PopoverPrimitive.Popup>, 'className'> & {\n className?: string;\n align?: PopoverPrimitive.Positioner.Props['align'];\n side?: PopoverPrimitive.Positioner.Props['side'];\n sideOffset?: number;\n container?: HTMLElement;\n}) {\n const { getContainer } = useConfig();\n\n return (\n <PopoverPrimitive.Portal container={container ?? getContainer()}>\n <PopoverPrimitive.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n arrowPadding={16}\n className={OVERLAY_LAYER}\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n `bg-popover text-popover-foreground w-72 origin-(--transform-origin)\n rounded-md border p-4 shadow-md outline-hidden\n transition-[opacity,transform] duration-150\n data-ending-style:scale-95 data-ending-style:opacity-0\n data-starting-style:scale-95 data-starting-style:opacity-0`,\n className,\n //\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverArrow() {\n return (\n <PopoverPrimitive.Arrow\n data-slot=\"popover-arrow\"\n className=\"data-[side=bottom]:-top-2 data-[side=left]:-right-[13px]\n data-[side=left]:rotate-90 data-[side=right]:-left-[13px]\n data-[side=right]:-rotate-90 data-[side=top]:-bottom-2\n data-[side=top]:rotate-180\"\n >\n {/* `block` keeps the arrow box exactly as tall as the SVG. Left inline,\n the SVG sits on a text baseline and the wrapper inherits the popup's\n line-height instead (26px, not 9px), which pushes the triangle down\n inside the popup and rotates it about the wrong centre. */}\n <svg\n className=\"block\"\n width=\"18\"\n height=\"9\"\n viewBox=\"0 0 18 9\"\n fill=\"none\"\n >\n <path d=\"M0 9 9 0 18 9\" className=\"fill-border\" />\n <path d=\"M1 9 9 1 17 9\" className=\"fill-popover\" />\n </svg>\n </PopoverPrimitive.Arrow>\n );\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn('flex flex-col gap-1 text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof PopoverPrimitive.Title>, 'className'> & {\n className?: string;\n}) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn('font-medium', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<'p'>) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn('text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverArrow,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAYA,MAAMA,YAAUC,QAAiB;AACjC,MAAM,iBAAiBA,QAAiB;AAExC,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,OAAO,UACP,aAAa,GACb,WACA,GAAG,SAOF;CACD,MAAM,EAAE,iBAAiB,UAAU;CAEnC,OACE,oBAACA,QAAiB,QAAlB;EAAyB,WAAW,aAAa,aAAa;EAC5D,UAAA,oBAACA,QAAiB,YAAlB;GACQ;GACC;GACK;GACZ,cAAc;GACd,WAAW;GAEX,UAAA,oBAACA,QAAiB,OAAlB;IACE,aAAU;IACV,WAAW,GACT;;;;yEAKA,SAEF;IACA,GAAI;GACL,CAAA;EAC0B,CAAA;CACN,CAAA;AAE7B;AAEA,SAAS,eAAe;CACtB,OACE,oBAACA,QAAiB,OAAlB;EACE,aAAU;EACV,WAAU;EASV,UAAA,qBAAC,OAAD;GACE,WAAU;GACV,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GALP,UAAA,CAOE,oBAAC,QAAD;IAAM,GAAE;IAAgB,WAAU;GAAe,CAAA,GACjD,oBAAC,QAAD;IAAM,GAAE;IAAgB,WAAU;GAAgB,CAAA,CAC/C;;CACiB,CAAA;AAE5B;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,aAAa,EACpB,WACA,GAAG,SAGF;CACD,OACE,oBAACA,QAAiB,OAAlB;EACE,aAAU;EACV,WAAW,GAAG,eAAe,SAAS;EACtC,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyB;CAC5B,OACE,oBAACA,QAAiB,aAAlB;EACE,aAAU;EACV,WAAW,GAAG,yBAAyB,SAAS;EAChD,GAAI;CACL,CAAA;AAEL"}
@@ -1,2 +1,2 @@
1
1
  import "react";
2
- import "@radix-ui/react-progress";
2
+ import { Progress } from "@base-ui/react/progress";
@@ -3,25 +3,22 @@ import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
3
3
  import { cn } from "../utils.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
- import * as ProgressPrimitive from "@radix-ui/react-progress";
6
+ import { Progress } from "@base-ui/react/progress";
7
7
  //#region src/core/progress.tsx
8
- var progress_exports = /* @__PURE__ */ __exportAll({ Progress: () => Progress });
9
- function Progress({ className, value, barClassName, barStyle, ...props }) {
10
- return /* @__PURE__ */ jsx(ProgressPrimitive.Root, {
8
+ var progress_exports = /* @__PURE__ */ __exportAll({ Progress: () => Progress$1 });
9
+ function Progress$1({ className, barClassName, barStyle, ...props }) {
10
+ return /* @__PURE__ */ jsx(Progress.Root, {
11
11
  "data-slot": "progress",
12
12
  className: cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className),
13
13
  ...props,
14
- children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, {
14
+ children: /* @__PURE__ */ jsx(Progress.Indicator, {
15
15
  "data-slot": "progress-indicator",
16
16
  className: cn("bg-primary h-full w-full flex-1 transition-all", barClassName),
17
- style: {
18
- transform: `translateX(-${100 - (value || 0)}%)`,
19
- ...barStyle
20
- }
17
+ style: barStyle
21
18
  })
22
19
  });
23
20
  }
24
21
  //#endregion
25
- export { Progress, progress_exports };
22
+ export { Progress$1 as Progress, progress_exports };
26
23
 
27
24
  //# sourceMappingURL=progress.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.mjs","names":[],"sources":["../../src/core/progress.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@repo/ui/utils';\n\n/*\n * Vendored from shadcn's `new-york-v4` progress registry entry.\n *\n * Local patches — re-apply these after any `shadcn add progress`:\n * 1. Import `cn` from `@repo/ui/utils` (upstream uses its `cn` alias) and\n * `ProgressPrimitive` from `@radix-ui/react-progress` (upstream uses the\n * unified `radix-ui` package, which this repo doesn't install).\n * 2. `CustomProps` adds `barClassName` (merged onto the Indicator's className)\n * and `barStyle` (merged into the Indicator's inline `style`).\n *\n * Why this stays a local patch rather than moving to `atoms/progress` (#361):\n * `atoms/progress` supports a vertical direction, which needs the Indicator\n * sized by `height %` via `barStyle` — overriding upstream's inline\n * `transform: translateX(...)`. Inline style can't be overridden through a\n * `className`, so the consumer must reach the Indicator's `style`, which a\n * verbatim primitive doesn't expose. Irreducibly structural (like #363). The\n * rest of `shadcn add progress --diff` is class ordering / prettier wrapping.\n */\ninterface CustomProps {\n barClassName?: string;\n barStyle?: React.CSSProperties;\n}\n\nfunction Progress({\n className,\n value,\n barClassName,\n barStyle,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & CustomProps) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\n 'bg-primary h-full w-full flex-1 transition-all',\n barClassName,\n )}\n style={{\n transform: `translateX(-${100 - (value || 0)}%)`,\n ...barStyle,\n }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n"],"mappings":";;;;;;;;AA+BA,SAAS,SAAS,EAChB,WACA,OACA,cACA,UACA,GAAG,SACiE;CACpE,OACE,oBAAC,kBAAkB,MAAnB;EACE,aAAU;EACV,WAAW,GACT,kEACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,kBAAkB,WAAnB;GACE,aAAU;GACV,WAAW,GACT,kDACA,YACF;GACA,OAAO;IACL,WAAW,eAAe,OAAO,SAAS,GAAG;IAC7C,GAAG;GACL;EACD,CAAA;CACqB,CAAA;AAE5B"}
1
+ {"version":3,"file":"progress.mjs","names":["Progress","ProgressPrimitive"],"sources":["../../src/core/progress.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Progress as ProgressPrimitive } from '@base-ui/react/progress';\n\nimport { cn } from '@repo/ui/utils';\n\ninterface CustomProps {\n barClassName?: string;\n barStyle?: React.CSSProperties;\n}\n\n// Base UI primitive with repo-owned styling; no longer vendored from shadcn.\nfunction Progress({\n className,\n barClassName,\n barStyle,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & CustomProps) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\n 'bg-primary h-full w-full flex-1 transition-all',\n barClassName,\n //\n )}\n style={barStyle}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n"],"mappings":";;;;;;;;AAcA,SAASA,WAAS,EAChB,WACA,cACA,UACA,GAAG,SACiE;CACpE,OACE,oBAACC,SAAkB,MAAnB;EACE,aAAU;EACV,WAAW,GACT,kEACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAACA,SAAkB,WAAnB;GACE,aAAU;GACV,WAAW,GACT,kDACA,YAEF;GACA,OAAO;EACR,CAAA;CACqB,CAAA;AAE5B"}
@@ -1,7 +1,3 @@
1
- import * as React$1 from "react";
2
- import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3
- //#region src/core/radio-group.d.ts
4
- declare function RadioGroup({ className, ...props }: React$1.ComponentProps<typeof RadioGroupPrimitive.Root>): React$1.JSX.Element;
5
- //#endregion
6
- export { RadioGroup };
7
- //# sourceMappingURL=radio-group.d.mts.map
1
+ import "react";
2
+ import { Radio } from "@base-ui/react/radio";
3
+ import { RadioGroup } from "@base-ui/react/radio-group";
@@ -4,38 +4,39 @@ import { cn } from "../utils.mjs";
4
4
  import "react";
5
5
  import { CircleIcon } from "lucide-react";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
7
+ import { Radio } from "@base-ui/react/radio";
8
+ import { RadioGroup } from "@base-ui/react/radio-group";
8
9
  //#region src/core/radio-group.tsx
9
10
  var radio_group_exports = /* @__PURE__ */ __exportAll({
10
- RadioGroup: () => RadioGroup,
11
+ RadioGroup: () => RadioGroup$1,
11
12
  RadioGroupItem: () => RadioGroupItem
12
13
  });
13
- function RadioGroup({ className, ...props }) {
14
- return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
14
+ function RadioGroup$1({ className, ...props }) {
15
+ return /* @__PURE__ */ jsx(RadioGroup, {
15
16
  "data-slot": "radio-group",
16
17
  className: cn("grid gap-3", className),
17
18
  ...props
18
19
  });
19
20
  }
20
21
  function RadioGroupItem({ className, ...props }) {
21
- return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
22
+ return /* @__PURE__ */ jsx(Radio.Root, {
22
23
  "data-slot": "radio-group-item",
23
24
  className: cn(`border-input text-primary focus-visible:border-ring
24
25
  focus-visible:ring-ring/50 aria-invalid:ring-destructive/20
25
26
  dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive
26
- dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border
27
- shadow-xs transition-[color,box-shadow] outline-none
28
- focus-visible:ring-[3px] disabled:cursor-not-allowed
29
- disabled:opacity-50`, className),
27
+ dark:bg-input/30 inline-flex aspect-square size-4 shrink-0 items-center
28
+ justify-center rounded-full border shadow-xs
29
+ transition-[color,box-shadow] outline-none focus-visible:ring-[3px]
30
+ data-disabled:cursor-not-allowed data-disabled:opacity-50`, className),
30
31
  ...props,
31
- children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
32
+ children: /* @__PURE__ */ jsx(Radio.Indicator, {
32
33
  "data-slot": "radio-group-indicator",
33
- className: "relative flex items-center justify-center",
34
- children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2\n -translate-x-1/2 -translate-y-1/2" })
34
+ className: "flex items-center justify-center",
35
+ children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary size-2" })
35
36
  })
36
37
  });
37
38
  }
38
39
  //#endregion
39
- export { RadioGroup, RadioGroupItem, radio_group_exports };
40
+ export { RadioGroup$1 as RadioGroup, RadioGroupItem, radio_group_exports };
40
41
 
41
42
  //# sourceMappingURL=radio-group.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.mjs","names":[],"sources":["../../src/core/radio-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@repo/ui/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n `border-input text-primary focus-visible:border-ring\n focus-visible:ring-ring/50 aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\n dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border\n shadow-xs transition-[color,box-shadow] outline-none\n focus-visible:ring-[3px] disabled:cursor-not-allowed\n disabled:opacity-50`,\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon\n className=\"fill-primary absolute top-1/2 left-1/2 size-2\n -translate-x-1/2 -translate-y-1/2\"\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;;;;;AASA,SAAS,WAAW,EAClB,WACA,GAAG,SACqD;CACxD,OACE,oBAAC,oBAAoB,MAArB;EACE,aAAU;EACV,WAAW,GAAG,cAAc,SAAS;EACrC,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,oBAAC,oBAAoB,MAArB;EACE,aAAU;EACV,WAAW,GACT;;;;;;8BAOA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,oBAAoB,WAArB;GACE,aAAU;GACV,WAAU;GAEV,UAAA,oBAAC,YAAD,EACE,WAAU,+FAEX,CAAA;EAC4B,CAAA;CACP,CAAA;AAE9B"}
1
+ {"version":3,"file":"radio-group.mjs","names":["RadioGroup","RadioGroupPrimitive","RadioPrimitive"],"sources":["../../src/core/radio-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@repo/ui/utils';\n\n// Base UI primitives with repo-owned styling; no longer vendored from shadcn.\n// Base UI splits Radix's `RadioGroup.Item` into a standalone `Radio.Root`\n// (from `@base-ui/react/radio`) plus a `Radio.Indicator`.\n//\n// `Radio.Root` renders a `<span role=\"radio\">`, where Radix rendered a\n// `<button>`. That matters for centering: a button centers its content through\n// the UA's own anonymous box, so the indicator — which collapses to zero height\n// once its only child is taken out of flow — still landed on the centre line. A\n// span gets no such treatment, so the same markup anchored the dot to the top\n// of the control and it sat 7px high. The root therefore centers explicitly,\n// matching `core/checkbox`, and the dot stays in flow rather than being\n// absolutely positioned against a zero-height parent.\n//\n// Base UI's `RadioGroup` is generic over the item value; this library always\n// addresses items by their stringified value (see atoms/radio), so pin it to\n// `string` — otherwise `React.ComponentProps` erases the generic to `unknown`\n// and `value`/`onValueChange` stop lining up with the string callers.\nfunction RadioGroup({\n className,\n ...props\n}: RadioGroupPrimitive.Props<string>) {\n return (\n <RadioGroupPrimitive\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioPrimitive.Root>) {\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n className={cn(\n `border-input text-primary focus-visible:border-ring\n focus-visible:ring-ring/50 aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\n dark:bg-input/30 inline-flex aspect-square size-4 shrink-0 items-center\n justify-center rounded-full border shadow-xs\n transition-[color,box-shadow] outline-none focus-visible:ring-[3px]\n data-disabled:cursor-not-allowed data-disabled:opacity-50`,\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary size-2\" />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;;;;;;;AA2BA,SAASA,aAAW,EAClB,WACA,GAAG,SACiC;CACpC,OACE,oBAACC,YAAD;EACE,aAAU;EACV,WAAW,GAAG,cAAc,SAAS;EACrC,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EACtB,WACA,GAAG,SACgD;CACnD,OACE,oBAACC,MAAe,MAAhB;EACE,aAAU;EACV,WAAW,GACT;;;;;;oEAOA,SACF;EACA,GAAI;EAEJ,UAAA,oBAACA,MAAe,WAAhB;GACE,aAAU;GACV,WAAU;GAEV,UAAA,oBAAC,YAAD,EAAY,WAAU,sBAAuB,CAAA;EACrB,CAAA;CACP,CAAA;AAEzB"}
@@ -1,7 +1,11 @@
1
1
  import * as React$1 from "react";
2
- import * as SelectPrimitive from "@radix-ui/react-select";
2
+ import { Select } from "@base-ui/react/select";
3
3
  //#region src/core/select.d.ts
4
- declare function Select({ ...props }: React$1.ComponentProps<typeof SelectPrimitive.Root>): React$1.JSX.Element;
4
+ type SelectRootProps = Select.Root.Props<string> & {
5
+ /** Explicit reading direction, retained from the previous Radix API. */
6
+ dir?: 'ltr' | 'rtl';
7
+ };
8
+ declare function Select$1({ dir, ...props }: SelectRootProps): React$1.JSX.Element;
5
9
  //#endregion
6
- export { Select };
10
+ export { Select$1 as Select };
7
11
  //# sourceMappingURL=select.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.mts","names":[],"sources":["../../src/core/select.tsx"],"mappings":";;;iBA+BS,YACJ,SACF,QAAM,sBAAsB,gBAAgB,QAAK,QAAA,IAAA"}
1
+ {"version":3,"file":"select.d.mts","names":[],"sources":["../../src/core/select.tsx"],"mappings":";;;KAcK,kBAAkB,OAAgB,KAAK;;EAE1C;;iBAGO,WAAS,QAAQ,SAAS,kBAAe,QAAA,IAAA"}
@@ -5,11 +5,12 @@ import { useConfig } from "../providers/config/context.mjs";
5
5
  import { OVERLAY_LAYER } from "../lib/z-layers.mjs";
6
6
  import "react";
7
7
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
8
+ import { DirectionProvider } from "@base-ui/react/direction-provider";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import * as SelectPrimitive from "@radix-ui/react-select";
10
+ import { Select } from "@base-ui/react/select";
10
11
  //#region src/core/select.tsx
11
12
  var select_exports = /* @__PURE__ */ __exportAll({
12
- Select: () => Select,
13
+ Select: () => Select$1,
13
14
  SelectContent: () => SelectContent,
14
15
  SelectGroup: () => SelectGroup,
15
16
  SelectItem: () => SelectItem,
@@ -20,29 +21,33 @@ var select_exports = /* @__PURE__ */ __exportAll({
20
21
  SelectTrigger: () => SelectTrigger,
21
22
  SelectValue: () => SelectValue
22
23
  });
23
- function Select({ ...props }) {
24
- return /* @__PURE__ */ jsx(SelectPrimitive.Root, {
24
+ function Select$1({ dir, ...props }) {
25
+ const root = /* @__PURE__ */ jsx(Select.Root, {
25
26
  "data-slot": "select",
26
27
  ...props
27
28
  });
29
+ return dir ? /* @__PURE__ */ jsx(DirectionProvider, {
30
+ direction: dir,
31
+ children: root
32
+ }) : root;
28
33
  }
29
34
  function SelectGroup({ ...props }) {
30
- return /* @__PURE__ */ jsx(SelectPrimitive.Group, {
35
+ return /* @__PURE__ */ jsx(Select.Group, {
31
36
  "data-slot": "select-group",
32
37
  ...props
33
38
  });
34
39
  }
35
40
  function SelectValue({ ...props }) {
36
- return /* @__PURE__ */ jsx(SelectPrimitive.Value, {
41
+ return /* @__PURE__ */ jsx(Select.Value, {
37
42
  "data-slot": "select-value",
38
43
  ...props
39
44
  });
40
45
  }
41
46
  function SelectTrigger({ className, size = "default", children, ...props }) {
42
- return /* @__PURE__ */ jsxs(SelectPrimitive.Trigger, {
47
+ return /* @__PURE__ */ jsxs(Select.Trigger, {
43
48
  "data-slot": "select-trigger",
44
49
  "data-size": size,
45
- className: cn(`border-input data-[placeholder]:text-muted-foreground
50
+ className: cn(`border-input data-placeholder:text-muted-foreground
46
51
  [&_svg:not([class*='text-'])]:text-muted-foreground
47
52
  focus-visible:border-ring focus-visible:ring-ring/50
48
53
  aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40
@@ -50,84 +55,83 @@ function SelectTrigger({ className, size = "default", children, ...props }) {
50
55
  flex w-fit items-center justify-between gap-2 rounded-md border
51
56
  bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs
52
57
  transition-[color,box-shadow] outline-none focus-visible:ring-[3px]
53
- disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9
54
- data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1
55
- *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center
56
- *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none
57
- [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`, className),
58
+ data-disabled:cursor-not-allowed data-disabled:opacity-50
59
+ data-[size=default]:h-9 data-[size=sm]:h-8
60
+ *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex
61
+ *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2
62
+ [&_svg]:pointer-events-none [&_svg]:shrink-0
63
+ [&_svg:not([class*='size-'])]:size-4`, className),
58
64
  ...props,
59
- children: [children, /* @__PURE__ */ jsx(SelectPrimitive.Icon, {
60
- asChild: true,
61
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
65
+ children: [children, /* @__PURE__ */ jsx(Select.Icon, {
66
+ render: /* @__PURE__ */ jsx(ChevronDownIcon, {}),
67
+ className: "opacity-50"
62
68
  })]
63
69
  });
64
70
  }
65
- function SelectContent({ className, children, position = "item-aligned", align = "center", container, ...props }) {
71
+ function SelectContent({ className, children, position = "item-aligned", align = "center", side = "bottom", sideOffset = 4, container, ...props }) {
66
72
  const { getContainer } = useConfig();
67
- return /* @__PURE__ */ jsx(SelectPrimitive.Portal, {
73
+ const alignItemWithTrigger = position === "item-aligned";
74
+ return /* @__PURE__ */ jsx(Select.Portal, {
68
75
  container: container ?? getContainer(),
69
- children: /* @__PURE__ */ jsxs(SelectPrimitive.Content, {
70
- "data-slot": "select-content",
71
- className: cn(`bg-popover text-popover-foreground data-[state=open]:animate-in
72
- data-[state=closed]:animate-out data-[state=closed]:fade-out-0
73
- data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95
74
- data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2
75
- data-[side=left]:slide-in-from-right-2
76
- data-[side=right]:slide-in-from-left-2
77
- data-[side=top]:slide-in-from-bottom-2 relative
78
- max-h-(--radix-select-content-available-height) min-w-[8rem]
79
- origin-(--radix-select-content-transform-origin) overflow-x-hidden
80
- overflow-y-auto rounded-md border shadow-md`, OVERLAY_LAYER, position === "popper" && `data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1
81
- data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`, className),
82
- position,
76
+ children: /* @__PURE__ */ jsx(Select.Positioner, {
77
+ side,
83
78
  align,
84
- ...props,
85
- children: [
86
- /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
87
- /* @__PURE__ */ jsx(SelectPrimitive.Viewport, {
88
- className: cn("p-1", position === "popper" && `h-[var(--radix-select-trigger-height)] w-full
89
- min-w-[var(--radix-select-trigger-width)] scroll-my-1`),
90
- children
91
- }),
92
- /* @__PURE__ */ jsx(SelectScrollDownButton, {})
93
- ]
79
+ sideOffset,
80
+ alignItemWithTrigger,
81
+ className: cn(OVERLAY_LAYER, !alignItemWithTrigger && "min-w-(--anchor-width)"),
82
+ children: /* @__PURE__ */ jsxs(Select.Popup, {
83
+ "data-slot": "select-content",
84
+ className: cn(`bg-popover text-popover-foreground max-h-(--available-height)
85
+ min-w-[8rem] origin-(--transform-origin) overflow-hidden rounded-md
86
+ border shadow-md transition-[opacity,transform] duration-150
87
+ data-ending-style:scale-95 data-ending-style:opacity-0
88
+ data-starting-style:scale-95 data-starting-style:opacity-0`, className),
89
+ ...props,
90
+ children: [
91
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
92
+ /* @__PURE__ */ jsx(Select.List, {
93
+ className: "overflow-y-auto p-1",
94
+ children
95
+ }),
96
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
97
+ ]
98
+ })
94
99
  })
95
100
  });
96
101
  }
97
102
  function SelectLabel({ className, ...props }) {
98
- return /* @__PURE__ */ jsx(SelectPrimitive.Label, {
103
+ return /* @__PURE__ */ jsx(Select.GroupLabel, {
99
104
  "data-slot": "select-label",
100
105
  className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
101
106
  ...props
102
107
  });
103
108
  }
104
109
  function SelectItem({ className, children, ...props }) {
105
- return /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
110
+ return /* @__PURE__ */ jsxs(Select.Item, {
106
111
  "data-slot": "select-item",
107
- className: cn(`focus:bg-accent focus:text-accent-foreground
112
+ className: cn(`data-highlighted:bg-accent data-highlighted:text-accent-foreground
108
113
  [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full
109
114
  cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm
110
- outline-hidden select-none data-[disabled]:pointer-events-none
111
- data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0
112
- [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex
113
- *:[span]:last:items-center *:[span]:last:gap-2`, className),
115
+ outline-hidden select-none data-disabled:pointer-events-none
116
+ data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0
117
+ [&_svg:not([class*='size-'])]:size-4`, className),
114
118
  ...props,
115
- children: [/* @__PURE__ */ jsx("span", {
119
+ children: [/* @__PURE__ */ jsx(Select.ItemIndicator, {
116
120
  "data-slot": "select-item-indicator",
117
121
  className: "absolute right-2 flex size-3.5 items-center justify-center",
118
- children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
119
- }), /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })]
122
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" })
123
+ }), /* @__PURE__ */ jsx(Select.ItemText, { children })]
120
124
  });
121
125
  }
122
126
  function SelectSeparator({ className, ...props }) {
123
- return /* @__PURE__ */ jsx(SelectPrimitive.Separator, {
127
+ return /* @__PURE__ */ jsx(Select.Separator, {
124
128
  "data-slot": "select-separator",
125
129
  className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
126
130
  ...props
127
131
  });
128
132
  }
129
133
  function SelectScrollUpButton({ className, ...props }) {
130
- return /* @__PURE__ */ jsx(SelectPrimitive.ScrollUpButton, {
134
+ return /* @__PURE__ */ jsx(Select.ScrollUpArrow, {
131
135
  "data-slot": "select-scroll-up-button",
132
136
  className: cn("flex cursor-default items-center justify-center py-1", className),
133
137
  ...props,
@@ -135,7 +139,7 @@ function SelectScrollUpButton({ className, ...props }) {
135
139
  });
136
140
  }
137
141
  function SelectScrollDownButton({ className, ...props }) {
138
- return /* @__PURE__ */ jsx(SelectPrimitive.ScrollDownButton, {
142
+ return /* @__PURE__ */ jsx(Select.ScrollDownArrow, {
139
143
  "data-slot": "select-scroll-down-button",
140
144
  className: cn("flex cursor-default items-center justify-center py-1", className),
141
145
  ...props,
@@ -143,6 +147,6 @@ function SelectScrollDownButton({ className, ...props }) {
143
147
  });
144
148
  }
145
149
  //#endregion
146
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, select_exports };
150
+ export { Select$1 as Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, select_exports };
147
151
 
148
152
  //# sourceMappingURL=select.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.mjs","names":[],"sources":["../../src/core/select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { OVERLAY_LAYER } from '../lib/z-layers';\n\n/*\n * Vendored from shadcn's `new-york-v4` select registry entry.\n *\n * Local patches — re-apply these after any `shadcn add select`:\n * 1. Imports: `SelectPrimitive` from `@radix-ui/react-select` (upstream uses\n * the unified `radix-ui` package, which this repo doesn't install), `cn`\n * from `@repo/ui/utils`.\n * 2. `OVERLAY_LAYER` (src/lib/z-layers.ts) replaces upstream's `z-50` on\n * `SelectContent`. Why: this package is published and can't assume it owns\n * the app's z-index scale — see #359.\n * 3. `SelectContent` takes a `container` prop, defaulted to\n * `useConfig().getContainer()`, and passes it to `SelectPrimitive.Portal`\n * (upstream renders the portal with no `container`). Why: portalled content\n * must stay inside the themed wrapper, or dark mode and the CSS custom\n * properties don't reach it.\n *\n * The rest of what `shadcn add select --diff` reports is Tailwind class\n * ordering and prettier line-wrapping from this repo's formatter, not a patch.\n */\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n `border-input data-[placeholder]:text-muted-foreground\n [&_svg:not([class*='text-'])]:text-muted-foreground\n focus-visible:border-ring focus-visible:ring-ring/50\n aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\n aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50\n flex w-fit items-center justify-between gap-2 rounded-md border\n bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs\n transition-[color,box-shadow] outline-none focus-visible:ring-[3px]\n disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9\n data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1\n *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center\n *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none\n [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'item-aligned',\n align = 'center',\n container,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement;\n}) {\n const { getContainer } = useConfig();\n\n return (\n <SelectPrimitive.Portal container={container ?? getContainer()}>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n `bg-popover text-popover-foreground data-[state=open]:animate-in\n data-[state=closed]:animate-out data-[state=closed]:fade-out-0\n data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95\n data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2\n data-[side=left]:slide-in-from-right-2\n data-[side=right]:slide-in-from-left-2\n data-[side=top]:slide-in-from-bottom-2 relative\n max-h-(--radix-select-content-available-height) min-w-[8rem]\n origin-(--radix-select-content-transform-origin) overflow-x-hidden\n overflow-y-auto rounded-md border shadow-md`,\n OVERLAY_LAYER,\n position === 'popper' &&\n `data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1\n data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n `h-[var(--radix-select-trigger-height)] w-full\n min-w-[var(--radix-select-trigger-width)] scroll-my-1`,\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n `focus:bg-accent focus:text-accent-foreground\n [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full\n cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm\n outline-hidden select-none data-[disabled]:pointer-events-none\n data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\n [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex\n *:[span]:last:items-center *:[span]:last:gap-2`,\n className,\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA+BA,SAAS,OAAO,EACd,GAAG,SACiD;CACpD,OAAO,oBAAC,gBAAgB,MAAjB;EAAsB,aAAU;EAAS,GAAI;CAAQ,CAAA;AAC9D;AAEA,SAAS,YAAY,EACnB,GAAG,SACkD;CACrD,OAAO,oBAAC,gBAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,YAAY,EACnB,GAAG,SACkD;CACrD,OAAO,oBAAC,gBAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,cAAc,EACrB,WACA,OAAO,WACP,UACA,GAAG,SAGF;CACD,OACE,qBAAC,gBAAgB,SAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT;;;;;;;;;;;;gEAaA,SACF;EACA,GAAI;EAnBN,UAAA,CAqBG,UACD,oBAAC,gBAAgB,MAAjB;GAAsB,SAAA;GACpB,UAAA,oBAAC,iBAAD,EAAiB,WAAU,oBAAqB,CAAA;EAC5B,CAAA,CACC;;AAE7B;AAEA,SAAS,cAAc,EACrB,WACA,UACA,WAAW,gBACX,QAAQ,UACR,WACA,GAAG,SAGF;CACD,MAAM,EAAE,iBAAiB,UAAU;CAEnC,OACE,oBAAC,gBAAgB,QAAjB;EAAwB,WAAW,aAAa,aAAa;EAC3D,UAAA,qBAAC,gBAAgB,SAAjB;GACE,aAAU;GACV,WAAW,GACT;;;;;;;;;wDAUA,eACA,aAAa,YACX;6EAEF,SACF;GACU;GACH;GACP,GAAI;GArBN,UAAA;IAuBE,oBAAC,sBAAD,CAAuB,CAAA;IACvB,oBAAC,gBAAgB,UAAjB;KACE,WAAW,GACT,OACA,aAAa,YACX;oEAEJ;KAEC;IACuB,CAAA;IAC1B,oBAAC,wBAAD,CAAyB,CAAA;GACF;;CACH,CAAA;AAE5B;AAEA,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;CACrD,OACE,oBAAC,gBAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,6CAA6C,SAAS;EACpE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SACiD;CACpD,OACE,qBAAC,gBAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT;;;;;;yDAOA,SACF;EACA,GAAI;EAZN,UAAA,CAcE,oBAAC,QAAD;GACE,aAAU;GACV,WAAU;GAEV,UAAA,oBAAC,gBAAgB,eAAjB,EAAA,UACE,oBAAC,WAAD,EAAW,WAAU,SAAU,CAAA,EACF,CAAA;EAC3B,CAAA,GACN,oBAAC,gBAAgB,UAAjB,EAA2B,SAAmC,CAAA,CAC1C;;AAE1B;AAEA,SAAS,gBAAgB,EACvB,WACA,GAAG,SACsD;CACzD,OACE,oBAAC,gBAAgB,WAAjB;EACE,aAAU;EACV,WAAW,GAAG,iDAAiD,SAAS;EACxE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC2D;CAC9D,OACE,oBAAC,gBAAgB,gBAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,eAAD,EAAe,WAAU,SAAU,CAAA;CACL,CAAA;AAEpC;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAAC,gBAAgB,kBAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,iBAAD,EAAiB,WAAU,SAAU,CAAA;CACL,CAAA;AAEtC"}
1
+ {"version":3,"file":"select.mjs","names":["Select","SelectPrimitive"],"sources":["../../src/core/select.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { DirectionProvider } from '@base-ui/react/direction-provider';\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { OVERLAY_LAYER } from '../lib/z-layers';\n\n// Base UI primitives with repo-owned styling; no longer vendored from shadcn.\ntype SelectRootProps = SelectPrimitive.Root.Props<string> & {\n /** Explicit reading direction, retained from the previous Radix API. */\n dir?: 'ltr' | 'rtl';\n};\n\nfunction Select({ dir, ...props }: SelectRootProps) {\n const root = <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n\n return dir ? (\n <DirectionProvider direction={dir}>{root}</DirectionProvider>\n ) : (\n root\n );\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n `border-input data-placeholder:text-muted-foreground\n [&_svg:not([class*='text-'])]:text-muted-foreground\n focus-visible:border-ring focus-visible:ring-ring/50\n aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\n aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50\n flex w-fit items-center justify-between gap-2 rounded-md border\n bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs\n transition-[color,box-shadow] outline-none focus-visible:ring-[3px]\n data-disabled:cursor-not-allowed data-disabled:opacity-50\n data-[size=default]:h-9 data-[size=sm]:h-8\n *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex\n *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2\n [&_svg]:pointer-events-none [&_svg]:shrink-0\n [&_svg:not([class*='size-'])]:size-4`,\n className,\n //\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={<ChevronDownIcon />}\n className=\"opacity-50\"\n />\n </SelectPrimitive.Trigger>\n );\n}\n\ntype SelectContentProps = Omit<\n React.ComponentProps<typeof SelectPrimitive.Popup>,\n 'className'\n> & {\n className?: string;\n position?: 'item-aligned' | 'popper';\n align?: SelectPrimitive.Positioner.Props['align'];\n side?: SelectPrimitive.Positioner.Props['side'];\n sideOffset?: number;\n container?: HTMLElement;\n};\n\nfunction SelectContent({\n className,\n children,\n position = 'item-aligned',\n align = 'center',\n side = 'bottom',\n sideOffset = 4,\n container,\n ...props\n}: SelectContentProps) {\n const { getContainer } = useConfig();\n const alignItemWithTrigger = position === 'item-aligned';\n\n return (\n <SelectPrimitive.Portal container={container ?? getContainer()}>\n <SelectPrimitive.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className={cn(\n OVERLAY_LAYER,\n !alignItemWithTrigger && 'min-w-(--anchor-width)',\n )}\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\n `bg-popover text-popover-foreground max-h-(--available-height)\n min-w-[8rem] origin-(--transform-origin) overflow-hidden rounded-md\n border shadow-md transition-[opacity,transform] duration-150\n data-ending-style:scale-95 data-ending-style:opacity-0\n data-starting-style:scale-95 data-starting-style:opacity-0`,\n className,\n //\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List className=\"overflow-y-auto p-1\">\n {children}\n </SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.GroupLabel>) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n `data-highlighted:bg-accent data-highlighted:text-accent-foreground\n [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full\n cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm\n outline-hidden select-none data-disabled:pointer-events-none\n data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\n [&_svg:not([class*='size-'])]:size-4`,\n className,\n //\n )}\n {...props}\n >\n <SelectPrimitive.ItemIndicator\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBA,SAASA,SAAO,EAAE,KAAK,GAAG,SAA0B;CAClD,MAAM,OAAO,oBAACC,OAAgB,MAAjB;EAAsB,aAAU;EAAS,GAAI;CAAQ,CAAA;CAElE,OAAO,MACL,oBAAC,mBAAD;EAAmB,WAAW;EAAM,UAAA;CAAwB,CAAA,IAE5D;AAEJ;AAEA,SAAS,YAAY,EACnB,GAAG,SACkD;CACrD,OAAO,oBAACA,OAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,YAAY,EACnB,GAAG,SACkD;CACrD,OAAO,oBAACA,OAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,cAAc,EACrB,WACA,OAAO,WACP,UACA,GAAG,SAGF;CACD,OACE,qBAACA,OAAgB,SAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT;;;;;;;;;;;;;+CAcA,SAEF;EACA,GAAI;EArBN,UAAA,CAuBG,UACD,oBAACA,OAAgB,MAAjB;GACE,QAAQ,oBAAC,iBAAD,CAAkB,CAAA;GAC1B,WAAU;EACX,CAAA,CACsB;;AAE7B;AAcA,SAAS,cAAc,EACrB,WACA,UACA,WAAW,gBACX,QAAQ,UACR,OAAO,UACP,aAAa,GACb,WACA,GAAG,SACkB;CACrB,MAAM,EAAE,iBAAiB,UAAU;CACnC,MAAM,uBAAuB,aAAa;CAE1C,OACE,oBAACA,OAAgB,QAAjB;EAAwB,WAAW,aAAa,aAAa;EAC3D,UAAA,oBAACA,OAAgB,YAAjB;GACQ;GACC;GACK;GACU;GACtB,WAAW,GACT,eACA,CAAC,wBAAwB,wBAC3B;GAEA,UAAA,qBAACA,OAAgB,OAAjB;IACE,aAAU;IACV,WAAW,GACT;;;;yEAKA,SAEF;IACA,GAAI;IAXN,UAAA;KAaE,oBAAC,sBAAD,CAAuB,CAAA;KACvB,oBAACA,OAAgB,MAAjB;MAAsB,WAAU;MAC7B;KACmB,CAAA;KACtB,oBAAC,wBAAD,CAAyB,CAAA;IACJ;;EACG,CAAA;CACN,CAAA;AAE5B;AAEA,SAAS,YAAY,EACnB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,OAAgB,YAAjB;EACE,aAAU;EACV,WAAW,GAAG,6CAA6C,SAAS;EACpE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SACiD;CACpD,OACE,qBAACA,OAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT;;;;;+CAMA,SAEF;EACA,GAAI;EAZN,UAAA,CAcE,oBAACA,OAAgB,eAAjB;GACE,aAAU;GACV,WAAU;GAEV,UAAA,oBAAC,WAAD,EAAW,WAAU,SAAU,CAAA;EACF,CAAA,GAC/B,oBAACA,OAAgB,UAAjB,EAA2B,SAAmC,CAAA,CAC1C;;AAE1B;AAEA,SAAS,gBAAgB,EACvB,WACA,GAAG,SACsD;CACzD,OACE,oBAACA,OAAgB,WAAjB;EACE,aAAU;EACV,WAAW,GAAG,iDAAiD,SAAS;EACxE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC0D;CAC7D,OACE,oBAACA,OAAgB,eAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,eAAD,EAAe,WAAU,SAAU,CAAA;CACN,CAAA;AAEnC;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC4D;CAC/D,OACE,oBAACA,OAAgB,iBAAjB;EACE,aAAU;EACV,WAAW,GACT,wDACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,iBAAD,EAAiB,WAAU,SAAU,CAAA;CACN,CAAA;AAErC"}
@@ -1,2 +1,2 @@
1
1
  import "react";
2
- import "@radix-ui/react-separator";
2
+ import { Separator } from "@base-ui/react/separator";
@@ -2,13 +2,14 @@
2
2
  import { cn } from "../utils.mjs";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
5
+ import { Separator } from "@base-ui/react/separator";
6
6
  //#region src/core/separator.tsx
7
- function Separator({ className, orientation = "horizontal", decorative = true, ...props }) {
8
- return /* @__PURE__ */ jsx(SeparatorPrimitive.Root, {
7
+ function Separator$1({ className, orientation = "horizontal", decorative = true, ...props }) {
8
+ return /* @__PURE__ */ jsx(Separator, {
9
9
  "data-slot": "separator",
10
- decorative,
11
10
  orientation,
11
+ role: decorative ? "none" : "separator",
12
+ "aria-orientation": decorative ? void 0 : orientation,
12
13
  className: cn(`bg-border shrink-0 data-[orientation=horizontal]:h-px
13
14
  data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full
14
15
  data-[orientation=vertical]:w-px`, className),
@@ -16,6 +17,6 @@ function Separator({ className, orientation = "horizontal", decorative = true, .
16
17
  });
17
18
  }
18
19
  //#endregion
19
- export { Separator };
20
+ export { Separator$1 as Separator };
20
21
 
21
22
  //# sourceMappingURL=separator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator.mjs","names":[],"sources":["../../src/core/separator.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@repo/ui/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n `bg-border shrink-0 data-[orientation=horizontal]:h-px\n data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\n data-[orientation=vertical]:w-px`,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":";;;;;;AAQA,SAAS,UAAU,EACjB,WACA,cAAc,cACd,aAAa,MACb,GAAG,SACoD;CACvD,OACE,oBAAC,mBAAmB,MAApB;EACE,aAAU;EACE;EACC;EACb,WAAW,GACT;;2CAGA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"separator.mjs","names":["Separator","SeparatorPrimitive"],"sources":["../../src/core/separator.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\n\nimport { cn } from '@repo/ui/utils';\n\ninterface Props extends Omit<\n React.ComponentProps<typeof SeparatorPrimitive>,\n 'className'\n> {\n className?: string;\n decorative?: boolean;\n}\n\n// Base UI primitive with repo-owned styling; no longer vendored from shadcn.\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n role={decorative ? 'none' : 'separator'}\n aria-orientation={decorative ? undefined : orientation}\n className={cn(\n `bg-border shrink-0 data-[orientation=horizontal]:h-px\n data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\n data-[orientation=vertical]:w-px`,\n className,\n //\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":";;;;;;AAiBA,SAASA,YAAU,EACjB,WACA,cAAc,cACd,aAAa,MACb,GAAG,SACK;CACR,OACE,oBAACC,WAAD;EACE,aAAU;EACG;EACb,MAAM,aAAa,SAAS;EAC5B,oBAAkB,aAAa,KAAA,IAAY;EAC3C,WAAW,GACT;;2CAGA,SAEF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -1,2 +1,2 @@
1
1
  import "react";
2
- import "@radix-ui/react-slider";
2
+ import { Slider } from "@base-ui/react/slider";