@kjaniec-dev/ui-mcp 0.9.1 → 0.9.3

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.
@@ -143,7 +143,7 @@
143
143
  "variant": "info"
144
144
  }
145
145
  },
146
- "usageSnippet": "<Alert variant=\"info\" icon={InfoIcon} title=\"Information\">A short informational message for the user.</Alert>"
146
+ "usageSnippet": "<Alert variant=\"info\" icon={InfoIcon} title=\"Information\">\n A short informational message for the user.\n</Alert>"
147
147
  },
148
148
  {
149
149
  "name": "Spinner",
@@ -275,7 +275,7 @@
275
275
  }
276
276
  ],
277
277
  "cva": null,
278
- "usageSnippet": "<ProgressRing value={75} size=\"sm\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Small (sm)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"md\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Medium (md)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"lg\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Large (lg)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"xl\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Extra Large (xl)</p>\n </div>\n </div>\n ),\n};\n\nexport const Tones: Story = {\n render: () => (\n <div style={{ display: \"flex\", gap: 20, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <ProgressRing value={60} tone=\"primary\" showValue />\n <ProgressRing value={60} tone=\"secondary\" showValue />\n <ProgressRing value={60} tone=\"success\" showValue />\n <ProgressRing value={60} tone=\"warning\" showValue />\n <ProgressRing value={60} tone=\"danger\" showValue />\n <ProgressRing value={60} tone=\"info\" showValue />\n </div>\n ),\n};\n\nexport const CustomFormatting: Story = {\n render: () => (\n <div style={{ display: \"flex\", gap: 24, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <ProgressRing\n value={3}\n max={5}\n size=\"lg\"\n tone=\"success\"\n formatValue={(val) => (\n <span style={{ fontSize: 14, fontWeight: \"bold\" }}>{val} / 5</span>\n )}\n />\n <ProgressRing\n value={80}\n size=\"lg\"\n tone=\"info\"\n formatValue={(val) => (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\n <span style={{ fontSize: 16, fontWeight: \"bold\" }}>{val}GB</span>\n <span style={{ fontSize: 10, opacity: 0.7 }}>of 100GB</span>\n </div>\n )}\n />\n <ProgressRing value={100} size=\"lg\" tone=\"success\">\n <span style={{ fontSize: 20 }}>✓</span>\n </ProgressRing>"
278
+ "usageSnippet": "<ProgressRing value={75} size=\"sm\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Small (sm)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"md\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Medium (md)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"lg\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Large (lg)</p>\n </div>\n <div style={{ textAlign: \"center\" }}>\n <ProgressRing value={75} size=\"xl\" showValue />\n <p style={{ marginTop: 8, fontSize: 12 }}>Extra Large (xl)</p>\n </div>\n </div>\n ),\n};\n\nexport const Tones: Story = {\n render: () => (\n <div style={{ display: \"flex\", gap: 20, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <ProgressRing value={60} tone=\"primary\" showValue />\n <ProgressRing value={60} tone=\"secondary\" showValue />\n <ProgressRing value={60} tone=\"success\" showValue />\n <ProgressRing value={60} tone=\"warning\" showValue />\n <ProgressRing value={60} tone=\"danger\" showValue />\n <ProgressRing value={60} tone=\"info\" showValue />\n </div>\n ),\n};\n\nexport const CustomFormatting: Story = {\n render: () => (\n <div style={{ display: \"flex\", gap: 24, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <ProgressRing\n value={3}\n max={5}\n size=\"lg\"\n tone=\"success\"\n formatValue={(val) => <span style={{ fontSize: 14, fontWeight: \"bold\" }}>{val} / 5</span>}\n />\n <ProgressRing\n value={80}\n size=\"lg\"\n tone=\"info\"\n formatValue={(val) => (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\n <span style={{ fontSize: 16, fontWeight: \"bold\" }}>{val}GB</span>\n <span style={{ fontSize: 10, opacity: 0.7 }}>of 100GB</span>\n </div>\n )}\n />\n <ProgressRing value={100} size=\"lg\" tone=\"success\">\n <span style={{ fontSize: 20 }}>✓</span>\n </ProgressRing>"
279
279
  },
280
280
  {
281
281
  "name": "ProgressRingField",
@@ -669,7 +669,7 @@
669
669
  }
670
670
  ],
671
671
  "cva": null,
672
- "usageSnippet": "<ToggleGroup options={options} value={value} onChange={setValue} aria-label=\"Text formatting\" />"
672
+ "usageSnippet": "<ToggleGroup\n options={options}\n value={value}\n onChange={setValue}\n aria-label=\"Text formatting\"\n/>"
673
673
  },
674
674
  {
675
675
  "name": "Card",
@@ -699,7 +699,7 @@
699
699
  }
700
700
  ],
701
701
  "cva": null,
702
- "usageSnippet": "<Card>\n <CardHeader>\n <Badge variant=\"primary\" className=\"self-start\">Pro</Badge>\n <CardTitle>Team Workspace</CardTitle>\n <CardDescription>Unlimited projects, roles and activity history for your whole team.</CardDescription>\n </CardHeader>\n <CardFooter>\n <Button size=\"sm\">Choose plan</Button>\n <Button size=\"sm\" variant=\"ghost\">Details</Button>\n </CardFooter>\n</Card>"
702
+ "usageSnippet": "<Card>\n <CardHeader>\n <Badge variant=\"primary\" className=\"self-start\">\n Pro\n </Badge>\n <CardTitle>Team Workspace</CardTitle>\n <CardDescription>\n Unlimited projects, roles and activity history for your whole team.\n </CardDescription>\n </CardHeader>\n <CardFooter>\n <Button size=\"sm\">Choose plan</Button>\n <Button size=\"sm\" variant=\"ghost\">\n Details\n </Button>\n </CardFooter>\n</Card>"
703
703
  },
