pixelize-design-library 2.4.2-beta.55 → 2.4.2-beta.56

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/CHANGELOG.md CHANGED
@@ -89,6 +89,10 @@ next major.
89
89
  `Common/sizeScaleOwnership.test.ts` so they can't silently merge again. `OPTION_ROW_SIZES`
90
90
  (dropdown/select/menu row heights) is reverted to xs 24 · sm 30 · md 34 · lg 40; `OrgSwitcher`/
91
91
  `AppSwitcher` are back on their own hardcoded literal sizes, not a shared token.
92
+ - **`CONTROL_SIZES.xs` (fields only) raised 24px → 32px.** `TextInput`, `Select`, `MultiSelect`,
93
+ `SearchSelect`, `SelectSearch`, `SelectV2`, `NumberInput`, `PinInput`, `Search` and the
94
+ `DatePicker` family at `size="xs"` are now 32px tall. `BUTTON_SIZES.xs` (`Button`,
95
+ `SegmentedControl`, `Tabs`, `TableToggle`, `Dropdown`'s trigger) is untouched, still 24px.
92
96
  - **`SideBar`'s nav scrollbar thumb was the brand `primary` color.** Every other scrollbar in the
93
97
  library reads a neutral chrome token; the sidebar's hand-rolled CSS (`Constants/Sidebar.ts`) was
94
98
  the one place still reaching for `primary[500]`/`primary[700]`. It now reads
@@ -312,7 +312,7 @@ not enough when the overlay sits inside a transition wrapper — the wrapper kee
312
312
 
313
313
  | Component | beta.43 → beta.44 | Restore the old look |
314
314
  | --- | --- | --- |
315
- | Fields, selects, buttons (`Button`, `TextInput`, `InputTextArea`, `NumberInput`, DatePicker family, `Select`, `SelectV2`, `SearchSelect`, `SelectSearch`, `Search`, `Dropdown`, `SegmentedControl`) | Default size `md` → `sm` (38px). One scale for all: xs 24 / sm 38 / md 40 / lg 48 — the same height in every field, select and button. `TimePicker` has no `size` (fixed `sm`); `SegmentedControl` has no `xs`. **Since decoupled** — fields/selects now read `CONTROL_SIZES` (unchanged: xs 24 / sm 38 / md 40 / lg 48), `Button`/`SegmentedControl`/`Tabs`/`TableToggle`/`Dropdown`'s trigger read the separate `BUTTON_SIZES` (xs 24 / sm 32 / md 40 / lg 48, back to pre-regression) — see the gotcha below | `size="md"` |
315
+ | Fields, selects, buttons (`Button`, `TextInput`, `InputTextArea`, `NumberInput`, DatePicker family, `Select`, `SelectV2`, `SearchSelect`, `SelectSearch`, `Search`, `Dropdown`, `SegmentedControl`) | Default size `md` → `sm` (38px). One scale for all: xs 24 / sm 38 / md 40 / lg 48 — the same height in every field, select and button. `TimePicker` has no `size` (fixed `sm`); `SegmentedControl` has no `xs`. **Since decoupled** — fields/selects now read `CONTROL_SIZES` (xs 24 / sm 38 / md 40 / lg 48 at the time of the split; xs later raised to 32px), `Button`/`SegmentedControl`/`Tabs`/`TableToggle`/`Dropdown`'s trigger read the separate `BUTTON_SIZES` (xs 24 / sm 32 / md 40 / lg 48, back to pre-regression) — see the gotcha below | `size="md"` |
316
316
  | `Button` | Text one step smaller (sm 14→13px, md 16→14, lg 18→16). Busy = spinner only, width kept (was "Loading" + spinner). Outline: 1px border, hover is a tint, not a fill | `loadingText="Loading"` |
317
317
  | `Tag` | `solid`/`md` → `subtle`/`sm`. Hover + pointer only with `onTagClick`; `maxW` truncates with the full text as a title. Exact heights 20/24/28/32, weight 500, 1px inset ring (never adds height); subtle is a light tint with ink ≥ 6.5:1 | `variant="solid" size="md"` |
318
318
  | `resolveSoftTone` | `bg`/`border` are now translucent (alpha hex) — composite onto the surface before `contrastRatio`; optional 3rd `surface` arg; adds `hoverBg`/`activeBg`. Badge/Alert/Toaster/EmptyState follow | — |
@@ -391,7 +391,7 @@ library's own themed component rather than the Chakra passthrough.
391
391
  ### `CONTROL_SIZES` (fields) and `BUTTON_SIZES` (buttons) are separate scales — changing one never changes the other
392
392
 
393
393
  Fields/selects (`TextInput`, `Select`, `MultiSelect`, `SearchSelect`, `NumberInput`, `PinInput`, the
394
- `DatePicker` family, …) read `CONTROL_SIZES` — xs 24 · sm 38 · md 40 · lg 48. `Button` and every
394
+ `DatePicker` family, …) read `CONTROL_SIZES` — xs 32 · sm 38 · md 40 · lg 48. `Button` and every
395
395
  button-like trigger (`SegmentedControl`, `Tabs`, `TableToggle`, `Dropdown`'s trigger) read the
396
396
  separate `BUTTON_SIZES` — xs 24 · sm 32 · md 40 · lg 48. They used to share one token, which is what
397
397
  let a field-only size bump leak into buttons — the split is now gate-tested
package/DESIGN-GUIDE.md CHANGED
@@ -90,7 +90,7 @@ don't lean on that pair to distinguish two categories; reach for a utility schem
90
90
  ## 5. Controls — two scales, `sm` by default
91
91
 
92
92
  Fields (`TextInput`, `InputTextArea`, `NumberInput`, `Select`, `Search`, `RangeSlider`, the
93
- `DatePicker` family) sit on `CONTROL_SIZES` — `xs` 24px · `sm` 38px · `md` 40px · `lg` 48px.
93
+ `DatePicker` family) sit on `CONTROL_SIZES` — `xs` 32px · `sm` 38px · `md` 40px · `lg` 48px.
94
94
  `Button` and every button-like trigger (`SegmentedControl`, `Tabs`, `TableToggle`, `Dropdown`)
