@blenx-dev/core 0.1.0 → 0.2.3

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 (58) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/iconify.config.ts +23 -0
  3. package/package.json +17 -7
  4. package/scripts/generate-icons.ts +82 -0
  5. package/src/components/Accordion/accordion.tsx +2 -2
  6. package/src/components/Autocomplete/autocomplete.tsx +2 -2
  7. package/src/components/Breadcrumbs/breadcrumbs.tsx +3 -3
  8. package/src/components/Checkbox/checkbox.tsx +2 -15
  9. package/src/components/CloseButton/close-button.tsx +2 -5
  10. package/src/components/Combobox/combobox.tsx +5 -5
  11. package/src/components/Command/command.tsx +2 -2
  12. package/src/components/CopyButton/copy-button.tsx +3 -11
  13. package/src/components/Drawer/drawer.tsx +3 -29
  14. package/src/components/Icon/icon.tsx +3 -3
  15. package/src/components/Popover/popover.tsx +24 -14
  16. package/src/components/Select/select.tsx +5 -5
  17. package/src/components/Spinner/spinner.tsx +3 -5
  18. package/src/components/Stack/stack.tsx +5 -15
  19. package/src/components/Text/text.tsx +1 -1
  20. package/src/components/index.ts +0 -3
  21. package/src/icons/ArrowRightIcon.tsx +20 -0
  22. package/src/icons/CalendarIcon.tsx +20 -0
  23. package/src/icons/CheckIcon.tsx +20 -0
  24. package/src/icons/ChevronDownIcon.tsx +20 -0
  25. package/src/icons/ChevronLeftIcon.tsx +20 -0
  26. package/src/icons/ChevronRightIcon.tsx +20 -0
  27. package/src/icons/ChevronUpIcon.tsx +20 -0
  28. package/src/icons/CircleAlertIcon.tsx +20 -0
  29. package/src/icons/CopyIcon.tsx +20 -0
  30. package/src/icons/EllipsisIcon.tsx +20 -0
  31. package/src/icons/FolderOpenIcon.tsx +20 -0
  32. package/src/icons/ListIcon.tsx +20 -0
  33. package/src/icons/LoaderCircleIcon.tsx +20 -0
  34. package/src/icons/SearchIcon.tsx +20 -0
  35. package/src/icons/SquareCheckIcon.tsx +20 -0
  36. package/src/icons/XIcon.tsx +20 -0
  37. package/src/icons/index.ts +17 -0
  38. package/src/utils/sprinkles.css.ts +18 -4
  39. package/src/DataTable/data-table-column-toggle.tsx +0 -73
  40. package/src/DataTable/data-table-empty.tsx +0 -27
  41. package/src/DataTable/data-table-error.tsx +0 -25
  42. package/src/DataTable/data-table-infinite-loader.tsx +0 -73
  43. package/src/DataTable/data-table-loading.tsx +0 -67
  44. package/src/DataTable/data-table-pagination.tsx +0 -80
  45. package/src/DataTable/data-table-toolbar.tsx +0 -62
  46. package/src/DataTable/data-table.css.ts +0 -420
  47. package/src/DataTable/data-table.tsx +0 -507
  48. package/src/DataTable/index.ts +0 -24
  49. package/src/DataTable/types.ts +0 -169
  50. package/src/DataTable/use-infinite-scroll.ts +0 -67
  51. package/src/components/Calendar/calendar.css.ts +0 -187
  52. package/src/components/Calendar/calendar.tsx +0 -143
  53. package/src/components/Calendar/index.ts +0 -1
  54. package/src/components/ColorPicker/color-picker.tsx +0 -123
  55. package/src/components/ColorPicker/index.ts +0 -1
  56. package/src/components/DatePicker/date-picker.tsx +0 -75
  57. package/src/components/DatePicker/index.ts +0 -1
  58. package/src/components/Stack/stack.css.ts +0 -42
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @blenx-dev/core
2
2
 
