@softize/opus 12.10.0 → 12.11.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 (76) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/bin/lib/check.mjs +1103 -310
  3. package/bin/lib/copy.mjs +11 -0
  4. package/docs/adr/0003-dictionary-presentation-is-declared.md +3 -0
  5. package/docs/adr/0004-page-content-state-is-composed.md +65 -0
  6. package/docs/adr/0005-structural-surfaces-share-an-explicit-anatomy.md +97 -0
  7. package/docs/adr/0006-semantic-context-precedes-visual-variant.md +182 -0
  8. package/package.json +1 -1
  9. package/registry/instructions/opus.md +5 -0
  10. package/registry/skills/build-opus-ui/SKILL.md +27 -16
  11. package/registry/skills/build-opus-ui/references/evaluations.md +16 -5
  12. package/registry/skills/build-opus-ui/references/ui-patterns.md +38 -15
  13. package/registry/skills/model-opus-dictionary/SKILL.md +4 -2
  14. package/registry/skills/model-opus-dictionary/references/evaluations.md +4 -3
  15. package/registry/templates/app/src/App.tsx +1 -1
  16. package/src/core/dictionary.ts +52 -14
  17. package/src/core/index.ts +10 -0
  18. package/src/core/ui-context.ts +29 -0
  19. package/src/schema/drivers/zod.ts +17 -8
  20. package/src/ui/components/patterns/action-form-card.tsx +18 -12
  21. package/src/ui/components/patterns/confirm.tsx +26 -3
  22. package/src/ui/components/patterns/content-header.tsx +335 -61
  23. package/src/ui/components/patterns/data-state.tsx +23 -10
  24. package/src/ui/components/patterns/list.tsx +1096 -777
  25. package/src/ui/components/patterns/page-state.tsx +115 -0
  26. package/src/ui/components/patterns/page.tsx +231 -41
  27. package/src/ui/components/patterns/sidebar.tsx +354 -80
  28. package/src/ui/components/patterns/trigger.tsx +13 -9
  29. package/src/ui/components/patterns/view.tsx +7 -11
  30. package/src/ui/components/primitives/alert-dialog.tsx +7 -5
  31. package/src/ui/components/primitives/alert.tsx +298 -110
  32. package/src/ui/components/primitives/ask.tsx +2 -1
  33. package/src/ui/components/primitives/badge.tsx +91 -30
  34. package/src/ui/components/primitives/button.tsx +99 -60
  35. package/src/ui/components/primitives/calendar.tsx +39 -39
  36. package/src/ui/components/primitives/card.tsx +96 -23
  37. package/src/ui/components/primitives/detail.tsx +2 -2
  38. package/src/ui/components/primitives/dictionary-value.tsx +9 -14
  39. package/src/ui/components/primitives/dot.tsx +74 -21
  40. package/src/ui/components/primitives/drawer.tsx +33 -20
  41. package/src/ui/components/primitives/item.tsx +137 -81
  42. package/src/ui/components/primitives/menu.tsx +11 -3
  43. package/src/ui/components/primitives/metric-card.tsx +133 -0
  44. package/src/ui/components/primitives/table.tsx +2 -2
  45. package/src/ui/docs/DocBrowser.tsx +3 -3
  46. package/src/ui/docs/changelog.tsx +1 -1
  47. package/src/ui/docs/content/action-form-card.md +1 -1
  48. package/src/ui/docs/content/alert-dialog.md +8 -8
  49. package/src/ui/docs/content/alert.md +49 -25
  50. package/src/ui/docs/content/badge.md +18 -19
  51. package/src/ui/docs/content/button.md +12 -9
  52. package/src/ui/docs/content/card.md +5 -5
  53. package/src/ui/docs/content/content.md +44 -0
  54. package/src/ui/docs/content/customization.md +2 -2
  55. package/src/ui/docs/content/detail.md +5 -2
  56. package/src/ui/docs/content/dialog.md +2 -2
  57. package/src/ui/docs/content/dictionary-value.md +11 -10
  58. package/src/ui/docs/content/dot.md +7 -7
  59. package/src/ui/docs/content/drawer.md +6 -3
  60. package/src/ui/docs/content/input-group.md +3 -2
  61. package/src/ui/docs/content/item.md +47 -21
  62. package/src/ui/docs/content/menu.md +5 -4
  63. package/src/ui/docs/content/metric-card.md +41 -0
  64. package/src/ui/docs/content/page-state.md +45 -0
  65. package/src/ui/docs/content/page.md +48 -10
  66. package/src/ui/docs/content/semantic-context.md +63 -0
  67. package/src/ui/docs/content/sidebar.md +4 -4
  68. package/src/ui/docs/content/skeleton.md +2 -2
  69. package/src/ui/docs/content/table.md +3 -3
  70. package/src/ui/docs/content/tokens.md +28 -0
  71. package/src/ui/docs/doc-client.tsx +2 -2
  72. package/src/ui/docs/registry.tsx +596 -228
  73. package/src/ui/lib/semantic-context.ts +30 -0
  74. package/src/ui/meta.ts +292 -270
  75. package/src/ui/react.tsx +378 -111
  76. package/src/ui/theme.css +66 -0