704
704
  {
705
705
  "name": "CardHeader",
@@ -707,7 +707,7 @@
707
707
  "description": "React component CardHeader.",
708
708
  "props": [],
709
709
  "cva": null,
710
- "usageSnippet": "<CardHeader>\n <Badge variant=\"primary\" className=\"self-start\">Pro</Badge>\n <CardTitle>Team Workspace</CardTitle>\n <CardDescription>Unlimited projects, roles and activity history for your whole team.</CardDescription>\n</CardHeader>"
710
+ "usageSnippet": "<CardHeader>\n <Badge variant=\"primary\" className=\"self-start\">\n Pro\n </Badge>\n <CardTitle>Team Workspace</CardTitle>\n <CardDescription>\n Unlimited projects, roles and activity history for your whole team.\n </CardDescription>\n</CardHeader>"
711
711
  },
712
712
  {
713
713
  "name": "CardTitle",
@@ -723,7 +723,7 @@
723
723
  "description": "React component CardDescription.",
724
724
  "props": [],
725
725
  "cva": null,
726
- "usageSnippet": "<CardDescription>Unlimited projects, roles and activity history for your whole team.</CardDescription>"
726
+ "usageSnippet": "<CardDescription>\n Unlimited projects, roles and activity history for your whole team.\n</CardDescription>"
727
727
  },
728
728
  {
729
729
  "name": "CardContent",
@@ -739,7 +739,7 @@
739
739
  "description": "React component CardFooter.",
740
740
  "props": [],
741
741
  "cva": null,
742
- "usageSnippet": "<CardFooter>\n <Button size=\"sm\">Choose plan</Button>\n <Button size=\"sm\" variant=\"ghost\">Details</Button>\n</CardFooter>"
742
+ "usageSnippet": "<CardFooter>\n <Button size=\"sm\">Choose plan</Button>\n <Button size=\"sm\" variant=\"ghost\">\n Details\n </Button>\n</CardFooter>"
743
743
  },
744
744
  {
745
745
  "name": "Stat",
@@ -909,7 +909,7 @@
909
909
  }
910
910
  ],
911
911
  "cva": null,
912
- "usageSnippet": "<Tabs defaultValue=\"overview\">\n <TabsList>\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"activity\">Activity</TabsTrigger>\n <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n </TabsList>\n <TabsContent value=\"overview\">A dashboard with key metrics and quick actions.</TabsContent>\n <TabsContent value=\"activity\">An event timeline: sign-ins, edits and comments.</TabsContent>\n <TabsContent value=\"settings\">Workspace preferences, permissions and integrations.</TabsContent>\n</Tabs>"
912
+ "usageSnippet": "<Tabs defaultValue=\"overview\">\n <TabsList>\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"activity\">Activity</TabsTrigger>\n <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n </TabsList>\n <TabsContent value=\"overview\">A dashboard with key metrics and quick actions.</TabsContent>\n <TabsContent value=\"activity\">An event timeline: sign-ins, edits and comments.</TabsContent>\n <TabsContent value=\"settings\">\n Workspace preferences, permissions and integrations.\n </TabsContent>\n</Tabs>"
913
913
  },
914
914
  {
915
915
  "name": "TabsList",
@@ -972,7 +972,7 @@
972
972
  }
973
973
  ],
974
974
  "cva": null,
975
- "usageSnippet": "<Accordion type=\"single\" defaultValue={[\"a\"]}>\n <AccordionItem value=\"a\"><AccordionTrigger>How does billing work?</AccordionTrigger><AccordionContent>Monthly or annually — the annual plan includes two months free.</AccordionContent></AccordionItem>\n <AccordionItem value=\"b\"><AccordionTrigger>Can I change my plan later?</AccordionTrigger><AccordionContent>Yes, at any time. The difference is prorated.</AccordionContent></AccordionItem>\n <AccordionItem value=\"c\"><AccordionTrigger>What payment methods are supported?</AccordionTrigger><AccordionContent>Visa, Mastercard and Apple Pay.</AccordionContent></AccordionItem>\n</Accordion>"
975
+ "usageSnippet": "<Accordion type=\"single\" defaultValue={[\"a\"]}>\n <AccordionItem value=\"a\">\n <AccordionTrigger>How does billing work?</AccordionTrigger>\n <AccordionContent>\n Monthly or annually — the annual plan includes two months free.\n </AccordionContent>\n </AccordionItem>\n <AccordionItem value=\"b\">\n <AccordionTrigger>Can I change my plan later?</AccordionTrigger>\n <AccordionContent>Yes, at any time. The difference is prorated.</AccordionContent>\n </AccordionItem>\n <AccordionItem value=\"c\">\n <AccordionTrigger>What payment methods are supported?</AccordionTrigger>\n <AccordionContent>Visa, Mastercard and Apple Pay.</AccordionContent>\n </AccordionItem>\n</Accordion>"
976
976
  },
977
977
  {
978
978
  "name": "AccordionItem",
@@ -988,7 +988,7 @@
988
988
  }
989
989
  ],
990
990
  "cva": null,
991
- "usageSnippet": "<AccordionItem value=\"a\"><AccordionTrigger>How does billing work?</AccordionTrigger><AccordionContent>Monthly or annually — the annual plan includes two months free.</AccordionContent></AccordionItem>"
991
+ "usageSnippet": "<AccordionItem value=\"a\">\n <AccordionTrigger>How does billing work?</AccordionTrigger>\n <AccordionContent>\n Monthly or annually — the annual plan includes two months free.\n </AccordionContent>\n</AccordionItem>"
992
992
  },
993
993
  {
994
994
  "name": "AccordionTrigger",
@@ -1004,7 +1004,7 @@
1004
1004
  "description": "React component AccordionContent.",
1005
1005
  "props": [],
1006
1006
  "cva": null,
1007
- "usageSnippet": "<AccordionContent>Monthly or annually — the annual plan includes two months free.</AccordionContent>"
1007
+ "usageSnippet": "<AccordionContent>\n Monthly or annually — the annual plan includes two months free.\n</AccordionContent>"
1008
1008
  },