3
+ ## 0.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 0439e3e: Use Icon generator and simplify components
8
+ - Updated dependencies [0439e3e]
9
+ - @blenx-dev/theme@0.2.3
10
+
3
11
  ## 1.0.0
4
12
 
5
13
  ### Minor Changes
@@ -0,0 +1,23 @@
1
+ // packages/core/iconify.config.ts
2
+
3
+ export default {
4
+ collection: "lucide",
5
+ icons: [
6
+ "chevron-left",
7
+ "chevron-right",
8
+ "chevron-up",
9
+ "chevron-down",
10
+ "calendar",
11
+ "square-check",
12
+ "search",
13
+ "check",
14
+ "x",
15
+ "folder-open",
16
+ "loader-circle",
17
+ "circle-alert",
18
+ "copy",
19
+ "list",
20
+ "ellipsis",
21
+ "arrow-right",
22
+ ],
23
+ };
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@blenx-dev/core",
3
- "version": "0.1.0",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
7
7
  ".": "./src/index.ts",
8
+ "./icons": {
9
+ "types": "./src/icons/index.ts",
10
+ "default": "./src/icons/index.ts"
11
+ },
8
12
  "./*": "./src/components/*/index.ts",
9
13
  "./components": {
10
14
  "types": "./src/components/index.ts",
@@ -25,25 +29,31 @@
25
29
  "dependencies": {
26
30
  "@base-ui/react": "^1.0.0",
27
31
  "@phosphor-icons/react": "^2.1.10",
28
- "@tanstack/react-table": "^8.21.3",
29
32
  "@vanilla-extract/css": "^1.20.1",
30
33
  "@vanilla-extract/recipes": "^0.5.7",
31
34
  "@vanilla-extract/sprinkles": "^1.6.5",
32
35
  "clsx": "^2.1.1",
33
- "react-colorful": "^5.7.0",
34
- "react-day-picker": "^10.0.1",
35
36
  "sonner": "^2.0.5",
36
37
  "tailwind-merge": "^3.3.1",
37
- "@blenx-dev/theme": "1.0.0"
38
+ "@blenx-dev/theme": "0.2.3"
38
39
  },
39
40
  "devDependencies": {
41
+ "@iconify/json": "^2.2.493",
42
+ "@iconify/tools": "^5.0.12",
43
+ "@iconify/types": "^2.0.0",
44
+ "@iconify/utils": "^3.1.3",
40
45
  "@types/react": "^19.2.15",
41
46
  "@types/react-dom": "^19.2.3",
42
- "changeset": "^0.2.6"
47
+ "changeset": "^0.2.6",
48
+ "prettier": "^3.9.3",
49
+ "tsx": "^4.22.4"
43
50
  },
44
51
  "peerDependencies": {
45
52
  "react": "^19.2.6",
46
53
  "react-dom": "^19.2.6",
47
- "@blenx-dev/theme": "1.0.0"
54
+ "@blenx-dev/theme": "0.2.3"
55
+ },
56
+ "scripts": {
57
+ "gen:icons": "tsx scripts/generate-icons.ts"
48
58
  }
49
59
  }