package/src/ui/react.tsx CHANGED
@@ -5,28 +5,41 @@
5
5
  * `meta` de cada componente NÃO é re-exportado aqui de propósito — é metadado de
6
6
  * build-time (lido pelo manifesto/MCP da fonte), fora do bundle de runtime.
7
7
  */
8
- export * from './drivers/react.tsx'
8
+ export * from "./drivers/react.tsx";
9
9
 
10
10
  // Utilitário
11
- export { cn } from './lib/cn.ts'
11
+ export { cn } from "./lib/cn.ts";
12
12
 
13
13
  // Primitivos
14
- export { Button, buttonVariants } from './components/primitives/button.tsx'
15
- export type { ButtonProps } from './components/primitives/button.tsx'
16
- export type { ControlShape } from './components/primitives/control.ts'
14
+ export { Button, buttonVariants } from "./components/primitives/button.tsx";
15
+ export type {
16
+ ButtonProps,
17
+ ButtonContext,
18
+ ButtonVariant,
19
+ ButtonSize,
20
+ } from "./components/primitives/button.tsx";
21
+ export type { ControlShape } from "./components/primitives/control.ts";
17
22
 
18
- export { Input } from './components/primitives/input.tsx'
23
+ export { Input } from "./components/primitives/input.tsx";
19
24
 
20
- export { Chat } from './components/primitives/chat.tsx'
21
- export type { ChatProps, ChatMessage, ChatArtifact, ChatTranscriptItem } from './components/primitives/chat.tsx'
22
- export { Ask } from './components/primitives/ask.tsx'
23
- export type { AskProps } from './components/primitives/ask.tsx'
24
- export { Composer } from './components/primitives/composer.tsx'
25
- export type { ComposerProps } from './components/primitives/composer.tsx'
26
- export { Copyable } from './components/primitives/copyable.tsx'
27
- export type { CopyableProps } from './components/primitives/copyable.tsx'
28
- export { IconPicker, iconPickerIcons } from './components/primitives/icon-picker.tsx'
29
- export type { IconPickerProps } from './components/primitives/icon-picker.tsx'
25
+ export { Chat } from "./components/primitives/chat.tsx";
26
+ export type {
27
+ ChatProps,
28
+ ChatMessage,
29
+ ChatArtifact,
30
+ ChatTranscriptItem,
31
+ } from "./components/primitives/chat.tsx";
32
+ export { Ask } from "./components/primitives/ask.tsx";
33
+ export type { AskProps } from "./components/primitives/ask.tsx";
34
+ export { Composer } from "./components/primitives/composer.tsx";
35
+ export type { ComposerProps } from "./components/primitives/composer.tsx";
36
+ export { Copyable } from "./components/primitives/copyable.tsx";
37
+ export type { CopyableProps } from "./components/primitives/copyable.tsx";
38
+ export {
39
+ IconPicker,
40
+ iconPickerIcons,
41
+ } from "./components/primitives/icon-picker.tsx";
42
+ export type { IconPickerProps } from "./components/primitives/icon-picker.tsx";
30
43
 
