From 82d94eee385317eb2eb2fd24019a5312cf3c0a60 Mon Sep 17 00:00:00 2001 From: shadcn Date: Fri, 6 Jun 2025 20:09:53 +0400 Subject: [PATCH] feat: calendar v2 (#7551) * feat(v4): upgrade calendar * feat: more calendar examples * fix: remove grid * feat: more examples * feat: more examples * fix * feat: update examples * fix: dark mode * fix: calendar in dark mode * fix: examples * fix * docs: update calendar docs * feat: update cmdk * fix: block viewer patterns * feat: update new-york and default * fix: docs and examples * fix: command menu * feat: remove blocks from cmdk * fix * fix: calendar 13 * fix: format * fix * feat: update calendar default --- apps/v4/.prettierignore | 1 + .../sink/components/calendar-demo.tsx | 259 ++++- .../sink/components/date-picker-demo.tsx | 94 +- apps/v4/app/(view)/view/[name]/page.tsx | 2 +- apps/v4/components/block-display.tsx | 13 +- apps/v4/components/block-viewer.tsx | 152 ++- apps/v4/components/command-menu.tsx | 56 +- apps/v4/components/component-preview-tabs.tsx | 2 +- apps/v4/components/site-footer.tsx | 9 + apps/v4/components/site-header.tsx | 4 +- apps/v4/content/docs/(root)/changelog.mdx | 10 + apps/v4/content/docs/components/calendar.mdx | 335 +++++- .../content/docs/components/date-picker.mdx | 53 +- apps/v4/hooks/use-mobile.ts | 17 + apps/v4/lib/blocks.ts | 30 +- apps/v4/package.json | 4 +- apps/v4/public/r/index.json | 2 +- .../public/r/styles/default/calendar-01.json | 27 + .../public/r/styles/default/calendar-02.json | 27 + .../public/r/styles/default/calendar-03.json | 27 + .../public/r/styles/default/calendar-04.json | 27 + .../public/r/styles/default/calendar-05.json | 27 + .../public/r/styles/default/calendar-06.json | 27 + .../public/r/styles/default/calendar-07.json | 27 + .../public/r/styles/default/calendar-08.json | 27 + .../public/r/styles/default/calendar-09.json | 27 + .../public/r/styles/default/calendar-10.json | 29 + .../public/r/styles/default/calendar-11.json | 27 + .../public/r/styles/default/calendar-12.json | 29 + .../public/r/styles/default/calendar-13.json | 29 + .../public/r/styles/default/calendar-14.json | 27 + .../public/r/styles/default/calendar-15.json | 27 + .../public/r/styles/default/calendar-16.json | 30 + .../public/r/styles/default/calendar-17.json | 30 + .../public/r/styles/default/calendar-18.json | 27 + .../public/r/styles/default/calendar-19.json | 33 + .../public/r/styles/default/calendar-20.json | 29 + .../public/r/styles/default/calendar-21.json | 27 + .../public/r/styles/default/calendar-22.json | 30 + .../public/r/styles/default/calendar-23.json | 30 + .../public/r/styles/default/calendar-24.json | 30 + .../public/r/styles/default/calendar-25.json | 30 + .../public/r/styles/default/calendar-26.json | 31 + .../public/r/styles/default/calendar-27.json | 31 + .../public/r/styles/default/calendar-28.json | 31 + .../public/r/styles/default/calendar-29.json | 34 + .../public/r/styles/default/calendar-30.json | 31 + .../public/r/styles/default/calendar-31.json | 29 + .../public/r/styles/default/calendar-32.json | 29 + apps/v4/public/r/styles/default/calendar.json | 4 +- .../r/styles/new-york-v4/accordion-demo.json | 2 +- .../r/styles/new-york-v4/calendar-01.json | 25 + .../r/styles/new-york-v4/calendar-02.json | 25 + .../r/styles/new-york-v4/calendar-03.json | 25 + .../r/styles/new-york-v4/calendar-04.json | 25 + .../r/styles/new-york-v4/calendar-05.json | 25 + .../r/styles/new-york-v4/calendar-06.json | 25 + .../r/styles/new-york-v4/calendar-07.json | 25 + .../r/styles/new-york-v4/calendar-08.json | 25 + .../r/styles/new-york-v4/calendar-09.json | 25 + .../r/styles/new-york-v4/calendar-10.json | 27 + .../r/styles/new-york-v4/calendar-11.json | 25 + .../r/styles/new-york-v4/calendar-12.json | 27 + .../r/styles/new-york-v4/calendar-13.json | 27 + .../r/styles/new-york-v4/calendar-14.json | 25 + .../r/styles/new-york-v4/calendar-15.json | 25 + .../r/styles/new-york-v4/calendar-16.json | 28 + .../r/styles/new-york-v4/calendar-17.json | 28 + .../r/styles/new-york-v4/calendar-18.json | 25 + .../r/styles/new-york-v4/calendar-19.json | 31 + .../r/styles/new-york-v4/calendar-20.json | 27 + .../r/styles/new-york-v4/calendar-21.json | 25 + .../r/styles/new-york-v4/calendar-22.json | 28 + .../r/styles/new-york-v4/calendar-23.json | 28 + .../r/styles/new-york-v4/calendar-24.json | 28 + .../r/styles/new-york-v4/calendar-25.json | 28 + .../r/styles/new-york-v4/calendar-26.json | 29 + .../r/styles/new-york-v4/calendar-27.json | 29 + .../r/styles/new-york-v4/calendar-28.json | 29 + .../r/styles/new-york-v4/calendar-29.json | 32 + .../r/styles/new-york-v4/calendar-30.json | 29 + .../r/styles/new-york-v4/calendar-31.json | 27 + .../r/styles/new-york-v4/calendar-32.json | 27 + .../r/styles/new-york-v4/calendar-demo.json | 2 +- .../r/styles/new-york-v4/calendar-form.json | 2 +- .../r/styles/new-york-v4/calendar-hijri.json | 25 + .../public/r/styles/new-york-v4/calendar.json | 4 +- .../styles/new-york-v4/date-picker-form.json | 2 +- .../public/r/styles/new-york-v4/drawer.json | 2 +- .../public/r/styles/new-york/calendar-01.json | 27 + .../public/r/styles/new-york/calendar-02.json | 27 + .../public/r/styles/new-york/calendar-03.json | 27 + .../public/r/styles/new-york/calendar-04.json | 27 + .../public/r/styles/new-york/calendar-05.json | 27 + .../public/r/styles/new-york/calendar-06.json | 27 + .../public/r/styles/new-york/calendar-07.json | 27 + .../public/r/styles/new-york/calendar-08.json | 27 + .../public/r/styles/new-york/calendar-09.json | 27 + .../public/r/styles/new-york/calendar-10.json | 29 + .../public/r/styles/new-york/calendar-11.json | 27 + .../public/r/styles/new-york/calendar-12.json | 29 + .../public/r/styles/new-york/calendar-13.json | 29 + .../public/r/styles/new-york/calendar-14.json | 27 + .../public/r/styles/new-york/calendar-15.json | 27 + .../public/r/styles/new-york/calendar-16.json | 30 + .../public/r/styles/new-york/calendar-17.json | 30 + .../public/r/styles/new-york/calendar-18.json | 27 + .../public/r/styles/new-york/calendar-19.json | 33 + .../public/r/styles/new-york/calendar-20.json | 29 + .../public/r/styles/new-york/calendar-21.json | 27 + .../public/r/styles/new-york/calendar-22.json | 30 + .../public/r/styles/new-york/calendar-23.json | 30 + .../public/r/styles/new-york/calendar-24.json | 30 + .../public/r/styles/new-york/calendar-25.json | 30 + .../public/r/styles/new-york/calendar-26.json | 31 + .../public/r/styles/new-york/calendar-27.json | 31 + .../public/r/styles/new-york/calendar-28.json | 31 + .../public/r/styles/new-york/calendar-29.json | 34 + .../public/r/styles/new-york/calendar-30.json | 31 + .../public/r/styles/new-york/calendar-31.json | 29 + .../public/r/styles/new-york/calendar-32.json | 29 + .../v4/public/r/styles/new-york/calendar.json | 4 +- apps/v4/registry.json | 820 ++++++++++++++- apps/v4/registry/__blocks__.json | 272 +++++ apps/v4/registry/__index__.tsx | 594 +++++++++++ .../new-york-v4/blocks/calendar-01.tsx | 21 + .../new-york-v4/blocks/calendar-02.tsx | 22 + .../new-york-v4/blocks/calendar-03.tsx | 25 + .../new-york-v4/blocks/calendar-04.tsx | 23 + .../new-york-v4/blocks/calendar-05.tsx | 24 + .../new-york-v4/blocks/calendar-06.tsx | 30 + .../new-york-v4/blocks/calendar-07.tsx | 31 + .../new-york-v4/blocks/calendar-08.tsx | 24 + .../new-york-v4/blocks/calendar-09.tsx | 26 + .../new-york-v4/blocks/calendar-10.tsx | 52 + .../new-york-v4/blocks/calendar-11.tsx | 31 + .../new-york-v4/blocks/calendar-12.tsx | 81 ++ .../new-york-v4/blocks/calendar-13.tsx | 62 ++ .../new-york-v4/blocks/calendar-14.tsx | 32 + .../new-york-v4/blocks/calendar-15.tsx | 22 + .../new-york-v4/blocks/calendar-16.tsx | 56 + .../new-york-v4/blocks/calendar-17.tsx | 54 + .../new-york-v4/blocks/calendar-18.tsx | 21 + .../new-york-v4/blocks/calendar-19.tsx | 50 + .../new-york-v4/blocks/calendar-20.tsx | 95 ++ .../new-york-v4/blocks/calendar-21.tsx | 42 + .../new-york-v4/blocks/calendar-22.tsx | 49 + .../new-york-v4/blocks/calendar-23.tsx | 50 + .../new-york-v4/blocks/calendar-24.tsx | 64 ++ .../new-york-v4/blocks/calendar-25.tsx | 78 ++ .../new-york-v4/blocks/calendar-26.tsx | 133 +++ .../new-york-v4/blocks/calendar-27.tsx | 180 ++++ .../new-york-v4/blocks/calendar-28.tsx | 103 ++ .../new-york-v4/blocks/calendar-29.tsx | 96 ++ .../new-york-v4/blocks/calendar-30.tsx | 56 + .../new-york-v4/blocks/calendar-31.tsx | 80 ++ .../new-york-v4/blocks/calendar-32.tsx | 60 ++ .../new-york-v4/examples/calendar-demo.tsx | 15 +- .../new-york-v4/examples/calendar-form.tsx | 2 +- .../new-york-v4/examples/calendar-hijri.tsx | 229 +++++ .../new-york-v4/examples/date-picker-form.tsx | 2 +- apps/v4/registry/new-york-v4/ui/calendar.tsx | 229 ++++- apps/v4/registry/new-york-v4/ui/drawer.tsx | 5 +- apps/v4/registry/registry-blocks.ts | 610 +++++++++++ apps/v4/registry/registry-categories.ts | 41 +- apps/v4/registry/registry-examples.ts | 19 + apps/v4/registry/registry-ui.ts | 2 +- apps/v4/scripts/build-registry.mts | 20 + .../default/blocks/calendar-01.tsx | 21 + .../default/blocks/calendar-02.tsx | 22 + .../default/blocks/calendar-03.tsx | 25 + .../default/blocks/calendar-04.tsx | 23 + .../default/blocks/calendar-05.tsx | 24 + .../default/blocks/calendar-06.tsx | 30 + .../default/blocks/calendar-07.tsx | 31 + .../default/blocks/calendar-08.tsx | 24 + .../default/blocks/calendar-09.tsx | 26 + .../default/blocks/calendar-10.tsx | 50 + .../default/blocks/calendar-11.tsx | 31 + .../default/blocks/calendar-12.tsx | 78 ++ .../default/blocks/calendar-13.tsx | 58 ++ .../default/blocks/calendar-14.tsx | 32 + .../default/blocks/calendar-15.tsx | 22 + .../default/blocks/calendar-16.tsx | 56 + .../default/blocks/calendar-17.tsx | 54 + .../default/blocks/calendar-18.tsx | 21 + .../default/blocks/calendar-19.tsx | 50 + .../default/blocks/calendar-20.tsx | 97 ++ .../default/blocks/calendar-21.tsx | 42 + .../default/blocks/calendar-22.tsx | 49 + .../default/blocks/calendar-23.tsx | 50 + .../default/blocks/calendar-24.tsx | 64 ++ .../default/blocks/calendar-25.tsx | 78 ++ .../default/blocks/calendar-26.tsx | 133 +++ .../default/blocks/calendar-27.tsx | 177 ++++ .../default/blocks/calendar-28.tsx | 104 ++ .../default/blocks/calendar-29.tsx | 96 ++ .../default/blocks/calendar-30.tsx | 56 + .../default/blocks/calendar-31.tsx | 80 ++ .../default/blocks/calendar-32.tsx | 60 ++ apps/www/__registry__/index.tsx | 960 ++++++++++++++++++ .../new-york/blocks/calendar-01.tsx | 21 + .../new-york/blocks/calendar-02.tsx | 22 + .../new-york/blocks/calendar-03.tsx | 25 + .../new-york/blocks/calendar-04.tsx | 23 + .../new-york/blocks/calendar-05.tsx | 24 + .../new-york/blocks/calendar-06.tsx | 30 + .../new-york/blocks/calendar-07.tsx | 31 + .../new-york/blocks/calendar-08.tsx | 24 + .../new-york/blocks/calendar-09.tsx | 26 + .../new-york/blocks/calendar-10.tsx | 50 + .../new-york/blocks/calendar-11.tsx | 31 + .../new-york/blocks/calendar-12.tsx | 78 ++ .../new-york/blocks/calendar-13.tsx | 58 ++ .../new-york/blocks/calendar-14.tsx | 32 + .../new-york/blocks/calendar-15.tsx | 22 + .../new-york/blocks/calendar-16.tsx | 56 + .../new-york/blocks/calendar-17.tsx | 54 + .../new-york/blocks/calendar-18.tsx | 21 + .../new-york/blocks/calendar-19.tsx | 50 + .../new-york/blocks/calendar-20.tsx | 97 ++ .../new-york/blocks/calendar-21.tsx | 42 + .../new-york/blocks/calendar-22.tsx | 49 + .../new-york/blocks/calendar-23.tsx | 50 + .../new-york/blocks/calendar-24.tsx | 64 ++ .../new-york/blocks/calendar-25.tsx | 78 ++ .../new-york/blocks/calendar-26.tsx | 133 +++ .../new-york/blocks/calendar-27.tsx | 177 ++++ .../new-york/blocks/calendar-28.tsx | 104 ++ .../new-york/blocks/calendar-29.tsx | 96 ++ .../new-york/blocks/calendar-30.tsx | 56 + .../new-york/blocks/calendar-31.tsx | 80 ++ .../new-york/blocks/calendar-32.tsx | 60 ++ apps/www/package.json | 4 +- apps/www/public/r/index.json | 2 +- .../public/r/styles/default/calendar-01.json | 27 + .../public/r/styles/default/calendar-02.json | 27 + .../public/r/styles/default/calendar-03.json | 27 + .../public/r/styles/default/calendar-04.json | 27 + .../public/r/styles/default/calendar-05.json | 27 + .../public/r/styles/default/calendar-06.json | 27 + .../public/r/styles/default/calendar-07.json | 27 + .../public/r/styles/default/calendar-08.json | 27 + .../public/r/styles/default/calendar-09.json | 27 + .../public/r/styles/default/calendar-10.json | 29 + .../public/r/styles/default/calendar-11.json | 27 + .../public/r/styles/default/calendar-12.json | 29 + .../public/r/styles/default/calendar-13.json | 29 + .../public/r/styles/default/calendar-14.json | 27 + .../public/r/styles/default/calendar-15.json | 27 + .../public/r/styles/default/calendar-16.json | 30 + .../public/r/styles/default/calendar-17.json | 30 + .../public/r/styles/default/calendar-18.json | 27 + .../public/r/styles/default/calendar-19.json | 33 + .../public/r/styles/default/calendar-20.json | 29 + .../public/r/styles/default/calendar-21.json | 27 + .../public/r/styles/default/calendar-22.json | 30 + .../public/r/styles/default/calendar-23.json | 30 + .../public/r/styles/default/calendar-24.json | 30 + .../public/r/styles/default/calendar-25.json | 30 + .../public/r/styles/default/calendar-26.json | 31 + .../public/r/styles/default/calendar-27.json | 31 + .../public/r/styles/default/calendar-28.json | 31 + .../public/r/styles/default/calendar-29.json | 34 + .../public/r/styles/default/calendar-30.json | 31 + .../public/r/styles/default/calendar-31.json | 29 + .../public/r/styles/default/calendar-32.json | 29 + .../www/public/r/styles/default/calendar.json | 4 +- .../r/styles/new-york-v4/accordion-demo.json | 2 +- .../r/styles/new-york-v4/calendar-01.json | 25 + .../r/styles/new-york-v4/calendar-02.json | 25 + .../r/styles/new-york-v4/calendar-03.json | 25 + .../r/styles/new-york-v4/calendar-04.json | 25 + .../r/styles/new-york-v4/calendar-05.json | 25 + .../r/styles/new-york-v4/calendar-06.json | 25 + .../r/styles/new-york-v4/calendar-07.json | 25 + .../r/styles/new-york-v4/calendar-08.json | 25 + .../r/styles/new-york-v4/calendar-09.json | 25 + .../r/styles/new-york-v4/calendar-10.json | 27 + .../r/styles/new-york-v4/calendar-11.json | 25 + .../r/styles/new-york-v4/calendar-12.json | 27 + .../r/styles/new-york-v4/calendar-13.json | 27 + .../r/styles/new-york-v4/calendar-14.json | 25 + .../r/styles/new-york-v4/calendar-15.json | 25 + .../r/styles/new-york-v4/calendar-16.json | 28 + .../r/styles/new-york-v4/calendar-17.json | 28 + .../r/styles/new-york-v4/calendar-18.json | 25 + .../r/styles/new-york-v4/calendar-19.json | 31 + .../r/styles/new-york-v4/calendar-20.json | 27 + .../r/styles/new-york-v4/calendar-21.json | 25 + .../r/styles/new-york-v4/calendar-22.json | 28 + .../r/styles/new-york-v4/calendar-23.json | 28 + .../r/styles/new-york-v4/calendar-24.json | 28 + .../r/styles/new-york-v4/calendar-25.json | 28 + .../r/styles/new-york-v4/calendar-26.json | 29 + .../r/styles/new-york-v4/calendar-27.json | 29 + .../r/styles/new-york-v4/calendar-28.json | 29 + .../r/styles/new-york-v4/calendar-29.json | 32 + .../r/styles/new-york-v4/calendar-30.json | 29 + .../r/styles/new-york-v4/calendar-31.json | 27 + .../r/styles/new-york-v4/calendar-32.json | 27 + .../r/styles/new-york-v4/calendar-demo.json | 2 +- .../r/styles/new-york-v4/calendar-form.json | 2 +- .../r/styles/new-york-v4/calendar-hijri.json | 25 + .../public/r/styles/new-york-v4/calendar.json | 4 +- .../styles/new-york-v4/date-picker-form.json | 2 +- .../public/r/styles/new-york-v4/drawer.json | 2 +- .../public/r/styles/new-york/calendar-01.json | 27 + .../public/r/styles/new-york/calendar-02.json | 27 + .../public/r/styles/new-york/calendar-03.json | 27 + .../public/r/styles/new-york/calendar-04.json | 27 + .../public/r/styles/new-york/calendar-05.json | 27 + .../public/r/styles/new-york/calendar-06.json | 27 + .../public/r/styles/new-york/calendar-07.json | 27 + .../public/r/styles/new-york/calendar-08.json | 27 + .../public/r/styles/new-york/calendar-09.json | 27 + .../public/r/styles/new-york/calendar-10.json | 29 + .../public/r/styles/new-york/calendar-11.json | 27 + .../public/r/styles/new-york/calendar-12.json | 29 + .../public/r/styles/new-york/calendar-13.json | 29 + .../public/r/styles/new-york/calendar-14.json | 27 + .../public/r/styles/new-york/calendar-15.json | 27 + .../public/r/styles/new-york/calendar-16.json | 30 + .../public/r/styles/new-york/calendar-17.json | 30 + .../public/r/styles/new-york/calendar-18.json | 27 + .../public/r/styles/new-york/calendar-19.json | 33 + .../public/r/styles/new-york/calendar-20.json | 29 + .../public/r/styles/new-york/calendar-21.json | 27 + .../public/r/styles/new-york/calendar-22.json | 30 + .../public/r/styles/new-york/calendar-23.json | 30 + .../public/r/styles/new-york/calendar-24.json | 30 + .../public/r/styles/new-york/calendar-25.json | 30 + .../public/r/styles/new-york/calendar-26.json | 31 + .../public/r/styles/new-york/calendar-27.json | 31 + .../public/r/styles/new-york/calendar-28.json | 31 + .../public/r/styles/new-york/calendar-29.json | 34 + .../public/r/styles/new-york/calendar-30.json | 31 + .../public/r/styles/new-york/calendar-31.json | 29 + .../public/r/styles/new-york/calendar-32.json | 29 + .../public/r/styles/new-york/calendar.json | 4 +- .../registry/default/blocks/calendar-01.tsx | 21 + .../registry/default/blocks/calendar-02.tsx | 22 + .../registry/default/blocks/calendar-03.tsx | 25 + .../registry/default/blocks/calendar-04.tsx | 23 + .../registry/default/blocks/calendar-05.tsx | 24 + .../registry/default/blocks/calendar-06.tsx | 30 + .../registry/default/blocks/calendar-07.tsx | 31 + .../registry/default/blocks/calendar-08.tsx | 24 + .../registry/default/blocks/calendar-09.tsx | 26 + .../registry/default/blocks/calendar-10.tsx | 50 + .../registry/default/blocks/calendar-11.tsx | 31 + .../registry/default/blocks/calendar-12.tsx | 78 ++ .../registry/default/blocks/calendar-13.tsx | 58 ++ .../registry/default/blocks/calendar-14.tsx | 32 + .../registry/default/blocks/calendar-15.tsx | 22 + .../registry/default/blocks/calendar-16.tsx | 56 + .../registry/default/blocks/calendar-17.tsx | 54 + .../registry/default/blocks/calendar-18.tsx | 21 + .../registry/default/blocks/calendar-19.tsx | 50 + .../registry/default/blocks/calendar-20.tsx | 97 ++ .../registry/default/blocks/calendar-21.tsx | 42 + .../registry/default/blocks/calendar-22.tsx | 49 + .../registry/default/blocks/calendar-23.tsx | 50 + .../registry/default/blocks/calendar-24.tsx | 64 ++ .../registry/default/blocks/calendar-25.tsx | 78 ++ .../registry/default/blocks/calendar-26.tsx | 133 +++ .../registry/default/blocks/calendar-27.tsx | 177 ++++ .../registry/default/blocks/calendar-28.tsx | 104 ++ .../registry/default/blocks/calendar-29.tsx | 96 ++ .../registry/default/blocks/calendar-30.tsx | 56 + .../registry/default/blocks/calendar-31.tsx | 80 ++ .../registry/default/blocks/calendar-32.tsx | 60 ++ apps/www/registry/default/ui/calendar.tsx | 226 ++++- .../registry/new-york/blocks/calendar-01.tsx | 21 + .../registry/new-york/blocks/calendar-02.tsx | 22 + .../registry/new-york/blocks/calendar-03.tsx | 25 + .../registry/new-york/blocks/calendar-04.tsx | 23 + .../registry/new-york/blocks/calendar-05.tsx | 24 + .../registry/new-york/blocks/calendar-06.tsx | 30 + .../registry/new-york/blocks/calendar-07.tsx | 31 + .../registry/new-york/blocks/calendar-08.tsx | 24 + .../registry/new-york/blocks/calendar-09.tsx | 26 + .../registry/new-york/blocks/calendar-10.tsx | 50 + .../registry/new-york/blocks/calendar-11.tsx | 31 + .../registry/new-york/blocks/calendar-12.tsx | 78 ++ .../registry/new-york/blocks/calendar-13.tsx | 58 ++ .../registry/new-york/blocks/calendar-14.tsx | 32 + .../registry/new-york/blocks/calendar-15.tsx | 22 + .../registry/new-york/blocks/calendar-16.tsx | 56 + .../registry/new-york/blocks/calendar-17.tsx | 54 + .../registry/new-york/blocks/calendar-18.tsx | 21 + .../registry/new-york/blocks/calendar-19.tsx | 50 + .../registry/new-york/blocks/calendar-20.tsx | 97 ++ .../registry/new-york/blocks/calendar-21.tsx | 42 + .../registry/new-york/blocks/calendar-22.tsx | 49 + .../registry/new-york/blocks/calendar-23.tsx | 50 + .../registry/new-york/blocks/calendar-24.tsx | 64 ++ .../registry/new-york/blocks/calendar-25.tsx | 78 ++ .../registry/new-york/blocks/calendar-26.tsx | 133 +++ .../registry/new-york/blocks/calendar-27.tsx | 177 ++++ .../registry/new-york/blocks/calendar-28.tsx | 104 ++ .../registry/new-york/blocks/calendar-29.tsx | 96 ++ .../registry/new-york/blocks/calendar-30.tsx | 56 + .../registry/new-york/blocks/calendar-31.tsx | 80 ++ .../registry/new-york/blocks/calendar-32.tsx | 60 ++ apps/www/registry/new-york/ui/calendar.tsx | 230 ++++- apps/www/registry/registry-blocks.ts | 610 +++++++++++ apps/www/registry/registry-categories.ts | 10 + apps/www/registry/registry-ui.ts | 2 +- pnpm-lock.yaml | 73 +- 410 files changed, 20012 insertions(+), 341 deletions(-) create mode 100644 apps/v4/hooks/use-mobile.ts create mode 100644 apps/v4/public/r/styles/default/calendar-01.json create mode 100644 apps/v4/public/r/styles/default/calendar-02.json create mode 100644 apps/v4/public/r/styles/default/calendar-03.json create mode 100644 apps/v4/public/r/styles/default/calendar-04.json create mode 100644 apps/v4/public/r/styles/default/calendar-05.json create mode 100644 apps/v4/public/r/styles/default/calendar-06.json create mode 100644 apps/v4/public/r/styles/default/calendar-07.json create mode 100644 apps/v4/public/r/styles/default/calendar-08.json create mode 100644 apps/v4/public/r/styles/default/calendar-09.json create mode 100644 apps/v4/public/r/styles/default/calendar-10.json create mode 100644 apps/v4/public/r/styles/default/calendar-11.json create mode 100644 apps/v4/public/r/styles/default/calendar-12.json create mode 100644 apps/v4/public/r/styles/default/calendar-13.json create mode 100644 apps/v4/public/r/styles/default/calendar-14.json create mode 100644 apps/v4/public/r/styles/default/calendar-15.json create mode 100644 apps/v4/public/r/styles/default/calendar-16.json create mode 100644 apps/v4/public/r/styles/default/calendar-17.json create mode 100644 apps/v4/public/r/styles/default/calendar-18.json create mode 100644 apps/v4/public/r/styles/default/calendar-19.json create mode 100644 apps/v4/public/r/styles/default/calendar-20.json create mode 100644 apps/v4/public/r/styles/default/calendar-21.json create mode 100644 apps/v4/public/r/styles/default/calendar-22.json create mode 100644 apps/v4/public/r/styles/default/calendar-23.json create mode 100644 apps/v4/public/r/styles/default/calendar-24.json create mode 100644 apps/v4/public/r/styles/default/calendar-25.json create mode 100644 apps/v4/public/r/styles/default/calendar-26.json create mode 100644 apps/v4/public/r/styles/default/calendar-27.json create mode 100644 apps/v4/public/r/styles/default/calendar-28.json create mode 100644 apps/v4/public/r/styles/default/calendar-29.json create mode 100644 apps/v4/public/r/styles/default/calendar-30.json create mode 100644 apps/v4/public/r/styles/default/calendar-31.json create mode 100644 apps/v4/public/r/styles/default/calendar-32.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-01.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-02.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-03.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-04.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-05.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-06.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-07.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-08.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-09.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-10.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-11.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-12.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-13.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-14.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-15.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-16.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-17.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-18.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-19.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-20.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-21.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-22.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-23.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-24.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-25.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-26.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-27.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-28.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-29.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-30.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-31.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-32.json create mode 100644 apps/v4/public/r/styles/new-york-v4/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-01.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-02.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-03.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-04.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-05.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-06.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-07.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-08.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-09.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-10.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-11.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-12.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-13.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-14.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-15.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-16.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-17.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-18.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-19.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-20.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-21.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-22.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-23.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-24.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-25.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-26.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-27.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-28.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-29.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-30.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-31.json create mode 100644 apps/v4/public/r/styles/new-york/calendar-32.json create mode 100644 apps/v4/registry/__blocks__.json create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-01.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-02.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-03.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-04.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-05.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-06.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-07.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-08.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-09.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-10.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-11.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-12.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-13.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-14.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-15.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-16.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-17.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-18.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-19.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-20.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-21.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-22.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-23.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-24.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-25.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-26.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-27.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-28.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-29.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-30.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-31.tsx create mode 100644 apps/v4/registry/new-york-v4/blocks/calendar-32.tsx create mode 100644 apps/v4/registry/new-york-v4/examples/calendar-hijri.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-01.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-02.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-03.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-04.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-05.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-06.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-07.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-08.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-09.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-10.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-11.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-12.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-13.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-14.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-15.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-16.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-17.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-18.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-19.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-20.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-21.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-22.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-23.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-24.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-25.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-26.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-27.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-28.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-29.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-30.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-31.tsx create mode 100644 apps/www/__registry__/default/blocks/calendar-32.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-01.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-02.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-03.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-04.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-05.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-06.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-07.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-08.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-09.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-10.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-11.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-12.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-13.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-14.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-15.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-16.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-17.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-18.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-19.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-20.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-21.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-22.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-23.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-24.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-25.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-26.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-27.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-28.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-29.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-30.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-31.tsx create mode 100644 apps/www/__registry__/new-york/blocks/calendar-32.tsx create mode 100644 apps/www/public/r/styles/default/calendar-01.json create mode 100644 apps/www/public/r/styles/default/calendar-02.json create mode 100644 apps/www/public/r/styles/default/calendar-03.json create mode 100644 apps/www/public/r/styles/default/calendar-04.json create mode 100644 apps/www/public/r/styles/default/calendar-05.json create mode 100644 apps/www/public/r/styles/default/calendar-06.json create mode 100644 apps/www/public/r/styles/default/calendar-07.json create mode 100644 apps/www/public/r/styles/default/calendar-08.json create mode 100644 apps/www/public/r/styles/default/calendar-09.json create mode 100644 apps/www/public/r/styles/default/calendar-10.json create mode 100644 apps/www/public/r/styles/default/calendar-11.json create mode 100644 apps/www/public/r/styles/default/calendar-12.json create mode 100644 apps/www/public/r/styles/default/calendar-13.json create mode 100644 apps/www/public/r/styles/default/calendar-14.json create mode 100644 apps/www/public/r/styles/default/calendar-15.json create mode 100644 apps/www/public/r/styles/default/calendar-16.json create mode 100644 apps/www/public/r/styles/default/calendar-17.json create mode 100644 apps/www/public/r/styles/default/calendar-18.json create mode 100644 apps/www/public/r/styles/default/calendar-19.json create mode 100644 apps/www/public/r/styles/default/calendar-20.json create mode 100644 apps/www/public/r/styles/default/calendar-21.json create mode 100644 apps/www/public/r/styles/default/calendar-22.json create mode 100644 apps/www/public/r/styles/default/calendar-23.json create mode 100644 apps/www/public/r/styles/default/calendar-24.json create mode 100644 apps/www/public/r/styles/default/calendar-25.json create mode 100644 apps/www/public/r/styles/default/calendar-26.json create mode 100644 apps/www/public/r/styles/default/calendar-27.json create mode 100644 apps/www/public/r/styles/default/calendar-28.json create mode 100644 apps/www/public/r/styles/default/calendar-29.json create mode 100644 apps/www/public/r/styles/default/calendar-30.json create mode 100644 apps/www/public/r/styles/default/calendar-31.json create mode 100644 apps/www/public/r/styles/default/calendar-32.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-01.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-02.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-03.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-04.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-05.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-06.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-07.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-08.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-09.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-10.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-11.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-12.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-13.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-14.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-15.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-16.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-17.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-18.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-19.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-20.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-21.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-22.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-23.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-24.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-25.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-26.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-27.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-28.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-29.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-30.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-31.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-32.json create mode 100644 apps/www/public/r/styles/new-york-v4/calendar-hijri.json create mode 100644 apps/www/public/r/styles/new-york/calendar-01.json create mode 100644 apps/www/public/r/styles/new-york/calendar-02.json create mode 100644 apps/www/public/r/styles/new-york/calendar-03.json create mode 100644 apps/www/public/r/styles/new-york/calendar-04.json create mode 100644 apps/www/public/r/styles/new-york/calendar-05.json create mode 100644 apps/www/public/r/styles/new-york/calendar-06.json create mode 100644 apps/www/public/r/styles/new-york/calendar-07.json create mode 100644 apps/www/public/r/styles/new-york/calendar-08.json create mode 100644 apps/www/public/r/styles/new-york/calendar-09.json create mode 100644 apps/www/public/r/styles/new-york/calendar-10.json create mode 100644 apps/www/public/r/styles/new-york/calendar-11.json create mode 100644 apps/www/public/r/styles/new-york/calendar-12.json create mode 100644 apps/www/public/r/styles/new-york/calendar-13.json create mode 100644 apps/www/public/r/styles/new-york/calendar-14.json create mode 100644 apps/www/public/r/styles/new-york/calendar-15.json create mode 100644 apps/www/public/r/styles/new-york/calendar-16.json create mode 100644 apps/www/public/r/styles/new-york/calendar-17.json create mode 100644 apps/www/public/r/styles/new-york/calendar-18.json create mode 100644 apps/www/public/r/styles/new-york/calendar-19.json create mode 100644 apps/www/public/r/styles/new-york/calendar-20.json create mode 100644 apps/www/public/r/styles/new-york/calendar-21.json create mode 100644 apps/www/public/r/styles/new-york/calendar-22.json create mode 100644 apps/www/public/r/styles/new-york/calendar-23.json create mode 100644 apps/www/public/r/styles/new-york/calendar-24.json create mode 100644 apps/www/public/r/styles/new-york/calendar-25.json create mode 100644 apps/www/public/r/styles/new-york/calendar-26.json create mode 100644 apps/www/public/r/styles/new-york/calendar-27.json create mode 100644 apps/www/public/r/styles/new-york/calendar-28.json create mode 100644 apps/www/public/r/styles/new-york/calendar-29.json create mode 100644 apps/www/public/r/styles/new-york/calendar-30.json create mode 100644 apps/www/public/r/styles/new-york/calendar-31.json create mode 100644 apps/www/public/r/styles/new-york/calendar-32.json create mode 100644 apps/www/registry/default/blocks/calendar-01.tsx create mode 100644 apps/www/registry/default/blocks/calendar-02.tsx create mode 100644 apps/www/registry/default/blocks/calendar-03.tsx create mode 100644 apps/www/registry/default/blocks/calendar-04.tsx create mode 100644 apps/www/registry/default/blocks/calendar-05.tsx create mode 100644 apps/www/registry/default/blocks/calendar-06.tsx create mode 100644 apps/www/registry/default/blocks/calendar-07.tsx create mode 100644 apps/www/registry/default/blocks/calendar-08.tsx create mode 100644 apps/www/registry/default/blocks/calendar-09.tsx create mode 100644 apps/www/registry/default/blocks/calendar-10.tsx create mode 100644 apps/www/registry/default/blocks/calendar-11.tsx create mode 100644 apps/www/registry/default/blocks/calendar-12.tsx create mode 100644 apps/www/registry/default/blocks/calendar-13.tsx create mode 100644 apps/www/registry/default/blocks/calendar-14.tsx create mode 100644 apps/www/registry/default/blocks/calendar-15.tsx create mode 100644 apps/www/registry/default/blocks/calendar-16.tsx create mode 100644 apps/www/registry/default/blocks/calendar-17.tsx create mode 100644 apps/www/registry/default/blocks/calendar-18.tsx create mode 100644 apps/www/registry/default/blocks/calendar-19.tsx create mode 100644 apps/www/registry/default/blocks/calendar-20.tsx create mode 100644 apps/www/registry/default/blocks/calendar-21.tsx create mode 100644 apps/www/registry/default/blocks/calendar-22.tsx create mode 100644 apps/www/registry/default/blocks/calendar-23.tsx create mode 100644 apps/www/registry/default/blocks/calendar-24.tsx create mode 100644 apps/www/registry/default/blocks/calendar-25.tsx create mode 100644 apps/www/registry/default/blocks/calendar-26.tsx create mode 100644 apps/www/registry/default/blocks/calendar-27.tsx create mode 100644 apps/www/registry/default/blocks/calendar-28.tsx create mode 100644 apps/www/registry/default/blocks/calendar-29.tsx create mode 100644 apps/www/registry/default/blocks/calendar-30.tsx create mode 100644 apps/www/registry/default/blocks/calendar-31.tsx create mode 100644 apps/www/registry/default/blocks/calendar-32.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-01.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-02.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-03.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-04.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-05.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-06.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-07.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-08.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-09.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-10.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-11.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-12.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-13.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-14.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-15.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-16.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-17.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-18.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-19.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-20.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-21.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-22.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-23.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-24.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-25.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-26.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-27.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-28.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-29.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-30.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-31.tsx create mode 100644 apps/www/registry/new-york/blocks/calendar-32.tsx diff --git a/apps/v4/.prettierignore b/apps/v4/.prettierignore index 21825d3542..1a1509ae77 100644 --- a/apps/v4/.prettierignore +++ b/apps/v4/.prettierignore @@ -4,3 +4,4 @@ node_modules build .contentlayer registry/__index__.tsx +content/docs/components/calendar.mdx diff --git a/apps/v4/app/(internal)/sink/components/calendar-demo.tsx b/apps/v4/app/(internal)/sink/components/calendar-demo.tsx index 290d65176b..2cb1b3346c 100644 --- a/apps/v4/app/(internal)/sink/components/calendar-demo.tsx +++ b/apps/v4/app/(internal)/sink/components/calendar-demo.tsx @@ -2,29 +2,67 @@ import * as React from "react" import { addDays } from "date-fns" +import { Clock2Icon } from "lucide-react" import { type DateRange } from "react-day-picker" +import { es } from "react-day-picker/locale" -import { Calendar } from "@/registry/new-york-v4/ui/calendar" +import { Button } from "@/registry/new-york-v4/ui/button" +import { Calendar, CalendarDayButton } from "@/registry/new-york-v4/ui/calendar" +import { Card, CardContent, CardFooter } from "@/registry/new-york-v4/ui/card" +import { Input } from "@/registry/new-york-v4/ui/input" +import { Label } from "@/registry/new-york-v4/ui/label" export function CalendarDemo() { - const [date, setDate] = React.useState(new Date()) - const [dateRange, setDateRange] = React.useState({ - from: new Date(new Date().getFullYear(), 0, 12), - to: addDays(new Date(new Date().getFullYear(), 0, 12), 30), - }) - const [range, setRange] = React.useState({ - from: new Date(new Date().getFullYear(), 0, 12), - to: addDays(new Date(new Date().getFullYear(), 0, 12), 50), - }) - return ( -
+
+ + + + + + + + +
+ ) +} + +function CalendarSingle() { + const [date, setDate] = React.useState( + new Date(new Date().getFullYear(), new Date().getMonth(), 12) + ) + return ( +
+
Single Selection
+
+ ) +} + +function CalendarMultiple() { + return ( +
+
Multiple Selection
+ +
+ ) +} + +function CalendarRange() { + const [dateRange, setDateRange] = React.useState({ + from: new Date(new Date().getFullYear(), 0, 12), + to: addDays(new Date(new Date().getFullYear(), 0, 12), 30), + }) + + return ( +
+
Range Selection
date > new Date() || date < new Date("1900-01-01")} - className="rounded-md border shadow-sm" + className="rounded-lg border shadow-sm" /> +
+ ) +} + +function CalendarRangeMultipleMonths() { + const [range, setRange] = React.useState({ + from: new Date(new Date().getFullYear(), 3, 12), + to: addDays(new Date(new Date().getFullYear(), 3, 12), 60), + }) + + return ( +
+
Range Selection + Locale
) } + +function CalendarBookedDates() { + const [date, setDate] = React.useState( + new Date(new Date().getFullYear(), 1, 3) + ) + const bookedDates = Array.from( + { length: 15 }, + (_, i) => new Date(new Date().getFullYear(), new Date().getMonth(), 12 + i) + ) + + return ( +
+
With booked dates
+ button]:line-through opacity-100", + }} + className="rounded-lg border shadow-sm" + /> +
+ ) +} + +function CalendarWithTime() { + const [date, setDate] = React.useState( + new Date(new Date().getFullYear(), new Date().getMonth(), 12) + ) + + return ( +
+
With Time Input
+ + + + + +
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+ ) +} + +function CalendarCustomDays() { + const [range, setRange] = React.useState({ + from: new Date(new Date().getFullYear(), 11, 8), + to: addDays(new Date(new Date().getFullYear(), 11, 8), 10), + }) + + return ( +
+
+ With Custom Days and Formatters +
+ { + return date.toLocaleString("default", { month: "long" }) + }, + }} + components={{ + DayButton: ({ children, modifiers, day, ...props }) => { + const isWeekend = day.date.getDay() === 0 || day.date.getDay() === 6 + + return ( + + {children} + {!modifiers.outside && ( + {isWeekend ? "$120" : "$100"} + )} + + ) + }, + }} + /> +
+ ) +} + +function CalendarWithPresets() { + const [date, setDate] = React.useState( + new Date(new Date().getFullYear(), 1, 12) + ) + const [currentMonth, setCurrentMonth] = React.useState( + new Date(new Date().getFullYear(), new Date().getMonth(), 1) + ) + + return ( +
+
With Presets
+ + + + + + {[ + { label: "Today", value: 0 }, + { label: "Tomorrow", value: 1 }, + { label: "In 3 days", value: 3 }, + { label: "In a week", value: 7 }, + { label: "In 2 weeks", value: 14 }, + ].map((preset) => ( + + ))} + + +
+ ) +} diff --git a/apps/v4/app/(internal)/sink/components/date-picker-demo.tsx b/apps/v4/app/(internal)/sink/components/date-picker-demo.tsx index e2c92198a6..d0e55d6062 100644 --- a/apps/v4/app/(internal)/sink/components/date-picker-demo.tsx +++ b/apps/v4/app/(internal)/sink/components/date-picker-demo.tsx @@ -6,8 +6,17 @@ import { CalendarIcon } from "lucide-react" import { DateRange } from "react-day-picker" import { cn } from "@/lib/utils" +import { useIsMobile } from "@/hooks/use-mobile" import { Button } from "@/registry/new-york-v4/ui/button" import { Calendar } from "@/registry/new-york-v4/ui/calendar" +import { + Drawer, + DrawerContent, + DrawerDescription, + DrawerHeader, + DrawerTitle, + DrawerTrigger, +} from "@/registry/new-york-v4/ui/drawer" import { Popover, PopoverContent, @@ -18,6 +27,7 @@ export function DatePickerDemo() { return (
+
) @@ -41,12 +51,7 @@ function DatePickerSimple() { - + ) @@ -86,7 +91,6 @@ function DatePickerWithRange() { ) } + +function DataPickerWithDropdowns() { + const [date, setDate] = React.useState() + const [open, setOpen] = React.useState(false) + const isMobile = useIsMobile(450) + + if (isMobile) { + return ( + + + + + + + Select a date + + Pick a date for your appointment. + + + { + setDate(day) + setOpen(false) + }} + /> + + + ) + } + + return ( + + + + + + +
+ +
+
+
+ ) +} diff --git a/apps/v4/app/(view)/view/[name]/page.tsx b/apps/v4/app/(view)/view/[name]/page.tsx index 065864d90a..61ebbf2920 100644 --- a/apps/v4/app/(view)/view/[name]/page.tsx +++ b/apps/v4/app/(view)/view/[name]/page.tsx @@ -34,7 +34,7 @@ export async function generateMetadata({ const description = item.description return { - title: `${item.name}${item.description ? ` - ${item.description}` : ""}`, + title: item.description, description, openGraph: { title, diff --git a/apps/v4/components/block-display.tsx b/apps/v4/components/block-display.tsx index e3c62a69f7..34b223cd2c 100644 --- a/apps/v4/components/block-display.tsx +++ b/apps/v4/components/block-display.tsx @@ -7,7 +7,9 @@ import { createFileTreeForRegistryItemFiles, getRegistryItem, } from "@/lib/registry" +import { cn } from "@/lib/utils" import { BlockViewer } from "@/components/block-viewer" +import { ComponentPreview } from "@/components/component-preview" export async function BlockDisplay({ name }: { name: string }) { const item = await getCachedRegistryItem(name) @@ -22,7 +24,16 @@ export async function BlockDisplay({ name }: { name: string }) { ]) return ( - + + .p-6]:p-0", + item.meta?.containerClassName + )} + /> + ) } diff --git a/apps/v4/components/block-viewer.tsx b/apps/v4/components/block-viewer.tsx index 0830bb5851..1507ed5de6 100644 --- a/apps/v4/components/block-viewer.tsx +++ b/apps/v4/components/block-viewer.tsx @@ -11,6 +11,7 @@ import { Folder, Fullscreen, Monitor, + RotateCw, Smartphone, Tablet, Terminal, @@ -21,6 +22,7 @@ import { z } from "zod" import { trackEvent } from "@/lib/events" import { createFileTreeForRegistryItemFiles, FileTree } from "@/lib/registry" +import { cn } from "@/lib/utils" import { useCopyToClipboard } from "@/hooks/use-copy-to-clipboard" import { getIconForLanguageExtension } from "@/components/icons" import { OpenInV0Button } from "@/components/open-in-v0-button" @@ -66,6 +68,8 @@ type BlockViewerContext = { highlightedContent: string })[] | null + iframeKey?: number + setIframeKey?: React.Dispatch> } const BlockViewerContext = React.createContext(null) @@ -91,6 +95,7 @@ function BlockViewerProvider({ BlockViewerContext["activeFile"] >(highlightedFiles?.[0].target ?? null) const resizablePanelRef = React.useRef(null) + const [iframeKey, setIframeKey] = React.useState(0) return (
+
setView(value as "preview" | "code")} - className="hidden lg:flex" > Preview Code - + - {item.description} + {item.description?.replace(/\.$/, "")} -
-
+
+
+ +
- + - +
) } -function BlockViewerView() { - const { item, resizablePanelRef } = useBlockViewer() +function BlockViewerIframe({ className }: { className?: string }) { + const { item, iframeKey } = useBlockViewer() return ( -
-
- +