@nanisoft/prism-ui 0.4.0 → 0.5.1
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 +81 -0
- package/THIRD-PARTY-NOTICES.md +48 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/blocks/app-shell-01/app-shell.d.ts +38 -0
- package/dist/blocks/app-shell-01/app-shell.d.ts.map +1 -0
- package/dist/blocks/app-shell-01/app-shell.js +27 -0
- package/dist/blocks/app-shell-01/index.d.ts +3 -0
- package/dist/blocks/app-shell-01/index.d.ts.map +1 -0
- package/dist/blocks/app-shell-01/index.js +1 -0
- package/dist/blocks/auth-form-01/auth-form.d.ts +52 -0
- package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -0
- package/dist/blocks/auth-form-01/auth-form.js +23 -0
- package/dist/blocks/auth-form-01/index.d.ts +3 -0
- package/dist/blocks/auth-form-01/index.d.ts.map +1 -0
- package/dist/blocks/auth-form-01/index.js +1 -0
- package/dist/blocks/cta-01/cta.d.ts +23 -0
- package/dist/blocks/cta-01/cta.d.ts.map +1 -0
- package/dist/blocks/cta-01/cta.js +24 -0
- package/dist/blocks/cta-01/index.d.ts +2 -0
- package/dist/blocks/cta-01/index.d.ts.map +1 -0
- package/dist/blocks/cta-01/index.js +1 -0
- package/dist/blocks/data-table-01/data-table.d.ts +102 -0
- package/dist/blocks/data-table-01/data-table.d.ts.map +1 -0
- package/dist/blocks/data-table-01/data-table.js +116 -0
- package/dist/blocks/data-table-01/index.d.ts +3 -0
- package/dist/blocks/data-table-01/index.d.ts.map +1 -0
- package/dist/blocks/data-table-01/index.js +1 -0
- package/dist/blocks/feature-grid-01/feature-grid.d.ts +27 -0
- package/dist/blocks/feature-grid-01/feature-grid.d.ts.map +1 -0
- package/dist/blocks/feature-grid-01/feature-grid.js +14 -0
- package/dist/blocks/feature-grid-01/index.d.ts +2 -0
- package/dist/blocks/feature-grid-01/index.d.ts.map +1 -0
- package/dist/blocks/feature-grid-01/index.js +1 -0
- package/dist/blocks/hero-01/hero.d.ts +30 -0
- package/dist/blocks/hero-01/hero.d.ts.map +1 -0
- package/dist/blocks/hero-01/hero.js +12 -0
- package/dist/blocks/hero-01/index.d.ts +2 -0
- package/dist/blocks/hero-01/index.d.ts.map +1 -0
- package/dist/blocks/hero-01/index.js +1 -0
- package/dist/blocks/index.d.ts +17 -4
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +17 -6
- package/dist/blocks/page-header-01/index.d.ts +3 -0
- package/dist/blocks/page-header-01/index.d.ts.map +1 -0
- package/dist/blocks/page-header-01/index.js +1 -0
- package/dist/blocks/page-header-01/page-header.d.ts +48 -0
- package/dist/blocks/page-header-01/page-header.d.ts.map +1 -0
- package/dist/blocks/page-header-01/page-header.js +27 -0
- package/dist/blocks/pricing-01/index.d.ts +2 -0
- package/dist/blocks/pricing-01/index.d.ts.map +1 -0
- package/dist/blocks/pricing-01/index.js +1 -0
- package/dist/blocks/pricing-01/pricing.d.ts +35 -0
- package/dist/blocks/pricing-01/pricing.d.ts.map +1 -0
- package/dist/blocks/pricing-01/pricing.js +20 -0
- package/dist/blocks/settings-panel-01/index.d.ts +3 -0
- package/dist/blocks/settings-panel-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-panel-01/index.js +1 -0
- package/dist/blocks/settings-panel-01/settings-panel.d.ts +71 -0
- package/dist/blocks/settings-panel-01/settings-panel.d.ts.map +1 -0
- package/dist/blocks/settings-panel-01/settings-panel.js +38 -0
- package/dist/blocks/stats-01/index.d.ts +2 -0
- package/dist/blocks/stats-01/index.d.ts.map +1 -0
- package/dist/blocks/stats-01/index.js +1 -0
- package/dist/blocks/stats-01/stats.d.ts +28 -0
- package/dist/blocks/stats-01/stats.d.ts.map +1 -0
- package/dist/blocks/stats-01/stats.js +27 -0
- package/dist/catalog.d.ts +28 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +502 -0
- package/dist/components/index.d.ts +52 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +37 -5
- package/dist/components/ui/accordion.d.ts +65 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +30 -0
- package/dist/components/ui/alert.d.ts +19 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +31 -0
- package/dist/components/ui/avatar.d.ts +47 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +30 -0
- package/dist/components/ui/badge.d.ts +14 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +26 -0
- package/dist/components/ui/breadcrumb.d.ts +35 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.js +48 -0
- package/dist/components/ui/button.d.ts +16 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +63 -0
- package/dist/components/ui/card.d.ts +16 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +28 -0
- package/dist/components/ui/checkbox.d.ts +43 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +18 -0
- package/dist/components/ui/dialog.d.ts +81 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +60 -0
- package/dist/components/ui/dropdown-menu.d.ts +189 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +67 -0
- package/dist/components/ui/field.d.ts +36 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/field.js +46 -0
- package/dist/components/ui/input.d.ts +12 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +14 -0
- package/dist/components/ui/kbd.d.ts +10 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +12 -0
- package/dist/components/ui/pagination.d.ts +40 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination.js +49 -0
- package/dist/components/ui/popover.d.ts +56 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +25 -0
- package/dist/components/ui/progress.d.ts +38 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +17 -0
- package/dist/components/ui/radio-group.d.ts +66 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group.js +30 -0
- package/dist/components/ui/section.d.ts +37 -0
- package/dist/components/ui/section.d.ts.map +1 -0
- package/dist/components/ui/section.js +12 -0
- package/dist/components/ui/select.d.ts +124 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +47 -0
- package/dist/components/ui/separator.d.ts +16 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +15 -0
- package/dist/components/ui/skeleton.d.ts +12 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +14 -0
- package/dist/components/ui/slider.d.ts +43 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +17 -0
- package/dist/components/ui/switch.d.ts +42 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +16 -0
- package/dist/components/ui/table.d.ts +27 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +43 -0
- package/dist/components/ui/tabs.d.ts +66 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +29 -0
- package/dist/components/ui/textarea.d.ts +11 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +13 -0
- package/dist/components/ui/tooltip.d.ts +63 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +25 -0
- package/dist/components/ui/typography.d.ts +32 -0
- package/dist/components/ui/typography.d.ts.map +1 -0
- package/dist/components/ui/typography.js +51 -0
- package/dist/index.d.ts +54 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -20
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +5 -0
- package/dist/pages/auth-page/index.d.ts +36 -0
- package/dist/pages/auth-page/index.d.ts.map +1 -0
- package/dist/pages/auth-page/index.js +23 -0
- package/dist/pages/dashboard-page/index.d.ts +36 -0
- package/dist/pages/dashboard-page/index.d.ts.map +1 -0
- package/dist/pages/dashboard-page/index.js +24 -0
- package/dist/pages/index.d.ts +16 -2
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +12 -4
- package/dist/pages/marketing-page/index.d.ts +43 -0
- package/dist/pages/marketing-page/index.d.ts.map +1 -0
- package/dist/pages/marketing-page/index.js +25 -0
- package/dist/pages/settings-page/index.d.ts +47 -0
- package/dist/pages/settings-page/index.d.ts.map +1 -0
- package/dist/pages/settings-page/index.js +24 -0
- package/dist/provider/index.d.ts +11 -4
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +9 -5
- package/dist/provider/provider.d.ts +37 -0
- package/dist/provider/provider.d.ts.map +1 -0
- package/dist/provider/provider.js +87 -0
- package/dist/provider/theme-script.d.ts +17 -0
- package/dist/provider/theme-script.d.ts.map +1 -0
- package/dist/provider/theme-script.js +28 -0
- package/dist/styles.css +2366 -325
- package/dist/theming/index.d.ts +42 -3
- package/dist/theming/index.d.ts.map +1 -1
- package/dist/theming/index.js +60 -8
- package/package.json +64 -64
- package/dist/blocks/component-demo/ComponentDemo.d.ts +0 -13
- package/dist/blocks/component-demo/ComponentDemo.d.ts.map +0 -1
- package/dist/blocks/component-demo/ComponentDemo.js +0 -5
- package/dist/blocks/component-demo/ComponentDemo.js.map +0 -1
- package/dist/blocks/component-demo/index.d.ts +0 -2
- package/dist/blocks/component-demo/index.d.ts.map +0 -1
- package/dist/blocks/component-demo/index.js +0 -2
- package/dist/blocks/component-demo/index.js.map +0 -1
- package/dist/blocks/component-demo.d.ts +0 -15
- package/dist/blocks/component-demo.d.ts.map +0 -1
- package/dist/blocks/component-demo.js +0 -11
- package/dist/blocks/component-demo.js.map +0 -1
- package/dist/blocks/index.js.map +0 -1
- package/dist/blocks/page-header/PageHeader.d.ts +0 -11
- package/dist/blocks/page-header/PageHeader.d.ts.map +0 -1
- package/dist/blocks/page-header/PageHeader.js +0 -9
- package/dist/blocks/page-header/PageHeader.js.map +0 -1
- package/dist/blocks/page-header/index.d.ts +0 -2
- package/dist/blocks/page-header/index.d.ts.map +0 -1
- package/dist/blocks/page-header/index.js +0 -2
- package/dist/blocks/page-header/index.js.map +0 -1
- package/dist/blocks/page-header.d.ts +0 -16
- package/dist/blocks/page-header.d.ts.map +0 -1
- package/dist/blocks/page-header.js +0 -13
- package/dist/blocks/page-header.js.map +0 -1
- package/dist/blocks/site-footer/SiteFooter.d.ts +0 -26
- package/dist/blocks/site-footer/SiteFooter.d.ts.map +0 -1
- package/dist/blocks/site-footer/SiteFooter.js +0 -10
- package/dist/blocks/site-footer/SiteFooter.js.map +0 -1
- package/dist/blocks/site-footer/index.d.ts +0 -2
- package/dist/blocks/site-footer/index.d.ts.map +0 -1
- package/dist/blocks/site-footer/index.js +0 -2
- package/dist/blocks/site-footer/index.js.map +0 -1
- package/dist/blocks/site-header/SiteHeader.d.ts +0 -19
- package/dist/blocks/site-header/SiteHeader.d.ts.map +0 -1
- package/dist/blocks/site-header/SiteHeader.js +0 -32
- package/dist/blocks/site-header/SiteHeader.js.map +0 -1
- package/dist/blocks/site-header/index.d.ts +0 -2
- package/dist/blocks/site-header/index.d.ts.map +0 -1
- package/dist/blocks/site-header/index.js +0 -2
- package/dist/blocks/site-header/index.js.map +0 -1
- package/dist/components/affix/index.d.ts +0 -2
- package/dist/components/affix/index.d.ts.map +0 -1
- package/dist/components/affix/index.js +0 -3
- package/dist/components/affix/index.js.map +0 -1
- package/dist/components/alert/index.d.ts +0 -2
- package/dist/components/alert/index.d.ts.map +0 -1
- package/dist/components/alert/index.js +0 -3
- package/dist/components/alert/index.js.map +0 -1
- package/dist/components/anchor/index.d.ts +0 -2
- package/dist/components/anchor/index.d.ts.map +0 -1
- package/dist/components/anchor/index.js +0 -3
- package/dist/components/anchor/index.js.map +0 -1
- package/dist/components/auto-complete/index.d.ts +0 -2
- package/dist/components/auto-complete/index.d.ts.map +0 -1
- package/dist/components/auto-complete/index.js +0 -3
- package/dist/components/auto-complete/index.js.map +0 -1
- package/dist/components/avatar/index.d.ts +0 -2
- package/dist/components/avatar/index.d.ts.map +0 -1
- package/dist/components/avatar/index.js +0 -3
- package/dist/components/avatar/index.js.map +0 -1
- package/dist/components/back-top/index.d.ts +0 -2
- package/dist/components/back-top/index.d.ts.map +0 -1
- package/dist/components/back-top/index.js +0 -3
- package/dist/components/back-top/index.js.map +0 -1
- package/dist/components/badge/index.d.ts +0 -2
- package/dist/components/badge/index.d.ts.map +0 -1
- package/dist/components/badge/index.js +0 -3
- package/dist/components/badge/index.js.map +0 -1
- package/dist/components/border-beam/index.d.ts +0 -2
- package/dist/components/border-beam/index.d.ts.map +0 -1
- package/dist/components/border-beam/index.js +0 -3
- package/dist/components/border-beam/index.js.map +0 -1
- package/dist/components/breadcrumb/index.d.ts +0 -2
- package/dist/components/breadcrumb/index.d.ts.map +0 -1
- package/dist/components/breadcrumb/index.js +0 -3
- package/dist/components/breadcrumb/index.js.map +0 -1
- package/dist/components/button/index.d.ts +0 -2
- package/dist/components/button/index.d.ts.map +0 -1
- package/dist/components/button/index.js +0 -3
- package/dist/components/button/index.js.map +0 -1
- package/dist/components/calendar/index.d.ts +0 -2
- package/dist/components/calendar/index.d.ts.map +0 -1
- package/dist/components/calendar/index.js +0 -3
- package/dist/components/calendar/index.js.map +0 -1
- package/dist/components/card/index.d.ts +0 -2
- package/dist/components/card/index.d.ts.map +0 -1
- package/dist/components/card/index.js +0 -3
- package/dist/components/card/index.js.map +0 -1
- package/dist/components/carousel/index.d.ts +0 -2
- package/dist/components/carousel/index.d.ts.map +0 -1
- package/dist/components/carousel/index.js +0 -3
- package/dist/components/carousel/index.js.map +0 -1
- package/dist/components/cascader/index.d.ts +0 -2
- package/dist/components/cascader/index.d.ts.map +0 -1
- package/dist/components/cascader/index.js +0 -3
- package/dist/components/cascader/index.js.map +0 -1
- package/dist/components/checkbox/index.d.ts +0 -2
- package/dist/components/checkbox/index.d.ts.map +0 -1
- package/dist/components/checkbox/index.js +0 -3
- package/dist/components/checkbox/index.js.map +0 -1
- package/dist/components/col/index.d.ts +0 -2
- package/dist/components/col/index.d.ts.map +0 -1
- package/dist/components/col/index.js +0 -3
- package/dist/components/col/index.js.map +0 -1
- package/dist/components/collapse/index.d.ts +0 -2
- package/dist/components/collapse/index.d.ts.map +0 -1
- package/dist/components/collapse/index.js +0 -3
- package/dist/components/collapse/index.js.map +0 -1
- package/dist/components/color-picker/index.d.ts +0 -2
- package/dist/components/color-picker/index.d.ts.map +0 -1
- package/dist/components/color-picker/index.js +0 -3
- package/dist/components/color-picker/index.js.map +0 -1
- package/dist/components/date-picker/index.d.ts +0 -2
- package/dist/components/date-picker/index.d.ts.map +0 -1
- package/dist/components/date-picker/index.js +0 -3
- package/dist/components/date-picker/index.js.map +0 -1
- package/dist/components/descriptions/index.d.ts +0 -2
- package/dist/components/descriptions/index.d.ts.map +0 -1
- package/dist/components/descriptions/index.js +0 -3
- package/dist/components/descriptions/index.js.map +0 -1
- package/dist/components/display-title/DisplayTitle.d.ts +0 -7
- package/dist/components/display-title/DisplayTitle.d.ts.map +0 -1
- package/dist/components/display-title/DisplayTitle.js +0 -12
- package/dist/components/display-title/DisplayTitle.js.map +0 -1
- package/dist/components/display-title/index.d.ts +0 -2
- package/dist/components/display-title/index.d.ts.map +0 -1
- package/dist/components/display-title/index.js +0 -2
- package/dist/components/display-title/index.js.map +0 -1
- package/dist/components/divider/index.d.ts +0 -2
- package/dist/components/divider/index.d.ts.map +0 -1
- package/dist/components/divider/index.js +0 -3
- package/dist/components/divider/index.js.map +0 -1
- package/dist/components/drawer/index.d.ts +0 -2
- package/dist/components/drawer/index.d.ts.map +0 -1
- package/dist/components/drawer/index.js +0 -3
- package/dist/components/drawer/index.js.map +0 -1
- package/dist/components/dropdown/index.d.ts +0 -2
- package/dist/components/dropdown/index.d.ts.map +0 -1
- package/dist/components/dropdown/index.js +0 -3
- package/dist/components/dropdown/index.js.map +0 -1
- package/dist/components/empty/index.d.ts +0 -2
- package/dist/components/empty/index.d.ts.map +0 -1
- package/dist/components/empty/index.js +0 -3
- package/dist/components/empty/index.js.map +0 -1
- package/dist/components/flex/index.d.ts +0 -2
- package/dist/components/flex/index.d.ts.map +0 -1
- package/dist/components/flex/index.js +0 -3
- package/dist/components/flex/index.js.map +0 -1
- package/dist/components/float-button/index.d.ts +0 -2
- package/dist/components/float-button/index.d.ts.map +0 -1
- package/dist/components/float-button/index.js +0 -3
- package/dist/components/float-button/index.js.map +0 -1
- package/dist/components/form/index.d.ts +0 -2
- package/dist/components/form/index.d.ts.map +0 -1
- package/dist/components/form/index.js +0 -3
- package/dist/components/form/index.js.map +0 -1
- package/dist/components/grid/index.d.ts +0 -2
- package/dist/components/grid/index.d.ts.map +0 -1
- package/dist/components/grid/index.js +0 -3
- package/dist/components/grid/index.js.map +0 -1
- package/dist/components/image/index.d.ts +0 -2
- package/dist/components/image/index.d.ts.map +0 -1
- package/dist/components/image/index.js +0 -3
- package/dist/components/image/index.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/input/index.d.ts +0 -2
- package/dist/components/input/index.d.ts.map +0 -1
- package/dist/components/input/index.js +0 -3
- package/dist/components/input/index.js.map +0 -1
- package/dist/components/input-number/index.d.ts +0 -2
- package/dist/components/input-number/index.d.ts.map +0 -1
- package/dist/components/input-number/index.js +0 -3
- package/dist/components/input-number/index.js.map +0 -1
- package/dist/components/layout/index.d.ts +0 -2
- package/dist/components/layout/index.d.ts.map +0 -1
- package/dist/components/layout/index.js +0 -3
- package/dist/components/layout/index.js.map +0 -1
- package/dist/components/list/index.d.ts +0 -2
- package/dist/components/list/index.d.ts.map +0 -1
- package/dist/components/list/index.js +0 -3
- package/dist/components/list/index.js.map +0 -1
- package/dist/components/listy/index.d.ts +0 -2
- package/dist/components/listy/index.d.ts.map +0 -1
- package/dist/components/listy/index.js +0 -3
- package/dist/components/listy/index.js.map +0 -1
- package/dist/components/masonry/index.d.ts +0 -2
- package/dist/components/masonry/index.d.ts.map +0 -1
- package/dist/components/masonry/index.js +0 -3
- package/dist/components/masonry/index.js.map +0 -1
- package/dist/components/mentions/index.d.ts +0 -2
- package/dist/components/mentions/index.d.ts.map +0 -1
- package/dist/components/mentions/index.js +0 -3
- package/dist/components/mentions/index.js.map +0 -1
- package/dist/components/menu/index.d.ts +0 -2
- package/dist/components/menu/index.d.ts.map +0 -1
- package/dist/components/menu/index.js +0 -3
- package/dist/components/menu/index.js.map +0 -1
- package/dist/components/modal/index.d.ts +0 -2
- package/dist/components/modal/index.d.ts.map +0 -1
- package/dist/components/modal/index.js +0 -3
- package/dist/components/modal/index.js.map +0 -1
- package/dist/components/pagination/index.d.ts +0 -2
- package/dist/components/pagination/index.d.ts.map +0 -1
- package/dist/components/pagination/index.js +0 -3
- package/dist/components/pagination/index.js.map +0 -1
- package/dist/components/popconfirm/index.d.ts +0 -2
- package/dist/components/popconfirm/index.d.ts.map +0 -1
- package/dist/components/popconfirm/index.js +0 -3
- package/dist/components/popconfirm/index.js.map +0 -1
- package/dist/components/popover/index.d.ts +0 -2
- package/dist/components/popover/index.d.ts.map +0 -1
- package/dist/components/popover/index.js +0 -3
- package/dist/components/popover/index.js.map +0 -1
- package/dist/components/progress/index.d.ts +0 -2
- package/dist/components/progress/index.d.ts.map +0 -1
- package/dist/components/progress/index.js +0 -3
- package/dist/components/progress/index.js.map +0 -1
- package/dist/components/qrcode/index.d.ts +0 -2
- package/dist/components/qrcode/index.d.ts.map +0 -1
- package/dist/components/qrcode/index.js +0 -3
- package/dist/components/qrcode/index.js.map +0 -1
- package/dist/components/radio/index.d.ts +0 -2
- package/dist/components/radio/index.d.ts.map +0 -1
- package/dist/components/radio/index.js +0 -3
- package/dist/components/radio/index.js.map +0 -1
- package/dist/components/rate/index.d.ts +0 -2
- package/dist/components/rate/index.d.ts.map +0 -1
- package/dist/components/rate/index.js +0 -3
- package/dist/components/rate/index.js.map +0 -1
- package/dist/components/result/index.d.ts +0 -2
- package/dist/components/result/index.d.ts.map +0 -1
- package/dist/components/result/index.js +0 -3
- package/dist/components/result/index.js.map +0 -1
- package/dist/components/row/index.d.ts +0 -2
- package/dist/components/row/index.d.ts.map +0 -1
- package/dist/components/row/index.js +0 -3
- package/dist/components/row/index.js.map +0 -1
- package/dist/components/segmented/index.d.ts +0 -2
- package/dist/components/segmented/index.d.ts.map +0 -1
- package/dist/components/segmented/index.js +0 -3
- package/dist/components/segmented/index.js.map +0 -1
- package/dist/components/select/index.d.ts +0 -2
- package/dist/components/select/index.d.ts.map +0 -1
- package/dist/components/select/index.js +0 -3
- package/dist/components/select/index.js.map +0 -1
- package/dist/components/skeleton/index.d.ts +0 -2
- package/dist/components/skeleton/index.d.ts.map +0 -1
- package/dist/components/skeleton/index.js +0 -3
- package/dist/components/skeleton/index.js.map +0 -1
- package/dist/components/slider/index.d.ts +0 -2
- package/dist/components/slider/index.d.ts.map +0 -1
- package/dist/components/slider/index.js +0 -3
- package/dist/components/slider/index.js.map +0 -1
- package/dist/components/space/index.d.ts +0 -2
- package/dist/components/space/index.d.ts.map +0 -1
- package/dist/components/space/index.js +0 -3
- package/dist/components/space/index.js.map +0 -1
- package/dist/components/spin/index.d.ts +0 -2
- package/dist/components/spin/index.d.ts.map +0 -1
- package/dist/components/spin/index.js +0 -3
- package/dist/components/spin/index.js.map +0 -1
- package/dist/components/splitter/index.d.ts +0 -2
- package/dist/components/splitter/index.d.ts.map +0 -1
- package/dist/components/splitter/index.js +0 -3
- package/dist/components/splitter/index.js.map +0 -1
- package/dist/components/statistic/index.d.ts +0 -2
- package/dist/components/statistic/index.d.ts.map +0 -1
- package/dist/components/statistic/index.js +0 -3
- package/dist/components/statistic/index.js.map +0 -1
- package/dist/components/steps/index.d.ts +0 -2
- package/dist/components/steps/index.d.ts.map +0 -1
- package/dist/components/steps/index.js +0 -3
- package/dist/components/steps/index.js.map +0 -1
- package/dist/components/switch/index.d.ts +0 -2
- package/dist/components/switch/index.d.ts.map +0 -1
- package/dist/components/switch/index.js +0 -3
- package/dist/components/switch/index.js.map +0 -1
- package/dist/components/table/index.d.ts +0 -2
- package/dist/components/table/index.d.ts.map +0 -1
- package/dist/components/table/index.js +0 -3
- package/dist/components/table/index.js.map +0 -1
- package/dist/components/tabs/index.d.ts +0 -2
- package/dist/components/tabs/index.d.ts.map +0 -1
- package/dist/components/tabs/index.js +0 -3
- package/dist/components/tabs/index.js.map +0 -1
- package/dist/components/tag/index.d.ts +0 -2
- package/dist/components/tag/index.d.ts.map +0 -1
- package/dist/components/tag/index.js +0 -3
- package/dist/components/tag/index.js.map +0 -1
- package/dist/components/time-picker/index.d.ts +0 -2
- package/dist/components/time-picker/index.d.ts.map +0 -1
- package/dist/components/time-picker/index.js +0 -3
- package/dist/components/time-picker/index.js.map +0 -1
- package/dist/components/timeline/index.d.ts +0 -2
- package/dist/components/timeline/index.d.ts.map +0 -1
- package/dist/components/timeline/index.js +0 -3
- package/dist/components/timeline/index.js.map +0 -1
- package/dist/components/tooltip/index.d.ts +0 -2
- package/dist/components/tooltip/index.d.ts.map +0 -1
- package/dist/components/tooltip/index.js +0 -3
- package/dist/components/tooltip/index.js.map +0 -1
- package/dist/components/tour/index.d.ts +0 -2
- package/dist/components/tour/index.d.ts.map +0 -1
- package/dist/components/tour/index.js +0 -3
- package/dist/components/tour/index.js.map +0 -1
- package/dist/components/transfer/index.d.ts +0 -2
- package/dist/components/transfer/index.d.ts.map +0 -1
- package/dist/components/transfer/index.js +0 -3
- package/dist/components/transfer/index.js.map +0 -1
- package/dist/components/tree/index.d.ts +0 -2
- package/dist/components/tree/index.d.ts.map +0 -1
- package/dist/components/tree/index.js +0 -3
- package/dist/components/tree/index.js.map +0 -1
- package/dist/components/tree-select/index.d.ts +0 -2
- package/dist/components/tree-select/index.d.ts.map +0 -1
- package/dist/components/tree-select/index.js +0 -3
- package/dist/components/tree-select/index.js.map +0 -1
- package/dist/components/typography/index.d.ts +0 -2
- package/dist/components/typography/index.d.ts.map +0 -1
- package/dist/components/typography/index.js +0 -3
- package/dist/components/typography/index.js.map +0 -1
- package/dist/components/upload/index.d.ts +0 -2
- package/dist/components/upload/index.d.ts.map +0 -1
- package/dist/components/upload/index.js +0 -3
- package/dist/components/upload/index.js.map +0 -1
- package/dist/components/watermark/index.d.ts +0 -2
- package/dist/components/watermark/index.d.ts.map +0 -1
- package/dist/components/watermark/index.js +0 -3
- package/dist/components/watermark/index.js.map +0 -1
- package/dist/generated/antd-components.d.ts +0 -139
- package/dist/generated/antd-components.d.ts.map +0 -1
- package/dist/generated/antd-components.js +0 -72
- package/dist/generated/antd-components.js.map +0 -1
- package/dist/generated/icons.d.ts +0 -2
- package/dist/generated/icons.d.ts.map +0 -1
- package/dist/generated/icons.js +0 -3
- package/dist/generated/icons.js.map +0 -1
- package/dist/generated/pass-throughs.d.ts +0 -213
- package/dist/generated/pass-throughs.d.ts.map +0 -1
- package/dist/generated/pass-throughs.js +0 -75
- package/dist/generated/pass-throughs.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/pages/blog-layout/BlogLayout.d.ts +0 -22
- package/dist/pages/blog-layout/BlogLayout.d.ts.map +0 -1
- package/dist/pages/blog-layout/BlogLayout.js +0 -5
- package/dist/pages/blog-layout/BlogLayout.js.map +0 -1
- package/dist/pages/blog-layout/index.d.ts +0 -2
- package/dist/pages/blog-layout/index.d.ts.map +0 -1
- package/dist/pages/blog-layout/index.js +0 -2
- package/dist/pages/blog-layout/index.js.map +0 -1
- package/dist/pages/blog-layout.d.ts +0 -22
- package/dist/pages/blog-layout.d.ts.map +0 -1
- package/dist/pages/blog-layout.js +0 -11
- package/dist/pages/blog-layout.js.map +0 -1
- package/dist/pages/docs-shell/DocsShell.d.ts +0 -37
- package/dist/pages/docs-shell/DocsShell.d.ts.map +0 -1
- package/dist/pages/docs-shell/DocsShell.js +0 -8
- package/dist/pages/docs-shell/DocsShell.js.map +0 -1
- package/dist/pages/docs-shell/index.d.ts +0 -2
- package/dist/pages/docs-shell/index.d.ts.map +0 -1
- package/dist/pages/docs-shell/index.js +0 -2
- package/dist/pages/docs-shell/index.js.map +0 -1
- package/dist/pages/docs-shell.d.ts +0 -17
- package/dist/pages/docs-shell.d.ts.map +0 -1
- package/dist/pages/docs-shell.js +0 -11
- package/dist/pages/docs-shell.js.map +0 -1
- package/dist/pages/index.js.map +0 -1
- package/dist/products/ProductDot.d.ts +0 -7
- package/dist/products/ProductDot.d.ts.map +0 -1
- package/dist/products/ProductDot.js +0 -7
- package/dist/products/ProductDot.js.map +0 -1
- package/dist/products/index.d.ts +0 -22
- package/dist/products/index.d.ts.map +0 -1
- package/dist/products/index.js +0 -72
- package/dist/products/index.js.map +0 -1
- package/dist/prototype/index.d.ts +0 -2
- package/dist/prototype/index.d.ts.map +0 -1
- package/dist/prototype/index.js +0 -2
- package/dist/prototype/index.js.map +0 -1
- package/dist/prototype/landing/bits.d.ts +0 -29
- package/dist/prototype/landing/bits.d.ts.map +0 -1
- package/dist/prototype/landing/bits.js +0 -50
- package/dist/prototype/landing/bits.js.map +0 -1
- package/dist/prototype/landing/index.d.ts +0 -10
- package/dist/prototype/landing/index.d.ts.map +0 -1
- package/dist/prototype/landing/index.js +0 -7
- package/dist/prototype/landing/index.js.map +0 -1
- package/dist/prototype/landing/switcher.d.ts +0 -17
- package/dist/prototype/landing/switcher.d.ts.map +0 -1
- package/dist/prototype/landing/switcher.js +0 -71
- package/dist/prototype/landing/switcher.js.map +0 -1
- package/dist/prototype/landing/theme.d.ts +0 -44
- package/dist/prototype/landing/theme.d.ts.map +0 -1
- package/dist/prototype/landing/theme.js +0 -98
- package/dist/prototype/landing/theme.js.map +0 -1
- package/dist/prototype/landing/variant-a-specimen.d.ts +0 -3
- package/dist/prototype/landing/variant-a-specimen.d.ts.map +0 -1
- package/dist/prototype/landing/variant-a-specimen.js +0 -86
- package/dist/prototype/landing/variant-a-specimen.js.map +0 -1
- package/dist/prototype/landing/variant-b-ledger.d.ts +0 -3
- package/dist/prototype/landing/variant-b-ledger.d.ts.map +0 -1
- package/dist/prototype/landing/variant-b-ledger.js +0 -51
- package/dist/prototype/landing/variant-b-ledger.js.map +0 -1
- package/dist/prototype/landing/variant-c-workbench.d.ts +0 -3
- package/dist/prototype/landing/variant-c-workbench.d.ts.map +0 -1
- package/dist/prototype/landing/variant-c-workbench.js +0 -98
- package/dist/prototype/landing/variant-c-workbench.js.map +0 -1
- package/dist/provider/PrismLinkContext.d.ts +0 -19
- package/dist/provider/PrismLinkContext.d.ts.map +0 -1
- package/dist/provider/PrismLinkContext.js +0 -11
- package/dist/provider/PrismLinkContext.js.map +0 -1
- package/dist/provider/PrismProvider.d.ts +0 -9
- package/dist/provider/PrismProvider.d.ts.map +0 -1
- package/dist/provider/PrismProvider.js +0 -21
- package/dist/provider/PrismProvider.js.map +0 -1
- package/dist/provider/PrismThemeMode.d.ts +0 -17
- package/dist/provider/PrismThemeMode.d.ts.map +0 -1
- package/dist/provider/PrismThemeMode.js +0 -61
- package/dist/provider/PrismThemeMode.js.map +0 -1
- package/dist/provider/index.js.map +0 -1
- package/dist/provider/mergePrismTheme.d.ts +0 -12
- package/dist/provider/mergePrismTheme.d.ts.map +0 -1
- package/dist/provider/mergePrismTheme.js +0 -52
- package/dist/provider/mergePrismTheme.js.map +0 -1
- package/dist/theming/bake.d.ts +0 -24
- package/dist/theming/bake.d.ts.map +0 -1
- package/dist/theming/bake.js +0 -78
- package/dist/theming/bake.js.map +0 -1
- package/dist/theming/bootScript.d.ts +0 -9
- package/dist/theming/bootScript.d.ts.map +0 -1
- package/dist/theming/bootScript.js +0 -27
- package/dist/theming/bootScript.js.map +0 -1
- package/dist/theming/index.js.map +0 -1
- package/dist/theming/storage.d.ts +0 -5
- package/dist/theming/storage.d.ts.map +0 -1
- package/dist/theming/storage.js +0 -11
- package/dist/theming/storage.js.map +0 -1
- package/dist/wrapped-registry.d.ts +0 -55
- package/dist/wrapped-registry.d.ts.map +0 -1
- package/dist/wrapped-registry.js +0 -160
- package/dist/wrapped-registry.js.map +0 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Menu } from 'lucide-react';
|
|
4
|
+
import { Fragment, useState } from 'react';
|
|
5
|
+
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '../../components/ui/breadcrumb';
|
|
6
|
+
import { Button } from '../../components/ui/button';
|
|
7
|
+
import { Dialog, DialogContent, DialogTitle } from '../../components/ui/dialog';
|
|
8
|
+
import { Separator } from '../../components/ui/separator';
|
|
9
|
+
/**
|
|
10
|
+
* An application shell.
|
|
11
|
+
*
|
|
12
|
+
* It owns the frame every application screen repeats: a fixed rail from the
|
|
13
|
+
* `lg` breakpoint up, a top bar with a breadcrumb trail and actions, and a
|
|
14
|
+
* left-anchored Dialog sheet that carries the same navigation on narrow
|
|
15
|
+
* screens. The navigation and the content are slots, so the app keeps its own
|
|
16
|
+
* links, router and data. The block fetches nothing and imports no router.
|
|
17
|
+
*/
|
|
18
|
+
export function AppShell01({ navigation, navigationLabel, brand, breadcrumbs, actions, railHeader, railFooter, children, }) {
|
|
19
|
+
const [navOpen, setNavOpen] = useState(false);
|
|
20
|
+
return (_jsxs("div", { className: "bg-background text-foreground flex min-h-svh w-full", children: [_jsxs("aside", { className: "border-border hidden w-64 shrink-0 flex-col border-r lg:flex", children: [brand ? _jsx("div", { className: "flex h-14 items-center px-4", children: brand }) : null, _jsx(Separator, {}), railHeader ? _jsx("div", { className: "p-4", children: railHeader }) : null, _jsx("nav", { "aria-label": navigationLabel, className: "flex-1 overflow-y-auto p-4", children: navigation }), railFooter ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx("div", { className: "p-4", children: railFooter })] })) : null] }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsxs("header", { className: "border-border flex h-14 items-center gap-3 border-b px-4", children: [_jsxs(Dialog, { open: navOpen, onOpenChange: setNavOpen, children: [_jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "lg:hidden", "aria-label": navigationLabel, onClick: () => setNavOpen(true), children: _jsx(Menu, { className: "size-5" }) }), _jsxs(DialogContent, { side: "left", className: "w-72 gap-0 p-0", children: [_jsx(DialogTitle, { className: "sr-only", children: navigationLabel }), _jsxs("div", { className: "flex h-full flex-col p-4", children: [brand ? _jsx("div", { className: "mb-4", children: brand }) : null, railHeader ? _jsx("div", { className: "mb-4", children: railHeader }) : null, _jsx("nav", { "aria-label": navigationLabel, className: "flex-1 overflow-y-auto", children: navigation }), railFooter ? _jsx("div", { className: "mt-4", children: railFooter }) : null] })] })] }), breadcrumbs?.length ? (_jsx(Breadcrumb, { children: _jsx(BreadcrumbList, { children: breadcrumbs.map((crumb, index) => {
|
|
21
|
+
const last = index === breadcrumbs.length - 1;
|
|
22
|
+
return (
|
|
23
|
+
// Positional, for the same reason as the other blocks.
|
|
24
|
+
_jsxs(Fragment, { children: [index > 0 ? _jsx(BreadcrumbSeparator, {}) : null, _jsx(BreadcrumbItem, { children: last || !crumb.href ? (_jsx(BreadcrumbPage, { children: crumb.label })) : (_jsx(BreadcrumbLink, { href: crumb.href, children: crumb.label })) })] }, index));
|
|
25
|
+
}) }) })) : null, _jsx("div", { className: "ml-auto flex items-center gap-2", children: actions })] }), _jsx("main", { className: "flex-1 p-4 lg:p-6", children: children })] })] }));
|
|
26
|
+
}
|
|
27
|
+
export default AppShell01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/app-shell-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AppShell01, default } from './app-shell';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { FormEvent, ReactNode } from 'react';
|
|
2
|
+
export type AuthFormField = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
type?: 'text' | 'email' | 'password';
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
autoComplete?: string;
|
|
8
|
+
value?: string;
|
|
9
|
+
defaultValue?: string;
|
|
10
|
+
onChange?: (value: string) => void;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
description?: string;
|
|
14
|
+
};
|
|
15
|
+
export type AuthFormRemember = {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
checked?: boolean;
|
|
19
|
+
defaultChecked?: boolean;
|
|
20
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type AuthForm01Props = {
|
|
24
|
+
title: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
/** The credential fields, in order. */
|
|
27
|
+
fields: AuthFormField[];
|
|
28
|
+
/** An error message shown above the fields and marked on each control. */
|
|
29
|
+
error?: string;
|
|
30
|
+
/** A remember-me row under the fields. */
|
|
31
|
+
remember?: AuthFormRemember;
|
|
32
|
+
/** The submit button label. */
|
|
33
|
+
submitLabel: string;
|
|
34
|
+
/** The label shown while `pending` is true. Falls back to `submitLabel`. */
|
|
35
|
+
pendingLabel?: string;
|
|
36
|
+
/** Disables the submit control while a request is in flight. */
|
|
37
|
+
pending?: boolean;
|
|
38
|
+
onSubmit?: (event: FormEvent<HTMLFormElement>) => void;
|
|
39
|
+
/** A row under the submit button, e.g. a link to another screen. */
|
|
40
|
+
footer?: ReactNode;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* A sign-in card.
|
|
44
|
+
*
|
|
45
|
+
* The block renders the card, the labelled fields, the remember row and the
|
|
46
|
+
* submit control. It owns no credentials and no request: every field value and
|
|
47
|
+
* the submit handler come from the consumer, and the error line is a prop so
|
|
48
|
+
* the consumer's validation decides when it appears. Every string is a prop.
|
|
49
|
+
*/
|
|
50
|
+
export declare function AuthForm01({ title, description, fields, error, remember, submitLabel, pendingLabel, pending, onSubmit, footer, }: AuthForm01Props): import("react").JSX.Element;
|
|
51
|
+
export default AuthForm01;
|
|
52
|
+
//# sourceMappingURL=auth-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-form.d.ts","sourceRoot":"","sources":["../../../src/blocks/auth-form-01/auth-form.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAqBjD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IACtD,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAe,EACf,QAAQ,EACR,MAAM,GACP,EAAE,eAAe,+BAmEjB;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { CircleAlert } from 'lucide-react';
|
|
4
|
+
import { Alert, AlertDescription } from '../../components/ui/alert';
|
|
5
|
+
import { Button } from '../../components/ui/button';
|
|
6
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '../../components/ui/card';
|
|
7
|
+
import { Checkbox } from '../../components/ui/checkbox';
|
|
8
|
+
import { Field, FieldDescription, FieldGroup, FieldLabel, } from '../../components/ui/field';
|
|
9
|
+
import { Input } from '../../components/ui/input';
|
|
10
|
+
/**
|
|
11
|
+
* A sign-in card.
|
|
12
|
+
*
|
|
13
|
+
* The block renders the card, the labelled fields, the remember row and the
|
|
14
|
+
* submit control. It owns no credentials and no request: every field value and
|
|
15
|
+
* the submit handler come from the consumer, and the error line is a prop so
|
|
16
|
+
* the consumer's validation decides when it appears. Every string is a prop.
|
|
17
|
+
*/
|
|
18
|
+
export function AuthForm01({ title, description, fields, error, remember, submitLabel, pendingLabel, pending = false, onSubmit, footer, }) {
|
|
19
|
+
return (_jsx("form", { onSubmit: onSubmit, className: "w-full", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: title }), description ? _jsx(CardDescription, { children: description }) : null] }), _jsxs(CardContent, { className: "flex flex-col gap-4", children: [error ? (_jsxs(Alert, { variant: "destructive", children: [_jsx(CircleAlert, {}), _jsx(AlertDescription, { children: error })] })) : null, _jsx(FieldGroup, { children: fields.map((field) => (_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: field.id, children: field.label }), _jsx(Input, { id: field.id, type: field.type ?? 'text', placeholder: field.placeholder, autoComplete: field.autoComplete, value: field.value, defaultValue: field.defaultValue, onChange: field.onChange
|
|
20
|
+
? (event) => field.onChange?.(event.target.value)
|
|
21
|
+
: undefined, required: field.required, disabled: field.disabled, "aria-invalid": error ? true : undefined }), field.description ? (_jsx(FieldDescription, { children: field.description })) : null] }, field.id))) }), remember ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Checkbox, { id: remember.id, checked: remember.checked, defaultChecked: remember.defaultChecked, onCheckedChange: remember.onCheckedChange, disabled: remember.disabled }), _jsx(FieldLabel, { htmlFor: remember.id, children: remember.label })] })) : null] }), _jsxs(CardFooter, { className: "flex-col gap-3", children: [_jsx(Button, { type: "submit", className: "w-full", disabled: pending, children: pending ? (pendingLabel ?? submitLabel) : submitLabel }), footer] })] }) }));
|
|
22
|
+
}
|
|
23
|
+
export default AuthForm01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/auth-form-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AuthForm01, default } from './auth-form';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type HeadingLevel } from '../../components/ui/section';
|
|
2
|
+
export type Cta01Props = {
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
action?: {
|
|
6
|
+
label: string;
|
|
7
|
+
href?: string;
|
|
8
|
+
variant?: 'default' | 'secondary' | 'outline';
|
|
9
|
+
};
|
|
10
|
+
/** Heading level for the headline. See `HeadingLevel`. */
|
|
11
|
+
headingLevel?: HeadingLevel;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* A closing call to action on a filled primary surface.
|
|
15
|
+
*
|
|
16
|
+
* The copy and the action are props. It previously shipped the catalog's own
|
|
17
|
+
* pitch ("Start with one block, keep the tokens") and a hardcoded "Browse the
|
|
18
|
+
* catalog" button, both of which described the library rather than whatever
|
|
19
|
+
* product installed the block.
|
|
20
|
+
*/
|
|
21
|
+
export declare function Cta01({ title, description, action, headingLevel }: Cta01Props): import("react").JSX.Element;
|
|
22
|
+
export default Cta01;
|
|
23
|
+
//# sourceMappingURL=cta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cta.d.ts","sourceRoot":"","sources":["../../../src/blocks/cta-01/cta.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAExE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;KAAE,CAAA;IACxF,0DAA0D;IAC1D,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAmB,EAAE,EAAE,UAAU,+BAsCpF;AAED,eAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowRight } from 'lucide-react';
|
|
3
|
+
import { Button } from '../../components/ui/button';
|
|
4
|
+
import { Section } from '../../components/ui/section';
|
|
5
|
+
/**
|
|
6
|
+
* A closing call to action on a filled primary surface.
|
|
7
|
+
*
|
|
8
|
+
* The copy and the action are props. It previously shipped the catalog's own
|
|
9
|
+
* pitch ("Start with one block, keep the tokens") and a hardcoded "Browse the
|
|
10
|
+
* catalog" button, both of which described the library rather than whatever
|
|
11
|
+
* product installed the block.
|
|
12
|
+
*/
|
|
13
|
+
export function Cta01({ title, description, action, headingLevel = 'h2' }) {
|
|
14
|
+
/*
|
|
15
|
+
* The same mechanism `SectionHeading` uses for its own `as` prop, which this
|
|
16
|
+
* block cannot borrow: its copy sits on a filled `bg-primary` surface, where
|
|
17
|
+
* `SectionHeading`'s muted-surface description colour and `gap-4` would be
|
|
18
|
+
* wrong. So the tag is resolved here and the classes stay surface-specific
|
|
19
|
+
* rather than the heading level being the reason the markup stays hardcoded.
|
|
20
|
+
*/
|
|
21
|
+
const Heading = headingLevel;
|
|
22
|
+
return (_jsx(Section, { className: "py-20", children: _jsxs("div", { className: "bg-primary text-primary-foreground relative overflow-hidden rounded-2xl px-8 py-16 text-center", children: [_jsx("div", { "aria-hidden": true, className: "from-primary-foreground/15 pointer-events-none absolute inset-0 bg-gradient-to-tr to-transparent" }), _jsxs("div", { className: "relative flex flex-col items-center gap-6", children: [_jsx(Heading, { className: "max-w-2xl text-3xl font-semibold tracking-tight text-balance sm:text-4xl", children: title }), description ? (_jsx("p", { className: "max-w-xl text-lg text-pretty opacity-90", children: description })) : null, action ? (_jsxs(Button, { size: "lg", variant: action.variant ?? 'secondary', className: "group", children: [action.label, _jsx(ArrowRight, { className: "motion-safe:transition-transform size-4 group-hover:translate-x-0.5" })] })) : null] })] }) }));
|
|
23
|
+
}
|
|
24
|
+
export default Cta01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/cta-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Cta01, default } from './cta';
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** One row of data. Identity comes from `getRowId`, not from the shape. */
|
|
3
|
+
export type DataTableRow = Record<string, unknown>;
|
|
4
|
+
export type DataTableColumn = {
|
|
5
|
+
/** Stable identifier, used for keys and the visibility menu. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** The column heading. */
|
|
8
|
+
header: ReactNode;
|
|
9
|
+
/** Renders the cell for one row. */
|
|
10
|
+
cell: (row: DataTableRow) => ReactNode;
|
|
11
|
+
/** A plain-text name for the visibility menu. Falls back to `id`. */
|
|
12
|
+
label?: string;
|
|
13
|
+
/** Layout classes, for alignment or a fixed width. */
|
|
14
|
+
className?: string;
|
|
15
|
+
};
|
|
16
|
+
export type DataTableFilterOption = {
|
|
17
|
+
label: string;
|
|
18
|
+
value: string;
|
|
19
|
+
};
|
|
20
|
+
export type DataTableFilter = {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
options: DataTableFilterOption[];
|
|
24
|
+
};
|
|
25
|
+
export type DataTableRowAction = {
|
|
26
|
+
label: string;
|
|
27
|
+
variant?: 'default' | 'destructive';
|
|
28
|
+
onSelect?: () => void;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Every string the block renders. Required because the block ships no copy of
|
|
32
|
+
* its own: a control hint, a selection summary and an empty-state line are the
|
|
33
|
+
* consumer's to write.
|
|
34
|
+
*/
|
|
35
|
+
export type DataTable01Labels = {
|
|
36
|
+
/** Search field placeholder and accessible name. */
|
|
37
|
+
search: string;
|
|
38
|
+
/** The filters trigger. */
|
|
39
|
+
filters: string;
|
|
40
|
+
/** Clears every active filter. */
|
|
41
|
+
reset: string;
|
|
42
|
+
/** Headings for the column chooser. */
|
|
43
|
+
columns: string;
|
|
44
|
+
viewColumns: string;
|
|
45
|
+
selectAll: string;
|
|
46
|
+
selectRow: string;
|
|
47
|
+
rowActions: string;
|
|
48
|
+
previous: string;
|
|
49
|
+
next: string;
|
|
50
|
+
/** Accessible name for one page control. */
|
|
51
|
+
page: (page: number) => string;
|
|
52
|
+
/** The selection summary. */
|
|
53
|
+
selectedCount: (count: number) => string;
|
|
54
|
+
/** Shown in the body when `rows` is empty and `emptyMessage` is not set. */
|
|
55
|
+
empty: string;
|
|
56
|
+
};
|
|
57
|
+
export type DataTable01Props = {
|
|
58
|
+
title?: ReactNode;
|
|
59
|
+
description?: ReactNode;
|
|
60
|
+
columns: DataTableColumn[];
|
|
61
|
+
/** The rows for the current page. The block renders them; it never fetches. */
|
|
62
|
+
rows: DataTableRow[];
|
|
63
|
+
/** Returns a stable identity for a row. */
|
|
64
|
+
getRowId: (row: DataTableRow) => string;
|
|
65
|
+
/** Names the table for assistive technology when no heading does. */
|
|
66
|
+
caption?: ReactNode;
|
|
67
|
+
/** Adds the selection column and the selection summary. */
|
|
68
|
+
selectable?: boolean;
|
|
69
|
+
selectedIds?: string[];
|
|
70
|
+
defaultSelectedIds?: string[];
|
|
71
|
+
onSelectedIdsChange?: (ids: string[]) => void;
|
|
72
|
+
searchValue?: string;
|
|
73
|
+
onSearchChange?: (value: string) => void;
|
|
74
|
+
filters?: DataTableFilter[];
|
|
75
|
+
filterValues?: Record<string, string | undefined>;
|
|
76
|
+
onFilterChange?: (id: string, value: string | undefined) => void;
|
|
77
|
+
/** The current page, 1-based. */
|
|
78
|
+
page?: number;
|
|
79
|
+
defaultPage?: number;
|
|
80
|
+
/** How many pages exist. At least 1. */
|
|
81
|
+
pageCount: number;
|
|
82
|
+
onPageChange?: (page: number) => void;
|
|
83
|
+
/** The per-row action menu. Return an empty array to omit the menu. */
|
|
84
|
+
rowActions?: (row: DataTableRow) => DataTableRowAction[];
|
|
85
|
+
/** Controls rendered at the end of the toolbar, e.g. a create Button. */
|
|
86
|
+
toolbarActions?: ReactNode;
|
|
87
|
+
/** Replaces the fallback empty line. */
|
|
88
|
+
emptyMessage?: ReactNode;
|
|
89
|
+
labels: DataTable01Labels;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* A table section with a toolbar, filters, row selection and pagination.
|
|
93
|
+
*
|
|
94
|
+
* The block renders exactly the rows it is given for the current page and
|
|
95
|
+
* reports every interaction through a callback. It performs no filtering,
|
|
96
|
+
* sorting or fetching of its own: the page, the search text, the filter values
|
|
97
|
+
* and the selection are the consumer's state, so a server-rendered page and a
|
|
98
|
+
* client data layer can each drive it. Every label is a prop.
|
|
99
|
+
*/
|
|
100
|
+
export declare function DataTable01({ title, description, columns, rows, getRowId, caption, selectable, selectedIds, defaultSelectedIds, onSelectedIdsChange, searchValue, onSearchChange, filters, filterValues, onFilterChange, page: pageProp, defaultPage, pageCount, onPageChange, rowActions, toolbarActions, emptyMessage, labels, }: DataTable01Props): import("react").JSX.Element;
|
|
101
|
+
export default DataTable01;
|
|
102
|
+
//# sourceMappingURL=data-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/blocks/data-table-01/data-table.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AA0B1D,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,MAAM,EAAE,SAAS,CAAA;IACjB,oCAAoC;IACpC,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,SAAS,CAAA;IACtC,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,qBAAqB,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9B,6BAA6B;IAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACxC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,+EAA+E;IAC/E,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,CAAA;IACvC,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACjD,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAChE,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,kBAAkB,EAAE,CAAA;IACxD,yEAAyE;IACzE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,wCAAwC;IACxC,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,OAAO,EACP,YAAY,EACZ,cAAc,EACd,IAAI,EAAE,QAAQ,EACd,WAAe,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,MAAM,GACP,EAAE,gBAAgB,+BA2SlB;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown, ListFilter, MoreHorizontal, Search } from 'lucide-react';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { Button } from '../../components/ui/button';
|
|
6
|
+
import { Checkbox } from '../../components/ui/checkbox';
|
|
7
|
+
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../../components/ui/dropdown-menu';
|
|
8
|
+
import { Input } from '../../components/ui/input';
|
|
9
|
+
import { Pagination, PaginationContent, PaginationItem } from '../../components/ui/pagination';
|
|
10
|
+
import { Popover, PopoverContent, PopoverTrigger } from '../../components/ui/popover';
|
|
11
|
+
import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from '../../components/ui/table';
|
|
12
|
+
/** The page numbers to show, with `ellipsis` where a run is held back. */
|
|
13
|
+
function pageWindow(page, pageCount) {
|
|
14
|
+
if (pageCount <= 7) {
|
|
15
|
+
return Array.from({ length: pageCount }, (_, index) => index + 1);
|
|
16
|
+
}
|
|
17
|
+
const pages = [1];
|
|
18
|
+
const start = Math.max(2, page - 1);
|
|
19
|
+
const end = Math.min(pageCount - 1, page + 1);
|
|
20
|
+
if (start > 2)
|
|
21
|
+
pages.push('ellipsis');
|
|
22
|
+
for (let value = start; value <= end; value += 1)
|
|
23
|
+
pages.push(value);
|
|
24
|
+
if (end < pageCount - 1)
|
|
25
|
+
pages.push('ellipsis');
|
|
26
|
+
pages.push(pageCount);
|
|
27
|
+
return pages;
|
|
28
|
+
}
|
|
29
|
+
function RowMenu({ actions, label }) {
|
|
30
|
+
if (!actions.length)
|
|
31
|
+
return null;
|
|
32
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { "aria-label": label, className: "size-8 p-0", children: _jsx(MoreHorizontal, { className: "size-4" }) }), _jsx(DropdownMenuContent, { align: "end", children: actions.map((action, index) => (
|
|
33
|
+
// Positional: an action label is display content and two may repeat.
|
|
34
|
+
_jsx(DropdownMenuItem, { variant: action.variant, onClick: action.onSelect, children: action.label }, index))) })] }));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A table section with a toolbar, filters, row selection and pagination.
|
|
38
|
+
*
|
|
39
|
+
* The block renders exactly the rows it is given for the current page and
|
|
40
|
+
* reports every interaction through a callback. It performs no filtering,
|
|
41
|
+
* sorting or fetching of its own: the page, the search text, the filter values
|
|
42
|
+
* and the selection are the consumer's state, so a server-rendered page and a
|
|
43
|
+
* client data layer can each drive it. Every label is a prop.
|
|
44
|
+
*/
|
|
45
|
+
export function DataTable01({ title, description, columns, rows, getRowId, caption, selectable = false, selectedIds, defaultSelectedIds, onSelectedIdsChange, searchValue, onSearchChange, filters, filterValues, onFilterChange, page: pageProp, defaultPage = 1, pageCount, onPageChange, rowActions, toolbarActions, emptyMessage, labels, }) {
|
|
46
|
+
const [internalSelected, setInternalSelected] = useState(defaultSelectedIds ?? []);
|
|
47
|
+
const [internalPage, setInternalPage] = useState(defaultPage);
|
|
48
|
+
const [internalSearch, setInternalSearch] = useState('');
|
|
49
|
+
const [internalFilters, setInternalFilters] = useState({});
|
|
50
|
+
const [hiddenColumns, setHiddenColumns] = useState([]);
|
|
51
|
+
const selected = selectedIds ?? internalSelected;
|
|
52
|
+
const page = pageProp ?? internalPage;
|
|
53
|
+
const search = searchValue ?? internalSearch;
|
|
54
|
+
const activeFilters = filterValues ?? internalFilters;
|
|
55
|
+
const clampPage = (value) => Math.min(Math.max(1, value), Math.max(1, pageCount));
|
|
56
|
+
const currentPage = clampPage(page);
|
|
57
|
+
const visibleColumns = columns.filter((column) => !hiddenColumns.includes(column.id));
|
|
58
|
+
const hasRowActions = Boolean(rowActions);
|
|
59
|
+
const columnCount = (selectable ? 1 : 0) + visibleColumns.length + (hasRowActions ? 1 : 0);
|
|
60
|
+
const rowIds = rows.map(getRowId);
|
|
61
|
+
const allSelected = rowIds.length > 0 && rowIds.every((id) => selected.includes(id));
|
|
62
|
+
const someSelected = rowIds.some((id) => selected.includes(id));
|
|
63
|
+
function changeSelection(ids) {
|
|
64
|
+
if (selectedIds === undefined)
|
|
65
|
+
setInternalSelected(ids);
|
|
66
|
+
onSelectedIdsChange?.(ids);
|
|
67
|
+
}
|
|
68
|
+
function toggleAll(checked) {
|
|
69
|
+
if (checked) {
|
|
70
|
+
changeSelection([...new Set([...selected, ...rowIds])]);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
changeSelection(selected.filter((id) => !rowIds.includes(id)));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function toggleRow(id, checked) {
|
|
77
|
+
changeSelection(checked ? [...selected, id] : selected.filter((item) => item !== id));
|
|
78
|
+
}
|
|
79
|
+
function changeSearch(value) {
|
|
80
|
+
if (searchValue === undefined)
|
|
81
|
+
setInternalSearch(value);
|
|
82
|
+
onSearchChange?.(value);
|
|
83
|
+
}
|
|
84
|
+
function changeFilter(id, value) {
|
|
85
|
+
if (filterValues === undefined) {
|
|
86
|
+
setInternalFilters((previous) => ({ ...previous, [id]: value }));
|
|
87
|
+
}
|
|
88
|
+
onFilterChange?.(id, value);
|
|
89
|
+
}
|
|
90
|
+
function resetFilters() {
|
|
91
|
+
if (filterValues === undefined)
|
|
92
|
+
setInternalFilters({});
|
|
93
|
+
for (const filter of filters ?? [])
|
|
94
|
+
onFilterChange?.(filter.id, undefined);
|
|
95
|
+
}
|
|
96
|
+
function changePage(next) {
|
|
97
|
+
const clamped = clampPage(next);
|
|
98
|
+
if (pageProp === undefined)
|
|
99
|
+
setInternalPage(clamped);
|
|
100
|
+
onPageChange?.(clamped);
|
|
101
|
+
}
|
|
102
|
+
function toggleColumn(id, visible) {
|
|
103
|
+
setHiddenColumns((previous) => visible ? previous.filter((item) => item !== id) : [...previous, id]);
|
|
104
|
+
}
|
|
105
|
+
const activeFilterCount = Object.values(activeFilters).filter(Boolean).length;
|
|
106
|
+
return (_jsxs("div", { className: "flex flex-col gap-4", children: [title || description ? (_jsxs("div", { className: "flex flex-col gap-1", children: [title ? _jsx("h2", { className: "text-lg font-semibold tracking-tight", children: title }) : null, description ? (_jsx("p", { className: "text-muted-foreground text-sm", children: description })) : null] })) : null, _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2" }), _jsx(Input, { value: search, onChange: (event) => changeSearch(event.target.value), placeholder: labels.search, "aria-label": labels.search, className: "h-9 w-56 pl-8" })] }), filters?.length ? (_jsxs(Popover, { children: [_jsxs(PopoverTrigger, { children: [_jsx(ListFilter, { className: "size-4" }), labels.filters, activeFilterCount > 0 ? (_jsx("span", { className: "bg-primary text-primary-foreground rounded-full px-1.5 text-xs", children: activeFilterCount })) : null] }), _jsxs(PopoverContent, { align: "start", className: "flex w-64 flex-col gap-4", children: [filters.map((filter) => (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("span", { className: "text-sm font-medium", children: filter.label }), _jsx("div", { className: "flex flex-wrap gap-1.5", children: filter.options.map((option) => {
|
|
107
|
+
const active = activeFilters[filter.id] === option.value;
|
|
108
|
+
return (_jsx(Button, { type: "button", size: "sm", variant: active ? 'default' : 'outline', onClick: () => changeFilter(filter.id, active ? undefined : option.value), children: option.label }, option.value));
|
|
109
|
+
}) })] }, filter.id))), _jsx(Button, { type: "button", variant: "ghost", size: "sm", disabled: activeFilterCount === 0, onClick: resetFilters, children: labels.reset })] })] })) : null] }), _jsxs("div", { className: "flex items-center gap-2", children: [toolbarActions, _jsxs(DropdownMenu, { children: [_jsxs(DropdownMenuTrigger, { children: [labels.viewColumns, _jsx(ChevronDown, { className: "size-4" })] }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuLabel, { children: labels.columns }), _jsx(DropdownMenuSeparator, {}), columns.map((column) => (_jsx(DropdownMenuCheckboxItem, { checked: !hiddenColumns.includes(column.id), closeOnClick: false, onCheckedChange: (checked) => toggleColumn(column.id, checked), children: column.label ?? column.id }, column.id)))] })] })] })] }), _jsx("div", { className: "border-border overflow-hidden rounded-xl border", children: _jsxs(Table, { children: [caption ? _jsx(TableCaption, { children: caption }) : null, _jsx(TableHeader, { children: _jsxs(TableRow, { children: [selectable ? (_jsx(TableHead, { className: "w-10", children: _jsx(Checkbox, { checked: allSelected, indeterminate: !allSelected && someSelected, onCheckedChange: toggleAll, "aria-label": labels.selectAll }) })) : null, visibleColumns.map((column) => (_jsx(TableHead, { className: column.className, children: column.header }, column.id))), hasRowActions ? (_jsx(TableHead, { className: "w-10", children: _jsx("span", { className: "sr-only", children: labels.rowActions }) })) : null] }) }), _jsx(TableBody, { children: rows.length ? (rows.map((row) => {
|
|
110
|
+
const id = getRowId(row);
|
|
111
|
+
const isSelected = selected.includes(id);
|
|
112
|
+
const actions = rowActions?.(row) ?? [];
|
|
113
|
+
return (_jsxs(TableRow, { "data-state": isSelected ? 'selected' : undefined, children: [selectable ? (_jsx(TableCell, { children: _jsx(Checkbox, { checked: isSelected, onCheckedChange: (checked) => toggleRow(id, checked), "aria-label": labels.selectRow }) })) : null, visibleColumns.map((column) => (_jsx(TableCell, { className: column.className, children: column.cell(row) }, column.id))), hasRowActions ? (_jsx(TableCell, { className: "text-right", children: _jsx(RowMenu, { actions: actions, label: labels.rowActions }) })) : null] }, id));
|
|
114
|
+
})) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: columnCount, className: "text-muted-foreground h-24 text-center", children: emptyMessage ?? labels.empty }) })) })] }) }), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [selectable ? (_jsx("span", { className: "text-muted-foreground text-sm", children: labels.selectedCount(selected.length) })) : (_jsx("span", {})), _jsx(Pagination, { className: "mx-0 w-auto justify-end", children: _jsxs(PaginationContent, { children: [_jsx(PaginationItem, { children: _jsx(Button, { type: "button", variant: "ghost", size: "sm", disabled: currentPage <= 1, "aria-label": labels.previous, onClick: () => changePage(currentPage - 1), children: labels.previous }) }), pageWindow(currentPage, Math.max(1, pageCount)).map((item, index) => item === 'ellipsis' ? (_jsx(PaginationItem, { children: _jsx("span", { "aria-hidden": "true", className: "text-muted-foreground px-2", children: "..." }) }, `ellipsis-${index}`)) : (_jsx(PaginationItem, { children: _jsx(Button, { type: "button", variant: item === currentPage ? 'outline' : 'ghost', size: "icon", "aria-label": labels.page(item), "aria-current": item === currentPage ? 'page' : undefined, onClick: () => changePage(item), children: item }) }, item))), _jsx(PaginationItem, { children: _jsx(Button, { type: "button", variant: "ghost", size: "sm", disabled: currentPage >= Math.max(1, pageCount), "aria-label": labels.next, onClick: () => changePage(currentPage + 1), children: labels.next }) })] }) })] })] }));
|
|
115
|
+
}
|
|
116
|
+
export default DataTable01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/data-table-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DataTable01, default } from './data-table';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LucideIcon } from 'lucide-react';
|
|
2
|
+
import { type HeadingLevel } from '../../components/ui/section';
|
|
3
|
+
export type Feature = {
|
|
4
|
+
icon: LucideIcon;
|
|
5
|
+
title: string;
|
|
6
|
+
body: string;
|
|
7
|
+
};
|
|
8
|
+
export type FeatureGrid01Props = {
|
|
9
|
+
eyebrow?: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
features: Feature[];
|
|
13
|
+
/** `icon` tiles read well at 2-up; `bare` leans on the type alone. */
|
|
14
|
+
variant?: 'icon' | 'bare';
|
|
15
|
+
/** Heading level for the section title. See `HeadingLevel`. */
|
|
16
|
+
headingLevel?: HeadingLevel;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* A grid of short feature blurbs.
|
|
20
|
+
*
|
|
21
|
+
* The feature list is a prop. It previously hardcoded the catalog's own selling
|
|
22
|
+
* points under the heading "Why this catalog", so an installed block argued for
|
|
23
|
+
* the library inside the consumer's product.
|
|
24
|
+
*/
|
|
25
|
+
export declare function FeatureGrid01({ eyebrow, title, description, features, variant, headingLevel, }: FeatureGrid01Props): import("react").JSX.Element;
|
|
26
|
+
export default FeatureGrid01;
|
|
27
|
+
//# sourceMappingURL=feature-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-grid.d.ts","sourceRoot":"","sources":["../../../src/blocks/feature-grid-01/feature-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG9C,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAExF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAgB,EAChB,YAAmB,GACpB,EAAE,kBAAkB,+BA8BpB;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Card, CardDescription, CardHeader, CardTitle } from '../../components/ui/card';
|
|
3
|
+
import { Section, SectionHeading } from '../../components/ui/section';
|
|
4
|
+
/**
|
|
5
|
+
* A grid of short feature blurbs.
|
|
6
|
+
*
|
|
7
|
+
* The feature list is a prop. It previously hardcoded the catalog's own selling
|
|
8
|
+
* points under the heading "Why this catalog", so an installed block argued for
|
|
9
|
+
* the library inside the consumer's product.
|
|
10
|
+
*/
|
|
11
|
+
export function FeatureGrid01({ eyebrow, title, description, features, variant = 'icon', headingLevel = 'h2', }) {
|
|
12
|
+
return (_jsxs(Section, { children: [title ? (_jsx(SectionHeading, { as: headingLevel, eyebrow: eyebrow, title: title, description: description, className: "mb-12" })) : null, _jsx("div", { className: "grid gap-6 sm:grid-cols-2", children: features.map((feature) => (_jsx(Card, { className: "gap-4 py-6", children: _jsxs(CardHeader, { children: [variant === 'icon' ? (_jsx("span", { className: "bg-accent text-accent-foreground mb-2 flex size-10 items-center justify-center rounded-lg", children: _jsx(feature.icon, { className: "size-5" }) })) : null, _jsx(CardTitle, { children: feature.title }), _jsx(CardDescription, { children: feature.body })] }) }, feature.title))) })] }));
|
|
13
|
+
}
|
|
14
|
+
export default FeatureGrid01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/feature-grid-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FeatureGrid01, default } from './feature-grid';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type HeadingLevel } from '../../components/ui/section';
|
|
2
|
+
export type HeroAction = {
|
|
3
|
+
label: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
variant?: 'default' | 'outline' | 'secondary' | 'ghost';
|
|
6
|
+
};
|
|
7
|
+
export type Hero01Props = {
|
|
8
|
+
/**
|
|
9
|
+
* Optional label above the headline. Intentionally has no default: an earlier
|
|
10
|
+
* version shipped a hardcoded "Now in open beta" pill, which meant every
|
|
11
|
+
* consumer who installed this block inherited a status badge making a claim
|
|
12
|
+
* about their product. Pass one if you mean it.
|
|
13
|
+
*/
|
|
14
|
+
eyebrow?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
actions?: HeroAction[];
|
|
18
|
+
/**
|
|
19
|
+
* Heading level for the title. Defaults to `h2` because a block is composed,
|
|
20
|
+
* not a page: it installs into a consumer's layout and renders
|
|
21
|
+
* inside catalog previews, so the surrounding document already owns the `h1`.
|
|
22
|
+
* A page that uses this block as its top-level heading opts in with
|
|
23
|
+
* `headingLevel="h1"`; a document that already names this section in its own
|
|
24
|
+
* heading passes one level deeper. See `HeadingLevel`.
|
|
25
|
+
*/
|
|
26
|
+
headingLevel?: HeadingLevel;
|
|
27
|
+
};
|
|
28
|
+
export declare function Hero01({ eyebrow, title, description, actions, headingLevel, }: Hero01Props): import("react").JSX.Element;
|
|
29
|
+
export default Hero01;
|
|
30
|
+
//# sourceMappingURL=hero.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/hero.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAExF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IACtB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAY,EACZ,YAAmB,GACpB,EAAE,WAAW,+BA2Cb;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowRight } from 'lucide-react';
|
|
3
|
+
import { Button } from '../../components/ui/button';
|
|
4
|
+
import { Section, SectionHeading } from '../../components/ui/section';
|
|
5
|
+
export function Hero01({ eyebrow, title, description, actions = [], headingLevel = 'h2', }) {
|
|
6
|
+
return (_jsxs(Section, { className: "relative overflow-hidden", children: [_jsx("div", { "aria-hidden": true, className: "from-primary/5 pointer-events-none absolute inset-0 -z-10 bg-gradient-to-b to-transparent" }), _jsxs("div", { className: "flex flex-col items-center gap-10 text-center", children: [eyebrow ? (_jsx("span", { className: "bg-muted text-muted-foreground rounded-full px-3 py-1 text-xs font-medium", children: eyebrow })) : null, _jsx(SectionHeading, { as: headingLevel, title: title, description: description }), actions.length ? (_jsx("div", { className: "flex flex-col gap-3 sm:flex-row", children: actions.map((action, index) => (
|
|
7
|
+
// Positional, for the same reason as `pricing-01`'s feature list:
|
|
8
|
+
// the label is display content, and two actions may share one.
|
|
9
|
+
// Safe here because the list is static and never reordered.
|
|
10
|
+
_jsxs(Button, { size: "lg", variant: action.variant ?? (index === 0 ? 'default' : 'outline'), className: "group", children: [action.label, index === 0 ? (_jsx(ArrowRight, { className: "motion-safe:transition-transform size-4 group-hover:translate-x-0.5" })) : null] }, index))) })) : null] })] }));
|
|
11
|
+
}
|
|
12
|
+
export default Hero01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/hero-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Hero01, default } from './hero';
|
package/dist/blocks/index.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Every Prism Block.
|
|
3
|
+
*
|
|
4
|
+
* A Block is a pre-composed, product-agnostic section: it accepts data and
|
|
5
|
+
* content as props and never fetches application data (ticket 07). The `-NN`
|
|
6
|
+
* suffix is the block-family variant ordinal.
|
|
7
|
+
*/
|
|
8
|
+
export { Hero01 } from './hero-01';
|
|
9
|
+
export { FeatureGrid01 } from './feature-grid-01';
|
|
10
|
+
export { Stats01 } from './stats-01';
|
|
11
|
+
export { Pricing01 } from './pricing-01';
|
|
12
|
+
export { Cta01 } from './cta-01';
|
|
13
|
+
export { PageHeader01 } from './page-header-01';
|
|
14
|
+
export { DataTable01 } from './data-table-01';
|
|
15
|
+
export { SettingsPanel01 } from './settings-panel-01';
|
|
16
|
+
export { AuthForm01 } from './auth-form-01';
|
|
17
|
+
export { AppShell01 } from './app-shell-01';
|
|
5
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
|