31
44
  export {
32
45
  Command,
@@ -38,28 +51,38 @@ export {
38
51
  CommandItem,
39
52
  CommandSeparator,
40
53
  CommandShortcut,
41
- } from './components/primitives/command.tsx'
54
+ } from "./components/primitives/command.tsx";
42
55
 
43
- export { Textarea } from './components/primitives/textarea.tsx'
56
+ export { Textarea } from "./components/primitives/textarea.tsx";
44
57
 
45
- export { Label } from './components/primitives/label.tsx'
58
+ export { Label } from "./components/primitives/label.tsx";
46
59
 
47
- export { Badge, badgeVariants } from './components/primitives/badge.tsx'
48
- export type { BadgeProps } from './components/primitives/badge.tsx'
60
+ export { Badge, badgeVariants } from "./components/primitives/badge.tsx";
61
+ export type {
62
+ BadgeProps,
63
+ BadgeContext,
64
+ BadgeVariant,
65
+ } from "./components/primitives/badge.tsx";
49
66
 
50
- export { DictionaryValue } from './components/primitives/dictionary-value.tsx'
51
- export { EmptyValue, isAbsentValue } from './components/primitives/empty-value.tsx'
52
- export type { EmptyValueProps } from './components/primitives/empty-value.tsx'
53
- export type { DictionaryValueProps, DictionaryValueSource } from './components/primitives/dictionary-value.tsx'
67
+ export { DictionaryValue } from "./components/primitives/dictionary-value.tsx";
68
+ export {
69
+ EmptyValue,
70
+ isAbsentValue,
71
+ } from "./components/primitives/empty-value.tsx";
72
+ export type { EmptyValueProps } from "./components/primitives/empty-value.tsx";
73
+ export type {
74
+ DictionaryValueProps,
75
+ DictionaryValueSource,
76
+ } from "./components/primitives/dictionary-value.tsx";
54
77
 
55
- export { DetailField, DetailGroup } from './components/primitives/detail.tsx'
78
+ export { DetailField, DetailGroup } from "./components/primitives/detail.tsx";
56
79
  export type {
57
80
  DetailFieldProps,
58
81
  DetailGroupColumns,
59
82
  DetailGroupOrientation,
60
83
  DetailGroupProps,
61
84
  DetailGroupVariant,
62
- } from './components/primitives/detail.tsx'
85
+ } from "./components/primitives/detail.tsx";
63
86
 
64
87
  export {
65
88
  Card,
@@ -67,12 +90,32 @@ export {
67
90
  CardTitle,
68
91
  CardDescription,
69
92
  CardAction,
93
+ CardBody,
70
94
  CardContent,
71
95
  CardFooter,
72
- } from './components/primitives/card.tsx'
96
+ } from "./components/primitives/card.tsx";
73
97
 
74
- export { Alert, AlertTitle, AlertDescription, alertVariants } from './components/primitives/alert.tsx'
75
- export type { AlertProps } from './components/primitives/alert.tsx'
98
+ export { MetricCard } from "./components/primitives/metric-card.tsx";
99
+ export type {
100
+ MetricCardProps,
101
+ MetricCardContext,
102
+ MetricCardTone,
103
+ } from "./components/primitives/metric-card.tsx";
104
+
105
+ export {
106
+ Alert,
107
+ AlertActions,
108
+ AlertTitle,
109
+ AlertDescription,
110
+ AlertHeader,
111
+ AlertMedia,
112
+ alertVariants,
113
+ } from "./components/primitives/alert.tsx";
114
+ export type {
115
+ AlertProps,
116
+ AlertContext,
117
+ AlertVariant,
118
+ } from "./components/primitives/alert.tsx";
76
119
 
77
120
  export {
78
121
  Dialog,
@@ -86,7 +129,7 @@ export {
86
129
  DialogFooter,
87
130
  DialogTitle,
88
131
  DialogDescription,
89
- } from './components/primitives/dialog.tsx'
132
+ } from "./components/primitives/dialog.tsx";
90
133
 
91
134
  export {
92
135
  Menu,
@@ -104,7 +147,7 @@ export {
104
147
  MenuLabel,
105
148
  MenuSeparator,
106
149
  MenuShortcut,
107
- } from './components/primitives/menu.tsx'
150
+ } from "./components/primitives/menu.tsx";
108
151
 
