@alexgorbatchev/shadcn 0.0.47 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -4
- package/dist/{chunk-snq5m541.js → chunk-02a3sgge.js} +3 -3
- package/dist/{chunk-mqea74ex.js → chunk-032fn19y.js} +2 -2
- package/dist/{chunk-tg5grn8f.js → chunk-056z8fc3.js} +2 -2
- package/dist/{chunk-fz2x6hvf.js → chunk-09x5ne2y.js} +4 -4
- package/dist/{chunk-0q9n4syq.js → chunk-0bwg27nq.js} +3 -3
- package/dist/{chunk-hyq4nwg2.js → chunk-0hq6rg7w.js} +1 -1
- package/dist/{chunk-6kygf29c.js → chunk-0jz2mp48.js} +2 -2
- package/dist/{chunk-fvg93469.js → chunk-0ybqnkcy.js} +1 -1
- package/dist/{chunk-m9rrhywc.js → chunk-10bcpsft.js} +6 -6
- package/dist/{chunk-8wc2z7te.js → chunk-10vjajh7.js} +104 -76
- package/dist/{chunk-588wj6g4.js → chunk-11m1mwv4.js} +3 -3
- package/dist/{chunk-wnhxn2se.js → chunk-16qrkr8k.js} +1 -1
- package/dist/{chunk-c9ypcp4s.js → chunk-1f6p05qh.js} +5 -5
- package/dist/{chunk-d70rcwk7.js → chunk-1fzwfn11.js} +1 -1
- package/dist/{chunk-3wap1z7h.js → chunk-1k2g7rpj.js} +2 -2
- package/dist/{chunk-c4m53x5s.js → chunk-1wrsg75m.js} +1 -1
- package/dist/{chunk-zj30cfgx.js → chunk-1xgqshkv.js} +1 -1
- package/dist/{chunk-s3wqwhxc.js → chunk-228jkv3n.js} +1 -1
- package/dist/{chunk-f6rbv5gf.js → chunk-2b5f37wj.js} +3 -3
- package/dist/{chunk-kxx5fnpb.js → chunk-2fxzw0xc.js} +2 -2
- package/dist/{chunk-xq579zwh.js → chunk-2z53taz1.js} +1 -1
- package/dist/{chunk-p1eqxz4v.js → chunk-31wptjv4.js} +15 -56
- package/dist/{chunk-wgxs6b5t.js → chunk-39q6906v.js} +1 -1
- package/dist/{chunk-s8ejm9d8.js → chunk-3b15harp.js} +1 -1
- package/dist/{chunk-6jw87d07.js → chunk-3gc5n7dc.js} +2 -2
- package/dist/{chunk-05shyxqp.js → chunk-3gxptxxs.js} +1 -1
- package/dist/{chunk-jhw9q2eq.js → chunk-3j9enr2q.js} +1 -1
- package/dist/{chunk-ybyx7vt4.js → chunk-3kw3nft7.js} +3 -3
- package/dist/{chunk-vfhztmet.js → chunk-3p6085ag.js} +1 -1
- package/dist/{chunk-fb6h4fzt.js → chunk-3qq9yhn2.js} +1 -1
- package/dist/{chunk-a82d9z1e.js → chunk-3qrvksfh.js} +1 -1
- package/dist/{chunk-fxfwgr5g.js → chunk-3rjm30tj.js} +7 -7
- package/dist/{chunk-e9756880.js → chunk-4143tbd7.js} +2 -2
- package/dist/{chunk-645dhey7.js → chunk-424xrf3x.js} +11 -9
- package/dist/{chunk-23jrbq6y.js → chunk-4531ygnr.js} +1 -1
- package/dist/{chunk-9de1htr5.js → chunk-4e96tpw0.js} +1 -1
- package/dist/{chunk-jgdpa00w.js → chunk-4t23yhc0.js} +2 -2
- package/dist/{chunk-wh7rmym5.js → chunk-4z3c9p9y.js} +3 -3
- package/dist/{chunk-1t959882.js → chunk-4zm4dn1a.js} +2 -2
- package/dist/{chunk-f08tw6hg.js → chunk-50ykf6dc.js} +2 -2
- package/dist/{chunk-zksbrzf6.js → chunk-51t02gb9.js} +3 -3
- package/dist/{chunk-rajgnfbr.js → chunk-52aadmkc.js} +1 -1
- package/dist/{chunk-srr328m4.js → chunk-58cpjhsr.js} +30 -15
- package/dist/{chunk-0twprqdp.js → chunk-5bq2j907.js} +3 -3
- package/dist/{chunk-7w8yemba.js → chunk-5jgfh8t9.js} +1 -1
- package/dist/{chunk-8k18tnap.js → chunk-5pgk9qar.js} +3 -3
- package/dist/{chunk-7mnba0d8.js → chunk-5rxjvjkq.js} +6 -6
- package/dist/{chunk-fky4t8cc.js → chunk-5tag5wg4.js} +9 -9
- package/dist/{chunk-xvmv0xm5.js → chunk-5wk6h8rc.js} +3 -3
- package/dist/{chunk-gbmvkt3q.js → chunk-62ggz655.js} +4 -4
- package/dist/{chunk-m0agthfm.js → chunk-65xd5we6.js} +2 -2
- package/dist/{chunk-23419f5j.js → chunk-6bsys2p8.js} +2 -2
- package/dist/{chunk-84gs32n6.js → chunk-6en4vrjc.js} +79 -48
- package/dist/{chunk-w1jm0rx3.js → chunk-6eseyyv3.js} +4 -4
- package/dist/{chunk-96x8wa8w.js → chunk-6gmarxhb.js} +2 -2
- package/dist/{chunk-vhm7fpav.js → chunk-6pj5fxa2.js} +10 -10
- package/dist/{chunk-v8gdzaxt.js → chunk-6wqp7xn4.js} +1 -1
- package/dist/{chunk-10t1w38s.js → chunk-70rxgqd7.js} +3 -3
- package/dist/{chunk-8xnjf4ef.js → chunk-737c03z9.js} +3 -3
- package/dist/{chunk-3xw5sdfk.js → chunk-73s0vkbs.js} +2 -2
- package/dist/{chunk-2mn2ctsk.js → chunk-7cq1s2ey.js} +1 -1
- package/dist/{chunk-ydfsxbrn.js → chunk-7dpp28jx.js} +2 -2
- package/dist/{chunk-79vgr8w9.js → chunk-7gjmprwx.js} +5 -5
- package/dist/{chunk-x6vx0v6d.js → chunk-7srpghny.js} +2 -2
- package/dist/{chunk-bnaejcfx.js → chunk-7v8ry91s.js} +2 -2
- package/dist/{chunk-0fmrwsgp.js → chunk-7vg045gd.js} +1 -1
- package/dist/{chunk-vyve5wf3.js → chunk-7vnpp3ya.js} +1 -1
- package/dist/{chunk-pws4vb8r.js → chunk-7yc7phbt.js} +3 -3
- package/dist/{chunk-cn1ns1xj.js → chunk-7zf1pehx.js} +2 -2
- package/dist/{chunk-77xfccfq.js → chunk-880zr7gb.js} +4 -4
- package/dist/{chunk-2krw4tjq.js → chunk-8b4gq4xb.js} +3 -3
- package/dist/{chunk-m71d0g7v.js → chunk-8gtsqm4v.js} +6 -6
- package/dist/{chunk-kbcprevc.js → chunk-8jyhvaer.js} +1 -1
- package/dist/{chunk-prp1x0by.js → chunk-8sktrf74.js} +1 -1
- package/dist/{chunk-ewhk1ze1.js → chunk-8vw7ycbs.js} +2 -2
- package/dist/{chunk-td7ra5d2.js → chunk-8w8mnk5h.js} +2 -2
- package/dist/{chunk-71efbr5n.js → chunk-8xk2zeg2.js} +1 -1
- package/dist/{chunk-60p7sagm.js → chunk-9ecf92s6.js} +1 -1
- package/dist/{chunk-1zbtg30t.js → chunk-9gdt00hm.js} +1 -1
- package/dist/{chunk-6jpz5geq.js → chunk-9n0axzd5.js} +3 -3
- package/dist/{chunk-wjx6zf94.js → chunk-9t530p75.js} +1 -1
- package/dist/{chunk-dfkzm4f1.js → chunk-9yjrw75r.js} +14 -14
- package/dist/{chunk-pa8yemp1.js → chunk-a1c1yrkz.js} +1 -1
- package/dist/{chunk-9qcqxp3v.js → chunk-a3n2jee5.js} +1 -1
- package/dist/{chunk-hj9avapz.js → chunk-ab932mya.js} +5 -5
- package/dist/{chunk-9vm8fks0.js → chunk-ajnmzqsv.js} +1 -1
- package/dist/{chunk-khkdgmvm.js → chunk-amdsd0g4.js} +1 -1
- package/dist/{chunk-ghz2g6j5.js → chunk-an661kn2.js} +3 -3
- package/dist/{chunk-06c2d8rd.js → chunk-b19nmr0m.js} +2 -2
- package/dist/{chunk-caz81rnv.js → chunk-b5s5y5wq.js} +1 -1
- package/dist/{chunk-5j39rehg.js → chunk-bcwbh20z.js} +1 -1
- package/dist/{chunk-38301e40.js → chunk-bd09gygt.js} +1 -1
- package/dist/{chunk-21ab0jsp.js → chunk-bf8kbj33.js} +1 -1
- package/dist/{chunk-h3qqt3rg.js → chunk-bgvjmnst.js} +3 -3
- package/dist/{chunk-x1598f0d.js → chunk-bkb7mahn.js} +3 -3
- package/dist/{chunk-jadf0xqn.js → chunk-brxk90eb.js} +2 -2
- package/dist/{chunk-ct6ayjkt.js → chunk-bxzbrzbb.js} +2 -2
- package/dist/{chunk-ngq209hr.js → chunk-cjx1ry29.js} +3 -3
- package/dist/{chunk-t97ts9df.js → chunk-d1z748rn.js} +1 -1
- package/dist/{chunk-1hy9rfvc.js → chunk-d1zj7xk2.js} +2 -2
- package/dist/{chunk-cn81dnqb.js → chunk-d93zpy8g.js} +1 -1
- package/dist/{chunk-mwzmmeeq.js → chunk-ddbc17b4.js} +1 -1
- package/dist/{chunk-d444bwwf.js → chunk-dq2s4vwc.js} +3 -3
- package/dist/{chunk-tbd56x4h.js → chunk-dvzs0424.js} +3 -3
- package/dist/{chunk-k6hfm259.js → chunk-dyg4pwcd.js} +1 -1
- package/dist/{chunk-f9twxy4y.js → chunk-e55n7tff.js} +2 -2
- package/dist/{chunk-f72tygjq.js → chunk-ee098znw.js} +2 -2
- package/dist/{chunk-dhmtrz6f.js → chunk-efm3b1py.js} +3 -3
- package/dist/{chunk-cp2m7y7v.js → chunk-en44w1pn.js} +3 -1
- package/dist/{chunk-tq0pfv5h.js → chunk-er6e5fj8.js} +1 -1
- package/dist/{chunk-gykrcxd1.js → chunk-f281m4a9.js} +1 -1
- package/dist/{chunk-m99hfsps.js → chunk-f2p7w894.js} +1 -1
- package/dist/{chunk-h5zhqdmb.js → chunk-f37ge3wq.js} +3 -3
- package/dist/{chunk-q7zc22qp.js → chunk-f4xwjhmy.js} +1 -1
- package/dist/{chunk-3t7h84te.js → chunk-f63kp4af.js} +3 -3
- package/dist/{chunk-x6zmnr8m.js → chunk-f6qkck8r.js} +6 -6
- package/dist/{chunk-2mswp6h1.js → chunk-f7cczxya.js} +4 -4
- package/dist/{chunk-y7tyyzfy.js → chunk-f97wwbfy.js} +3 -3
- package/dist/chunk-f9sm5zpv.js +47 -0
- package/dist/{chunk-v9r6zprz.js → chunk-fdhssr0q.js} +1 -1
- package/dist/{chunk-8rtm4y46.js → chunk-fjw7yyt3.js} +8 -8
- package/dist/{chunk-fba5hr7b.js → chunk-fm1b6e79.js} +2 -2
- package/dist/{chunk-83v2vma2.js → chunk-fnqc1181.js} +2 -2
- package/dist/{chunk-khtt3f21.js → chunk-fp4dkem8.js} +2 -2
- package/dist/{chunk-4gcpx4pm.js → chunk-fvg6symh.js} +2 -2
- package/dist/{chunk-1q30wk9x.js → chunk-g5dzh9rr.js} +3 -3
- package/dist/{chunk-6475gsta.js → chunk-g975kjdm.js} +2 -2
- package/dist/{chunk-xwf411kf.js → chunk-gb16cwpw.js} +2 -2
- package/dist/{chunk-axw1yqxz.js → chunk-gg37cyfd.js} +2 -2
- package/dist/{chunk-8jnfvgvk.js → chunk-ghv4vcae.js} +2 -2
- package/dist/{chunk-f9kdk0q4.js → chunk-gns8a3x5.js} +1 -1
- package/dist/{chunk-j2hawnp9.js → chunk-gremnsj0.js} +2 -2
- package/dist/{chunk-rr74321a.js → chunk-gx8z1f8n.js} +2 -2
- package/dist/{chunk-fgfaarep.js → chunk-h2hpkawe.js} +2 -2
- package/dist/{chunk-fkzh31y0.js → chunk-h7zgbreq.js} +1 -1
- package/dist/{chunk-jk941nke.js → chunk-h9tjva8p.js} +2 -2
- package/dist/{chunk-svz0farj.js → chunk-ha7g0gt2.js} +2 -2
- package/dist/{chunk-mtx71g1t.js → chunk-hkqjfk9w.js} +5 -5
- package/dist/{chunk-beywepck.js → chunk-hp9vkfh5.js} +2 -2
- package/dist/chunk-hpf8s83c.js +89 -0
- package/dist/{chunk-63gvcckp.js → chunk-hw988ram.js} +1 -1
- package/dist/{chunk-8r57zwqg.js → chunk-hyaz95gc.js} +1 -1
- package/dist/{chunk-7qwp41y5.js → chunk-j2zxqzta.js} +2 -2
- package/dist/{chunk-f63cr8mx.js → chunk-j6rp3w59.js} +1 -1
- package/dist/{chunk-s0ecp1mv.js → chunk-jbrt06va.js} +3 -3
- package/dist/{chunk-qmfxytfb.js → chunk-jhpeb72r.js} +3 -3
- package/dist/{chunk-0qgd06td.js → chunk-jhvy8jay.js} +1263 -726
- package/dist/{chunk-6fp821jv.js → chunk-jswxzynj.js} +2 -2
- package/dist/{chunk-nxkbx5r2.js → chunk-jvmm6k16.js} +2 -2
- package/dist/{chunk-bygq5yqf.js → chunk-k1f35j55.js} +1 -1
- package/dist/{chunk-w9jyajx3.js → chunk-k2t9ey7z.js} +1 -1
- package/dist/{chunk-efs4bk5b.js → chunk-k7cvfw0f.js} +1 -1
- package/dist/{chunk-4pae2b1z.js → chunk-k7gzvk6n.js} +1 -1
- package/dist/{chunk-ekbesw9t.js → chunk-kgqe8gpb.js} +1 -1
- package/dist/{chunk-7zyf9nnf.js → chunk-kxvn3eae.js} +2 -2
- package/dist/{chunk-3v95p5js.js → chunk-m0kavf2m.js} +1 -1
- package/dist/{chunk-jcxxjkqx.js → chunk-m32ptxf3.js} +1 -1
- package/dist/{chunk-vm3fzfnj.js → chunk-m37eyydy.js} +1 -1
- package/dist/chunk-m4geb1s5.js +30 -0
- package/dist/{chunk-7g1dx0bn.js → chunk-m6eb1thj.js} +1 -1
- package/dist/{chunk-ptgtqv1a.js → chunk-m98d89xc.js} +1 -1
- package/dist/{chunk-aahx2gyb.js → chunk-mc0788ah.js} +2 -2
- package/dist/{chunk-yabr2qx9.js → chunk-mmydm40x.js} +1 -1
- package/dist/{chunk-bt7ramb0.js → chunk-mxcfz56p.js} +3 -3
- package/dist/{chunk-hpmvzsnv.js → chunk-n2n7k3he.js} +1 -1
- package/dist/{chunk-vnxy5dtp.js → chunk-n8n3gp71.js} +1 -1
- package/dist/{chunk-dy4ghe9p.js → chunk-nay3qsgw.js} +5 -5
- package/dist/{chunk-v00z8h0n.js → chunk-nbpvngb8.js} +1 -1
- package/dist/{chunk-xfhk2vrw.js → chunk-nfbxyvht.js} +2 -2
- package/dist/{chunk-jwzg2twy.js → chunk-nj1sgtss.js} +3 -3
- package/dist/{chunk-e970kv8r.js → chunk-nk53z990.js} +2 -2
- package/dist/{chunk-smzhep9f.js → chunk-nnhn7kjq.js} +1 -1
- package/dist/{chunk-e9v481he.js → chunk-nrdc4t48.js} +3 -3
- package/dist/{chunk-bhejvd5q.js → chunk-ny54gm5e.js} +2 -2
- package/dist/{chunk-4k2jzddw.js → chunk-p33nbc0k.js} +1 -1
- package/dist/{chunk-q606kj28.js → chunk-p56he2j7.js} +1 -1
- package/dist/{chunk-zpcxr2r4.js → chunk-pq89m919.js} +2 -2
- package/dist/{chunk-0xqqs9kw.js → chunk-ps59anjd.js} +2 -2
- package/dist/{chunk-z8n03ra5.js → chunk-ptdr68cq.js} +3 -3
- package/dist/{chunk-wq8jxf31.js → chunk-pv379mp6.js} +4 -4
- package/dist/{chunk-zc60zhz7.js → chunk-q1fgpxfk.js} +1 -1
- package/dist/{chunk-2pzvxbq3.js → chunk-qff5s98n.js} +3 -3
- package/dist/{chunk-1hq2k0fs.js → chunk-qgwshegs.js} +3 -3
- package/dist/{chunk-m4wfy6n3.js → chunk-qnf643p0.js} +3 -3
- package/dist/{chunk-fpj82hex.js → chunk-qrjxx1x9.js} +2 -2
- package/dist/{chunk-tzred534.js → chunk-qzxz33rc.js} +1 -1
- package/dist/{chunk-1akz4hf3.js → chunk-r0g0gwv6.js} +1 -1
- package/dist/{chunk-zp3wrbve.js → chunk-r6bwsyxy.js} +2 -2
- package/dist/{chunk-vrs3371x.js → chunk-rgdesh1z.js} +4 -4
- package/dist/{chunk-n5ea9nv1.js → chunk-rpsf1cph.js} +4 -4
- package/dist/{chunk-5zyc28sc.js → chunk-rs5xh8wa.js} +3 -3
- package/dist/{chunk-14mh00z3.js → chunk-rxjxb4vy.js} +4 -4
- package/dist/{chunk-xgp1eyhr.js → chunk-rzd306rr.js} +4 -4
- package/dist/{chunk-kzar67tq.js → chunk-s2f3zzbb.js} +1 -1
- package/dist/{chunk-4e879g03.js → chunk-s3r5g3md.js} +2 -2
- package/dist/{chunk-r4jzz4f2.js → chunk-sp4g23m0.js} +1 -1
- package/dist/{chunk-dq6se94p.js → chunk-sqz2901w.js} +2 -2
- package/dist/{chunk-3ptcdy6g.js → chunk-sty5mqva.js} +2 -2
- package/dist/{chunk-53cmv2aj.js → chunk-t06g497x.js} +1 -1
- package/dist/{chunk-mcdqy5gt.js → chunk-t18hedpv.js} +2 -2
- package/dist/{chunk-e50068hn.js → chunk-t1zv81zn.js} +2 -2
- package/dist/{chunk-wkg0rssg.js → chunk-t36xxpry.js} +1 -1
- package/dist/{chunk-1xncv9gb.js → chunk-t3p4dn1p.js} +1 -1
- package/dist/{chunk-8q0xpeh4.js → chunk-t4y934a5.js} +1 -1
- package/dist/{chunk-vg2j5044.js → chunk-t5e0s8q6.js} +1 -1
- package/dist/{chunk-p6kw19sx.js → chunk-t6w8vcvf.js} +8 -8
- package/dist/{chunk-zte6pw69.js → chunk-tjn53x34.js} +1 -1
- package/dist/{chunk-h51gnkz8.js → chunk-tqrn8kq8.js} +2 -2
- package/dist/{chunk-cy1xv5nz.js → chunk-trwye0d6.js} +2 -2
- package/dist/{chunk-b3b2tvkg.js → chunk-tsvrzz9w.js} +1 -1
- package/dist/{chunk-wpa484a6.js → chunk-tw8f1ew4.js} +2 -2
- package/dist/{chunk-rtb0ejf0.js → chunk-v2bbs7s8.js} +1 -1
- package/dist/{chunk-v24aqtkt.js → chunk-v2wx2fz4.js} +2 -2
- package/dist/{chunk-0gwqtywa.js → chunk-v9kxtms1.js} +3 -3
- package/dist/{chunk-5h7xxnr7.js → chunk-vazxcmjt.js} +1 -1
- package/dist/{chunk-khgrv6k6.js → chunk-vjsnyvt7.js} +1 -1
- package/dist/{chunk-5fg2ns3n.js → chunk-vkay3k3s.js} +1 -1
- package/dist/{chunk-agy4dzea.js → chunk-vneyvqxe.js} +1 -1
- package/dist/{chunk-1sxpyjph.js → chunk-vq9yw85z.js} +4 -4
- package/dist/{chunk-5w279fsn.js → chunk-vqgw4xab.js} +5 -5
- package/dist/{chunk-5s6r4g8w.js → chunk-vqkfgdt6.js} +1 -1
- package/dist/{chunk-4c2sqyrp.js → chunk-vr1taabg.js} +1 -1
- package/dist/{chunk-nw8zvj83.js → chunk-vrreeywg.js} +1 -1
- package/dist/{chunk-48yhjpfs.js → chunk-vxazk4y0.js} +2 -2
- package/dist/{chunk-hxctrrkh.js → chunk-wrvxzfdb.js} +1 -1
- package/dist/{chunk-h0g7qkya.js → chunk-wtf2qczs.js} +1 -1
- package/dist/{chunk-xvgp05yg.js → chunk-wvap51y9.js} +1 -1
- package/dist/{chunk-gtebjkkz.js → chunk-wzgnj3s7.js} +5 -5
- package/dist/{chunk-hxg0pkj9.js → chunk-x0212x2e.js} +1 -1
- package/dist/{chunk-qv3b2jvc.js → chunk-x0p3g392.js} +2 -2
- package/dist/{chunk-1sqv5axv.js → chunk-x4rwh3pv.js} +1 -1
- package/dist/{chunk-8bxfp671.js → chunk-x805mg9x.js} +2 -2
- package/dist/{chunk-qky9999p.js → chunk-x8ftt0wm.js} +1 -1
- package/dist/{chunk-zdt8xxzy.js → chunk-x9qph1g4.js} +1 -1
- package/dist/{chunk-k01gpm23.js → chunk-xg439a2k.js} +1 -1
- package/dist/{chunk-2ye8evra.js → chunk-xk5f09gs.js} +1 -1
- package/dist/{chunk-ynkpdpn0.js → chunk-xw5992sc.js} +1 -1
- package/dist/{chunk-3b6ws9hk.js → chunk-xywttk96.js} +2 -2
- package/dist/{chunk-f28xnx55.js → chunk-y18e8eaz.js} +2 -2
- package/dist/{chunk-46tg5t7g.js → chunk-y2dn791x.js} +4 -4
- package/dist/{chunk-esrypw6g.js → chunk-ya4v4p8k.js} +2 -2
- package/dist/{chunk-kz9np152.js → chunk-ybs1waxw.js} +1 -1
- package/dist/{chunk-474fgeht.js → chunk-yeht7bxz.js} +2 -2
- package/dist/{chunk-4e1eq1t5.js → chunk-z0z9p92d.js} +3 -3
- package/dist/{chunk-5myr07fp.js → chunk-z15pn5a5.js} +2 -2
- package/dist/{chunk-p5x18ckg.js → chunk-zdp3bb9e.js} +1 -1
- package/dist/{chunk-kv1akmf5.js → chunk-zdpm4kf4.js} +2 -2
- package/dist/{chunk-ray29hdb.js → chunk-zk8enn91.js} +2 -2
- package/dist/{chunk-r7mfpkbb.js → chunk-zmygyj8h.js} +4 -4
- package/dist/{chunk-m7n2f6nf.js → chunk-zrgacdwr.js} +1 -1
- package/dist/{chunk-cvg5366s.js → chunk-zthc8ajd.js} +1 -1
- package/dist/{chunk-3g8p9apn.js → chunk-zyxzn7xf.js} +1 -1
- package/dist/components/ActionsMenu.d.ts +21 -0
- package/dist/components/AppShell.d.ts +16 -4
- package/dist/components/ConfirmationDialog.d.ts +3 -2
- package/dist/components/Container.d.ts +13 -0
- package/dist/components/ContextMenu.d.ts +3 -16
- package/dist/components/DropdownMenu.d.ts +4 -23
- package/dist/components/FormDialog.d.ts +23 -0
- package/dist/components/Grid.d.ts +27 -0
- package/dist/components/Heading.d.ts +21 -0
- package/dist/components/InlineEdit.d.ts +4 -2
- package/dist/components/MenuParts.d.ts +24 -0
- package/dist/components/MenuPopup.d.ts +6 -0
- package/dist/components/Menubar.d.ts +4 -6
- package/dist/components/ScrollArea.d.ts +3 -1
- package/dist/components/Stack.d.ts +22 -0
- package/dist/components/Table.d.ts +2 -1
- package/dist/components/Text.d.ts +25 -0
- package/dist/components/WeatherForecast.d.ts +19 -0
- package/dist/components/WeatherSummary.d.ts +32 -0
- package/dist/components/analytics/AnalyticsLink.d.ts +4 -3
- package/dist/components/assistant-ui/elements/AgentCard.js +3 -3
- package/dist/components/assistant-ui/elements/AgentHandoff.js +2 -2
- package/dist/components/assistant-ui/elements/AgentPlan.js +3 -3
- package/dist/components/assistant-ui/elements/AgentStatus.js +2 -2
- package/dist/components/assistant-ui/elements/ApprovalCard.js +3 -3
- package/dist/components/assistant-ui/elements/ArtifactCard.js +4 -4
- package/dist/components/assistant-ui/elements/AudioPlayer.js +3 -3
- package/dist/components/assistant-ui/elements/BackgroundInbox.js +4 -4
- package/dist/components/assistant-ui/elements/CanvasSplit.d.ts +9 -2
- package/dist/components/assistant-ui/elements/CanvasSplit.js +3 -3
- package/dist/components/assistant-ui/elements/Chart.js +4 -4
- package/dist/components/assistant-ui/elements/ChatPanel.js +6 -6
- package/dist/components/assistant-ui/elements/CheckpointHistory.js +3 -3
- package/dist/components/assistant-ui/elements/Citation.js +5 -5
- package/dist/components/assistant-ui/elements/CodeDiff.js +3 -3
- package/dist/components/assistant-ui/elements/CodeRunner.js +3 -3
- package/dist/components/assistant-ui/elements/CommandPalette.js +9 -9
- package/dist/components/assistant-ui/elements/ComparisonCard.js +2 -2
- package/dist/components/assistant-ui/elements/Composer.js +2 -2
- package/dist/components/assistant-ui/elements/ComposerActions.js +2 -2
- package/dist/components/assistant-ui/elements/ComposerAttachButton.js +3 -3
- package/dist/components/assistant-ui/elements/ComposerAttachmentChip.js +4 -4
- package/dist/components/assistant-ui/elements/ComposerAttachments.js +6 -6
- package/dist/components/assistant-ui/elements/ComposerBar.js +6 -6
- package/dist/components/assistant-ui/elements/ComposerCommandItem.js +5 -5
- package/dist/components/assistant-ui/elements/ComposerContext.js +5 -5
- package/dist/components/assistant-ui/elements/ComposerInput.js +6 -6
- package/dist/components/assistant-ui/elements/ComposerMenu.js +2 -2
- package/dist/components/assistant-ui/elements/ComposerMenuItem.js +4 -4
- package/dist/components/assistant-ui/elements/ComposerModelItem.js +5 -5
- package/dist/components/assistant-ui/elements/ComposerModelTrigger.js +3 -3
- package/dist/components/assistant-ui/elements/ComposerPersonItem.js +5 -5
- package/dist/components/assistant-ui/elements/ComposerSend.js +3 -3
- package/dist/components/assistant-ui/elements/ComposerToolbar.js +6 -6
- package/dist/components/assistant-ui/elements/ComposerVoice.js +3 -3
- package/dist/components/assistant-ui/elements/ComposerVoiceButton.js +3 -3
- package/dist/components/assistant-ui/elements/ComputerUse.js +2 -2
- package/dist/components/assistant-ui/elements/ConfidenceMarker.js +2 -2
- package/dist/components/assistant-ui/elements/ConnectionState.js +3 -3
- package/dist/components/assistant-ui/elements/ContextBreakdown.js +2 -2
- package/dist/components/assistant-ui/elements/ContextDisplay.js +9 -9
- package/dist/components/assistant-ui/elements/ContextDisplayBar.js +6 -6
- package/dist/components/assistant-ui/elements/ContextDisplayContent.js +3 -3
- package/dist/components/assistant-ui/elements/ContextDisplayRing.js +6 -6
- package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +3 -3
- package/dist/components/assistant-ui/elements/ContextDisplayText.js +6 -6
- package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +3 -3
- package/dist/components/assistant-ui/elements/ConversationMap.js +3 -3
- package/dist/components/assistant-ui/elements/ConversationSearch.js +6 -6
- package/dist/components/assistant-ui/elements/CostMeter.js +2 -2
- package/dist/components/assistant-ui/elements/DataTable.js +7 -7
- package/dist/components/assistant-ui/elements/DaySeparator.js +2 -2
- package/dist/components/assistant-ui/elements/Diagram.js +3 -3
- package/dist/components/assistant-ui/elements/DiffViewer.js +13 -13
- package/dist/components/assistant-ui/elements/DiffViewerContent.js +2 -2
- package/dist/components/assistant-ui/elements/DiffViewerFile.js +2 -2
- package/dist/components/assistant-ui/elements/DiffViewerFileBadge.js +3 -3
- package/dist/components/assistant-ui/elements/DiffViewerHeader.js +6 -6
- package/dist/components/assistant-ui/elements/DiffViewerLine.js +3 -3
- package/dist/components/assistant-ui/elements/DiffViewerSplitLine.js +3 -3
- package/dist/components/assistant-ui/elements/DiffViewerStats.js +3 -3
- package/dist/components/assistant-ui/elements/DirectiveText.js +3 -3
- package/dist/components/assistant-ui/elements/DocumentReference.js +3 -3
- package/dist/components/assistant-ui/elements/DotMatrix.js +2 -2
- package/dist/components/assistant-ui/elements/DraftRestore.js +3 -3
- package/dist/components/assistant-ui/elements/EditMessage.js +8 -8
- package/dist/components/assistant-ui/elements/ElicitationForm.js +10 -10
- package/dist/components/assistant-ui/elements/EmptyState.js +3 -3
- package/dist/components/assistant-ui/elements/EmptyStateComposer.js +6 -6
- package/dist/components/assistant-ui/elements/EmptyStateGreeting.js +2 -2
- package/dist/components/assistant-ui/elements/EmptyStateSuggestion.js +3 -3
- package/dist/components/assistant-ui/elements/EmptyStateSuggestions.js +2 -2
- package/dist/components/assistant-ui/elements/ErrorState.js +4 -4
- package/dist/components/assistant-ui/elements/EveAskQuestion.js +5 -5
- package/dist/components/assistant-ui/elements/FeedbackDialog.js +9 -9
- package/dist/components/assistant-ui/elements/File.js +6 -6
- package/dist/components/assistant-ui/elements/FileTree.js +3 -3
- package/dist/components/assistant-ui/elements/FlowGraph.js +3 -3
- package/dist/components/assistant-ui/elements/GenerationLoader.js +3 -3
- package/dist/components/assistant-ui/elements/GenerativeUi.js +9 -8
- package/dist/components/assistant-ui/elements/GeoMap.d.ts +7 -2
- package/dist/components/assistant-ui/elements/GeoMap.js +4 -3
- package/dist/components/assistant-ui/elements/GuardrailNotice.js +4 -4
- package/dist/components/assistant-ui/elements/Image.js +5 -5
- package/dist/components/assistant-ui/elements/ImageGallery.js +5 -5
- package/dist/components/assistant-ui/elements/ImageGeneration.js +4 -4
- package/dist/components/assistant-ui/elements/InlineCitation.js +2 -2
- package/dist/components/assistant-ui/elements/JobProgress.js +4 -4
- package/dist/components/assistant-ui/elements/LauncherBubble.js +4 -4
- package/dist/components/assistant-ui/elements/LinkPreview.js +3 -3
- package/dist/components/assistant-ui/elements/MapAnswer.js +3 -3
- package/dist/components/assistant-ui/elements/MarkdownText.js +5 -5
- package/dist/components/assistant-ui/elements/MathBlock.js +2 -2
- package/dist/components/assistant-ui/elements/McpServerPanel.js +5 -5
- package/dist/components/assistant-ui/elements/MemoryChips.js +3 -3
- package/dist/components/assistant-ui/elements/MermaidDiagram.js +6 -6
- package/dist/components/assistant-ui/elements/MermaidZoom.js +4 -4
- package/dist/components/assistant-ui/elements/MessageActions.js +4 -4
- package/dist/components/assistant-ui/elements/MessageAttachments.js +3 -3
- package/dist/components/assistant-ui/elements/MessageBranches.js +3 -3
- package/dist/components/assistant-ui/elements/MessagePair.js +3 -3
- package/dist/components/assistant-ui/elements/MessageQueue.js +3 -3
- package/dist/components/assistant-ui/elements/MessageTiming.js +2 -2
- package/dist/components/assistant-ui/elements/MobileComposer.js +6 -6
- package/dist/components/assistant-ui/elements/ModelPicker.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelector.js +17 -17
- package/dist/components/assistant-ui/elements/ModelSelectorContent.js +14 -14
- package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorItem.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorList.js +10 -10
- package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -3
- package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +8 -8
- package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +3 -3
- package/dist/components/assistant-ui/elements/NumberRoll.js +2 -2
- package/dist/components/assistant-ui/elements/NumberTicker.js +2 -2
- package/dist/components/assistant-ui/elements/Onboarding.js +3 -3
- package/dist/components/assistant-ui/elements/OptionList.js +6 -6
- package/dist/components/assistant-ui/elements/OptionText.js +2 -2
- package/dist/components/assistant-ui/elements/PermissionGrant.js +3 -3
- package/dist/components/assistant-ui/elements/PromptLibrary.js +6 -6
- package/dist/components/assistant-ui/elements/QuestionFlow.js +7 -7
- package/dist/components/assistant-ui/elements/QuotaBanner.js +3 -3
- package/dist/components/assistant-ui/elements/QuoteReply.js +3 -3
- package/dist/components/assistant-ui/elements/ReadAloud.js +4 -4
- package/dist/components/assistant-ui/elements/ReasoningContent.js +3 -3
- package/dist/components/assistant-ui/elements/ReasoningEffort.js +4 -4
- package/dist/components/assistant-ui/elements/ReasoningFade.js +2 -2
- package/dist/components/assistant-ui/elements/ReasoningPanel.js +4 -4
- package/dist/components/assistant-ui/elements/ReasoningRoot.js +2 -2
- package/dist/components/assistant-ui/elements/ReasoningText.js +2 -2
- package/dist/components/assistant-ui/elements/ReasoningTrigger.js +2 -2
- package/dist/components/assistant-ui/elements/RecommendationCard.d.ts +15 -7
- package/dist/components/assistant-ui/elements/RecommendationCard.js +3 -3
- package/dist/components/assistant-ui/elements/RegenerateMenu.js +4 -4
- package/dist/components/assistant-ui/elements/ResearchReport.js +2 -2
- package/dist/components/assistant-ui/elements/RetrievalChunks.js +3 -3
- package/dist/components/assistant-ui/elements/ReviewableDiff.js +3 -3
- package/dist/components/assistant-ui/elements/RunActivity.js +2 -2
- package/dist/components/assistant-ui/elements/ScheduleCard.js +3 -3
- package/dist/components/assistant-ui/elements/ScoreBreakdown.js +3 -3
- package/dist/components/assistant-ui/elements/ScrollAnchor.js +2 -2
- package/dist/components/assistant-ui/elements/SettingsPanel.js +6 -6
- package/dist/components/assistant-ui/elements/SharedConversation.js +3 -3
- package/dist/components/assistant-ui/elements/ShikiHighlighter.js +2 -2
- package/dist/components/assistant-ui/elements/ShimmerLabel.js +2 -2
- package/dist/components/assistant-ui/elements/Sources.js +3 -3
- package/dist/components/assistant-ui/elements/SpeakerIdentity.js +2 -2
- package/dist/components/assistant-ui/elements/SpecSheet.js +2 -2
- package/dist/components/assistant-ui/elements/StoppedRun.js +3 -3
- package/dist/components/assistant-ui/elements/StreamingText.js +2 -2
- package/dist/components/assistant-ui/elements/SubagentList.js +3 -3
- package/dist/components/assistant-ui/elements/Suggestions.js +3 -3
- package/dist/components/assistant-ui/elements/SwapLabel.js +2 -2
- package/dist/components/assistant-ui/elements/TaskCard.js +4 -4
- package/dist/components/assistant-ui/elements/TaskStateIcon.js +2 -2
- package/dist/components/assistant-ui/elements/TerminalBlock.js +3 -3
- package/dist/components/assistant-ui/elements/ThinkingIndicator.js +3 -3
- package/dist/components/assistant-ui/elements/ThreadList.js +3 -3
- package/dist/components/assistant-ui/elements/ThreadSearch.js +6 -6
- package/dist/components/assistant-ui/elements/Timeline.d.ts +20 -11
- package/dist/components/assistant-ui/elements/Timeline.js +2 -2
- package/dist/components/assistant-ui/elements/TodoList.js +3 -3
- package/dist/components/assistant-ui/elements/ToolCall.js +4 -4
- package/dist/components/assistant-ui/elements/ToolError.js +3 -3
- package/dist/components/assistant-ui/elements/ToolGroup.js +3 -3
- package/dist/components/assistant-ui/elements/ToolTimeline.js +4 -4
- package/dist/components/assistant-ui/elements/TooltipIconButton.js +3 -3
- package/dist/components/assistant-ui/elements/TraceWaterfall.js +2 -2
- package/dist/components/assistant-ui/elements/TypingIndicator.js +2 -2
- package/dist/components/assistant-ui/elements/VideoPlayer.js +2 -2
- package/dist/components/assistant-ui/elements/VoiceConversation.js +3 -3
- package/dist/components/assistant-ui/elements/VoiceOrb.js +2 -2
- package/dist/components/assistant-ui/elements/WebPreview.js +4 -4
- package/dist/components/assistant-ui/elements/WebSearch.js +3 -3
- package/dist/components/assistant-ui/eveAskQuestionToolkit.js +6 -6
- package/dist/components/assistant-ui/index.js +206 -205
- package/dist/components/assistant-ui/native/AgentStatus.js +3 -3
- package/dist/components/assistant-ui/native/AssistantModal.js +26 -26
- package/dist/components/assistant-ui/native/AssistantSidebar.js +25 -25
- package/dist/components/assistant-ui/native/AttachmentPreview.js +6 -6
- package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +2 -2
- package/dist/components/assistant-ui/native/ContextDisplay.js +11 -11
- package/dist/components/assistant-ui/native/ContextDisplayBar.js +8 -8
- package/dist/components/assistant-ui/native/ContextDisplayRing.js +8 -8
- package/dist/components/assistant-ui/native/ContextDisplayRoot.js +5 -5
- package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +4 -4
- package/dist/components/assistant-ui/native/ContextDisplayText.js +8 -8
- package/dist/components/assistant-ui/native/ConversationMapAui.js +4 -4
- package/dist/components/assistant-ui/native/DirectiveText.js +4 -4
- package/dist/components/assistant-ui/native/McpConfigDialog.js +9 -9
- package/dist/components/assistant-ui/native/MermaidDiagram.js +7 -7
- package/dist/components/assistant-ui/native/MessageTiming.js +3 -3
- package/dist/components/assistant-ui/native/ModelSelector.js +19 -19
- package/dist/components/assistant-ui/native/Reasoning.js +11 -11
- package/dist/components/assistant-ui/native/Sources.js +4 -4
- package/dist/components/assistant-ui/native/SyntaxHighlighter.js +3 -3
- package/dist/components/assistant-ui/native/TaskCard.js +10 -10
- package/dist/components/assistant-ui/native/TaskGroup.js +11 -11
- package/dist/components/assistant-ui/native/TaskTray.js +5 -5
- package/dist/components/assistant-ui/native/Thread.js +23 -23
- package/dist/components/assistant-ui/native/ThreadList.js +5 -5
- package/dist/components/assistant-ui/native/ThreadListSidebar.js +9 -9
- package/dist/components/assistant-ui/native/ToolFallbackRoot.js +4 -4
- package/dist/components/assistant-ui/native/ToolGroup.js +2 -2
- package/dist/components/assistant-ui/native/VoiceConnectButton.js +3 -3
- package/dist/components/assistant-ui/native/VoiceControl.js +8 -8
- package/dist/components/assistant-ui/native/VoiceConversation.js +4 -4
- package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +4 -4
- package/dist/components/assistant-ui/native/VoiceMuteButton.js +4 -4
- package/dist/components/assistant-ui/native/VoiceOrb.js +3 -3
- package/dist/components/assistant-ui/native/VoiceStatusDot.js +2 -2
- package/dist/components/assistant-ui/native/index.js +86 -86
- package/dist/components/calendar/index.js +4 -4
- package/dist/components/carousel/index.js +3 -3
- package/dist/components/chart/index.js +2 -2
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/command/index.js +7 -7
- package/dist/components/data-grid/index.js +16 -14
- package/dist/components/editor/index.js +3 -3
- package/dist/components/event-calendar/index.js +8 -8
- package/dist/components/file-upload/index.js +2 -2
- package/dist/components/gantt/index.js +6 -6
- package/dist/components/image-crop/index.js +1 -1
- package/dist/components/input-otp/EmailCodeAuthForm.d.ts +21 -0
- package/dist/components/input-otp/index.d.ts +2 -0
- package/dist/components/input-otp/index.js +264 -1
- package/dist/components/json-render/catalog.d.ts +2 -2
- package/dist/components/json-render/index.js +51 -50
- package/dist/components/message-scroller/index.js +2 -2
- package/dist/components/persian-calendar/index.js +3 -3
- package/dist/components/questionnaire/index.js +2 -2
- package/dist/components/resizable/index.js +3 -3
- package/dist/components/sonner/index.js +2 -2
- package/dist/components/tree/index.js +2 -2
- package/dist/components/virtual-data-grid/index.js +7 -7
- package/dist/components/virtual-table/index.js +3 -3
- package/dist/hooks/useLinkAnalyticsCallback.d.ts +10 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +141 -111
- package/dist/layout/constants.d.ts +14 -0
- package/dist/layout/responsiveClassNames.d.ts +3 -0
- package/dist/layout/types.d.ts +28 -0
- package/dist/menu/types.d.ts +3 -0
- package/dist/prototype.js +1 -1
- package/dist/theme.css +5 -0
- package/dist/typography/types.d.ts +2 -0
- package/llms/components/actions/ButtonLink.md +22 -0
- package/llms/components/assistant-ui/elements/conversations/CanvasSplit.md +38 -0
- package/llms/components/assistant-ui/elements/data-visualization/GeoMap.md +57 -0
- package/llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md +41 -0
- package/llms/components/assistant-ui/elements/data-visualization/Timeline.md +76 -0
- package/llms/components/data-display/Heading.md +78 -0
- package/llms/components/data-display/Text.md +94 -0
- package/llms/components/data-display/WeatherForecast.md +76 -0
- package/llms/components/data-display/WeatherSummary.md +103 -0
- package/llms/components/forms/EmailCodeAuthForm.md +94 -0
- package/llms/components/forms/InlineEdit.md +34 -1
- package/llms/components/layout/AppShell.md +35 -1
- package/llms/components/layout/Container.md +97 -0
- package/llms/components/layout/Grid.md +133 -0
- package/llms/components/layout/Stack.md +170 -0
- package/llms/components/navigation/ActionsMenu.md +143 -0
- package/llms/components/overlays/ConfirmationDialog.md +31 -1
- package/llms/components/overlays/FormDialog.md +102 -0
- package/llms/setup.md +72 -4
- package/llms.txt +12 -2
- package/package.json +1 -1
- package/templates/prototype/src/components/ScenarioContent.tsx +3 -2
- package/templates/prototype/src/prototypes/dashboard/components/Dashboard.tsx +3 -2
- package/dist/chunk-4710gn6d.js +0 -15
- package/dist/chunk-dg14mg3y.js +0 -56
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# ActionsMenu
|
|
2
|
+
|
|
3
|
+
Story: @alexgorbatchev/shadcn/navigation/ActionsMenu
|
|
4
|
+
Source: src/components/stories/navigation/ActionsMenu.stories.tsx
|
|
5
|
+
|
|
6
|
+
[Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/navigation/ActionsMenu.stories.tsx)
|
|
7
|
+
|
|
8
|
+
## Public imports
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { ActionsMenu, ActionsMenuContextTarget, ActionsMenuContextContent, ActionsMenuTrigger, MenuGroup, MenuItem, MenuLinkItem, MenuLabel, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, Button } from "@alexgorbatchev/shadcn";
|
|
12
|
+
import { Tree, TreeItem, useTree, syncDataLoaderFeature, hotkeysCoreFeature, selectionFeature } from "@alexgorbatchev/shadcn/tree";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Supporting imports
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import type { ReactElement } from "react";
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Default component
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
ActionsMenu
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Default args
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
{
|
|
31
|
+
label: "Track actions",
|
|
32
|
+
items: (<MenuGroup>
|
|
33
|
+
<MenuItem onClick={() => fixture_menuAction("track-42")}>Inspect track</MenuItem>
|
|
34
|
+
</MenuGroup>),
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Examples
|
|
39
|
+
|
|
40
|
+
Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
|
|
41
|
+
|
|
42
|
+
### RegisteredTree
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
{
|
|
46
|
+
render: () => <RegisteredTreeExample />
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Dropdown
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
{}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### BothEntryPoints
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
{
|
|
60
|
+
args: { contextTarget: <section aria-label="Track"/> },
|
|
61
|
+
render: (args) => (<ActionsMenu {...args}>
|
|
62
|
+
<p>Selected track</p>
|
|
63
|
+
<ActionsMenuTrigger />
|
|
64
|
+
</ActionsMenu>)
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### NativeTableRow
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
{
|
|
72
|
+
render: (args) => (<table>
|
|
73
|
+
<tbody>
|
|
74
|
+
<ActionsMenu {...args}>
|
|
75
|
+
<ActionsMenuContextTarget render={<tr ref={fixture_menuTargetRef}/>}>
|
|
76
|
+
<td>Track title</td>
|
|
77
|
+
<td>
|
|
78
|
+
<ActionsMenuTrigger />
|
|
79
|
+
<ActionsMenuContextContent />
|
|
80
|
+
</td>
|
|
81
|
+
</ActionsMenuContextTarget>
|
|
82
|
+
</ActionsMenu>
|
|
83
|
+
</tbody>
|
|
84
|
+
</table>)
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Disabled
|
|
89
|
+
|
|
90
|
+
```tsx
|
|
91
|
+
{
|
|
92
|
+
args: { disabled: true, contextTarget: <section aria-label="Protected track"/> }
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Submenu
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
{
|
|
100
|
+
args: {
|
|
101
|
+
trigger: <Button variant="outline"/>,
|
|
102
|
+
contextTarget: <section aria-label="Playlist track"/>,
|
|
103
|
+
items: (<>
|
|
104
|
+
<MenuGroup>
|
|
105
|
+
<MenuLabel>Track</MenuLabel>
|
|
106
|
+
<MenuItem disabled>Unavailable action</MenuItem>
|
|
107
|
+
</MenuGroup>
|
|
108
|
+
<MenuSeparator />
|
|
109
|
+
<MenuGroup>
|
|
110
|
+
<MenuSub>
|
|
111
|
+
<MenuSubTrigger>Playlist</MenuSubTrigger>
|
|
112
|
+
<MenuSubContent>
|
|
113
|
+
<MenuGroup>
|
|
114
|
+
<MenuItem onClick={() => fixture_menuAction("playlist-7", "track-42")}>Add to favorites</MenuItem>
|
|
115
|
+
</MenuGroup>
|
|
116
|
+
</MenuSubContent>
|
|
117
|
+
</MenuSub>
|
|
118
|
+
</MenuGroup>
|
|
119
|
+
</>),
|
|
120
|
+
},
|
|
121
|
+
render: (args) => (<ActionsMenu {...args}>
|
|
122
|
+
<ActionsMenuTrigger>Track options</ActionsMenuTrigger>
|
|
123
|
+
</ActionsMenu>)
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### NativeLink
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
{
|
|
131
|
+
args: {
|
|
132
|
+
size: "sm",
|
|
133
|
+
items: (<MenuGroup>
|
|
134
|
+
<MenuLinkItem href="#details" onClick={(event) => {
|
|
135
|
+
fixture_menuAction(event.currentTarget.hash);
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
}}>
|
|
138
|
+
View details
|
|
139
|
+
</MenuLinkItem>
|
|
140
|
+
</MenuGroup>),
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
@@ -70,8 +70,38 @@ Storybook CSF excerpts. Default args and render apply unless overridden. Local h
|
|
|
70
70
|
{
|
|
71
71
|
args: {
|
|
72
72
|
onConfirm: async () => {
|
|
73
|
-
throw new Error("
|
|
73
|
+
throw new Error("Private removal diagnostic");
|
|
74
74
|
},
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
```
|
|
78
|
+
|
|
79
|
+
### AuthoredFailureAndRetry
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
{
|
|
83
|
+
args: {
|
|
84
|
+
onConfirm: fn(),
|
|
85
|
+
renderError: () => "The image is in use. Close the editor and retry.",
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### LongDescription
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
{
|
|
94
|
+
args: { description: "Review this irreversible image removal carefully. ".repeat(300) }
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Pending
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
{
|
|
102
|
+
beforeEach: () => {
|
|
103
|
+
fixture_confirmation.pending = Promise.withResolvers<void>();
|
|
104
|
+
},
|
|
105
|
+
args: { onConfirm: fn(() => fixture_confirmation.pending.promise) }
|
|
106
|
+
}
|
|
107
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# FormDialog
|
|
2
|
+
|
|
3
|
+
Story: @alexgorbatchev/shadcn/components/overlays/FormDialog
|
|
4
|
+
Source: src/components/stories/overlays/FormDialog.stories.tsx
|
|
5
|
+
|
|
6
|
+
[Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/overlays/FormDialog.stories.tsx)
|
|
7
|
+
|
|
8
|
+
## Public imports
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { FormDialog, Input, Button } from "@alexgorbatchev/shadcn";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Supporting imports
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { useState, type ReactElement } from "react";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Default component
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
FormDialog
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Default args
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
{
|
|
30
|
+
open: false,
|
|
31
|
+
onOpenChange: fn(),
|
|
32
|
+
title: "Edit project",
|
|
33
|
+
description: "Change the project name.",
|
|
34
|
+
submitLabel: "Save project",
|
|
35
|
+
onSubmit: fn((event) => event.preventDefault()),
|
|
36
|
+
children: <Input aria-label="Project name" defaultValue="Example"/>,
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Default render
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
function Example(args): ReactElement {
|
|
44
|
+
const [open, setOpen] = useState(false);
|
|
45
|
+
return (<>
|
|
46
|
+
<Button onClick={() => setOpen(true)}>Edit project</Button>
|
|
47
|
+
<FormDialog {...args} open={open} onOpenChange={(next) => {
|
|
48
|
+
args.onOpenChange(next);
|
|
49
|
+
setOpen(next);
|
|
50
|
+
}}/>
|
|
51
|
+
</>);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
|
|
58
|
+
|
|
59
|
+
### Submit
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
{}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Busy
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
{
|
|
69
|
+
args: { isBusy: true }
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### ConsentOnly
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
{
|
|
77
|
+
args: {
|
|
78
|
+
onSubmit: undefined,
|
|
79
|
+
submitLabel: undefined,
|
|
80
|
+
primaryAction: <Button onClick={fixture_formDialogAction}>Review changes</Button>,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### DoneOnly
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
{
|
|
89
|
+
args: { onSubmit: undefined, submitLabel: undefined, cancelLabel: "Done" }
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### LongContent
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
{
|
|
97
|
+
args: {
|
|
98
|
+
children: Array.from({ length: 60 }, (_, index) => <p key={index}>Project detail {index + 1}</p>),
|
|
99
|
+
error: "Save failed. Retry after checking the project.",
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
package/llms/setup.md
CHANGED
|
@@ -261,8 +261,10 @@ The npm package includes the same index at `llms.txt` in its root and its linked
|
|
|
261
261
|
| Area | Components |
|
|
262
262
|
| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
263
263
|
| Actions and status | Alert, Badge, Button, ButtonGroup, ButtonLink, Sonner, Toast, Toggle, ToggleGroup |
|
|
264
|
-
| Forms and selections | Calendar, Checkbox, Combobox, Command, Field, Input, InputGroup, InputOTP, Label, NativeSelect, Questionnaire, RadioGroup, Select, Slider, Switch, Textarea
|
|
264
|
+
| Forms and selections | AuthForm, Calendar, Checkbox, Combobox, Command, EmailCodeAuthForm, Field, Input, InputGroup, InputOTP, Label, NativeSelect, Questionnaire, RadioGroup, Select, Slider, Switch, Textarea |
|
|
265
265
|
| Structure and navigation | Accordion, AspectRatio, Avatar, Breadcrumb, Card, Carousel, Chart, Collapsible, Empty, Item, Kbd, Menubar, NavigationMenu, Pagination, Resizable, ScrollArea, Separator, Sidebar, Table, Tabs |
|
|
266
|
+
| Layout and typography | AppShell, Container, Grid, GridItem, Heading, PageHeader, Stack, Text |
|
|
267
|
+
| Data display | WeatherForecast, WeatherSummary |
|
|
266
268
|
| Overlays | AlertDialog, ContextMenu, Dialog, Drawer, DropdownMenu, HoverCard, Popover, Sheet, Tooltip |
|
|
267
269
|
| Loading | Progress, Skeleton, Spinner |
|
|
268
270
|
| Conversations | Attachment, Bubble, Marker, Message, MessageScroller |
|
|
@@ -316,7 +318,7 @@ Compose data tables with the exported Table parts and `@tanstack/react-table@9.2
|
|
|
316
318
|
|
|
317
319
|
Compose `Sidebar` and `SidebarInset` inside `SidebarProvider`. Use Header, Content, Group, Menu, and Footer parts to organize navigation, and `SidebarTrigger` or `SidebarRail` to toggle it. `useSidebar` exposes desktop and mobile state. Desktop collapse supports `offcanvas`, `icon`, and `none`; the mobile panel uses a titled Sheet with Escape dismissal and focus restoration. Menu buttons accept native custom elements through `render`; use anchors for navigation and keep their accessible text when collapsed. Cmd/Ctrl+B toggles the sidebar while focus is inside its provider. Set `open`/`onOpenChange` for controlled desktop state, or observe changes without supplying `open`. Persist changes in your application through `onOpenChange`, and restore them through `defaultOpen` or controlled `open`. Set widths through the typed `SidebarStyle` variables `--sidebar-width`, `--sidebar-width-mobile`, and `--sidebar-width-icon`. Sidebar colors follow the palette of the subtree they render in; set `--sidebar`, `--sidebar-foreground`, `--sidebar-primary`, `--sidebar-primary-foreground`, `--sidebar-accent`, `--sidebar-accent-foreground`, `--sidebar-border`, or `--sidebar-ring` to give the sidebar its own colors.
|
|
318
320
|
|
|
319
|
-
`InputOTP` uses one real input for typing, selection, paste, and autofill. Compose its visual slots inside `InputOTPGroup`; supply `maxLength` and an accessible label. Use `defaultValue` to initialize an uncontrolled code, or `value` and `onChange` to control it. Changing `defaultValue` after mounting preserves the current input. Import the OTP parts together from `@alexgorbatchev/shadcn/input-otp`; its bundled implementation owns their context. `Calendar` supports single, multiple, and range selection. `ResizablePanelGroup` sizes use explicit percentage strings such as `defaultSize="50%"`; numeric sizes are pixels. `CommandDialog` supplies the modal title and description; set `Command`'s `label` to name its search input.
|
|
321
|
+
`InputOTP` uses one real input for typing, selection, paste, and autofill. Compose its visual slots inside `InputOTPGroup`; supply `maxLength` and an accessible label. Use `defaultValue` to initialize an uncontrolled code, or `value` and `onChange` to control it. Changing `defaultValue` after mounting preserves the current input. Import the OTP parts together from `@alexgorbatchev/shadcn/input-otp`; its bundled implementation owns their context. `EmailCodeAuthForm` from the same entry point is passwordless sign-in in two steps: the email step calls `onRequestCode(email)`, and the code step collects a numeric code of `codeLength` digits (default 6) and calls `onVerifyCode(email, code)` when the code is complete or submitted. It offers Resend code and Use a different email, shows pending state while a handler runs, and shows a rejected handler's message without leaving the current step. `Calendar` supports single, multiple, and range selection. `ResizablePanelGroup` sizes use explicit percentage strings such as `defaultSize="50%"`; numeric sizes are pixels. `CommandDialog` supplies the modal title and description; set `Command`'s `label` to name its search input.
|
|
320
322
|
|
|
321
323
|
Use the Theme toolbar to select light, dark, or system palettes; Docs and example frames follow that selection. Local and routed previews can run on separate ports with independent dependency caches. Reload an open preview after restarting it on a different port.
|
|
322
324
|
|
|
@@ -358,9 +360,69 @@ Bun 1.4.0's CSS bundler lowers logical positioning to language-based selectors.
|
|
|
358
360
|
|
|
359
361
|
Compose `QuestionnaireItem`, `QuestionnaireTitle`, and answer controls inside `Questionnaire`, which renders a native form. `QuestionnaireChoice` supplies native radios or, with `multiple`, checkboxes; label every `QuestionnaireInput`. Read answers with `FormData.get()` or `getAll()`. `QuestionnaireProgress` and the Previous, Skip, Next, and Submit parts follow the active item. Optional steps need an answer or an explicit skip; observe `onStatusChange` to distinguish skipped answers. Letter and number shortcuts select answers without advancing. Use `item`/`onItemChange` for controlled navigation and `invalid` for external validation. Draft defaults and native reset restore initial answers and navigation. These parts accept density overrides and native render/ref props where supported. See the [upstream composition guide](https://ui.shadcn.com/docs/components/base/questionnaire).
|
|
360
362
|
|
|
363
|
+
# Page layout
|
|
364
|
+
|
|
365
|
+
Compose screens from layout components instead of utility classes. Each one accepts `render` for a semantic element, such as `render={<section aria-label="Members" />}`, `<ul />`, `<li />`, `<form />`, or `<main />`; props, handlers, and refs merge with the rendered element.
|
|
366
|
+
|
|
367
|
+
- `Stack` arranges children along one axis. `direction` is `vertical` (default) or `horizontal`, or a breakpoint map such as `{ base: "vertical", md: "horizontal" }`. `gap` and `padding` take the density-aware spacing tokens `none`, `control`, `panel-sm`, `panel`, `field`, and `section`. `align`, `justify`, and `wrap` position children. `grow` takes the remaining space of a parent `Stack` and lets its content shrink; `height` is `auto`, `full`, `viewport`, or `min-viewport`.
|
|
368
|
+
- `Grid` lays out equal columns: `columns` is 1–6 or 12, or a breakpoint map such as `{ base: 1, md: 2, xl: 4 }`. `minColumnWidth` (`xs`, `sm`, `md`, `lg`) instead fits as many columns as the grid's own width allows, so card grids adapt inside narrow panes. `GridItem span` widens a cell; `span="full"` always spans every column.
|
|
369
|
+
- `Container` centers a column with a maximum `width` (`xs` 20rem, `sm` 24rem, `md` 42rem, `lg` 64rem, `xl` 80rem, or `full`).
|
|
370
|
+
- `Text` renders body copy as a paragraph with semantic `size`, `tone`, `weight`, `align`, `truncate`, and `tabular` options; use `render={<span />}` for inline text. `Heading` renders `h1`–`h6` from its required `level`, with a `size` chosen independently of the outline level.
|
|
371
|
+
- `ScrollArea grow` scrolls inside the remaining space of a parent `Stack`.
|
|
372
|
+
|
|
373
|
+
A header row with trailing actions, a two-column form, and a centered sign-in page:
|
|
374
|
+
|
|
375
|
+
```tsx
|
|
376
|
+
import {
|
|
377
|
+
AuthForm,
|
|
378
|
+
Button,
|
|
379
|
+
Container,
|
|
380
|
+
Field,
|
|
381
|
+
FieldLabel,
|
|
382
|
+
Grid,
|
|
383
|
+
GridItem,
|
|
384
|
+
Heading,
|
|
385
|
+
Input,
|
|
386
|
+
Stack,
|
|
387
|
+
Textarea,
|
|
388
|
+
} from "@alexgorbatchev/shadcn";
|
|
389
|
+
|
|
390
|
+
<Stack direction="horizontal" justify="between" align="center" gap="control" wrap render={<header />}>
|
|
391
|
+
<Heading level={2}>Members</Heading>
|
|
392
|
+
<Button>Invite</Button>
|
|
393
|
+
</Stack>;
|
|
394
|
+
|
|
395
|
+
<Grid columns={{ base: 1, md: 2 }} gap="field" render={<form onSubmit={save} />}>
|
|
396
|
+
<Field>
|
|
397
|
+
<FieldLabel htmlFor="first-name">First name</FieldLabel>
|
|
398
|
+
<Input id="first-name" />
|
|
399
|
+
</Field>
|
|
400
|
+
<Field>
|
|
401
|
+
<FieldLabel htmlFor="last-name">Last name</FieldLabel>
|
|
402
|
+
<Input id="last-name" />
|
|
403
|
+
</Field>
|
|
404
|
+
<GridItem span="full">
|
|
405
|
+
<Field>
|
|
406
|
+
<FieldLabel htmlFor="notes">Notes</FieldLabel>
|
|
407
|
+
<Textarea id="notes" />
|
|
408
|
+
</Field>
|
|
409
|
+
</GridItem>
|
|
410
|
+
</Grid>;
|
|
411
|
+
|
|
412
|
+
<Stack height="min-viewport" align="center" justify="center" padding="panel" render={<main />}>
|
|
413
|
+
<Container width="sm">
|
|
414
|
+
<AuthForm onSubmit={signIn} />
|
|
415
|
+
</Container>
|
|
416
|
+
</Stack>;
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
`AppShell` navigation items take either `href` or `render`, a router link element such as `{ id: "plans", label: "Plans", render: <Link to="/plans" />, active: true }`; the router element owns its destination and client-side navigation while the item keeps its active state, `aria-current="page"`, and activation analytics. `content="scroll"` (default) places children in a padded scrolling column; `content="fill"` gives them the remaining area without padding or scrolling, for full-height screens that manage their own scroll regions.
|
|
420
|
+
|
|
421
|
+
`WeatherSummary` shows one day's forecast: a `label`, a `condition` from `clear`, `partly-cloudy`, `cloudy`, `fog`, `drizzle`, `rain`, `snow`, or `thunderstorm` with its icon, `high` and `low` temperatures in `unit` (`celsius` by default), and an optional `precipitationProbability` from 0 to 100. Values are rounded and formatted with `Intl` for `locale`; `conditionLabel` localizes the condition name. `WeatherForecast` renders several days, each with an `id`, as a list named by `label`: `variant="strip"` (default) wraps compact days side by side, and `variant="list"` shows one detailed day per row.
|
|
422
|
+
|
|
361
423
|
# Inline editing and ratings
|
|
362
424
|
|
|
363
|
-
`InlineEdit` mounts an edit session with a controlled `value`, `onValueChange`, `onCommit`, and `onCancel`. Mount it in place of the displayed label. Its input focuses and selects its text by default; `shouldSelectOnMount={false}` preserves the initial caret. Enter or blur commits once, Escape cancels without committing, and asynchronous saves disable the input until completion. Rejected saves display
|
|
425
|
+
`InlineEdit` mounts an edit session with a controlled `value`, `onValueChange`, `onCommit`, and `onCancel`. Mount it in place of the displayed label. Its input focuses and selects its text by default; `shouldSelectOnMount={false}` preserves the initial caret. Enter or blur commits once, Escape cancels without committing, and asynchronous saves disable the input until completion. Set `hasChanges={false}` to cancel an unchanged edit before calling `onCommit`; the caller owns normalization and comparison. It defaults to true, so creation sessions can commit their initial value. Rejected saves display a generic error and allow retry; `renderError` can map the unknown failure to application-authored guidance.
|
|
364
426
|
|
|
365
427
|
`VirtualTable` renders a bounded, dynamically measured set of native table rows using TanStack Virtual. Supply `items`, stable `getItemKey`, `header`, `label`, and `renderRow`; spread the supplied measurement props onto each native row. Optional `columns` accepts a `TableColumnGroup`; responsive columns keep their widths aligned with cells that share their `visibleFrom`. `maxHeight` defaults to `65vh`, `estimateRowHeight` to 80 pixels, and `overscan` to five rows. `retainedKeys` keeps editing rows mounted; the focused row is retained automatically. Filtering and selection belong to the consumer.
|
|
366
428
|
|
|
@@ -370,6 +432,10 @@ Column `meta.filter` offers a column in `DataGridFilters`, hidden columns includ
|
|
|
370
432
|
|
|
371
433
|
Import `DataGridSelectHeader` and `DataGridSelectCell` from `@alexgorbatchev/shadcn/data-grid`. Pass the current `useTable` result as `table` to both controls, and pass `row` and an accessible `label` to each cell. The header selects selectable filtered rows across all pages and preserves selections hidden by filters. It shows a mixed state when some of those rows are selected and disables itself when none are selectable. Its default label is "Select all filtered rows"; provide `label` to name the scope in your application. Cells follow native row selection rules, including disabled rows and partially selected parents. The controls observe selection changes without requiring the parent table selector to include selection state.
|
|
372
434
|
|
|
435
|
+
`ActionsMenu` shares one `items` definition between a dropdown action and an optional context menu. Supply an accessible `label`; the default trigger is a ghost icon button. `size="sm"` displays the label, and `variant`, `disabled`, and `trigger` customize the action. Supplying `contextTarget` composes the native context trigger with that element and adds its popup. Compose items with `MenuItem`, `MenuLinkItem`, checkbox/radio parts, groups, labels, separators, shortcuts, and submenu parts; dropdown and context menus share these implementations. `MenuLinkItem` retains its native anchor and menu keyboard semantics.
|
|
436
|
+
|
|
437
|
+
For nested layouts, compose `ActionsMenuTrigger`, `ActionsMenuContextTarget`, and `ActionsMenuContextContent` explicitly inside `ActionsMenu`. The dropdown trigger owns its local native dropdown root and popup; the context target and content share an independent context root. A tree row can use `TreeItem render={<ActionsMenuContextTarget />}` and put the trigger in its action slot. For a table row, render the context target as the actual `tr`, then place the dropdown trigger and context content inside a `td`: native popup portals insert focus guards at their declaration, which must remain valid table children.
|
|
438
|
+
|
|
373
439
|
`TreeItem linkProps` places the registered tree item, roving focus, and native drag handlers on an anchor. Pass `href` and anchor events directly, or compose a router link through `linkProps.render`. The outer `render` and `ref` remain available for row overlays; disclosure and `endEnhancer` controls remain siblings of the link. Enter and modified clicks retain native link behavior, while tree arrows retain navigation and expansion behavior. Optional `dropHint={{ content, open, side }}` displays caller-controlled drag feedback without adding a focus target.
|
|
374
440
|
|
|
375
441
|
Embedded actions, links, menus, editable fields, and media controls retain their own keyboard behavior. Registered anchor and button rows still participate in tree navigation; rename and search inputs retain their completion and cancellation shortcuts.
|
|
@@ -380,9 +446,11 @@ Embedded actions, links, menus, editable fields, and media controls retain their
|
|
|
380
446
|
|
|
381
447
|
`DialogContent size="wide"` uses a desktop maximum width of 576px; `size="narrow"` uses 192px, and the default uses 384px. Dialogs remain bounded by the viewport. `FieldGroup columns={2}` arranges fields in two columns on desktop and one on mobile.
|
|
382
448
|
|
|
449
|
+
`FormDialog` supplies a controlled dialog with a fixed heading and footer around a scrolling body. Supply `open`, `onOpenChange`, `title`, and children; `description`, `size`, and `density` are optional. With `onSubmit`, the body and actions use a native form: the caller handles `preventDefault`, validation, submission, and pending state. `submitLabel` adds the stock submit button, with optional `submitVariant` and `submitDisabled`; `primaryAction` supplies a custom action instead. Without `onSubmit`, custom actions can request consent without introducing a form. Without a primary action, `cancelLabel="Done"` gives a close-only footer. `isBusy` blocks native dismissal and disables the stock actions; callers disable their own inputs and custom actions. Pass already-rendered safe guidance through `error`.
|
|
450
|
+
|
|
383
451
|
`ImagePicker` displays a 256px square preview with upload and unset buttons. Supply the existing `src`, a staged `file` (`undefined` for the existing image, `null` for removal), and `onFileChange`/`onClear` callbacks. It accepts PNG, JPEG, and GIF files and releases local preview URLs when they change or unmount. The consumer owns saving and removal confirmation.
|
|
384
452
|
|
|
385
|
-
`ConfirmationDialog` uses an alert dialog with Cancel and a destructive confirmation button. Supply `open`, `onOpenChange`, `title`, `description`, `confirmLabel`, and `onConfirm`. It waits for asynchronous work, keeps the dialog open on failure, and prevents cancellation while that work is pending.
|
|
453
|
+
`ConfirmationDialog` uses an alert dialog with Cancel and a destructive confirmation button. Supply `open`, `onOpenChange`, `title`, `description`, `confirmLabel`, and `onConfirm`. It waits for asynchronous work, keeps the dialog open on failure, and prevents cancellation while that work is pending. Its body scrolls within the viewport while the heading and actions stay visible. Failures display generic guidance by default; `renderError` maps unknown failures to application-authored messages.
|
|
386
454
|
|
|
387
455
|
# Split views
|
|
388
456
|
|
package/llms.txt
CHANGED
|
@@ -143,11 +143,11 @@ Generated from the public package exports and Storybook sources.
|
|
|
143
143
|
- [NumberRollDigit](./llms/components/assistant-ui/elements/data-visualization/NumberRollDigit.md)
|
|
144
144
|
- [NumberRollPart](./llms/components/assistant-ui/elements/data-visualization/NumberRollPart.md)
|
|
145
145
|
- [NumberTicker](./llms/components/assistant-ui/elements/data-visualization/NumberTicker.md)
|
|
146
|
-
- [RecommendationCard](./llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md)
|
|
146
|
+
- [RecommendationCard](./llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md): RecommendationCard presents one suggestion. Each action renders only when its handler is supplied: `onReject` (`rejectLabel`, default "Not this"), `onAlternatives` (`alternativesLabel`, default "Alternatives"), and `onAccept` (`acceptLabel`, default "Accept"). The `accepted` and `rejected` states replace the actions with `acceptedLabel` or `rejectedLabel` and keep keyboard focus on the card. Omit `confidenceLabel` to hide the confidence indicator; `fullWidth` spans the container.
|
|
147
147
|
- [ScoreBreakdown](./llms/components/assistant-ui/elements/data-visualization/ScoreBreakdown.md)
|
|
148
148
|
- [ShareMeter](./llms/components/assistant-ui/elements/data-visualization/ShareMeter.md)
|
|
149
149
|
- [SpecSheet](./llms/components/assistant-ui/elements/data-visualization/SpecSheet.md)
|
|
150
|
-
- [Timeline](./llms/components/assistant-ui/elements/data-visualization/Timeline.md)
|
|
150
|
+
- [Timeline](./llms/components/assistant-ui/elements/data-visualization/Timeline.md): Timeline renders events as an ordered list. Each event has an `id`, a `title`, and optional `time`, `detail`, `meta` (such as badges), `actions` (such as a menu button), and `connector`, an annotation for the segment to the next visible event, such as travel time. `when` marks past, now (announced as the current step), or future progress; omit it for neutral entries. `visibleCount` reveals only the leading events and defaults to all of them. `fullWidth` spans the container instead of the compact card width. The time column is omitted when no visible event has a time.
|
|
151
151
|
- [TraceWaterfall](./llms/components/assistant-ui/elements/data-visualization/TraceWaterfall.md)
|
|
152
152
|
|
|
153
153
|
## assistant-ui/elements/media-voice
|
|
@@ -339,6 +339,7 @@ Generated from the public package exports and Storybook sources.
|
|
|
339
339
|
- [DataGridSelectCell](./llms/components/data-display/DataGridSelectCell.md)
|
|
340
340
|
- [DataGridSelectHeader](./llms/components/data-display/DataGridSelectHeader.md)
|
|
341
341
|
- [DataViewer](./llms/components/data-display/DataViewer.md)
|
|
342
|
+
- [Heading](./llms/components/data-display/Heading.md): Heading renders `h1`–`h6` from the required `level` so the document outline stays correct, while `size` (sm, base, lg, xl) sets the visual size independently. Sizes default by level: 1 xl, 2 lg, 3 base, 4–6 sm. `truncate` keeps one line.
|
|
342
343
|
- [Item](./llms/components/data-display/Item.md)
|
|
343
344
|
- [JsonRender](./llms/components/data-display/JsonRender.md)
|
|
344
345
|
- [JsonViewer](./llms/components/data-display/JsonViewer.md)
|
|
@@ -348,8 +349,11 @@ Generated from the public package exports and Storybook sources.
|
|
|
348
349
|
- [StatCard](./llms/components/data-display/StatCard.md)
|
|
349
350
|
- [StatusTracker](./llms/components/data-display/StatusTracker.md)
|
|
350
351
|
- [Table](./llms/components/data-display/Table.md)
|
|
352
|
+
- [Text](./llms/components/data-display/Text.md): Text renders body copy as a paragraph with semantic `size` (xs, sm, base, lg), `tone` (default, muted, faint, primary, success, warning, destructive), `weight`, and `align`. `truncate` keeps one line with an ellipsis; otherwise long words wrap. `tabular` aligns digits. Use `render={<span />}` for inline text, or another element such as `<li />` or `<time />`.
|
|
351
353
|
- [VirtualDataGrid](./llms/components/data-display/VirtualDataGrid.md)
|
|
352
354
|
- [VirtualTable](./llms/components/data-display/VirtualTable.md)
|
|
355
|
+
- [WeatherForecast](./llms/components/data-display/WeatherForecast.md): WeatherForecast renders several WeatherSummary days as a list named by `label`. Each day takes an `id` plus the WeatherSummary day fields; `unit` and `locale` apply to every day. `variant="strip"` (default) shows compact days side by side and wraps them to the available width; `variant="list"` shows one detailed day per row.
|
|
356
|
+
- [WeatherSummary](./llms/components/data-display/WeatherSummary.md): WeatherSummary shows one day's forecast: a `label` such as a date, a `condition` from the closed set clear, partly-cloudy, cloudy, fog, drizzle, rain, snow, and thunderstorm with its icon, `high` and `low` temperatures in `unit` (celsius by default), and an optional `precipitationProbability` from 0 to 100. Numbers are rounded and formatted with Intl for `locale`. `conditionLabel` localizes the condition name. The icon is decorative; screen readers hear the condition, high, low, and precipitation chance. `variant="compact"` hides the condition name visually. Use `render` to choose the element, such as `<li />`.
|
|
353
357
|
|
|
354
358
|
## dates
|
|
355
359
|
|
|
@@ -380,6 +384,7 @@ Generated from the public package exports and Storybook sources.
|
|
|
380
384
|
- [Checkbox](./llms/components/forms/Checkbox.md)
|
|
381
385
|
- [ColorPicker](./llms/components/forms/ColorPicker.md)
|
|
382
386
|
- [Combobox](./llms/components/forms/Combobox.md)
|
|
387
|
+
- [EmailCodeAuthForm](./llms/components/forms/EmailCodeAuthForm.md): EmailCodeAuthForm is passwordless sign-in in two steps. Import it from `@alexgorbatchev/shadcn/input-otp`. The email step calls `onRequestCode(email)`; when it resolves, the code step shows an InputOTP for a numeric code of `codeLength` digits (default 6) with one-time-code autofill. Completing the code or pressing Verify calls `onVerifyCode(email, code)` once. Resend code calls `onRequestCode` again and announces the new code; Use a different email returns to the first step. Rejected promises show their message and keep the current step; buttons show pending state while a handler runs. The consumer owns sending, verifying, rate limits, and navigation after success.
|
|
383
388
|
- [EventForm](./llms/components/forms/EventForm.md)
|
|
384
389
|
- [Field](./llms/components/forms/Field.md)
|
|
385
390
|
- [FileUpload](./llms/components/forms/FileUpload.md)
|
|
@@ -413,12 +418,15 @@ Generated from the public package exports and Storybook sources.
|
|
|
413
418
|
- [BillingUsage](./llms/components/layout/BillingUsage.md)
|
|
414
419
|
- [Card](./llms/components/layout/Card.md)
|
|
415
420
|
- [Collapsible](./llms/components/layout/Collapsible.md)
|
|
421
|
+
- [Container](./llms/components/layout/Container.md): Container centers a column with a maximum width: xs 20rem, sm 24rem, md 42rem, lg 64rem (default), xl 80rem, or full. `padding` uses the density-aware spacing tokens. For a centered single-column page such as sign-in, wrap it in a `Stack` with `height="min-viewport"`, `align="center"`, and `justify="center"`, and render the page landmark with `render={<main />}`.
|
|
416
422
|
- [DashboardLayout](./llms/components/layout/DashboardLayout.md)
|
|
423
|
+
- [Grid](./llms/components/layout/Grid.md): Grid lays out equal columns without consumer classes. `columns` is 1–6 or 12, or a viewport breakpoint map such as `{ base: 1, md: 2, xl: 4 }`. `minColumnWidth` (xs 8rem, sm 12rem, md 16rem, lg 22rem) instead fits as many columns as the grid's own width allows, which suits card grids inside panes of any size. `gap` defaults to the density-aware `panel` token. GridItem `span` (1–6 or `full`, optionally per breakpoint) widens a cell; `full` always spans every column. Both accept `render` for semantic elements such as `<ul />` and `<li />`.
|
|
417
424
|
- [PageHeader](./llms/components/layout/PageHeader.md)
|
|
418
425
|
- [Resizable](./llms/components/layout/Resizable.md)
|
|
419
426
|
- [ScrollArea](./llms/components/layout/ScrollArea.md)
|
|
420
427
|
- [Separator](./llms/components/layout/Separator.md)
|
|
421
428
|
- [SplitView](./llms/components/layout/SplitView.md)
|
|
429
|
+
- [Stack](./llms/components/layout/Stack.md): Stack arranges children along one axis without consumer classes. `gap` and `padding` accept the density-aware tokens none, control, panel-sm, panel, field, and section. `direction` is vertical or horizontal, or a breakpoint map such as `{ base: "vertical", md: "horizontal" }`. `align` and `justify` position children; `wrap` lets a row wrap. `grow` takes the remaining space of a parent Stack and lets content shrink, and `height` is auto, full (the parent's height), viewport, or min-viewport. Pass `render={<section />}`, `<ul />`, `<li />`, `<form />`, or `<main />` for semantic elements; props, handlers, and refs merge.
|
|
422
430
|
|
|
423
431
|
## messaging
|
|
424
432
|
|
|
@@ -431,6 +439,7 @@ Generated from the public package exports and Storybook sources.
|
|
|
431
439
|
## navigation
|
|
432
440
|
|
|
433
441
|
- [AccountMenu](./llms/components/navigation/AccountMenu.md)
|
|
442
|
+
- [ActionsMenu](./llms/components/navigation/ActionsMenu.md)
|
|
434
443
|
- [Breadcrumb](./llms/components/navigation/Breadcrumb.md)
|
|
435
444
|
- [Command](./llms/components/navigation/Command.md)
|
|
436
445
|
- [ContextMenu](./llms/components/navigation/ContextMenu.md)
|
|
@@ -449,6 +458,7 @@ Generated from the public package exports and Storybook sources.
|
|
|
449
458
|
- [ConfirmationDialog](./llms/components/overlays/ConfirmationDialog.md)
|
|
450
459
|
- [Dialog](./llms/components/overlays/Dialog.md)
|
|
451
460
|
- [Drawer](./llms/components/overlays/Drawer.md)
|
|
461
|
+
- [FormDialog](./llms/components/overlays/FormDialog.md)
|
|
452
462
|
- [HoverCard](./llms/components/overlays/HoverCard.md)
|
|
453
463
|
- [Popover](./llms/components/overlays/Popover.md)
|
|
454
464
|
- [Sheet](./llms/components/overlays/Sheet.md)
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
EmptyTitle,
|
|
9
9
|
EmptyDescription,
|
|
10
10
|
Spinner,
|
|
11
|
+
Stack,
|
|
11
12
|
} from "@alexgorbatchev/shadcn";
|
|
12
13
|
import type { Scenario } from "../types";
|
|
13
14
|
|
|
@@ -16,10 +17,10 @@ type ScenarioContentProps = { scenario: Scenario; children: ReactNode };
|
|
|
16
17
|
export function ScenarioContent({ scenario, children }: ScenarioContentProps): ReactElement {
|
|
17
18
|
if (scenario === "loading")
|
|
18
19
|
return (
|
|
19
|
-
<
|
|
20
|
+
<Stack role="status" direction="horizontal" align="center" gap="control">
|
|
20
21
|
<Spinner />
|
|
21
22
|
Loading sample data…
|
|
22
|
-
</
|
|
23
|
+
</Stack>
|
|
23
24
|
);
|
|
24
25
|
if (scenario === "error")
|
|
25
26
|
return (
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
Field,
|
|
11
11
|
FieldGroup,
|
|
12
12
|
FieldLabel,
|
|
13
|
+
Grid,
|
|
13
14
|
NativeSelect,
|
|
14
15
|
NativeSelectOption,
|
|
15
16
|
PageHeader,
|
|
@@ -42,10 +43,10 @@ export function Dashboard({ scenario }: PrototypeProps): ReactElement {
|
|
|
42
43
|
</NativeSelect>
|
|
43
44
|
</Field>
|
|
44
45
|
</FieldGroup>
|
|
45
|
-
<
|
|
46
|
+
<Grid columns={{ base: 1, sm: 2 }} gap="panel">
|
|
46
47
|
<StatCard label="Active projects" value={visible.length} />
|
|
47
48
|
<StatCard label="Ready for review" value={visible.filter((delivery) => delivery.status === "Ready").length} />
|
|
48
|
-
</
|
|
49
|
+
</Grid>
|
|
49
50
|
<Card>
|
|
50
51
|
<CardHeader>
|
|
51
52
|
<CardTitle>Delivery queue</CardTitle>
|
package/dist/chunk-4710gn6d.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useAnalyticsCallback
|
|
3
|
-
} from "./chunk-5mydsjp3.js";
|
|
4
|
-
|
|
5
|
-
// src/components/analytics/AnalyticsLink.tsx
|
|
6
|
-
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
function AnalyticsLink({ component, analytics, ...props }) {
|
|
8
|
-
const onClick = useAnalyticsCallback(component, analytics, { name: "ui.activate" }, props.onClick);
|
|
9
|
-
return /* @__PURE__ */ jsx("a", {
|
|
10
|
-
...props,
|
|
11
|
-
onClick
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { AnalyticsLink };
|
package/dist/chunk-dg14mg3y.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
cn2
|
|
3
|
-
} from "./chunk-cp2m7y7v.js";
|
|
4
|
-
import {
|
|
5
|
-
take
|
|
6
|
-
} from "./chunk-v8ks0cfq.js";
|
|
7
|
-
import {
|
|
8
|
-
paper,
|
|
9
|
-
mono
|
|
10
|
-
} from "./chunk-fgmcbtyt.js";
|
|
11
|
-
|
|
12
|
-
// src/components/assistant-ui/elements/Timeline.tsx
|
|
13
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
-
function Timeline2({ events, visibleCount, className, ...props }) {
|
|
15
|
-
return /* @__PURE__ */ jsx("div", {
|
|
16
|
-
"data-testid": "Timeline",
|
|
17
|
-
"data-slot": "timeline",
|
|
18
|
-
className: cn2(cn2(paper, "flex w-full max-w-sm flex-col rounded-md p-4"), className),
|
|
19
|
-
...props,
|
|
20
|
-
children: take(events, visibleCount).map((event, i, shown) => /* @__PURE__ */ jsxs("div", {
|
|
21
|
-
className: "fade-in slide-in-from-left-1 animate-in fill-mode-both grid grid-cols-[3.5rem_1rem_minmax(0,1fr)] gap-x-2 duration-300",
|
|
22
|
-
children: [
|
|
23
|
-
/* @__PURE__ */ jsx("span", {
|
|
24
|
-
className: cn2(mono, "text-muted-foreground pt-[3px] text-end tabular-nums"),
|
|
25
|
-
children: event.time
|
|
26
|
-
}),
|
|
27
|
-
/* @__PURE__ */ jsxs("span", {
|
|
28
|
-
className: "flex flex-col items-center",
|
|
29
|
-
children: [
|
|
30
|
-
/* @__PURE__ */ jsx("span", {
|
|
31
|
-
className: cn2("mt-1 size-2 shrink-0 rounded-full", event.when === "now" && "bg-primary ring-4 ring-primary/15 bg-primary forced-colors:bg-[Highlight]", event.when === "past" && "bg-muted-foreground forced-colors:bg-[CanvasText]", event.when === "future" && "border-muted-foreground border bg-transparent")
|
|
32
|
-
}),
|
|
33
|
-
i < shown.length - 1 && /* @__PURE__ */ jsx("span", {
|
|
34
|
-
className: cn2("w-px flex-1", event.when === "future" ? "bg-foreground/[0.08]" : "bg-foreground/15")
|
|
35
|
-
})
|
|
36
|
-
]
|
|
37
|
-
}),
|
|
38
|
-
/* @__PURE__ */ jsxs("div", {
|
|
39
|
-
className: cn2("flex flex-col gap-0.5", i < shown.length - 1 && "pb-3"),
|
|
40
|
-
children: [
|
|
41
|
-
/* @__PURE__ */ jsx("span", {
|
|
42
|
-
className: cn2("text-base break-words", event.when === "future" ? "text-muted-foreground" : "text-foreground", event.when === "now" && "font-medium"),
|
|
43
|
-
children: event.title
|
|
44
|
-
}),
|
|
45
|
-
event.detail && /* @__PURE__ */ jsx("span", {
|
|
46
|
-
className: "text-muted-foreground text-sm leading-relaxed break-words",
|
|
47
|
-
children: event.detail
|
|
48
|
-
})
|
|
49
|
-
]
|
|
50
|
-
})
|
|
51
|
-
]
|
|
52
|
-
}, event.id))
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export { Timeline2 };
|