1009
1009
  {
1010
1010
  "name": "DropdownMenu",
@@ -1205,7 +1205,7 @@
1205
1205
  }
1206
1206
  ],
1207
1207
  "cva": null,
1208
- "usageSnippet": "<Table>\n <TableHeader>\n <TableRow>\n <TableHead>User</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Status</TableHead>\n <TableHead numeric>Projects</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"primary\">AK</Avatar>Anna Kowalski</div></TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell><Badge variant=\"success\" dot>Active</Badge></TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\">MR</Avatar>Michael Rutkowski</div></TableCell>\n <TableCell>Editor</TableCell>\n <TableCell><Badge variant=\"warning\" dot>Invited</Badge></TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"info\">JN</Avatar>Julia Nowak</div></TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell><Badge>Inactive</Badge></TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n </TableBody>\n</Table>"
1208
+ "usageSnippet": "<Table>\n <TableHeader>\n <TableRow>\n <TableHead>User</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Status</TableHead>\n <TableHead numeric>Projects</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"primary\">\n AK\n </Avatar>\n Anna Kowalski\n </div>\n </TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell>\n <Badge variant=\"success\" dot>\n Active\n </Badge>\n </TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\">MR</Avatar>Michael Rutkowski\n </div>\n </TableCell>\n <TableCell>Editor</TableCell>\n <TableCell>\n <Badge variant=\"warning\" dot>\n Invited\n </Badge>\n </TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"info\">\n JN\n </Avatar>\n Julia Nowak\n </div>\n </TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell>\n <Badge>Inactive</Badge>\n </TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n </TableBody>\n</Table>"
1209
1209
  },
1210
1210
  {
1211
1211
  "name": "TableWrap",
@@ -1213,7 +1213,7 @@
1213
1213
  "description": "Rounded, bordered wrapper around a <Table>.",
1214
1214
  "props": [],
1215
1215
  "cva": null,
1216
- "usageSnippet": "<TableWrap>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>User</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Status</TableHead>\n <TableHead numeric>Projects</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"primary\">AK</Avatar>Anna Kowalski</div></TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell><Badge variant=\"success\" dot>Active</Badge></TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\">MR</Avatar>Michael Rutkowski</div></TableCell>\n <TableCell>Editor</TableCell>\n <TableCell><Badge variant=\"warning\" dot>Invited</Badge></TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"info\">JN</Avatar>Julia Nowak</div></TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell><Badge>Inactive</Badge></TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n</TableWrap>"
1216
+ "usageSnippet": "<TableWrap>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>User</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Status</TableHead>\n <TableHead numeric>Projects</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"primary\">\n AK\n </Avatar>\n Anna Kowalski\n </div>\n </TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell>\n <Badge variant=\"success\" dot>\n Active\n </Badge>\n </TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\">MR</Avatar>Michael Rutkowski\n </div>\n </TableCell>\n <TableCell>Editor</TableCell>\n <TableCell>\n <Badge variant=\"warning\" dot>\n Invited\n </Badge>\n </TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"info\">\n JN\n </Avatar>\n Julia Nowak\n </div>\n </TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell>\n <Badge>Inactive</Badge>\n </TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n</TableWrap>"
1217
1217
  },
1218
1218
  {
1219
1219
  "name": "TableHeader",
@@ -1229,7 +1229,7 @@
1229
1229
  "description": "React component TableBody.",
1230
1230
  "props": [],
1231
1231
  "cva": null,
1232
- "usageSnippet": "<TableBody>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"primary\">AK</Avatar>Anna Kowalski</div></TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell><Badge variant=\"success\" dot>Active</Badge></TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\">MR</Avatar>Michael Rutkowski</div></TableCell>\n <TableCell>Editor</TableCell>\n <TableCell><Badge variant=\"warning\" dot>Invited</Badge></TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"info\">JN</Avatar>Julia Nowak</div></TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell><Badge>Inactive</Badge></TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n</TableBody>"
1232
+ "usageSnippet": "<TableBody>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"primary\">\n AK\n </Avatar>\n Anna Kowalski\n </div>\n </TableCell>\n <TableCell>Administrator</TableCell>\n <TableCell>\n <Badge variant=\"success\" dot>\n Active\n </Badge>\n </TableCell>\n <TableCell numeric>24</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\">MR</Avatar>Michael Rutkowski\n </div>\n </TableCell>\n <TableCell>Editor</TableCell>\n <TableCell>\n <Badge variant=\"warning\" dot>\n Invited\n </Badge>\n </TableCell>\n <TableCell numeric>12</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"info\">\n JN\n </Avatar>\n Julia Nowak\n </div>\n </TableCell>\n <TableCell>Viewer</TableCell>\n <TableCell>\n <Badge>Inactive</Badge>\n </TableCell>\n <TableCell numeric>3</TableCell>\n </TableRow>\n</TableBody>"
1233
1233
  },
1234
1234
  {
1235
1235
  "name": "TableRow",
@@ -1261,7 +1261,7 @@
1261
1261
  }
1262
1262
  ],
1263
1263
  "cva": null,
1264
- "usageSnippet": "<TableCell><div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}><Avatar size=\"sm\" tone=\"primary\">AK</Avatar>Anna Kowalski</div></TableCell>"
1264
+ "usageSnippet": "<TableCell>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Avatar size=\"sm\" tone=\"primary\">\n AK\n </Avatar>\n Anna Kowalski\n </div>\n</TableCell>"
1265
1265
  },
1266
1266
  {
1267
1267
  "name": "Tooltip",
@@ -1342,7 +1342,7 @@
1342
1342
  }
1343
1343
  ],
1344
1344
  "cva": null,