109
152
  export {
110
153
  Popover,
@@ -114,30 +157,30 @@ export {
114
157
  PopoverHeader,
115
158
  PopoverTitle,
116
159
  PopoverDescription,
117
- } from './components/primitives/popover.tsx'
160
+ } from "./components/primitives/popover.tsx";
118
161
 
119
162
  export {
120
163
  TooltipProvider,
121
164
  Tooltip,
122
165
  TooltipTrigger,
123
166
  TooltipContent,
124
- } from './components/primitives/tooltip.tsx'
167
+ } from "./components/primitives/tooltip.tsx";
125
168
 
126
- export { Checkbox } from './components/primitives/checkbox.tsx'
169
+ export { Checkbox } from "./components/primitives/checkbox.tsx";
127
170
 
128
- export { Separator } from './components/primitives/separator.tsx'
171
+ export { Separator } from "./components/primitives/separator.tsx";
129
172
 
130
173
  export {
131
174
  Tabs,
132
175
  TabsList,
133
176
  TabsTrigger,
134
177
  TabsContent,
135
- } from './components/primitives/tabs.tsx'
178
+ } from "./components/primitives/tabs.tsx";
136
179
 
137
- export { Skeleton } from './components/primitives/skeleton.tsx'
180
+ export { Skeleton } from "./components/primitives/skeleton.tsx";
138
181
 
139
- export { Spinner } from './components/primitives/spinner.tsx'
140
- export type { SpinnerProps } from './components/primitives/spinner.tsx'
182
+ export { Spinner } from "./components/primitives/spinner.tsx";
183
+ export type { SpinnerProps } from "./components/primitives/spinner.tsx";
141
184
 
142
185
  export {
143
186
  Table,
@@ -148,110 +191,334 @@ export {
148
191
  TableHead,
149
192
  TableCell,
150
193
  TableCaption,
151
- } from './components/primitives/table.tsx'
152
- export type { TableProps } from './components/primitives/table.tsx'
194
+ } from "./components/primitives/table.tsx";
195
+ export type { TableProps } from "./components/primitives/table.tsx";
153
196
 
154
197
  // UM seletor: `native` (menu do SO), `searchable` (busca), `multiple` (chips) e
155
198
  // `variant="ghost"` (barra de composer) são PROPS, não componentes. Ver select.tsx.
156
- export { Select } from './components/primitives/select.tsx'
157
- export type { SelectProps, SelectOption } from './components/primitives/select.tsx'
199
+ export { Select } from "./components/primitives/select.tsx";
200
+ export type {
201
+ SelectProps,
202
+ SelectOption,
203
+ } from "./components/primitives/select.tsx";
158
204
 
159
- export { Toaster, toast } from './components/primitives/sonner.tsx'
160
- export { Markdown } from './components/primitives/markdown.tsx'
205
+ export { Toaster, toast } from "./components/primitives/sonner.tsx";
206
+ export { Markdown } from "./components/primitives/markdown.tsx";
161
207
 
162
208
  // shadcn (lote inicial — byte-fiéis via registry JSON, locked no registry.lock.json)
