@godxjp/ui 11.0.2 → 11.1.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.
@@ -1,4 +1,4 @@
1
- export { Calendar } from '../../chunk-DNGJHWJZ.js';
1
+ export { Calendar } from '../../chunk-FTOG7D4T.js';
2
2
  import '../../chunk-M4PZNAMV.js';
3
3
  import '../../chunk-IBK5D2Q6.js';
4
4
  import '../../chunk-U7N2A7A3.js';
@@ -1,13 +1,10 @@
1
- export { Cascader } from '../../chunk-5NCFLCM7.js';
1
+ export { Cascader } from '../../chunk-LN7GE73P.js';
2
2
  import '../../chunk-SMLKNECP.js';
3
3
  import '../../chunk-HTEL5DQI.js';
4
- import '../../chunk-BE6GJGKJ.js';
5
- import '../../chunk-44YRPSZ7.js';
6
4
  import '../../chunk-M4PZNAMV.js';
7
5
  import '../../chunk-DY5C44UP.js';
8
6
  import '../../chunk-3KPEZ5CF.js';
9
7
  import '../../chunk-IBK5D2Q6.js';
10
- import '../../chunk-7PWBC4BY.js';
11
8
  import '../../chunk-HTG5VHU7.js';
12
9
  import '../../chunk-6CSBMMZS.js';
13
10
  import '../../chunk-U7N2A7A3.js';
@@ -1,5 +1,5 @@
1
- export { DatePicker } from '../../chunk-54R5TEXH.js';
2
- import '../../chunk-DNGJHWJZ.js';
1
+ export { DatePicker } from '../../chunk-7BF7U3GG.js';
2
+ import '../../chunk-FTOG7D4T.js';
3
3
  import '../../chunk-VOHTRR5X.js';
4
4
  import '../../chunk-M4PZNAMV.js';
5
5
  import '../../chunk-DY5C44UP.js';
@@ -1,5 +1,5 @@
1
- export { DateRangePicker } from '../../chunk-QR7MITE6.js';
2
- import '../../chunk-DNGJHWJZ.js';
1
+ export { DateRangePicker } from '../../chunk-QWALQSBS.js';
2
+ import '../../chunk-FTOG7D4T.js';
3
3
  import '../../chunk-VOHTRR5X.js';
4
4
  import '../../chunk-M4PZNAMV.js';
5
5
  import '../../chunk-DY5C44UP.js';
@@ -1,14 +1,14 @@
1
1
  export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, PasswordInput, Rating, TagInput } from '../../chunk-Z46J47FY.js';
2
2
  export { PasswordStrength, Toggle, ToggleGroup, ToggleGroupItem, usePasswordStrength } from '../../chunk-VSUYVT2Q.js';
3
- export { TimePicker } from '../../chunk-VSM44AYE.js';
4
- export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-S2IJKT3D.js';
5
- export { Switch } from '../../chunk-I7NQ2LIL.js';
6
3
  export { Textarea } from '../../chunk-EOTOCNT7.js';
7
4
  export { TimeInput } from '../../chunk-3Q4A4U2P.js';
5
+ export { TimePicker } from '../../chunk-F6JGFU6O.js';
6
+ export { DateRangePicker } from '../../chunk-QWALQSBS.js';
7
+ export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-S2IJKT3D.js';
8
+ export { Switch } from '../../chunk-I7NQ2LIL.js';
8
9
  export { ColorPicker } from '../../chunk-EE5DKOHX.js';
9
- export { DatePicker } from '../../chunk-54R5TEXH.js';
10
- export { DateRangePicker } from '../../chunk-QR7MITE6.js';
11
- export { Calendar } from '../../chunk-DNGJHWJZ.js';
10
+ export { DatePicker } from '../../chunk-7BF7U3GG.js';
11
+ export { Calendar } from '../../chunk-FTOG7D4T.js';
12
12
  export { SearchInput, Transfer } from '../../chunk-2HOTP7RL.js';
13
13
  export { SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeSelect } from '../../chunk-UNVRNJCB.js';
14
14
  export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-FAB3LMTK.js';
@@ -16,7 +16,7 @@ import '../../chunk-X2VY4MOW.js';
16
16
  import '../../chunk-BG5RNXTH.js';