1345
- "usageSnippet": "<Modal open={open} onClose={() => setOpen(false)}>\n <ModalTitle>Delete project “Q3 Launch”?</ModalTitle>\n <ModalDescription>This action cannot be undone. All files and activity history will be permanently deleted.</ModalDescription>\n <ModalActions>\n <Button variant=\"ghost\" onClick={() => setOpen(false)}>Cancel</Button>\n <Button variant=\"danger\" onClick={() => setOpen(false)}>Delete project</Button>\n </ModalActions>\n</Modal>"
1345
+ "usageSnippet": "<Modal open={open} onClose={() => setOpen(false)}>\n <ModalTitle>Delete project “Q3 Launch”?</ModalTitle>\n <ModalDescription>\n This action cannot be undone. All files and activity history will be permanently\n deleted.\n </ModalDescription>\n <ModalActions>\n <Button variant=\"ghost\" onClick={() => setOpen(false)}>\n Cancel\n </Button>\n <Button variant=\"danger\" onClick={() => setOpen(false)}>\n Delete project\n </Button>\n </ModalActions>\n</Modal>"
1346
1346
  },
1347
1347
  {
1348
1348
  "name": "ModalTitle",
@@ -1358,7 +1358,7 @@
1358
1358
  "description": "React component ModalDescription.",
1359
1359
  "props": [],
1360
1360
  "cva": null,
1361
- "usageSnippet": "<ModalDescription>This action cannot be undone. All files and activity history will be permanently deleted.</ModalDescription>"
1361
+ "usageSnippet": "<ModalDescription>\n This action cannot be undone. All files and activity history will be permanently\n deleted.\n</ModalDescription>"
1362
1362
  },
1363
1363
  {
1364
1364
  "name": "ModalActions",
@@ -1366,7 +1366,7 @@
1366
1366
  "description": "React component ModalActions.",
1367
1367
  "props": [],
1368
1368
  "cva": null,
1369
- "usageSnippet": "<ModalActions>\n <Button variant=\"ghost\" onClick={() => setOpen(false)}>Cancel</Button>\n <Button variant=\"danger\" onClick={() => setOpen(false)}>Delete project</Button>\n</ModalActions>"
1369
+ "usageSnippet": "<ModalActions>\n <Button variant=\"ghost\" onClick={() => setOpen(false)}>\n Cancel\n </Button>\n <Button variant=\"danger\" onClick={() => setOpen(false)}>\n Delete project\n </Button>\n</ModalActions>"
1370
1370
  },
1371
1371
  {
1372
1372
  "name": "ToastProvider",
@@ -1773,6 +1773,13 @@
1773
1773
  "defaultValue": "\"rectangular\"",
1774
1774
  "description": ""
1775
1775
  },
1776
+ {
1777
+ "name": "animation",
1778
+ "type": "\"shimmer\" | \"pulse\" | \"none\"",
1779
+ "optional": true,
1780
+ "defaultValue": "\"shimmer\"",
1781
+ "description": ""
1782
+ },
1776
1783
  {
1777
1784
  "name": "width",
1778
1785
  "type": "string | number",
@@ -1847,7 +1854,7 @@
1847
1854
  }
1848
1855
  ],
1849
1856
  "cva": null,
1850
- "usageSnippet": "<DashboardShell\n sidebar={\n <div className=\"p-6 flex flex-col gap-6 h-full bg-subtle\">\n <div className=\"font-bold text-lg tracking-tight text-primary\">KJ Product Kit</div>\n <nav className=\"flex flex-col gap-2\">\n <a href=\"#\" className=\"text-sm font-medium text-foreground hover:text-primary transition-colors\">Dashboard</a>\n <a href=\"#\" className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\">Projects</a>\n <a href=\"#\" className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\">Invoices</a>\n <a href=\"#\" className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\">Settings</a>\n </nav>\n </div>\n }\n topbar={\n <div className=\"w-full flex items-center justify-between\">\n <span className=\"text-sm font-medium text-muted-foreground\">Workspace / Personal</span>\n <Button size=\"sm\" variant=\"ghost\">Profile</Button>\n </div>\n }\n>\n <PageHeader\n eyebrow=\"B2B SaaS\"\n title=\"Dashboard Shell\"\n description=\"The shell structure renders a responsive frame container with a sticky sidebar, topbar, and main canvas.\"\n actions={<Button size=\"sm\">New Project</Button>}\n />\n <div className=\"border border-dashed border-border rounded-kj-lg h-96 grid place-items-center bg-surface\">\n <span className=\"text-sm text-muted-foreground\">Main Content Canvas Area</span>\n </div>\n</DashboardShell>"
1857
+ "usageSnippet": "<DashboardShell\n sidebar={\n <div className=\"p-6 flex flex-col gap-6 h-full bg-subtle\">\n <div className=\"font-bold text-lg tracking-tight text-primary\">KJ Product Kit</div>\n <nav className=\"flex flex-col gap-2\">\n <a\n href=\"#\"\n className=\"text-sm font-medium text-foreground hover:text-primary transition-colors\"\n >\n Dashboard\n </a>\n <a\n href=\"#\"\n className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\"\n >\n Projects\n </a>\n <a\n href=\"#\"\n className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\"\n >\n Invoices\n </a>\n <a\n href=\"#\"\n className=\"text-sm font-medium text-muted-foreground hover:text-primary transition-colors\"\n >\n Settings\n </a>\n </nav>\n </div>\n }\n topbar={\n <div className=\"w-full flex items-center justify-between\">\n <span className=\"text-sm font-medium text-muted-foreground\">Workspace / Personal</span>\n <Button size=\"sm\" variant=\"ghost\">\n Profile\n </Button>\n </div>\n }\n>\n <PageHeader\n eyebrow=\"B2B SaaS\"\n title=\"Dashboard Shell\"\n description=\"The shell structure renders a responsive frame container with a sticky sidebar, topbar, and main canvas.\"\n actions={<Button size=\"sm\">New Project</Button>}\n />\n <div className=\"border border-dashed border-border rounded-kj-lg h-96 grid place-items-center bg-surface\">\n <span className=\"text-sm text-muted-foreground\">Main Content Canvas Area</span>\n </div>\n</DashboardShell>"
1851
1858
  },
