@phpsoftbox/react-softbox 1.4.5 → 1.5.0

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/index.d.ts CHANGED
@@ -32,8 +32,10 @@ export { default as MarkdownEditor } from './components/MarkdownEditor/MarkdownE
32
32
  export { default as Markdown } from './components/MarkdownEditor/MarkdownEditor';
33
33
  export { default as Tooltip } from './components/Tooltip/Tooltip';
34
34
  export { default as Table } from './components/Table/Table';
35
+ export { default as Wizard } from './components/Wizard/Wizard';
35
36
  export type { TableBulkAction, TableBulkActions, TableColumn, TableRenderBulkAction, TableSelection, TableSortDirection, TableSortOptions, TableSortState, } from './components/Table/Table';
36
37
  export type { TooltipPlacement, TooltipVariant } from './components/Tooltip/Tooltip';
38
+ export type { WizardBlockedTransition, WizardDirection, WizardProgressState, WizardStep, WizardStepProps, WizardStepContentProps, WizardStepRenderProps, WizardStepStatus, WizardTemplateProps, WizardWindowSizeMap, WizardStepVisibilityContext, WizardTransitionContext, } from './components/Wizard/Wizard';
37
39
  export { default as Text } from './components/Typography/Text';
38
40
  export { default as Heading } from './components/Typography/Heading';
39
41
  export { default as useMediaQuery } from './hooks/useMediaQuery';
package/dist/index.js CHANGED
@@ -30,6 +30,7 @@ export { default as MarkdownEditor } from './components/MarkdownEditor/MarkdownE
30
30
  export { default as Markdown } from './components/MarkdownEditor/MarkdownEditor';
31
31
  export { default as Tooltip } from './components/Tooltip/Tooltip';
32
32
  export { default as Table } from './components/Table/Table';
33
+ export { default as Wizard } from './components/Wizard/Wizard';
33
34
  export { default as Text } from './components/Typography/Text';
34
35
  export { default as Heading } from './components/Typography/Heading';
35
36
  export { default as useMediaQuery } from './hooks/useMediaQuery';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAY5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AA0B/D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
package/docs/README.md CHANGED
@@ -42,3 +42,4 @@ import { Button, Card, Menu } from '@phpsoftbox/react-softbox';
42
42
  - `tabs.md` — Tabs (горизонтальные и вертикальные)
43
43
  - `progress.md` — Progress и его варианты
44
44
  - `breadcrumbs.md` — Breadcrumbs и разделители
45
+ - `wizard.md` — Wizard и поэтапные формы
package/docs/card.md CHANGED
@@ -16,3 +16,21 @@
16
16
  `Card.Header` умеет принимать:
17
17
  - `title` и `subtitle`
18
18
  - `right` для иконок/кнопок
19
+
20
+ ## Toolbar
21
+
22
+ ```tsx
23
+ <Card.Toolbar>
24
+ <Card.Toolbar.Group>
25
+ <Card.Toolbar.Button icon={<SaveIcon />} label="Сохранить" />
26
+ <Card.Toolbar.Button icon={<RefreshIcon />} />
27
+ </Card.Toolbar.Group>
28
+ </Card.Toolbar>
29
+ ```
30
+
31
+ `Card.Toolbar.Button` принимает `icon` и/или `label` (минимум одно из них обязательно).
32
+ Если переданы оба, внутри кнопки появится вертикальный разделитель. На средних экранах текстовая часть скрывается.
33
+
34
+ Скрытие текста включено по умолчанию (`md`) и настраивается:
35
+ - на уровне `Card.Toolbar`: `buttonHideLabelOn="md" | "never"`
36
+ - на уровне конкретной кнопки: `hideLabelOn="md" | "never"` (переопределяет тулбар)
package/docs/wizard.md ADDED
@@ -0,0 +1,58 @@
1
+ # Wizard
2
+
3
+ `Wizard` — поэтапная форма с условиями переходов.
4
+
5
+ ```tsx
6
+ type FormState = {
7
+ email: string;
8
+ agreed: boolean;
9
+ };
10
+
11
+ const [state, setState] = useState<FormState>({ email: '', agreed: false });
12
+
13
+ <Wizard<FormState>
14
+ state={state}
15
+ showFutureSteps={false}
16
+ showPrevOnFirstStep
17
+ showProgress
18
+ >
19
+ <Wizard.Step
20
+ id="account"
21
+ title="Аккаунт"
22
+ canExit={({ state: current }) => current.email.trim().length > 0}
23
+ >
24
+ <Input>
25
+ <Input.Label>Email</Input.Label>
26
+ <Input.Field
27
+ value={state.email}
28
+ onChange={(event) => setState((prev) => ({ ...prev, email: event.target.value }))}
29
+ />
30
+ </Input>
31
+ </Wizard.Step>
32
+ <Wizard.Step
33
+ id="confirm"
34
+ title="Подтверждение"
35
+ component={({ state: current }) => (
36
+ <Input.Checkbox
37
+ label="Согласен с условиями"
38
+ checked={current.agreed}
39
+ onChange={(event) => setState((prev) => ({ ...prev, agreed: event.target.checked }))}
40
+ />
41
+ )}
42
+ canEnter={({ state: current }) => current.email.trim().length > 0}
43
+ />
44
+ </Wizard>;
45
+ ```
46
+
47
+ ## Что можно настроить
48
+
49
+ - шаг как `content` (ReactNode), `component` или `renderContent`
50
+ - составной API через `Wizard.Step` (либо `steps` проп для массивов)
51
+ - guards переходов: `canEnter`, `canExit`
52
+ - видимость шагов: `showCurrentStep`, `showFutureSteps`, `step.hidden`
53
+ - режим длинного списка шагов: `stepsViewMode="all" | "active" | "window"` + `stepsWindowSize`
54
+ - адаптивное окно шагов: `stepsWindowSizeByBreakpoint={{ sm, md, lg, xl, default }}`
55
+ - кастомный рендер шага: `stepTemplate` у `Wizard` или `template` у `Wizard.Step`
56
+ - кнопка `Назад` на первом шаге: `showPrevOnFirstStep`
57
+ - встроенный `Progress`: `showProgress` + `progressProps`
58
+ - кастомный layout (в т.ч. вертикальный wizard): `template`, где можно разместить `stepsNode`, `progressNode`, `contentNode`, `actionsNode` в любом порядке
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phpsoftbox/react-softbox",
3
- "version": "1.4.5",
3
+ "version": "1.5.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",