prime-ui-kit 0.18.0 → 0.20.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.
Files changed (145) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/{chunk-OAXJWF3L.js → chunk-3PY52JP3.js} +1764 -1764
  3. package/dist/chunks/{chunk-X3JT5CLR.js → chunk-4KONMO7Z.js} +1 -1
  4. package/dist/chunks/{chunk-MB4CXSLL.js → chunk-W6EGTNG6.js} +3772 -2888
  5. package/dist/color-picker.js +2 -2
  6. package/dist/components/data-table/ColumnsMenu.d.ts +39 -17
  7. package/dist/components/data-table/DataTable.d.ts +41 -12
  8. package/dist/components/data-table/DataTableColumnsMenu.d.ts +45 -0
  9. package/dist/components/data-table/Head.d.ts +18 -5
  10. package/dist/components/data-table/Row.d.ts +10 -4
  11. package/dist/components/data-table/StateRows.d.ts +5 -3
  12. package/dist/components/data-table/columnOrder.d.ts +14 -0
  13. package/dist/components/data-table/reorder.d.ts +15 -5
  14. package/dist/components/data-table/types.d.ts +5 -0
  15. package/dist/components/data-table/useFrozenColumns.d.ts +6 -2
  16. package/dist/components/datepicker/DatepickerPanel.d.ts +1 -1
  17. package/dist/components/dnd/Dnd.d.ts +9 -5
  18. package/dist/components/dnd/inPlaceRow.d.ts +7 -0
  19. package/dist/components/dnd/useDragSource.d.ts +2 -0
  20. package/dist/components/dnd/useSortableList.d.ts +5 -0
  21. package/dist/components/field-list/FieldList.d.ts +37 -15
  22. package/dist/components/gantt/Gantt.d.ts +1 -1
  23. package/dist/components/index.d.ts +3 -1
  24. package/dist/components/kanban/Kanban.d.ts +4 -0
  25. package/dist/components/list/List.d.ts +9 -4
  26. package/dist/components/scroll-container/ScrollContainer.d.ts +1 -1
  27. package/dist/index.css +1 -1
  28. package/dist/index.js +4 -2
  29. package/dist/internal/ToolRow.d.ts +23 -0
  30. package/dist/internal/leaveGuard.d.ts +6 -0
  31. package/dist/internal/overlay/DialogGuard.d.ts +3 -2
  32. package/dist/internal/overlay/DialogParts.d.ts +14 -5
  33. package/dist/layout/index.d.ts +1 -1
  34. package/dist/layout/page/Page.d.ts +8 -14
  35. package/dist/skill/anti-slop.md +55 -1
  36. package/dist/skill/api-contract.md +2 -2
  37. package/dist/skill/cheatsheet.md +12 -4
  38. package/dist/skill/checklist.md +7 -0
  39. package/dist/skill/choosing.md +1 -0
  40. package/dist/skill/components.md +1 -1
  41. package/dist/skill/composition.md +196 -21
  42. package/dist/skill/layouts.md +1 -1
  43. package/dist/skill/reference/components/confirm-dialog/COMPONENT.md +1 -1
  44. package/dist/skill/reference/components/data-table/COMPONENT.md +110 -49
  45. package/dist/skill/reference/components/data-table/examples/actions-column.tsx +154 -0
  46. package/dist/skill/reference/components/data-table/examples/column-order.tsx +152 -0
  47. package/dist/skill/reference/components/data-table/examples/columns-visibility.tsx +18 -18
  48. package/dist/skill/reference/components/data-table/examples/controlled.tsx +32 -17
  49. package/dist/skill/reference/components/data-table/examples/examples.module.css +14 -36
  50. package/dist/skill/reference/components/data-table/examples/narrow.tsx +25 -19
  51. package/dist/skill/reference/components/data-table/examples/reorder.tsx +24 -2
  52. package/dist/skill/reference/components/data-table/examples/row-link.tsx +18 -22
  53. package/dist/skill/reference/components/data-table/examples/screen.tsx +12 -1
  54. package/dist/skill/reference/components/data-table/examples/selection.tsx +13 -18
  55. package/dist/skill/reference/components/data-table/examples/server.tsx +45 -31
  56. package/dist/skill/reference/components/data-table/examples/toolbar.tsx +22 -35
  57. package/dist/skill/reference/components/datepicker/COMPONENT.md +2 -2
  58. package/dist/skill/reference/components/dnd/COMPONENT.md +13 -7
  59. package/dist/skill/reference/components/dnd/examples/examples.module.css +4 -3
  60. package/dist/skill/reference/components/dnd/examples/handle.tsx +5 -5
  61. package/dist/skill/reference/components/dnd/examples/locked.tsx +1 -1
  62. package/dist/skill/reference/components/dnd/examples/table-columns.tsx +75 -0
  63. package/dist/skill/reference/components/dnd/examples/table.tsx +6 -6
  64. package/dist/skill/reference/components/drawer/COMPONENT.md +26 -10
  65. package/dist/skill/reference/components/drawer/examples/header-actions.tsx +1 -1
  66. package/dist/skill/reference/components/drawer/examples/loading.tsx +58 -0
  67. package/dist/skill/reference/components/field-list/COMPONENT.md +78 -47
  68. package/dist/skill/reference/components/field-list/examples/base-row.tsx +2 -1
  69. package/dist/skill/reference/components/field-list/examples/locked.tsx +11 -11
  70. package/dist/skill/reference/components/field-list/examples/narrow.tsx +108 -33
  71. package/dist/skill/reference/components/field-list/examples/reorder.tsx +1 -1
  72. package/dist/skill/reference/components/field-list/examples/row-menu.tsx +71 -0
  73. package/dist/skill/reference/components/field-list/examples/screen.module.css +1 -1
  74. package/dist/skill/reference/components/field-list/examples/screen.tsx +169 -162
  75. package/dist/skill/reference/components/field-list/examples/totals.tsx +9 -8
  76. package/dist/skill/reference/components/field-list/examples/variants.tsx +51 -0
  77. package/dist/skill/reference/components/gantt/COMPONENT.md +4 -4
  78. package/dist/skill/reference/components/kanban/COMPONENT.md +6 -2
  79. package/dist/skill/reference/components/kanban/examples/states.tsx +7 -5
  80. package/dist/skill/reference/components/list/COMPONENT.md +21 -11
  81. package/dist/skill/reference/components/list/examples/reorder.tsx +42 -7
  82. package/dist/skill/reference/components/modal/COMPONENT.md +23 -10
  83. package/dist/skill/reference/components/scroll-container/COMPONENT.md +1 -1
  84. package/dist/skill/reference/components/segmented-control/COMPONENT.md +3 -2
  85. package/dist/skill/reference/components/sheet/COMPONENT.md +18 -7
  86. package/dist/skill/reference/components/smart-filter/COMPONENT.md +2 -2
  87. package/dist/skill/reference/layout/page/COMPONENT.md +13 -17
  88. package/dist/skill/reference/layout/page/examples/screen.module.css +1 -1
  89. package/dist/skill/reference/layout/page/examples/screen.tsx +93 -104
  90. package/dist/skill/reference/layout/page/examples/sections.tsx +2 -15
  91. package/dist/skill/responsive.md +14 -10
  92. package/dist/tokens/semantic.d.ts +2 -2
  93. package/dist/tokens/themes/dark.d.ts +1 -1
  94. package/package.json +1 -1
  95. package/src/components/confirm-dialog/COMPONENT.md +1 -1
  96. package/src/components/data-table/COMPONENT.md +110 -49
  97. package/src/components/data-table/examples/actions-column.tsx +154 -0
  98. package/src/components/data-table/examples/column-order.tsx +152 -0
  99. package/src/components/data-table/examples/columns-visibility.tsx +18 -18
  100. package/src/components/data-table/examples/controlled.tsx +32 -17
  101. package/src/components/data-table/examples/examples.module.css +14 -36
  102. package/src/components/data-table/examples/narrow.tsx +25 -19
  103. package/src/components/data-table/examples/reorder.tsx +24 -2
  104. package/src/components/data-table/examples/row-link.tsx +18 -22
  105. package/src/components/data-table/examples/screen.tsx +12 -1
  106. package/src/components/data-table/examples/selection.tsx +13 -18
  107. package/src/components/data-table/examples/server.tsx +45 -31
  108. package/src/components/data-table/examples/toolbar.tsx +22 -35
  109. package/src/components/datepicker/COMPONENT.md +2 -2
  110. package/src/components/dnd/COMPONENT.md +13 -7
  111. package/src/components/dnd/examples/examples.module.css +4 -3
  112. package/src/components/dnd/examples/handle.tsx +5 -5
  113. package/src/components/dnd/examples/locked.tsx +1 -1
  114. package/src/components/dnd/examples/table-columns.tsx +75 -0
  115. package/src/components/dnd/examples/table.tsx +6 -6
  116. package/src/components/drawer/COMPONENT.md +26 -10
  117. package/src/components/drawer/examples/header-actions.tsx +1 -1
  118. package/src/components/drawer/examples/loading.tsx +58 -0
  119. package/src/components/field-list/COMPONENT.md +78 -47
  120. package/src/components/field-list/examples/base-row.tsx +2 -1
  121. package/src/components/field-list/examples/locked.tsx +11 -11
  122. package/src/components/field-list/examples/narrow.tsx +108 -33
  123. package/src/components/field-list/examples/reorder.tsx +1 -1
  124. package/src/components/field-list/examples/row-menu.tsx +71 -0
  125. package/src/components/field-list/examples/screen.module.css +1 -1
  126. package/src/components/field-list/examples/screen.tsx +169 -162
  127. package/src/components/field-list/examples/totals.tsx +9 -8
  128. package/src/components/field-list/examples/variants.tsx +51 -0
  129. package/src/components/gantt/COMPONENT.md +4 -4
  130. package/src/components/kanban/COMPONENT.md +6 -2
  131. package/src/components/kanban/examples/states.tsx +7 -5
  132. package/src/components/list/COMPONENT.md +21 -11
  133. package/src/components/list/examples/reorder.tsx +42 -7
  134. package/src/components/modal/COMPONENT.md +23 -10
  135. package/src/components/scroll-container/COMPONENT.md +1 -1
  136. package/src/components/segmented-control/COMPONENT.md +3 -2
  137. package/src/components/sheet/COMPONENT.md +18 -7
  138. package/src/components/smart-filter/COMPONENT.md +2 -2
  139. package/src/layout/page/COMPONENT.md +13 -17
  140. package/src/layout/page/examples/screen.module.css +1 -1
  141. package/src/layout/page/examples/screen.tsx +93 -104
  142. package/src/layout/page/examples/sections.tsx +2 -15
  143. package/src/styles/theme-dark.css +1 -1
  144. package/src/styles/theme-light.css +1 -1
  145. package/dist/components/data-table/context.d.ts +0 -14