163
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './components/primitives/accordion.tsx'
164
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from './components/primitives/alert-dialog.tsx'
165
- export { AspectRatio } from './components/primitives/aspect-ratio.tsx'
166
- export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from './components/primitives/avatar.tsx'
167
- export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from './components/primitives/breadcrumb.tsx'
168
- export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants } from './components/primitives/button-group.tsx'
169
- export { Calendar, CalendarDayButton } from './components/primitives/calendar.tsx'
170
- export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from './components/primitives/carousel.tsx'
171
- export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './components/primitives/collapsible.tsx'
172
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from './components/primitives/drawer.tsx'
173
- export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from './components/primitives/empty.tsx'
174
- export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from './components/primitives/field.tsx'
175
- export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea } from './components/primitives/input-group.tsx'
176
- export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from './components/primitives/input-otp.tsx'
177
- export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle } from './components/primitives/item.tsx'
178
- export { Kbd, KbdGroup } from './components/primitives/kbd.tsx'
179
- export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from './components/primitives/pagination.tsx'
180
- export type { PaginationLinkProps, PaginationControlProps } from './components/primitives/pagination.tsx'
181
- export { Progress } from './components/primitives/progress.tsx'
182
- export { RadioGroup, RadioGroupItem } from './components/primitives/radio-group.tsx'
183
- export { ScrollArea, ScrollBar } from './components/primitives/scroll-area.tsx'
184
- export { Slider } from './components/primitives/slider.tsx'
185
- export { Switch } from './components/primitives/switch.tsx'
186
- export { Toggle, toggleVariants } from './components/primitives/toggle.tsx'
187
- export { ToggleGroup, ToggleGroupItem } from './components/primitives/toggle-group.tsx'
188
- export { Truncate } from './components/primitives/truncate.tsx'
189
- export type { TruncateProps } from './components/primitives/truncate.tsx'
209
+ export {
210
+ Accordion,
211
+ AccordionContent,
212
+ AccordionItem,
213
+ AccordionTrigger,
214
+ } from "./components/primitives/accordion.tsx";
215
+ export {
216
+ AlertDialog,
217
+ AlertDialogAction,
218
+ AlertDialogCancel,
219
+ AlertDialogContent,
220
+ AlertDialogDescription,
221
+ AlertDialogFooter,
222
+ AlertDialogHeader,
223
+ AlertDialogMedia,
224
+ AlertDialogOverlay,
225
+ AlertDialogPortal,
226
+ AlertDialogTitle,
227
+ AlertDialogTrigger,
228
+ } from "./components/primitives/alert-dialog.tsx";
229
+ export { AspectRatio } from "./components/primitives/aspect-ratio.tsx";
230
+ export {
231
+ Avatar,
232
+ AvatarBadge,
233
+ AvatarFallback,
234
+ AvatarGroup,
235
+ AvatarGroupCount,
236
+ AvatarImage,
237
+ } from "./components/primitives/avatar.tsx";
238
+ export {
239
+ Breadcrumb,
240
+ BreadcrumbEllipsis,
241
+ BreadcrumbItem,
242
+ BreadcrumbLink,
243
+ BreadcrumbList,
244
+ BreadcrumbPage,
245
+ BreadcrumbSeparator,
246
+ } from "./components/primitives/breadcrumb.tsx";
247
+ export {
248
+ ButtonGroup,
249
+ ButtonGroupSeparator,
250
+ ButtonGroupText,
251
+ buttonGroupVariants,
252
+ } from "./components/primitives/button-group.tsx";
253
+ export {
254
+ Calendar,
255
+ CalendarDayButton,
256
+ } from "./components/primitives/calendar.tsx";
257
+ export {
258
+ Carousel,
259
+ CarouselContent,
260
+ CarouselItem,
261
+ CarouselNext,
262
+ CarouselPrevious,
263
+ } from "./components/primitives/carousel.tsx";
264
+ export {
265
+ Collapsible,
266
+ CollapsibleContent,
267
+ CollapsibleTrigger,
268
+ } from "./components/primitives/collapsible.tsx";
269
+ export {
270
+ Drawer,
271
+ DrawerClose,
272
+ DrawerContent,
273
+ DrawerDescription,
274
+ DrawerFooter,
275
+ DrawerHeader,
276
+ DrawerBody,
277
+ DrawerTitle,
278
+ DrawerTrigger,
279
+ } from "./components/primitives/drawer.tsx";
280
+ export {
281
+ Empty,
282
+ EmptyContent,
283
+ EmptyDescription,
284
+ EmptyHeader,
285
+ EmptyMedia,
286
+ EmptyTitle,
287
+ } from "./components/primitives/empty.tsx";
288
+ export {
289
+ Field,
290
+ FieldContent,
291
+ FieldDescription,
292
+ FieldError,
293
+ FieldGroup,
294
+ FieldLabel,
295
+ FieldLegend,
296
+ FieldSeparator,
297
+ FieldSet,
298
+ FieldTitle,
299
+ } from "./components/primitives/field.tsx";
300
+ export {
301
+ InputGroup,
302
+ InputGroupAddon,
303
+ InputGroupButton,
304
+ InputGroupInput,
305
+ InputGroupText,
306
+ InputGroupTextarea,
307
+ } from "./components/primitives/input-group.tsx";
308
+ export {
309
+ InputOTP,
310
+ InputOTPGroup,
311
+ InputOTPSeparator,
312
+ InputOTPSlot,
313
+ } from "./components/primitives/input-otp.tsx";
314
+ export {
315
+ Item,
316
+ ItemActions,
317
+ ItemBody,
318
+ ItemContent,
319
+ ItemDescription,
320
+ ItemFooter,
321
+ ItemGroup,
322
+ ItemHeader,
323
+ ItemMedia,
324
+ ItemSeparator,
325
+ ItemTitle,
326
+ } from "./components/primitives/item.tsx";
327
+ export { Kbd, KbdGroup } from "./components/primitives/kbd.tsx";
328
+ export {
329
+ Pagination,
330
+ PaginationContent,
331
+ PaginationEllipsis,
332
+ PaginationItem,
333
+ PaginationLink,
334
+ PaginationNext,
335
+ PaginationPrevious,
336
+ } from "./components/primitives/pagination.tsx";
337
+ export type {
338
+ PaginationLinkProps,
339
+ PaginationControlProps,
340
+ } from "./components/primitives/pagination.tsx";
341
+ export { Progress } from "./components/primitives/progress.tsx";
342
+ export {
343
+ RadioGroup,
344
+ RadioGroupItem,
345
+ } from "./components/primitives/radio-group.tsx";
346
+ export { ScrollArea, ScrollBar } from "./components/primitives/scroll-area.tsx";
347
+ export { Slider } from "./components/primitives/slider.tsx";
348
+ export { Switch } from "./components/primitives/switch.tsx";
349
+ export { Toggle, toggleVariants } from "./components/primitives/toggle.tsx";
350
+ export {
351
+ ToggleGroup,
352
+ ToggleGroupItem,
353
+ } from "./components/primitives/toggle-group.tsx";
354
+ export { Truncate } from "./components/primitives/truncate.tsx";
355
+ export type { TruncateProps } from "./components/primitives/truncate.tsx";
190
356
 
