@marktiderman/genesis-ui 1.2.0 → 2.0.0
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/AppShell-BJarYZzz.d.ts +198 -0
- package/dist/{chunk-NJMO3VPA.js → chunk-22XB3Q6H.js} +8 -8
- package/dist/chunk-22XB3Q6H.js.map +1 -0
- package/dist/{chunk-2MXMWBDV.js → chunk-27ELYTGE.js} +6 -6
- package/dist/chunk-27ELYTGE.js.map +1 -0
- package/dist/chunk-46TZGMFW.js +159 -0
- package/dist/chunk-46TZGMFW.js.map +1 -0
- package/dist/chunk-4CQHPWJD.js +117 -0
- package/dist/chunk-4CQHPWJD.js.map +1 -0
- package/dist/{chunk-ZDAT5JDH.js → chunk-65SPT7EA.js} +24 -6
- package/dist/chunk-65SPT7EA.js.map +1 -0
- package/dist/chunk-6KHY647C.js +67 -0
- package/dist/chunk-6KHY647C.js.map +1 -0
- package/dist/chunk-6M4NHHKG.js +51 -0
- package/dist/chunk-6M4NHHKG.js.map +1 -0
- package/dist/{chunk-AI6CCNWK.js → chunk-6NPEMLBA.js} +2 -2
- package/dist/chunk-6NPEMLBA.js.map +1 -0
- package/dist/chunk-6Q6CLLJ4.js +9 -0
- package/dist/chunk-6Q6CLLJ4.js.map +1 -0
- package/dist/{chunk-UGHQFQOE.js → chunk-6TVMQH6M.js} +28 -28
- package/dist/chunk-6TVMQH6M.js.map +1 -0
- package/dist/{chunk-UKSBLFEK.js → chunk-6XPMU65K.js} +5 -5
- package/dist/{chunk-UKSBLFEK.js.map → chunk-6XPMU65K.js.map} +1 -1
- package/dist/{chunk-YZEA5TGK.js → chunk-7XMZVISM.js} +16 -16
- package/dist/chunk-7XMZVISM.js.map +1 -0
- package/dist/chunk-A7AHVDG7.js +52 -0
- package/dist/chunk-A7AHVDG7.js.map +1 -0
- package/dist/chunk-AFZ76Q26.js +84 -0
- package/dist/chunk-AFZ76Q26.js.map +1 -0
- package/dist/{chunk-4V4H2ZM7.js → chunk-AL5TMEZQ.js} +31 -31
- package/dist/chunk-AL5TMEZQ.js.map +1 -0
- package/dist/{chunk-O4B5ALO7.js → chunk-AOZGQM6W.js} +3 -3
- package/dist/chunk-AOZGQM6W.js.map +1 -0
- package/dist/chunk-ARJI2JUV.js +122 -0
- package/dist/chunk-ARJI2JUV.js.map +1 -0
- package/dist/chunk-AVFZ4P4B.js +25 -0
- package/dist/chunk-AVFZ4P4B.js.map +1 -0
- package/dist/chunk-B2GIBUQD.js +11 -0
- package/dist/chunk-B2GIBUQD.js.map +1 -0
- package/dist/{chunk-JXI2MYL3.js → chunk-C46ITXE4.js} +5 -5
- package/dist/chunk-C46ITXE4.js.map +1 -0
- package/dist/chunk-CNTWQSUT.js +65 -0
- package/dist/chunk-CNTWQSUT.js.map +1 -0
- package/dist/chunk-D2LIXA2Y.js +65 -0
- package/dist/chunk-D2LIXA2Y.js.map +1 -0
- package/dist/{chunk-FCGFG4RV.js → chunk-D4JTQYP5.js} +3 -3
- package/dist/{chunk-FCGFG4RV.js.map → chunk-D4JTQYP5.js.map} +1 -1
- package/dist/{chunk-T5VX5DYO.js → chunk-F47U5KNW.js} +5 -5
- package/dist/chunk-F47U5KNW.js.map +1 -0
- package/dist/chunk-FEJAZFP3.js +1100 -0
- package/dist/chunk-FEJAZFP3.js.map +1 -0
- package/dist/{chunk-2B3MFHBQ.js → chunk-FK42ZGGV.js} +21 -21
- package/dist/chunk-FK42ZGGV.js.map +1 -0
- package/dist/{chunk-XISSLIMH.js → chunk-FTTNGGLA.js} +2 -2
- package/dist/{chunk-XISSLIMH.js.map → chunk-FTTNGGLA.js.map} +1 -1
- package/dist/chunk-G5YKBPBF.js +74 -0
- package/dist/chunk-G5YKBPBF.js.map +1 -0
- package/dist/chunk-GCQFVMPI.js +56 -0
- package/dist/chunk-GCQFVMPI.js.map +1 -0
- package/dist/{chunk-LDPPIBIJ.js → chunk-IJCT5IJD.js} +3 -3
- package/dist/{chunk-LDPPIBIJ.js.map → chunk-IJCT5IJD.js.map} +1 -1
- package/dist/{chunk-DGRHPJ3M.js → chunk-J6FBA7PH.js} +3 -3
- package/dist/{chunk-DGRHPJ3M.js.map → chunk-J6FBA7PH.js.map} +1 -1
- package/dist/chunk-JAMLFMDS.js +12 -0
- package/dist/chunk-JAMLFMDS.js.map +1 -0
- package/dist/{chunk-C6H7AMO4.js → chunk-LNFF2RBD.js} +9 -9
- package/dist/chunk-LNFF2RBD.js.map +1 -0
- package/dist/{chunk-QBZMY2AF.js → chunk-M62CHO3N.js} +18 -18
- package/dist/chunk-M62CHO3N.js.map +1 -0
- package/dist/{chunk-5Q4FABZQ.js → chunk-NUXW6NPP.js} +8 -8
- package/dist/chunk-NUXW6NPP.js.map +1 -0
- package/dist/{chunk-I6JQHP6D.js → chunk-NWSCYLPT.js} +78 -17
- package/dist/chunk-NWSCYLPT.js.map +1 -0
- package/dist/{chunk-63FW5ZUA.js → chunk-P3ZL6FGR.js} +7 -7
- package/dist/chunk-P3ZL6FGR.js.map +1 -0
- package/dist/chunk-P64MFQXZ.js +191 -0
- package/dist/chunk-P64MFQXZ.js.map +1 -0
- package/dist/chunk-PLIYF6KI.js +52 -0
- package/dist/chunk-PLIYF6KI.js.map +1 -0
- package/dist/chunk-PSR47JRA.js +26 -0
- package/dist/chunk-PSR47JRA.js.map +1 -0
- package/dist/{chunk-QLCDAFS7.js → chunk-Q4I4SFBD.js} +3 -3
- package/dist/chunk-Q4I4SFBD.js.map +1 -0
- package/dist/{chunk-SBJV3K4G.js → chunk-QJ6P2DW6.js} +28 -28
- package/dist/chunk-QJ6P2DW6.js.map +1 -0
- package/dist/{chunk-IP6TMT3D.js → chunk-R7QFP6EL.js} +3 -3
- package/dist/chunk-R7QFP6EL.js.map +1 -0
- package/dist/{chunk-WZWR2ELB.js → chunk-SEBU6JCK.js} +6 -6
- package/dist/chunk-SEBU6JCK.js.map +1 -0
- package/dist/{chunk-7OBL3H5P.js → chunk-SEFK4NZV.js} +3 -3
- package/dist/chunk-SEFK4NZV.js.map +1 -0
- package/dist/chunk-SRIT4NFQ.js +67 -0
- package/dist/chunk-SRIT4NFQ.js.map +1 -0
- package/dist/chunk-SY62XJFA.js +19 -0
- package/dist/chunk-SY62XJFA.js.map +1 -0
- package/dist/{chunk-SVXDWPLO.js → chunk-THD3YOOZ.js} +17 -17
- package/dist/chunk-THD3YOOZ.js.map +1 -0
- package/dist/chunk-VXFYETRK.js +58 -0
- package/dist/chunk-VXFYETRK.js.map +1 -0
- package/dist/chunk-XBX6QMR5.js +58 -0
- package/dist/chunk-XBX6QMR5.js.map +1 -0
- package/dist/{chunk-SCUT2ZCD.js → chunk-XCGZPFT7.js} +17 -17
- package/dist/chunk-XCGZPFT7.js.map +1 -0
- package/dist/chunk-XMK3T4TA.js +73 -0
- package/dist/chunk-XMK3T4TA.js.map +1 -0
- package/dist/chunk-YJ6MPS6U.js +226 -0
- package/dist/chunk-YJ6MPS6U.js.map +1 -0
- package/dist/chunk-YRYQXU3G.js +38 -0
- package/dist/chunk-YRYQXU3G.js.map +1 -0
- package/dist/{chunk-5J7BP5DI.js → chunk-YWFPMND7.js} +10 -10
- package/dist/chunk-YWFPMND7.js.map +1 -0
- package/dist/chunk-YYEGAFUE.js +94 -0
- package/dist/chunk-YYEGAFUE.js.map +1 -0
- package/dist/{chunk-TKA4LOMT.js → chunk-ZZ7H7VVX.js} +8 -8
- package/dist/chunk-ZZ7H7VVX.js.map +1 -0
- package/dist/components/data/index.d.ts +223 -74
- package/dist/components/data/index.js +504 -539
- package/dist/components/data/index.js.map +1 -1
- package/dist/components/layout/dashboard-page.d.ts +4 -0
- package/dist/components/layout/dashboard-page.js +5 -0
- package/dist/components/layout/dashboard-page.js.map +1 -0
- package/dist/components/layout/detail-page.d.ts +91 -0
- package/dist/components/layout/detail-page.js +6 -0
- package/dist/components/layout/detail-page.js.map +1 -0
- package/dist/components/layout/form-page.d.ts +82 -0
- package/dist/components/layout/form-page.js +5 -0
- package/dist/components/layout/form-page.js.map +1 -0
- package/dist/components/layout/index.d.ts +15 -0
- package/dist/components/layout/index.js +21 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/settings-page.d.ts +114 -0
- package/dist/components/layout/settings-page.js +6 -0
- package/dist/components/layout/settings-page.js.map +1 -0
- package/dist/components/patterns/empty-state.d.ts +74 -0
- package/dist/components/{ui → patterns}/empty-state.js +2 -1
- package/dist/components/{ui → patterns}/form-field.d.ts +2 -2
- package/dist/components/{ui → patterns}/form-field.js +2 -2
- package/dist/components/patterns/index.d.ts +18 -0
- package/dist/components/patterns/index.js +18 -0
- package/dist/components/patterns/index.js.map +1 -0
- package/dist/components/patterns/page-loading.d.ts +25 -0
- package/dist/components/patterns/page-loading.js +5 -0
- package/dist/components/patterns/page-loading.js.map +1 -0
- package/dist/components/patterns/settings-row.d.ts +42 -0
- package/dist/components/patterns/settings-row.js +6 -0
- package/dist/components/patterns/settings-row.js.map +1 -0
- package/dist/components/patterns/status-badge.d.ts +38 -0
- package/dist/components/patterns/status-badge.js +4 -0
- package/dist/components/patterns/status-badge.js.map +1 -0
- package/dist/components/patterns/toggle-row.d.ts +36 -0
- package/dist/components/patterns/toggle-row.js +8 -0
- package/dist/components/patterns/toggle-row.js.map +1 -0
- package/dist/components/patterns/user-avatar.d.ts +34 -0
- package/dist/components/patterns/user-avatar.js +5 -0
- package/dist/components/patterns/user-avatar.js.map +1 -0
- package/dist/components/ui/accessible-icon.d.ts +48 -0
- package/dist/components/ui/accessible-icon.js +3 -0
- package/dist/components/ui/accessible-icon.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +5 -5
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/alert-dialog.d.ts +10 -10
- package/dist/components/ui/alert-dialog.js +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +2 -2
- package/dist/components/ui/aspect-ratio.js +1 -1
- package/dist/components/ui/avatar.d.ts +4 -4
- package/dist/components/ui/avatar.js +1 -1
- package/dist/components/ui/button.d.ts +75 -8
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/calendar.js +2 -2
- package/dist/components/ui/carousel.d.ts +4 -3
- package/dist/components/ui/carousel.js +2 -2
- package/dist/components/ui/checkbox.d.ts +2 -2
- package/dist/components/ui/checkbox.js +1 -1
- package/dist/components/ui/collapsible.d.ts +4 -4
- package/dist/components/ui/collapsible.js +1 -1
- package/dist/components/ui/command-palette.d.ts +30 -0
- package/dist/components/ui/command-palette.js +6 -0
- package/dist/components/ui/command-palette.js.map +1 -0
- package/dist/components/ui/command.d.ts +9 -9
- package/dist/components/ui/command.js +2 -2
- package/dist/components/ui/context-menu.d.ts +15 -15
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/date-picker.js +4 -4
- package/dist/components/ui/dialog.d.ts +9 -9
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/drawer.d.ts +7 -7
- package/dist/components/ui/dropdown-menu.d.ts +15 -15
- package/dist/components/ui/dropdown-menu.js +1 -1
- package/dist/components/ui/hover-card.d.ts +4 -4
- package/dist/components/ui/hover-card.js +1 -1
- package/dist/components/ui/input-otp.d.ts +2 -2
- package/dist/components/ui/label.d.ts +2 -2
- package/dist/components/ui/label.js +1 -1
- package/dist/components/ui/menubar.d.ts +16 -16
- package/dist/components/ui/menubar.js +1 -1
- package/dist/components/ui/navigation-menu.d.ts +9 -9
- package/dist/components/ui/navigation-menu.js +1 -1
- package/dist/components/ui/pagination.js +2 -2
- package/dist/components/ui/password-toggle-field.d.ts +121 -0
- package/dist/components/ui/password-toggle-field.js +4 -0
- package/dist/components/ui/password-toggle-field.js.map +1 -0
- package/dist/components/ui/popover.d.ts +4 -4
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/radio-group.d.ts +3 -3
- package/dist/components/ui/radio-group.js +1 -1
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/components/ui/scroll-area.d.ts +60 -3
- package/dist/components/ui/scroll-area.js +1 -1
- package/dist/components/ui/select.d.ts +9 -9
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/sheet.d.ts +11 -9
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/slider.d.ts +2 -2
- package/dist/components/ui/slider.js +1 -1
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.js +1 -1
- package/dist/components/ui/tabs.d.ts +29 -14
- package/dist/components/ui/tabs.js +1 -1
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle-group.js +2 -2
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/toggle.js +1 -1
- package/dist/components/ui/toolbar.d.ts +104 -0
- package/dist/components/ui/toolbar.js +6 -0
- package/dist/components/ui/toolbar.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +46 -4
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/visually-hidden.d.ts +48 -0
- package/dist/components/ui/visually-hidden.js +4 -0
- package/dist/components/ui/visually-hidden.js.map +1 -0
- package/dist/dashboard-page-C0TihRl5.d.ts +107 -0
- package/dist/hooks/index.d.ts +5 -3
- package/dist/hooks/index.js +10 -5
- package/dist/hooks/use-data-filters.d.ts +1 -1
- package/dist/hooks/use-data-filters.js +2 -2
- package/dist/hooks/use-keyboard-navigation.d.ts +58 -2
- package/dist/hooks/use-keyboard-navigation.js +1 -1
- package/dist/hooks/use-resource-page.d.ts +3 -2
- package/dist/hooks/use-resource-page.js +2 -2
- package/dist/hooks/use-saved-views.d.ts +28 -0
- package/dist/hooks/use-saved-views.js +3 -0
- package/dist/hooks/use-saved-views.js.map +1 -0
- package/dist/hooks/use-view-preference.d.ts +1 -1
- package/dist/hooks/use-view-preference.js +1 -1
- package/dist/index.d.ts +25 -26
- package/dist/index.js +55 -38
- package/dist/{navigation-qI86Ldug.d.ts → navigation-CpOEyUSb.d.ts} +4 -0
- package/dist/spacing-BS6qECD4.d.ts +191 -0
- package/dist/split-Dk9f4Mi0.d.ts +57 -0
- package/dist/{use-resource-page-B-CFcikK.d.ts → use-resource-page-CPs6wjKt.d.ts} +10 -2
- package/dist/view-settings--KXNT_jE.d.ts +12 -0
- package/package.json +77 -32
- package/dist/chunk-2B3MFHBQ.js.map +0 -1
- package/dist/chunk-2MXMWBDV.js.map +0 -1
- package/dist/chunk-4V4H2ZM7.js.map +0 -1
- package/dist/chunk-5J7BP5DI.js.map +0 -1
- package/dist/chunk-5Q4FABZQ.js.map +0 -1
- package/dist/chunk-63FW5ZUA.js.map +0 -1
- package/dist/chunk-7OBL3H5P.js.map +0 -1
- package/dist/chunk-AI6CCNWK.js.map +0 -1
- package/dist/chunk-C6H7AMO4.js.map +0 -1
- package/dist/chunk-EI5EGKHL.js +0 -32
- package/dist/chunk-EI5EGKHL.js.map +0 -1
- package/dist/chunk-I6JQHP6D.js.map +0 -1
- package/dist/chunk-IP6TMT3D.js.map +0 -1
- package/dist/chunk-JJ4NOMMI.js +0 -73
- package/dist/chunk-JJ4NOMMI.js.map +0 -1
- package/dist/chunk-JXI2MYL3.js.map +0 -1
- package/dist/chunk-KBS4BHME.js +0 -11
- package/dist/chunk-KBS4BHME.js.map +0 -1
- package/dist/chunk-LRXDZBV2.js +0 -26
- package/dist/chunk-LRXDZBV2.js.map +0 -1
- package/dist/chunk-NJMO3VPA.js.map +0 -1
- package/dist/chunk-O4B5ALO7.js.map +0 -1
- package/dist/chunk-OCTV3S4I.js +0 -29
- package/dist/chunk-OCTV3S4I.js.map +0 -1
- package/dist/chunk-QBZMY2AF.js.map +0 -1
- package/dist/chunk-QLCDAFS7.js.map +0 -1
- package/dist/chunk-SBJV3K4G.js.map +0 -1
- package/dist/chunk-SCUT2ZCD.js.map +0 -1
- package/dist/chunk-SVXDWPLO.js.map +0 -1
- package/dist/chunk-T465NJRL.js +0 -134
- package/dist/chunk-T465NJRL.js.map +0 -1
- package/dist/chunk-T5VX5DYO.js.map +0 -1
- package/dist/chunk-TKA4LOMT.js.map +0 -1
- package/dist/chunk-UGHQFQOE.js.map +0 -1
- package/dist/chunk-WALXVR6V.js +0 -9
- package/dist/chunk-WALXVR6V.js.map +0 -1
- package/dist/chunk-WZWR2ELB.js.map +0 -1
- package/dist/chunk-YZEA5TGK.js.map +0 -1
- package/dist/chunk-ZDAT5JDH.js.map +0 -1
- package/dist/components/ui/empty-state.d.ts +0 -22
- /package/dist/components/{ui → patterns}/empty-state.js.map +0 -0
- /package/dist/components/{ui → patterns}/form-field.js.map +0 -0
- /package/dist/{ViewToggle-DDe_Luj2.d.ts → view-toggle-DDe_Luj2.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/patterns/empty-state.tsx"],"names":[],"mappings":"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","file":"chunk-65SPT7EA.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils\";\nimport { Button } from \"../ui/button\";\nimport {\n FileQuestion,\n Lightbulb,\n MessageSquare,\n Search,\n type LucideIcon,\n} from \"lucide-react\";\n\nconst DEFAULT_TITLE = \"No results found\";\nconst FILTERED_TITLE = \"No results match your filters\";\n\nexport interface EmptyStateProps {\n icon?: LucideIcon;\n /**\n * Bold heading. Optional — falls back to `message` (deprecated), then a\n * generic default. Superseded by fixed copy whenever `hasFilters` is true.\n */\n title?: string;\n description?: string;\n action?: React.ReactNode;\n className?: string;\n /**\n * @deprecated Use `title` instead. Kept for source compatibility with the\n * former `@marktiderman/genesis-ui/data` EmptyState, which used `message`\n * in place of `title`/`description`. Ignored whenever `title` is also\n * provided.\n */\n message?: string;\n /**\n * Renders a \"no results match your current filters\" state — superseding\n * `title`/`description` — and, when `onClearFilters` is also given, a\n * \"Clear all filters\" action in place of `action`.\n */\n hasFilters?: boolean;\n /** Invoked by the \"Clear all filters\" action shown when `hasFilters` is true. */\n onClearFilters?: () => void;\n}\n\n/**\n * EmptyState — what to show when a list, page, or panel has no data.\n *\n * Canonical for `@marktiderman/genesis-ui`. The former\n * `@marktiderman/genesis-ui/data` EmptyState is now a deprecated re-export of\n * this component (see `../data/EmptyState`) — its `hasFilters` /\n * `onClearFilters` / `message` props all landed here, so nothing consuming\n * that subpath needs a source change. Note that the *rendered output* is this\n * component's, not the old `/data` one's: see that file's `@deprecated` block\n * for the visual differences a `/data` consumer will see.\n *\n * Precedence: `hasFilters` wins over everything the caller passed — it\n * replaces the heading with fixed \"no results match your filters\" copy,\n * suppresses `description`, and (given `onClearFilters`) replaces `action`\n * with a \"Clear all filters\" button.\n *\n * @stability Beta\n */\nexport function EmptyState({\n icon: Icon = FileQuestion,\n title,\n description,\n action,\n className,\n message,\n hasFilters = false,\n onClearFilters,\n}: EmptyStateProps) {\n const resolvedTitle = hasFilters ? FILTERED_TITLE : title ?? message ?? DEFAULT_TITLE;\n const resolvedDescription = hasFilters ? undefined : description;\n const resolvedAction =\n hasFilters && onClearFilters ? (\n <Button\n variant=\"link\"\n size=\"sm\"\n testID=\"empty-state-clear-filters\"\n onClick={onClearFilters}\n >\n Clear all filters\n </Button>\n ) : (\n action\n );\n\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\n className\n )}\n >\n <div className=\"flex h-16 w-16 items-center justify-center rounded-full bg-muted\">\n <Icon className=\"h-8 w-8 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <h3 className=\"mt-4 text-lg font-semibold\">{resolvedTitle}</h3>\n {resolvedDescription && (\n <p className=\"mt-2 text-sm text-muted-foreground max-w-sm\">\n {resolvedDescription}\n </p>\n )}\n {resolvedAction && <div className=\"mt-6\">{resolvedAction}</div>}\n </div>\n );\n}\n\n/**\n * Preset `EmptyState` for an empty roadmap / feature list.\n *\n * @stability Beta\n */\nexport function NoFeaturesFound({ onCreate }: { onCreate?: () => void }) {\n return (\n <EmptyState\n icon={Lightbulb}\n title=\"No features found\"\n description=\"Start building your product roadmap by creating your first epic.\"\n action={\n onCreate && (\n <button\n type=\"button\"\n onClick={onCreate}\n className=\"rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90\"\n >\n Create Epic\n </button>\n )\n }\n />\n );\n}\n\n/**\n * Preset `EmptyState` for a feedback inbox with nothing in it yet.\n *\n * @stability Beta\n */\nexport function NoFeedbackFound() {\n return (\n <EmptyState\n icon={MessageSquare}\n title=\"No feedback yet\"\n description=\"Feedback from users will appear here as they use the app.\"\n />\n );\n}\n\n/**\n * Preset `EmptyState` for a search or filter that matched nothing.\n *\n * @stability Beta\n */\nexport function NoSearchResults({\n query,\n onClear,\n}: {\n query?: string;\n onClear?: () => void;\n}) {\n return (\n <EmptyState\n icon={Search}\n title=\"No results found\"\n description={\n query\n ? `No results found for \"${query}\". Try a different search term.`\n : \"No results match your current filters.\"\n }\n action={\n onClear && (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"text-sm text-primary hover:text-primary/80 font-medium\"\n >\n Clear search\n </button>\n )\n }\n />\n );\n}\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-NZ5WBA4R.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { ScrollArea as ScrollArea$1 } from 'radix-ui';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var ScrollBar = React.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
8
|
+
ScrollArea$1.ScrollAreaScrollbar,
|
|
9
|
+
{
|
|
10
|
+
ref,
|
|
11
|
+
orientation,
|
|
12
|
+
className: cn(
|
|
13
|
+
"flex touch-none select-none transition-colors",
|
|
14
|
+
orientation === "vertical" && "h-full w-2 border-l border-l-transparent",
|
|
15
|
+
orientation === "horizontal" && "h-2 flex-col border-t border-t-transparent",
|
|
16
|
+
className
|
|
17
|
+
),
|
|
18
|
+
...props,
|
|
19
|
+
children: /* @__PURE__ */ jsx(ScrollArea$1.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border transition-colors hover:bg-muted-foreground/30" })
|
|
20
|
+
}
|
|
21
|
+
));
|
|
22
|
+
ScrollBar.displayName = ScrollArea$1.ScrollAreaScrollbar.displayName;
|
|
23
|
+
var ScrollArea = React.forwardRef(
|
|
24
|
+
({
|
|
25
|
+
className,
|
|
26
|
+
orientation = "vertical",
|
|
27
|
+
type = "auto",
|
|
28
|
+
children,
|
|
29
|
+
onScroll,
|
|
30
|
+
onScrollCapture,
|
|
31
|
+
nonce,
|
|
32
|
+
viewportProps,
|
|
33
|
+
...props
|
|
34
|
+
}, ref) => /* @__PURE__ */ jsxs(
|
|
35
|
+
ScrollArea$1.Root,
|
|
36
|
+
{
|
|
37
|
+
ref,
|
|
38
|
+
type,
|
|
39
|
+
className: cn("relative overflow-hidden", className),
|
|
40
|
+
...props,
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsx(
|
|
43
|
+
ScrollArea$1.Viewport,
|
|
44
|
+
{
|
|
45
|
+
onScroll,
|
|
46
|
+
onScrollCapture,
|
|
47
|
+
nonce,
|
|
48
|
+
...viewportProps,
|
|
49
|
+
className: cn(
|
|
50
|
+
"h-full w-full rounded-[inherit]",
|
|
51
|
+
viewportProps?.className
|
|
52
|
+
),
|
|
53
|
+
children
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
orientation !== "horizontal" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical" }),
|
|
57
|
+
orientation !== "vertical" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" }),
|
|
58
|
+
/* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
ScrollArea.displayName = ScrollArea$1.Root.displayName;
|
|
64
|
+
|
|
65
|
+
export { ScrollArea };
|
|
66
|
+
//# sourceMappingURL=chunk-6KHY647C.js.map
|
|
67
|
+
//# sourceMappingURL=chunk-6KHY647C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/scroll-area.tsx"],"names":["ScrollAreaPrimitive"],"mappings":";;;;;AAoCA,IAAM,SAAA,GAAkB,KAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,cAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpD,GAAA;AAAA,EAACA,YAAA,CAAoB,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IAAc,0CAAA;AAAA,MAC9B,gBAAgB,YAAA,IAAgB,4CAAA;AAAA,MAChC;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAMJ,QAAA,kBAAA,GAAA,CAACA,YAAA,CAAoB,eAAA,EAApB,EAAoC,WAAU,uFAAA,EAAwF;AAAA;AACzI,CACD,CAAA;AACD,SAAA,CAAU,WAAA,GAAcA,aAAoB,mBAAA,CAAoB,WAAA;AAwChE,IAAM,UAAA,GAAmB,KAAA,CAAA,UAAA;AAAA,EAIvB,CACE;AAAA,IACE,SAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,IAAA,GAAO,MAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,qBAEA,IAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAACA,YAAA,CAAoB,QAAA;AAAA,UAApB;AAAA,YACC,QAAA;AAAA,YACA,eAAA;AAAA,YACA,KAAA;AAAA,YACC,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA;AAAA,cACT,iCAAA;AAAA,cACA,aAAA,EAAe;AAAA,aACjB;AAAA,YAEC;AAAA;AAAA,SACH;AAAA,QACC,WAAA,KAAgB,YAAA,oBAAgB,GAAA,CAAC,SAAA,EAAA,EAAU,aAAY,UAAA,EAAW,CAAA;AAAA,QAClE,WAAA,KAAgB,UAAA,oBAAc,GAAA,CAAC,SAAA,EAAA,EAAU,aAAY,YAAA,EAAa,CAAA;AAAA,wBACnE,GAAA,CAACA,YAAA,CAAoB,MAAA,EAApB,EAA2B;AAAA;AAAA;AAAA;AAGlC;AACA,UAAA,CAAW,WAAA,GAAcA,aAAoB,IAAA,CAAK,WAAA","file":"chunk-6KHY647C.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\nimport { cn } from \"../../utils\";\n\ninterface ScrollAreaProps\n extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n /**\n * Which axes get a scrollbar. `\"vertical\"` (the default) also clips\n * horizontal overflow, `\"horizontal\"` clips vertical overflow, `\"both\"`\n * scrolls either way — the same meaning the `overflow-*` utilities this\n * replaced had, because Radix's viewport derives `overflow-x`/`overflow-y`\n * from which scrollbars are mounted.\n */\n orientation?: \"vertical\" | \"horizontal\" | \"both\";\n /**\n * Props for the inner viewport — the element that actually scrolls.\n *\n * The root that this component's `ref`, `className` and remaining props land\n * on is `overflow: hidden`; scrolling happens one level in. `onScroll`,\n * `onScrollCapture` and `nonce` are routed to the viewport automatically\n * because they have no other correct destination. Anything else that must\n * address the scroller specifically — a `ref` for programmatic `scrollTop`, a\n * `tabIndex`, an `id`, `aria-*` — goes here. Values passed here win over the\n * automatically routed ones.\n */\n viewportProps?: React.ComponentPropsWithRef<\n typeof ScrollAreaPrimitive.Viewport\n >;\n}\n\n/**\n * The scrollbar track + thumb. Not exported: `ScrollArea` mounts the ones\n * `orientation` asks for, which is the whole of the existing public API.\n */\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" && \"h-full w-2 border-l border-l-transparent\",\n orientation === \"horizontal\" && \"h-2 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n {/*\n Same thumb the `::-webkit-scrollbar-thumb` rules drew: `w-2` track,\n fully rounded, `bg-border` at rest, `bg-muted-foreground/30` on hover.\n */}\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border transition-colors hover:bg-muted-foreground/30\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\n/**\n * ScrollArea — a scroll container with a consistent, styled scrollbar.\n *\n * Backed by Radix `ScrollArea`. The hand-rolled version was a single\n * `overflow-auto` div plus a stack of `::-webkit-scrollbar` pseudo-element\n * rules, which is a WebKit-only vocabulary: Firefox ignored every one of them\n * and rendered the OS scrollbar instead, so the \"design system scrollbar\" was\n * a Chrome/Safari-only promise. Radix hides the native scrollbar and renders a\n * real element in its place, so the same thumb appears in every browser, can\n * be dragged, and participates in the same hover/transition styling as the\n * rest of the system.\n *\n * `type` defaults to `\"auto\"` — scrollbar present exactly while the content\n * overflows — because that is what `overflow-auto` did. Radix's own default is\n * `\"hover\"`; pass `type` explicitly for `\"hover\"`, `\"always\"` or `\"scroll\"`.\n *\n * NOTE ON PROP DESTINATIONS. This used to be one element; it is now a root plus\n * an inner viewport, and the root does not scroll. Three props therefore have to\n * be routed inward rather than spread onto the root with the rest, because for\n * them the root is not merely a different element — it is an element on which\n * they do nothing at all, silently:\n *\n * - `onScroll` / `onScrollCapture` — `scroll` events do not bubble, so a\n * handler on the root would never fire once. Infinite-loading and\n * scroll-position UI would break with no error.\n * - `nonce` — Radix injects its scrollbar-hiding `<style>` from the viewport\n * and only reads a nonce given to that component. Under a strict\n * `style-src 'nonce-…'` policy the rule is blocked and the native scrollbar\n * shows up alongside the custom one.\n *\n * Everything else keeps landing on the root, which is the component's box and\n * the right owner for `className`, `style`, `id`, `role`, `aria-*`, `data-*`\n * and bubbling handlers. `viewportProps` is the escape hatch for the remainder\n * — most importantly a `ref`, since `ref` on this component addresses the root\n * and setting `scrollTop` there does nothing.\n *\n * @stability Stable\n */\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n ScrollAreaProps\n>(\n (\n {\n className,\n orientation = \"vertical\",\n type = \"auto\",\n children,\n onScroll,\n onScrollCapture,\n nonce,\n viewportProps,\n ...props\n },\n ref\n ) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n type={type}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n onScroll={onScroll}\n onScrollCapture={onScrollCapture}\n nonce={nonce}\n {...viewportProps}\n className={cn(\n \"h-full w-full rounded-[inherit]\",\n viewportProps?.className\n )}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n {orientation !== \"horizontal\" && <ScrollBar orientation=\"vertical\" />}\n {orientation !== \"vertical\" && <ScrollBar orientation=\"horizontal\" />}\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n);\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nexport { ScrollArea };\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { SettingsRow } from './chunk-A7AHVDG7.js';
|
|
3
|
+
import { Switch } from './chunk-27ELYTGE.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function ToggleRow({
|
|
8
|
+
label,
|
|
9
|
+
description,
|
|
10
|
+
checked,
|
|
11
|
+
defaultChecked,
|
|
12
|
+
onCheckedChange,
|
|
13
|
+
disabled,
|
|
14
|
+
id,
|
|
15
|
+
className,
|
|
16
|
+
testID,
|
|
17
|
+
rowTestID
|
|
18
|
+
}) {
|
|
19
|
+
const reactId = React.useId();
|
|
20
|
+
const switchId = id ?? `${reactId}-switch`;
|
|
21
|
+
const descriptionId = `${reactId}-description`;
|
|
22
|
+
const hasDescription = Boolean(description);
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
SettingsRow,
|
|
25
|
+
{
|
|
26
|
+
label,
|
|
27
|
+
description,
|
|
28
|
+
htmlFor: switchId,
|
|
29
|
+
descriptionId: hasDescription ? descriptionId : void 0,
|
|
30
|
+
disabled,
|
|
31
|
+
className,
|
|
32
|
+
testID: rowTestID,
|
|
33
|
+
children: /* @__PURE__ */ jsx(
|
|
34
|
+
Switch,
|
|
35
|
+
{
|
|
36
|
+
id: switchId,
|
|
37
|
+
"data-testid": testID,
|
|
38
|
+
"aria-describedby": hasDescription ? descriptionId : void 0,
|
|
39
|
+
checked,
|
|
40
|
+
defaultChecked,
|
|
41
|
+
onCheckedChange,
|
|
42
|
+
disabled
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { ToggleRow };
|
|
50
|
+
//# sourceMappingURL=chunk-6M4NHHKG.js.map
|
|
51
|
+
//# sourceMappingURL=chunk-6M4NHHKG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/patterns/toggle-row.tsx"],"names":[],"mappings":";;;;;AAqCO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,UAAgB,KAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,QAAA,GAAW,EAAA,IAAM,CAAA,EAAG,OAAO,CAAA,OAAA,CAAA;AACjC,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAIhC,EAAA,MAAM,cAAA,GAAiB,QAAQ,WAAW,CAAA;AAE1C,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MACT,aAAA,EAAe,iBAAiB,aAAA,GAAgB,MAAA;AAAA,MAChD,QAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA,EAAQ,SAAA;AAAA,MAER,QAAA,kBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,QAAA;AAAA,UACJ,aAAA,EAAa,MAAA;AAAA,UACb,kBAAA,EAAkB,iBAAiB,aAAA,GAAgB,MAAA;AAAA,UACnD,OAAA;AAAA,UACA,cAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ","file":"chunk-6M4NHHKG.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { SettingsRow } from \"./settings-row\";\nimport { Switch } from \"../ui/switch\";\n\nexport interface ToggleRowProps {\n label: React.ReactNode;\n description?: React.ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n /** Switch/label `id`. Auto-generated via `useId` when omitted. */\n id?: string;\n className?: string;\n /**\n * Stable test/automation selector for the **Switch** — emitted as\n * `data-testid` on the control itself, since that is the node automation\n * has to click to toggle. Use `rowTestID` to select the surrounding row.\n */\n testID?: string;\n /** Stable test/automation selector for the row wrapper. */\n rowTestID?: string;\n}\n\n/**\n * ToggleRow — `SettingsRow` pre-wired with a `Switch`: the common\n * label+description+on/off row for settings and preferences UI.\n *\n * Both halves of the row's text are wired to the control: the label via\n * `id`/`htmlFor`, and the description via `aria-describedby`, so a screen\n * reader focusing the switch hears the constraint (\"this will notify all team\n * members\") rather than skipping it.\n *\n * @stability Beta\n */\nexport function ToggleRow({\n label,\n description,\n checked,\n defaultChecked,\n onCheckedChange,\n disabled,\n id,\n className,\n testID,\n rowTestID,\n}: ToggleRowProps) {\n const reactId = React.useId();\n const switchId = id ?? `${reactId}-switch`;\n const descriptionId = `${reactId}-description`;\n // Mirrors FormDescription's own falsy check — it renders nothing for an\n // empty/absent description, so pointing aria-describedby at that id would\n // dangle at a node that was never emitted.\n const hasDescription = Boolean(description);\n\n return (\n <SettingsRow\n label={label}\n description={description}\n htmlFor={switchId}\n descriptionId={hasDescription ? descriptionId : undefined}\n disabled={disabled}\n className={className}\n testID={rowTestID}\n >\n <Switch\n id={switchId}\n data-testid={testID}\n aria-describedby={hasDescription ? descriptionId : undefined}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n />\n </SettingsRow>\n );\n}\n"]}
|
|
@@ -47,5 +47,5 @@ function useBrowserSearchParams() {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export { DefaultLink, defaultNavigate, isPathActive, useBrowserSearchParams };
|
|
50
|
-
//# sourceMappingURL=chunk-
|
|
51
|
-
//# sourceMappingURL=chunk-
|
|
50
|
+
//# sourceMappingURL=chunk-6NPEMLBA.js.map
|
|
51
|
+
//# sourceMappingURL=chunk-6NPEMLBA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/navigation.tsx"],"names":[],"mappings":";;;;AAgEO,IAAM,cAA6B,CAAC;AAAA,EACzC,IAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,yBACG,GAAA,EAAA,EAAE,IAAA,EAAY,eAAa,MAAA,EAAS,GAAG,MACrC,QAAA,EACH;AAUK,SAAS,YAAA,CAAa,IAAY,UAAA,EAA8B;AACrE,EAAA,IAAI,UAAA,IAAc,MAAM,OAAO,KAAA;AAC/B,EAAA,IAAI,EAAA,KAAO,YAAY,OAAO,IAAA;AAC9B,EAAA,IAAI,OAAO,GAAA,IAAO,UAAA,CAAW,WAAW,EAAA,GAAK,GAAG,GAAG,OAAO,IAAA;AAC1D,EAAA,OAAO,KAAA;AACT;AAkBO,IAAM,eAAA,GAA8B,CAAC,IAAA,KAAS;AACnD,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,MAAA,CAAO,QAAA,CAAS,OAAO,IAAI,CAAA;AAChE;AA4BO,SAAS,sBAAA,GAA8C;AAC5D,EAAA,MAAM,IAAA,GAAO,MACX,IAAI,eAAA;AAAA,IACF,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,MAAA,GAAS;AAAA,GAC3D;AAEF,EAAA,MAAM,CAAC,YAAA,EAAc,QAAQ,CAAA,GAAI,SAA0B,IAAI,CAAA;AAE/D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA;AACnC,IAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,KAAK,CAAA;AACzC,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,UAAA,EAAY,KAAK,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,MAAM,OAAA,KAAY;AACjB,MAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,MAAA,MAAM,EAAA,GAAK,KAAK,QAAA,EAAS;AACzB,MAAA,MAAM,GAAA,GACJ,MAAA,CAAO,QAAA,CAAS,QAAA,IAAY,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,GAAK,EAAA,CAAA,GAAM,MAAA,CAAO,QAAA,CAAS,IAAA;AACpE,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,MAAA,CAAO,QAAQ,YAAA,CAAa,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,IAAI,GAAG,CAAA;AAAA,MAC3D,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,QAAQ,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,IAAI,GAAG,CAAA;AAAA,MACxD;AACA,MAAA,QAAA,CAAS,IAAI,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,IACpC,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO,EAAE,cAAc,eAAA,EAAgB;AACzC","file":"chunk-6NPEMLBA.js","sourcesContent":["\"use client\";\n\n/**\n * Router-agnostic navigation primitives.\n *\n * genesis-ui does NOT depend on any router. Components that need to render a\n * link or navigate imperatively accept an injectable abstraction defined here,\n * and default to plain browser behavior (`<a>` / `window.location`). Consumers\n * on React Router or Next.js inject a thin adapter that maps these props to\n * their own `<Link>` / router.\n */\nimport {\n useCallback,\n useEffect,\n useState,\n type AnchorHTMLAttributes,\n type ComponentType,\n type ReactNode,\n} from \"react\";\n\n// ---------------------------------------------------------------------------\n// Link abstraction\n// ---------------------------------------------------------------------------\n\n/**\n * Props passed to an injectable link component. The contract is a plain anchor\n * (`href`), so the default works with NO router. A React Router consumer maps\n * `href` → `to`; a Next.js consumer passes `next/link` directly (it already\n * accepts `href`, `className`, `children`).\n *\n * @stability Beta\n */\nexport interface GenesisLinkProps {\n /** Destination path or URL. */\n href: string;\n className?: string;\n onClick?: () => void;\n children?: ReactNode;\n /** Set to \"page\" when the link points at the active route. */\n \"aria-current\"?: AnchorHTMLAttributes<HTMLAnchorElement>[\"aria-current\"];\n /** Accessible name — useful when the visible label is hidden (icon rail). */\n \"aria-label\"?: string;\n /** Native tooltip / title attribute. */\n title?: string;\n /**\n * Stable test/automation selector. {@link DefaultLink} renders it as\n * `data-testid`; injected router adapters (`next/link`, RR `Link`) forward it\n * to the underlying `<a>` too.\n */\n testID?: string;\n}\n\n/**\n * A component that renders a navigable link from {@link GenesisLinkProps}.\n *\n * @stability Beta\n */\nexport type LinkComponent = ComponentType<GenesisLinkProps>;\n\n/**\n * Default link — a plain `<a>`. No router required.\n *\n * @stability Beta\n */\nexport const DefaultLink: LinkComponent = ({\n href,\n children,\n testID,\n ...rest\n}) => (\n <a href={href} data-testid={testID} {...rest}>\n {children}\n </a>\n);\n\n/**\n * Default active-path matcher, mirroring React Router's `NavLink` (prefix\n * match, with `/` treated as exact). Consumers can override via an `isActive`\n * prop where components accept one.\n *\n * @stability Beta\n */\nexport function isPathActive(to: string, activePath?: string): boolean {\n if (activePath == null) return false;\n if (to === activePath) return true;\n if (to !== \"/\" && activePath.startsWith(to + \"/\")) return true;\n return false;\n}\n\n// ---------------------------------------------------------------------------\n// Imperative navigation abstraction\n// ---------------------------------------------------------------------------\n\n/**\n * Injectable imperative navigation callback.\n *\n * @stability Beta\n */\nexport type NavigateFn = (path: string) => void;\n\n/**\n * Default navigate — a full-page navigation. No router required.\n *\n * @stability Beta\n */\nexport const defaultNavigate: NavigateFn = (path) => {\n if (typeof window !== \"undefined\") window.location.assign(path);\n};\n\n// ---------------------------------------------------------------------------\n// Search-params abstraction (for URL-synced hooks)\n// ---------------------------------------------------------------------------\n\n/**\n * Minimal, router-agnostic replacement for React Router's `useSearchParams`\n * return shape. Consumers may inject their router's implementation for full\n * SPA integration; otherwise the browser History API is used.\n *\n * @stability Beta\n */\nexport interface SearchParamsAdapter {\n searchParams: URLSearchParams;\n setSearchParams: (\n next: URLSearchParams,\n options?: { replace?: boolean },\n ) => void;\n}\n\n/**\n * Browser-native {@link SearchParamsAdapter} built on the History API. Reads\n * the current query string and writes updates via `pushState`/`replaceState`,\n * staying reactive to `popstate` events. No router required.\n *\n * @stability Beta\n */\nexport function useBrowserSearchParams(): SearchParamsAdapter {\n const read = () =>\n new URLSearchParams(\n typeof window !== \"undefined\" ? window.location.search : \"\",\n );\n\n const [searchParams, setLocal] = useState<URLSearchParams>(read);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onPop = () => setLocal(read());\n window.addEventListener(\"popstate\", onPop);\n return () => window.removeEventListener(\"popstate\", onPop);\n }, []);\n\n const setSearchParams = useCallback<SearchParamsAdapter[\"setSearchParams\"]>(\n (next, options) => {\n if (typeof window === \"undefined\") return;\n const qs = next.toString();\n const url =\n window.location.pathname + (qs ? `?${qs}` : \"\") + window.location.hash;\n if (options?.replace) {\n window.history.replaceState(window.history.state, \"\", url);\n } else {\n window.history.pushState(window.history.state, \"\", url);\n }\n setLocal(new URLSearchParams(next));\n },\n [],\n );\n\n return { searchParams, setSearchParams };\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { AspectRatio as AspectRatio$1 } from 'radix-ui';
|
|
3
|
+
|
|
4
|
+
// src/components/ui/aspect-ratio.tsx
|
|
5
|
+
var AspectRatio = AspectRatio$1.Root;
|
|
6
|
+
|
|
7
|
+
export { AspectRatio };
|
|
8
|
+
//# sourceMappingURL=chunk-6Q6CLLJ4.js.map
|
|
9
|
+
//# sourceMappingURL=chunk-6Q6CLLJ4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/aspect-ratio.tsx"],"names":["AspectRatioPrimitive"],"mappings":";;;AAIA,IAAM,cAAcA,aAAA,CAAqB","file":"chunk-6Q6CLLJ4.js","sourcesContent":["\"use client\";\n\nimport { AspectRatio as AspectRatioPrimitive } from \"radix-ui\";\n\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n"]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from './chunk-NZ5WBA4R.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import
|
|
4
|
+
import { ContextMenu as ContextMenu$1 } from 'radix-ui';
|
|
5
5
|
import { ChevronRight, Check, Circle } from 'lucide-react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
-
var ContextMenu =
|
|
9
|
-
var ContextMenuTrigger =
|
|
10
|
-
var ContextMenuGroup =
|
|
11
|
-
var ContextMenuPortal =
|
|
12
|
-
var ContextMenuSub =
|
|
13
|
-
var ContextMenuRadioGroup =
|
|
8
|
+
var ContextMenu = ContextMenu$1.Root;
|
|
9
|
+
var ContextMenuTrigger = ContextMenu$1.Trigger;
|
|
10
|
+
var ContextMenuGroup = ContextMenu$1.Group;
|
|
11
|
+
var ContextMenuPortal = ContextMenu$1.Portal;
|
|
12
|
+
var ContextMenuSub = ContextMenu$1.Sub;
|
|
13
|
+
var ContextMenuRadioGroup = ContextMenu$1.RadioGroup;
|
|
14
14
|
var ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
15
|
-
|
|
15
|
+
ContextMenu$1.SubTrigger,
|
|
16
16
|
{
|
|
17
17
|
ref,
|
|
18
18
|
className: cn(
|
|
@@ -27,9 +27,9 @@ var ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...p
|
|
|
27
27
|
]
|
|
28
28
|
}
|
|
29
29
|
));
|
|
30
|
-
ContextMenuSubTrigger.displayName =
|
|
30
|
+
ContextMenuSubTrigger.displayName = ContextMenu$1.SubTrigger.displayName;
|
|
31
31
|
var ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
32
|
-
|
|
32
|
+
ContextMenu$1.SubContent,
|
|
33
33
|
{
|
|
34
34
|
ref,
|
|
35
35
|
className: cn(
|
|
@@ -39,9 +39,9 @@ var ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => /
|
|
|
39
39
|
...props
|
|
40
40
|
}
|
|
41
41
|
));
|
|
42
|
-
ContextMenuSubContent.displayName =
|
|
43
|
-
var ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
44
|
-
|
|
42
|
+
ContextMenuSubContent.displayName = ContextMenu$1.SubContent.displayName;
|
|
43
|
+
var ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
44
|
+
ContextMenu$1.Content,
|
|
45
45
|
{
|
|
46
46
|
ref,
|
|
47
47
|
className: cn(
|
|
@@ -51,9 +51,9 @@ var ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
51
51
|
...props
|
|
52
52
|
}
|
|
53
53
|
) }));
|
|
54
|
-
ContextMenuContent.displayName =
|
|
54
|
+
ContextMenuContent.displayName = ContextMenu$1.Content.displayName;
|
|
55
55
|
var ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
56
|
-
|
|
56
|
+
ContextMenu$1.Item,
|
|
57
57
|
{
|
|
58
58
|
ref,
|
|
59
59
|
className: cn(
|
|
@@ -64,9 +64,9 @@ var ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) =>
|
|
|
64
64
|
...props
|
|
65
65
|
}
|
|
66
66
|
));
|
|
67
|
-
ContextMenuItem.displayName =
|
|
67
|
+
ContextMenuItem.displayName = ContextMenu$1.Item.displayName;
|
|
68
68
|
var ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
69
|
-
|
|
69
|
+
ContextMenu$1.CheckboxItem,
|
|
70
70
|
{
|
|
71
71
|
ref,
|
|
72
72
|
className: cn(
|
|
@@ -76,14 +76,14 @@ var ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked,
|
|
|
76
76
|
checked,
|
|
77
77
|
...props,
|
|
78
78
|
children: [
|
|
79
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
79
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) }),
|
|
80
80
|
children
|
|
81
81
|
]
|
|
82
82
|
}
|
|
83
83
|
));
|
|
84
|
-
ContextMenuCheckboxItem.displayName =
|
|
84
|
+
ContextMenuCheckboxItem.displayName = ContextMenu$1.CheckboxItem.displayName;
|
|
85
85
|
var ContextMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
86
|
-
|
|
86
|
+
ContextMenu$1.RadioItem,
|
|
87
87
|
{
|
|
88
88
|
ref,
|
|
89
89
|
className: cn(
|
|
@@ -92,14 +92,14 @@ var ContextMenuRadioItem = React.forwardRef(({ className, children, ...props },
|
|
|
92
92
|
),
|
|
93
93
|
...props,
|
|
94
94
|
children: [
|
|
95
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
95
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }),
|
|
96
96
|
children
|
|
97
97
|
]
|
|
98
98
|
}
|
|
99
99
|
));
|
|
100
|
-
ContextMenuRadioItem.displayName =
|
|
100
|
+
ContextMenuRadioItem.displayName = ContextMenu$1.RadioItem.displayName;
|
|
101
101
|
var ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
102
|
-
|
|
102
|
+
ContextMenu$1.Label,
|
|
103
103
|
{
|
|
104
104
|
ref,
|
|
105
105
|
className: cn(
|
|
@@ -110,16 +110,16 @@ var ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) =>
|
|
|
110
110
|
...props
|
|
111
111
|
}
|
|
112
112
|
));
|
|
113
|
-
ContextMenuLabel.displayName =
|
|
113
|
+
ContextMenuLabel.displayName = ContextMenu$1.Label.displayName;
|
|
114
114
|
var ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
115
|
-
|
|
115
|
+
ContextMenu$1.Separator,
|
|
116
116
|
{
|
|
117
117
|
ref,
|
|
118
118
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
119
119
|
...props
|
|
120
120
|
}
|
|
121
121
|
));
|
|
122
|
-
ContextMenuSeparator.displayName =
|
|
122
|
+
ContextMenuSeparator.displayName = ContextMenu$1.Separator.displayName;
|
|
123
123
|
var ContextMenuShortcut = ({
|
|
124
124
|
className,
|
|
125
125
|
...props
|
|
@@ -138,5 +138,5 @@ var ContextMenuShortcut = ({
|
|
|
138
138
|
ContextMenuShortcut.displayName = "ContextMenuShortcut";
|
|
139
139
|
|
|
140
140
|
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-6TVMQH6M.js.map
|
|
142
|
+
//# sourceMappingURL=chunk-6TVMQH6M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/context-menu.tsx"],"names":["ContextMenuPrimitive"],"mappings":"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","file":"chunk-6TVMQH6M.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ContextMenu as ContextMenuPrimitive } from \"radix-ui\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\n\nimport { cn } from \"../../utils\";\n\nconst ContextMenu = ContextMenuPrimitive.Root;\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.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 data-[state=open]:bg-accent focus:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.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));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\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-md 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 </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.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 transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.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 transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\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 <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.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 transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({\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};\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Calendar } from './chunk-
|
|
3
|
-
import { Popover, PopoverTrigger, PopoverContent } from './chunk-
|
|
4
|
-
import { Button } from './chunk-
|
|
2
|
+
import { Calendar } from './chunk-J6FBA7PH.js';
|
|
3
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-22XB3Q6H.js';
|
|
4
|
+
import { Button } from './chunk-NWSCYLPT.js';
|
|
5
5
|
import { cn } from './chunk-NZ5WBA4R.js';
|
|
6
6
|
import { CalendarIcon } from 'lucide-react';
|
|
7
7
|
import { format } from 'date-fns';
|
|
@@ -36,5 +36,5 @@ function DatePicker({
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export { DatePicker };
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-6XPMU65K.js.map
|
|
40
|
+
//# sourceMappingURL=chunk-6XPMU65K.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/date-picker.tsx"],"names":[],"mappings":";;;;;;;;AAmBA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,aAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,+CAAA;AAAA,UACA,CAAC,KAAA,IAAS,uBAAA;AAAA,UACV;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,cAAA,EAAe,CAAA;AAAA,UACtC,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,GAAI;AAAA;AAAA;AAAA,KAClC,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,OAAM,OAAA,EAC3C,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,QAAA,EAAS,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,CAAA,EAC/D;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/date-picker.tsx"],"names":[],"mappings":";;;;;;;;AAmBA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,aAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,+CAAA;AAAA,UACA,CAAC,KAAA,IAAS,uBAAA;AAAA,UACV;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,cAAA,EAAe,CAAA;AAAA,UACtC,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,GAAI;AAAA;AAAA;AAAA,KAClC,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,OAAM,OAAA,EAC3C,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,QAAA,EAAS,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,CAAA,EAC/D;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-6XPMU65K.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format } from \"date-fns\";\n\nimport { cn } from \"../../utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\ninterface DatePickerProps {\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\nfunction DatePicker({\n value,\n onChange,\n placeholder = \"Pick a date\",\n className,\n disabled,\n}: DatePickerProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-[240px] justify-start text-left font-normal\",\n !value && \"text-muted-foreground\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {value ? format(value, \"PPP\") : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar mode=\"single\" selected={value} onSelect={onChange} />\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { DatePicker, type DatePickerProps };\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from './chunk-NZ5WBA4R.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import
|
|
4
|
+
import { Dialog as Dialog$1 } from 'radix-ui';
|
|
5
5
|
import { X } from 'lucide-react';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
-
var Dialog =
|
|
9
|
-
var DialogTrigger =
|
|
10
|
-
var DialogPortal =
|
|
11
|
-
var DialogClose =
|
|
8
|
+
var Dialog = Dialog$1.Root;
|
|
9
|
+
var DialogTrigger = Dialog$1.Trigger;
|
|
10
|
+
var DialogPortal = Dialog$1.Portal;
|
|
11
|
+
var DialogClose = Dialog$1.Close;
|
|
12
12
|
var DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
13
|
-
|
|
13
|
+
Dialog$1.Overlay,
|
|
14
14
|
{
|
|
15
15
|
ref,
|
|
16
16
|
className: cn(
|
|
@@ -20,11 +20,11 @@ var DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
20
20
|
...props
|
|
21
21
|
}
|
|
22
22
|
));
|
|
23
|
-
DialogOverlay.displayName =
|
|
23
|
+
DialogOverlay.displayName = Dialog$1.Overlay.displayName;
|
|
24
24
|
var DialogContent = React.forwardRef(({ className, children, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
25
25
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
26
26
|
/* @__PURE__ */ jsxs(
|
|
27
|
-
|
|
27
|
+
Dialog$1.Content,
|
|
28
28
|
{
|
|
29
29
|
ref,
|
|
30
30
|
className: cn(
|
|
@@ -34,7 +34,7 @@ var DialogContent = React.forwardRef(({ className, children, showCloseButton = t
|
|
|
34
34
|
...props,
|
|
35
35
|
children: [
|
|
36
36
|
children,
|
|
37
|
-
showCloseButton && /* @__PURE__ */ jsxs(
|
|
37
|
+
showCloseButton && /* @__PURE__ */ jsxs(Dialog$1.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent", children: [
|
|
38
38
|
/* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
|
|
39
39
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
40
40
|
] })
|
|
@@ -42,7 +42,7 @@ var DialogContent = React.forwardRef(({ className, children, showCloseButton = t
|
|
|
42
42
|
}
|
|
43
43
|
)
|
|
44
44
|
] }));
|
|
45
|
-
DialogContent.displayName =
|
|
45
|
+
DialogContent.displayName = Dialog$1.Content.displayName;
|
|
46
46
|
var DialogHeader = ({
|
|
47
47
|
className,
|
|
48
48
|
...props
|
|
@@ -64,24 +64,24 @@ var DialogFooter = ({
|
|
|
64
64
|
}
|
|
65
65
|
);
|
|
66
66
|
var DialogTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
67
|
-
|
|
67
|
+
Dialog$1.Title,
|
|
68
68
|
{
|
|
69
69
|
ref,
|
|
70
70
|
className: cn("text-lg font-semibold leading-none tracking-tight", className),
|
|
71
71
|
...props
|
|
72
72
|
}
|
|
73
73
|
));
|
|
74
|
-
DialogTitle.displayName =
|
|
74
|
+
DialogTitle.displayName = Dialog$1.Title.displayName;
|
|
75
75
|
var DialogDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
76
|
-
|
|
76
|
+
Dialog$1.Description,
|
|
77
77
|
{
|
|
78
78
|
ref,
|
|
79
79
|
className: cn("text-sm text-muted-foreground", className),
|
|
80
80
|
...props
|
|
81
81
|
}
|
|
82
82
|
));
|
|
83
|
-
DialogDescription.displayName =
|
|
83
|
+
DialogDescription.displayName = Dialog$1.Description.displayName;
|
|
84
84
|
|
|
85
85
|
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-7XMZVISM.js.map
|
|
87
|
+
//# sourceMappingURL=chunk-7XMZVISM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":";;;;;;AAOA,IAAM,SAASA,QAAA,CAAgB;AAC/B,IAAM,gBAAgBA,QAAA,CAAgB;AACtC,IAAM,eAAeA,QAAA,CAAgB;AACrC,IAAM,cAAcA,QAAA,CAAgB;AAEpC,IAAM,aAAA,GAAsB,iBAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,QAAA,CAAgB,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,aAAA,CAAc,WAAA,GAAcA,SAAgB,OAAA,CAAQ,WAAA;AAEpD,IAAM,aAAA,GAAsB,KAAA,CAAA,UAAA,CAK1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,eAAA,GAAkB,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,GAAA,0BAC3D,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACf,IAAA;AAAA,IAACA,QAAA,CAAgB,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,siBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,mCACC,IAAA,CAACA,QAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAU,uOAAA,EAC/B,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,CAAA,EAAA,EAAE,WAAU,SAAA,EAAU,CAAA;AAAA,0BACvB,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AAEJ,CAAA,EACF,CACD;AACD,aAAA,CAAc,WAAA,GAAcA,SAAgB,OAAA,CAAQ,WAAA;AAEpD,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAGF,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN;AAGF,IAAM,WAAA,GAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,QAAA,CAAgB,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,IAC3E,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAcA,SAAgB,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0B,iBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,QAAA,CAAgB,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,WAAA,GAAcA,SAAgB,WAAA,CAAY,WAAA","file":"chunk-7XMZVISM.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n }\n>(({ className, children, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] sm:max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n);\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n);\n\nconst DialogTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { FormDescription } from './chunk-R7QFP6EL.js';
|
|
2
|
+
import { Label } from './chunk-F47U5KNW.js';
|
|
3
|
+
import { cn } from './chunk-NZ5WBA4R.js';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function SettingsRow({
|
|
7
|
+
label,
|
|
8
|
+
description,
|
|
9
|
+
children,
|
|
10
|
+
htmlFor,
|
|
11
|
+
descriptionId,
|
|
12
|
+
disabled,
|
|
13
|
+
className,
|
|
14
|
+
testID
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */ jsxs(
|
|
17
|
+
"div",
|
|
18
|
+
{
|
|
19
|
+
"data-slot": "settings-row",
|
|
20
|
+
"data-testid": testID,
|
|
21
|
+
className: cn(
|
|
22
|
+
"flex items-center justify-between gap-4 py-3",
|
|
23
|
+
disabled && "opacity-50",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-0.5", children: [
|
|
28
|
+
htmlFor ? /* @__PURE__ */ jsx(Label, { htmlFor, children: label }) : (
|
|
29
|
+
// A <label> with no `for` and no control nested inside it associates
|
|
30
|
+
// with nothing — it renders identically and is an accessibility
|
|
31
|
+
// no-op. Rows whose control names itself (Button) or has no control
|
|
32
|
+
// at all (Badge, a version string) take this branch.
|
|
33
|
+
/* @__PURE__ */ jsx(
|
|
34
|
+
"span",
|
|
35
|
+
{
|
|
36
|
+
"data-slot": "settings-row-label",
|
|
37
|
+
className: "block text-sm font-medium leading-none",
|
|
38
|
+
children: label
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ jsx(FormDescription, { id: descriptionId, children: description })
|
|
43
|
+
] }),
|
|
44
|
+
children ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children }) : null
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { SettingsRow };
|
|
51
|
+
//# sourceMappingURL=chunk-A7AHVDG7.js.map
|
|
52
|
+
//# sourceMappingURL=chunk-A7AHVDG7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/patterns/settings-row.tsx"],"names":[],"mappings":";;;;;AA0CO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACT,8CAAA;AAAA,QACA,QAAA,IAAY,YAAA;AAAA,QACZ;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,OAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAMhC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,WAAA,EAAU,oBAAA;AAAA,gBACV,SAAA,EAAU,wCAAA;AAAA,gBAET,QAAA,EAAA;AAAA;AAAA;AACH,WAAA;AAAA,0BAEF,GAAA,CAAC,eAAA,EAAA,EAAgB,EAAA,EAAI,aAAA,EAAgB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EACnD,CAAA;AAAA,QACC,2BACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EAAoC,UAAS,CAAA,GAC1D;AAAA;AAAA;AAAA,GACN;AAEJ","file":"chunk-A7AHVDG7.js","sourcesContent":["import * as React from \"react\";\nimport { Label } from \"../ui/label\";\nimport { FormDescription } from \"./form-field\";\nimport { cn } from \"../../utils\";\n\nexport interface SettingsRowProps {\n /** Row label. */\n label: React.ReactNode;\n /** Supporting copy shown under the label, muted. */\n description?: React.ReactNode;\n /** Control(s) rendered on the trailing side. */\n children?: React.ReactNode;\n /**\n * `id` of the control this row labels (e.g. a Switch), for a11y and\n * click-to-focus. Supply it whenever the trailing control is labelable —\n * the label text is then a real `<label for>`. Omit it for rows whose\n * control names itself (a Button) or has none (a Badge); the text renders\n * as a plain `<span>` rather than a `<label>` associated with nothing.\n */\n htmlFor?: string;\n /**\n * `id` applied to the description paragraph so the trailing control can point\n * at it with `aria-describedby` — otherwise the description is an unrelated\n * `<p>` that a screen reader skips while navigating controls. `ToggleRow`\n * wires this automatically; pass it yourself when supplying your own control.\n */\n descriptionId?: string;\n /** Dims the row to indicate the control it wraps is disabled. */\n disabled?: boolean;\n className?: string;\n /** Stable test/automation selector (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * SettingsRow — label + description on one side, an arbitrary trailing\n * control (Switch, Select, Button, Badge, ...) on the other. This is the\n * shared layout behind every settings/preferences list row; see `ToggleRow`\n * for the common label+description+Switch case pre-wired.\n *\n * @stability Beta\n */\nexport function SettingsRow({\n label,\n description,\n children,\n htmlFor,\n descriptionId,\n disabled,\n className,\n testID,\n}: SettingsRowProps) {\n return (\n <div\n data-slot=\"settings-row\"\n data-testid={testID}\n className={cn(\n \"flex items-center justify-between gap-4 py-3\",\n disabled && \"opacity-50\",\n className,\n )}\n >\n <div className=\"min-w-0 space-y-0.5\">\n {htmlFor ? (\n <Label htmlFor={htmlFor}>{label}</Label>\n ) : (\n // A <label> with no `for` and no control nested inside it associates\n // with nothing — it renders identically and is an accessibility\n // no-op. Rows whose control names itself (Button) or has no control\n // at all (Badge, a version string) take this branch.\n <span\n data-slot=\"settings-row-label\"\n className=\"block text-sm font-medium leading-none\"\n >\n {label}\n </span>\n )}\n <FormDescription id={descriptionId}>{description}</FormDescription>\n </div>\n {children ? (\n <div className=\"flex shrink-0 items-center gap-2\">{children}</div>\n ) : null}\n </div>\n );\n}\n"]}
|