95
95
  sit on the separate `BUTTON_SIZES` scale — `xs` 24px · `sm` 32px · `md` 40px · `lg` 48px. Both
96
96
  **default to `sm`**, so on a desktop page **don't pass `size`**. They line up at `md`/`lg`; at
@@ -44,7 +44,7 @@ export type BaseDatePickerProps = {
44
44
  width?: string | number;
45
45
  /** Blocks today in the calendar and in typed input; the single picker preselects tomorrow instead. */
46
46
  disableToday?: boolean;
47
- /** Control-scale height: xs 24 · sm 38 · md 40 · lg 48px (default `sm`, like TextInput); also scales the calendar/clock icon. */
47
+ /** Control-scale height: xs 32 · sm 38 · md 40 · lg 48px (default `sm`, like TextInput); also scales the calendar/clock icon. */
48
48
  size?: "xs" | "sm" | "md" | "lg";
49
49
  };
50
50
  /** Single-date variant, Date API (default) — `isRange` must be false or omitted; this is the discriminant the DatePickerProps union switches on. */
@@ -10,7 +10,7 @@ export type PhoneNumberInputProps = {
10
10
  label?: string;
11
11
  /** Falls back to an auto-generated id (shared with `inputId` when that's omitted too), so the label is always bound. */
12
12
  id?: string;
13
- /** Control-scale height: xs 24 · sm 38 · md 40 · lg 48px. Defaults to "sm", like TextInput, so it lines up in a form. */
13
+ /** Control-scale height: xs 32 · sm 38 · md 40 · lg 48px. Defaults to "sm", like TextInput, so it lines up in a form. */
14
14
  size?: string;
15
15
  value?: string;
16
16
  codeValueReturn?: boolean;
@@ -18,7 +18,7 @@ export type MultiSelectProps = {
18
18
  addOnBlur?: boolean;
19
19
  /** Marks the field invalid (`aria-invalid` + error border) and swaps `helperText` for `errorMessage`; a rejected email sets this internally too. */
20
20
  error?: boolean;
21
- /** Height on the field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
21
+ /** Height on the field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
22
22
  size?: "xs" | "sm" | "md" | "lg";
23
23
  inputStyle?: object;
24
24
  /** Rendered only while `error` is true; a rejected email's internal "Invalid email address" text wins over this until the input changes. */
@@ -2,7 +2,7 @@ import { PinInputProps } from "@chakra-ui/react";
2
2
  /** The only pin/OTP component exported from the package. */
3
3
  export type ChakraPinInputProps = Pick<PinInputProps, "otp" | "mask" | "defaultValue" | "placeholder" | "manageFocus" | "errorBorderColor" | "focusBorderColor" | "onChange" | "onComplete"> & {
4
4
  type?: "alphanumeric" | "number";
5
- /** Square cell size, aligned to CONTROL_SIZES heights (xs 24 · sm 38 · md 40 · lg 48). Defaults to "sm". */
5
+ /** Square cell size, aligned to CONTROL_SIZES heights (xs 32 · sm 38 · md 40 · lg 48). Defaults to "sm". */
6
6
  size?: "xs" | "sm" | "md" | "lg";
7
7
  variant?: "flushed" | "outline" | "filled" | "unstyled";
8
8
  color?: "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink" | "whiteAlpha" | "blackAlpha" | "primary";
@@ -15,7 +15,7 @@ export type SearchProps = {
15
15
  onClear?: () => void;
16
16
  /** @deprecated Use `onClear` — same behaviour, consistent casing. */
17
17
  onclose?: () => void;
18
- /** Height on the field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
18
+ /** Height on the field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
19
19
  size?: ControlSize;
20
20
  name?: string;
21
21
  /** Disables the input and hides the clear button; the hotkey still focuses it. */
@@ -38,7 +38,7 @@ export type SearchSelectProps = {
38
38
  width?: string | number;
39
39
  /** Only sets the insideSelect segment's height, not the main field's — that's driven by `size`. */
40
40
  height?: string | number;
41
- /** Height on the field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
41
+ /** Height on the field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
42
42
  size?: "xs" | "sm" | "md" | "lg";
43
43
  /** Blocks opening, typing, chip removal and clearing; renders the shared disabled field look. */
44
44
  isDisabled?: boolean;
@@ -24,7 +24,7 @@ type SelectCommonProps = {
24
24
  label?: string;
25
25
  /** Native: the built-in placeholder `<option>`. Popup: trigger text when nothing is selected. Defaults to "Select Option". */
26
26
  placeholder?: string;
27
- /** Height on the field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
27
+ /** Height on the field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
28
28
  size?: ControlSize;
29
29
  /** Applied to the wrapping FormControl. */
30
30
  width?: string | number;
@@ -49,7 +49,7 @@ export type SelectSearchProps = {
49
49
  errorMessage?: string | undefined;
50
50
  /** Hint under the field; replaced by `errorMessage` while `error` is true. */
51
51
  helperText?: string;
52
- /** Height on the field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
52
+ /** Height on the field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
53
53
  size?: ControlSize;
54
54
  /** Shows a sticky "Add New"-style footer row in the popup; required for all Bottom* props. */
55
55
  isBottomIcon?: boolean | undefined;
@@ -33,7 +33,7 @@ type SelectV2CommonProps = {
33
33
  isReadOnly?: boolean;
34
34
  /** Label asterisk + `aria-required` only; never blocks an empty submit. */
35
35
  isRequired?: boolean;
36
- /** Field control scale (xs 24 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
36
+ /** Field control scale (xs 32 · sm 38 · md 40 · lg 48px). Defaults to `sm`. */
37
37
  size?: ControlSize;
38
38
  /** Shows a type-ahead filter input at the top of the popup. Defaults to true. */
39
39
  isSearchable?: boolean;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isControlSize = exports.DEFAULT_CONTROL_SIZE = exports.CONTROL_SIZE_NAMES = exports.BUTTON_SIZES = exports.CONTROL_SIZES = void 0;
4
4
  /** Height scale for form fields and selects — text inputs, pickers, anything typed or picked into. */
5
5
  exports.CONTROL_SIZES = {
6
- xs: { height: "1.5rem", fontSize: "0.75rem", paddingX: "0.5rem", iconSize: 12 },
6
+ xs: { height: "2rem", fontSize: "0.75rem", paddingX: "0.5rem", iconSize: 12 },
7
7
  sm: { height: "2.375rem", fontSize: "0.8125rem", paddingX: "0.75rem", iconSize: 14 },
8
8
  md: { height: "2.5rem", fontSize: "0.875rem", paddingX: "1rem", iconSize: 16 },
9
9
  lg: { height: "3rem", fontSize: "1rem", paddingX: "1.5rem", iconSize: 18 },
@@ -1,6 +1,6 @@
1
1
  /** Height scale for form fields and selects — text inputs, pickers, anything typed or picked into. */
2
2
  export const CONTROL_SIZES = {
3
- xs: { height: "1.5rem", fontSize: "0.75rem", paddingX: "0.5rem", iconSize: 12 },
3
+ xs: { height: "2rem", fontSize: "0.75rem", paddingX: "0.5rem", iconSize: 12 },
4
4
  sm: { height: "2.375rem", fontSize: "0.8125rem", paddingX: "0.75rem", iconSize: 14 },
5
5
  md: { height: "2.5rem", fontSize: "0.875rem", paddingX: "1rem", iconSize: 16 },
6
6
  lg: { height: "3rem", fontSize: "1rem", paddingX: "1.5rem", iconSize: 18 },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.4.2-beta.55",
3
+ "version": "2.4.2-beta.56",
4
4
  "description": "React component library for Pixelize apps: themeable Chakra-based components, design tokens and light/dark brand theming.",
5
5
  "keywords": [
6
6
  "react",