191
357
  // A medição de transbordo por trás do Truncate, exposta para composições que precisam
192
358
  // do sinal de corte sem o tooltip — por exemplo, esmaecer um rótulo com `truncate-fade`.
193
- export { useOverflowing } from './lib/overflow.ts'
359
+ export { useOverflowing } from "./lib/overflow.ts";
194
360
 
195
361
  // Patterns (renderizam actions a partir do spec)
196
- export { ActionForm, ActionFormField, useActionFormContext } from './components/patterns/form.tsx'
197
- export type { ActionFormProps, ActionFormFieldProps, ActionFormContextValue } from './components/patterns/form.tsx'
198
-
199
- export { ActionFormDialog } from './components/patterns/form-dialog.tsx'
200
- export type { ActionFormDialogProps } from './components/patterns/form-dialog.tsx'
201
-
202
- export { ActionFormCard } from './components/patterns/action-form-card.tsx'
203
- export type { ActionFormCardProps } from './components/patterns/action-form-card.tsx'
362
+ export {
363
+ ActionForm,
364
+ ActionFormField,
365
+ useActionFormContext,
366
+ } from "./components/patterns/form.tsx";
367
+ export type {
368
+ ActionFormProps,
369
+ ActionFormFieldProps,
370
+ ActionFormContextValue,
371
+ } from "./components/patterns/form.tsx";
204
372
 
205
- export { ActionFilterBar, ActionList, emptyListState, presetRange, listParamsToState, listStateToParams } from './components/patterns/list.tsx'
206
- export type { ActionFilterBarProps, ActionFilterState, ActionListProps, ActionListColumn, ActionListState, ActionListView, ActionListBatchAction, ListActionLike } from './components/patterns/list.tsx'
373
+ export { ActionFormDialog } from "./components/patterns/form-dialog.tsx";
374
+ export type { ActionFormDialogProps } from "./components/patterns/form-dialog.tsx";
207
375
 
208
- export { ActionView } from './components/patterns/view.tsx'
209
- export type { ActionViewProps } from './components/patterns/view.tsx'
376
+ export { ActionFormCard } from "./components/patterns/action-form-card.tsx";
377
+ export type { ActionFormCardProps } from "./components/patterns/action-form-card.tsx";
210
378
 