17
17
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from '../../chunk-NXVCI6YB.js';
18
18
  export { Slider } from '../../chunk-CRERCLIZ.js';
19
- export { Cascader } from '../../chunk-5NCFLCM7.js';
19
+ export { Cascader } from '../../chunk-LN7GE73P.js';
20
20
  import '../../chunk-SMLKNECP.js';
21
21
  export { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../../chunk-HTEL5DQI.js';
22
22
  export { Input } from '../../chunk-VOHTRR5X.js';
@@ -1,4 +1,4 @@
1
- export { TimePicker } from '../../chunk-VSM44AYE.js';
1
+ export { TimePicker } from '../../chunk-F6JGFU6O.js';
2
2
  import '../../chunk-VOHTRR5X.js';
3
3
  import '../../chunk-M4PZNAMV.js';
4
4
  import '../../chunk-DY5C44UP.js';
@@ -1,8 +1,8 @@
1
1
  export { AppShell, Breadcrumb, PageContainer, ResponsiveGrid, Sidebar, SidebarHeader, SidebarItem, SidebarSection, SplitPane, Topbar } from '../../chunk-PUGEOUWZ.js';
2
2
  export { AspectRatio, Separator } from '../../chunk-XK3M3VRR.js';
3
3
  import '../../chunk-32WO3YLB.js';
4
- import '../../chunk-LMKUKCTN.js';
5
4
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../chunk-W4REF4TD.js';
5
+ import '../../chunk-LMKUKCTN.js';
6
6
  import '../../chunk-DV52WNXO.js';
7
7
  export { Flex } from '../../chunk-INIIF7F7.js';
8
8
  import '../../chunk-DY5C44UP.js';
@@ -1,10 +1,10 @@
1
1
  export { AppSettingPicker, Toolbar, ToolbarGroup } from '../../chunk-T2QO2S65.js';
2
- export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-PDXFQS7M.js';
3
2
  export { Steps } from '../../chunk-SARQRCKO.js';
4
- export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
5
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
6
3
  export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '../../chunk-B73NA66T.js';
7
4
  export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport } from '../../chunk-WGWI7EGL.js';
5
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-Q4WWD4VV.js';
6
+ export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
7
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
8
8
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../../chunk-LMKUKCTN.js';
9
9
  import '../../chunk-NXVCI6YB.js';
10
10
  import '../../chunk-HTEL5DQI.js';
@@ -1,4 +1,4 @@
1
- export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-PDXFQS7M.js';
1
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-Q4WWD4VV.js';
2
2
  import '../../chunk-NXVCI6YB.js';
3
3
  import '../../chunk-HTEL5DQI.js';
4
4
  import '../../chunk-VOHTRR5X.js';
@@ -3,26 +3,26 @@ export { Card, CardAction, CardContent, CardCover, CardDescription, CardFooter,
3
3
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel } from '../../chunk-JWGLJXQU.js';
4
4
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from '../../chunk-EZHHJQWQ.js';
5
5
  export { PasswordStrength, Toggle, ToggleGroup, ToggleGroupItem, toggleVariants, usePasswordStrength } from '../../chunk-VSUYVT2Q.js';
6
- export { TimePicker } from '../../chunk-VSM44AYE.js';
7
- export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-S2IJKT3D.js';
8
- export { Switch } from '../../chunk-I7NQ2LIL.js';
9
6
  export { Textarea } from '../../chunk-EOTOCNT7.js';
10
7
  export { TimeInput } from '../../chunk-3Q4A4U2P.js';
8
+ export { TimePicker } from '../../chunk-F6JGFU6O.js';
9
+ export { DateRangePicker } from '../../chunk-QWALQSBS.js';
10
+ export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-S2IJKT3D.js';
11
+ export { Switch } from '../../chunk-I7NQ2LIL.js';
11
12
  export { ColorPicker } from '../../chunk-EE5DKOHX.js';
12
- export { DatePicker } from '../../chunk-54R5TEXH.js';
13
- export { DateRangePicker } from '../../chunk-QR7MITE6.js';
14
- export { Calendar } from '../../chunk-DNGJHWJZ.js';
15
- export { Skeleton } from '../../chunk-COD66MFF.js';
16
- export { Toaster } from '../../chunk-TO7URV7U.js';
17
- export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-PDXFQS7M.js';
18
- export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
19
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
13
+ export { DatePicker } from '../../chunk-7BF7U3GG.js';
14
+ export { Calendar } from '../../chunk-FTOG7D4T.js';
20
15
  export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '../../chunk-B73NA66T.js';
