@vritti/quantum-ui 0.3.4 → 0.3.6
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.
- package/dist/Switch.js +17 -14
- package/dist/Switch.js.map +1 -1
- package/dist/TextField.js +64 -45
- package/dist/TextField.js.map +1 -1
- package/dist/assets/quantum-ui.css +23 -16
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
- package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
- package/dist/lib/selects/index.d.ts +0 -1
- package/dist/lib/selects/index.d.ts.map +1 -1
- package/dist/lib/selects/tax-group/TaxGroupFilter.d.ts +12 -0
- package/dist/lib/selects/tax-group/TaxGroupFilter.d.ts.map +1 -0
- package/dist/lib/selects/tax-group/TaxGroupSelector.d.ts +4 -0
- package/dist/lib/selects/tax-group/TaxGroupSelector.d.ts.map +1 -0
- package/dist/lib/selects/tax-group/index.d.ts +3 -0
- package/dist/lib/selects/tax-group/index.d.ts.map +1 -0
- package/dist/selects/tax-group.js +37 -0
- package/dist/selects/tax-group.js.map +1 -0
- package/dist/shadcn/shadcnSwitch/Switch.d.ts +1 -1
- package/dist/shadcn/shadcnSwitch/Switch.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/BomSelector.js +0 -37
- package/dist/BomSelector.js.map +0 -1
- package/dist/lib/selects/bom/BomFilter.d.ts +0 -12
- package/dist/lib/selects/bom/BomFilter.d.ts.map +0 -1
- package/dist/lib/selects/bom/BomSelector.d.ts +0 -4
- package/dist/lib/selects/bom/BomSelector.d.ts.map +0 -1
- package/dist/lib/selects/bom/index.d.ts +0 -3
- package/dist/lib/selects/bom/index.d.ts.map +0 -1
- package/dist/selects/bom.js +0 -2
- package/dist/selects/bom.js.map +0 -1
package/dist/Switch.js
CHANGED
|
@@ -161,7 +161,7 @@ function Switch$1({
|
|
|
161
161
|
"data-slot": "switch",
|
|
162
162
|
"data-size": size,
|
|
163
163
|
className: cn(
|
|
164
|
-
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px]",
|
|
164
|
+
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[size=lg]:h-[24px] data-[size=lg]:w-[40px]",
|
|
165
165
|
className
|
|
166
166
|
),
|
|
167
167
|
...props,
|
|
@@ -169,7 +169,7 @@ function Switch$1({
|
|
|
169
169
|
Thumb,
|
|
170
170
|
{
|
|
171
171
|
"data-slot": "switch-thumb",
|
|
172
|
-
className: "bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
172
|
+
className: "bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=lg]/switch:size-5 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
173
173
|
}
|
|
174
174
|
)
|
|
175
175
|
}
|
|
@@ -177,28 +177,31 @@ function Switch$1({
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
const Switch = React__default.forwardRef(
|
|
180
|
-
({ label, description, error, id, ...props }, ref) => {
|
|
180
|
+
({ label, description, error, id, size = "lg", ...props }, ref) => {
|
|
181
181
|
const generatedId = React__default.useId();
|
|
182
182
|
const fieldId = id || generatedId;
|
|
183
183
|
const hasError = !!error;
|
|
184
184
|
return /* @__PURE__ */ jsxs(Field, { "data-disabled": props.disabled, "data-invalid": hasError, children: [
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
185
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-h-9 items-center justify-between gap-4", children: [
|
|
186
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
187
|
+
label && /* @__PURE__ */ jsx(FieldLabel, { htmlFor: fieldId, className: "font-normal cursor-pointer", children: label }),
|
|
188
|
+
/* @__PURE__ */ jsx(
|
|
189
|
+
"label",
|
|
190
|
+
{
|
|
191
|
+
htmlFor: fieldId,
|
|
192
|
+
id: `${fieldId}-description`,
|
|
193
|
+
className: "text-sm text-muted-foreground leading-normal cursor-pointer",
|
|
194
|
+
children: description
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
] }),
|
|
196
198
|
/* @__PURE__ */ jsx(
|
|
197
199
|
Switch$1,
|
|
198
200
|
{
|
|
199
201
|
...props,
|
|
200
202
|
ref,
|
|
201
203
|
id: fieldId,
|
|
204
|
+
size,
|
|
202
205
|
"aria-describedby": description || error ? `${fieldId}-description ${fieldId}-error` : void 0,
|
|
203
206
|
"aria-invalid": hasError
|
|
204
207
|
}
|
package/dist/Switch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sources":["../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_c3445f43106be928beab9f2bef095c25/node_modules/@radix-ui/react-switch/dist/index.mjs","../shadcn/shadcnSwitch/Switch.tsx","../lib/components/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px]',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import React from 'react';\nimport { Field, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { Switch as ShadcnSwitch } from '../../../shadcn/shadcnSwitch';\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof ShadcnSwitch> {\n /**\n * Label for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Helper text or description displayed beside the toggle — required for field layout\n */\n description: React.ReactNode;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n}\n\n/**\n * Switch component for toggling between two states (on/off).\n *\n * Description is required and sits beside the toggle, keeping the label pinned\n * to the top so it aligns with adjacent TextField labels in a form row.\n *\n * @example\n * ```tsx\n * // With Field system (form usage)\n * <Switch\n * label=\"Enable notifications\"\n * description=\"Receive email updates about your account\"\n * />\n *\n * // In a Form component\n * <Form form={form} onSubmit={handleSubmit}>\n * <Switch\n * name=\"marketing\"\n * label=\"Marketing emails\"\n * description=\"Receive promotional content\"\n * />\n * </Form>\n * ```\n */\nexport const Switch = React.forwardRef<React.ElementRef<typeof ShadcnSwitch>, SwitchProps>(\n ({ label, description, error, id, ...props }, ref) => {\n const generatedId = React.useId();\n const fieldId = id || generatedId;\n const hasError = !!error;\n\n return (\n <Field data-disabled={props.disabled} data-invalid={hasError}>\n {label && (\n <FieldLabel htmlFor={fieldId} className=\"font-normal cursor-pointer\">\n {label}\n </FieldLabel>\n )}\n\n <div className=\"flex min-h-9 items-center justify-between gap-3\">\n <label\n htmlFor={fieldId}\n id={`${fieldId}-description`}\n className=\"text-sm text-muted-foreground leading-normal cursor-pointer\"\n >\n {description}\n </label>\n <ShadcnSwitch\n {...props}\n ref={ref}\n id={fieldId}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n />\n </div>\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","SwitchPrimitive.Root","SwitchPrimitive.Thumb","React","ShadcnSwitch"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"Switch.js","sources":["../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_c3445f43106be928beab9f2bef095c25/node_modules/@radix-ui/react-switch/dist/index.mjs","../shadcn/shadcnSwitch/Switch.tsx","../lib/components/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default' | 'lg';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[size=lg]:h-[24px] data-[size=lg]:w-[40px]',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"bg-primary-foreground shadow-sm pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=lg]/switch:size-5 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import React from 'react';\nimport { Field, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { Switch as ShadcnSwitch } from '../../../shadcn/shadcnSwitch';\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof ShadcnSwitch> {\n /**\n * Label for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Helper text or description displayed beside the toggle — required for field layout\n */\n description: React.ReactNode;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n}\n\n/**\n * Switch component for toggling between two states (on/off).\n *\n * Description is required. The label and description stack vertically on the\n * left, with the toggle pinned to the right of the row.\n *\n * @example\n * ```tsx\n * // With Field system (form usage)\n * <Switch\n * label=\"Enable notifications\"\n * description=\"Receive email updates about your account\"\n * />\n *\n * // In a Form component\n * <Form form={form} onSubmit={handleSubmit}>\n * <Switch\n * name=\"marketing\"\n * label=\"Marketing emails\"\n * description=\"Receive promotional content\"\n * />\n * </Form>\n * ```\n */\nexport const Switch = React.forwardRef<React.ElementRef<typeof ShadcnSwitch>, SwitchProps>(\n ({ label, description, error, id, size = 'lg', ...props }, ref) => {\n const generatedId = React.useId();\n const fieldId = id || generatedId;\n const hasError = !!error;\n\n return (\n <Field data-disabled={props.disabled} data-invalid={hasError}>\n <div className=\"flex min-h-9 items-center justify-between gap-4\">\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <FieldLabel htmlFor={fieldId} className=\"font-normal cursor-pointer\">\n {label}\n </FieldLabel>\n )}\n <label\n htmlFor={fieldId}\n id={`${fieldId}-description`}\n className=\"text-sm text-muted-foreground leading-normal cursor-pointer\"\n >\n {description}\n </label>\n </div>\n <ShadcnSwitch\n {...props}\n ref={ref}\n id={fieldId}\n size={size}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n />\n </div>\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","SwitchPrimitive.Root","SwitchPrimitive.Thumb","React","ShadcnSwitch"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/TextField.js
CHANGED
|
@@ -7,7 +7,22 @@ import { C as ChevronUp } from './chevron-up.js';
|
|
|
7
7
|
import { C as ChevronDown } from './chevron-down.js';
|
|
8
8
|
|
|
9
9
|
const TextField = React__default.forwardRef(
|
|
10
|
-
({
|
|
10
|
+
({
|
|
11
|
+
label,
|
|
12
|
+
description,
|
|
13
|
+
error,
|
|
14
|
+
className,
|
|
15
|
+
id,
|
|
16
|
+
disabled,
|
|
17
|
+
startAdornment,
|
|
18
|
+
endAdornment,
|
|
19
|
+
positive,
|
|
20
|
+
nonZero,
|
|
21
|
+
integer,
|
|
22
|
+
onChange,
|
|
23
|
+
style,
|
|
24
|
+
...props
|
|
25
|
+
}, ref) => {
|
|
11
26
|
const isNumberType = props.type === "number";
|
|
12
27
|
const normalizedType = isNumberType ? "text" : props.type;
|
|
13
28
|
const normalizedInputMode = props.inputMode ?? (isNumberType ? integer ? "numeric" : "decimal" : void 0);
|
|
@@ -17,6 +32,8 @@ const TextField = React__default.forwardRef(
|
|
|
17
32
|
const effectiveMin = positiveFloor !== void 0 && propsMinValid !== void 0 ? Math.max(positiveFloor, propsMinValid) : propsMinValid ?? positiveFloor;
|
|
18
33
|
const inputRef = React__default.useRef(null);
|
|
19
34
|
const [rawInput, setRawInput] = React__default.useState("");
|
|
35
|
+
const endOverlayRef = React__default.useRef(null);
|
|
36
|
+
const [endPadding, setEndPadding] = React__default.useState(void 0);
|
|
20
37
|
const assignRef = React__default.useCallback(
|
|
21
38
|
(node) => {
|
|
22
39
|
inputRef.current = node;
|
|
@@ -117,6 +134,20 @@ const TextField = React__default.forwardRef(
|
|
|
117
134
|
autoConstraintText ? /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: autoConstraintText }) : null,
|
|
118
135
|
endAdornment
|
|
119
136
|
] });
|
|
137
|
+
const hasEndContent = isNumberType || !!endAdornment || !!autoConstraintText;
|
|
138
|
+
React__default.useLayoutEffect(() => {
|
|
139
|
+
const node = endOverlayRef.current;
|
|
140
|
+
if (!hasEndContent || !node) {
|
|
141
|
+
setEndPadding(void 0);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const measure = () => setEndPadding(node.offsetWidth + 4);
|
|
145
|
+
measure();
|
|
146
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
147
|
+
const observer = new ResizeObserver(measure);
|
|
148
|
+
observer.observe(node);
|
|
149
|
+
return () => observer.disconnect();
|
|
150
|
+
}, [hasEndContent]);
|
|
120
151
|
return /* @__PURE__ */ jsxs(Field, { "data-disabled": disabled, children: [
|
|
121
152
|
label && /* @__PURE__ */ jsx(FieldLabel, { children: label }),
|
|
122
153
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
@@ -127,15 +158,10 @@ const TextField = React__default.forwardRef(
|
|
|
127
158
|
"aria-invalid": !!error,
|
|
128
159
|
ref: assignRef,
|
|
129
160
|
disabled,
|
|
130
|
-
className: cn(
|
|
131
|
-
className,
|
|
132
|
-
startAdornment && "pl-10",
|
|
133
|
-
isNumberType && (endAdornment || autoConstraintText) && "pr-36",
|
|
134
|
-
isNumberType && !endAdornment && !autoConstraintText && "pr-12",
|
|
135
|
-
!isNumberType && (endAdornment || autoConstraintText) && "pr-10"
|
|
136
|
-
),
|
|
161
|
+
className: cn(className, startAdornment && "pl-10"),
|
|
137
162
|
id,
|
|
138
163
|
...props,
|
|
164
|
+
style: { ...style, paddingRight: endPadding },
|
|
139
165
|
value: displayValue,
|
|
140
166
|
min: effectiveMin,
|
|
141
167
|
type: normalizedType,
|
|
@@ -144,44 +170,37 @@ const TextField = React__default.forwardRef(
|
|
|
144
170
|
onChange: handleChange
|
|
145
171
|
}
|
|
146
172
|
),
|
|
147
|
-
|
|
148
|
-
/* @__PURE__ */ jsx(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
"button",
|
|
163
|
-
{
|
|
164
|
-
type: "button",
|
|
165
|
-
tabIndex: -1,
|
|
166
|
-
className: "flex h-1/2 items-center justify-center text-muted-foreground hover:bg-accent disabled:opacity-50",
|
|
167
|
-
onMouseDown: (event) => event.preventDefault(),
|
|
168
|
-
onClick: () => setInputNumericValue(-1),
|
|
169
|
-
disabled,
|
|
170
|
-
"aria-label": "Decrease value",
|
|
171
|
-
children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-2.5" })
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] }) }),
|
|
175
|
-
(endAdornment || autoConstraintText) && /* @__PURE__ */ jsx(
|
|
176
|
-
"div",
|
|
177
|
-
{
|
|
178
|
-
className: cn(
|
|
179
|
-
"absolute inset-y-0 flex items-center gap-2",
|
|
180
|
-
isNumberType ? "right-8 pr-2 z-10" : "right-0 pr-3"
|
|
173
|
+
hasEndContent && /* @__PURE__ */ jsxs("div", { ref: endOverlayRef, className: "absolute inset-y-0 right-0 z-10 flex items-center gap-2 pr-2", children: [
|
|
174
|
+
(endAdornment || autoConstraintText) && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: combinedEndAdornment }),
|
|
175
|
+
isNumberType && /* @__PURE__ */ jsxs("div", { className: "flex h-7 w-4 flex-col overflow-hidden rounded-sm border border-border bg-background", children: [
|
|
176
|
+
/* @__PURE__ */ jsx(
|
|
177
|
+
"button",
|
|
178
|
+
{
|
|
179
|
+
type: "button",
|
|
180
|
+
tabIndex: -1,
|
|
181
|
+
className: "flex h-1/2 items-center justify-center border-b border-border text-muted-foreground hover:bg-accent disabled:opacity-50",
|
|
182
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
183
|
+
onClick: () => setInputNumericValue(1),
|
|
184
|
+
disabled,
|
|
185
|
+
"aria-label": "Increase value",
|
|
186
|
+
children: /* @__PURE__ */ jsx(ChevronUp, { className: "size-2.5" })
|
|
187
|
+
}
|
|
181
188
|
),
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
189
|
+
/* @__PURE__ */ jsx(
|
|
190
|
+
"button",
|
|
191
|
+
{
|
|
192
|
+
type: "button",
|
|
193
|
+
tabIndex: -1,
|
|
194
|
+
className: "flex h-1/2 items-center justify-center text-muted-foreground hover:bg-accent disabled:opacity-50",
|
|
195
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
196
|
+
onClick: () => setInputNumericValue(-1),
|
|
197
|
+
disabled,
|
|
198
|
+
"aria-label": "Decrease value",
|
|
199
|
+
children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-2.5" })
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
] })
|
|
203
|
+
] })
|
|
185
204
|
] }),
|
|
186
205
|
description && !error && /* @__PURE__ */ jsx(FieldDescription, { children: description }),
|
|
187
206
|
error && /* @__PURE__ */ jsx(FieldError, { children: error })
|
package/dist/TextField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../lib/components/TextField/TextField.tsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from 'lucide-react';\nimport React from 'react';\nimport { Input } from '../../../shadcn/shadcnInput';\nimport { cn } from '../../../shadcn/utils';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../Field';\n\nexport interface TextFieldProps extends React.ComponentProps<'input'> {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n // Blocks negative values and '-'/'e' keys. Combined with `integer`, also blocks `0` and\n // sets min to 1 (so positive+integer means ≥1). For decimal mode, zero is still typeable so\n // the user can start \"0.5\"; zod is the final gate.\n positive?: boolean;\n // Blocks zero. Combined with `integer`, blocks `0` as the first keystroke. Use independently\n // from `positive` when the field accepts signed-but-not-zero values.\n nonZero?: boolean;\n // Blocks decimal input ('.' and ','); switches inputMode to numeric\n integer?: boolean;\n}\n\n// TextField molecule - Input + Label composition using Field system\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n { label, description, error, className, id, disabled, startAdornment, endAdornment, positive, nonZero, integer, onChange, ...props },\n ref,\n ) => {\n const isNumberType = props.type === 'number';\n const normalizedType = isNumberType ? 'text' : props.type;\n const normalizedInputMode = props.inputMode ?? (isNumberType ? (integer ? 'numeric' : 'decimal') : undefined);\n // Resolve the actual minimum: positive floor takes precedence when both are set, so\n // `positive` always blocks negatives even if a contradictory `min` is passed.\n // For integer mode, `positive` means ≥1 (floor 1). For decimal mode, HTML min stays at 0 so\n // values like 0.3 / 0.5 remain typeable; the form/zod layer rejects plain 0.\n const positiveFloor = positive ? (integer ? 1 : 0) : undefined;\n const propsMinNum = props.min != null && props.min !== '' ? Number(props.min) : undefined;\n const propsMinValid = propsMinNum !== undefined && Number.isFinite(propsMinNum) ? propsMinNum : undefined;\n const effectiveMin =\n positiveFloor !== undefined && propsMinValid !== undefined\n ? Math.max(positiveFloor, propsMinValid)\n : (propsMinValid ?? positiveFloor);\n const inputRef = React.useRef<HTMLInputElement>(null);\n // Tracks the last raw string typed so intermediate states like \"-\" or \"0.\" survive the\n // round-trip through RHF. Must be state (not a ref) so updates trigger a re-render and\n // React's controlled input doesn't revert the DOM to the canonical number.\n const [rawInput, setRawInput] = React.useState<string>('');\n\n const assignRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const setInputNumericValue = React.useCallback(\n (delta: 1 | -1) => {\n if (!isNumberType || disabled) return;\n const input = inputRef.current;\n if (!input) return;\n\n const parsedStep = Number(props.step);\n const step = Number.isFinite(parsedStep) && parsedStep > 0 ? parsedStep : 1;\n const parsedMax = Number(props.max);\n const max = Number.isFinite(parsedMax) ? parsedMax : undefined;\n const current = Number(input.value);\n const baseValue = Number.isFinite(current) ? current : (effectiveMin ?? 0);\n\n let next = baseValue + delta * step;\n if (effectiveMin !== undefined) next = Math.max(effectiveMin, next);\n if (max !== undefined) next = Math.min(max, next);\n\n const stepString = String(step);\n const decimals = integer || stepString.includes('.') === false ? 0 : (stepString.split('.')[1]?.length ?? 0);\n const nextValue = decimals > 0 ? next.toFixed(decimals) : String(Math.round(next));\n\n const valueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set;\n valueSetter?.call(input, nextValue);\n input.dispatchEvent(new Event('input', { bubbles: true }));\n },\n [isNumberType, disabled, effectiveMin, integer, props.max, props.step],\n );\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isNumberType) {\n const raw = event.target.value;\n setRawInput(raw);\n const num = raw === '' ? NaN : Number(raw);\n (onChange as unknown as (v: number) => void)?.(num);\n } else {\n onChange?.(event);\n }\n },\n [isNumberType, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || !isNumberType || disabled) return;\n if (positive && (event.key === '-' || event.key === 'e')) {\n event.preventDefault();\n return;\n }\n if (integer && (event.key === '.' || event.key === ',' || event.key === 'e')) {\n event.preventDefault();\n return;\n }\n // Block '0' as the first keystroke in integer mode when either `positive` (≥1) or\n // `nonZero` is set. Decimal mode needs '0' to remain typeable so the user can start \"0.3\".\n if (\n (positive || nonZero) &&\n integer &&\n event.key === '0' &&\n (event.currentTarget.value === '' || event.currentTarget.value === '0')\n ) {\n event.preventDefault();\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setInputNumericValue(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n setInputNumericValue(-1);\n }\n },\n [isNumberType, disabled, positive, nonZero, integer, setInputNumericValue, props.onKeyDown],\n );\n\n // For number fields, prefer the raw typed string when it represents the same value as\n // the stored number — preserves intermediate states like \"0.\", \"1.50\", \"-\" that would\n // otherwise be lost as React reconciles the controlled input back to the canonical form.\n let displayValue: TextFieldProps['value'] = props.value;\n if (isNumberType && typeof props.value === 'number') {\n if (Number.isNaN(props.value)) {\n displayValue = rawInput;\n } else if (rawInput !== '' && Number(rawInput) === props.value) {\n displayValue = rawInput;\n }\n }\n\n const hasMin = propsMinValid !== undefined;\n const hasMax = props.max != null && props.max !== '';\n const hints: string[] = [];\n const integerLabel = positive ? '+Int' : 'Int';\n const positiveLabel = '+';\n const nonZeroLabel = '≠0';\n if (integer && nonZero) hints.push(`${integerLabel} ${nonZeroLabel}`);\n else if (integer) hints.push(integerLabel);\n else if (positive && nonZero) hints.push(`${positiveLabel} ${nonZeroLabel}`);\n else if (positive) hints.push(positiveLabel);\n else if (nonZero) hints.push(nonZeroLabel);\n if (hasMin && hasMax) hints.push(`Range: ${propsMinValid} - ${props.max}`);\n else if (hasMax) hints.push(`Max: ${props.max}`);\n else if (hasMin) hints.push(`Min: ${propsMinValid}`);\n const autoConstraintText = hints.join(', ');\n const combinedEndAdornment = (\n <>\n {autoConstraintText ? (\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">{autoConstraintText}</span>\n ) : null}\n {endAdornment}\n </>\n );\n\n return (\n <Field data-disabled={disabled}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <div className=\"relative\">\n {startAdornment && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none\">{startAdornment}</div>\n )}\n <Input\n aria-invalid={!!error}\n ref={assignRef}\n disabled={disabled}\n className={cn(\n className,\n startAdornment && 'pl-10',\n isNumberType && (endAdornment || autoConstraintText) && 'pr-36',\n isNumberType && !endAdornment && !autoConstraintText && 'pr-12',\n !isNumberType && (endAdornment || autoConstraintText) && 'pr-10',\n )}\n id={id}\n {...props}\n value={displayValue}\n min={effectiveMin}\n type={normalizedType}\n inputMode={normalizedInputMode}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n />\n {isNumberType && (\n <div className=\"absolute inset-y-0 right-2 z-20 flex items-center\">\n <div className=\"flex h-7 w-4 flex-col overflow-hidden rounded-sm border border-border bg-background\">\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"flex h-1/2 items-center justify-center border-b border-border text-muted-foreground hover:bg-accent disabled:opacity-50\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setInputNumericValue(1)}\n disabled={disabled}\n aria-label=\"Increase value\"\n >\n <ChevronUp className=\"size-2.5\" />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"flex h-1/2 items-center justify-center text-muted-foreground hover:bg-accent disabled:opacity-50\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setInputNumericValue(-1)}\n disabled={disabled}\n aria-label=\"Decrease value\"\n >\n <ChevronDown className=\"size-2.5\" />\n </button>\n </div>\n </div>\n )}\n {(endAdornment || autoConstraintText) && (\n <div\n className={cn(\n 'absolute inset-y-0 flex items-center gap-2',\n isNumberType ? 'right-8 pr-2 z-10' : 'right-0 pr-3',\n )}\n >\n {combinedEndAdornment}\n </div>\n )}\n </div>\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n"],"names":["React"],"mappings":";;;;;;;;AAwBO,MAAM,YAAYA,cAAA,CAAM,UAAA;AAAA,EAC7B,CACE,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAW,EAAA,EAAI,QAAA,EAAU,cAAA,EAAgB,YAAA,EAAc,UAAU,OAAA,EAAS,OAAA,EAAS,UAAU,GAAG,KAAA,IAC7H,GAAA,KACG;AACH,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,KAAS,QAAA;AACpC,IAAA,MAAM,cAAA,GAAiB,YAAA,GAAe,MAAA,GAAS,KAAA,CAAM,IAAA;AACrD,IAAA,MAAM,sBAAsB,KAAA,CAAM,SAAA,KAAc,YAAA,GAAgB,OAAA,GAAU,YAAY,SAAA,GAAa,MAAA,CAAA;AAKnG,IAAA,MAAM,aAAA,GAAgB,QAAA,GAAY,OAAA,GAAU,CAAA,GAAI,CAAA,GAAK,MAAA;AACrD,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,GAAA,IAAO,IAAA,IAAQ,KAAA,CAAM,QAAQ,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,GAAI,MAAA;AAChF,IAAA,MAAM,gBAAgB,WAAA,KAAgB,MAAA,IAAa,OAAO,QAAA,CAAS,WAAW,IAAI,WAAA,GAAc,MAAA;AAChG,IAAA,MAAM,YAAA,GACJ,aAAA,KAAkB,MAAA,IAAa,aAAA,KAAkB,MAAA,GAC7C,KAAK,GAAA,CAAI,aAAA,EAAe,aAAa,CAAA,GACpC,aAAA,IAAiB,aAAA;AACxB,IAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AAIpD,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAM,SAAiB,EAAE,CAAA;AAEzD,IAAA,MAAM,YAAYA,cAAA,CAAM,WAAA;AAAA,MACtB,CAAC,IAAA,KAAkC;AACjC,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,QAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV,WAAW,GAAA,EAAK;AACd,UAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,QAChB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,GAAG;AAAA,KACN;AAEA,IAAA,MAAM,uBAAuBA,cAAA,CAAM,WAAA;AAAA,MACjC,CAAC,KAAA,KAAkB;AACjB,QAAA,IAAI,CAAC,gBAAgB,QAAA,EAAU;AAC/B,QAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,QAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AACpC,QAAA,MAAM,OAAO,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,IAAK,UAAA,GAAa,IAAI,UAAA,GAAa,CAAA;AAC1E,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAClC,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,SAAS,IAAI,SAAA,GAAY,MAAA;AACrD,QAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAClC,QAAA,MAAM,YAAY,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,GAAI,UAAW,YAAA,IAAgB,CAAA;AAExE,QAAA,IAAI,IAAA,GAAO,YAAY,KAAA,GAAQ,IAAA;AAC/B,QAAA,IAAI,iBAAiB,MAAA,EAAW,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,cAAc,IAAI,CAAA;AAClE,QAAA,IAAI,QAAQ,MAAA,EAAW,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,KAAK,IAAI,CAAA;AAEhD,QAAA,MAAM,UAAA,GAAa,OAAO,IAAI,CAAA;AAC9B,QAAA,MAAM,QAAA,GAAW,OAAA,IAAW,UAAA,CAAW,QAAA,CAAS,GAAG,CAAA,KAAM,KAAA,GAAQ,CAAA,GAAK,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AAC1G,QAAA,MAAM,SAAA,GAAY,QAAA,GAAW,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAC,CAAA;AAEjF,QAAA,MAAM,cAAc,MAAA,CAAO,wBAAA,CAAyB,OAAO,gBAAA,CAAiB,SAAA,EAAW,OAAO,CAAA,EAAG,GAAA;AACjG,QAAA,WAAA,EAAa,IAAA,CAAK,OAAO,SAAS,CAAA;AAClC,QAAA,KAAA,CAAM,aAAA,CAAc,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAAA,MAC3D,CAAA;AAAA,MACA,CAAC,cAAc,QAAA,EAAU,YAAA,EAAc,SAAS,KAAA,CAAM,GAAA,EAAK,MAAM,IAAI;AAAA,KACvE;AAEA,IAAA,MAAM,eAAeA,cAAA,CAAM,WAAA;AAAA,MACzB,CAAC,KAAA,KAA+C;AAC9C,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,KAAA;AACzB,UAAA,WAAA,CAAY,GAAG,CAAA;AACf,UAAA,MAAM,GAAA,GAAM,GAAA,KAAQ,EAAA,GAAK,GAAA,GAAM,OAAO,GAAG,CAAA;AACzC,UAAC,WAA8C,GAAG,CAAA;AAAA,QACpD,CAAA,MAAO;AACL,UAAA,QAAA,GAAW,KAAK,CAAA;AAAA,QAClB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,cAAc,QAAQ;AAAA,KACzB;AAEA,IAAA,MAAM,gBAAgBA,cAAA,CAAM,WAAA;AAAA,MAC1B,CAAC,KAAA,KAAiD;AAChD,QAAA,KAAA,CAAM,YAAY,KAAK,CAAA;AACvB,QAAA,IAAI,KAAA,CAAM,gBAAA,IAAoB,CAAC,YAAA,IAAgB,QAAA,EAAU;AACzD,QAAA,IAAI,aAAa,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,GAAA,CAAA,EAAM;AACxD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,OAAA,KAAY,MAAM,GAAA,KAAQ,GAAA,IAAO,MAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,GAAA,KAAQ,GAAA,CAAA,EAAM;AAC5E,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AAGA,QAAA,IAAA,CACG,QAAA,IAAY,OAAA,KACb,OAAA,IACA,KAAA,CAAM,GAAA,KAAQ,GAAA,KACb,KAAA,CAAM,aAAA,CAAc,KAAA,KAAU,EAAA,IAAM,KAAA,CAAM,aAAA,CAAc,UAAU,GAAA,CAAA,EACnE;AACA,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,oBAAA,CAAqB,CAAC,CAAA;AAAA,QACxB,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,WAAA,EAAa;AACpC,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,oBAAA,CAAqB,EAAE,CAAA;AAAA,QACzB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,cAAc,QAAA,EAAU,QAAA,EAAU,SAAS,OAAA,EAAS,oBAAA,EAAsB,MAAM,SAAS;AAAA,KAC5F;AAKA,IAAA,IAAI,eAAwC,KAAA,CAAM,KAAA;AAClD,IAAA,IAAI,YAAA,IAAgB,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,EAAU;AACnD,MAAA,IAAI,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,EAAG;AAC7B,QAAA,YAAA,GAAe,QAAA;AAAA,MACjB,WAAW,QAAA,KAAa,EAAA,IAAM,OAAO,QAAQ,CAAA,KAAM,MAAM,KAAA,EAAO;AAC9D,QAAA,YAAA,GAAe,QAAA;AAAA,MACjB;AAAA,IACF;AAEA,IAAA,MAAM,SAAS,aAAA,KAAkB,MAAA;AACjC,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,IAAO,IAAA,IAAQ,MAAM,GAAA,KAAQ,EAAA;AAClD,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,YAAA,GAAe,WAAW,MAAA,GAAS,KAAA;AACzC,IAAA,MAAM,aAAA,GAAgB,GAAA;AACtB,IAAA,MAAM,YAAA,GAAe,IAAA;AACrB,IAAA,IAAI,OAAA,IAAW,SAAS,KAAA,CAAM,IAAA,CAAK,GAAG,YAAY,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAA;AAAA,SAAA,IAC3D,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA;AAAA,SAAA,IAChC,QAAA,IAAY,SAAS,KAAA,CAAM,IAAA,CAAK,GAAG,aAAa,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAA;AAAA,SAAA,IAClE,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,aAAa,CAAA;AAAA,SAAA,IAClC,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA;AACzC,IAAA,IAAI,MAAA,IAAU,QAAQ,KAAA,CAAM,IAAA,CAAK,UAAU,aAAa,CAAA,GAAA,EAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAA;AAAA,SAAA,IAChE,QAAQ,KAAA,CAAM,IAAA,CAAK,CAAA,KAAA,EAAQ,KAAA,CAAM,GAAG,CAAA,CAAE,CAAA;AAAA,SAAA,IACtC,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,CAAA,KAAA,EAAQ,aAAa,CAAA,CAAE,CAAA;AACnD,IAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,MAAM,uCACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,kBAAA,mBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EAAmD,8BAAmB,CAAA,GACpF,IAAA;AAAA,MACH;AAAA,KAAA,EACH,CAAA;AAGF,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,eAAA,EAAe,QAAA,EACnB,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAS,GAAA,CAAC,cAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAE7B,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACZ,QAAA,EAAA;AAAA,QAAA,cAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EAAwE,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,wBAExG,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,YAChB,GAAA,EAAK,SAAA;AAAA,YACL,QAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,SAAA;AAAA,cACA,cAAA,IAAkB,OAAA;AAAA,cAClB,YAAA,KAAiB,gBAAgB,kBAAA,CAAA,IAAuB,OAAA;AAAA,cACxD,YAAA,IAAgB,CAAC,YAAA,IAAgB,CAAC,kBAAA,IAAsB,OAAA;AAAA,cACxD,CAAC,YAAA,KAAiB,YAAA,IAAgB,kBAAA,CAAA,IAAuB;AAAA,aAC3D;AAAA,YACA,EAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACJ,KAAA,EAAO,YAAA;AAAA,YACP,GAAA,EAAK,YAAA;AAAA,YACL,IAAA,EAAM,cAAA;AAAA,YACN,SAAA,EAAW,mBAAA;AAAA,YACX,SAAA,EAAW,aAAA;AAAA,YACX,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,YAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,qDACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qFAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAU,yHAAA;AAAA,cACV,WAAA,EAAa,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,cAC7C,OAAA,EAAS,MAAM,oBAAA,CAAqB,CAAC,CAAA;AAAA,cACrC,QAAA;AAAA,cACA,YAAA,EAAW,gBAAA;AAAA,cAEX,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA,WAClC;AAAA,0BACA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAU,kGAAA;AAAA,cACV,WAAA,EAAa,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,cAC7C,OAAA,EAAS,MAAM,oBAAA,CAAqB,EAAE,CAAA;AAAA,cACtC,QAAA;AAAA,cACA,YAAA,EAAW,gBAAA;AAAA,cAEX,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AACpC,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAAA,CAEA,gBAAgB,kBAAA,qBAChB,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,4CAAA;AAAA,cACA,eAAe,mBAAA,GAAsB;AAAA,aACvC;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EAEJ,CAAA;AAAA,MAEC,WAAA,IAAe,CAAC,KAAA,oBAAS,GAAA,CAAC,oBAAkB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,MACxD,KAAA,oBAAS,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAC/B,CAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../lib/components/TextField/TextField.tsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from 'lucide-react';\nimport React from 'react';\nimport { Input } from '../../../shadcn/shadcnInput';\nimport { cn } from '../../../shadcn/utils';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../Field';\n\nexport interface TextFieldProps extends React.ComponentProps<'input'> {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n // Blocks negative values and '-'/'e' keys. Combined with `integer`, also blocks `0` and\n // sets min to 1 (so positive+integer means ≥1). For decimal mode, zero is still typeable so\n // the user can start \"0.5\"; zod is the final gate.\n positive?: boolean;\n // Blocks zero. Combined with `integer`, blocks `0` as the first keystroke. Use independently\n // from `positive` when the field accepts signed-but-not-zero values.\n nonZero?: boolean;\n // Blocks decimal input ('.' and ','); switches inputMode to numeric\n integer?: boolean;\n}\n\n// TextField molecule - Input + Label composition using Field system\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n description,\n error,\n className,\n id,\n disabled,\n startAdornment,\n endAdornment,\n positive,\n nonZero,\n integer,\n onChange,\n style,\n ...props\n },\n ref,\n ) => {\n const isNumberType = props.type === 'number';\n const normalizedType = isNumberType ? 'text' : props.type;\n const normalizedInputMode = props.inputMode ?? (isNumberType ? (integer ? 'numeric' : 'decimal') : undefined);\n // Resolve the actual minimum: positive floor takes precedence when both are set, so\n // `positive` always blocks negatives even if a contradictory `min` is passed.\n // For integer mode, `positive` means ≥1 (floor 1). For decimal mode, HTML min stays at 0 so\n // values like 0.3 / 0.5 remain typeable; the form/zod layer rejects plain 0.\n const positiveFloor = positive ? (integer ? 1 : 0) : undefined;\n const propsMinNum = props.min != null && props.min !== '' ? Number(props.min) : undefined;\n const propsMinValid = propsMinNum !== undefined && Number.isFinite(propsMinNum) ? propsMinNum : undefined;\n const effectiveMin =\n positiveFloor !== undefined && propsMinValid !== undefined\n ? Math.max(positiveFloor, propsMinValid)\n : (propsMinValid ?? positiveFloor);\n const inputRef = React.useRef<HTMLInputElement>(null);\n // Tracks the last raw string typed so intermediate states like \"-\" or \"0.\" survive the\n // round-trip through RHF. Must be state (not a ref) so updates trigger a re-render and\n // React's controlled input doesn't revert the DOM to the canonical number.\n const [rawInput, setRawInput] = React.useState<string>('');\n // Trailing overlay (constraint hint + stepper / end adornment) is measured at runtime so the\n // input reserves exactly its width as right padding — a one-char hint like \"+\" no longer costs\n // the same as \"Range: 0 - 100\". Re-measures on content/size changes via ResizeObserver.\n const endOverlayRef = React.useRef<HTMLDivElement>(null);\n const [endPadding, setEndPadding] = React.useState<number | undefined>(undefined);\n\n const assignRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const setInputNumericValue = React.useCallback(\n (delta: 1 | -1) => {\n if (!isNumberType || disabled) return;\n const input = inputRef.current;\n if (!input) return;\n\n const parsedStep = Number(props.step);\n const step = Number.isFinite(parsedStep) && parsedStep > 0 ? parsedStep : 1;\n const parsedMax = Number(props.max);\n const max = Number.isFinite(parsedMax) ? parsedMax : undefined;\n const current = Number(input.value);\n const baseValue = Number.isFinite(current) ? current : (effectiveMin ?? 0);\n\n let next = baseValue + delta * step;\n if (effectiveMin !== undefined) next = Math.max(effectiveMin, next);\n if (max !== undefined) next = Math.min(max, next);\n\n const stepString = String(step);\n const decimals = integer || stepString.includes('.') === false ? 0 : (stepString.split('.')[1]?.length ?? 0);\n const nextValue = decimals > 0 ? next.toFixed(decimals) : String(Math.round(next));\n\n const valueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set;\n valueSetter?.call(input, nextValue);\n input.dispatchEvent(new Event('input', { bubbles: true }));\n },\n [isNumberType, disabled, effectiveMin, integer, props.max, props.step],\n );\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isNumberType) {\n const raw = event.target.value;\n setRawInput(raw);\n const num = raw === '' ? NaN : Number(raw);\n (onChange as unknown as (v: number) => void)?.(num);\n } else {\n onChange?.(event);\n }\n },\n [isNumberType, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || !isNumberType || disabled) return;\n if (positive && (event.key === '-' || event.key === 'e')) {\n event.preventDefault();\n return;\n }\n if (integer && (event.key === '.' || event.key === ',' || event.key === 'e')) {\n event.preventDefault();\n return;\n }\n // Block '0' as the first keystroke in integer mode when either `positive` (≥1) or\n // `nonZero` is set. Decimal mode needs '0' to remain typeable so the user can start \"0.3\".\n if (\n (positive || nonZero) &&\n integer &&\n event.key === '0' &&\n (event.currentTarget.value === '' || event.currentTarget.value === '0')\n ) {\n event.preventDefault();\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setInputNumericValue(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n setInputNumericValue(-1);\n }\n },\n [isNumberType, disabled, positive, nonZero, integer, setInputNumericValue, props.onKeyDown],\n );\n\n // For number fields, prefer the raw typed string when it represents the same value as\n // the stored number — preserves intermediate states like \"0.\", \"1.50\", \"-\" that would\n // otherwise be lost as React reconciles the controlled input back to the canonical form.\n let displayValue: TextFieldProps['value'] = props.value;\n if (isNumberType && typeof props.value === 'number') {\n if (Number.isNaN(props.value)) {\n displayValue = rawInput;\n } else if (rawInput !== '' && Number(rawInput) === props.value) {\n displayValue = rawInput;\n }\n }\n\n const hasMin = propsMinValid !== undefined;\n const hasMax = props.max != null && props.max !== '';\n const hints: string[] = [];\n const integerLabel = positive ? '+Int' : 'Int';\n const positiveLabel = '+';\n const nonZeroLabel = '≠0';\n if (integer && nonZero) hints.push(`${integerLabel} ${nonZeroLabel}`);\n else if (integer) hints.push(integerLabel);\n else if (positive && nonZero) hints.push(`${positiveLabel} ${nonZeroLabel}`);\n else if (positive) hints.push(positiveLabel);\n else if (nonZero) hints.push(nonZeroLabel);\n if (hasMin && hasMax) hints.push(`Range: ${propsMinValid} - ${props.max}`);\n else if (hasMax) hints.push(`Max: ${props.max}`);\n else if (hasMin) hints.push(`Min: ${propsMinValid}`);\n const autoConstraintText = hints.join(', ');\n const combinedEndAdornment = (\n <>\n {autoConstraintText ? (\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">{autoConstraintText}</span>\n ) : null}\n {endAdornment}\n </>\n );\n\n const hasEndContent = isNumberType || !!endAdornment || !!autoConstraintText;\n\n React.useLayoutEffect(() => {\n const node = endOverlayRef.current;\n if (!hasEndContent || !node) {\n setEndPadding(undefined);\n return;\n }\n // Reserve the overlay's width plus a small gap so input text never sits under it.\n const measure = () => setEndPadding(node.offsetWidth + 4);\n measure();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n return () => observer.disconnect();\n }, [hasEndContent]);\n\n return (\n <Field data-disabled={disabled}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <div className=\"relative\">\n {startAdornment && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none\">{startAdornment}</div>\n )}\n <Input\n aria-invalid={!!error}\n ref={assignRef}\n disabled={disabled}\n className={cn(className, startAdornment && 'pl-10')}\n id={id}\n {...props}\n style={{ ...style, paddingRight: endPadding }}\n value={displayValue}\n min={effectiveMin}\n type={normalizedType}\n inputMode={normalizedInputMode}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n />\n {hasEndContent && (\n <div ref={endOverlayRef} className=\"absolute inset-y-0 right-0 z-10 flex items-center gap-2 pr-2\">\n {(endAdornment || autoConstraintText) && (\n <div className=\"flex items-center gap-2\">{combinedEndAdornment}</div>\n )}\n {isNumberType && (\n <div className=\"flex h-7 w-4 flex-col overflow-hidden rounded-sm border border-border bg-background\">\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"flex h-1/2 items-center justify-center border-b border-border text-muted-foreground hover:bg-accent disabled:opacity-50\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setInputNumericValue(1)}\n disabled={disabled}\n aria-label=\"Increase value\"\n >\n <ChevronUp className=\"size-2.5\" />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"flex h-1/2 items-center justify-center text-muted-foreground hover:bg-accent disabled:opacity-50\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setInputNumericValue(-1)}\n disabled={disabled}\n aria-label=\"Decrease value\"\n >\n <ChevronDown className=\"size-2.5\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n"],"names":["React"],"mappings":"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"}
|
|
@@ -881,6 +881,8 @@ svg.react-flow__connectionline {
|
|
|
881
881
|
.Collapsible__container[open] >.Collapsible__title {
|
|
882
882
|
list-style-type: disclosure-open;
|
|
883
883
|
}
|
|
884
|
+
|
|
885
|
+
@layer theme, base, components, utilities;
|
|
884
886
|
/**
|
|
885
887
|
* quantum-ui CSS — theme tokens + component styles (the @theme DIRECTIVE).
|
|
886
888
|
*
|
|
@@ -895,6 +897,14 @@ svg.react-flow__connectionline {
|
|
|
895
897
|
* @import 'tailwindcss';
|
|
896
898
|
* @import '@vritti/quantum-ui/index.css';
|
|
897
899
|
*/
|
|
900
|
+
/**
|
|
901
|
+
* Canonical cascade-layer order, declared at the very top of the shipped CSS.
|
|
902
|
+
* This file ships a compiled `@layer utilities` block (from ./utilities.css) but
|
|
903
|
+
* never declares `base`/`components` itself. Without this statement, a consuming
|
|
904
|
+
* app's Tailwind can register `utilities` BEFORE `base`, so preflight's reset
|
|
905
|
+
* (e.g. `border-width: 0`) overrides our component utilities — borders/shadows
|
|
906
|
+
* vanish. Declaring the order here locks `base` before `utilities` for consumers.
|
|
907
|
+
*/
|
|
898
908
|
:root {
|
|
899
909
|
--background: oklch(1 0 0);
|
|
900
910
|
--foreground: oklch(0.2302 0.0547 256.1829);
|
|
@@ -1412,10 +1422,6 @@ select:-webkit-autofill:active {
|
|
|
1412
1422
|
right: calc(var(--spacing) * 4);
|
|
1413
1423
|
}
|
|
1414
1424
|
|
|
1415
|
-
.right-8 {
|
|
1416
|
-
right: calc(var(--spacing) * 8);
|
|
1417
|
-
}
|
|
1418
|
-
|
|
1419
1425
|
.-bottom-0\.5 {
|
|
1420
1426
|
bottom: calc(var(--spacing) * -.5);
|
|
1421
1427
|
}
|
|
@@ -3672,10 +3678,6 @@ select:-webkit-autofill:active {
|
|
|
3672
3678
|
padding-right: calc(var(--spacing) * 2);
|
|
3673
3679
|
}
|
|
3674
3680
|
|
|
3675
|
-
.pr-3 {
|
|
3676
|
-
padding-right: calc(var(--spacing) * 3);
|
|
3677
|
-
}
|
|
3678
|
-
|
|
3679
3681
|
.pr-5 {
|
|
3680
3682
|
padding-right: calc(var(--spacing) * 5);
|
|
3681
3683
|
}
|
|
@@ -3688,14 +3690,6 @@ select:-webkit-autofill:active {
|
|
|
3688
3690
|
padding-right: calc(var(--spacing) * 10);
|
|
3689
3691
|
}
|
|
3690
3692
|
|
|
3691
|
-
.pr-12 {
|
|
3692
|
-
padding-right: calc(var(--spacing) * 12);
|
|
3693
|
-
}
|
|
3694
|
-
|
|
3695
|
-
.pr-36 {
|
|
3696
|
-
padding-right: calc(var(--spacing) * 36);
|
|
3697
|
-
}
|
|
3698
|
-
|
|
3699
3693
|
.pb-1\.5 {
|
|
3700
3694
|
padding-bottom: calc(var(--spacing) * 1.5);
|
|
3701
3695
|
}
|
|
@@ -4564,6 +4558,11 @@ select:-webkit-autofill:active {
|
|
|
4564
4558
|
height: calc(var(--spacing) * 3);
|
|
4565
4559
|
}
|
|
4566
4560
|
|
|
4561
|
+
.group-data-\[size\=lg\]\/switch\:size-5:is(:where(.group\/switch)[data-size="lg"] *) {
|
|
4562
|
+
width: calc(var(--spacing) * 5);
|
|
4563
|
+
height: calc(var(--spacing) * 5);
|
|
4564
|
+
}
|
|
4565
|
+
|
|
4567
4566
|
.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size="sm"] *) {
|
|
4568
4567
|
width: calc(var(--spacing) * 2);
|
|
4569
4568
|
height: calc(var(--spacing) * 2);
|
|
@@ -5771,6 +5770,14 @@ select:-webkit-autofill:active {
|
|
|
5771
5770
|
height: calc(var(--spacing) * 10);
|
|
5772
5771
|
}
|
|
5773
5772
|
|
|
5773
|
+
.data-\[size\=lg\]\:h-\[24px\][data-size="lg"] {
|
|
5774
|
+
height: 24px;
|
|
5775
|
+
}
|
|
5776
|
+
|
|
5777
|
+
.data-\[size\=lg\]\:w-\[40px\][data-size="lg"] {
|
|
5778
|
+
width: 40px;
|
|
5779
|
+
}
|
|
5780
|
+
|
|
5774
5781
|
.data-\[size\=sm\]\:size-6[data-size="sm"] {
|
|
5775
5782
|
width: calc(var(--spacing) * 6);
|
|
5776
5783
|
height: calc(var(--spacing) * 6);
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,6 @@ export { A as AreaChart } from './AreaChart.js';
|
|
|
17
17
|
export { A as Avatar, a as AvatarBadge, b as AvatarFallback, c as AvatarGroup, d as AvatarGroupCount, e as AvatarImage } from './Avatar.js';
|
|
18
18
|
export { B as Badge } from './Badge.js';
|
|
19
19
|
export { B as BarChart } from './BarChart.js';
|
|
20
|
-
export { B as BomFilter, a as BomSelector } from './BomSelector.js';
|
|
21
20
|
export { B as Breadcrumb, a as BreadcrumbEllipsis, b as BreadcrumbItem, c as BreadcrumbLink, d as BreadcrumbList, e as BreadcrumbPage, f as BreadcrumbRoot, g as BreadcrumbSeparator } from './Breadcrumb.js';
|
|
22
21
|
export { B as BusinessFilter, a as BusinessSelector } from './BusinessSelector.js';
|
|
23
22
|
export { B as Button } from './Button.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../lib/components/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,YAAY,CAAC;IAItF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAKxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAK7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0BD,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../lib/components/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,YAAY,CAAC;IAItF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAKxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAK7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0BD,eAAO,MAAM,MAAM,uFAqClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../../lib/components/TextField/TextField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAI/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../../lib/components/TextField/TextField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAI/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,eAAO,MAAM,SAAS,sGAyPrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/selects/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/selects/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SelectFilterProps } from '../../components/Select/SelectFilter';
|
|
2
|
+
export type TaxGroupFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & {
|
|
3
|
+
name?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const TaxGroupFilter: import('react').ForwardRefExoticComponent<Omit<SelectFilterProps, "name" | "optionsEndpoint"> & {
|
|
6
|
+
name?: string;
|
|
7
|
+
} & import('react').RefAttributes<HTMLButtonElement>> & {
|
|
8
|
+
displayName: string;
|
|
9
|
+
defaultLabel: string;
|
|
10
|
+
defaultName: string;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=TaxGroupFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaxGroupFilter.d.ts","sourceRoot":"","sources":["../../../../lib/selects/tax-group/TaxGroupFilter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAG1G,eAAO,MAAM,cAAc;WAHsE,MAAM;;;;;CAgBtG,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SelectProps } from '../../components/Select/Select';
|
|
2
|
+
export type TaxGroupSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;
|
|
3
|
+
export declare const TaxGroupSelector: import('react').ForwardRefExoticComponent<TaxGroupSelectorProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
4
|
+
//# sourceMappingURL=TaxGroupSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaxGroupSelector.d.ts","sourceRoot":"","sources":["../../../../lib/selects/tax-group/TaxGroupSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAGzE,eAAO,MAAM,gBAAgB,qHAU3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/selects/tax-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { S as SelectFilter } from '../SelectFilter.js';
|
|
4
|
+
import { S as Select } from '../Select.js';
|
|
5
|
+
|
|
6
|
+
const TaxGroupFilter = Object.assign(
|
|
7
|
+
forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
8
|
+
SelectFilter,
|
|
9
|
+
{
|
|
10
|
+
ref,
|
|
11
|
+
name: "taxGroupId",
|
|
12
|
+
label: "Tax Group",
|
|
13
|
+
placeholder: "Select tax group",
|
|
14
|
+
optionsEndpoint: "commerce-api/tax-groups/select",
|
|
15
|
+
fieldKeys: { valueKey: "id", labelKey: "name" },
|
|
16
|
+
...props
|
|
17
|
+
}
|
|
18
|
+
)),
|
|
19
|
+
{ displayName: "TaxGroupFilter", defaultLabel: "Tax Group", defaultName: "taxGroupId" }
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const TaxGroupSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
23
|
+
Select,
|
|
24
|
+
{
|
|
25
|
+
ref,
|
|
26
|
+
label: "Tax Group",
|
|
27
|
+
placeholder: "Select tax group",
|
|
28
|
+
searchable: true,
|
|
29
|
+
optionsEndpoint: "commerce-api/tax-groups/select",
|
|
30
|
+
fieldKeys: { valueKey: "id", labelKey: "name" },
|
|
31
|
+
...props
|
|
32
|
+
}
|
|
33
|
+
));
|
|
34
|
+
TaxGroupSelector.displayName = "TaxGroupSelector";
|
|
35
|
+
|
|
36
|
+
export { TaxGroupFilter, TaxGroupSelector };
|
|
37
|
+
//# sourceMappingURL=tax-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tax-group.js","sources":["../../lib/selects/tax-group/TaxGroupFilter.tsx","../../lib/selects/tax-group/TaxGroupSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type TaxGroupFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for tax-group filtering with async search\nexport const TaxGroupFilter = Object.assign(\n forwardRef<HTMLButtonElement, TaxGroupFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"taxGroupId\"\n label=\"Tax Group\"\n placeholder=\"Select tax group\"\n optionsEndpoint=\"commerce-api/tax-groups/select\"\n fieldKeys={{ valueKey: 'id', labelKey: 'name' }}\n {...props}\n />\n )),\n { displayName: 'TaxGroupFilter', defaultLabel: 'Tax Group', defaultName: 'taxGroupId' },\n);\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type TaxGroupSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for tax-group selection (id → name); BU-scoped server-side via RLS\nexport const TaxGroupSelector = forwardRef<HTMLButtonElement, TaxGroupSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Tax Group\"\n placeholder=\"Select tax group\"\n searchable\n optionsEndpoint=\"commerce-api/tax-groups/select\"\n fieldKeys={{ valueKey: 'id', labelKey: 'name' }}\n {...props}\n />\n));\nTaxGroupSelector.displayName = 'TaxGroupSelector';\n"],"names":[],"mappings":";;;;;AAMO,MAAM,iBAAiB,MAAA,CAAO,MAAA;AAAA,EACnC,UAAA,CAAmD,CAAC,KAAA,EAAO,GAAA,qBACzD,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAM,WAAA;AAAA,MACN,WAAA,EAAY,kBAAA;AAAA,MACZ,eAAA,EAAgB,gCAAA;AAAA,MAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,MAC7C,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,gBAAA,EAAkB,YAAA,EAAc,WAAA,EAAa,aAAa,YAAA;AAC3E;;ACbO,MAAM,gBAAA,GAAmB,UAAA,CAAqD,CAAC,KAAA,EAAO,GAAA,qBAC3F,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAY,kBAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,gCAAA;AAAA,IAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,IAC7C,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
2
2
|
import type * as React from 'react';
|
|
3
3
|
declare function Switch({ className, size, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
|
|
4
|
-
size?: 'sm' | 'default';
|
|
4
|
+
size?: 'sm' | 'default' | 'lg';
|
|
5
5
|
}): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export { Switch };
|
|
7
7
|
//# sourceMappingURL=Switch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../shadcn/shadcnSwitch/Switch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../shadcn/shadcnSwitch/Switch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC,2CAiBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.3.
|
|
8
|
+
"version": "0.3.6",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"sideEffects": false,
|
|
11
11
|
"repository": {
|
|
@@ -212,10 +212,6 @@
|
|
|
212
212
|
"types": "./dist/lib/selects/app-code/index.d.ts",
|
|
213
213
|
"import": "./dist/selects/app-code.js"
|
|
214
214
|
},
|
|
215
|
-
"./selects/bom": {
|
|
216
|
-
"types": "./dist/lib/selects/bom/index.d.ts",
|
|
217
|
-
"import": "./dist/selects/bom.js"
|
|
218
|
-
},
|
|
219
215
|
"./selects/category": {
|
|
220
216
|
"types": "./dist/lib/selects/category/index.d.ts",
|
|
221
217
|
"import": "./dist/selects/category.js"
|
|
@@ -268,6 +264,10 @@
|
|
|
268
264
|
"types": "./dist/lib/selects/purchase-order-item/index.d.ts",
|
|
269
265
|
"import": "./dist/selects/purchase-order-item.js"
|
|
270
266
|
},
|
|
267
|
+
"./selects/tax-group": {
|
|
268
|
+
"types": "./dist/lib/selects/tax-group/index.d.ts",
|
|
269
|
+
"import": "./dist/selects/tax-group.js"
|
|
270
|
+
},
|
|
271
271
|
"./selects/uom": {
|
|
272
272
|
"types": "./dist/lib/selects/uom/index.d.ts",
|
|
273
273
|
"import": "./dist/selects/uom.js"
|
package/dist/BomSelector.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef } from 'react';
|
|
3
|
-
import { S as SelectFilter } from './SelectFilter.js';
|
|
4
|
-
import { S as Select } from './Select.js';
|
|
5
|
-
|
|
6
|
-
const BomFilter = Object.assign(
|
|
7
|
-
forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
8
|
-
SelectFilter,
|
|
9
|
-
{
|
|
10
|
-
ref,
|
|
11
|
-
name: "bomId",
|
|
12
|
-
label: "Bill of Materials",
|
|
13
|
-
placeholder: "Select BOM",
|
|
14
|
-
optionsEndpoint: "commerce-api/bom/select",
|
|
15
|
-
fieldKeys: { valueKey: "id", labelKey: "name" },
|
|
16
|
-
...props
|
|
17
|
-
}
|
|
18
|
-
)),
|
|
19
|
-
{ displayName: "BomFilter", defaultLabel: "Bill of Materials", defaultName: "bomId" }
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const BomSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
23
|
-
Select,
|
|
24
|
-
{
|
|
25
|
-
ref,
|
|
26
|
-
label: "Bill of Materials",
|
|
27
|
-
placeholder: "Select BOM",
|
|
28
|
-
searchable: true,
|
|
29
|
-
optionsEndpoint: "commerce-api/bom/select",
|
|
30
|
-
fieldKeys: { valueKey: "id", labelKey: "name" },
|
|
31
|
-
...props
|
|
32
|
-
}
|
|
33
|
-
));
|
|
34
|
-
BomSelector.displayName = "BomSelector";
|
|
35
|
-
|
|
36
|
-
export { BomFilter as B, BomSelector as a };
|
|
37
|
-
//# sourceMappingURL=BomSelector.js.map
|
package/dist/BomSelector.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BomSelector.js","sources":["../lib/selects/bom/BomFilter.tsx","../lib/selects/bom/BomSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type BomFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for BOM filtering with async search\nexport const BomFilter = Object.assign(\n forwardRef<HTMLButtonElement, BomFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"bomId\"\n label=\"Bill of Materials\"\n placeholder=\"Select BOM\"\n optionsEndpoint=\"commerce-api/bom/select\"\n fieldKeys={{ valueKey: 'id', labelKey: 'name' }}\n {...props}\n />\n )),\n { displayName: 'BomFilter', defaultLabel: 'Bill of Materials', defaultName: 'bomId' },\n);\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type BomSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for BOM selection with async search\nexport const BomSelector = forwardRef<HTMLButtonElement, BomSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Bill of Materials\"\n placeholder=\"Select BOM\"\n searchable\n optionsEndpoint=\"commerce-api/bom/select\"\n fieldKeys={{ valueKey: 'id', labelKey: 'name' }}\n {...props}\n />\n));\nBomSelector.displayName = 'BomSelector';\n"],"names":[],"mappings":";;;;;AAMO,MAAM,YAAY,MAAA,CAAO,MAAA;AAAA,EAC9B,UAAA,CAA8C,CAAC,KAAA,EAAO,GAAA,qBACpD,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAM,mBAAA;AAAA,MACN,WAAA,EAAY,YAAA;AAAA,MACZ,eAAA,EAAgB,yBAAA;AAAA,MAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,MAC7C,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,WAAA,EAAa,YAAA,EAAc,mBAAA,EAAqB,aAAa,OAAA;AAC9E;;ACbO,MAAM,WAAA,GAAc,UAAA,CAAgD,CAAC,KAAA,EAAO,GAAA,qBACjF,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,mBAAA;AAAA,IACN,WAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,yBAAA;AAAA,IAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,IAC7C,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;;;;"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { SelectFilterProps } from '../../components/Select/SelectFilter';
|
|
2
|
-
export type BomFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & {
|
|
3
|
-
name?: string;
|
|
4
|
-
};
|
|
5
|
-
export declare const BomFilter: import('react').ForwardRefExoticComponent<Omit<SelectFilterProps, "name" | "optionsEndpoint"> & {
|
|
6
|
-
name?: string;
|
|
7
|
-
} & import('react').RefAttributes<HTMLButtonElement>> & {
|
|
8
|
-
displayName: string;
|
|
9
|
-
defaultLabel: string;
|
|
10
|
-
defaultName: string;
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=BomFilter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BomFilter.d.ts","sourceRoot":"","sources":["../../../../lib/selects/bom/BomFilter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE5F,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAGrG,eAAO,MAAM,SAAS;WAHsE,MAAM;;;;;CAgBjG,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { SelectProps } from '../../components/Select/Select';
|
|
2
|
-
export type BomSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;
|
|
3
|
-
export declare const BomSelector: import('react').ForwardRefExoticComponent<BomSelectorProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
4
|
-
//# sourceMappingURL=BomSelector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BomSelector.d.ts","sourceRoot":"","sources":["../../../../lib/selects/bom/BomSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAGpE,eAAO,MAAM,WAAW,gHAUtB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/selects/bom/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/selects/bom.js
DELETED
package/dist/selects/bom.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bom.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|