211
- export { ActionTrigger } from './components/patterns/trigger.tsx'
212
- export { dialog, DialogHost, confirm, ConfirmHost } from './components/patterns/confirm.tsx'
213
- export type { AlertOptions, ConfirmOptions, PromptOptions } from './components/patterns/confirm.tsx'
214
- export type { ActionTriggerProps } from './components/patterns/trigger.tsx'
379
+ export {
380
+ ActionFilterBar,
381
+ ActionList,
382
+ emptyListState,
383
+ presetRange,
384
+ listParamsToState,
385
+ listStateToParams,
386
+ } from "./components/patterns/list.tsx";
387
+ export type {
388
+ ActionFilterBarProps,
389
+ ActionFilterState,
390
+ ActionListProps,
391
+ ActionListColumn,
392
+ ActionListState,
393
+ ActionListView,
394
+ ActionListBatchAction,
395
+ ListActionLike,
396
+ } from "./components/patterns/list.tsx";
397
+
398
+ export { ActionView } from "./components/patterns/view.tsx";
399
+ export type { ActionViewProps } from "./components/patterns/view.tsx";
400
+
401
+ export { ActionTrigger } from "./components/patterns/trigger.tsx";
402
+ export {
403
+ dialog,
404
+ DialogHost,
405
+ confirm,
406
+ ConfirmHost,
407
+ } from "./components/patterns/confirm.tsx";
408
+ export type {
409
+ AlertOptions,
410
+ ConfirmOptions,
411
+ PromptOptions,
412
+ } from "./components/patterns/confirm.tsx";
413
+ export type { ActionTriggerProps } from "./components/patterns/trigger.tsx";
215
414
 
216
415
  // Listagem em modal: ListAction query-backed + chrome (toolbar/estados derivados).
217
- export { ActionListDialog } from './components/patterns/action-list-dialog.tsx'
218
- export type { ActionListDialogProps } from './components/patterns/action-list-dialog.tsx'
416
+ export { ActionListDialog } from "./components/patterns/action-list-dialog.tsx";
417
+ export type { ActionListDialogProps } from "./components/patterns/action-list-dialog.tsx";
219
418
 
220
419
  // Estado de carga (carregando/vazio/erro → conteúdo) — o "antes" do conteúdo.
221
- export { DataState } from './components/patterns/data-state.tsx'
222
- export type { DataStateProps } from './components/patterns/data-state.tsx'
420
+ export { DataState } from "./components/patterns/data-state.tsx";
421
+ export type { DataStateProps } from "./components/patterns/data-state.tsx";
223
422
 
224
423
  // Esqueleto de página do back-office (main + container + header título/descrição/ação).
225
- export { Page } from './components/patterns/page.tsx'
226
- export type { PageProps } from './components/patterns/page.tsx'
424
+ export {
425
+ Page,
426
+ PageHeader,
427
+ PageTitle,
428
+ PageDescription,
429
+ PageMeta,
430
+ PageActions,
431
+ PageBody,
432
+ } from "./components/patterns/page.tsx";
433
+ export type { PageProps } from "./components/patterns/page.tsx";
434
+
435
+ // Estado integral do conteúdo de Page (loading/error/empty/ready), sem acoplar Page a dados.
436
+ export { PageState } from "./components/patterns/page-state.tsx";
437
+ export type {
438
+ PageStateProps,
439
+ PageStateStatus,
440
+ } from "./components/patterns/page-state.tsx";
227
441
 
228
- // Cabeçalho de conteúdo em duas hierarquias visuais, sem impor espaçamento externo.
229
- export { ContentHeader } from './components/patterns/content-header.tsx'
442
+ // Região de conteúdo composta; shorthand e slots explícitos compartilham a mesma anatomia.
443
+ export {
444
+ Content,
445
+ ContentHeader,
446
+ ContentTitle,
447
+ ContentDescription,
448
+ ContentMeta,
449
+ ContentActions,
450
+ ContentBody,
451
+ } from "./components/patterns/content-header.tsx";
230
452
  export type {
453
+ ContentProps,
231
454
  ContentHeaderProps,
232
455
  ContentHeaderLevel,
233
456
  ContentHeaderVariant,
234
- } from './components/patterns/content-header.tsx'
457
+ } from "./components/patterns/content-header.tsx";
235
458
 
