myoperator-mcp 0.2.99 → 0.2.101

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 (2) hide show
  1. package/dist/index.js +80 -22
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1531,7 +1531,7 @@ const DropdownMenuSubContent = React.forwardRef<
1531
1531
  <DropdownMenuPrimitive.SubContent
1532
1532
  ref={ref}
1533
1533
  className={cn(
1534
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1534
+ "z-[9999] min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1535
1535
  className
1536
1536
  )}
1537
1537
  {...props}
@@ -1549,7 +1549,7 @@ const DropdownMenuContent = React.forwardRef<
1549
1549
  ref={ref}
1550
1550
  sideOffset={sideOffset}
1551
1551
  className={cn(
1552
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-md",
1552
+ "z-[9999] min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-md",
1553
1553
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1554
1554
  className
1555
1555
  )}
@@ -1880,6 +1880,7 @@ export { FormModal };
1880
1880
  `,
1881
1881
  "input": `import * as React from "react";
1882
1882
  import { cva, type VariantProps } from "class-variance-authority";
1883
+ import { Check } from "lucide-react";
1883
1884
 
1884
1885
  import { cn } from "@/lib/utils";
1885
1886
 
@@ -1887,14 +1888,14 @@ import { cn } from "@/lib/utils";
1887
1888
  * Input variants for different visual states
1888
1889
  */
