@lateralus-ai/shipping-ui 2.0.0-dev.25 → 2.0.0-dev.27

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.
@@ -13,10 +13,12 @@ export type ButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "childre
13
13
  disabled?: boolean;
14
14
  icon?: ComponentType<IconProps> | ReactNode;
15
15
  startIcon?: ComponentType<IconProps> | ReactNode;
16
+ /** Renders after the label, inside the same button (no split/dropdown segment). */
17
+ endIcon?: ComponentType<IconProps> | ReactNode;
16
18
  dropdownOptions?: ButtonDropdownOption[];
17
19
  dropdownOpen?: boolean;
18
20
  onDropdownOpenChange?: (open: boolean) => void;
19
21
  forcedState?: ButtonAppearance;
20
22
  children: ReactNode;
21
23
  };
22
- export declare const Button: ({ hierarchy, disabled, icon, startIcon, dropdownOptions, dropdownOpen, onDropdownOpenChange, forcedState, children, className, type, onClick, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
24
+ export declare const Button: ({ hierarchy, disabled, icon, startIcon, endIcon, dropdownOptions, dropdownOpen, onDropdownOpenChange, forcedState, children, className, type, onClick, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@ export type SwitchProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onChang
6
6
  };
7
7
  /**
8
8
  * On/off control — Figma Switch (3068:65681).
9
- * Track: 36×16. Thumb: 24×24 (overhangs track). Off left / on right, edges flush.
10
- * Raise-2 on thumb.
9
+ * Track: 36×16 (grey-400 off / grey-900 on). Thumb: 24×24 white (grey-50 off),
10
+ * 1px border matching track, Raise-2 shadow. Off left / on right, edges flush.
11
11
  */
12
12
  export declare const Switch: ({ checked, onChange, disabled, className, ...props }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lateralus-ai/shipping-ui",
3
- "version": "2.0.0-dev.25",
3
+ "version": "2.0.0-dev.27",
4
4
  "description": "Shared UI theme and components for Lateralus shipping applications",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.esm.js",
@@ -34,6 +34,8 @@ export type ButtonProps = Omit<
34
34
  disabled?: boolean;
35
35
  icon?: ComponentType<IconProps> | ReactNode;
36
36
  startIcon?: ComponentType<IconProps> | ReactNode;
37
+ /** Renders after the label, inside the same button (no split/dropdown segment). */
38
+ endIcon?: ComponentType<IconProps> | ReactNode;
37
39
  dropdownOptions?: ButtonDropdownOption[];
38
40
  dropdownOpen?: boolean;
39
41
  onDropdownOpenChange?: (open: boolean) => void;
@@ -110,6 +112,7 @@ export const Button = ({
110
112
  disabled = false,
111
113
  icon,
112
114
  startIcon,
115
+ endIcon,
113
116
  dropdownOptions,
114
117
  dropdownOpen,
115
118
  onDropdownOpenChange,
@@ -122,7 +125,8 @@ export const Button = ({
122
125
  }: ButtonProps) => {
123
126
  const resolvedIcon = icon ?? startIcon;
124
127
  const renderedIcon = renderIcon(resolvedIcon);
125
- const hasIcon = renderedIcon != null;
128
+ const renderedEndIcon = renderIcon(endIcon);
129
+ const hasIcon = renderedIcon != null || renderedEndIcon != null;
126
130
  const hasDropdown = Boolean(dropdownOptions?.length);
127
131
  const dropdownDisabled = !dropdownOptions?.some((option) => !option.disabled);
128
132
  const mainAppearance = getAppearance(disabled, forcedState);
@@ -148,6 +152,7 @@ export const Button = ({
148
152
  >
149
153
  {renderedIcon}
150
154
  <span>{children}</span>
155
+ {renderedEndIcon}
151
156
  </span>
152
157
  );
153
158
 
@@ -12,8 +12,8 @@ export type SwitchProps = Omit<
12
12
 
13
13
  /**
14
14
  * On/off control — Figma Switch (3068:65681).
15
- * Track: 36×16. Thumb: 24×24 (overhangs track). Off left / on right, edges flush.
16
- * Raise-2 on thumb.
15
+ * Track: 36×16 (grey-400 off / grey-900 on). Thumb: 24×24 white (grey-50 off),
16
+ * 1px border matching track, Raise-2 shadow. Off left / on right, edges flush.
17
17
  */
18
18
  export const Switch = ({
19
19
  checked,
@@ -42,14 +42,16 @@ export const Switch = ({
42
42
  aria-hidden
43
43
  className={cn(
44
44
  "pointer-events-none absolute inset-x-0 top-1/2 h-4 -translate-y-1/2 rounded-full transition-colors",
45
- checked ? "bg-grey-900" : "bg-grey-200",
45
+ checked ? "bg-grey-900" : "bg-grey-400",
46
46
  )}
47
47
  />
48
48
  <span
49
49
  aria-hidden
50
50
  className={cn(
51
- "relative inline-block size-6 rounded-full bg-white shadow-raise2 transition-transform",
52
- checked ? "translate-x-3" : "translate-x-0",
51
+ "relative inline-block size-6 rounded-full border border-solid shadow-raise2 transition-[transform,border-color,background-color]",
52
+ checked
53
+ ? "translate-x-3 border-grey-900 bg-white"
54
+ : "translate-x-0 border-grey-400 bg-grey-50",
53
55
  )}
54
56
  />
55
57
  </button>