21
16
  export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport } from '../../chunk-WGWI7EGL.js';
17
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../chunk-Q4WWD4VV.js';
18
+ export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
19
+ export { Skeleton } from '../../chunk-COD66MFF.js';
20
+ export { Toaster } from '../../chunk-TO7URV7U.js';
22
21
  export { AspectRatio, Separator } from '../../chunk-XK3M3VRR.js';
23
22
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../chunk-32WO3YLB.js';
24
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../../chunk-LMKUKCTN.js';
25
23
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../chunk-W4REF4TD.js';
24
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
25
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../../chunk-LMKUKCTN.js';
26
26
  export { Alert, AlertActions, AlertBase, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-QVLUCB47.js';
27
27
  export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-FAB3LMTK.js';
28
28
  import '../../chunk-X2VY4MOW.js';
package/dist/index.js CHANGED
@@ -2,31 +2,31 @@ import './chunk-WFUIE252.js';
2
2
  import './chunk-EZHHJQWQ.js';
3
3
  import './chunk-Z46J47FY.js';
4
4
  import './chunk-VSUYVT2Q.js';
5
- import './chunk-VSM44AYE.js';
6
- import './chunk-S2IJKT3D.js';
7
- import './chunk-I7NQ2LIL.js';
8
5
  import './chunk-EOTOCNT7.js';
9
6
  import './chunk-3Q4A4U2P.js';
7
+ import './chunk-F6JGFU6O.js';
8
+ import './chunk-QWALQSBS.js';
9
+ import './chunk-S2IJKT3D.js';
10
+ import './chunk-I7NQ2LIL.js';
10
11
  import './chunk-EE5DKOHX.js';
11
- import './chunk-54R5TEXH.js';
12
- import './chunk-QR7MITE6.js';
13
- import './chunk-DNGJHWJZ.js';
12
+ import './chunk-7BF7U3GG.js';
13
+ import './chunk-FTOG7D4T.js';
14
14
  import './chunk-7CFO5FFE.js';
15
- export { toast, useToast } from './chunk-B3WX53JQ.js';
16
- export { SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from './chunk-COD66MFF.js';
17
- export { Toaster } from './chunk-TO7URV7U.js';
18
15
  export { Toolbar, ToolbarGroup } from './chunk-T2QO2S65.js';
19
- export { Pagination } from './chunk-PDXFQS7M.js';
20
16
  export { Steps } from './chunk-SARQRCKO.js';
21
- export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-V3N266PT.js';
22
- import './chunk-HL3G4SVG.js';
23
17
  import './chunk-B73NA66T.js';
24
18
  import './chunk-WGWI7EGL.js';
19
+ export { Pagination } from './chunk-Q4WWD4VV.js';
20
+ export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-V3N266PT.js';
21
+ export { toast, useToast } from './chunk-B3WX53JQ.js';
22
+ export { SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from './chunk-COD66MFF.js';
23
+ export { Toaster } from './chunk-TO7URV7U.js';
25
24
  export { PageContainer } from './chunk-PUGEOUWZ.js';
26
25
  import './chunk-XK3M3VRR.js';
27
26
  import './chunk-32WO3YLB.js';
28
- import './chunk-LMKUKCTN.js';
29
27
  import './chunk-W4REF4TD.js';
28
+ import './chunk-HL3G4SVG.js';
29
+ import './chunk-LMKUKCTN.js';
30
30
  export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './chunk-QVLUCB47.js';
31
31
  export { SearchInput, Transfer } from './chunk-2HOTP7RL.js';
32
32
  export { TreeSelect } from './chunk-UNVRNJCB.js';
@@ -35,7 +35,7 @@ export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRela
35
35
  export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './chunk-BG5RNXTH.js';
36
36
  import './chunk-NXVCI6YB.js';
37
37
  import './chunk-CRERCLIZ.js';
38
- export { Cascader } from './chunk-5NCFLCM7.js';
38
+ export { Cascader } from './chunk-LN7GE73P.js';
39
39
  import './chunk-SMLKNECP.js';
40
40
  import './chunk-HTEL5DQI.js';
41
41
  import './chunk-VOHTRR5X.js';
@@ -177,11 +177,6 @@
177
177
  padding: 0;
178
178
  }
179
179
 
180
- .ui-button--compact-icon {
181
- width: var(--control-height-xs);
182
- height: var(--control-height-xs);
183
- padding: 0;
184
- }
185
180
 
186
181
  .ui-control {
187
182
  height: var(--control-height);
@@ -616,8 +611,8 @@
616
611
  .ui-otp-slot {
617
612
  position: relative;
618
613
  display: flex;
619
- width: 2.25rem;
620
- height: 2.25rem;
614
+ width: var(--control-height);
615
+ height: var(--control-height);
621
616
  align-items: center;
622
617
  justify-content: center;
623
618
  font-size: 0.875rem;
@@ -719,7 +714,7 @@
719
714
  flex-wrap: wrap;
720
715
  align-items: center;
721
716
  gap: var(--space-1);
722
- min-height: 2.25rem;
717
+ min-height: var(--control-height);
723
718
  padding: var(--space-1) var(--space-2);
724
719
  border: 1px solid hsl(var(--input));
725
720
  border-radius: var(--radius-md);
@@ -483,7 +483,9 @@
483
483
 
484
484
  .ui-pagination-size-trigger {
485
485
  width: var(--pagination-size-width);
486
- height: calc(var(--control-height) - 0.25rem);
486
+ /* Default control height — primitive never picks a sub-default tier; the app
487
+ * overrides via className if it wants smaller. Shared with the page buttons. */
488
+ height: var(--control-height);
487
489
  }
488
490
 
489
491
  .ui-pagination-list {
@@ -500,6 +502,8 @@
500
502
 
501
503
  .ui-pagination-ellipsis {
502
504
  display: flex;
505
+ width: var(--control-height);
506
+ height: var(--control-height);
503
507
  align-items: center;
504
508
  justify-content: center;
505
509
  color: hsl(var(--muted-foreground));
@@ -507,8 +511,8 @@
507
511
 
508
512
  .ui-pagination-link {
509
513
  display: inline-flex;
510
- width: 2rem;
511
- height: 2rem;
514
+ width: var(--control-height);
515
+ height: var(--control-height);
512
516
  align-items: center;
513
517
  justify-content: center;
514
518
  border-radius: var(--radius-sm);
@@ -160,14 +160,14 @@
160
160
 
161
161
  .ui-menubar {
162
162
  display: flex;
163
- min-height: 2.25rem;
163
+ min-height: var(--control-height);
164
164
  align-items: center;
165
165
  gap: var(--space-1);
166
166
  border-radius: var(--radius-md);
167
167
  }
168
168
 
169
169
  .ui-menubar-trigger {
170
- height: 2.25rem;
170
+ height: var(--control-height);
171
171
  padding: 0 var(--space-3);
172
172
  border-radius: var(--radius-md);
173
173
  }
@@ -207,7 +207,7 @@
207
207
  border-radius: var(--radius-md);
208
208
  padding-inline: var(--space-2);
209
209
  padding-block: var(--space-2);
210
- height: 2.25rem;
210
+ height: var(--control-height);
211
211
  font-size: var(--font-size-sm);
212
212
  display: inline-flex;
213
213
  align-items: center;
@@ -482,7 +482,7 @@
482
482
  display: inline-flex;
483
483
  max-width: 15rem;
484
484
  min-width: 0;
485
- height: calc(var(--control-height) - 0.25rem);
485
+ height: var(--control-height-sm);
486
486
  align-items: center;
487
487
  gap: var(--space-1);
488
488
  padding-inline: var(--space-2);
@@ -540,7 +540,7 @@
540
540
  .tb-search {
541
541
  display: flex;
542
542
  width: min(20rem, 30vw);
543
- height: calc(var(--control-height) - 0.25rem);
543
+ height: var(--control-height-sm);
544
544
  align-items: center;
545
545
  gap: var(--space-2);
546
546
  padding-inline: var(--space-2);
@@ -576,8 +576,8 @@
576
576
 
577
577
  .tb-icon-btn {
578
578
  display: grid;
579
- width: calc(var(--control-height) - 0.25rem);
580
- height: calc(var(--control-height) - 0.25rem);
579
+ width: var(--control-height-sm);
580
+ height: var(--control-height-sm);
581
581
  flex: 0 0 auto;
582
582
  place-items: center;
583
583
  border: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "11.0.2",
3
+ "version": "11.1.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@10.29.1",
6
6
  "sideEffects": false,
@@ -266,12 +266,13 @@
266
266
  "test:watch": "vitest",
267
267
  "test:coverage": "vitest run --coverage",
268
268
  "check:example-imports": "node scripts/check-example-imports.mjs",
269
- "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
270
- "verify:release": "pnpm typecheck && pnpm lint && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
269
+ "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
270
+ "verify:release": "pnpm typecheck && pnpm lint && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
271
271
  "check:mcp-sync": "node scripts/check-mcp-sync.mjs",
272
272
  "check:mcp-orphans": "node scripts/check-mcp-orphans.mjs",
273
273
  "check:prop-vocabulary": "node scripts/check-prop-vocabulary.mjs",
274
274
  "check:token-tiers": "node scripts/check-token-tiers.mjs",
275
+ "check:control-sizing": "node scripts/check-control-sizing.mjs",
275
276
  "check:core-isolation": "node scripts/check-core-isolation.mjs",
276
277
  "release": "node scripts/release.mjs",
277
278
  "preview": "node preview/scripts/kill-port.mjs && vite --config preview/vite.config.ts --port 6008 --strictPort",
@@ -1,255 +0,0 @@
1
- import { normalizeTreeOptions, formatPathLabels, getNodeByPath, filterTreeOptions, pathsEqual, pathKey } from './chunk-SMLKNECP.js';
2
- import { Command, CommandInput } from './chunk-HTEL5DQI.js';
3
- import { Checkbox } from './chunk-BE6GJGKJ.js';
4
- import { Button } from './chunk-M4PZNAMV.js';
5
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
6
- import { ScrollArea, ScrollBar } from './chunk-3KPEZ5CF.js';
7
- import { useTranslation } from './chunk-HTG5VHU7.js';
8
- import { cn } from './chunk-U7N2A7A3.js';
9
- import * as React from 'react';
10
- import { X, ChevronsUpDown, Check, ChevronRight } from 'lucide-react';
11
- import { jsxs, jsx } from 'react/jsx-runtime';
12
-
13
- function pathInValues(path, values) {
14
- return values.some((v) => pathsEqual(v, path));
15
- }
16
- function togglePath(values, path) {
17
- if (pathInValues(path, values)) return values.filter((v) => !pathsEqual(v, path));
18
- return [...values, path];
19
- }
20
- function Cascader({
21
- options: optionsProp,
22
- value,
23
- defaultValue,
24
- onValueChange,
25
- multiple,
26
- changeOnSelect,
27
- showSearch,
28
- placeholder,
29
- disabled,
30
- className,
31
- id,
32
- expandTrigger = "click",
33
- fieldNames,
34
- allowClear = true
35
- }) {
36
- const { t } = useTranslation();
37
- const options = React.useMemo(
38
- () => normalizeTreeOptions(optionsProp, fieldNames),
39
- [optionsProp, fieldNames]
40
- );
41
- const [open, setOpen] = React.useState(false);
42
- const [activePath, setActivePath] = React.useState([]);
43
- const [search, setSearch] = React.useState("");
44
- const isControlledSingle = !multiple && value !== void 0;
45
- const isControlledMulti = multiple && value !== void 0;
46
- const [internalSingle, setInternalSingle] = React.useState(
47
- multiple ? [] : defaultValue ?? []
48
- );
49
- const [internalMulti, setInternalMulti] = React.useState(
50
- defaultValue ?? []
51
- );
52
- const singleValue = isControlledSingle ? value : internalSingle;
53
- const multiValue = isControlledMulti ? value : internalMulti;
54
- const resolvedPlaceholder = placeholder ?? t("dataEntry.cascader.placeholder");
55
- const displayLabel = React.useMemo(() => {
56
- if (multiple) {
57
- if (!multiValue.length) return null;
58
- return multiValue.map((path) => formatPathLabels(getNodeByPath(options, path))).join(", ");
59
- }
60
- if (!singleValue.length) return null;
61
- return formatPathLabels(getNodeByPath(options, singleValue));
62
- }, [multiple, multiValue, singleValue, options]);
63
- const commitSingle = (path) => {
64
- if (!isControlledSingle) setInternalSingle(path);
65
- onValueChange?.(path, getNodeByPath(options, path));
66
- setOpen(false);
67
- setActivePath([]);
68
- setSearch("");
69
- };
70
- const commitMulti = (paths) => {
71
- if (!isControlledMulti) setInternalMulti(paths);
72
- onValueChange?.(
73
- paths,
74
- paths.map((p) => getNodeByPath(options, p))
75
- );
76
- };
77
- const columns = React.useMemo(() => {
78
- const cols = [options];
79
- for (const segment of activePath) {
80
- const col = cols.at(-1);
81
- const node = col?.find((n) => n.value === segment);
82
- if (node?.children?.length) cols.push(node.children);
83
- else break;
84
- }
85
- return cols;
86
- }, [options, activePath]);
87
- const handleSelectNode = (node, path) => {
88
- const hasChildren = (node.children?.length ?? 0) > 0 && node.isLeaf !== true;
89
- if (hasChildren && !changeOnSelect) {
90
- setActivePath(path);
91
- return;
92
- }
93
- if (multiple) {
94
- commitMulti(togglePath(multiValue, path));
95
- return;
96
- }
97
- commitSingle(path);
98
- };
99
- const isSearching = showSearch && search.trim().length > 0;
100
- const searchResults = React.useMemo(
101
- () => isSearching ? filterTreeOptions(options, search) : [],
102
- [options, search, isSearching]
103
- );
104
- const handleOpenChange = (next) => {
105
- setOpen(next);
106
- if (!next) {
107
- setSearch("");
108
- setActivePath([]);
109
- }
110
- };
111
- const clearValue = (e) => {
112
- e.stopPropagation();
113
- if (multiple) commitMulti([]);
114
- else commitSingle([]);
115
- };
116
- const renderCascadeColumns = () => /* @__PURE__ */ jsxs(ScrollArea, { className: "w-full", children: [
117
- /* @__PURE__ */ jsx("div", { className: "flex max-h-[min(280px,50vh)]", children: columns.map((col, colIndex) => /* @__PURE__ */ jsx(
118
- "ul",
119
- {
120
- role: "listbox",
121
- "aria-orientation": "vertical",
122
- "aria-multiselectable": multiple ? true : void 0,
123
- className: "min-w-[9rem] border-e last:border-e-0",
124
- onMouseLeave: expandTrigger === "hover" ? () => setActivePath(activePath.slice(0, colIndex)) : void 0,
125
- children: col.map((node) => {
126
- const path = [...activePath.slice(0, colIndex), node.value];
127
- const hasChildren = (node.children?.length ?? 0) > 0 && node.isLeaf !== true;
128
- const active = activePath[colIndex] === node.value;
129
- const selected = multiple ? pathInValues(path, multiValue) : pathsEqual(path, singleValue);
130
- return /* @__PURE__ */ jsx("li", { role: "none", children: /* @__PURE__ */ jsxs(
131
- "button",
132
- {
133
- type: "button",
134
- role: "option",
135
- "aria-selected": selected,
136
- "aria-haspopup": hasChildren ? "menu" : void 0,
137
- "aria-expanded": hasChildren ? active : void 0,
138
- disabled: node.disabled,
139
- className: cn(
140
- "flex w-full items-center gap-1 px-3 py-2 text-sm outline-none",
141
- "hover:bg-accent hover:text-accent-foreground",
142
- active && "bg-accent/70 font-medium",
143
- node.disabled && "pointer-events-none opacity-50"
144
- ),
145
- onMouseEnter: expandTrigger === "hover" && hasChildren ? () => setActivePath(path) : void 0,
146
- onClick: () => !node.disabled && handleSelectNode(node, path),
147
- children: [
148
- multiple && /* @__PURE__ */ jsx(
149
- Checkbox,
150
- {
151
- checked: selected,
152
- disabled: node.disabled,
153
- className: "me-1",
154
- "aria-hidden": true,
155
- tabIndex: -1
156
- }
157
- ),
158
- !multiple && selected && /* @__PURE__ */ jsx(Check, { className: "me-1 size-4 shrink-0", "aria-hidden": "true" }),
159
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-start", children: node.label }),
160
- hasChildren && /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 shrink-0 opacity-50", "aria-hidden": "true" })
161
- ]
162
- }
163
- ) }, node.value);
164
- })
165
- },
166
- colIndex
167
- )) }),
168
- /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" })
169
- ] });
170
- return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
171
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
172
- Button,
173
- {
174
- id,
175
- type: "button",
176
- variant: "outline",
177
- role: "combobox",
178
- "aria-expanded": open,
179
- disabled,
180
- className: cn(
181
- "w-full justify-between font-normal",
182
- !displayLabel && "text-muted-foreground",
183
- className
184
- ),
185
- children: [
186
- /* @__PURE__ */ jsx("span", { className: "truncate", children: displayLabel ?? resolvedPlaceholder }),
187
- /* @__PURE__ */ jsxs("span", { className: "ms-2 flex shrink-0 items-center gap-1", children: [
188
- allowClear && displayLabel && !disabled && /* @__PURE__ */ jsx(
189
- "button",
190
- {
191
- type: "button",
192
- "aria-label": t("dataEntry.cascader.clear"),
193
- className: "flex size-4 items-center justify-center rounded-sm opacity-50 hover:opacity-100 focus-visible:opacity-100",
194
- onClick: clearValue,
195
- children: /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": "true" })
196
- }
197
- ),
198
- /* @__PURE__ */ jsx(ChevronsUpDown, { className: "size-4 opacity-50", "aria-hidden": "true" })
199
- ] })
200
- ]
201
- }
202
- ) }),
203
- /* @__PURE__ */ jsxs(
204
- PopoverContent,
205
- {
206
- className: "w-auto min-w-[var(--radix-popover-trigger-width)] p-0",
207
- align: "start",
208
- children: [
209
- showSearch && /* @__PURE__ */ jsx("div", { className: "border-b p-2", children: /* @__PURE__ */ jsx(Command, { shouldFilter: false, children: /* @__PURE__ */ jsx(
210
- CommandInput,
211
- {
212
- placeholder: t("dataEntry.cascader.searchPlaceholder"),
213
- value: search,
214
- onValueChange: setSearch
215
- }
216
- ) }) }),
217
- isSearching ? /* @__PURE__ */ jsx(ScrollArea, { className: "max-h-[min(300px,50vh)]", children: /* @__PURE__ */ jsx("div", { className: "p-1", role: "listbox", "aria-multiselectable": multiple ? true : void 0, children: searchResults.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground py-6 text-center text-sm", children: t("dataEntry.cascader.empty") }) : searchResults.map(({ path, labels }) => {
218
- const label = labels.join(" / ");
219
- const selected = multiple ? pathInValues(path, multiValue) : pathsEqual(path, singleValue);
220
- return /* @__PURE__ */ jsxs(
221
- "button",
222
- {
223
- type: "button",
224
- role: "option",
225
- "aria-selected": selected,
226
- className: cn(
227
- "flex w-full items-center rounded-sm px-2 py-1.5 text-sm outline-none",
228
- "hover:bg-accent hover:text-accent-foreground",
229
- selected && "bg-accent/60"
230
- ),
231
- onClick: () => handleSelectNode({ value: path.at(-1)}, path),
232
- children: [
233
- multiple ? /* @__PURE__ */ jsx(Checkbox, { checked: selected, className: "me-2", "aria-hidden": true, tabIndex: -1 }) : /* @__PURE__ */ jsx(
234
- Check,
235
- {
236
- className: cn(
237
- "me-2 size-4 shrink-0",
238
- selected ? "opacity-100" : "opacity-0"
239
- ),
240
- "aria-hidden": "true"
241
- }
242
- ),
243
- /* @__PURE__ */ jsx("span", { className: "truncate text-start", children: label })
244
- ]
245
- },
246
- pathKey(path)
247
- );
248
- }) }) }) : renderCascadeColumns()
249
- ]
250
- }
251
- )
252
- ] });
253
- }
254
-
255
- export { Cascader };