236
459
  // Layout composicional: Split decide a relação espacial; Pane carrega conteúdo com inset.
237
- export { Split, Pane } from './components/patterns/split.tsx'
238
- export type { SplitProps, PaneProps, PaneSize, SplitLayout, SplitLayoutChange } from './components/patterns/split.tsx'
460
+ export { Split, Pane } from "./components/patterns/split.tsx";
461
+ export type {
462
+ SplitProps,
463
+ PaneProps,
464
+ PaneSize,
465
+ SplitLayout,
466
+ SplitLayoutChange,
467
+ } from "./components/patterns/split.tsx";
239
468
 
240
469
  // A barra de ferramentas que flutua sobre uma superfície de trabalho (canvas, editor, preview).
241
- export { Dock, DockGroup, DockAction, SurfaceStatus } from './components/patterns/dock.tsx'
242
- export type { DockProps, DockActionProps, SurfaceStatusProps } from './components/patterns/dock.tsx'
470
+ export {
471
+ Dock,
472
+ DockGroup,
473
+ DockAction,
474
+ SurfaceStatus,
475
+ } from "./components/patterns/dock.tsx";
476
+ export type {
477
+ DockProps,
478
+ DockActionProps,
479
+ SurfaceStatusProps,
480
+ } from "./components/patterns/dock.tsx";
243
481
 
244
482
  // Barra lateral composicional: header/conteúdo/footer e navegação, sem possuir o layout.
245
- export { PaneHeader, PaneContent, PaneFooter, Sidebar, SidebarItem, SidebarGroupLabel, SidebarNav } from './components/patterns/sidebar.tsx'
246
- export type { SidebarProps, SidebarItemProps, SidebarNavGroup, SidebarNavSubgroup, SidebarNavItem } from './components/patterns/sidebar.tsx'
483
+ export {
484
+ PaneHeader,
485
+ PaneBody,
486
+ PaneContent,
487
+ PaneFooter,
488
+ Sidebar,
489
+ SidebarItem,
490
+ SidebarGroupLabel,
491
+ SidebarNav,
492
+ } from "./components/patterns/sidebar.tsx";
493
+ export type {
494
+ SidebarProps,
495
+ SidebarItemProps,
496
+ SidebarNavGroup,
497
+ SidebarNavSubgroup,
498
+ SidebarNavItem,
499
+ } from "./components/patterns/sidebar.tsx";
247
500
 
248
501
  // O menu como primitivo pivotável: recolhe quando composto dentro de Sidebar.
249
- export { ShellNav, ShellNavHeading } from './components/patterns/shell-nav.tsx'
250
- export type { ShellNavProps, ShellNavGroup, ShellNavItem, ShellNavHeadingProps } from './components/patterns/shell-nav.tsx'
502
+ export { ShellNav, ShellNavHeading } from "./components/patterns/shell-nav.tsx";
503
+ export type {
504
+ ShellNavProps,
505
+ ShellNavGroup,
506
+ ShellNavItem,
507
+ ShellNavHeadingProps,
508
+ } from "./components/patterns/shell-nav.tsx";
251
509
 
252
510
  // Roteamento history-based (o pathname É o estado). Escopo pequeno de propósito: leitura
253
511
  // reativa da URL + navigate — sem tabela de rotas. Ver src/ui/router.ts.
254
- export { navigate, usePathname, useSegments, useSearchParams } from './router.ts'
255
- export type { NavigateOptions } from './router.ts'
256
- export { Dot, dotVariants } from './components/primitives/dot.tsx'
257
- export type { DotProps } from './components/primitives/dot.tsx'
512
+ export {
513
+ navigate,
514
+ usePathname,
515
+ useSegments,
516
+ useSearchParams,
517
+ } from "./router.ts";
518
+ export type { NavigateOptions } from "./router.ts";
519
+ export { Dot, dotVariants } from "./components/primitives/dot.tsx";
520
+ export type {
521
+ DotProps,
522
+ DotContext,
523
+ DotVariant,
524
+ } from "./components/primitives/dot.tsx";