1852
1859
  {
1853
1860
  "name": "SettingsLayout",
@@ -1884,7 +1891,7 @@
1884
1891
  }
1885
1892
  ],
1886
1893
  "cva": null,
1887
- "usageSnippet": "<SettingsLayout\n title=\"Profile Settings\"\n description=\"Customize how your profile appears to other members.\"\n sidebar={\n <div className=\"flex flex-row lg:flex-col gap-1 w-full\">\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start bg-primary/10 text-primary\">General</Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start text-muted-foreground\">Team</Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start text-muted-foreground\">Billing</Button>\n </div>\n }\n>\n <Card className=\"p-6 space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <TextField label=\"First Name\" defaultValue=\"John\" />\n <TextField label=\"Last Name\" defaultValue=\"Doe\" />\n </div>\n <TextField label=\"Email Address\" defaultValue=\"john.doe@gmail.com\" />\n <div className=\"flex justify-end pt-2\">\n <Button size=\"sm\">Save profile</Button>\n </div>\n </Card>\n</SettingsLayout>"
1894
+ "usageSnippet": "<SettingsLayout\n title=\"Profile Settings\"\n description=\"Customize how your profile appears to other members.\"\n sidebar={\n <div className=\"flex flex-row lg:flex-col gap-1 w-full\">\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start bg-primary/10 text-primary\">\n General\n </Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start text-muted-foreground\">\n Team\n </Button>\n <Button variant=\"ghost\" size=\"sm\" className=\"justify-start text-muted-foreground\">\n Billing\n </Button>\n </div>\n }\n>\n <Card className=\"p-6 space-y-4\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <TextField label=\"First Name\" defaultValue=\"John\" />\n <TextField label=\"Last Name\" defaultValue=\"Doe\" />\n </div>\n <TextField label=\"Email Address\" defaultValue=\"john.doe@gmail.com\" />\n <div className=\"flex justify-end pt-2\">\n <Button size=\"sm\">Save profile</Button>\n </div>\n </Card>\n</SettingsLayout>"
1888
1895
  },
1889
1896
  {
1890
1897
  "name": "DetailPageLayout",
@@ -1949,7 +1956,7 @@
1949
1956
  }
1950
1957
  ],
1951
1958
  "cva": null,
1952
- "usageSnippet": "<DetailPageLayout\n title=\"Transaction #TRN-9022\"\n description=\"Captured via Stripe checkout flow.\"\n backLabel=\"Back to payments\"\n onBackClick={() => alert(\"Back\")}\n actions={\n <>\n <Button variant=\"outline\" size=\"sm\">Refund</Button>\n <Button size=\"sm\">Receipt</Button>\n </>\n }\n aside={\n <div className=\"space-y-4 text-sm\">\n <h4 className=\"font-bold\">Payment Details</h4>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <Badge variant=\"success\">Paid</Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Amount</span>\n <span className=\"font-bold font-mono\">$1,450.00</span>\n </div>\n </div>\n }\n>\n <Card className=\"p-6\">\n <h3 className=\"text-base font-bold mb-3\">Billing Address</h3>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n John Doe<br />\n ul. Marszałkowska 10/24<br />\n 00-001 Warszawa, Poland\n </p>\n </Card>\n</DetailPageLayout>"
1959
+ "usageSnippet": "<DetailPageLayout\n title=\"Transaction #TRN-9022\"\n description=\"Captured via Stripe checkout flow.\"\n backLabel=\"Back to payments\"\n onBackClick={() => alert(\"Back\")}\n actions={\n <>\n <Button variant=\"outline\" size=\"sm\">\n Refund\n </Button>\n <Button size=\"sm\">Receipt</Button>\n </>\n }\n aside={\n <div className=\"space-y-4 text-sm\">\n <h4 className=\"font-bold\">Payment Details</h4>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <Badge variant=\"success\">Paid</Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Amount</span>\n <span className=\"font-bold font-mono\">$1,450.00</span>\n </div>\n </div>\n }\n>\n <Card className=\"p-6\">\n <h3 className=\"text-base font-bold mb-3\">Billing Address</h3>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n John Doe\n <br />\n ul. Marszałkowska 10/24\n <br />\n 00-001 Warszawa, Poland\n </p>\n </Card>\n</DetailPageLayout>"
1953
1960
  },
1954
1961
  {
1955
1962
  "name": "TableToolbar",
@@ -2123,7 +2130,7 @@
2123
2130
  }
2124
2131
  ],
2125
2132
  "cva": null,
2126
- "usageSnippet": "<Drawer\n open={open}\n onClose={() => setOpen(false)}\n title=\"Edit Configuration\"\n description=\"Manage property options and backup intervals.\"\n>\n <div className=\"space-y-6\">\n <TextField label=\"Connection String\" defaultValue=\"postgresql://db.kjaniec.dev:5432\" />\n <CheckboxField label=\"Enable auto-backups daily\" defaultChecked />\n <div className=\"flex gap-2 justify-end pt-4 border-t border-border\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setOpen(false)}>Cancel</Button>\n <Button size=\"sm\" onClick={() => setOpen(false)}>Save Changes</Button>\n </div>\n </div>\n</Drawer>"
2133
+ "usageSnippet": "<Drawer\n open={open}\n onClose={() => setOpen(false)}\n title=\"Edit Configuration\"\n description=\"Manage property options and backup intervals.\"\n>\n <div className=\"space-y-6\">\n <TextField label=\"Connection String\" defaultValue=\"postgresql://db.kjaniec.dev:5432\" />\n <CheckboxField label=\"Enable auto-backups daily\" defaultChecked />\n <div className=\"flex gap-2 justify-end pt-4 border-t border-border\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setOpen(false)}>\n Cancel\n </Button>\n <Button size=\"sm\" onClick={() => setOpen(false)}>\n Save Changes\n </Button>\n </div>\n </div>\n</Drawer>"
2127
2134
  },
