@noya-app/noya-designsystem 0.1.40 → 0.1.42

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 (52) hide show
  1. package/.turbo/turbo-build.log +10 -10
  2. package/CHANGELOG.md +16 -0
  3. package/dist/index.css +1 -1
  4. package/dist/index.d.mts +221 -124
  5. package/dist/index.d.ts +221 -124
  6. package/dist/index.js +7464 -6801
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +7867 -7246
  9. package/dist/index.mjs.map +1 -1
  10. package/package.json +5 -6
  11. package/src/__tests__/combobox.test.ts +578 -0
  12. package/src/components/ActivityIndicator.tsx +4 -4
  13. package/src/components/AnimatePresence.tsx +5 -5
  14. package/src/components/Avatar.tsx +5 -2
  15. package/src/components/BaseToolbar.tsx +61 -0
  16. package/src/components/Button.tsx +1 -1
  17. package/src/components/Checkbox.tsx +7 -6
  18. package/src/components/Combobox.tsx +220 -324
  19. package/src/components/ComboboxMenu.tsx +88 -0
  20. package/src/components/Dialog.tsx +10 -6
  21. package/src/components/DimensionInput.tsx +4 -4
  22. package/src/components/FillPreviewBackground.tsx +51 -44
  23. package/src/components/FloatingWindow.tsx +5 -2
  24. package/src/components/GradientPicker.tsx +14 -14
  25. package/src/components/IconButton.tsx +6 -12
  26. package/src/components/Icons.tsx +3 -3
  27. package/src/components/InputField.tsx +145 -160
  28. package/src/components/Label.tsx +4 -4
  29. package/src/components/LabeledElementView.tsx +35 -41
  30. package/src/components/ListView.tsx +49 -39
  31. package/src/components/Message.tsx +75 -0
  32. package/src/components/Progress.tsx +2 -2
  33. package/src/components/ScrollArea.tsx +7 -5
  34. package/src/components/SegmentedControl.tsx +171 -0
  35. package/src/components/SelectMenu.tsx +61 -10
  36. package/src/components/Slider.tsx +49 -14
  37. package/src/components/Sortable.tsx +17 -27
  38. package/src/components/Spacer.tsx +28 -9
  39. package/src/components/Switch.tsx +8 -8
  40. package/src/components/TextArea.tsx +23 -13
  41. package/src/components/Toolbar.tsx +134 -0
  42. package/src/components/Tooltip.tsx +10 -7
  43. package/src/components/internal/Menu.tsx +5 -4
  44. package/src/contexts/DesignSystemConfiguration.tsx +15 -24
  45. package/src/contexts/DialogContext.tsx +137 -49
  46. package/src/contexts/ImageDataContext.tsx +6 -12
  47. package/src/index.css +4 -6
  48. package/src/index.tsx +12 -3
  49. package/src/utils/combobox.ts +369 -0
  50. package/tailwind.config.ts +2 -3
  51. package/src/components/RadioGroup.tsx +0 -100
  52. package/src/utils/completions.ts +0 -21
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+ import { cssVars } from "../theme";
3
+ import { Divider, DividerVertical } from "./Divider";
4
+ import { Spacer } from "./Spacer";
5
+
6
+ export interface BaseToolbarProps {
7
+ children?: React.ReactNode;
8
+ left?: React.ReactNode;
9
+ right?: React.ReactNode;
10
+ logo?: React.ReactNode;
11
+ showDivider?: boolean;
12
+ }
13
+
14
+ export function BaseToolbar({
15
+ children,
16
+ left,
17
+ right,
18
+ logo,
19
+ showDivider = true,
20
+ }: BaseToolbarProps) {
21
+ return (
22
+ <div className="flex flex-col">
23
+ <div
24
+ className="flex items-center pr-2.5 bg-sidebar-background flex-none relative"
25
+ style={{
26
+ flex: `0 0 ${cssVars.spacing.toolbarHeight}`,
27
+ }}
28
+ >
29
+ {logo && (
30
+ <>
31
+ {logo}
32
+ <DividerVertical />
33
+ </>
34
+ )}
35
+ <Spacer.Horizontal size={10} />
36
+ {left && (
37
+ <>
38
+ <div className="flex gap-toolbar-separator">{left}</div>
39
+ <Spacer.Horizontal size={10} />
40
+ </>
41
+ )}
42
+ <div className="flex items-center justify-center text-text-muted pointer-events-none lg:absolute inset-0">
43
+ <div
44
+ style={{
45
+ display: "flex",
46
+ alignItems: "center",
47
+ justifyContent: "center",
48
+ pointerEvents: "all",
49
+ }}
50
+ >
51
+ {children}
52
+ </div>
53
+ </div>
54
+ <Spacer.Horizontal />
55
+ <Spacer.Horizontal size={10} />
56
+ <div className="flex gap-toolbar-separator">{right}</div>
57
+ </div>
58
+ {showDivider && <Divider variant="strong" />}
59
+ </div>
60
+ );
61
+ }
@@ -87,7 +87,7 @@ export const Button = forwardRef(function Button(
87
87
  ref={forwardedRef}
88
88
  id={id}
89
89
  className={cx(
90
- "no-underline leading-[1] relative border-0 outline-none select-none text-left rounded flex items-center justify-center [&>*]:pointer-events-none [-webkit-app-region:no-drag] focus:ring-2 focus:ring-primary focus:shadow-[0_0_0_1px_var(--popover-background)_inset]",
90
+ "no-underline leading-[1] relative border-0 outline-none select-none text-left rounded flex items-center justify-center [&>*]:pointer-events-none [-webkit-app-region:no-drag] focus:ring-2 focus:ring-primary focus:shadow-[0_0_0_1px_var(--popover-background)_inset] transition-all",
91
91
  disabled ? "opacity-25" : "",
92
92
  !className?.includes("flex") ? "flex-none" : "",
93
93
  active
@@ -1,8 +1,8 @@
1
- import React, { forwardRef, InputHTMLAttributes, memo } from "react";
1
+ import * as React from "react";
2
2
  import { cx } from "../utils/classNames";
3
3
 
4
4
  interface CheckboxProps
5
- extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
5
+ extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> {
6
6
  colorScheme?: "primary" | "secondary";
7
7
  }
8
8
 
@@ -12,8 +12,8 @@ const colorSchemeStyles = {
12
12
  secondary: "text-secondary",
13
13
  };
14
14
 
15
- export const Checkbox = memo(
16
- forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(
15
+ export const Checkbox = React.memo(
16
+ React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(
17
17
  { className, style, colorScheme = "secondary", ...props },
18
18
  ref
19
19
  ) {
@@ -37,15 +37,16 @@ export const Checkbox = memo(
37
37
  m-0
38
38
  rounded
39
39
  bg-input-background
40
- transition-colors
40
+
41
41
  border
42
- border-input-border
42
+ border-divider
43
43
  disabled:opacity-50
44
44
  disabled:cursor-not-allowed
45
45
  focus:ring-2
46
46
  focus:ring-primary
47
47
  focus:ring-offset-1
48
48
  focus:z-interactable
49
+ transition-all
49
50
  `}
50
51
  {...props}
51
52
  />