@stackframe/stack-ui 2.8.61 → 2.8.62
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/dist/components/action-dialog.js +130 -36
- package/dist/components/action-dialog.js.map +1 -0
- package/dist/components/brand-icons.js +413 -93
- package/dist/components/brand-icons.js.map +1 -0
- package/dist/components/browser-frame/index.js +63 -8
- package/dist/components/browser-frame/index.js.map +1 -0
- package/dist/components/copy-button.js +56 -17
- package/dist/components/copy-button.js.map +1 -0
- package/dist/components/copy-field.js +68 -12
- package/dist/components/copy-field.js.map +1 -0
- package/dist/components/data-table/cells.js +121 -50
- package/dist/components/data-table/cells.js.map +1 -0
- package/dist/components/data-table/column-header.js +62 -7
- package/dist/components/data-table/column-header.js.map +1 -0
- package/dist/components/data-table/data-table.js +263 -93
- package/dist/components/data-table/data-table.js.map +1 -0
- package/dist/components/data-table/faceted-filter.js +133 -25
- package/dist/components/data-table/faceted-filter.js.map +1 -0
- package/dist/components/data-table/index.js +41 -9
- package/dist/components/data-table/index.js.map +1 -0
- package/dist/components/data-table/pagination.js +89 -9
- package/dist/components/data-table/pagination.js.map +1 -0
- package/dist/components/data-table/toolbar-items.js +42 -4
- package/dist/components/data-table/toolbar-items.js.map +1 -0
- package/dist/components/data-table/toolbar.js +114 -44
- package/dist/components/data-table/toolbar.js.map +1 -0
- package/dist/components/data-table/utils.js +36 -4
- package/dist/components/data-table/utils.js.map +1 -0
- package/dist/components/data-table/view-options.js +70 -10
- package/dist/components/data-table/view-options.js.map +1 -0
- package/dist/components/simple-tooltip.js +45 -13
- package/dist/components/simple-tooltip.js.map +1 -0
- package/dist/components/ui/accordion.js +85 -10
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/alert.js +75 -17
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/aspect-ratio.js +43 -3
- package/dist/components/ui/aspect-ratio.js.map +1 -0
- package/dist/components/ui/avatar.js +79 -8
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.js +51 -17
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/breadcrumb.js +118 -15
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/button.js +98 -39
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.js +93 -39
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.js +97 -11
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.js +64 -7
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/collapsible.js +49 -5
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/command.js +147 -25
- package/dist/components/ui/command.js.map +1 -0
- package/dist/components/ui/context-menu.js +196 -24
- package/dist/components/ui/context-menu.js.map +1 -0
- package/dist/components/ui/dialog.js +151 -17
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown-menu.js +237 -55
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/form.js +142 -53
- package/dist/components/ui/form.js.map +1 -0
- package/dist/components/ui/hover-card.js +64 -8
- package/dist/components/ui/hover-card.js.map +1 -0
- package/dist/components/ui/inline-code.js +62 -25
- package/dist/components/ui/inline-code.js.map +1 -0
- package/dist/components/ui/input-otp.js +87 -14
- package/dist/components/ui/input-otp.js.map +1 -0
- package/dist/components/ui/input.js +86 -22
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.js +67 -9
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/menubar.js +224 -24
- package/dist/components/ui/menubar.js.map +1 -0
- package/dist/components/ui/navigation-menu.js +149 -20
- package/dist/components/ui/navigation-menu.js.map +1 -0
- package/dist/components/ui/password-input.js +79 -11
- package/dist/components/ui/password-input.js.map +1 -0
- package/dist/components/ui/popover.js +67 -9
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/progress.js +63 -6
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/radio-group.js +70 -10
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/resizable.js +78 -8
- package/dist/components/ui/resizable.js.map +1 -0
- package/dist/components/ui/scroll-area.js +75 -9
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.js +166 -20
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.js +61 -6
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.js +153 -27
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/skeleton.js +46 -5
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/slider.js +60 -6
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/spinner.js +36 -6
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.js +92 -21
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.js +117 -12
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.js +85 -9
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.js +47 -6
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toast.js +135 -25
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/toaster.js +49 -8
- package/dist/components/ui/toaster.js.map +1 -0
- package/dist/components/ui/toggle-group.js +78 -17
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle.js +73 -21
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.js +72 -9
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/components/ui/typography.js +69 -31
- package/dist/components/ui/typography.js.map +1 -0
- package/dist/components/ui/use-toast.js +151 -116
- package/dist/components/ui/use-toast.js.map +1 -0
- package/dist/esm/components/action-dialog.js +97 -0
- package/dist/esm/components/action-dialog.js.map +1 -0
- package/dist/esm/components/brand-icons.js +390 -0
- package/dist/esm/components/brand-icons.js.map +1 -0
- package/dist/esm/components/browser-frame/index.js +43 -0
- package/dist/esm/components/browser-frame/index.js.map +1 -0
- package/dist/esm/components/copy-button.js +35 -0
- package/dist/esm/components/copy-button.js.map +1 -0
- package/dist/esm/components/copy-field.js +44 -0
- package/dist/esm/components/copy-field.js.map +1 -0
- package/dist/esm/components/data-table/cells.js +88 -0
- package/dist/esm/components/data-table/cells.js.map +1 -0
- package/dist/esm/components/data-table/column-header.js +40 -0
- package/dist/esm/components/data-table/column-header.js.map +1 -0
- package/dist/esm/components/data-table/data-table.js +249 -0
- package/dist/esm/components/data-table/data-table.js.map +1 -0
- package/dist/esm/components/data-table/faceted-filter.js +117 -0
- package/dist/esm/components/data-table/faceted-filter.js.map +1 -0
- package/dist/esm/components/data-table/index.js +11 -0
- package/dist/esm/components/data-table/index.js.map +1 -0
- package/dist/esm/components/data-table/pagination.js +71 -0
- package/dist/esm/components/data-table/pagination.js.map +1 -0
- package/dist/esm/components/data-table/toolbar-items.js +18 -0
- package/dist/esm/components/data-table/toolbar-items.js.map +1 -0
- package/dist/esm/components/data-table/toolbar.js +92 -0
- package/dist/esm/components/data-table/toolbar.js.map +1 -0
- package/dist/esm/components/data-table/utils.js +12 -0
- package/dist/esm/components/data-table/utils.js.map +1 -0
- package/dist/esm/components/data-table/view-options.js +55 -0
- package/dist/esm/components/data-table/view-options.js.map +1 -0
- package/dist/esm/components/simple-tooltip.js +21 -0
- package/dist/esm/components/simple-tooltip.js.map +1 -0
- package/dist/esm/components/ui/accordion.js +52 -0
- package/dist/esm/components/ui/accordion.js.map +1 -0
- package/dist/esm/components/ui/alert.js +54 -0
- package/dist/esm/components/ui/alert.js.map +1 -0
- package/dist/esm/components/ui/aspect-ratio.js +10 -0
- package/dist/esm/components/ui/aspect-ratio.js.map +1 -0
- package/dist/esm/components/ui/avatar.js +47 -0
- package/dist/esm/components/ui/avatar.js.map +1 -0
- package/dist/esm/components/ui/badge.js +30 -0
- package/dist/esm/components/ui/badge.js.map +1 -0
- package/dist/esm/components/ui/breadcrumb.js +95 -0
- package/dist/esm/components/ui/breadcrumb.js.map +1 -0
- package/dist/esm/components/ui/button.js +79 -0
- package/dist/esm/components/ui/button.js.map +1 -0
- package/dist/esm/components/ui/calendar.js +72 -0
- package/dist/esm/components/ui/calendar.js.map +1 -0
- package/dist/esm/components/ui/card.js +72 -0
- package/dist/esm/components/ui/card.js.map +1 -0
- package/dist/esm/components/ui/checkbox.js +32 -0
- package/dist/esm/components/ui/checkbox.js.map +1 -0
- package/dist/esm/components/ui/collapsible.js +14 -0
- package/dist/esm/components/ui/collapsible.js.map +1 -0
- package/dist/esm/components/ui/command.js +119 -0
- package/dist/esm/components/ui/command.js.map +1 -0
- package/dist/esm/components/ui/context-menu.js +162 -0
- package/dist/esm/components/ui/context-menu.js.map +1 -0
- package/dist/esm/components/ui/dialog.js +114 -0
- package/dist/esm/components/ui/dialog.js.map +1 -0
- package/dist/esm/components/ui/dropdown-menu.js +200 -0
- package/dist/esm/components/ui/dropdown-menu.js.map +1 -0
- package/dist/esm/components/ui/form.js +118 -0
- package/dist/esm/components/ui/form.js.map +1 -0
- package/dist/esm/components/ui/hover-card.js +30 -0
- package/dist/esm/components/ui/hover-card.js.map +1 -0
- package/dist/esm/components/ui/inline-code.js +42 -0
- package/dist/esm/components/ui/inline-code.js.map +1 -0
- package/dist/esm/components/ui/input-otp.js +56 -0
- package/dist/esm/components/ui/input-otp.js.map +1 -0
- package/dist/esm/components/ui/input.js +57 -0
- package/dist/esm/components/ui/input.js.map +1 -0
- package/dist/esm/components/ui/label.js +35 -0
- package/dist/esm/components/ui/label.js.map +1 -0
- package/dist/esm/components/ui/menubar.js +192 -0
- package/dist/esm/components/ui/menubar.js.map +1 -0
- package/dist/esm/components/ui/navigation-menu.js +112 -0
- package/dist/esm/components/ui/navigation-menu.js.map +1 -0
- package/dist/esm/components/ui/password-input.js +58 -0
- package/dist/esm/components/ui/password-input.js.map +1 -0
- package/dist/esm/components/ui/popover.js +32 -0
- package/dist/esm/components/ui/popover.js.map +1 -0
- package/dist/esm/components/ui/progress.js +31 -0
- package/dist/esm/components/ui/progress.js.map +1 -0
- package/dist/esm/components/ui/radio-group.js +40 -0
- package/dist/esm/components/ui/radio-group.js.map +1 -0
- package/dist/esm/components/ui/resizable.js +43 -0
- package/dist/esm/components/ui/resizable.js.map +1 -0
- package/dist/esm/components/ui/scroll-area.js +43 -0
- package/dist/esm/components/ui/scroll-area.js.map +1 -0
- package/dist/esm/components/ui/select.js +135 -0
- package/dist/esm/components/ui/select.js.map +1 -0
- package/dist/esm/components/ui/separator.js +29 -0
- package/dist/esm/components/ui/separator.js.map +1 -0
- package/dist/esm/components/ui/sheet.js +120 -0
- package/dist/esm/components/ui/sheet.js.map +1 -0
- package/dist/esm/components/ui/skeleton.js +24 -0
- package/dist/esm/components/ui/skeleton.js.map +1 -0
- package/dist/esm/components/ui/slider.js +28 -0
- package/dist/esm/components/ui/slider.js.map +1 -0
- package/dist/esm/components/ui/spinner.js +13 -0
- package/dist/esm/components/ui/spinner.js.map +1 -0
- package/dist/esm/components/ui/switch.js +62 -0
- package/dist/esm/components/ui/switch.js.map +1 -0
- package/dist/esm/components/ui/table.js +93 -0
- package/dist/esm/components/ui/table.js.map +1 -0
- package/dist/esm/components/ui/tabs.js +52 -0
- package/dist/esm/components/ui/tabs.js.map +1 -0
- package/dist/esm/components/ui/textarea.js +24 -0
- package/dist/esm/components/ui/textarea.js.map +1 -0
- package/dist/esm/components/ui/toast.js +105 -0
- package/dist/esm/components/ui/toast.js.map +1 -0
- package/dist/esm/components/ui/toaster.js +34 -0
- package/dist/esm/components/ui/toaster.js.map +1 -0
- package/dist/esm/components/ui/toggle-group.js +48 -0
- package/dist/esm/components/ui/toggle-group.js.map +1 -0
- package/dist/esm/components/ui/toggle.js +43 -0
- package/dist/esm/components/ui/toggle.js.map +1 -0
- package/dist/esm/components/ui/tooltip.js +38 -0
- package/dist/esm/components/ui/tooltip.js.map +1 -0
- package/dist/esm/components/ui/typography.js +47 -0
- package/dist/esm/components/ui/typography.js.map +1 -0
- package/dist/esm/components/ui/use-toast.js +130 -0
- package/dist/esm/components/ui/use-toast.js.map +1 -0
- package/dist/esm/index.js +59 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/utils.js +10 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/dist/index.d.mts +967 -0
- package/dist/index.d.ts +967 -54
- package/dist/index.js +147 -53
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.js +34 -4
- package/dist/lib/utils.js.map +1 -0
- package/package.json +10 -5
- package/dist/components/action-dialog.d.ts +0 -28
- package/dist/components/action-dialog.d.ts.map +0 -1
- package/dist/components/brand-icons.d.ts +0 -43
- package/dist/components/brand-icons.d.ts.map +0 -1
- package/dist/components/browser-frame/index.d.ts +0 -10
- package/dist/components/browser-frame/index.d.ts.map +0 -1
- package/dist/components/copy-button.d.ts +0 -17
- package/dist/components/copy-button.d.ts.map +0 -1
- package/dist/components/copy-field.d.ts +0 -13
- package/dist/components/copy-field.d.ts.map +0 -1
- package/dist/components/data-table/cells.d.ts +0 -31
- package/dist/components/data-table/cells.d.ts.map +0 -1
- package/dist/components/data-table/column-header.d.ts +0 -8
- package/dist/components/data-table/column-header.d.ts.map +0 -1
- package/dist/components/data-table/data-table.d.ts +0 -36
- package/dist/components/data-table/data-table.d.ts.map +0 -1
- package/dist/components/data-table/faceted-filter.d.ts +0 -16
- package/dist/components/data-table/faceted-filter.d.ts.map +0 -1
- package/dist/components/data-table/index.d.ts +0 -10
- package/dist/components/data-table/index.d.ts.map +0 -1
- package/dist/components/data-table/pagination.d.ts +0 -7
- package/dist/components/data-table/pagination.d.ts.map +0 -1
- package/dist/components/data-table/toolbar-items.d.ts +0 -8
- package/dist/components/data-table/toolbar-items.d.ts.map +0 -1
- package/dist/components/data-table/toolbar.d.ts +0 -12
- package/dist/components/data-table/toolbar.d.ts.map +0 -1
- package/dist/components/data-table/utils.d.ts +0 -3
- package/dist/components/data-table/utils.d.ts.map +0 -1
- package/dist/components/data-table/view-options.d.ts +0 -7
- package/dist/components/data-table/view-options.d.ts.map +0 -1
- package/dist/components/simple-tooltip.d.ts +0 -9
- package/dist/components/simple-tooltip.d.ts.map +0 -1
- package/dist/components/ui/accordion.d.ts +0 -14
- package/dist/components/ui/accordion.d.ts.map +0 -1
- package/dist/components/ui/alert.d.ts +0 -15
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/aspect-ratio.d.ts +0 -4
- package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
- package/dist/components/ui/avatar.d.ts +0 -13
- package/dist/components/ui/avatar.d.ts.map +0 -1
- package/dist/components/ui/badge.d.ts +0 -13
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/breadcrumb.d.ts +0 -30
- package/dist/components/ui/breadcrumb.d.ts.map +0 -1
- package/dist/components/ui/button.d.ts +0 -28
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/calendar.d.ts +0 -9
- package/dist/components/ui/calendar.d.ts.map +0 -1
- package/dist/components/ui/card.d.ts +0 -23
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/checkbox.d.ts +0 -7
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/collapsible.d.ts +0 -6
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/command.d.ts +0 -18
- package/dist/components/ui/command.d.ts.map +0 -1
- package/dist/components/ui/context-menu.d.ts +0 -44
- package/dist/components/ui/context-menu.d.ts.map +0 -1
- package/dist/components/ui/dialog.d.ts +0 -34
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.d.ts +0 -47
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/form.d.ts +0 -34
- package/dist/components/ui/form.d.ts.map +0 -1
- package/dist/components/ui/hover-card.d.ts +0 -9
- package/dist/components/ui/hover-card.d.ts.map +0 -1
- package/dist/components/ui/inline-code.d.ts +0 -6
- package/dist/components/ui/inline-code.d.ts.map +0 -1
- package/dist/components/ui/input-otp.d.ts +0 -17
- package/dist/components/ui/input-otp.d.ts.map +0 -1
- package/dist/components/ui/input.d.ts +0 -20
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/label.d.ts +0 -11
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/menubar.d.ts +0 -31
- package/dist/components/ui/menubar.d.ts.map +0 -1
- package/dist/components/ui/navigation-menu.d.ts +0 -25
- package/dist/components/ui/navigation-menu.d.ts.map +0 -1
- package/dist/components/ui/password-input.d.ts +0 -7
- package/dist/components/ui/password-input.d.ts.map +0 -1
- package/dist/components/ui/popover.d.ts +0 -10
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/progress.d.ts +0 -7
- package/dist/components/ui/progress.d.ts.map +0 -1
- package/dist/components/ui/radio-group.d.ts +0 -10
- package/dist/components/ui/radio-group.d.ts.map +0 -1
- package/dist/components/ui/resizable.d.ts +0 -37
- package/dist/components/ui/resizable.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.d.ts +0 -10
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/select.d.ts +0 -30
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/separator.d.ts +0 -7
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/sheet.d.ts +0 -33
- package/dist/components/ui/sheet.d.ts.map +0 -1
- package/dist/components/ui/skeleton.d.ts +0 -4
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/slider.d.ts +0 -7
- package/dist/components/ui/slider.d.ts.map +0 -1
- package/dist/components/ui/spinner.d.ts +0 -7
- package/dist/components/ui/spinner.d.ts.map +0 -1
- package/dist/components/ui/switch.d.ts +0 -11
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/table.d.ts +0 -27
- package/dist/components/ui/table.d.ts.map +0 -1
- package/dist/components/ui/tabs.d.ts +0 -14
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/textarea.d.ts +0 -7
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/toast.d.ts +0 -28
- package/dist/components/ui/toast.d.ts.map +0 -1
- package/dist/components/ui/toaster.d.ts +0 -2
- package/dist/components/ui/toaster.d.ts.map +0 -1
- package/dist/components/ui/toggle-group.d.ts +0 -17
- package/dist/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/components/ui/toggle.d.ts +0 -15
- package/dist/components/ui/toggle.d.ts.map +0 -1
- package/dist/components/ui/tooltip.d.ts +0 -12
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components/ui/typography.d.ts +0 -10
- package/dist/components/ui/typography.d.ts.map +0 -1
- package/dist/components/ui/use-toast.d.ts +0 -45
- package/dist/components/ui/use-toast.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/form.tsx"],"sourcesContent":["'use client';\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\";\n\nimport { StackAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { cn } from \"../../lib/utils\";\nimport { SpanLabel } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName,\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n }: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n if (!fieldContext) {\n throw new StackAssertionError(\"useFormField should be used within <FormField>\");\n }\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n const { id } = itemContext;\n const formItemId = React.useId();\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${formItemId}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string,\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nconst FormItem = forwardRefIfNeeded<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = forwardRefIfNeeded<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error } = useFormField();\n\n return (\n <SpanLabel\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = forwardRefIfNeeded<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = forwardRefIfNeeded<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = forwardRefIfNeeded<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n Form, FormControl,\n FormDescription, FormField, FormItem,\n FormLabel, FormMessage, useFormField\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/hover-card.tsx
|
|
5
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
6
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
7
|
+
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var HoverCard = HoverCardPrimitive.Root;
|
|
10
|
+
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
11
|
+
var HoverCardContent = forwardRefIfNeeded(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
12
|
+
HoverCardPrimitive.Content,
|
|
13
|
+
{
|
|
14
|
+
ref,
|
|
15
|
+
align,
|
|
16
|
+
sideOffset,
|
|
17
|
+
className: cn(
|
|
18
|
+
"stack-scope z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
19
|
+
className
|
|
20
|
+
),
|
|
21
|
+
...props
|
|
22
|
+
}
|
|
23
|
+
));
|
|
24
|
+
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
25
|
+
export {
|
|
26
|
+
HoverCard,
|
|
27
|
+
HoverCardContent,
|
|
28
|
+
HoverCardTrigger
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=hover-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = forwardRefIfNeeded<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"stack-scope z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"mappings":";;;AAGA,SAAS,0BAA0B;AACnC,YAAY,wBAAwB;AAEpC,SAAS,UAAU;AAUjB;AARF,IAAM,YAA+B;AAErC,IAAM,mBAAsC;AAE5C,IAAM,mBAAmB,mBAGvB,CAAC,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAM,GAAG,QAC5D;AAAA,EAAoB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,iBAAiB,cAAiC,2BAAQ;","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/inline-code.tsx
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
7
|
+
import { hasClickableParent } from "@stackframe/stack-shared/dist/utils/dom";
|
|
8
|
+
import { getNodeText } from "@stackframe/stack-shared/dist/utils/react";
|
|
9
|
+
import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises";
|
|
10
|
+
import { useToast } from "./use-toast.js";
|
|
11
|
+
import { jsx } from "react/jsx-runtime";
|
|
12
|
+
var InlineCode = forwardRefIfNeeded((props, ref) => {
|
|
13
|
+
const { toast } = useToast();
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
"code",
|
|
16
|
+
{
|
|
17
|
+
ref,
|
|
18
|
+
...props,
|
|
19
|
+
className: cn("stack-scope bg-zinc-200 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 rounded-sm px-1 cursor-pointer", props.className),
|
|
20
|
+
onClick: (e) => {
|
|
21
|
+
props.onClick?.(e);
|
|
22
|
+
if (!hasClickableParent(e.currentTarget)) {
|
|
23
|
+
e.stopPropagation();
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
runAsynchronously(async () => {
|
|
26
|
+
try {
|
|
27
|
+
await navigator.clipboard.writeText(getNodeText(props.children));
|
|
28
|
+
toast({ description: "Copied to clipboard!", variant: "success" });
|
|
29
|
+
} catch (e2) {
|
|
30
|
+
toast({ description: "Failed to copy to clipboard", variant: "destructive" });
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
});
|
|
38
|
+
InlineCode.displayName = "Code";
|
|
39
|
+
export {
|
|
40
|
+
InlineCode
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=inline-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/inline-code.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { hasClickableParent } from \"@stackframe/stack-shared/dist/utils/dom\";\nimport { getNodeText } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { useToast } from \"./use-toast\";\n\nconst InlineCode = forwardRefIfNeeded<\n React.ElementRef<\"code\">,\n React.ComponentPropsWithoutRef<\"code\">\n>((props, ref) => {\n const { toast } = useToast();\n\n return <code\n ref={ref}\n {...props}\n className={cn(\"stack-scope bg-zinc-200 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 rounded-sm px-1 cursor-pointer\", props.className)}\n onClick={(e: React.MouseEvent<HTMLElement>) => {\n props.onClick?.(e);\n if (!hasClickableParent(e.currentTarget)) {\n e.stopPropagation();\n e.preventDefault();\n runAsynchronously(async () => {\n try {\n await navigator.clipboard.writeText(getNodeText(props.children));\n toast({ description: 'Copied to clipboard!', variant: 'success' });\n } catch (e) {\n toast({ description: 'Failed to copy to clipboard', variant: 'destructive' });\n }\n });\n }\n }}\n />;\n});\nInlineCode.displayName = \"Code\";\n\nexport { InlineCode };\n"],"mappings":";;;AAEA,SAAS,UAAU;AAEnB,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,gBAAgB;AAQhB;AANT,IAAM,aAAa,mBAGjB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,MAAM,IAAK,SAAS;AAE5B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MACJ,WAAW,GAAG,4GAA4G,MAAM,SAAS;AAAA,MACzI,SAAS,CAAC,MAAqC;AAC7C,cAAM,UAAU,CAAC;AACjB,YAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG;AACxC,YAAE,gBAAgB;AAClB,YAAE,eAAe;AACjB,4BAAkB,YAAY;AAC5B,gBAAI;AACF,oBAAM,UAAU,UAAU,UAAU,YAAY,MAAM,QAAQ,CAAC;AAC/D,oBAAM,EAAE,aAAa,wBAAwB,SAAS,UAAU,CAAC;AAAA,YACnE,SAASA,IAAG;AACV,oBAAM,EAAE,aAAa,+BAA+B,SAAS,cAAc,CAAC;AAAA,YAC9E;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA;AAAA,EACF;AACF,CAAC;AACD,WAAW,cAAc;","names":["e"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/input-otp.tsx
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
7
|
+
import { DashIcon } from "@radix-ui/react-icons";
|
|
8
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
9
|
+
import { cn } from "../../lib/utils.js";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
var InputOTP = forwardRefIfNeeded(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
12
|
+
OTPInput,
|
|
13
|
+
{
|
|
14
|
+
ref,
|
|
15
|
+
containerClassName: cn(
|
|
16
|
+
"stack-scope flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
17
|
+
containerClassName
|
|
18
|
+
),
|
|
19
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
20
|
+
...props
|
|
21
|
+
}
|
|
22
|
+
));
|
|
23
|
+
InputOTP.displayName = "InputOTP";
|
|
24
|
+
var InputOTPGroup = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-1", className), ...props }));
|
|
25
|
+
InputOTPGroup.displayName = "InputOTPGroup";
|
|
26
|
+
var InputOTPSlot = forwardRefIfNeeded(({ index, className, size = "default", ...props }, ref) => {
|
|
27
|
+
const inputOTPContext = React.useContext(OTPInputContext);
|
|
28
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
29
|
+
return /* @__PURE__ */ jsxs(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
ref,
|
|
33
|
+
className: cn(
|
|
34
|
+
"relative flex h-9 w-9 items-center justify-center border border-input text-sm rounded-md",
|
|
35
|
+
size === "lg" ? "h-10 w-10 text-lg font-medium" : "",
|
|
36
|
+
isActive && "z-10 ring-1 ring-ring",
|
|
37
|
+
className
|
|
38
|
+
),
|
|
39
|
+
...props,
|
|
40
|
+
children: [
|
|
41
|
+
char,
|
|
42
|
+
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
InputOTPSlot.displayName = "InputOTPSlot";
|
|
48
|
+
var InputOTPSeparator = forwardRefIfNeeded(({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(DashIcon, {}) }));
|
|
49
|
+
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
50
|
+
export {
|
|
51
|
+
InputOTP,
|
|
52
|
+
InputOTPGroup,
|
|
53
|
+
InputOTPSeparator,
|
|
54
|
+
InputOTPSlot
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=input-otp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/input-otp.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { DashIcon } from \"@radix-ui/react-icons\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst InputOTP: React.FC<React.ComponentPropsWithoutRef<typeof OTPInput>> = forwardRefIfNeeded<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"stack-scope flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\nconst InputOTPGroup = forwardRefIfNeeded<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center gap-1\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\nconst InputOTPSlot = forwardRefIfNeeded<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number, size?: 'default' | 'lg' }\n>(({ index, className, size = 'default', ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-9 w-9 items-center justify-center border border-input text-sm rounded-md\",\n size === 'lg' ? 'h-10 w-10 text-lg font-medium' : '',\n isActive && \"z-10 ring-1 ring-ring\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n});\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\nconst InputOTPSeparator = forwardRefIfNeeded<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <DashIcon />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"mappings":";;;AAEA,OAAO,WAAW;AAClB,SAAS,0BAA0B;AACnC,SAAS,gBAAgB;AACzB,SAAS,UAAU,uBAAuB;AAE1C,SAAS,UAAU;AAMjB,cA4BE,YA5BF;AAJF,IAAM,WAAsE,mBAG1E,CAAC,EAAE,WAAW,oBAAoB,GAAG,MAAM,GAAG,QAC9C;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,oBAAoB;AAAA,MAClB;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAW,GAAG,+BAA+B,SAAS;AAAA,IACrD,GAAG;AAAA;AACN,CACD;AACD,SAAS,cAAc;AAEvB,IAAM,gBAAgB,mBAGpB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,SAAI,KAAU,WAAW,GAAG,2BAA2B,SAAS,GAAI,GAAG,OAAO,CAChF;AACD,cAAc,cAAc;AAE5B,IAAM,eAAe,mBAGnB,CAAC,EAAE,OAAO,WAAW,OAAO,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3D,QAAM,kBAAkB,MAAM,WAAW,eAAe;AACxD,QAAM,EAAE,MAAM,cAAc,SAAS,IAAI,gBAAgB,MAAM,KAAK;AAEpE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,SAAS,OAAO,kCAAkC;AAAA,QAClD,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,gBACC,oBAAC,SAAI,WAAU,yEACb,8BAAC,SAAI,WAAU,4DAA2D,GAC5E;AAAA;AAAA;AAAA,EAEJ;AAEJ,CAAC;AACD,aAAa,cAAc;AAE3B,IAAM,oBAAoB,mBAGxB,CAAC,EAAE,GAAG,MAAM,GAAG,QACf,oBAAC,SAAI,KAAU,MAAK,aAAa,GAAG,OAClC,8BAAC,YAAS,GACZ,CACD;AACD,kBAAkB,cAAc;","names":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/components/ui/input.tsx
|
|
2
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
var Input = forwardRefIfNeeded(
|
|
7
|
+
({ className, type, prefixItem, ...props }, ref) => {
|
|
8
|
+
const baseClasses = "stack-scope flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
|
|
9
|
+
if (prefixItem) {
|
|
10
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center backdrop-blur-md bg-white/20 dark:bg-black/20 flex-1", children: [
|
|
11
|
+
/* @__PURE__ */ jsx("div", { className: "flex self-stretch justify-center items-center text-muted-foreground pl-3 select-none bg-muted/70 pr-3 border-r border-input rounded-l-md", children: prefixItem }),
|
|
12
|
+
/* @__PURE__ */ jsx(
|
|
13
|
+
"input",
|
|
14
|
+
{
|
|
15
|
+
type,
|
|
16
|
+
className: cn(baseClasses, "rounded-l-none", className),
|
|
17
|
+
ref,
|
|
18
|
+
...props
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
] });
|
|
22
|
+
} else {
|
|
23
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center backdrop-blur-md bg-white/20 dark:bg-black/20 flex-1", children: /* @__PURE__ */ jsx(
|
|
24
|
+
"input",
|
|
25
|
+
{
|
|
26
|
+
type,
|
|
27
|
+
className: cn(baseClasses, className),
|
|
28
|
+
ref,
|
|
29
|
+
...props
|
|
30
|
+
}
|
|
31
|
+
) });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
Input.displayName = "Input";
|
|
36
|
+
var DelayedInput = forwardRefIfNeeded(
|
|
37
|
+
({ delay = 500, defaultValue, ...props }, ref) => {
|
|
38
|
+
const [value, setValue] = React.useState(defaultValue ?? "");
|
|
39
|
+
const timeout = React.useRef(null);
|
|
40
|
+
const onChange = (e) => {
|
|
41
|
+
setValue(e.target.value);
|
|
42
|
+
if (timeout.current) {
|
|
43
|
+
clearTimeout(timeout.current);
|
|
44
|
+
}
|
|
45
|
+
timeout.current = setTimeout(() => {
|
|
46
|
+
props.onChange?.(e);
|
|
47
|
+
}, delay);
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ jsx(Input, { ref, ...props, value, onChange });
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
DelayedInput.displayName = "DelayedInput";
|
|
53
|
+
export {
|
|
54
|
+
DelayedInput,
|
|
55
|
+
Input
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/input.tsx"],"sourcesContent":["import { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type InputProps = {\n prefixItem?: React.ReactNode,\n} & React.InputHTMLAttributes<HTMLInputElement>\n\nexport const Input = forwardRefIfNeeded<HTMLInputElement, InputProps>(\n ({ className, type, prefixItem, ...props }, ref) => {\n const baseClasses = \"stack-scope flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\";\n\n if (prefixItem) {\n return (\n <div className=\"flex flex-row items-center backdrop-blur-md bg-white/20 dark:bg-black/20 flex-1\">\n <div className={'flex self-stretch justify-center items-center text-muted-foreground pl-3 select-none bg-muted/70 pr-3 border-r border-input rounded-l-md'}>\n {prefixItem}\n </div>\n <input\n type={type}\n className={cn(baseClasses, 'rounded-l-none', className)}\n ref={ref}\n {...props}\n />\n </div>\n );\n } else {\n return (\n <div className=\"flex flex-row items-center backdrop-blur-md bg-white/20 dark:bg-black/20 flex-1\">\n <input\n type={type}\n className={cn(baseClasses, className)}\n ref={ref}\n {...props}\n />\n </div>\n );\n }\n }\n);\nInput.displayName = \"Input\";\n\n\nexport type DelayedInputProps = {\n delay?: number,\n} & InputProps\n\nexport const DelayedInput = forwardRefIfNeeded<HTMLInputElement, DelayedInputProps>(\n ({ delay = 500, defaultValue, ...props }, ref) => {\n const [value, setValue] = React.useState(defaultValue ?? \"\");\n\n const timeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n props.onChange?.(e);\n }, delay);\n };\n\n return <Input ref={ref} {...props} value={value} onChange={onChange} />;\n }\n);\nDelayedInput.displayName = \"DelayedInput\";\n"],"mappings":";AAAA,SAAS,0BAA0B;AACnC,OAAO,WAAW;AAElB,SAAS,UAAU;AAYX,SACE,KADF;AAND,IAAM,QAAQ;AAAA,EACnB,CAAC,EAAE,WAAW,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ;AAClD,UAAM,cAAe;AAErB,QAAI,YAAY;AACd,aACE,qBAAC,SAAI,WAAU,mFACb;AAAA,4BAAC,SAAI,WAAW,4IACb,sBACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW,GAAG,aAAa,kBAAkB,SAAS;AAAA,YACtD;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,SACF;AAAA,IAEJ,OAAO;AACL,aACE,oBAAC,SAAI,WAAU,mFACb;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAW,GAAG,aAAa,SAAS;AAAA,UACpC;AAAA,UACC,GAAG;AAAA;AAAA,MACN,GACF;AAAA,IAEJ;AAAA,EACF;AACF;AACA,MAAM,cAAc;AAOb,IAAM,eAAe;AAAA,EAC1B,CAAC,EAAE,QAAQ,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ;AAChD,UAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAAS,gBAAgB,EAAE;AAE3D,UAAM,UAAU,MAAM,OAA6C,IAAI;AAEvE,UAAM,WAAW,CAAC,MAA2C;AAC3D,eAAS,EAAE,OAAO,KAAK;AACvB,UAAI,QAAQ,SAAS;AACnB,qBAAa,QAAQ,OAAO;AAAA,MAC9B;AACA,cAAQ,UAAU,WAAW,MAAM;AACjC,cAAM,WAAW,CAAC;AAAA,MACpB,GAAG,KAAK;AAAA,IACV;AAEA,WAAO,oBAAC,SAAM,KAAW,GAAG,OAAO,OAAc,UAAoB;AAAA,EACvE;AACF;AACA,aAAa,cAAc;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/label.tsx
|
|
5
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
6
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
7
|
+
import { cva } from "class-variance-authority";
|
|
8
|
+
import { cn } from "../../lib/utils.js";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var labelVariants = cva(
|
|
11
|
+
"stack-scope text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-gray-600 dark:text-gray-400"
|
|
12
|
+
);
|
|
13
|
+
var Label = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
14
|
+
"label",
|
|
15
|
+
{
|
|
16
|
+
ref,
|
|
17
|
+
className: cn(labelVariants(), className),
|
|
18
|
+
...props
|
|
19
|
+
}
|
|
20
|
+
));
|
|
21
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
22
|
+
var SpanLabel = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
23
|
+
"span",
|
|
24
|
+
{
|
|
25
|
+
ref,
|
|
26
|
+
className: cn(labelVariants(), className),
|
|
27
|
+
...props
|
|
28
|
+
}
|
|
29
|
+
));
|
|
30
|
+
SpanLabel.displayName = LabelPrimitive.Root.displayName;
|
|
31
|
+
export {
|
|
32
|
+
Label,
|
|
33
|
+
SpanLabel
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/label.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"stack-scope text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-gray-600 dark:text-gray-400\",\n);\n\nconst Label = forwardRefIfNeeded<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nconst SpanLabel = forwardRefIfNeeded<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nSpanLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label, SpanLabel };\n"],"mappings":";;;AAGA,SAAS,0BAA0B;AACnC,YAAY,oBAAoB;AAChC,SAAS,WAA8B;AAEvC,SAAS,UAAU;AAWjB;AATF,IAAM,gBAAgB;AAAA,EACpB;AACF;AAEA,IAAM,QAAQ,mBAIZ,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,cAAc,GAAG,SAAS;AAAA,IACvC,GAAG;AAAA;AACN,CACD;AACD,MAAM,cAA6B,oBAAK;AAExC,IAAM,YAAY,mBAIhB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,cAAc,GAAG,SAAS;AAAA,IACvC,GAAG;AAAA;AACN,CACD;AACD,UAAU,cAA6B,oBAAK;","names":[]}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/menubar.tsx
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
7
|
+
import {
|
|
8
|
+
CheckIcon,
|
|
9
|
+
ChevronRightIcon,
|
|
10
|
+
DotFilledIcon
|
|
11
|
+
} from "@radix-ui/react-icons";
|
|
12
|
+
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
13
|
+
import { cn } from "../../lib/utils.js";
|
|
14
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
var MenubarMenu = MenubarPrimitive.Menu;
|
|
16
|
+
var MenubarGroup = MenubarPrimitive.Group;
|
|
17
|
+
var MenubarPortal = MenubarPrimitive.Portal;
|
|
18
|
+
var MenubarSub = MenubarPrimitive.Sub;
|
|
19
|
+
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
20
|
+
var Menubar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
21
|
+
MenubarPrimitive.Root,
|
|
22
|
+
{
|
|
23
|
+
ref,
|
|
24
|
+
className: cn(
|
|
25
|
+
"stack-scope flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
|
|
26
|
+
className
|
|
27
|
+
),
|
|
28
|
+
...props
|
|
29
|
+
}
|
|
30
|
+
));
|
|
31
|
+
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
32
|
+
var MenubarTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
33
|
+
MenubarPrimitive.Trigger,
|
|
34
|
+
{
|
|
35
|
+
ref,
|
|
36
|
+
className: cn(
|
|
37
|
+
"flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
38
|
+
className
|
|
39
|
+
),
|
|
40
|
+
...props
|
|
41
|
+
}
|
|
42
|
+
));
|
|
43
|
+
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
44
|
+
var MenubarSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
45
|
+
MenubarPrimitive.SubTrigger,
|
|
46
|
+
{
|
|
47
|
+
ref,
|
|
48
|
+
className: cn(
|
|
49
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
50
|
+
inset && "pl-8",
|
|
51
|
+
className
|
|
52
|
+
),
|
|
53
|
+
...props,
|
|
54
|
+
children: [
|
|
55
|
+
children,
|
|
56
|
+
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
));
|
|
60
|
+
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
61
|
+
var MenubarSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
62
|
+
MenubarPrimitive.SubContent,
|
|
63
|
+
{
|
|
64
|
+
ref,
|
|
65
|
+
className: cn(
|
|
66
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
67
|
+
className
|
|
68
|
+
),
|
|
69
|
+
...props
|
|
70
|
+
}
|
|
71
|
+
));
|
|
72
|
+
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
73
|
+
var MenubarContent = React.forwardRef(
|
|
74
|
+
({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
75
|
+
MenubarPrimitive.Content,
|
|
76
|
+
{
|
|
77
|
+
ref,
|
|
78
|
+
align,
|
|
79
|
+
alignOffset,
|
|
80
|
+
sideOffset,
|
|
81
|
+
className: cn(
|
|
82
|
+
"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
83
|
+
className
|
|
84
|
+
),
|
|
85
|
+
...props
|
|
86
|
+
}
|
|
87
|
+
) })
|
|
88
|
+
);
|
|
89
|
+
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
90
|
+
var MenubarItem = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
91
|
+
MenubarPrimitive.Item,
|
|
92
|
+
{
|
|
93
|
+
ref,
|
|
94
|
+
className: cn(
|
|
95
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
96
|
+
inset && "pl-8",
|
|
97
|
+
className
|
|
98
|
+
),
|
|
99
|
+
...props
|
|
100
|
+
}
|
|
101
|
+
));
|
|
102
|
+
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
103
|
+
var MenubarCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
104
|
+
MenubarPrimitive.CheckboxItem,
|
|
105
|
+
{
|
|
106
|
+
ref,
|
|
107
|
+
className: cn(
|
|
108
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
109
|
+
className
|
|
110
|
+
),
|
|
111
|
+
checked,
|
|
112
|
+
...props,
|
|
113
|
+
children: [
|
|
114
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) }) }),
|
|
115
|
+
children
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
));
|
|
119
|
+
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
120
|
+
var MenubarRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
121
|
+
MenubarPrimitive.RadioItem,
|
|
122
|
+
{
|
|
123
|
+
ref,
|
|
124
|
+
className: cn(
|
|
125
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
126
|
+
className
|
|
127
|
+
),
|
|
128
|
+
...props,
|
|
129
|
+
children: [
|
|
130
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
|
|
131
|
+
children
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
));
|
|
135
|
+
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
136
|
+
var MenubarLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
137
|
+
MenubarPrimitive.Label,
|
|
138
|
+
{
|
|
139
|
+
ref,
|
|
140
|
+
className: cn(
|
|
141
|
+
"px-2 py-1.5 text-sm font-semibold",
|
|
142
|
+
inset && "pl-8",
|
|
143
|
+
className
|
|
144
|
+
),
|
|
145
|
+
...props
|
|
146
|
+
}
|
|
147
|
+
));
|
|
148
|
+
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
149
|
+
var MenubarSeparator = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
150
|
+
MenubarPrimitive.Separator,
|
|
151
|
+
{
|
|
152
|
+
ref,
|
|
153
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
154
|
+
...props
|
|
155
|
+
}
|
|
156
|
+
));
|
|
157
|
+
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
|
|
158
|
+
var MenubarShortcut = ({
|
|
159
|
+
className,
|
|
160
|
+
...props
|
|
161
|
+
}) => {
|
|
162
|
+
return /* @__PURE__ */ jsx(
|
|
163
|
+
"span",
|
|
164
|
+
{
|
|
165
|
+
className: cn(
|
|
166
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
167
|
+
className
|
|
168
|
+
),
|
|
169
|
+
...props
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
MenubarShortcut.displayname = "MenubarShortcut";
|
|
174
|
+
export {
|
|
175
|
+
Menubar,
|
|
176
|
+
MenubarCheckboxItem,
|
|
177
|
+
MenubarContent,
|
|
178
|
+
MenubarGroup,
|
|
179
|
+
MenubarItem,
|
|
180
|
+
MenubarLabel,
|
|
181
|
+
MenubarMenu,
|
|
182
|
+
MenubarPortal,
|
|
183
|
+
MenubarRadioGroup,
|
|
184
|
+
MenubarRadioItem,
|
|
185
|
+
MenubarSeparator,
|
|
186
|
+
MenubarShortcut,
|
|
187
|
+
MenubarSub,
|
|
188
|
+
MenubarSubContent,
|
|
189
|
+
MenubarSubTrigger,
|
|
190
|
+
MenubarTrigger
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=menubar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/menubar.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst MenubarMenu = MenubarPrimitive.Menu as any;\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"stack-scope flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm\",\n className\n )}\n {...props}\n />\n));\nMenubar.displayName = MenubarPrimitive.Root.displayName;\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n className\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean,\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n )\n);\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <DotFilledIcon className=\"h-4 w-4 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\n\nconst MenubarSeparator = forwardRefIfNeeded<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n );\n};\nMenubarShortcut.displayname = \"MenubarShortcut\";\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/ui/navigation-menu.tsx
|
|
5
|
+
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
6
|
+
import { ChevronDownIcon } from "@radix-ui/react-icons";
|
|
7
|
+
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
8
|
+
import { cva } from "class-variance-authority";
|
|
9
|
+
import { cn } from "../../lib/utils.js";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
var NavigationMenu = forwardRefIfNeeded(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
12
|
+
NavigationMenuPrimitive.Root,
|
|
13
|
+
{
|
|
14
|
+
ref,
|
|
15
|
+
className: cn(
|
|
16
|
+
"stack-scope relative z-10 flex max-w-max flex-1 items-center justify-center",
|
|
17
|
+
className
|
|
18
|
+
),
|
|
19
|
+
...props,
|
|
20
|
+
children: [
|
|
21
|
+
children,
|
|
22
|
+
/* @__PURE__ */ jsx(NavigationMenuViewport, {})
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
));
|
|
26
|
+
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
27
|
+
var NavigationMenuList = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
28
|
+
NavigationMenuPrimitive.List,
|
|
29
|
+
{
|
|
30
|
+
ref,
|
|
31
|
+
className: cn(
|
|
32
|
+
"stack-scope group flex flex-1 list-none items-center justify-center space-x-1",
|
|
33
|
+
className
|
|
34
|
+
),
|
|
35
|
+
...props
|
|
36
|
+
}
|
|
37
|
+
));
|
|
38
|
+
NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
|
|
39
|
+
var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
40
|
+
var navigationMenuTriggerStyle = cva(
|
|
41
|
+
"stack-scope group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
42
|
+
);
|
|
43
|
+
var NavigationMenuTrigger = forwardRefIfNeeded(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
44
|
+
NavigationMenuPrimitive.Trigger,
|
|
45
|
+
{
|
|
46
|
+
ref,
|
|
47
|
+
className: cn(navigationMenuTriggerStyle(), "group", className),
|
|
48
|
+
...props,
|
|
49
|
+
children: [
|
|
50
|
+
children,
|
|
51
|
+
" ",
|
|
52
|
+
/* @__PURE__ */ jsx(
|
|
53
|
+
ChevronDownIcon,
|
|
54
|
+
{
|
|
55
|
+
className: "relative top-[1px] ml-1 h-3 w-3 duration-300 group-data-[state=open]:rotate-180",
|
|
56
|
+
"aria-hidden": "true"
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
));
|
|
62
|
+
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
63
|
+
var NavigationMenuContent = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
64
|
+
NavigationMenuPrimitive.Content,
|
|
65
|
+
{
|
|
66
|
+
ref,
|
|
67
|
+
className: cn(
|
|
68
|
+
"stack-scope left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
|
|
69
|
+
className
|
|
70
|
+
),
|
|
71
|
+
...props
|
|
72
|
+
}
|
|
73
|
+
));
|
|
74
|
+
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
75
|
+
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
76
|
+
var NavigationMenuViewport = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
|
|
77
|
+
NavigationMenuPrimitive.Viewport,
|
|
78
|
+
{
|
|
79
|
+
className: cn(
|
|
80
|
+
"stack-scope origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
81
|
+
className
|
|
82
|
+
),
|
|
83
|
+
ref,
|
|
84
|
+
...props
|
|
85
|
+
}
|
|
86
|
+
) }));
|
|
87
|
+
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
88
|
+
var NavigationMenuIndicator = forwardRefIfNeeded(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
89
|
+
NavigationMenuPrimitive.Indicator,
|
|
90
|
+
{
|
|
91
|
+
ref,
|
|
92
|
+
className: cn(
|
|
93
|
+
"stack-scope top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
|
|
94
|
+
className
|
|
95
|
+
),
|
|
96
|
+
...props,
|
|
97
|
+
children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
|
|
98
|
+
}
|
|
99
|
+
));
|
|
100
|
+
NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
|
|
101
|
+
export {
|
|
102
|
+
NavigationMenu,
|
|
103
|
+
NavigationMenuContent,
|
|
104
|
+
NavigationMenuIndicator,
|
|
105
|
+
NavigationMenuItem,
|
|
106
|
+
NavigationMenuLink,
|
|
107
|
+
NavigationMenuList,
|
|
108
|
+
NavigationMenuTrigger,
|
|
109
|
+
NavigationMenuViewport,
|
|
110
|
+
navigationMenuTriggerStyle
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=navigation-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { ChevronDownIcon } from \"@radix-ui/react-icons\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst NavigationMenu = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"stack-scope relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"stack-scope group flex flex-1 list-none items-center justify-center space-x-1\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n \"stack-scope group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n);\n\nconst NavigationMenuTrigger = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 h-3 w-3 duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"stack-scope left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \",\n className\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"stack-scope origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = forwardRefIfNeeded<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"stack-scope top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n};\n"],"mappings":";;;AAGA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAChC,YAAY,6BAA6B;AACzC,SAAS,WAAW;AAEpB,SAAS,UAAU;AAMjB,SASE,KATF;AAJF,IAAM,iBAAiB,mBAGrB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEH;AAAA;AAAA,MACD,oBAAC,0BAAuB;AAAA;AAAA;AAC1B,CACD;AACD,eAAe,cAAsC,6BAAK;AAE1D,IAAM,qBAAqB,mBAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,mBAAmB,cAAsC,6BAAK;AAE9D,IAAM,qBAA6C;AAEnD,IAAM,6BAA6B;AAAA,EACjC;AACF;AAEA,IAAM,wBAAwB,mBAG5B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,IAC7D,GAAG;AAAA,IAEH;AAAA;AAAA,MAAU;AAAA,MACX;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAY;AAAA;AAAA,MACd;AAAA;AAAA;AACF,CACD;AACD,sBAAsB,cAAsC,gCAAQ;AAEpE,IAAM,wBAAwB,mBAG5B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,sBAAsB,cAAsC,gCAAQ;AAEpE,IAAM,qBAA6C;AAEnD,IAAM,yBAAyB,mBAG7B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,SAAI,WAAW,GAAG,8CAA8C,GAC/D;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,uBAAuB,cACG,iCAAS;AAEnC,IAAM,0BAA0B,mBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAyB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,8BAAC,SAAI,WAAU,0EAAyE;AAAA;AAC1F,CACD;AACD,wBAAwB,cACE,kCAAU;","names":[]}
|