@@ -0,0 +1,82 @@
1
+ // scripts/generate-icons.ts
2
+
3
+ import { promises as fs } from "node:fs";
4
+ import path from "node:path";
5
+
6
+ import config from "../iconify.config";
7
+ type IconCollection = {
8
+ prefix: string;
9
+ icons: Record<
10
+ string,
11
+ {
12
+ body: string;
13
+ width?: number;
14
+ height?: number;
15
+ }
16
+ >;
17
+ };
18
+
19
+ function pascalCase(name: string) {
20
+ return name
21
+ .split(/[-_]/g)
22
+ .map((x) => x.charAt(0).toUpperCase() + x.slice(1))
23
+ .join("");
24
+ }
25
+
26
+ async function main() {
27
+ const collection = (
28
+ await import(`@iconify/json/json/${config.collection}.json`, {
29
+ with: { type: "json" },
30
+ } as never)
31
+ ).default as IconCollection;
32
+
33
+ const outDir = path.resolve("src/icons");
34
+
35
+ await fs.rm(outDir, { recursive: true, force: true });
36
+ await fs.mkdir(outDir, { recursive: true });
37
+
38
+ const exports: string[] = ["export interface IconProps extends React.SVGProps<SVGSVGElement> {}"];
39
+ const writePromises = [];
40
+ for (const iconName of config.icons) {
41
+ const icon = collection.icons[iconName];
42
+
43
+ if (!icon) {
44
+ throw new Error(`Missing icon "${iconName}"`);
45
+ }
46
+
47
+ const component = `${pascalCase(iconName)}Icon`;
48
+
49
+ const width = icon.width ?? 24;
50
+ const height = icon.height ?? 24;
51
+
52
+ const source = `import * as React from "react";
53
+
54
+ interface IconProps extends React.SVGProps<SVGSVGElement> {}
55
+
56
+ export const ${component} = React.forwardRef<SVGSVGElement, IconProps>(
57
+ (props, ref) => (
58
+ <svg
59
+ ref={ref}
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ viewBox="0 0 ${width} ${height}"
62
+ fill="none"
63
+ stroke="currentColor"
64
+ dangerouslySetInnerHTML={{ __html: ${JSON.stringify(icon.body)} }}
65
+ {...props}
66
+ />
67
+ )
68
+ );
69
+
70
+ ${component}.displayName = "${component}";
71
+ `;
72
+ writePromises.push(fs.writeFile(path.join(outDir, `${component}.tsx`), source, "utf8"));
73
+
74
+ exports.push(`export * from "./${component}";`);
75
+ }
76
+ await Promise.all(writePromises);
77
+ await fs.writeFile(path.join(outDir, "index.ts"), exports.join("\n"), "utf8");
78
+
79
+ console.log(`Generated ${exports.length} icons`);
80
+ }
81
+
82
+ main();
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
 
3
3
  import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
4
- import { CaretDownIcon } from "@phosphor-icons/react";
5
4
  import clsx from "clsx";