@@ -1,4 +1,4 @@
1
- /** A settings page as a document: the path in the top bar that repeats the title once it scrolls away, the large title in the flow, sections with a heading column and a panel, a form saved by its own button, switches that apply at once and a danger zone with a confirm — `collapse`, `layout`, `maxWidth`. */
1
+ /** A settings page as a document: the path in the top bar that repeats the title once it scrolls away, the large title in the flow, each section a card with its own heading, a form saved by its own button, switches that apply at once and a danger zone with a confirm — `collapse`, `maxWidth`, `Card.Header`. */
2
2
  import {
3
3
  Breadcrumb,
4
4
  Button,
@@ -88,118 +88,107 @@ export default function PageScreenExample() {
88
88
  </Page.Heading>
89
89
  </Page.Header>
90
90
  <Page.Body>
91
- <Page.Section
92
- layout="aside"
93
- label="Компания"
94
- description="Попадают в счета, акты и письма клиентам."
95
- >
96
- <form noValidate onSubmit={save} onReset={() => setInnError(undefined)}>
97
- <Card.Root variant="panel">
98
- <Card.Body>
99
- <Fieldset disabled={saving}>
100
- <Input.Root label="Название">
91
+ <form noValidate onSubmit={save} onReset={() => setInnError(undefined)}>
92
+ <Card.Root variant="panel">
93
+ <Card.Header>
94
+ <Card.Title as="h2">Компания</Card.Title>
95
+ <Card.Description>Попадают в счета, акты и письма клиентам.</Card.Description>
96
+ </Card.Header>
97
+ <Card.Body>
98
+ <Fieldset disabled={saving}>
99
+ <Input.Root label="Название">
100
+ <Input.Wrapper>
101
+ <Input.Field name="name" defaultValue="ООО «Прайм Софт»" />
102
+ </Input.Wrapper>
103
+ </Input.Root>
104
+ <div className={styles.pair}>
105
+ <Input.Root label="ИНН" error={innError} hint="10 или 12 цифр" reserveSupportRow>
101
106
  <Input.Wrapper>
102
- <Input.Field name="name" defaultValue="ООО «Прайм Софт»" />
107
+ <Input.Field name="inn" inputMode="numeric" defaultValue="7704512908" />
103
108
  </Input.Wrapper>
104
109
  </Input.Root>
105
- <div className={styles.pair}>
106
- <Input.Root
107
- label="ИНН"
108
- error={innError}
109
- hint="10 или 12 цифр"
110
- reserveSupportRow
111
- >
112
- <Input.Wrapper>
113
- <Input.Field name="inn" inputMode="numeric" defaultValue="7704512908" />
114
- </Input.Wrapper>
115
- </Input.Root>
116
- <Select.Root label="Часовой пояс" defaultValue="Europe/Moscow">
117
- <Select.Trigger>
118
- <Select.Value />
119
- </Select.Trigger>
120
- <Select.Content searchable>
121
- {TIMEZONES.map((zone) => (
122
- <Select.Item key={zone.value} value={zone.value}>
123
- {zone.label}
124
- </Select.Item>
125
- ))}
126
- </Select.Content>
127
- </Select.Root>
128
- </div>
129
- <Textarea.Root
130
- name="address"
131
- label="Юридический адрес"
132
- optional
133
- rows={2}
134
- defaultValue="125009, Москва, ул. Тверская, д. 7, офис 412"
135
- />
136
- </Fieldset>
137
- </Card.Body>
138
- <Card.Footer>
139
- <Button.Root type="reset" variant="ghost" tone="neutral" disabled={saving}>
140
- Отменить изменения
141
- </Button.Root>
142
- <Button.Root type="submit" loading={saving}>
143
- {saved ? "Сохранено" : "Сохранить"}
144
- </Button.Root>
145
- </Card.Footer>
146
- </Card.Root>
147
- </form>
148
- </Page.Section>
149
-
150
- <Page.Section
151
- layout="aside"
152
- label="Уведомления"
153
- description="Включаются сразу, без сохранения."
154
- >
155
- <Card.Root variant="panel">
156
- <Card.Body>
157
- <Fieldset aria-label="Уведомления">
158
- {ALERTS.map((alert) => (
159
- <Switch.Root
160
- key={alert.name}
161
- name={alert.name}
162
- defaultChecked={alert.defaultChecked}
163
- hint={alert.hint}
164
- >
165
- <Switch.Label>{alert.label}</Switch.Label>
166
- </Switch.Root>
167
- ))}
110
+ <Select.Root label="Часовой пояс" defaultValue="Europe/Moscow">
111
+ <Select.Trigger>
112
+ <Select.Value />
113
+ </Select.Trigger>
114
+ <Select.Content searchable>
115
+ {TIMEZONES.map((zone) => (
116
+ <Select.Item key={zone.value} value={zone.value}>
117
+ {zone.label}
118
+ </Select.Item>
119
+ ))}
120
+ </Select.Content>
121
+ </Select.Root>
122
+ </div>
123
+ <Textarea.Root
124
+ name="address"
125
+ label="Юридический адрес"
126
+ optional
127
+ rows={2}
128
+ defaultValue="125009, Москва, ул. Тверская, д. 7, офис 412"
129
+ />
168
130
  </Fieldset>
169
131
  </Card.Body>
132
+ <Card.Footer>
133
+ <Button.Root type="reset" variant="ghost" tone="neutral" disabled={saving}>
134
+ Отменить изменения
135
+ </Button.Root>
136
+ <Button.Root type="submit" loading={saving}>
137
+ {saved ? "Сохранено" : "Сохранить"}
138
+ </Button.Root>
139
+ </Card.Footer>
170
140
  </Card.Root>
171
- </Page.Section>
141
+ </form>
172
142
 
173
- <Page.Section
174
- layout="aside"
175
- label="Рабочее пространство"
176
- description="Действия, которые нельзя отменить."
177
- >
178
- <Card.Root variant="panel">
179
- <Card.Body>
180
- <div className={styles.danger}>
181
- <div className={styles.dangerText}>
182
- <Typography variant="title-s">Удалить пространство</Typography>
183
- <Typography variant="body-s" tone="secondary">
184
- Счета, клиенты и история будут удалены для всех участников.
185
- </Typography>
186
- </div>
187
- <ConfirmDialog.Root
188
- title="Удалить «Прайм Софт»?"
189
- description="312 счетов, 48 клиентов и вся история удалятся без возможности восстановления."
190
- confirmLabel="Удалить пространство"
191
- onConfirm={removeWorkspace}
143
+ <Card.Root variant="panel">
144
+ <Card.Header>
145
+ <Card.Title as="h2">Уведомления</Card.Title>
146
+ <Card.Description>Включаются сразу, без сохранения.</Card.Description>
147
+ </Card.Header>
148
+ <Card.Body>
149
+ <Fieldset aria-label="Уведомления">
150
+ {ALERTS.map((alert) => (
151
+ <Switch.Root
152
+ key={alert.name}
153
+ name={alert.name}
154
+ defaultChecked={alert.defaultChecked}
155
+ hint={alert.hint}
192
156
  >
193
- <ConfirmDialog.Trigger>
194
- <Button.Root variant="outline" tone="danger">
195
- Удалить
196
- </Button.Root>
197
- </ConfirmDialog.Trigger>
198
- </ConfirmDialog.Root>
157
+ <Switch.Label>{alert.label}</Switch.Label>
158
+ </Switch.Root>
159
+ ))}
160
+ </Fieldset>
161
+ </Card.Body>
162
+ </Card.Root>
163
+
164
+ <Card.Root variant="panel">
165
+ <Card.Header>
166
+ <Card.Title as="h2">Рабочее пространство</Card.Title>
167
+ <Card.Description>Действия, которые нельзя отменить.</Card.Description>
168
+ </Card.Header>
169
+ <Card.Body>
170
+ <div className={styles.danger}>
171
+ <div className={styles.dangerText}>
172
+ <Typography variant="title-s">Удалить пространство</Typography>
173
+ <Typography variant="body-s" tone="secondary">
174
+ Счета, клиенты и история будут удалены для всех участников.
175
+ </Typography>
199
176
  </div>
200
- </Card.Body>
201
- </Card.Root>
202
- </Page.Section>
177
+ <ConfirmDialog.Root
178
+ title="Удалить «Прайм Софт»?"
179
+ description="312 счетов, 48 клиентов и вся история удалятся без возможности восстановления."
180
+ confirmLabel="Удалить пространство"
181
+ onConfirm={removeWorkspace}
182
+ >
183
+ <ConfirmDialog.Trigger>
184
+ <Button.Root variant="outline" tone="danger">
185
+ Удалить
186
+ </Button.Root>
187
+ </ConfirmDialog.Trigger>
188
+ </ConfirmDialog.Root>
189
+ </div>
190
+ </Card.Body>
191
+ </Card.Root>
203
192
  </Page.Body>
204
193
  </Page.Root>
205
194
  );
@@ -1,5 +1,5 @@
1
- /** A page with titled sections: tiles of one screen close together, a new topic set off by air, a link at the end of the heading, a heading column beside a panel — `Page.Section`, `label`, `description`, `Page.Actions`, `layout`. */
2
- import { Card, DataTable, type DataTableColumn, LinkButton, Page, Typography } from "prime-ui-kit";
1
+ /** A page with titled sections: tiles of one screen close together, a new topic set off by air, a link at the end of the heading — `Page.Section`, `label`, `description`, `Page.Actions`. */
2
+ import { Card, DataTable, type DataTableColumn, LinkButton, Page } from "prime-ui-kit";
3
3
 
4
4
  import styles from "./examples.module.css";
5
5
 
@@ -55,19 +55,6 @@ export default function PageSectionsExample() {
55
55
  </Page.Actions>
56
56
  <DataTable columns={COLUMNS} rows={INVOICES} getRowKey={(row) => row.id} paging="none" />
57
57
  </Page.Section>
58
- <Page.Section
59
- layout="aside"
60
- label="Реквизиты в счетах"
61
- description="Попадают в каждый новый счёт."
62
- >
63
- <Card.Root variant="panel">
64
- <Card.Body>
65
- <Typography variant="body-m" tone="secondary">
66
- ООО «Прайм Софт», ИНН 7701234567, р/с в Т-Банке.
67
- </Typography>
68
- </Card.Body>
69
- </Card.Root>
70
- </Page.Section>
71
58
  </Page.Body>
72
59
  </div>
73
60
  );
@@ -6,7 +6,7 @@
6
6
  --prime-color-accent-soft: var(--prime-ref-color-cobalt-950);
7
7
  --prime-color-accent-soft-hover: color-mix(in srgb, var(--prime-ref-color-cobalt-500) 28%, transparent);
8
8
  --prime-color-accent-text: var(--prime-ref-color-cobalt-400);
9
- --prime-color-bg-edge-shadow: color-mix(in srgb, var(--prime-ref-color-black) 50%, transparent);
9
+ --prime-color-bg-edge-shadow: color-mix(in srgb, var(--prime-ref-color-black) 28%, transparent);
10
10
  --prime-color-bg-glass: color-mix(in srgb, var(--prime-ref-color-gray-875) 76%, transparent);
11
11
  --prime-color-bg-glass-edge: color-mix(in srgb, var(--prime-ref-color-white) 28%, transparent);
12
12
  --prime-color-bg-inverse: var(--prime-ref-color-gray-100);
@@ -69,7 +69,7 @@
69
69
  --prime-color-accent-soft: var(--prime-ref-color-cobalt-100);
70
70
  --prime-color-accent-soft-hover: var(--prime-ref-color-cobalt-200);
71
71
  --prime-color-accent-text: var(--prime-ref-color-cobalt-700);
72
- --prime-color-bg-edge-shadow: color-mix(in srgb, var(--prime-ref-color-gray-925) 14%, transparent);
72
+ --prime-color-bg-edge-shadow: color-mix(in srgb, var(--prime-ref-color-gray-925) 8%, transparent);
73
73
  --prime-color-bg-glass: color-mix(in srgb, var(--prime-ref-color-white) 72%, transparent);
74
74
  --prime-color-bg-glass-edge: color-mix(in srgb, var(--prime-ref-color-white) 85%, transparent);
75
75
  --prime-color-bg-glass-solid: var(--prime-color-layer-floating-bg);
@@ -1,14 +0,0 @@
1
- import * as React from "react";
2
- import type { ControlSize } from "../../internal/states";
3
- import type { DataTableLabels } from "./DataTable";
4
- import type { DataTableColumn } from "./types";
5
- /** What `DataTable.ColumnsMenu` reads from the table it sits in (through `toolbar`). */
6
- export type DataTableColumnsContextValue = {
7
- /** Every column, hidden ones included, in table order. */
8
- columns: DataTableColumn<never>[];
9
- hidden: ReadonlySet<string>;
10
- setHidden: (hidden: string[]) => void;
11
- labels: DataTableLabels;
12
- size: ControlSize;
13
- };
14
- export declare const DataTableColumnsContext: React.Context<DataTableColumnsContextValue | null>;