1889
1890
  const inputVariants = cva(
1890
- "h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
1891
+ "h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary outline-none transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
1891
1892
  {
1892
1893
  variants: {
1893
1894
  state: {
1894
1895
  default:
1895
- "border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus/50 focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
1896
+ "border border-semantic-border-input hover:border-semantic-border-input-focus focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
1896
1897
  error:
1897
- "border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary/60 focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
1898
+ "border border-semantic-error-primary/40 hover:border-semantic-error-primary focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
1898
1899
  },
1899
1900
  },
1900
1901
  defaultVariants: {
@@ -1910,28 +1911,61 @@ const inputVariants = cva(
1910
1911
  * \`\`\`tsx
1911
1912
  * <Input placeholder="Enter your email" />
1912
1913
  * <Input state="error" placeholder="Invalid input" />
1913
- * <Input state="success" placeholder="Valid input" />
1914
+ * <Input showCheckIcon placeholder="Enter amount" />
1914
1915
  * \`\`\`
1915
1916
  */
1916
1917
  export interface InputProps
1917
1918
  extends
1918
1919
  Omit<React.ComponentProps<"input">, "size">,
1919
- VariantProps<typeof inputVariants> {}
1920
+ VariantProps<typeof inputVariants> {
1921
+ /** Shows a check icon on the right side when the input is focused */
1922
+ showCheckIcon?: boolean;
1923
+ }
1920
1924
 
1921
1925
  const Input = React.forwardRef<HTMLInputElement, InputProps>(
1922
- ({ className, state, type, ...props }, ref) => {
1923
- return (
1926
+ ({ className, state, type, showCheckIcon, onFocus, onBlur, onWheel, ...props }, ref) => {
1927
+ const [isFocused, setIsFocused] = React.useState(false);
1928
+
1929
+ const inputEl = (
1924
1930
  <input
1925
1931
  type={type}
1926
1932
  className={cn(
1927
1933
  inputVariants({ state, className }),
1934
+ showCheckIcon && "pr-9",
1928
1935
  type === "number" &&
1929
1936
  "[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"
1930
1937
  )}
1931
1938
  ref={ref}
1939
+ onFocus={(e) => {
1940
+ setIsFocused(true);
1941
+ onFocus?.(e);
1942
+ }}
1943
+ onBlur={(e) => {
1944
+ setIsFocused(false);
1945
+ onBlur?.(e);
1946
+ }}
1947
+ onWheel={
1948
+ type === "number"
1949
+ ? (e) => {
1950
+ e.currentTarget.blur();
1951
+ onWheel?.(e);
1952
+ }
1953
+ : onWheel
1954
+ }
1932
1955
  {...props}
1933
1956
  />
1934
1957
  );
1958
+
1959
+ if (!showCheckIcon) return inputEl;
1960
+
1961
+ return (
1962
+ <div className="relative w-full">
1963
+ {inputEl}
1964
+ {isFocused && (
1965
+ <Check className="absolute right-3 top-1/2 -translate-y-1/2 size-4 text-semantic-brand pointer-events-none" />
1966
+ )}
1967
+ </div>
1968
+ );
1935
1969
  }
1936
1970
  );
1937
1971
  Input.displayName = "Input";
@@ -3503,7 +3537,7 @@ import { cn } from "@/lib/utils";
3503
3537
  * SelectTrigger variants matching TextField styling
3504
3538
  */
3505
3539
  const selectTriggerVariants = cva(
3506
- "flex h-10 w-full items-center justify-between rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)] [&>span]:line-clamp-1",
3540
+ "flex h-10 w-full items-center justify-between rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary outline-none transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)] [&>span]:line-clamp-1",
3507
3541
  {
3508
3542
  variants: {
3509
3543
  state: {
@@ -3590,7 +3624,7 @@ const SelectContent = React.forwardRef<
3590
3624
  <SelectPrimitive.Content
3591
3625
  ref={ref}
3592
3626
  className={cn(
3593
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded bg-semantic-bg-primary border border-semantic-border-layout shadow-md",
3627
+ "relative z-[9999] max-h-96 min-w-[8rem] overflow-hidden rounded bg-semantic-bg-primary border border-semantic-border-layout shadow-md",
3594
3628
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
3595
3629
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
3596
3630
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -4117,16 +4151,31 @@ const TableHeader = React.forwardRef<
4117
4151
  ));
4118
4152
  TableHeader.displayName = "TableHeader";
4119
4153
 
4120
- const TableBody = React.forwardRef<
4121
- HTMLTableSectionElement,
4122
- React.HTMLAttributes<HTMLTableSectionElement>
4123
- >(({ className, ...props }, ref) => (
4124
- <tbody
4125
- ref={ref}
4126
- className={cn("[&_tr:last-child]:border-0", className)}
4127
- {...props}
4128
- />
4129
- ));
4154
+ export interface TableBodyProps
4155
+ extends React.HTMLAttributes<HTMLTableSectionElement> {
4156
+ /** Show skeleton loading state instead of children */
4157
+ isLoading?: boolean;
4158
+ /** Number of skeleton rows to display when loading (default: 5) */
4159
+ loadingRows?: number;
4160
+ /** Number of skeleton columns to display when loading (default: 5) */
4161
+ loadingColumns?: number;
4162
+ }
4163
+
4164
+ const TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(
4165
+ ({ className, isLoading, loadingRows = 5, loadingColumns = 5, children, ...props }, ref) => (
4166
+ <tbody
4167
+ ref={ref}
4168
+ className={cn("[&_tr:last-child]:border-0", className)}
4169
+ {...props}
4170
+ >
4171
+ {isLoading ? (
4172
+ <TableSkeleton rows={loadingRows} columns={loadingColumns} />
4173
+ ) : (
4174
+ children
4175
+ )}
4176
+ </tbody>
4177
+ )
4178
+ );
4130
4179
  TableBody.displayName = "TableBody";
4131
4180
 
4132
4181
  const TableFooter = React.forwardRef<
@@ -4517,7 +4566,7 @@ const textFieldContainerVariants = cva(
4517
4566
  * TextField input variants (standalone without container)
4518
4567
  */
4519
4568
  const textFieldInputVariants = cva(
4520
- "h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
4569
+ "h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary outline-none transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
4521
4570
  {
4522
4571
  variants: {
4523
4572
  state: {
@@ -4597,6 +4646,7 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
4597
4646
  value,
4598
4647
  defaultValue,
4599
4648
  onChange,
4649
+ onWheel,
4600
4650
  disabled,
4601
4651
  id,
4602
4652
  type,
@@ -4657,6 +4707,14 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
4657
4707
  value={isControlled ? value : undefined}
4658
4708
  defaultValue={!isControlled ? defaultValue : undefined}
4659
4709
  onChange={handleChange}
4710
+ onWheel={
4711
+ type === "number"
4712
+ ? (e) => {
4713
+ e.currentTarget.blur();
4714
+ onWheel?.(e);
4715
+ }
4716
+ : onWheel
4717
+ }
4660
4718
  aria-invalid={!!error}
4661
4719
  aria-describedby={ariaDescribedBy}
4662
4720
  {...props}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myoperator-mcp",
3
- "version": "0.2.99",
3
+ "version": "0.2.101",
4
4
  "description": "MCP server for myOperator UI components - enables AI assistants to access component metadata, examples, and design tokens",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",