2128
2135
  {
2129
2136
  "name": "CommandPalette",
@@ -2562,7 +2569,7 @@
2562
2569
  }
2563
2570
  ],
2564
2571
  "cva": null,
2565
- "usageSnippet": "<Combobox options={frameworks} value={value} onChange={setValue} placeholder=\"Select a framework…\" />"
2572
+ "usageSnippet": "<Combobox\n options={frameworks}\n value={value}\n onChange={setValue}\n placeholder=\"Select a framework…\"\n/>"
2566
2573
  },
2567
2574
  {
2568
2575
  "name": "ComboboxField",
@@ -2786,7 +2793,7 @@
2786
2793
  }
2787
2794
  ],
2788
2795
  "cva": null,
2789
- "usageSnippet": "<DatePickerField label=\"Due date\" required hint=\"Weekdays only.\" value={value} onChange={setValue} disabledDates={(d) => d.getDay() === 0 || d.getDay() === 6} />"
2796
+ "usageSnippet": "<DatePickerField\n label=\"Due date\"\n required\n hint=\"Weekdays only.\"\n value={value}\n onChange={setValue}\n disabledDates={(d) => d.getDay() === 0 || d.getDay() === 6}\n/>"
2790
2797
  },
2791
2798
  {
2792
2799
  "name": "RangeCalendar",
@@ -2856,6 +2863,13 @@
2856
2863
  "defaultValue": null,
2857
2864
  "description": ""
2858
2865
  },
2866
+ {
2867
+ "name": "singleMonth",
2868
+ "type": "boolean",
2869
+ "optional": true,
2870
+ "defaultValue": null,
2871
+ "description": "Force rendering 1 month instead of 2 side-by-side."
2872
+ },
2859
2873
  {
2860
2874
  "name": "className",
2861
2875
  "type": "string",
@@ -3188,7 +3202,7 @@
3188
3202
  }
3189
3203
  ],
3190
3204
  "cva": null,
3191
- "usageSnippet": "<FileUpload value={items} onChange={setItems} accept=\"image/*,.pdf\" maxSize={5 * 1024 * 1024} />"
3205
+ "usageSnippet": "<FileUpload\n value={items}\n onChange={setItems}\n accept=\"image/*,.pdf\"\n maxSize={5 * 1024 * 1024}\n/>"
3192
3206
  },
3193
3207
  {
3194
3208
  "name": "FileUploadField",
@@ -3386,6 +3400,13 @@
3386
3400
  "defaultValue": "\"horizontal\"",
3387
3401
  "description": ""
3388
3402
  },
3403
+ {
3404
+ "name": "responsive",
3405
+ "type": "boolean",
3406
+ "optional": true,
3407
+ "defaultValue": "true",
3408
+ "description": ""
3409
+ },
3389
3410
  {
3390
3411
  "name": "linear",
3391
3412
  "type": "boolean",
@@ -3551,10 +3572,17 @@
3551
3572
  "optional": true,
3552
3573
  "defaultValue": null,
3553
3574
  "description": ""
3575
+ },
3576
+ {
3577
+ "name": "bottomNav",
3578
+ "type": "React.ReactNode",
3579
+ "optional": true,
3580
+ "defaultValue": null,
3581
+ "description": ""
3554
3582
  }
3555
3583
  ],
3556
3584
  "cva": null,
3557
- "usageSnippet": "<AppShell\n banner={<div>🚀 Announcement: KJ Product Kit v1.0 released!</div>}\n header={\n <div className=\"w-full flex items-center justify-between\">\n <div className=\"font-bold text-xl tracking-tight\">KJ Product Kit</div>\n <div className=\"hidden md:flex items-center gap-6 text-sm text-muted-foreground font-medium\">\n <a href=\"#\" className=\"hover:text-foreground\">Features</a>\n <a href=\"#\" className=\"hover:text-foreground\">Docs</a>\n <a href=\"#\" className=\"hover:text-foreground\">Pricing</a>\n </div>\n <Button size=\"sm\">Get Started</Button>\n </div>\n }\n mobileNav={\n <div className=\"flex flex-col gap-4 text-sm font-medium\">\n <a href=\"#\" className=\"hover:text-foreground\">Features</a>\n <a href=\"#\" className=\"hover:text-foreground\">Docs</a>\n <a href=\"#\" className=\"hover:text-foreground\">Pricing</a>\n </div>\n }\n footer={\n <div className=\"flex flex-col md:flex-row justify-between items-center gap-4 text-sm text-muted-foreground\">\n <div>© 2026 KJ Product Kit. All rights reserved.</div>\n <div className=\"flex gap-6\">\n <a href=\"#\" className=\"hover:text-foreground\">Privacy</a>\n <a href=\"#\" className=\"hover:text-foreground\">Terms</a>\n <a href=\"#\" className=\"hover:text-foreground\">GitHub</a>\n </div>\n </div>\n }\n>\n <div className=\"py-12 space-y-6\">\n <h1 className=\"text-4xl font-extrabold tracking-tight\">Build faster with KJ UI</h1>\n <p className=\"text-lg text-muted-foreground max-w-2xl\">\n A modern, accessible design system tailored for developer tools, SaaS applications, and developer portfolios.\n </p>\n </div>\n</AppShell>"
3585
+ "usageSnippet": "<AppShell\n banner={<div>🚀 Announcement: KJ Product Kit v1.0 released!</div>}\n header={\n <div className=\"w-full flex items-center justify-between\">\n <div className=\"font-bold text-xl tracking-tight\">KJ Product Kit</div>\n <div className=\"hidden md:flex items-center gap-6 text-sm text-muted-foreground font-medium\">\n <a href=\"#\" className=\"hover:text-foreground\">\n Features\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n Docs\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n Pricing\n </a>\n </div>\n <Button size=\"sm\">Get Started</Button>\n </div>\n }\n mobileNav={\n <div className=\"flex flex-col gap-4 text-sm font-medium\">\n <a href=\"#\" className=\"hover:text-foreground\">\n Features\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n Docs\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n Pricing\n </a>\n </div>\n }\n footer={\n <div className=\"flex flex-col md:flex-row justify-between items-center gap-4 text-sm text-muted-foreground\">\n <div>© 2026 KJ Product Kit. All rights reserved.</div>\n <div className=\"flex gap-6\">\n <a href=\"#\" className=\"hover:text-foreground\">\n Privacy\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n Terms\n </a>\n <a href=\"#\" className=\"hover:text-foreground\">\n GitHub\n </a>\n </div>\n </div>\n }\n>\n <div className=\"py-12 space-y-6\">\n <h1 className=\"text-4xl font-extrabold tracking-tight\">Build faster with KJ UI</h1>\n <p className=\"text-lg text-muted-foreground max-w-2xl\">\n A modern, accessible design system tailored for developer tools, SaaS applications, and\n developer portfolios.\n </p>\n </div>\n</AppShell>"
3558
3586
  },