6
5
  import {
7
6
  root,
@@ -12,6 +11,7 @@ import {
12
11
  triggerIcon,
13
12
  panel,
14
13
  } from "./accordion.css";
14
+ import { ChevronDownIcon } from "../../icons";
15
15
 
16
16
  type AccordionRootProps = AccordionPrimitive.Root.Props;
17
17
 
@@ -54,7 +54,7 @@ type AccordionTriggerProps = AccordionPrimitive.Trigger.Props;
54
54
  function AccordionTrigger({ children, className, ...props }: AccordionTriggerProps) {
55
55
  return (
56
56
  <AccordionPrimitive.Trigger className={clsx(trigger, className)} {...props}>
57
- <CaretDownIcon size={16} className={triggerIcon} />
57
+ <ChevronDownIcon width={16} className={triggerIcon} />
58
58
  {children}
59
59
  </AccordionPrimitive.Trigger>
60
60
  );
@@ -1,5 +1,4 @@
1
1
  import { Autocomplete as AutocompletePrimitive } from "@base-ui/react/autocomplete";
2
- import { CaretUpDownIcon } from "@phosphor-icons/react";
3
2
  import clsx from "clsx";
4
3
  import type React from "react";
5
4
  import { Input } from "../Input/input";
@@ -29,6 +28,7 @@ import {
29
28
  item,
30
29
  } from "./autocomplete.css";
31
30
  import { CloseButton } from "../CloseButton";
31
+ import { ChevronUpIcon } from "../../icons";
32
32
 
33
33
  const Autocomplete: typeof AutocompletePrimitive.Root = AutocompletePrimitive.Root;
34
34
 
@@ -106,7 +106,7 @@ function AutocompleteInput({
106
106
  data-slot="autocomplete-trigger"
107
107
  {...triggerProps}
108
108
  >
109
- <CaretUpDownIcon size={resolvedSize === "sm" ? 16 : 18} weight="regular" />
109
+ <ChevronUpIcon width={resolvedSize === "sm" ? 16 : 18} />
110
110
  </AutocompletePrimitive.Trigger>
111
111
  )}
112
112
  {showClear && (
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import { mergeProps, useRender } from "@base-ui/react";
4
- import { CaretRightIcon, DotsThreeIcon } from "@phosphor-icons/react";
5
4
  import clsx from "clsx";
6
5
  import type { ComponentPropsWithoutRef } from "react";
7
6
  import { root, list, item, link, page, separator, ellipsis, srOnly } from "./breadcrumbs.css";
7
+ import { ChevronRightIcon, EllipsisIcon } from "../../icons";
8
8
 
9
9
  type NavProps = useRender.ComponentProps<"nav"> & {
10
10
  className?: string;
@@ -64,7 +64,7 @@ export function BreadcrumbSeparator({ children, className, style, ...props }: Li
64
64
  style={style}
65
65
  {...props}
66
66
  >
67
- {children ?? <CaretRightIcon size={16} />}
67
+ {children ?? <ChevronRightIcon width={16} />}
68
68
  </li>
69
69
  );
70
70
  }
@@ -72,7 +72,7 @@ export function BreadcrumbSeparator({ children, className, style, ...props }: Li
72
72
  export function BreadcrumbEllipsis({ className, style, ...props }: SpanProps) {
73
73
  return (
74
74
  <span role="presentation" className={clsx(ellipsis, className)} style={style} {...props}>
75
- <DotsThreeIcon size={16} />
75
+ <EllipsisIcon width={16} />
76
76
  <span className={srOnly}>More</span>
77
77
  </span>
78
78
  );
@@ -12,6 +12,7 @@ import {
12
12
  indicatorIndeterminate,
13
13
  icon,
14
14
  } from "./checkbox.css";
15
+ import { SquareCheckIcon } from "../../icons";
15
16
 
16
17
  type CheckboxGroupProps = CheckboxGroupPrimitive.Props & {
17
18
  className?: string;
@@ -66,21 +67,7 @@ function Checkbox({ className, style, ...props }: CheckboxProps) {
66
67
  <path d="M5.252 12h13.496" />
67
68
  </svg>
68
69
  ) : (
69
- <svg
70
- aria-hidden="true"
71
- className={icon}
72
- fill="none"
73
- height="24"
74
- stroke="currentColor"
75
- strokeLinecap="round"
76
- strokeLinejoin="round"
77
- strokeWidth="3"
78
- viewBox="0 0 24 24"
79
- width="24"
80
- xmlns="http://www.w3.org/2000/svg"
81
- >
82
- <path d="M5.252 12.7 10.2 18.63 18.748 5.37" />
83
- </svg>
70
+ <SquareCheckIcon width={24} />
84
71
  )}
85
72
  </span>
86
73
  )}
@@ -1,15 +1,12 @@
1
+ import { XIcon } from "../../icons";
1
2
  import { IconButton, type IconButtonProps } from "../IconButton/icon-button";
2
- import { icon } from "./close-button.css";
3
3
 
4
4
  export type { IconButtonProps as CloseButtonProps };
5
5
 
6
6
  export function CloseButton(props: IconButtonProps) {
7
7
  return (
8
8
  <IconButton {...props}>
9
- <svg className={icon} viewBox="0 0 24 24" aria-hidden="true">
10
- <line x1="18" y1="6" x2="6" y2="18" />
11
- <line x1="6" y1="6" x2="18" y2="18" />
12
- </svg>
9
+ <XIcon width={18} />
13
10
  </IconButton>
14
11
  );
15
12
  }
@@ -1,5 +1,4 @@
1
1
  import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
2
- import { CaretUpDownIcon, CheckIcon, XIcon } from "@phosphor-icons/react";
3
2
  import clsx from "clsx";
4
3
  import * as React from "react";
5
4
  import { Input } from "../Input/input";
@@ -37,6 +36,7 @@ import {
37
36
  chipRemove,
38
37
  } from "./combobox.css";
39
38
  import { CloseButton } from "../CloseButton";
39
+ import { CheckIcon, ChevronDownIcon, XIcon } from "../../icons";
40
40
 
41
41
  type InputSize = "sm" | "default" | "lg" | number;
42
42
 
@@ -105,7 +105,7 @@ export function ComboboxClear({
105
105
  data-slot="combobox-clear"
106
106
  {...props}
107
107
  >
108
- {children ?? <XIcon size={18} weight="regular" />}
108
+ {children ?? <XIcon width={18} />}
109
109
  </ComboboxPrimitive.Clear>
110
110
  );
111
111
  }
@@ -163,7 +163,7 @@ export function ComboboxInput({
163
163
  data-slot="combobox-trigger"
164
164
  {...triggerProps}
165
165
  >
166
- <CaretUpDownIcon size={resolvedSize === "sm" ? 16 : 18} weight="regular" />
166
+ <ChevronDownIcon width={resolvedSize === "sm" ? 16 : 18} />
167
167
  </ComboboxPrimitive.Trigger>
168
168
  )}
169
169
  {showClear && (
@@ -231,7 +231,7 @@ export function ComboboxItem({
231
231
  return (
232
232
  <ComboboxPrimitive.Item className={clsx(item, className)} data-slot="combobox-item" {...props}>
233
233
  <ComboboxPrimitive.ItemIndicator className={itemIndicator}>
234
- <CheckIcon size={16} weight="bold" />
234
+ <CheckIcon width={16} />
235
235
  </ComboboxPrimitive.ItemIndicator>
236
236
  <div className={itemContent}>{children}</div>
237
237
  </ComboboxPrimitive.Item>
@@ -340,7 +340,7 @@ function ComboboxChipRemove({
340
340
  data-slot="combobox-chip-remove"
341
341
  {...props}
342
342
  >
343
- <XIcon size={16} weight="regular" />
343
+ <XIcon width={16} />
344
344
  </ComboboxPrimitive.ChipRemove>
345
345
  );
346
346
  }
@@ -14,7 +14,6 @@ import {
14
14
  useRef,
15
15
  } from "react";
16
16
  import clsx from "clsx";
17
- import { MagnifyingGlass } from "@phosphor-icons/react";
18
17
  import {
19
18
  root,
20
19
  inputWrapper,
@@ -29,6 +28,7 @@ import {
29
28
  itemDisabled,
30
29
  separator,
31
30
  } from "./command.css";
31
+ import { SearchIcon } from "../../icons";
32
32
 
33
33
  interface CommandItemData {
34
34
  id: string;
@@ -182,7 +182,7 @@ export function CommandInput({
182
182
  return (
183
183
  <div className={clsx(inputWrapper, className)} style={style}>
184
184
  <span className={inputIcon}>
185
- <MagnifyingGlass size={16} weight="regular" />
185
+ <SearchIcon width={16} />
186
186
  </span>
187
187
  <input
188
188
  className={inputStyle}
@@ -1,6 +1,6 @@
1
1
  import { useState, useCallback, type MouseEvent } from "react";
2
2
  import { IconButton, type IconButtonProps } from "../IconButton/icon-button";
3
- import { icon } from "./copy-button.css";
3
+ import { CheckIcon, CopyIcon } from "../../icons";
4
4
 
5
5
  export type CopyButtonProps = Omit<IconButtonProps, "onClick"> & {
6
6
  copyValue?: string;
@@ -26,20 +26,12 @@ export function CopyButton({ copyValue, onClick, ...props }: CopyButtonProps) {
26
26
  return (
27
27
  <IconButton
28
28
  variant="soft"
29
+ color={copied ? "success" : "secondary"}
29
30
  {...props}
30
31
  title={copied ? "Copied!" : `Copy ${copyValue ?? ""}`}
31
32
  onClick={handleClick}
32
33
  >
33
- {copied ? (
34
- <svg className={icon} viewBox="0 0 24 24" aria-hidden="true">
35
- <polyline points="20 6 9 17 4 12" />
36
- </svg>
37
- ) : (
38
- <svg className={icon} viewBox="0 0 24 24" aria-hidden="true">
39
- <rect x="9" y="9" width="13" height="13" rx="2" ry="2" />
40
- <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
41
- </svg>
42
- )}
34
+ {copied ? <CheckIcon width={16} /> : <CopyIcon width={16} />}
43
35
  </IconButton>
44
36
  );
45
37
  }
@@ -5,7 +5,6 @@ import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
5
5
  import { Radio as RadioPrimitive } from "@base-ui/react/radio";
6
6
  import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
7
7
  import { useRender } from "@base-ui/react/use-render";
8
- import { ArrowRightIcon } from "@phosphor-icons/react";
9
8
  import clsx from "clsx";
10
9
  import type React from "react";
11
10
  import { createContext, useContext, useMemo } from "react";
@@ -68,6 +67,7 @@ import {
68
67
  import { CloseButton } from "../CloseButton";
69
68
  import type { _BaseDivProps } from "../../utils/types";
70
69
  import { Box } from "../Box";
70
+ import { ArrowRightIcon, SquareCheckIcon } from "../../icons";
71
71
 
72
72
  type DrawerPosition = "right" | "left" | "top" | "bottom";
73
73
 
@@ -494,20 +494,7 @@ export function DrawerMenuCheckboxItem({
494
494
  ) : (
495
495
  <>
496
496
  <CheckboxPrimitive.Indicator className={menuCheckboxIndicator}>
497
- <svg
498
- fill="none"
499
- height="24"
500
- stroke="currentColor"
501
- strokeLinecap="round"
502
- strokeLinejoin="round"
503
- strokeWidth="2"
504
- viewBox="0 0 24 24"
505
- width="24"
506
- xmlns="http://www.w3.org/2000/svg"
507
- >
508
- <title>fd</title>
509
- <path d="M5.252 12.7 10.2 18.63 18.748 5.37" />
510
- </svg>
497
+ <SquareCheckIcon width={16} />
511
498
  </CheckboxPrimitive.Indicator>
512
499
  <span className={menuCheckboxLabel}>{children}</span>
513
500
  </>
@@ -550,20 +537,7 @@ function DrawerMenuRadioItem({
550
537
  {...props}
551
538
  >
552
539
  <RadioPrimitive.Indicator className={menuRadioIndicator}>
553
- <svg
554
- fill="none"
555
- height="24"
556
- stroke="currentColor"
557
- strokeLinecap="round"
558
- strokeLinejoin="round"
559
- strokeWidth="2"
560
- viewBox="0 0 24 24"
561
- width="24"
562
- xmlns="http://www.w3.org/2000/svg"
563
- >
564
- <title>fd</title>
565
- <path d="M5.252 12.7 10.2 18.63 18.748 5.37" />
566
- </svg>
540
+ <SquareCheckIcon width={16} />
567
541
  </RadioPrimitive.Indicator>
568
542
  <span className={menuRadioLabel}>{children}</span>
569
543
  </RadioPrimitive.Root>
@@ -2,11 +2,11 @@ import clsx from "clsx";
2
2
  import { iconWrapper } from "./icon.css";
3
3
  import { Box, type BoxProps } from "../Box/box";
4
4
 
5
- type IconProps = BoxProps;
5
+ type IconProps = Omit<BoxProps, "fontSize"> & { size?: BoxProps["fontSize"] };
6
6
 
7
- export function Icon({ children, className, style, ...props }: IconProps) {
7
+ export function Icon({ children, className, style, size, ...props }: IconProps) {
8
8
  return (
9
- <Box className={clsx(iconWrapper, className)} style={style} {...props}>
9
+ <Box className={clsx(iconWrapper, className)} fontSize={size} style={style} {...props}>
10
10
  {children}
11
11
  </Box>
12
12
  );
@@ -5,26 +5,25 @@ import clsx from "clsx";
5
5
  import type React from "react";
6
6
  import { backdrop, positioner, popup, arrow, arrowFill, title, description } from "./popover.css";
7
7
 
8
- export const PopoverCreateHandle: typeof PopoverPrimitive.createHandle =
9
- PopoverPrimitive.createHandle;
8
+ const PopoverCreateHandle: typeof PopoverPrimitive.createHandle = PopoverPrimitive.createHandle;
10
9
 
11
- export function Popover(props: PopoverPrimitive.Root.Props): React.ReactElement {
10
+ function Popover(props: PopoverPrimitive.Root.Props): React.ReactElement {
12
11
  return <PopoverPrimitive.Root {...props} />;
13
12
  }
14
13
 
15
- export function PopoverTrigger(props: PopoverPrimitive.Trigger.Props): React.ReactElement {
14
+ function PopoverTrigger(props: PopoverPrimitive.Trigger.Props): React.ReactElement {
16
15
  return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />;
17
16
  }
18
17
 
19
- export function PopoverClose(props: PopoverPrimitive.Close.Props): React.ReactElement {
18
+ function PopoverClose(props: PopoverPrimitive.Close.Props): React.ReactElement {
20
19
  return <PopoverPrimitive.Close data-slot="popover-close" {...props} />;
21
20
  }
22
21
 
23
- export function PopoverPortal(props: PopoverPrimitive.Portal.Props): React.ReactElement {
22
+ function PopoverPortal(props: PopoverPrimitive.Portal.Props): React.ReactElement {
24
23
  return <PopoverPrimitive.Portal {...props} />;
25
24
  }
26
25
 
27
- export function PopoverPositioner({
26
+ function PopoverPositioner({
28
27
  sideOffset = 4,
29
28
  side = "bottom",
30
29
  align = "center",
@@ -48,7 +47,7 @@ export function PopoverPositioner({
48
47
  );
49
48
  }
50
49
 
51
- export function PopoverPopup({
50
+ function PopoverPopup({
52
51
  className,
53
52
  style,
54
53
  ...props
@@ -70,7 +69,7 @@ export function PopoverPopup({
70
69
  );
71
70
  }
72
71
 
73
- export function PopoverArrow(props: PopoverPrimitive.Arrow.Props): React.ReactElement {
72
+ function PopoverArrow(props: PopoverPrimitive.Arrow.Props): React.ReactElement {
74
73
  return (
75
74
  <PopoverPrimitive.Arrow className={arrow} data-slot="popover-arrow" {...props}>
76
75
  <div className={arrowFill} />
@@ -78,15 +77,15 @@ export function PopoverArrow(props: PopoverPrimitive.Arrow.Props): React.ReactEl
78
77
  );
79
78
  }
80
79
 
81
- export function PopoverBackdrop(props: PopoverPrimitive.Backdrop.Props): React.ReactElement {
80
+ function PopoverBackdrop(props: PopoverPrimitive.Backdrop.Props): React.ReactElement {
82
81
  return <PopoverPrimitive.Backdrop className={backdrop} data-slot="popover-backdrop" {...props} />;
83
82
  }
84
83
 
85
- export function PopoverTitle(props: PopoverPrimitive.Title.Props): React.ReactElement {
84
+ function PopoverTitle(props: PopoverPrimitive.Title.Props): React.ReactElement {
86
85
  return <PopoverPrimitive.Title className={title} data-slot="popover-title" {...props} />;
87
86
  }
88
87
 
89
- export function PopoverDescription(props: PopoverPrimitive.Description.Props): React.ReactElement {
88
+ function PopoverDescription(props: PopoverPrimitive.Description.Props): React.ReactElement {
90
89
  return (
91
90
  <PopoverPrimitive.Description
92
91
  className={description}
@@ -96,8 +95,6 @@ export function PopoverDescription(props: PopoverPrimitive.Description.Props): R
96
95
  );
97
96
  }
98
97
 
99
- export const PopoverRoot = Popover;
100
-
101
98
  export const PopoverCompound = {
102
99
  Root: Popover,
103
100
  Trigger: PopoverTrigger,
@@ -111,3 +108,16 @@ export const PopoverCompound = {
111
108
  Description: PopoverDescription,
112
109
  createHandle: PopoverCreateHandle,
113
110
  };
111
+ export {
112
+ Popover,
113
+ PopoverTrigger,
114
+ PopoverClose,
115
+ PopoverPortal,
116
+ PopoverPositioner,
117
+ PopoverPopup,
118
+ PopoverArrow,
119
+ PopoverBackdrop,
120
+ PopoverTitle,
121
+ PopoverDescription,
122
+ PopoverCreateHandle,
123
+ };
@@ -1,5 +1,4 @@
1
1
  import { Select as SelectPrimitive } from "@base-ui/react/select";
2
- import { CaretDownIcon, CaretUpIcon, CheckIcon } from "@phosphor-icons/react";
3
2
  import clsx from "clsx";
4
3
  import type * as React from "react";
5
4
  import { Field, FieldError, FieldLabel } from "../Field/field";
@@ -16,6 +15,7 @@ import {
16
15
  triggerLg,
17
16
  triggerSm,
18
17
  } from "./select.css";
18
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "../../icons";
19
19
 
20
20
  type SelectSize = "sm" | "default" | "lg";
21
21
 
@@ -62,7 +62,7 @@ export function SelectValue({ placeholder, ...props }: SelectPrimitive.Value.Pro
62
62
  export function SelectIcon(props: SelectPrimitive.Icon.Props) {
63
63
  return (
64
64
  <SelectPrimitive.Icon className={iconStyle} {...props}>
65
- <CaretDownIcon size={16} />
65
+ <ChevronDownIcon width={16} />
66
66
  </SelectPrimitive.Icon>
67
67
  );
68
68
  }
@@ -90,7 +90,7 @@ export function SelectItem({
90
90
  return (
91
91
  <SelectPrimitive.Item className={itemStyle} {...props}>
92
92
  <SelectPrimitive.ItemIndicator className={itemIndicator}>
93
- <CheckIcon size={14} weight="bold" />
93
+ <CheckIcon width={14} />
94
94
  </SelectPrimitive.ItemIndicator>
95
95
  <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
96
96
  </SelectPrimitive.Item>
@@ -112,7 +112,7 @@ export function SelectGroupLabel(props: SelectPrimitive.GroupLabel.Props) {
112
112
  export function SelectScrollUpArrow(props: SelectPrimitive.ScrollUpArrow.Props) {
113
113
  return (
114
114
  <SelectPrimitive.ScrollUpArrow className={scrollArrow} {...props}>
115
- <CaretUpIcon size={12} />
115
+ <ChevronUpIcon width={12} />
116
116
  </SelectPrimitive.ScrollUpArrow>
117
117
  );
118
118
  }
@@ -120,7 +120,7 @@ export function SelectScrollUpArrow(props: SelectPrimitive.ScrollUpArrow.Props)
120
120
  export function SelectScrollDownArrow(props: SelectPrimitive.ScrollDownArrow.Props) {
121
121
  return (
122
122
  <SelectPrimitive.ScrollDownArrow className={scrollArrow} {...props}>
123
- <CaretDownIcon size={12} />
123
+ <ChevronDownIcon width={12} />
124
124
  </SelectPrimitive.ScrollDownArrow>
125
125
  );
126
126
  }
@@ -1,15 +1,13 @@
1
- import { CircleNotchIcon } from "@phosphor-icons/react";
2
1
  import clsx from "clsx";
3
2
  import type React from "react";
4
3
  import { spinner } from "./spinner.css";
4
+ import { LoaderCircleIcon } from "../../icons";
5
5
 
6
- type Props = Omit<React.ComponentProps<typeof CircleNotchIcon>, "className" | "style"> & {
6
+ type Props = Omit<React.ComponentProps<typeof LoaderCircleIcon>, "className" | "style"> & {
7
7
  className?: string;
8
8
  style?: React.CSSProperties;
9
9
  };
10
10
 
11
11
  export function Spinner({ className, style, ...props }: Props): React.ReactElement {
12
- return (
13
- <CircleNotchIcon weight="bold" className={clsx(spinner, className)} style={style} {...props} />
14
- );
12
+ return <LoaderCircleIcon className={clsx(spinner, className)} style={style} {...props} />;
15
13
  }