@devalok/shilp-sutra 0.1.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/composed/avatar-group.d.ts +17 -0
- package/dist/composed/avatar-group.d.ts.map +1 -0
- package/dist/composed/avatar-group.js +103 -0
- package/dist/composed/command-palette.d.ts +29 -0
- package/dist/composed/command-palette.d.ts.map +1 -0
- package/dist/composed/command-palette.js +215 -0
- package/dist/composed/content-card.d.ts +15 -0
- package/dist/composed/content-card.d.ts.map +1 -0
- package/dist/composed/content-card.js +108 -0
- package/dist/composed/date-picker/calendar-grid.d.ts +21 -0
- package/dist/composed/date-picker/calendar-grid.d.ts.map +1 -0
- package/dist/composed/date-picker/calendar-grid.js +173 -0
- package/dist/composed/date-picker/date-picker.d.ts +14 -0
- package/dist/composed/date-picker/date-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/date-picker.js +123 -0
- package/dist/composed/date-picker/date-range-picker.d.ts +23 -0
- package/dist/composed/date-picker/date-range-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/date-range-picker.js +166 -0
- package/dist/composed/date-picker/date-time-picker.d.ts +24 -0
- package/dist/composed/date-picker/date-time-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/date-time-picker.js +192 -0
- package/dist/composed/date-picker/index.d.ts +18 -0
- package/dist/composed/date-picker/index.d.ts.map +1 -0
- package/dist/composed/date-picker/month-picker.d.ts +10 -0
- package/dist/composed/date-picker/month-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/month-picker.js +52 -0
- package/dist/composed/date-picker/presets.d.ts +9 -0
- package/dist/composed/date-picker/presets.d.ts.map +1 -0
- package/dist/composed/date-picker/presets.js +83 -0
- package/dist/composed/date-picker/time-picker.d.ts +24 -0
- package/dist/composed/date-picker/time-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/time-picker.js +180 -0
- package/dist/composed/date-picker/use-calendar.d.ts +9 -0
- package/dist/composed/date-picker/use-calendar.d.ts.map +1 -0
- package/dist/composed/date-picker/use-calendar.js +16 -0
- package/dist/composed/date-picker/year-picker.d.ts +10 -0
- package/dist/composed/date-picker/year-picker.d.ts.map +1 -0
- package/dist/composed/date-picker/year-picker.js +44 -0
- package/dist/composed/empty-state.d.ts +12 -0
- package/dist/composed/empty-state.d.ts.map +1 -0
- package/dist/composed/empty-state.js +74 -0
- package/dist/composed/error-boundary.d.ts +8 -0
- package/dist/composed/error-boundary.d.ts.map +1 -0
- package/dist/composed/error-boundary.js +114 -0
- package/dist/composed/global-loading.d.ts +7 -0
- package/dist/composed/global-loading.d.ts.map +1 -0
- package/dist/composed/global-loading.js +43 -0
- package/dist/composed/index.d.ts +28 -0
- package/dist/composed/index.d.ts.map +1 -0
- package/dist/composed/index.js +54 -0
- package/dist/composed/lib/string-utils.d.ts +6 -0
- package/dist/composed/lib/string-utils.d.ts.map +1 -0
- package/dist/composed/lib/string-utils.js +7 -0
- package/dist/composed/loading-skeleton.d.ts +22 -0
- package/dist/composed/loading-skeleton.d.ts.map +1 -0
- package/dist/composed/loading-skeleton.js +164 -0
- package/dist/composed/member-picker.d.ts +17 -0
- package/dist/composed/member-picker.d.ts.map +1 -0
- package/dist/composed/member-picker.js +81 -0
- package/dist/composed/page-header.d.ts +15 -0
- package/dist/composed/page-header.d.ts.map +1 -0
- package/dist/composed/page-header.js +65 -0
- package/dist/composed/page-skeletons.d.ts +6 -0
- package/dist/composed/page-skeletons.d.ts.map +1 -0
- package/dist/composed/page-skeletons.js +128 -0
- package/dist/composed/priority-indicator.d.ts +12 -0
- package/dist/composed/priority-indicator.d.ts.map +1 -0
- package/dist/composed/priority-indicator.js +86 -0
- package/dist/composed/rich-text-editor.d.ts +16 -0
- package/dist/composed/rich-text-editor.d.ts.map +1 -0
- package/dist/composed/rich-text-editor.js +222 -0
- package/dist/composed/status-badge.d.ts +13 -0
- package/dist/composed/status-badge.d.ts.map +1 -0
- package/dist/composed/status-badge.js +69 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/use-color-mode.d.ts +7 -0
- package/dist/hooks/use-color-mode.d.ts.map +1 -0
- package/dist/hooks/use-color-mode.js +23 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +14 -0
- package/dist/hooks/use-toast.d.ts +46 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +97 -0
- package/dist/primitives/_internal/number.d.ts +7 -0
- package/dist/primitives/_internal/number.d.ts.map +1 -0
- package/dist/primitives/_internal/number.js +6 -0
- package/dist/primitives/_internal/primitive.d.ts +17 -0
- package/dist/primitives/_internal/primitive.d.ts.map +1 -0
- package/dist/primitives/_internal/primitive.js +9 -0
- package/dist/primitives/_internal/react-arrow.d.ts +14 -0
- package/dist/primitives/_internal/react-arrow.d.ts.map +1 -0
- package/dist/primitives/_internal/react-arrow.js +24 -0
- package/dist/primitives/_internal/react-collection.d.ts +22 -0
- package/dist/primitives/_internal/react-collection.d.ts.map +1 -0
- package/dist/primitives/_internal/react-collection.js +48 -0
- package/dist/primitives/_internal/react-compose-refs.d.ts +10 -0
- package/dist/primitives/_internal/react-compose-refs.d.ts.map +1 -0
- package/dist/primitives/_internal/react-compose-refs.js +29 -0
- package/dist/primitives/_internal/react-context.d.ts +25 -0
- package/dist/primitives/_internal/react-context.d.ts.map +1 -0
- package/dist/primitives/_internal/react-context.js +74 -0
- package/dist/primitives/_internal/react-direction.d.ts +16 -0
- package/dist/primitives/_internal/react-direction.d.ts.map +1 -0
- package/dist/primitives/_internal/react-direction.js +10 -0
- package/dist/primitives/_internal/react-dismissable-layer.d.ts +30 -0
- package/dist/primitives/_internal/react-dismissable-layer.d.ts.map +1 -0
- package/dist/primitives/_internal/react-dismissable-layer.js +131 -0
- package/dist/primitives/_internal/react-focus-guards.d.ts +12 -0
- package/dist/primitives/_internal/react-focus-guards.d.ts.map +1 -0
- package/dist/primitives/_internal/react-focus-guards.js +17 -0
- package/dist/primitives/_internal/react-focus-scope.d.ts +18 -0
- package/dist/primitives/_internal/react-focus-scope.d.ts.map +1 -0
- package/dist/primitives/_internal/react-focus-scope.js +137 -0
- package/dist/primitives/_internal/react-id.d.ts +7 -0
- package/dist/primitives/_internal/react-id.d.ts.map +1 -0
- package/dist/primitives/_internal/react-id.js +14 -0
- package/dist/primitives/_internal/react-popper.d.ts +50 -0
- package/dist/primitives/_internal/react-popper.d.ts.map +1 -0
- package/dist/primitives/_internal/react-popper.js +199 -0
- package/dist/primitives/_internal/react-portal.d.ts +15 -0
- package/dist/primitives/_internal/react-portal.d.ts.map +1 -0
- package/dist/primitives/_internal/react-portal.js +16 -0
- package/dist/primitives/_internal/react-presence.d.ts +16 -0
- package/dist/primitives/_internal/react-presence.d.ts.map +1 -0
- package/dist/primitives/_internal/react-presence.js +71 -0
- package/dist/primitives/_internal/react-primitive.d.ts +20 -0
- package/dist/primitives/_internal/react-primitive.d.ts.map +1 -0
- package/dist/primitives/_internal/react-primitive.js +36 -0
- package/dist/primitives/_internal/react-use-callback-ref.d.ts +7 -0
- package/dist/primitives/_internal/react-use-callback-ref.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-callback-ref.js +13 -0
- package/dist/primitives/_internal/react-use-controllable-state.d.ts +16 -0
- package/dist/primitives/_internal/react-use-controllable-state.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-controllable-state.js +44 -0
- package/dist/primitives/_internal/react-use-effect-event.d.ts +8 -0
- package/dist/primitives/_internal/react-use-effect-event.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-escape-keydown.d.ts +7 -0
- package/dist/primitives/_internal/react-use-escape-keydown.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-escape-keydown.js +14 -0
- package/dist/primitives/_internal/react-use-is-hydrated.d.ts +7 -0
- package/dist/primitives/_internal/react-use-is-hydrated.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-is-hydrated.js +15 -0
- package/dist/primitives/_internal/react-use-layout-effect.d.ts +8 -0
- package/dist/primitives/_internal/react-use-layout-effect.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-layout-effect.js +6 -0
- package/dist/primitives/_internal/react-use-previous.d.ts +7 -0
- package/dist/primitives/_internal/react-use-previous.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-previous.js +8 -0
- package/dist/primitives/_internal/react-use-rect.d.ts +4 -0
- package/dist/primitives/_internal/react-use-rect.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-size.d.ts +10 -0
- package/dist/primitives/_internal/react-use-size.d.ts.map +1 -0
- package/dist/primitives/_internal/react-use-size.js +27 -0
- package/dist/primitives/_internal/rect.d.ts +12 -0
- package/dist/primitives/_internal/rect.d.ts.map +1 -0
- package/dist/primitives/react-accordion.js +239 -0
- package/dist/primitives/react-alert-dialog.js +127 -0
- package/dist/primitives/react-aspect-ratio.js +43 -0
- package/dist/primitives/react-avatar.js +75 -0
- package/dist/primitives/react-checkbox.js +251 -0
- package/dist/primitives/react-collapsible.js +120 -0
- package/dist/primitives/react-context-menu.js +240 -0
- package/dist/primitives/react-dialog.js +262 -0
- package/dist/primitives/react-dropdown-menu.js +227 -0
- package/dist/primitives/react-hover-card.js +187 -0
- package/dist/primitives/react-label.js +20 -0
- package/dist/primitives/react-menu.js +652 -0
- package/dist/primitives/react-menubar.js +355 -0
- package/dist/primitives/react-navigation-menu.js +607 -0
- package/dist/primitives/react-popover.js +243 -0
- package/dist/primitives/react-progress.js +84 -0
- package/dist/primitives/react-radio-group.js +238 -0
- package/dist/primitives/react-roving-focus.js +183 -0
- package/dist/primitives/react-select.js +862 -0
- package/dist/primitives/react-separator.js +24 -0
- package/dist/primitives/react-slider.js +437 -0
- package/dist/primitives/react-slot.d.ts +27 -0
- package/dist/primitives/react-slot.d.ts.map +1 -0
- package/dist/primitives/react-slot.js +70 -0
- package/dist/primitives/react-switch.js +132 -0
- package/dist/primitives/react-tabs.js +163 -0
- package/dist/primitives/react-toast.js +446 -0
- package/dist/primitives/react-toggle-group.js +137 -0
- package/dist/primitives/react-toggle.js +33 -0
- package/dist/primitives/react-tooltip.js +338 -0
- package/dist/primitives/react-visually-hidden.js +32 -0
- package/dist/shell/app-command-palette.d.ts +35 -0
- package/dist/shell/app-command-palette.d.ts.map +1 -0
- package/dist/shell/app-command-palette.js +196 -0
- package/dist/shell/bottom-navbar.d.ts +35 -0
- package/dist/shell/bottom-navbar.d.ts.map +1 -0
- package/dist/shell/bottom-navbar.js +160 -0
- package/dist/shell/index.d.ts +7 -0
- package/dist/shell/index.d.ts.map +1 -0
- package/dist/shell/index.js +14 -0
- package/dist/shell/notification-center.d.ts +50 -0
- package/dist/shell/notification-center.d.ts.map +1 -0
- package/dist/shell/notification-center.js +221 -0
- package/dist/shell/notification-preferences.d.ts +41 -0
- package/dist/shell/notification-preferences.d.ts.map +1 -0
- package/dist/shell/notification-preferences.js +183 -0
- package/dist/shell/sidebar.d.ts +51 -0
- package/dist/shell/sidebar.d.ts.map +1 -0
- package/dist/shell/sidebar.js +101 -0
- package/dist/shell/top-bar.d.ts +33 -0
- package/dist/shell/top-bar.d.ts.map +1 -0
- package/dist/shell/top-bar.js +140 -0
- package/dist/tailwind/index.d.ts +2 -0
- package/dist/tailwind/index.d.ts.map +1 -0
- package/dist/tailwind/index.js +4 -0
- package/dist/tailwind/preset.d.ts +4 -0
- package/dist/tailwind/preset.d.ts.map +1 -0
- package/dist/tailwind/preset.js +310 -0
- package/dist/tokens/index.css +3 -0
- package/dist/tokens/primitives.css +189 -0
- package/dist/tokens/semantic.css +426 -0
- package/dist/tokens/typography-semantic.css +100 -0
- package/dist/tokens/typography.css +393 -0
- package/dist/ui/accordion.d.ts +53 -0
- package/dist/ui/accordion.d.ts.map +1 -0
- package/dist/ui/accordion.js +46 -0
- package/dist/ui/alert-dialog.d.ts +21 -0
- package/dist/ui/alert-dialog.d.ts.map +1 -0
- package/dist/ui/alert-dialog.js +117 -0
- package/dist/ui/alert.d.ts +47 -0
- package/dist/ui/alert.d.ts.map +1 -0
- package/dist/ui/alert.js +52 -0
- package/dist/ui/aspect-ratio.d.ts +4 -0
- package/dist/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/ui/aspect-ratio.js +6 -0
- package/dist/ui/autocomplete.d.ts +49 -0
- package/dist/ui/autocomplete.d.ts.map +1 -0
- package/dist/ui/autocomplete.js +124 -0
- package/dist/ui/avatar.d.ts +51 -0
- package/dist/ui/avatar.d.ts.map +1 -0
- package/dist/ui/avatar.js +91 -0
- package/dist/ui/badge.d.ts +43 -0
- package/dist/ui/badge.d.ts.map +1 -0
- package/dist/ui/badge.js +64 -0
- package/dist/ui/banner.d.ts +43 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +50 -0
- package/dist/ui/breadcrumb.d.ts +20 -0
- package/dist/ui/breadcrumb.d.ts.map +1 -0
- package/dist/ui/breadcrumb.js +83 -0
- package/dist/ui/button-group.d.ts +51 -0
- package/dist/ui/button-group.d.ts.map +1 -0
- package/dist/ui/button-group.js +41 -0
- package/dist/ui/button.d.ts +63 -0
- package/dist/ui/button.d.ts.map +1 -0
- package/dist/ui/button.js +105 -0
- package/dist/ui/card.d.ts +64 -0
- package/dist/ui/card.d.ts.map +1 -0
- package/dist/ui/card.js +79 -0
- package/dist/ui/charts/_internal/animation.d.ts +5 -0
- package/dist/ui/charts/_internal/animation.d.ts.map +1 -0
- package/dist/ui/charts/_internal/animation.js +17 -0
- package/dist/ui/charts/_internal/axes.d.ts +17 -0
- package/dist/ui/charts/_internal/axes.d.ts.map +1 -0
- package/dist/ui/charts/_internal/axes.js +41 -0
- package/dist/ui/charts/_internal/colors.d.ts +8 -0
- package/dist/ui/charts/_internal/colors.d.ts.map +1 -0
- package/dist/ui/charts/_internal/colors.js +20 -0
- package/dist/ui/charts/_internal/grid-lines.d.ts +16 -0
- package/dist/ui/charts/_internal/grid-lines.d.ts.map +1 -0
- package/dist/ui/charts/_internal/grid-lines.js +42 -0
- package/dist/ui/charts/_internal/legend.d.ts +15 -0
- package/dist/ui/charts/_internal/legend.d.ts.map +1 -0
- package/dist/ui/charts/_internal/legend.js +28 -0
- package/dist/ui/charts/_internal/scales.d.ts +5 -0
- package/dist/ui/charts/_internal/scales.d.ts.map +1 -0
- package/dist/ui/charts/_internal/tooltip.d.ts +23 -0
- package/dist/ui/charts/_internal/tooltip.d.ts.map +1 -0
- package/dist/ui/charts/_internal/tooltip.js +38 -0
- package/dist/ui/charts/_internal/types.d.ts +17 -0
- package/dist/ui/charts/_internal/types.d.ts.map +1 -0
- package/dist/ui/charts/_internal/types.js +9 -0
- package/dist/ui/charts/area-chart.d.ts +39 -0
- package/dist/ui/charts/area-chart.d.ts.map +1 -0
- package/dist/ui/charts/area-chart.js +244 -0
- package/dist/ui/charts/bar-chart.d.ts +41 -0
- package/dist/ui/charts/bar-chart.d.ts.map +1 -0
- package/dist/ui/charts/bar-chart.js +152 -0
- package/dist/ui/charts/chart-container.d.ts +20 -0
- package/dist/ui/charts/chart-container.d.ts.map +1 -0
- package/dist/ui/charts/chart-container.js +26 -0
- package/dist/ui/charts/gauge-chart.d.ts +32 -0
- package/dist/ui/charts/gauge-chart.d.ts.map +1 -0
- package/dist/ui/charts/gauge-chart.js +71 -0
- package/dist/ui/charts/index.d.ts +10 -0
- package/dist/ui/charts/index.d.ts.map +1 -0
- package/dist/ui/charts/line-chart.d.ts +37 -0
- package/dist/ui/charts/line-chart.d.ts.map +1 -0
- package/dist/ui/charts/line-chart.js +162 -0
- package/dist/ui/charts/pie-chart.d.ts +37 -0
- package/dist/ui/charts/pie-chart.d.ts.map +1 -0
- package/dist/ui/charts/pie-chart.js +131 -0
- package/dist/ui/charts/radar-chart.d.ts +34 -0
- package/dist/ui/charts/radar-chart.d.ts.map +1 -0
- package/dist/ui/charts/radar-chart.js +222 -0
- package/dist/ui/charts/sparkline.d.ts +22 -0
- package/dist/ui/charts/sparkline.d.ts.map +1 -0
- package/dist/ui/charts/sparkline.js +123 -0
- package/dist/ui/checkbox.d.ts +36 -0
- package/dist/ui/checkbox.d.ts.map +1 -0
- package/dist/ui/checkbox.js +33 -0
- package/dist/ui/chip.d.ts +66 -0
- package/dist/ui/chip.d.ts.map +1 -0
- package/dist/ui/chip.js +105 -0
- package/dist/ui/code.d.ts +30 -0
- package/dist/ui/code.d.ts.map +1 -0
- package/dist/ui/code.js +32 -0
- package/dist/ui/collapsible.d.ts +7 -0
- package/dist/ui/collapsible.d.ts.map +1 -0
- package/dist/ui/collapsible.js +21 -0
- package/dist/ui/combobox.d.ts +76 -0
- package/dist/ui/combobox.d.ts.map +1 -0
- package/dist/ui/combobox.js +286 -0
- package/dist/ui/container.d.ts +10 -0
- package/dist/ui/container.d.ts.map +1 -0
- package/dist/ui/container.js +24 -0
- package/dist/ui/context-menu.d.ts +28 -0
- package/dist/ui/context-menu.d.ts.map +1 -0
- package/dist/ui/context-menu.js +145 -0
- package/dist/ui/data-table-toolbar.d.ts +16 -0
- package/dist/ui/data-table-toolbar.d.ts.map +1 -0
- package/dist/ui/data-table-toolbar.js +136 -0
- package/dist/ui/data-table.d.ts +111 -0
- package/dist/ui/data-table.d.ts.map +1 -0
- package/dist/ui/data-table.js +491 -0
- package/dist/ui/dialog.d.ts +74 -0
- package/dist/ui/dialog.d.ts.map +1 -0
- package/dist/ui/dialog.js +110 -0
- package/dist/ui/dropdown-menu.d.ts +88 -0
- package/dist/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/dropdown-menu.js +144 -0
- package/dist/ui/file-upload.d.ts +67 -0
- package/dist/ui/file-upload.d.ts.map +1 -0
- package/dist/ui/file-upload.js +226 -0
- package/dist/ui/form.d.ts +56 -0
- package/dist/ui/form.d.ts.map +1 -0
- package/dist/ui/form.js +46 -0
- package/dist/ui/hover-card.d.ts +7 -0
- package/dist/ui/hover-card.d.ts.map +1 -0
- package/dist/ui/hover-card.js +23 -0
- package/dist/ui/icon-button.d.ts +46 -0
- package/dist/ui/icon-button.d.ts.map +1 -0
- package/dist/ui/icon-button.js +26 -0
- package/dist/ui/index.d.ts +68 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +344 -0
- package/dist/ui/input-otp.d.ts +35 -0
- package/dist/ui/input-otp.d.ts.map +1 -0
- package/dist/ui/input-otp.js +48 -0
- package/dist/ui/input.d.ts +44 -0
- package/dist/ui/input.d.ts.map +1 -0
- package/dist/ui/input.js +58 -0
- package/dist/ui/label.d.ts +8 -0
- package/dist/ui/label.d.ts.map +1 -0
- package/dist/ui/label.js +23 -0
- package/dist/ui/lib/motion.d.ts +10 -0
- package/dist/ui/lib/motion.d.ts.map +1 -0
- package/dist/ui/lib/motion.js +32 -0
- package/dist/ui/lib/slot.d.ts +8 -0
- package/dist/ui/lib/slot.d.ts.map +1 -0
- package/dist/ui/lib/use-reduced-motion.d.ts +3 -0
- package/dist/ui/lib/use-reduced-motion.d.ts.map +1 -0
- package/dist/ui/lib/use-reduced-motion.js +14 -0
- package/dist/ui/lib/use-ripple.d.ts +13 -0
- package/dist/ui/lib/use-ripple.d.ts.map +1 -0
- package/dist/ui/lib/use-ripple.js +13 -0
- package/dist/ui/lib/utils.d.ts +3 -0
- package/dist/ui/lib/utils.d.ts.map +1 -0
- package/dist/ui/lib/utils.js +15 -0
- package/dist/ui/link.d.ts +8 -0
- package/dist/ui/link.d.ts.map +1 -0
- package/dist/ui/link.js +24 -0
- package/dist/ui/menubar.d.ts +29 -0
- package/dist/ui/menubar.d.ts.map +1 -0
- package/dist/ui/menubar.js +176 -0
- package/dist/ui/navigation-menu.d.ts +12 -0
- package/dist/ui/navigation-menu.d.ts.map +1 -0
- package/dist/ui/navigation-menu.js +103 -0
- package/dist/ui/number-input.d.ts +40 -0
- package/dist/ui/number-input.d.ts.map +1 -0
- package/dist/ui/number-input.js +80 -0
- package/dist/ui/pagination.d.ts +74 -0
- package/dist/ui/pagination.d.ts.map +1 -0
- package/dist/ui/pagination.js +159 -0
- package/dist/ui/popover.d.ts +8 -0
- package/dist/ui/popover.d.ts.map +1 -0
- package/dist/ui/popover.js +24 -0
- package/dist/ui/progress.d.ts +49 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +75 -0
- package/dist/ui/radio.d.ts +6 -0
- package/dist/ui/radio.d.ts.map +1 -0
- package/dist/ui/radio.js +29 -0
- package/dist/ui/search-input.d.ts +44 -0
- package/dist/ui/search-input.d.ts.map +1 -0
- package/dist/ui/search-input.js +63 -0
- package/dist/ui/segmented-control.d.ts +122 -0
- package/dist/ui/segmented-control.d.ts.map +1 -0
- package/dist/ui/segmented-control.js +270 -0
- package/dist/ui/select.d.ts +49 -0
- package/dist/ui/select.d.ts.map +1 -0
- package/dist/ui/select.js +132 -0
- package/dist/ui/separator.d.ts +5 -0
- package/dist/ui/separator.d.ts.map +1 -0
- package/dist/ui/separator.js +24 -0
- package/dist/ui/sheet.d.ts +108 -0
- package/dist/ui/sheet.d.ts.map +1 -0
- package/dist/ui/sheet.js +110 -0
- package/dist/ui/sidebar.d.ts +67 -0
- package/dist/ui/sidebar.d.ts.map +1 -0
- package/dist/ui/sidebar.js +562 -0
- package/dist/ui/skeleton.d.ts +40 -0
- package/dist/ui/skeleton.d.ts.map +1 -0
- package/dist/ui/skeleton.js +36 -0
- package/dist/ui/slider.d.ts +5 -0
- package/dist/ui/slider.d.ts.map +1 -0
- package/dist/ui/slider.js +29 -0
- package/dist/ui/spinner.d.ts +38 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +47 -0
- package/dist/ui/stack.d.ts +15 -0
- package/dist/ui/stack.d.ts.map +1 -0
- package/dist/ui/stack.js +41 -0
- package/dist/ui/stat-card.d.ts +54 -0
- package/dist/ui/stat-card.d.ts.map +1 -0
- package/dist/ui/stat-card.js +52 -0
- package/dist/ui/stepper.d.ts +57 -0
- package/dist/ui/stepper.d.ts.map +1 -0
- package/dist/ui/stepper.js +90 -0
- package/dist/ui/switch.d.ts +5 -0
- package/dist/ui/switch.d.ts.map +1 -0
- package/dist/ui/switch.js +27 -0
- package/dist/ui/table.d.ts +11 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +91 -0
- package/dist/ui/tabs.d.ts +81 -0
- package/dist/ui/tabs.d.ts.map +1 -0
- package/dist/ui/tabs.js +74 -0
- package/dist/ui/text.d.ts +47 -0
- package/dist/ui/text.d.ts.map +1 -0
- package/dist/ui/text.js +59 -0
- package/dist/ui/textarea.d.ts +40 -0
- package/dist/ui/textarea.d.ts.map +1 -0
- package/dist/ui/textarea.js +47 -0
- package/dist/ui/toast.d.ts +32 -0
- package/dist/ui/toast.d.ts.map +1 -0
- package/dist/ui/toast.js +98 -0
- package/dist/ui/toaster.d.ts +42 -0
- package/dist/ui/toaster.d.ts.map +1 -0
- package/dist/ui/toaster.js +23 -0
- package/dist/ui/toggle-group.d.ts +13 -0
- package/dist/ui/toggle-group.d.ts.map +1 -0
- package/dist/ui/toggle-group.js +40 -0
- package/dist/ui/toggle.d.ts +13 -0
- package/dist/ui/toggle.d.ts.map +1 -0
- package/dist/ui/toggle.js +37 -0
- package/dist/ui/tooltip.d.ts +8 -0
- package/dist/ui/tooltip.d.ts.map +1 -0
- package/dist/ui/tooltip.js +23 -0
- package/dist/ui/transitions.d.ts +16 -0
- package/dist/ui/transitions.d.ts.map +1 -0
- package/dist/ui/transitions.js +100 -0
- package/dist/ui/tree-view/index.d.ts +4 -0
- package/dist/ui/tree-view/index.d.ts.map +1 -0
- package/dist/ui/tree-view/tree-item.d.ts +22 -0
- package/dist/ui/tree-view/tree-item.d.ts.map +1 -0
- package/dist/ui/tree-view/tree-item.js +136 -0
- package/dist/ui/tree-view/tree-view.d.ts +29 -0
- package/dist/ui/tree-view/tree-view.d.ts.map +1 -0
- package/dist/ui/tree-view/tree-view.js +139 -0
- package/dist/ui/tree-view/use-tree.d.ts +26 -0
- package/dist/ui/tree-view/use-tree.d.ts.map +1 -0
- package/dist/ui/tree-view/use-tree.js +37 -0
- package/dist/ui/visually-hidden.d.ts +6 -0
- package/dist/ui/visually-hidden.d.ts.map +1 -0
- package/dist/ui/visually-hidden.js +10 -0
- package/fonts/GoogleSans-Italic-Variable.ttf +0 -0
- package/fonts/GoogleSans-Variable.ttf +0 -0
- package/fonts/Ranade-Variable.ttf +0 -0
- package/fonts/Ranade-VariableItalic.ttf +0 -0
- package/package.json +83 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { jsxs as s, jsx as t, Fragment as S } from "react/jsx-runtime";
|
|
2
|
+
import * as k from "react";
|
|
3
|
+
import { useRef as $, useCallback as f } from "react";
|
|
4
|
+
import { Popover as P, PopoverTrigger as Y, PopoverContent as _ } from "../ui/popover.js";
|
|
5
|
+
import { Tooltip as Q, TooltipTrigger as U, TooltipContent as B } from "../ui/tooltip.js";
|
|
6
|
+
import { IconBell as G, IconChecks as H, IconInbox as K } from "@tabler/icons-react";
|
|
7
|
+
import { cn as x } from "../ui/lib/utils.js";
|
|
8
|
+
function L(e) {
|
|
9
|
+
const l = Date.now(), a = new Date(e).getTime(), d = l - a, c = Math.floor(d / 1e3), o = Math.floor(c / 60), n = Math.floor(o / 60), i = Math.floor(n / 24);
|
|
10
|
+
return c < 60 ? "just now" : o < 60 ? `${o}m ago` : n < 24 ? `${n}h ago` : i < 7 ? `${i}d ago` : new Date(e).toLocaleDateString(void 0, {
|
|
11
|
+
day: "numeric",
|
|
12
|
+
month: "short"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function N(e, l) {
|
|
16
|
+
return e.getFullYear() === l.getFullYear() && e.getMonth() === l.getMonth() && e.getDate() === l.getDate();
|
|
17
|
+
}
|
|
18
|
+
function O(e) {
|
|
19
|
+
const l = new Date(e), a = /* @__PURE__ */ new Date(), d = /* @__PURE__ */ new Date();
|
|
20
|
+
return d.setDate(a.getDate() - 1), N(l, a) ? "Today" : N(l, d) ? "Yesterday" : "Earlier";
|
|
21
|
+
}
|
|
22
|
+
const g = {
|
|
23
|
+
INFO: "bg-info",
|
|
24
|
+
IMPORTANT: "bg-warning",
|
|
25
|
+
CRITICAL: "bg-error"
|
|
26
|
+
};
|
|
27
|
+
function q(e) {
|
|
28
|
+
if (!e.entityType) return null;
|
|
29
|
+
switch (e.entityType) {
|
|
30
|
+
case "TASK":
|
|
31
|
+
return e.projectId ? `/projects/${e.projectId}/board` : null;
|
|
32
|
+
case "BREAK_REQUEST":
|
|
33
|
+
return "/breaks";
|
|
34
|
+
case "ATTENDANCE":
|
|
35
|
+
return "/attendance";
|
|
36
|
+
case "CLIENT_REQUEST":
|
|
37
|
+
return e.projectId ? `/projects/${e.projectId}/requests` : null;
|
|
38
|
+
case "REVIEW_REQUEST":
|
|
39
|
+
return e.projectId ? `/projects/${e.projectId}/board` : null;
|
|
40
|
+
case "PROJECT":
|
|
41
|
+
return e.projectId ? `/projects/${e.projectId}/board` : "/projects";
|
|
42
|
+
default:
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function z({
|
|
47
|
+
notification: e,
|
|
48
|
+
onRead: l,
|
|
49
|
+
onNavigate: a,
|
|
50
|
+
getRoute: d
|
|
51
|
+
}) {
|
|
52
|
+
const c = d(e);
|
|
53
|
+
return /* @__PURE__ */ s(
|
|
54
|
+
"button",
|
|
55
|
+
{
|
|
56
|
+
type: "button",
|
|
57
|
+
onClick: () => {
|
|
58
|
+
e.isRead || l(e.id), c && a(c);
|
|
59
|
+
},
|
|
60
|
+
className: x(
|
|
61
|
+
"flex w-full items-start gap-ds-04 px-ds-05 py-ds-04 text-left transition-colors",
|
|
62
|
+
"hover:bg-layer-02",
|
|
63
|
+
!e.isRead && "bg-interactive/[0.03]"
|
|
64
|
+
),
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ t("div", { className: "mt-ds-02b flex shrink-0", children: /* @__PURE__ */ t(
|
|
67
|
+
"span",
|
|
68
|
+
{
|
|
69
|
+
className: x(
|
|
70
|
+
"h-2 w-2 rounded-ds-full",
|
|
71
|
+
g[e.tier] || g.INFO,
|
|
72
|
+
e.isRead && "opacity-[0.38]"
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
) }),
|
|
76
|
+
/* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: [
|
|
77
|
+
/* @__PURE__ */ t(
|
|
78
|
+
"p",
|
|
79
|
+
{
|
|
80
|
+
className: x(
|
|
81
|
+
"truncate text-ds-md text-text-primary",
|
|
82
|
+
!e.isRead && "font-semibold"
|
|
83
|
+
),
|
|
84
|
+
children: e.title
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
e.body && /* @__PURE__ */ t("p", { className: "mt-ds-01 line-clamp-2 text-ds-sm text-text-placeholder", children: e.body }),
|
|
88
|
+
/* @__PURE__ */ s("div", { className: "mt-ds-02 flex items-center gap-ds-03", children: [
|
|
89
|
+
/* @__PURE__ */ t("span", { className: "text-ds-sm text-text-placeholder", children: L(e.createdAt) }),
|
|
90
|
+
e.project && /* @__PURE__ */ s(S, { children: [
|
|
91
|
+
/* @__PURE__ */ t("span", { className: "text-text-placeholder", children: "·" }),
|
|
92
|
+
/* @__PURE__ */ t("span", { className: "truncate text-ds-sm text-text-placeholder", children: e.project.title })
|
|
93
|
+
] })
|
|
94
|
+
] })
|
|
95
|
+
] }),
|
|
96
|
+
!e.isRead && /* @__PURE__ */ t("div", { className: "mt-ds-02b shrink-0", children: /* @__PURE__ */ t("span", { className: "block h-2 w-2 rounded-ds-full bg-interactive" }) })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
const J = k.forwardRef(
|
|
102
|
+
({
|
|
103
|
+
notifications: e = [],
|
|
104
|
+
unreadCount: l,
|
|
105
|
+
open: a,
|
|
106
|
+
onOpenChange: d,
|
|
107
|
+
isLoading: c = !1,
|
|
108
|
+
hasMore: o = !1,
|
|
109
|
+
onFetchMore: n,
|
|
110
|
+
onMarkRead: i,
|
|
111
|
+
onMarkAllRead: b,
|
|
112
|
+
onNavigate: h,
|
|
113
|
+
getNotificationRoute: w,
|
|
114
|
+
className: v,
|
|
115
|
+
...j
|
|
116
|
+
}, T) => {
|
|
117
|
+
const y = $(null), m = l ?? e.filter((r) => !r.isRead).length, I = w ?? q, R = f(
|
|
118
|
+
(r) => {
|
|
119
|
+
d == null || d(!1), h == null || h(r);
|
|
120
|
+
},
|
|
121
|
+
[h, d]
|
|
122
|
+
), E = f(
|
|
123
|
+
(r) => {
|
|
124
|
+
i == null || i(r);
|
|
125
|
+
},
|
|
126
|
+
[i]
|
|
127
|
+
), C = f(() => {
|
|
128
|
+
const r = y.current;
|
|
129
|
+
!r || c || !o || r.scrollTop + r.clientHeight >= r.scrollHeight - 50 && (n == null || n());
|
|
130
|
+
}, [c, o, n]), D = e.reduce(
|
|
131
|
+
(r, u) => {
|
|
132
|
+
const p = O(u.createdAt);
|
|
133
|
+
return r[p] || (r[p] = []), r[p].push(u), r;
|
|
134
|
+
},
|
|
135
|
+
{}
|
|
136
|
+
), A = ["Today", "Yesterday", "Earlier"];
|
|
137
|
+
return /* @__PURE__ */ s(P, { open: a, onOpenChange: d, children: [
|
|
138
|
+
/* @__PURE__ */ s(Q, { children: [
|
|
139
|
+
/* @__PURE__ */ t(U, { asChild: !0, children: /* @__PURE__ */ t(Y, { asChild: !0, children: /* @__PURE__ */ s(
|
|
140
|
+
"button",
|
|
141
|
+
{
|
|
142
|
+
...j,
|
|
143
|
+
ref: T,
|
|
144
|
+
className: x(
|
|
145
|
+
"relative flex h-ds-sm-plus w-ds-sm-plus items-center justify-center rounded-ds-full border border-border bg-layer-02 text-text-secondary transition-colors hover:bg-layer-03",
|
|
146
|
+
v
|
|
147
|
+
),
|
|
148
|
+
children: [
|
|
149
|
+
/* @__PURE__ */ t(G, { className: "h-ico-sm w-ico-sm" }),
|
|
150
|
+
m > 0 && /* @__PURE__ */ t("span", { className: "absolute -right-ds-01 -top-ds-01 flex h-4 min-w-4 items-center justify-center rounded-ds-full bg-interactive px-ds-02 text-ds-xs font-semibold text-text-on-color", children: m > 99 ? "99+" : m })
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
) }) }),
|
|
154
|
+
/* @__PURE__ */ t(B, { side: "bottom", align: "center", children: "Notifications" })
|
|
155
|
+
] }),
|
|
156
|
+
/* @__PURE__ */ s(
|
|
157
|
+
_,
|
|
158
|
+
{
|
|
159
|
+
className: "w-[380px] rounded-ds-xl border border-border bg-layer-01 p-0 shadow-03",
|
|
160
|
+
sideOffset: 8,
|
|
161
|
+
align: "end",
|
|
162
|
+
children: [
|
|
163
|
+
/* @__PURE__ */ s("div", { className: "flex items-center justify-between border-b border-border px-ds-05 py-ds-04", children: [
|
|
164
|
+
/* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03", children: [
|
|
165
|
+
/* @__PURE__ */ t("h3", { className: "text-ds-md font-semibold text-text-primary", children: "Notifications" }),
|
|
166
|
+
m > 0 && /* @__PURE__ */ t("span", { className: "flex h-5 min-w-5 items-center justify-center rounded-ds-full bg-interactive/10 px-ds-02b text-ds-sm font-semibold text-interactive", children: m })
|
|
167
|
+
] }),
|
|
168
|
+
m > 0 && b && /* @__PURE__ */ s(
|
|
169
|
+
"button",
|
|
170
|
+
{
|
|
171
|
+
type: "button",
|
|
172
|
+
onClick: b,
|
|
173
|
+
className: "flex items-center gap-ds-02 text-ds-sm text-text-placeholder transition-colors hover:text-interactive",
|
|
174
|
+
children: [
|
|
175
|
+
/* @__PURE__ */ t(H, { className: "h-ico-sm w-ico-sm" }),
|
|
176
|
+
"Mark all read"
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
] }),
|
|
181
|
+
/* @__PURE__ */ s(
|
|
182
|
+
"div",
|
|
183
|
+
{
|
|
184
|
+
ref: y,
|
|
185
|
+
onScroll: C,
|
|
186
|
+
className: "max-h-[420px] overflow-y-auto",
|
|
187
|
+
children: [
|
|
188
|
+
e.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-center px-ds-05 py-12", children: [
|
|
189
|
+
/* @__PURE__ */ t("div", { className: "flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-full bg-layer-02", children: /* @__PURE__ */ t(K, { className: "h-ico-lg w-ico-lg text-text-placeholder" }) }),
|
|
190
|
+
/* @__PURE__ */ t("p", { className: "mt-ds-04 text-ds-md text-text-placeholder", children: "No notifications yet" }),
|
|
191
|
+
/* @__PURE__ */ t("p", { className: "mt-ds-02 text-ds-sm text-text-placeholder", children: "You're all caught up!" })
|
|
192
|
+
] }) : A.map((r) => {
|
|
193
|
+
const u = D[r];
|
|
194
|
+
return !u || u.length === 0 ? null : /* @__PURE__ */ s("div", { children: [
|
|
195
|
+
/* @__PURE__ */ t("div", { className: "sticky top-0 z-raised bg-layer-01 px-ds-05 py-ds-02b", children: /* @__PURE__ */ t("span", { className: "text-ds-sm font-medium text-text-placeholder", children: r }) }),
|
|
196
|
+
u.map((p) => /* @__PURE__ */ t(
|
|
197
|
+
z,
|
|
198
|
+
{
|
|
199
|
+
notification: p,
|
|
200
|
+
onRead: E,
|
|
201
|
+
onNavigate: R,
|
|
202
|
+
getRoute: I
|
|
203
|
+
},
|
|
204
|
+
p.id
|
|
205
|
+
))
|
|
206
|
+
] }, r);
|
|
207
|
+
}),
|
|
208
|
+
c && /* @__PURE__ */ t("div", { className: "flex items-center justify-center py-ds-05", children: /* @__PURE__ */ t("div", { className: "h-ico-md w-ico-md animate-spin rounded-ds-full border-2 border-border border-t-interactive" }) })
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
)
|
|
215
|
+
] });
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
J.displayName = "NotificationCenter";
|
|
219
|
+
export {
|
|
220
|
+
J as NotificationCenter
|
|
221
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface NotificationPreference {
|
|
2
|
+
id: string;
|
|
3
|
+
userId?: string;
|
|
4
|
+
projectId: string | null;
|
|
5
|
+
channel: string;
|
|
6
|
+
minTier: string;
|
|
7
|
+
muted: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface NotificationProject {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
}
|
|
13
|
+
export interface NotificationPreferencesProps {
|
|
14
|
+
/** Current preference rules */
|
|
15
|
+
preferences?: NotificationPreference[];
|
|
16
|
+
/** Available projects for scoping rules */
|
|
17
|
+
projects?: NotificationProject[];
|
|
18
|
+
/** Whether data is loading */
|
|
19
|
+
isLoading?: boolean;
|
|
20
|
+
/** Called to add or update a preference */
|
|
21
|
+
onSave?: (preference: {
|
|
22
|
+
projectId: string | null;
|
|
23
|
+
channel: string;
|
|
24
|
+
minTier: string;
|
|
25
|
+
muted: boolean;
|
|
26
|
+
}) => void | Promise<void>;
|
|
27
|
+
/** Called to toggle mute on a preference */
|
|
28
|
+
onToggleMute?: (preference: NotificationPreference) => void | Promise<void>;
|
|
29
|
+
/** Called to update the tier on a preference */
|
|
30
|
+
onUpdateTier?: (preference: NotificationPreference, newTier: string) => void | Promise<void>;
|
|
31
|
+
/** Called to delete a preference */
|
|
32
|
+
onDelete?: (preferenceId: string) => void | Promise<void>;
|
|
33
|
+
/** Additional className */
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
declare function NotificationPreferences({ preferences, projects, isLoading, onSave, onToggleMute, onUpdateTier, onDelete, className, }: NotificationPreferencesProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
declare namespace NotificationPreferences {
|
|
38
|
+
var displayName: string;
|
|
39
|
+
}
|
|
40
|
+
export default NotificationPreferences;
|
|
41
|
+
//# sourceMappingURL=notification-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-preferences.d.ts","sourceRoot":"","sources":["../../src/shell/notification-preferences.tsx"],"names":[],"mappings":"AAiCA,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,4BAA4B;IAC3C,+BAA+B;IAC/B,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAChC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,OAAO,CAAA;KACf,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqBD,iBAAwB,uBAAuB,CAAC,EAC9C,WAAgB,EAChB,QAAa,EACb,SAAiB,EACjB,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,EAAE,4BAA4B,2CA6O9B;kBAtPuB,uBAAuB;;;eAAvB,uBAAuB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { jsxs as t, Fragment as B, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useState as c } from "react";
|
|
3
|
+
import { Button as b } from "../ui/button.js";
|
|
4
|
+
import { Select as d, SelectTrigger as o, SelectValue as m, SelectContent as h, SelectItem as i } from "../ui/select.js";
|
|
5
|
+
import { Dialog as D, DialogContent as z, DialogHeader as q, DialogTitle as J, DialogDescription as K } from "../ui/dialog.js";
|
|
6
|
+
import { Switch as k } from "../ui/switch.js";
|
|
7
|
+
import { Card as Q, CardHeader as W, CardTitle as X, CardContent as Y } from "../ui/card.js";
|
|
8
|
+
import { IconPlus as Z, IconMessage as $, IconBell as U, IconTrash as ee } from "@tabler/icons-react";
|
|
9
|
+
import { cn as le } from "../ui/lib/utils.js";
|
|
10
|
+
const _ = {
|
|
11
|
+
IN_APP: { label: "In-App", icon: U },
|
|
12
|
+
GOOGLE_CHAT: { label: "Google Chat", icon: $ }
|
|
13
|
+
}, G = {
|
|
14
|
+
INFO: "All (Info+)",
|
|
15
|
+
IMPORTANT: "Important+",
|
|
16
|
+
CRITICAL: "Critical only"
|
|
17
|
+
};
|
|
18
|
+
function te({
|
|
19
|
+
preferences: f = [],
|
|
20
|
+
projects: v = [],
|
|
21
|
+
isLoading: L = !1,
|
|
22
|
+
onSave: C,
|
|
23
|
+
onToggleMute: u,
|
|
24
|
+
onUpdateTier: x,
|
|
25
|
+
onDelete: p,
|
|
26
|
+
className: T
|
|
27
|
+
}) {
|
|
28
|
+
const [E, a] = c(!1), [N, g] = c("global"), [I, w] = c("IN_APP"), [y, A] = c("INFO"), [P, j] = c(!1), [S, O] = c(!1), R = async () => {
|
|
29
|
+
if (C) {
|
|
30
|
+
O(!0);
|
|
31
|
+
try {
|
|
32
|
+
await C({
|
|
33
|
+
projectId: N === "global" ? null : N,
|
|
34
|
+
channel: I,
|
|
35
|
+
minTier: y,
|
|
36
|
+
muted: P
|
|
37
|
+
}), a(!1), F();
|
|
38
|
+
} catch (l) {
|
|
39
|
+
console.error("[Preferences] Failed to save:", l);
|
|
40
|
+
} finally {
|
|
41
|
+
O(!1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, F = () => {
|
|
45
|
+
g("global"), w("IN_APP"), A("INFO"), j(!1);
|
|
46
|
+
}, H = (l) => {
|
|
47
|
+
if (!l) return "Global (all projects)";
|
|
48
|
+
const n = v.find((s) => s.id === l);
|
|
49
|
+
return (n == null ? void 0 : n.title) || "Unknown project";
|
|
50
|
+
};
|
|
51
|
+
return /* @__PURE__ */ t(B, { children: [
|
|
52
|
+
/* @__PURE__ */ t(Q, { className: T, children: [
|
|
53
|
+
/* @__PURE__ */ t(W, { className: "flex flex-row items-center justify-between space-y-0 pb-ds-04", children: [
|
|
54
|
+
/* @__PURE__ */ e(X, { className: "text-ds-md font-semibold", children: "Notification Preferences" }),
|
|
55
|
+
/* @__PURE__ */ t(
|
|
56
|
+
b,
|
|
57
|
+
{
|
|
58
|
+
size: "sm",
|
|
59
|
+
variant: "secondary",
|
|
60
|
+
onClick: () => a(!0),
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ e(Z, { className: "mr-ds-02b h-ico-sm w-ico-sm" }),
|
|
63
|
+
"Add Rule"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ e(Y, { children: L ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center py-ds-07", children: /* @__PURE__ */ e("div", { className: "h-ico-md w-ico-md animate-spin rounded-ds-full border-2 border-border border-t-interactive" }) }) : f.length === 0 ? /* @__PURE__ */ e("div", { className: "py-ds-07 text-center", children: /* @__PURE__ */ e("p", { className: "text-ds-md text-text-placeholder", children: "No custom preferences set. All notifications are delivered by default." }) }) : /* @__PURE__ */ e("div", { className: "flex flex-col", children: f.map((l, n) => {
|
|
69
|
+
const s = _[l.channel] || _.IN_APP, M = s.icon;
|
|
70
|
+
return /* @__PURE__ */ t(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: le(
|
|
74
|
+
"flex items-center gap-ds-05 py-ds-04",
|
|
75
|
+
n < f.length - 1 && "border-b border-border"
|
|
76
|
+
),
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-sm w-ds-sm shrink-0 items-center justify-center rounded-ds-lg bg-layer-02", children: /* @__PURE__ */ e(M, { className: "h-ico-sm w-ico-sm text-text-secondary" }) }),
|
|
79
|
+
/* @__PURE__ */ t("div", { className: "min-w-0 flex-1", children: [
|
|
80
|
+
/* @__PURE__ */ e("p", { className: "text-ds-md font-medium text-text-primary", children: s.label }),
|
|
81
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm text-text-placeholder", children: H(l.projectId) })
|
|
82
|
+
] }),
|
|
83
|
+
/* @__PURE__ */ t(
|
|
84
|
+
d,
|
|
85
|
+
{
|
|
86
|
+
value: l.minTier,
|
|
87
|
+
onValueChange: (r) => x == null ? void 0 : x(l, r),
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ e(o, { className: "h-ds-xs-plus w-[130px] text-ds-sm", children: /* @__PURE__ */ e(m, {}) }),
|
|
90
|
+
/* @__PURE__ */ e(h, { children: Object.entries(G).map(([r, V]) => /* @__PURE__ */ e(i, { value: r, children: V }, r)) })
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
/* @__PURE__ */ t("div", { className: "flex items-center gap-ds-02b", children: [
|
|
95
|
+
/* @__PURE__ */ e("span", { className: "text-ds-sm text-text-placeholder", children: l.muted ? "Muted" : "Active" }),
|
|
96
|
+
/* @__PURE__ */ e(
|
|
97
|
+
k,
|
|
98
|
+
{
|
|
99
|
+
checked: !l.muted,
|
|
100
|
+
onCheckedChange: () => u == null ? void 0 : u(l)
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
] }),
|
|
104
|
+
/* @__PURE__ */ e(
|
|
105
|
+
"button",
|
|
106
|
+
{
|
|
107
|
+
type: "button",
|
|
108
|
+
onClick: () => p == null ? void 0 : p(l.id),
|
|
109
|
+
className: "shrink-0 rounded p-ds-02b text-text-placeholder transition-colors hover:bg-layer-02 hover:text-error",
|
|
110
|
+
children: /* @__PURE__ */ e(ee, { className: "h-ico-sm w-ico-sm" })
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
l.id
|
|
116
|
+
);
|
|
117
|
+
}) }) })
|
|
118
|
+
] }),
|
|
119
|
+
/* @__PURE__ */ e(D, { open: E, onOpenChange: a, children: /* @__PURE__ */ t(z, { className: "sm:max-w-md", children: [
|
|
120
|
+
/* @__PURE__ */ t(q, { children: [
|
|
121
|
+
/* @__PURE__ */ e(J, { children: "Add Notification Rule" }),
|
|
122
|
+
/* @__PURE__ */ e(K, { children: "Customize how you receive notifications for a specific channel and project." })
|
|
123
|
+
] }),
|
|
124
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col gap-ds-05 pt-ds-03", children: [
|
|
125
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col gap-ds-02b", children: [
|
|
126
|
+
/* @__PURE__ */ e("label", { htmlFor: "pref-scope", className: "text-ds-sm font-medium text-text-secondary", children: "Scope" }),
|
|
127
|
+
/* @__PURE__ */ t(d, { value: N, onValueChange: g, children: [
|
|
128
|
+
/* @__PURE__ */ e(o, { id: "pref-scope", children: /* @__PURE__ */ e(m, { placeholder: "Select scope" }) }),
|
|
129
|
+
/* @__PURE__ */ t(h, { children: [
|
|
130
|
+
/* @__PURE__ */ e(i, { value: "global", children: "Global (all projects)" }),
|
|
131
|
+
v.map((l) => /* @__PURE__ */ e(i, { value: l.id, children: l.title }, l.id))
|
|
132
|
+
] })
|
|
133
|
+
] })
|
|
134
|
+
] }),
|
|
135
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col gap-ds-02b", children: [
|
|
136
|
+
/* @__PURE__ */ e("label", { htmlFor: "pref-channel", className: "text-ds-sm font-medium text-text-secondary", children: "Channel" }),
|
|
137
|
+
/* @__PURE__ */ t(d, { value: I, onValueChange: w, children: [
|
|
138
|
+
/* @__PURE__ */ e(o, { id: "pref-channel", children: /* @__PURE__ */ e(m, {}) }),
|
|
139
|
+
/* @__PURE__ */ t(h, { children: [
|
|
140
|
+
/* @__PURE__ */ e(i, { value: "IN_APP", children: "In-App" }),
|
|
141
|
+
/* @__PURE__ */ e(i, { value: "GOOGLE_CHAT", children: "Google Chat" })
|
|
142
|
+
] })
|
|
143
|
+
] })
|
|
144
|
+
] }),
|
|
145
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col gap-ds-02b", children: [
|
|
146
|
+
/* @__PURE__ */ e("label", { htmlFor: "pref-min-tier", className: "text-ds-sm font-medium text-text-secondary", children: "Minimum Tier" }),
|
|
147
|
+
/* @__PURE__ */ t(d, { value: y, onValueChange: A, children: [
|
|
148
|
+
/* @__PURE__ */ e(o, { id: "pref-min-tier", children: /* @__PURE__ */ e(m, {}) }),
|
|
149
|
+
/* @__PURE__ */ e(h, { children: Object.entries(G).map(([l, n]) => /* @__PURE__ */ e(i, { value: l, children: n }, l)) })
|
|
150
|
+
] })
|
|
151
|
+
] }),
|
|
152
|
+
/* @__PURE__ */ t("div", { className: "flex items-center justify-between", children: [
|
|
153
|
+
/* @__PURE__ */ e("label", { htmlFor: "pref-muted", className: "text-ds-md text-text-primary", children: "Mute this channel" }),
|
|
154
|
+
/* @__PURE__ */ e(k, { id: "pref-muted", checked: P, onCheckedChange: j })
|
|
155
|
+
] }),
|
|
156
|
+
/* @__PURE__ */ t("div", { className: "flex justify-end gap-ds-03 pt-ds-03", children: [
|
|
157
|
+
/* @__PURE__ */ e(
|
|
158
|
+
b,
|
|
159
|
+
{
|
|
160
|
+
variant: "ghost",
|
|
161
|
+
onClick: () => {
|
|
162
|
+
a(!1), F();
|
|
163
|
+
},
|
|
164
|
+
children: "Cancel"
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ e(
|
|
168
|
+
b,
|
|
169
|
+
{
|
|
170
|
+
onClick: R,
|
|
171
|
+
disabled: S,
|
|
172
|
+
children: S ? "Saving..." : "Save Rule"
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
] })
|
|
176
|
+
] })
|
|
177
|
+
] }) })
|
|
178
|
+
] });
|
|
179
|
+
}
|
|
180
|
+
te.displayName = "NotificationPreferences";
|
|
181
|
+
export {
|
|
182
|
+
te as default
|
|
183
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppSidebar -- Application-layer sidebar built on the Sidebar primitive.
|
|
3
|
+
*
|
|
4
|
+
* Design-system token migration (2026-02-28):
|
|
5
|
+
* All V1 colour tokens have been replaced with semantic design-system tokens.
|
|
6
|
+
* Typography classes replaced with Tailwind equivalents.
|
|
7
|
+
*
|
|
8
|
+
* Props-driven: accepts user info, currentPath, and navItems instead of
|
|
9
|
+
* reading from Remix hooks or Zustand stores.
|
|
10
|
+
*/
|
|
11
|
+
import * as React from 'react';
|
|
12
|
+
export interface NavItem {
|
|
13
|
+
title: string;
|
|
14
|
+
href: string;
|
|
15
|
+
icon: React.ComponentType<{
|
|
16
|
+
className?: string;
|
|
17
|
+
}>;
|
|
18
|
+
/** When true, the route matches only when the path is exactly equal */
|
|
19
|
+
exact?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface NavGroup {
|
|
22
|
+
label: string;
|
|
23
|
+
items: NavItem[];
|
|
24
|
+
}
|
|
25
|
+
export interface SidebarUser {
|
|
26
|
+
name: string;
|
|
27
|
+
email?: string;
|
|
28
|
+
image?: string | null;
|
|
29
|
+
designation?: string;
|
|
30
|
+
role?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AppSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
33
|
+
/** Currently active pathname -- used to highlight the active nav item */
|
|
34
|
+
currentPath?: string;
|
|
35
|
+
/** User information displayed in the sidebar header */
|
|
36
|
+
user?: SidebarUser | null;
|
|
37
|
+
/** Primary navigation groups rendered in the main content area */
|
|
38
|
+
navGroups?: NavGroup[];
|
|
39
|
+
/** Optional logo element. Falls back to a text placeholder. */
|
|
40
|
+
logo?: React.ReactNode;
|
|
41
|
+
/** Footer links rendered at the bottom of the sidebar */
|
|
42
|
+
footerLinks?: Array<{
|
|
43
|
+
label: string;
|
|
44
|
+
href: string;
|
|
45
|
+
}>;
|
|
46
|
+
/** Additional className for the root sidebar element */
|
|
47
|
+
className?: string;
|
|
48
|
+
}
|
|
49
|
+
declare const AppSidebar: React.ForwardRefExoticComponent<AppSidebarProps & React.RefAttributes<HTMLDivElement>>;
|
|
50
|
+
export { AppSidebar };
|
|
51
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/shell/sidebar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uDAAuD;IACvD,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,kEAAkE;IAClE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqCD,QAAA,MAAM,UAAU,wFA+Gf,CAAA;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import * as v from "react";
|
|
3
|
+
import o from "next/link";
|
|
4
|
+
import { Sidebar as g, SidebarHeader as u, SidebarSeparator as c, SidebarContent as S, SidebarGroup as y, SidebarGroupLabel as w, SidebarGroupContent as A, SidebarMenu as C, SidebarFooter as M, SidebarMenuItem as j, SidebarMenuButton as G } from "../ui/sidebar.js";
|
|
5
|
+
import { Avatar as L, AvatarImage as F, AvatarFallback as I } from "../ui/avatar.js";
|
|
6
|
+
import { cn as m } from "../ui/lib/utils.js";
|
|
7
|
+
function R({ item: t, isActive: a }) {
|
|
8
|
+
return /* @__PURE__ */ e(j, { children: /* @__PURE__ */ e(
|
|
9
|
+
G,
|
|
10
|
+
{
|
|
11
|
+
asChild: !0,
|
|
12
|
+
isActive: a,
|
|
13
|
+
tooltip: t.title,
|
|
14
|
+
className: m(
|
|
15
|
+
"relative gap-ds-04 rounded-ds-lg px-ds-04 py-ds-03 transition-colors",
|
|
16
|
+
a ? "bg-interactive-subtle text-interactive after:absolute after:right-0 after:top-0 after:h-full after:w-ds-01 after:rounded-l-ds-full after:bg-interactive after:content-['']" : "text-text-helper hover:bg-layer-02 hover:text-text-primary"
|
|
17
|
+
),
|
|
18
|
+
children: /* @__PURE__ */ l(
|
|
19
|
+
o,
|
|
20
|
+
{
|
|
21
|
+
href: t.href,
|
|
22
|
+
"aria-label": t.title,
|
|
23
|
+
"aria-current": a ? "page" : void 0,
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ e(t.icon, { className: "h-ico-md w-ico-md shrink-0", "aria-hidden": "true" }),
|
|
26
|
+
/* @__PURE__ */ e("span", { className: "text-ds-base", children: t.title })
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
) });
|
|
32
|
+
}
|
|
33
|
+
const k = v.forwardRef(
|
|
34
|
+
({
|
|
35
|
+
currentPath: t = "/",
|
|
36
|
+
user: a,
|
|
37
|
+
navGroups: p = [],
|
|
38
|
+
logo: h,
|
|
39
|
+
footerLinks: i = [],
|
|
40
|
+
className: x,
|
|
41
|
+
...f
|
|
42
|
+
}, b) => {
|
|
43
|
+
var n;
|
|
44
|
+
const N = (r, s = !1) => s || r === "/" ? t === r : t.startsWith(r);
|
|
45
|
+
return /* @__PURE__ */ l(
|
|
46
|
+
g,
|
|
47
|
+
{
|
|
48
|
+
...f,
|
|
49
|
+
ref: b,
|
|
50
|
+
"aria-label": "Main navigation",
|
|
51
|
+
className: m(
|
|
52
|
+
"z-raised hidden h-full flex-col border-r border-border bg-layer-01 md:flex",
|
|
53
|
+
x
|
|
54
|
+
),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ e(u, { className: "px-ds-06 py-ds-06", children: h ?? /* @__PURE__ */ e("span", { className: "text-ds-lg font-semibold text-text-primary", children: "Logo" }) }),
|
|
57
|
+
a && /* @__PURE__ */ l("div", { className: "flex items-center gap-ds-04 px-ds-06 pb-ds-05", children: [
|
|
58
|
+
/* @__PURE__ */ l(L, { className: "h-ds-sm-plus w-ds-sm-plus", children: [
|
|
59
|
+
a.image ? /* @__PURE__ */ e(F, { src: a.image, alt: a.name }) : null,
|
|
60
|
+
/* @__PURE__ */ e(I, { className: "bg-layer-03 text-text-primary", children: (n = a.name) == null ? void 0 : n.charAt(0).toUpperCase() })
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ l("div", { className: "flex min-w-0 flex-col", children: [
|
|
63
|
+
/* @__PURE__ */ e("span", { className: "truncate text-ds-md text-text-primary", children: a.name }),
|
|
64
|
+
/* @__PURE__ */ e("span", { className: "truncate text-ds-sm text-text-placeholder", children: a.designation || a.role })
|
|
65
|
+
] })
|
|
66
|
+
] }),
|
|
67
|
+
/* @__PURE__ */ e(c, {}),
|
|
68
|
+
/* @__PURE__ */ e(S, { className: "no-scrollbar px-ds-04", children: p.map((r, s) => /* @__PURE__ */ l("div", { children: [
|
|
69
|
+
s > 0 && /* @__PURE__ */ e(c, {}),
|
|
70
|
+
/* @__PURE__ */ l(y, { children: [
|
|
71
|
+
/* @__PURE__ */ e(w, { className: "px-ds-04 text-ds-sm text-text-placeholder", children: r.label }),
|
|
72
|
+
/* @__PURE__ */ e(A, { children: /* @__PURE__ */ e(C, { children: r.items.map((d) => /* @__PURE__ */ e(
|
|
73
|
+
R,
|
|
74
|
+
{
|
|
75
|
+
item: d,
|
|
76
|
+
isActive: N(d.href, d.exact)
|
|
77
|
+
},
|
|
78
|
+
d.href
|
|
79
|
+
)) }) })
|
|
80
|
+
] })
|
|
81
|
+
] }, r.label)) }),
|
|
82
|
+
i.length > 0 && /* @__PURE__ */ e(M, { className: "px-ds-06 py-ds-05", children: /* @__PURE__ */ e("div", { className: "flex items-center justify-start gap-ds-03", children: i.map((r, s) => /* @__PURE__ */ l("div", { className: "flex items-center gap-ds-03", children: [
|
|
83
|
+
s > 0 && /* @__PURE__ */ e("div", { className: "h-4 w-px bg-border" }),
|
|
84
|
+
/* @__PURE__ */ e(
|
|
85
|
+
o,
|
|
86
|
+
{
|
|
87
|
+
className: "text-ds-md text-text-placeholder transition-colors hover:text-interactive",
|
|
88
|
+
href: r.href,
|
|
89
|
+
children: r.label
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] }, r.href)) }) })
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
k.displayName = "AppSidebar";
|
|
99
|
+
export {
|
|
100
|
+
k as AppSidebar
|
|
101
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TopBar -- Application top bar with sidebar trigger, user menu, and action
|
|
3
|
+
* buttons. All data is props-driven (no Zustand stores or Remix hooks).
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
export interface TopBarUser {
|
|
7
|
+
name: string;
|
|
8
|
+
email?: string;
|
|
9
|
+
image?: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface TopBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
/** Page title displayed on desktop */
|
|
13
|
+
pageTitle?: string;
|
|
14
|
+
/** Current user information for the avatar dropdown */
|
|
15
|
+
user?: TopBarUser | null;
|
|
16
|
+
/** Called when the user clicks a navigation item (e.g. "Profile", "Login") */
|
|
17
|
+
onNavigate?: (path: string) => void;
|
|
18
|
+
/** Called when the user clicks the logout button */
|
|
19
|
+
onLogout?: () => void;
|
|
20
|
+
/** Called when the search button is clicked */
|
|
21
|
+
onSearchClick?: () => void;
|
|
22
|
+
/** Called when the AI chat button is clicked */
|
|
23
|
+
onAiChatClick?: () => void;
|
|
24
|
+
/** Optional mobile logo element */
|
|
25
|
+
mobileLogo?: React.ReactNode;
|
|
26
|
+
/** Notification center slot -- render your NotificationCenter here */
|
|
27
|
+
notificationSlot?: React.ReactNode;
|
|
28
|
+
/** Additional className */
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
declare const TopBar: React.ForwardRefExoticComponent<TopBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export { TopBar };
|
|
33
|
+
//# sourceMappingURL=top-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../src/shell/top-bar.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAuB9B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,mCAAmC;IACnC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,QAAA,MAAM,MAAM,oFAqLX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,CAAA"}
|