3559
3587
  {
3560
3588
  "name": "AppShellBanner",
@@ -4123,6 +4151,13 @@
4123
4151
  "defaultValue": null,
4124
4152
  "description": ""
4125
4153
  },
4154
+ {
4155
+ "name": "align",
4156
+ "type": "\"auto\" | \"start\" | \"end\"",
4157
+ "optional": true,
4158
+ "defaultValue": "\"auto\"",
4159
+ "description": ""
4160
+ },
4126
4161
  {
4127
4162
  "name": "width",
4128
4163
  "type": "number | string",
@@ -4375,5 +4410,261 @@
4375
4410
  ],
4376
4411
  "cva": null,
4377
4412
  "usageSnippet": "<ImageGallery images={sampleImages.slice(0, 4)} columns={2} />"
4413
+ },
4414
+ {
4415
+ "name": "InPostGeowidget",
4416
+ "importPath": "import { InPostGeowidget } from \"@kjaniec-dev/ui\";",
4417
+ "description": "React component InPostGeowidget.",
4418
+ "props": [
4419
+ {
4420
+ "name": "value",
4421
+ "type": "InPostPoint | string | null",
4422
+ "optional": true,
4423
+ "defaultValue": null,
4424
+ "description": "Currently selected point object or point code string (e.g. 'WAW01M')."
4425
+ },
4426
+ {
4427
+ "name": "onSelect",
4428
+ "type": "(point: InPostPoint) => void",
4429
+ "optional": true,
4430
+ "defaultValue": null,
4431
+ "description": "Callback triggered when point is selected on the map."
4432
+ },
4433
+ {
4434
+ "name": "triggerText",
4435
+ "type": "string",
4436
+ "optional": true,
4437
+ "defaultValue": "\"Wybierz Paczkomat®\"",
4438
+ "description": "Trigger button label. Default 'Wybierz Paczkomat®'."
4439
+ },
4440
+ {
4441
+ "name": "modalTitle",
4442
+ "type": "string",
4443
+ "optional": true,
4444
+ "defaultValue": "\"Wybierz punkt odbioru InPost\"",
4445
+ "description": "Modal header title. Default 'Wybierz punkt odbioru InPost'."
4446
+ },
4447
+ {
4448
+ "name": "disabled",
4449
+ "type": "boolean",
4450
+ "optional": true,
4451
+ "defaultValue": "false",
4452
+ "description": "Disable trigger button. Default false."
4453
+ },
4454
+ {
4455
+ "name": "open",
4456
+ "type": "boolean",
4457
+ "optional": true,
4458
+ "defaultValue": null,
4459
+ "description": "Controlled open state of the modal."
4460
+ },
4461
+ {
4462
+ "name": "onOpenChange",
4463
+ "type": "(open: boolean) => void",
4464
+ "optional": true,
4465
+ "defaultValue": null,
4466
+ "description": "Callback when open state changes."
4467
+ },
4468
+ {
4469
+ "name": "showSelectedBadge",
4470
+ "type": "boolean",
4471
+ "optional": true,
4472
+ "defaultValue": "true",
4473
+ "description": "Show selected point badge under trigger button. Default true."
4474
+ },
4475
+ {
4476
+ "name": "className",
4477
+ "type": "string",
4478
+ "optional": true,
4479
+ "defaultValue": "\"\"",
4480
+ "description": "Outer container CSS class name."
4481
+ },
4482
+ {
4483
+ "name": "buttonVariant",
4484
+ "type": "\"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\"",
4485
+ "optional": true,
4486
+ "defaultValue": "\"outline\"",
4487
+ "description": "Trigger button style variant ('primary', 'secondary', 'outline', 'ghost', 'danger'). Default 'outline'."
4488
+ },
4489
+ {
4490
+ "name": "buttonSize",
4491
+ "type": "\"sm\" | \"md\" | \"lg\"",
4492
+ "optional": true,
4493
+ "defaultValue": "\"md\"",
4494
+ "description": "Trigger button size ('sm', 'md', 'lg'). Default 'md'."
4495
+ },
4496
+ {
4497
+ "name": "token",
4498
+ "type": "string",
4499
+ "optional": true,
4500
+ "defaultValue": null,
4501
+ "description": "InPost API Token (optional for sandbox)."
4502
+ },
4503
+ {
4504
+ "name": "language",
4505
+ "type": "InPostLanguage",
4506
+ "optional": true,
4507
+ "defaultValue": null,
4508
+ "description": "Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'."
4509
+ },
4510
+ {
4511
+ "name": "config",
4512
+ "type": "InPostConfigType",
4513
+ "optional": true,
4514
+ "defaultValue": null,
4515
+ "description": "Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'."
4516
+ },
4517
+ {
4518
+ "name": "sandbox",
4519
+ "type": "boolean",
4520
+ "optional": true,
4521
+ "defaultValue": null,
4522
+ "description": "Enable sandbox environment. Default false."
4523
+ },
4524
+ {
4525
+ "name": "customScriptUrl",
4526
+ "type": "string",
4527
+ "optional": true,
4528
+ "defaultValue": null,
4529
+ "description": "Custom SDK JavaScript URL."
4530
+ },
4531
+ {
4532
+ "name": "customCssUrl",
4533
+ "type": "string",
4534
+ "optional": true,
4535
+ "defaultValue": null,
4536
+ "description": "Custom SDK CSS URL."
4537
+ }
4538
+ ],
4539
+ "cva": null,
4540
+ "usageSnippet": "<InPostGeowidget sandbox={true} onPointSelect={(point) => setSelectedPoint(point)} />"
4541
+ },
4542
+ {
4543
+ "name": "InPostGeowidgetModal",
4544
+ "importPath": "import { InPostGeowidgetModal } from \"@kjaniec-dev/ui\";",
4545
+ "description": "React component InPostGeowidgetModal.",
4546
+ "props": [
4547
+ {
4548
+ "name": "value",
4549
+ "type": "InPostPoint | string | null",
4550
+ "optional": true,
4551
+ "defaultValue": null,
4552
+ "description": "Currently selected point object or point code string (e.g. 'WAW01M')."
4553
+ },
4554
+ {
4555
+ "name": "onSelect",
4556
+ "type": "(point: InPostPoint) => void",
4557
+ "optional": true,
4558
+ "defaultValue": null,
4559
+ "description": "Callback triggered when point is selected on the map."
4560
+ },
4561
+ {
4562
+ "name": "triggerText",
4563
+ "type": "string",
4564
+ "optional": true,
4565
+ "defaultValue": "\"Wybierz Paczkomat®\"",
4566
+ "description": "Trigger button label. Default 'Wybierz Paczkomat®'."
4567
+ },
4568
+ {
4569
+ "name": "modalTitle",
4570
+ "type": "string",
4571
+ "optional": true,
4572
+ "defaultValue": "\"Wybierz punkt odbioru InPost\"",
4573
+ "description": "Modal header title. Default 'Wybierz punkt odbioru InPost'."
4574
+ },
4575
+ {
4576
+ "name": "disabled",
4577
+ "type": "boolean",
4578
+ "optional": true,
4579
+ "defaultValue": "false",
4580
+ "description": "Disable trigger button. Default false."
4581
+ },
4582
+ {
4583
+ "name": "open",
4584
+ "type": "boolean",
4585
+ "optional": true,
4586
+ "defaultValue": null,
4587
+ "description": "Controlled open state of the modal."
4588
+ },
4589
+ {
4590
+ "name": "onOpenChange",
4591
+ "type": "(open: boolean) => void",
4592
+ "optional": true,
4593
+ "defaultValue": null,
4594
+ "description": "Callback when open state changes."
4595
+ },
4596
+ {
4597
+ "name": "showSelectedBadge",
4598
+ "type": "boolean",
4599
+ "optional": true,
4600
+ "defaultValue": "true",
4601
+ "description": "Show selected point badge under trigger button. Default true."
4602
+ },
4603
+ {
4604
+ "name": "className",
4605
+ "type": "string",
4606
+ "optional": true,
4607
+ "defaultValue": "\"\"",
4608
+ "description": "Outer container CSS class name."
4609
+ },
4610
+ {
4611
+ "name": "buttonVariant",
4612
+ "type": "\"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\"",
4613
+ "optional": true,
4614
+ "defaultValue": "\"outline\"",
4615
+ "description": "Trigger button style variant ('primary', 'secondary', 'outline', 'ghost', 'danger'). Default 'outline'."
4616
+ },
4617
+ {
4618
+ "name": "buttonSize",
4619
+ "type": "\"sm\" | \"md\" | \"lg\"",
4620
+ "optional": true,
4621
+ "defaultValue": "\"md\"",
4622
+ "description": "Trigger button size ('sm', 'md', 'lg'). Default 'md'."
4623
+ },
4624
+ {
4625
+ "name": "token",
4626
+ "type": "string",
4627
+ "optional": true,
4628
+ "defaultValue": null,
4629
+ "description": "InPost API Token (optional for sandbox)."
4630
+ },
4631
+ {
4632
+ "name": "language",
4633
+ "type": "InPostLanguage",
4634
+ "optional": true,
4635
+ "defaultValue": null,
4636
+ "description": "Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'."
4637
+ },
4638
+ {
4639
+ "name": "config",
4640
+ "type": "InPostConfigType",
4641
+ "optional": true,
4642
+ "defaultValue": null,
4643
+ "description": "Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'."
4644
+ },
4645
+ {
4646
+ "name": "sandbox",
4647
+ "type": "boolean",
4648
+ "optional": true,
4649
+ "defaultValue": null,
4650
+ "description": "Enable sandbox environment. Default false."
4651
+ },
4652
+ {
4653
+ "name": "customScriptUrl",
4654
+ "type": "string",
4655
+ "optional": true,
4656
+ "defaultValue": null,
4657
+ "description": "Custom SDK JavaScript URL."
4658
+ },
4659
+ {
4660
+ "name": "customCssUrl",
4661
+ "type": "string",
4662
+ "optional": true,
4663
+ "defaultValue": null,
4664
+ "description": "Custom SDK CSS URL."
4665
+ }
4666
+ ],
4667
+ "cva": null,
4668
+ "usageSnippet": "<InPostGeowidgetModal sandbox={true} value={point} onSelect={(p) => setPoint(p)} />"
4378
4669
  }
4379
4670
  ]