@pallasoft/ps-internal-components 1.3.2 → 1.5.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.
Files changed (99) hide show
  1. package/dist/components/ps-alert-dialog-content.js +1 -1
  2. package/dist/components/ps-alert-dialog-overlay.js +1 -1
  3. package/dist/components/ps-app-header.js +1 -1
  4. package/dist/components/ps-collapsible-content.d.ts +3 -0
  5. package/dist/components/ps-collapsible-content.js +43 -0
  6. package/dist/components/ps-collapsible-trigger.d.ts +2 -0
  7. package/dist/components/ps-collapsible-trigger.js +39 -0
  8. package/dist/components/ps-collapsible.d.ts +2 -0
  9. package/dist/components/ps-collapsible.js +39 -0
  10. package/dist/components/ps-confirm-action.d.ts +2 -0
  11. package/dist/components/ps-confirm-action.js +16 -0
  12. package/dist/components/ps-date-time-picker.d.ts +2 -0
  13. package/dist/components/ps-date-time-picker.js +14 -0
  14. package/dist/components/ps-dialog-content.js +1 -1
  15. package/dist/components/ps-dialog-overlay.js +1 -1
  16. package/dist/components/ps-dropdown-menu-content.js +1 -1
  17. package/dist/components/ps-dropdown-menu-sub-content.js +1 -1
  18. package/dist/components/ps-notice.d.ts +2 -0
  19. package/dist/components/ps-notice.js +15 -0
  20. package/dist/components/ps-page-header.d.ts +2 -0
  21. package/dist/components/ps-page-header.js +13 -0
  22. package/dist/components/ps-page-skeleton.d.ts +2 -0
  23. package/dist/components/ps-page-skeleton.js +7 -0
  24. package/dist/components/ps-popover-content.js +1 -1
  25. package/dist/components/ps-section-heading.d.ts +2 -0
  26. package/dist/components/ps-section-heading.js +6 -0
  27. package/dist/components/ps-select-content.js +1 -1
  28. package/dist/components/ps-sheet-overlay.js +1 -1
  29. package/dist/components/ps-stat-card.d.ts +2 -0
  30. package/dist/components/ps-stat-card.js +10 -0
  31. package/dist/components/ps-tooltip-content.js +1 -1
  32. package/dist/constants/ps-date-time-picker-config.d.ts +7 -0
  33. package/dist/constants/ps-date-time-picker-config.js +10 -0
  34. package/dist/constants/ps-notice-variant.d.ts +4 -0
  35. package/dist/constants/ps-notice-variant.js +8 -0
  36. package/dist/constants/ps-sheet-variants.js +1 -1
  37. package/dist/esm/components/ps-alert-dialog-content.js +1 -1
  38. package/dist/esm/components/ps-alert-dialog-overlay.js +1 -1
  39. package/dist/esm/components/ps-app-header.js +1 -1
  40. package/dist/esm/components/ps-collapsible-content.js +7 -0
  41. package/dist/esm/components/ps-collapsible-trigger.js +3 -0
  42. package/dist/esm/components/ps-collapsible.js +3 -0
  43. package/dist/esm/components/ps-confirm-action.js +12 -0
  44. package/dist/esm/components/ps-date-time-picker.js +10 -0
  45. package/dist/esm/components/ps-dialog-content.js +1 -1
  46. package/dist/esm/components/ps-dialog-overlay.js +1 -1
  47. package/dist/esm/components/ps-dropdown-menu-content.js +1 -1
  48. package/dist/esm/components/ps-dropdown-menu-sub-content.js +1 -1
  49. package/dist/esm/components/ps-notice.js +11 -0
  50. package/dist/esm/components/ps-page-header.js +9 -0
  51. package/dist/esm/components/ps-page-skeleton.js +3 -0
  52. package/dist/esm/components/ps-popover-content.js +1 -1
  53. package/dist/esm/components/ps-section-heading.js +2 -0
  54. package/dist/esm/components/ps-select-content.js +1 -1
  55. package/dist/esm/components/ps-sheet-overlay.js +1 -1
  56. package/dist/esm/components/ps-stat-card.js +6 -0
  57. package/dist/esm/components/ps-tooltip-content.js +1 -1
  58. package/dist/esm/constants/ps-date-time-picker-config.js +7 -0
  59. package/dist/esm/constants/ps-notice-variant.js +5 -0
  60. package/dist/esm/constants/ps-sheet-variants.js +1 -1
  61. package/dist/esm/index.js +23 -0
  62. package/dist/esm/models/ps-collapsible-content-props.js +1 -0
  63. package/dist/esm/models/ps-confirm-action-props.js +1 -0
  64. package/dist/esm/models/ps-date-time-parts-data.js +1 -0
  65. package/dist/esm/models/ps-date-time-picker-props.js +1 -0
  66. package/dist/esm/models/ps-notice-props.js +1 -0
  67. package/dist/esm/models/ps-page-crumb-data.js +1 -0
  68. package/dist/esm/models/ps-page-header-props.js +1 -0
  69. package/dist/esm/models/ps-page-skeleton-props.js +1 -0
  70. package/dist/esm/models/ps-section-heading-props.js +1 -0
  71. package/dist/esm/models/ps-stat-card-props.js +1 -0
  72. package/dist/esm/pallasoft-internal-tailwind-preset.js +3 -0
  73. package/dist/esm/services/ps-date-time-service.js +15 -0
  74. package/dist/index.d.ts +23 -0
  75. package/dist/index.js +23 -0
  76. package/dist/models/ps-collapsible-content-props.d.ts +4 -0
  77. package/dist/models/ps-collapsible-content-props.js +2 -0
  78. package/dist/models/ps-confirm-action-props.d.ts +10 -0
  79. package/dist/models/ps-confirm-action-props.js +2 -0
  80. package/dist/models/ps-date-time-parts-data.d.ts +4 -0
  81. package/dist/models/ps-date-time-parts-data.js +2 -0
  82. package/dist/models/ps-date-time-picker-props.d.ts +11 -0
  83. package/dist/models/ps-date-time-picker-props.js +2 -0
  84. package/dist/models/ps-notice-props.d.ts +6 -0
  85. package/dist/models/ps-notice-props.js +2 -0
  86. package/dist/models/ps-page-crumb-data.d.ts +4 -0
  87. package/dist/models/ps-page-crumb-data.js +2 -0
  88. package/dist/models/ps-page-header-props.d.ts +10 -0
  89. package/dist/models/ps-page-header-props.js +2 -0
  90. package/dist/models/ps-page-skeleton-props.d.ts +5 -0
  91. package/dist/models/ps-page-skeleton-props.js +2 -0
  92. package/dist/models/ps-section-heading-props.d.ts +6 -0
  93. package/dist/models/ps-section-heading-props.js +2 -0
  94. package/dist/models/ps-stat-card-props.d.ts +4 -0
  95. package/dist/models/ps-stat-card-props.js +2 -0
  96. package/dist/pallasoft-internal-tailwind-preset.js +3 -0
  97. package/dist/services/ps-date-time-service.d.ts +5 -0
  98. package/dist/services/ps-date-time-service.js +19 -0
  99. package/package.json +6 -5
@@ -41,5 +41,5 @@ const AlertDialogPrimitive = __importStar(require("@radix-ui/react-alert-dialog"
41
41
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
42
42
  const ps_alert_dialog_overlay_js_1 = require("./ps-alert-dialog-overlay.js");
43
43
  const ps_alert_dialog_portal_js_1 = require("./ps-alert-dialog-portal.js");
44
- exports.PsAlertDialogContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ps_alert_dialog_portal_js_1.PsAlertDialogPortal, { children: [(0, jsx_runtime_1.jsx)(ps_alert_dialog_overlay_js_1.PsAlertDialogOverlay, {}), (0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props })] })));
44
+ exports.PsAlertDialogContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ps_alert_dialog_portal_js_1.PsAlertDialogPortal, { children: [(0, jsx_runtime_1.jsx)(ps_alert_dialog_overlay_js_1.PsAlertDialogOverlay, {}), (0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed left-[50%] top-[50%] z-modal grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props })] })));
45
45
  exports.PsAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
@@ -39,5 +39,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
39
39
  const React = __importStar(require("react"));
40
40
  const AlertDialogPrimitive = __importStar(require("@radix-ui/react-alert-dialog"));
41
41
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
42
- exports.PsAlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Overlay, { className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
42
+ exports.PsAlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(AlertDialogPrimitive.Overlay, { className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-overlay bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
43
43
  exports.PsAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
@@ -52,7 +52,7 @@ const ps_dropdown_menu_js_1 = require("./ps-dropdown-menu.js");
52
52
  const ps_workspace_switcher_js_1 = require("./ps-workspace-switcher.js");
53
53
  const PsAppHeader = ({ appSwitcher, appTitle, logoAlt = 'Pallasoft logo', logoSrc, logoutHref, navItems = [], renderLink, user, workspaceSwitcher, }) => {
54
54
  const link = (href, className, children, active) => renderLink ? (renderLink({ href, className, children, active })) : ((0, jsx_runtime_1.jsx)("a", { href: href, className: className, "aria-current": active ? 'page' : undefined, children: children }));
55
- return ((0, jsx_runtime_1.jsx)("header", { className: 'sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80', children: (0, jsx_runtime_1.jsxs)("div", { className: 'mx-auto flex w-full max-w-screen-2xl flex-col gap-3 px-4 py-3 sm:px-6', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 items-center justify-between gap-3', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 flex-1 items-center gap-2.5', children: [(0, jsx_runtime_1.jsx)("div", { className: 'flex size-9 shrink-0 items-center justify-center rounded-lg border bg-muted', children: (0, jsx_runtime_1.jsx)("img", { alt: logoAlt, className: 'size-5 object-contain', src: logoSrc }) }), (0, jsx_runtime_1.jsx)("h1", { className: 'shrink-0 truncate text-sm font-semibold text-foreground', children: appTitle }), workspaceSwitcher ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: 'text-muted-foreground/60', children: "/" }), (0, jsx_runtime_1.jsx)(ps_workspace_switcher_js_1.PsWorkspaceSwitcher, { switcher: workspaceSwitcher, renderLink: renderLink })] })) : null] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex shrink-0 items-center gap-1.5', children: [appSwitcher ? (0, jsx_runtime_1.jsx)(ps_app_switcher_js_1.PsAppSwitcher, { ...appSwitcher }) : null, user ? ((0, jsx_runtime_1.jsxs)(ps_dropdown_menu_js_1.PsDropdownMenu, { children: [(0, jsx_runtime_1.jsx)(ps_dropdown_menu_trigger_js_1.PsDropdownMenuTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)(ps_button_js_1.PsButton, { variant: 'outline', className: 'h-9 max-w-[min(14rem,56vw)] gap-2 px-1.5 sm:pl-1.5 sm:pr-3', children: [(0, jsx_runtime_1.jsxs)(ps_avatar_js_1.PsAvatar, { className: 'size-6', children: [user.avatarUrl ? ((0, jsx_runtime_1.jsx)(ps_avatar_image_js_1.PsAvatarImage, { alt: user.displayName, src: user.avatarUrl })) : null, (0, jsx_runtime_1.jsx)(ps_avatar_fallback_js_1.PsAvatarFallback, { className: 'text-xs', children: user.displayName.slice(0, 1).toUpperCase() })] }), (0, jsx_runtime_1.jsx)("span", { className: 'hidden min-w-0 truncate sm:inline', children: user.displayName })] }) }), (0, jsx_runtime_1.jsxs)(ps_dropdown_menu_content_js_1.PsDropdownMenuContent, { align: 'end', className: 'w-56', children: [(0, jsx_runtime_1.jsxs)(ps_dropdown_menu_label_js_1.PsDropdownMenuLabel, { className: 'flex flex-col gap-0.5', children: [(0, jsx_runtime_1.jsx)("span", { children: "Account" }), (0, jsx_runtime_1.jsx)("span", { className: 'truncate text-xs font-normal text-muted-foreground', children: user.displayName })] }), (0, jsx_runtime_1.jsx)(ps_dropdown_menu_separator_js_1.PsDropdownMenuSeparator, {}), (0, jsx_runtime_1.jsx)("form", { action: logoutHref, method: 'post', children: (0, jsx_runtime_1.jsx)(ps_dropdown_menu_item_js_1.PsDropdownMenuItem, { asChild: true, children: (0, jsx_runtime_1.jsxs)("button", { className: 'flex w-full cursor-pointer items-center gap-2', type: 'submit', children: [(0, jsx_runtime_1.jsx)(lucide_react_1.LogOut, {}), "Sign out"] }) }) })] })] })) : null] })] }), navItems.length ? ((0, jsx_runtime_1.jsx)("nav", { "aria-label": 'Primary', className: '-mb-px flex max-w-full gap-1 overflow-x-auto', children: navItems.map((item) => ((0, jsx_runtime_1.jsx)(React.Fragment, { children: link(item.href, ps_class_name_service_js_1.PsClassNameService.merge('inline-flex h-9 shrink-0 items-center rounded-md px-3 text-sm font-medium transition-colors', item.active
55
+ return ((0, jsx_runtime_1.jsx)("header", { className: 'sticky top-0 z-header border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80', children: (0, jsx_runtime_1.jsxs)("div", { className: 'mx-auto flex w-full max-w-screen-2xl flex-col gap-3 px-4 py-3 sm:px-6', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 items-center justify-between gap-3', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 flex-1 items-center gap-2.5', children: [(0, jsx_runtime_1.jsx)("div", { className: 'flex size-9 shrink-0 items-center justify-center rounded-lg border bg-muted', children: (0, jsx_runtime_1.jsx)("img", { alt: logoAlt, className: 'size-5 object-contain', src: logoSrc }) }), (0, jsx_runtime_1.jsx)("h1", { className: 'shrink-0 truncate text-sm font-semibold text-foreground', children: appTitle }), workspaceSwitcher ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: 'text-muted-foreground/60', children: "/" }), (0, jsx_runtime_1.jsx)(ps_workspace_switcher_js_1.PsWorkspaceSwitcher, { switcher: workspaceSwitcher, renderLink: renderLink })] })) : null] }), (0, jsx_runtime_1.jsxs)("div", { className: 'flex shrink-0 items-center gap-1.5', children: [appSwitcher ? (0, jsx_runtime_1.jsx)(ps_app_switcher_js_1.PsAppSwitcher, { ...appSwitcher }) : null, user ? ((0, jsx_runtime_1.jsxs)(ps_dropdown_menu_js_1.PsDropdownMenu, { children: [(0, jsx_runtime_1.jsx)(ps_dropdown_menu_trigger_js_1.PsDropdownMenuTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)(ps_button_js_1.PsButton, { variant: 'outline', className: 'h-9 max-w-[min(14rem,56vw)] gap-2 px-1.5 sm:pl-1.5 sm:pr-3', children: [(0, jsx_runtime_1.jsxs)(ps_avatar_js_1.PsAvatar, { className: 'size-6', children: [user.avatarUrl ? ((0, jsx_runtime_1.jsx)(ps_avatar_image_js_1.PsAvatarImage, { alt: user.displayName, src: user.avatarUrl })) : null, (0, jsx_runtime_1.jsx)(ps_avatar_fallback_js_1.PsAvatarFallback, { className: 'text-xs', children: user.displayName.slice(0, 1).toUpperCase() })] }), (0, jsx_runtime_1.jsx)("span", { className: 'hidden min-w-0 truncate sm:inline', children: user.displayName })] }) }), (0, jsx_runtime_1.jsxs)(ps_dropdown_menu_content_js_1.PsDropdownMenuContent, { align: 'end', className: 'w-56', children: [(0, jsx_runtime_1.jsxs)(ps_dropdown_menu_label_js_1.PsDropdownMenuLabel, { className: 'flex flex-col gap-0.5', children: [(0, jsx_runtime_1.jsx)("span", { children: "Account" }), (0, jsx_runtime_1.jsx)("span", { className: 'truncate text-xs font-normal text-muted-foreground', children: user.displayName })] }), (0, jsx_runtime_1.jsx)(ps_dropdown_menu_separator_js_1.PsDropdownMenuSeparator, {}), (0, jsx_runtime_1.jsx)("form", { action: logoutHref, method: 'post', children: (0, jsx_runtime_1.jsx)(ps_dropdown_menu_item_js_1.PsDropdownMenuItem, { asChild: true, children: (0, jsx_runtime_1.jsxs)("button", { className: 'flex w-full cursor-pointer items-center gap-2', type: 'submit', children: [(0, jsx_runtime_1.jsx)(lucide_react_1.LogOut, {}), "Sign out"] }) }) })] })] })) : null] })] }), navItems.length ? ((0, jsx_runtime_1.jsx)("nav", { "aria-label": 'Primary', className: '-mb-px flex max-w-full gap-1 overflow-x-auto', children: navItems.map((item) => ((0, jsx_runtime_1.jsx)(React.Fragment, { children: link(item.href, ps_class_name_service_js_1.PsClassNameService.merge('inline-flex h-9 shrink-0 items-center rounded-md px-3 text-sm font-medium transition-colors', item.active
56
56
  ? 'bg-secondary text-secondary-foreground'
57
57
  : 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'), item.label, item.active) }, item.id))) })) : null] }) }));
58
58
  };
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import type { PsCollapsibleContentProps } from '../models/ps-collapsible-content-props.js';
3
+ export declare const PsCollapsibleContent: React.ForwardRefExoticComponent<PsCollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.PsCollapsibleContent = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const CollapsiblePrimitive = __importStar(require("@radix-ui/react-collapsible"));
41
+ const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
42
+ exports.PsCollapsibleContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(CollapsiblePrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('overflow-hidden data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0', className), ...props })));
43
+ exports.PsCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName;
@@ -0,0 +1,2 @@
1
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2
+ export declare const PsCollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.PsCollapsibleTrigger = void 0;
38
+ const CollapsiblePrimitive = __importStar(require("@radix-ui/react-collapsible"));
39
+ exports.PsCollapsibleTrigger = CollapsiblePrimitive.Trigger;
@@ -0,0 +1,2 @@
1
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2
+ export declare const PsCollapsible: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.PsCollapsible = void 0;
38
+ const CollapsiblePrimitive = __importStar(require("@radix-ui/react-collapsible"));
39
+ exports.PsCollapsible = CollapsiblePrimitive.Root;
@@ -0,0 +1,2 @@
1
+ import type { PsConfirmActionProps } from '../models/ps-confirm-action-props.js';
2
+ export declare const PsConfirmAction: ({ cancelLabel, confirmLabel, description, destructive, onConfirm, title, trigger, }: PsConfirmActionProps) => import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsConfirmAction = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ps_button_variants_js_1 = require("../constants/ps-button-variants.js");
6
+ const ps_alert_dialog_action_js_1 = require("./ps-alert-dialog-action.js");
7
+ const ps_alert_dialog_cancel_js_1 = require("./ps-alert-dialog-cancel.js");
8
+ const ps_alert_dialog_content_js_1 = require("./ps-alert-dialog-content.js");
9
+ const ps_alert_dialog_description_js_1 = require("./ps-alert-dialog-description.js");
10
+ const ps_alert_dialog_footer_js_1 = require("./ps-alert-dialog-footer.js");
11
+ const ps_alert_dialog_header_js_1 = require("./ps-alert-dialog-header.js");
12
+ const ps_alert_dialog_title_js_1 = require("./ps-alert-dialog-title.js");
13
+ const ps_alert_dialog_trigger_js_1 = require("./ps-alert-dialog-trigger.js");
14
+ const ps_alert_dialog_js_1 = require("./ps-alert-dialog.js");
15
+ const PsConfirmAction = ({ cancelLabel, confirmLabel, description, destructive = false, onConfirm, title, trigger, }) => ((0, jsx_runtime_1.jsxs)(ps_alert_dialog_js_1.PsAlertDialog, { children: [(0, jsx_runtime_1.jsx)(ps_alert_dialog_trigger_js_1.PsAlertDialogTrigger, { asChild: true, children: trigger }), (0, jsx_runtime_1.jsxs)(ps_alert_dialog_content_js_1.PsAlertDialogContent, { children: [(0, jsx_runtime_1.jsxs)(ps_alert_dialog_header_js_1.PsAlertDialogHeader, { children: [(0, jsx_runtime_1.jsx)(ps_alert_dialog_title_js_1.PsAlertDialogTitle, { children: title }), (0, jsx_runtime_1.jsx)(ps_alert_dialog_description_js_1.PsAlertDialogDescription, { children: description })] }), (0, jsx_runtime_1.jsxs)(ps_alert_dialog_footer_js_1.PsAlertDialogFooter, { children: [(0, jsx_runtime_1.jsx)(ps_alert_dialog_cancel_js_1.PsAlertDialogCancel, { children: cancelLabel }), (0, jsx_runtime_1.jsx)(ps_alert_dialog_action_js_1.PsAlertDialogAction, { className: destructive ? (0, ps_button_variants_js_1.PsButtonVariants)({ variant: 'destructive' }) : undefined, onClick: onConfirm, children: confirmLabel })] })] })] }));
16
+ exports.PsConfirmAction = PsConfirmAction;
@@ -0,0 +1,2 @@
1
+ import type { PsDateTimePickerProps } from '../models/ps-date-time-picker-props.js';
2
+ export declare const PsDateTimePicker: ({ id, value, onValueChange, placeholder, disabled, invalid, clearable, fromDate, className, }: PsDateTimePickerProps) => import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsDateTimePicker = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ps_date_time_picker_config_js_1 = require("../constants/ps-date-time-picker-config.js");
6
+ const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
7
+ const ps_date_time_service_js_1 = require("../services/ps-date-time-service.js");
8
+ const ps_date_picker_js_1 = require("./ps-date-picker.js");
9
+ const ps_input_js_1 = require("./ps-input.js");
10
+ const PsDateTimePicker = ({ id, value, onValueChange, placeholder, disabled = false, invalid = false, clearable = false, fromDate, className, }) => {
11
+ const { date, time } = ps_date_time_service_js_1.PsDateTimeService.split(value);
12
+ return ((0, jsx_runtime_1.jsxs)("div", { className: ps_class_name_service_js_1.PsClassNameService.merge('flex w-full gap-2', className), children: [(0, jsx_runtime_1.jsx)(ps_date_picker_js_1.PsDatePicker, { className: 'min-w-0 flex-1', clearable: clearable, disabled: disabled, fromDate: fromDate, id: id, invalid: invalid, onValueChange: (next) => onValueChange(ps_date_time_service_js_1.PsDateTimeService.join(next, time)), placeholder: placeholder, value: date }), (0, jsx_runtime_1.jsx)(ps_input_js_1.PsInput, { "aria-invalid": invalid, "aria-label": ps_date_time_picker_config_js_1.PsDateTimePickerConfig.timeLabel, className: 'h-10 w-32 shrink-0', disabled: disabled || date === '', onChange: (event) => onValueChange(ps_date_time_service_js_1.PsDateTimeService.join(date, event.target.value)), type: 'time', value: time })] }));
13
+ };
14
+ exports.PsDateTimePicker = PsDateTimePicker;
@@ -42,5 +42,5 @@ const lucide_react_1 = require("lucide-react");
42
42
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
43
43
  const ps_dialog_overlay_js_1 = require("./ps-dialog-overlay.js");
44
44
  const ps_dialog_portal_js_1 = require("./ps-dialog-portal.js");
45
- exports.PsDialogContent = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ps_dialog_portal_js_1.PsDialogPortal, { children: [(0, jsx_runtime_1.jsx)(ps_dialog_overlay_js_1.PsDialogOverlay, {}), (0, jsx_runtime_1.jsxs)(DialogPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props, children: [children, (0, jsx_runtime_1.jsxs)(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 data-[state=open]:text-muted-foreground', children: [(0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: 'h-4 w-4' }), (0, jsx_runtime_1.jsx)("span", { className: 'sr-only', children: "Close" })] })] })] })));
45
+ exports.PsDialogContent = React.forwardRef(({ className, children, ...props }, ref) => ((0, jsx_runtime_1.jsxs)(ps_dialog_portal_js_1.PsDialogPortal, { children: [(0, jsx_runtime_1.jsx)(ps_dialog_overlay_js_1.PsDialogOverlay, {}), (0, jsx_runtime_1.jsxs)(DialogPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed left-[50%] top-[50%] z-modal grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props, children: [children, (0, jsx_runtime_1.jsxs)(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 data-[state=open]:text-muted-foreground', children: [(0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: 'h-4 w-4' }), (0, jsx_runtime_1.jsx)("span", { className: 'sr-only', children: "Close" })] })] })] })));
46
46
  exports.PsDialogContent.displayName = DialogPrimitive.Content.displayName;
@@ -39,5 +39,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
39
39
  const React = __importStar(require("react"));
40
40
  const DialogPrimitive = __importStar(require("@radix-ui/react-dialog"));
41
41
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
42
- exports.PsDialogOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DialogPrimitive.Overlay, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props })));
42
+ exports.PsDialogOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DialogPrimitive.Overlay, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-overlay bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props })));
43
43
  exports.PsDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
@@ -38,5 +38,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const React = __importStar(require("react"));
39
39
  const DropdownMenuPrimitive = __importStar(require("@radix-ui/react-dropdown-menu"));
40
40
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
41
- exports.PsDropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props }) })));
41
+ exports.PsDropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-top-layer max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props }) })));
42
42
  exports.PsDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
@@ -38,5 +38,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const React = __importStar(require("react"));
39
39
  const DropdownMenuPrimitive = __importStar(require("@radix-ui/react-dropdown-menu"));
40
40
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
41
- exports.PsDropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.SubContent, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props })));
41
+ exports.PsDropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.SubContent, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('z-top-layer 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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props })));
42
42
  exports.PsDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
@@ -0,0 +1,2 @@
1
+ import type { PsNoticeProps } from '../models/ps-notice-props.js';
2
+ export declare const PsNotice: ({ message, title, variant }: PsNoticeProps) => import("react").JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsNotice = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const ps_notice_variant_js_1 = require("../constants/ps-notice-variant.js");
7
+ const ps_alert_description_js_1 = require("./ps-alert-description.js");
8
+ const ps_alert_title_js_1 = require("./ps-alert-title.js");
9
+ const ps_alert_js_1 = require("./ps-alert.js");
10
+ const PsNotice = ({ message, title, variant }) => {
11
+ if (message === null)
12
+ return null;
13
+ return ((0, jsx_runtime_1.jsxs)(ps_alert_js_1.PsAlert, { variant: variant === ps_notice_variant_js_1.PsNoticeVariant.Error ? 'destructive' : 'warning', children: [variant === ps_notice_variant_js_1.PsNoticeVariant.Error ? (0, jsx_runtime_1.jsx)(lucide_react_1.CircleAlert, {}) : (0, jsx_runtime_1.jsx)(lucide_react_1.TriangleAlert, {}), (0, jsx_runtime_1.jsx)(ps_alert_title_js_1.PsAlertTitle, { children: title }), (0, jsx_runtime_1.jsx)(ps_alert_description_js_1.PsAlertDescription, { children: message })] }));
14
+ };
15
+ exports.PsNotice = PsNotice;
@@ -0,0 +1,2 @@
1
+ import type { PsPageHeaderProps } from '../models/ps-page-header-props.js';
2
+ export declare const PsPageHeader: ({ actions, crumbs, description, meta, renderLink, title, }: PsPageHeaderProps) => import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsPageHeader = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const ps_breadcrumb_item_js_1 = require("./ps-breadcrumb-item.js");
7
+ const ps_breadcrumb_link_js_1 = require("./ps-breadcrumb-link.js");
8
+ const ps_breadcrumb_list_js_1 = require("./ps-breadcrumb-list.js");
9
+ const ps_breadcrumb_page_js_1 = require("./ps-breadcrumb-page.js");
10
+ const ps_breadcrumb_separator_js_1 = require("./ps-breadcrumb-separator.js");
11
+ const ps_breadcrumb_js_1 = require("./ps-breadcrumb.js");
12
+ const PsPageHeader = ({ actions, crumbs = [], description, meta, renderLink, title, }) => ((0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col gap-3', children: [crumbs.length > 0 ? ((0, jsx_runtime_1.jsx)(ps_breadcrumb_js_1.PsBreadcrumb, { children: (0, jsx_runtime_1.jsxs)(ps_breadcrumb_list_js_1.PsBreadcrumbList, { children: [crumbs.map((crumb) => ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ps_breadcrumb_item_js_1.PsBreadcrumbItem, { children: (0, jsx_runtime_1.jsx)(ps_breadcrumb_link_js_1.PsBreadcrumbLink, { asChild: true, children: renderLink ? (renderLink(crumb.href, crumb.label)) : ((0, jsx_runtime_1.jsx)("a", { href: crumb.href, children: crumb.label })) }) }), (0, jsx_runtime_1.jsx)(ps_breadcrumb_separator_js_1.PsBreadcrumbSeparator, {})] }, crumb.href))), (0, jsx_runtime_1.jsx)(ps_breadcrumb_item_js_1.PsBreadcrumbItem, { children: (0, jsx_runtime_1.jsx)(ps_breadcrumb_page_js_1.PsBreadcrumbPage, { children: title }) })] }) })) : null, (0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 flex-col gap-2', children: [(0, jsx_runtime_1.jsx)("h1", { className: 'break-words text-2xl font-semibold tracking-tight text-foreground', children: title }), description ? ((0, jsx_runtime_1.jsx)("p", { className: 'max-w-2xl text-sm text-muted-foreground', children: description })) : null, meta ? (0, jsx_runtime_1.jsx)("div", { className: 'flex flex-wrap items-center gap-2', children: meta }) : null] }), actions ? (0, jsx_runtime_1.jsx)("div", { className: 'flex shrink-0 flex-wrap items-center gap-2', children: actions }) : null] })] }));
13
+ exports.PsPageHeader = PsPageHeader;
@@ -0,0 +1,2 @@
1
+ import type { PsPageSkeletonProps } from '../models/ps-page-skeleton-props.js';
2
+ export declare const PsPageSkeleton: ({ children, withActions }: PsPageSkeletonProps) => import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsPageSkeleton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ps_skeleton_page_header_js_1 = require("./ps-skeleton-page-header.js");
6
+ const PsPageSkeleton = ({ children, withActions = false }) => ((0, jsx_runtime_1.jsxs)("section", { className: 'flex flex-col gap-6', children: [(0, jsx_runtime_1.jsx)(ps_skeleton_page_header_js_1.PsSkeletonPageHeader, { withActions: withActions }), children] }));
7
+ exports.PsPageSkeleton = PsPageSkeleton;
@@ -39,5 +39,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
39
39
  const React = __importStar(require("react"));
40
40
  const PopoverPrimitive = __importStar(require("@radix-ui/react-popover"));
41
41
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
42
- exports.PsPopoverContent = React.forwardRef(({ className, align = 'center', sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(PopoverPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]', className), ...props }) })));
42
+ exports.PsPopoverContent = React.forwardRef(({ className, align = 'center', sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(PopoverPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-top-layer w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]', className), ...props }) })));
43
43
  exports.PsPopoverContent.displayName = PopoverPrimitive.Content.displayName;
@@ -0,0 +1,2 @@
1
+ import type { PsSectionHeadingProps } from '../models/ps-section-heading-props.js';
2
+ export declare const PsSectionHeading: ({ actions, description, title }: PsSectionHeadingProps) => import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsSectionHeading = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const PsSectionHeading = ({ actions, description, title }) => ((0, jsx_runtime_1.jsxs)("div", { className: 'flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'flex min-w-0 flex-col gap-1', children: [(0, jsx_runtime_1.jsx)("h2", { className: 'text-base font-semibold text-foreground', children: title }), description ? (0, jsx_runtime_1.jsx)("p", { className: 'text-sm text-muted-foreground', children: description }) : null] }), actions ? (0, jsx_runtime_1.jsx)("div", { className: 'flex shrink-0 flex-wrap items-center gap-2', children: actions }) : null] }));
6
+ exports.PsSectionHeading = PsSectionHeading;
@@ -40,7 +40,7 @@ const SelectPrimitive = __importStar(require("@radix-ui/react-select"));
40
40
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
41
41
  const ps_select_scroll_down_button_js_1 = require("./ps-select-scroll-down-button.js");
42
42
  const ps_select_scroll_up_button_js_1 = require("./ps-select-scroll-up-button.js");
43
- exports.PsSelectContent = React.forwardRef(({ className, children, position = 'popper', ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(SelectPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover 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 origin-[--radix-select-content-transform-origin]', position === 'popper' &&
43
+ exports.PsSelectContent = React.forwardRef(({ className, children, position = 'popper', ...props }, ref) => ((0, jsx_runtime_1.jsx)(SelectPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(SelectPrimitive.Content, { ref: ref, className: ps_class_name_service_js_1.PsClassNameService.merge('relative z-top-layer max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover 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 origin-[--radix-select-content-transform-origin]', position === 'popper' &&
44
44
  'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), position: position, ...props, children: [(0, jsx_runtime_1.jsx)(ps_select_scroll_up_button_js_1.PsSelectScrollUpButton, {}), (0, jsx_runtime_1.jsx)(SelectPrimitive.Viewport, { className: ps_class_name_service_js_1.PsClassNameService.merge('p-1', position === 'popper' &&
45
45
  'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'), children: children }), (0, jsx_runtime_1.jsx)(ps_select_scroll_down_button_js_1.PsSelectScrollDownButton, {})] }) })));
46
46
  exports.PsSelectContent.displayName = SelectPrimitive.Content.displayName;
@@ -38,5 +38,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const React = __importStar(require("react"));
39
39
  const SheetPrimitive = __importStar(require("@radix-ui/react-dialog"));
40
40
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
41
- exports.PsSheetOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SheetPrimitive.Overlay, { className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
41
+ exports.PsSheetOverlay = React.forwardRef(({ className, ...props }, ref) => ((0, jsx_runtime_1.jsx)(SheetPrimitive.Overlay, { className: ps_class_name_service_js_1.PsClassNameService.merge('fixed inset-0 z-overlay bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
42
42
  exports.PsSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
@@ -0,0 +1,2 @@
1
+ import type { PsStatCardProps } from '../models/ps-stat-card-props.js';
2
+ export declare const PsStatCard: ({ label, value }: PsStatCardProps) => import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsStatCard = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ps_card_description_js_1 = require("./ps-card-description.js");
6
+ const ps_card_header_js_1 = require("./ps-card-header.js");
7
+ const ps_card_title_js_1 = require("./ps-card-title.js");
8
+ const ps_card_js_1 = require("./ps-card.js");
9
+ const PsStatCard = ({ label, value }) => ((0, jsx_runtime_1.jsx)(ps_card_js_1.PsCard, { children: (0, jsx_runtime_1.jsxs)(ps_card_header_js_1.PsCardHeader, { className: 'gap-1 p-4', children: [(0, jsx_runtime_1.jsx)(ps_card_description_js_1.PsCardDescription, { children: label }), (0, jsx_runtime_1.jsx)(ps_card_title_js_1.PsCardTitle, { className: 'text-2xl tabular-nums', children: value })] }) }));
10
+ exports.PsStatCard = PsStatCard;
@@ -38,5 +38,5 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const React = __importStar(require("react"));
39
39
  const TooltipPrimitive = __importStar(require("@radix-ui/react-tooltip"));
40
40
  const ps_class_name_service_js_1 = require("../services/ps-class-name-service.js");
41
- exports.PsTooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(TooltipPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 origin-[--radix-tooltip-content-transform-origin]', className), ...props }) })));
41
+ exports.PsTooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => ((0, jsx_runtime_1.jsx)(TooltipPrimitive.Portal, { children: (0, jsx_runtime_1.jsx)(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: ps_class_name_service_js_1.PsClassNameService.merge('z-top-layer overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 origin-[--radix-tooltip-content-transform-origin]', className), ...props }) })));
42
42
  exports.PsTooltipContent.displayName = TooltipPrimitive.Content.displayName;
@@ -0,0 +1,7 @@
1
+ export declare const PsDateTimePickerConfig: {
2
+ readonly dateLength: 10;
3
+ readonly defaultTime: "09:00";
4
+ readonly separator: "T";
5
+ readonly timeLabel: "Time";
6
+ readonly timeLength: 5;
7
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsDateTimePickerConfig = void 0;
4
+ exports.PsDateTimePickerConfig = {
5
+ dateLength: 10,
6
+ defaultTime: '09:00',
7
+ separator: 'T',
8
+ timeLabel: 'Time',
9
+ timeLength: 5,
10
+ };
@@ -0,0 +1,4 @@
1
+ export declare enum PsNoticeVariant {
2
+ Error = "error",
3
+ Warning = "warning"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsNoticeVariant = void 0;
4
+ var PsNoticeVariant;
5
+ (function (PsNoticeVariant) {
6
+ PsNoticeVariant["Error"] = "error";
7
+ PsNoticeVariant["Warning"] = "warning";
8
+ })(PsNoticeVariant || (exports.PsNoticeVariant = PsNoticeVariant = {}));
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PsSheetVariants = void 0;
4
4
  const class_variance_authority_1 = require("class-variance-authority");
5
- exports.PsSheetVariants = (0, class_variance_authority_1.cva)('fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', {
5
+ exports.PsSheetVariants = (0, class_variance_authority_1.cva)('fixed z-modal gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out', {
6
6
  variants: {
7
7
  side: {
8
8
  top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
@@ -5,5 +5,5 @@ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
5
5
  import { PsClassNameService } from '../services/ps-class-name-service.js';
6
6
  import { PsAlertDialogOverlay } from './ps-alert-dialog-overlay.js';
7
7
  import { PsAlertDialogPortal } from './ps-alert-dialog-portal.js';
8
- export const PsAlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (_jsxs(PsAlertDialogPortal, { children: [_jsx(PsAlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { ref: ref, className: PsClassNameService.merge('fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props })] })));
8
+ export const PsAlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (_jsxs(PsAlertDialogPortal, { children: [_jsx(PsAlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { ref: ref, className: PsClassNameService.merge('fixed left-[50%] top-[50%] z-modal grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props })] })));
9
9
  PsAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
@@ -3,5 +3,5 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
5
5
  import { PsClassNameService } from '../services/ps-class-name-service.js';
6
- export const PsAlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(AlertDialogPrimitive.Overlay, { className: PsClassNameService.merge('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
6
+ export const PsAlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(AlertDialogPrimitive.Overlay, { className: PsClassNameService.merge('fixed inset-0 z-overlay bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props, ref: ref })));
7
7
  PsAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
@@ -16,7 +16,7 @@ import { PsDropdownMenu } from './ps-dropdown-menu.js';
16
16
  import { PsWorkspaceSwitcher } from './ps-workspace-switcher.js';
17
17
  export const PsAppHeader = ({ appSwitcher, appTitle, logoAlt = 'Pallasoft logo', logoSrc, logoutHref, navItems = [], renderLink, user, workspaceSwitcher, }) => {
18
18
  const link = (href, className, children, active) => renderLink ? (renderLink({ href, className, children, active })) : (_jsx("a", { href: href, className: className, "aria-current": active ? 'page' : undefined, children: children }));
19
- return (_jsx("header", { className: 'sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80', children: _jsxs("div", { className: 'mx-auto flex w-full max-w-screen-2xl flex-col gap-3 px-4 py-3 sm:px-6', children: [_jsxs("div", { className: 'flex min-w-0 items-center justify-between gap-3', children: [_jsxs("div", { className: 'flex min-w-0 flex-1 items-center gap-2.5', children: [_jsx("div", { className: 'flex size-9 shrink-0 items-center justify-center rounded-lg border bg-muted', children: _jsx("img", { alt: logoAlt, className: 'size-5 object-contain', src: logoSrc }) }), _jsx("h1", { className: 'shrink-0 truncate text-sm font-semibold text-foreground', children: appTitle }), workspaceSwitcher ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": 'true', className: 'text-muted-foreground/60', children: "/" }), _jsx(PsWorkspaceSwitcher, { switcher: workspaceSwitcher, renderLink: renderLink })] })) : null] }), _jsxs("div", { className: 'flex shrink-0 items-center gap-1.5', children: [appSwitcher ? _jsx(PsAppSwitcher, { ...appSwitcher }) : null, user ? (_jsxs(PsDropdownMenu, { children: [_jsx(PsDropdownMenuTrigger, { asChild: true, children: _jsxs(PsButton, { variant: 'outline', className: 'h-9 max-w-[min(14rem,56vw)] gap-2 px-1.5 sm:pl-1.5 sm:pr-3', children: [_jsxs(PsAvatar, { className: 'size-6', children: [user.avatarUrl ? (_jsx(PsAvatarImage, { alt: user.displayName, src: user.avatarUrl })) : null, _jsx(PsAvatarFallback, { className: 'text-xs', children: user.displayName.slice(0, 1).toUpperCase() })] }), _jsx("span", { className: 'hidden min-w-0 truncate sm:inline', children: user.displayName })] }) }), _jsxs(PsDropdownMenuContent, { align: 'end', className: 'w-56', children: [_jsxs(PsDropdownMenuLabel, { className: 'flex flex-col gap-0.5', children: [_jsx("span", { children: "Account" }), _jsx("span", { className: 'truncate text-xs font-normal text-muted-foreground', children: user.displayName })] }), _jsx(PsDropdownMenuSeparator, {}), _jsx("form", { action: logoutHref, method: 'post', children: _jsx(PsDropdownMenuItem, { asChild: true, children: _jsxs("button", { className: 'flex w-full cursor-pointer items-center gap-2', type: 'submit', children: [_jsx(LogOut, {}), "Sign out"] }) }) })] })] })) : null] })] }), navItems.length ? (_jsx("nav", { "aria-label": 'Primary', className: '-mb-px flex max-w-full gap-1 overflow-x-auto', children: navItems.map((item) => (_jsx(React.Fragment, { children: link(item.href, PsClassNameService.merge('inline-flex h-9 shrink-0 items-center rounded-md px-3 text-sm font-medium transition-colors', item.active
19
+ return (_jsx("header", { className: 'sticky top-0 z-header border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80', children: _jsxs("div", { className: 'mx-auto flex w-full max-w-screen-2xl flex-col gap-3 px-4 py-3 sm:px-6', children: [_jsxs("div", { className: 'flex min-w-0 items-center justify-between gap-3', children: [_jsxs("div", { className: 'flex min-w-0 flex-1 items-center gap-2.5', children: [_jsx("div", { className: 'flex size-9 shrink-0 items-center justify-center rounded-lg border bg-muted', children: _jsx("img", { alt: logoAlt, className: 'size-5 object-contain', src: logoSrc }) }), _jsx("h1", { className: 'shrink-0 truncate text-sm font-semibold text-foreground', children: appTitle }), workspaceSwitcher ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": 'true', className: 'text-muted-foreground/60', children: "/" }), _jsx(PsWorkspaceSwitcher, { switcher: workspaceSwitcher, renderLink: renderLink })] })) : null] }), _jsxs("div", { className: 'flex shrink-0 items-center gap-1.5', children: [appSwitcher ? _jsx(PsAppSwitcher, { ...appSwitcher }) : null, user ? (_jsxs(PsDropdownMenu, { children: [_jsx(PsDropdownMenuTrigger, { asChild: true, children: _jsxs(PsButton, { variant: 'outline', className: 'h-9 max-w-[min(14rem,56vw)] gap-2 px-1.5 sm:pl-1.5 sm:pr-3', children: [_jsxs(PsAvatar, { className: 'size-6', children: [user.avatarUrl ? (_jsx(PsAvatarImage, { alt: user.displayName, src: user.avatarUrl })) : null, _jsx(PsAvatarFallback, { className: 'text-xs', children: user.displayName.slice(0, 1).toUpperCase() })] }), _jsx("span", { className: 'hidden min-w-0 truncate sm:inline', children: user.displayName })] }) }), _jsxs(PsDropdownMenuContent, { align: 'end', className: 'w-56', children: [_jsxs(PsDropdownMenuLabel, { className: 'flex flex-col gap-0.5', children: [_jsx("span", { children: "Account" }), _jsx("span", { className: 'truncate text-xs font-normal text-muted-foreground', children: user.displayName })] }), _jsx(PsDropdownMenuSeparator, {}), _jsx("form", { action: logoutHref, method: 'post', children: _jsx(PsDropdownMenuItem, { asChild: true, children: _jsxs("button", { className: 'flex w-full cursor-pointer items-center gap-2', type: 'submit', children: [_jsx(LogOut, {}), "Sign out"] }) }) })] })] })) : null] })] }), navItems.length ? (_jsx("nav", { "aria-label": 'Primary', className: '-mb-px flex max-w-full gap-1 overflow-x-auto', children: navItems.map((item) => (_jsx(React.Fragment, { children: link(item.href, PsClassNameService.merge('inline-flex h-9 shrink-0 items-center rounded-md px-3 text-sm font-medium transition-colors', item.active
20
20
  ? 'bg-secondary text-secondary-foreground'
21
21
  : 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'), item.label, item.active) }, item.id))) })) : null] }) }));
22
22
  };
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
5
+ import { PsClassNameService } from '../services/ps-class-name-service.js';
6
+ export const PsCollapsibleContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(CollapsiblePrimitive.Content, { ref: ref, className: PsClassNameService.merge('overflow-hidden data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0', className), ...props })));
7
+ PsCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName;
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
3
+ export const PsCollapsibleTrigger = CollapsiblePrimitive.Trigger;
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
3
+ export const PsCollapsible = CollapsiblePrimitive.Root;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsButtonVariants } from '../constants/ps-button-variants.js';
3
+ import { PsAlertDialogAction } from './ps-alert-dialog-action.js';
4
+ import { PsAlertDialogCancel } from './ps-alert-dialog-cancel.js';
5
+ import { PsAlertDialogContent } from './ps-alert-dialog-content.js';
6
+ import { PsAlertDialogDescription } from './ps-alert-dialog-description.js';
7
+ import { PsAlertDialogFooter } from './ps-alert-dialog-footer.js';
8
+ import { PsAlertDialogHeader } from './ps-alert-dialog-header.js';
9
+ import { PsAlertDialogTitle } from './ps-alert-dialog-title.js';
10
+ import { PsAlertDialogTrigger } from './ps-alert-dialog-trigger.js';
11
+ import { PsAlertDialog } from './ps-alert-dialog.js';
12
+ export const PsConfirmAction = ({ cancelLabel, confirmLabel, description, destructive = false, onConfirm, title, trigger, }) => (_jsxs(PsAlertDialog, { children: [_jsx(PsAlertDialogTrigger, { asChild: true, children: trigger }), _jsxs(PsAlertDialogContent, { children: [_jsxs(PsAlertDialogHeader, { children: [_jsx(PsAlertDialogTitle, { children: title }), _jsx(PsAlertDialogDescription, { children: description })] }), _jsxs(PsAlertDialogFooter, { children: [_jsx(PsAlertDialogCancel, { children: cancelLabel }), _jsx(PsAlertDialogAction, { className: destructive ? PsButtonVariants({ variant: 'destructive' }) : undefined, onClick: onConfirm, children: confirmLabel })] })] })] }));
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsDateTimePickerConfig } from '../constants/ps-date-time-picker-config.js';
3
+ import { PsClassNameService } from '../services/ps-class-name-service.js';
4
+ import { PsDateTimeService } from '../services/ps-date-time-service.js';
5
+ import { PsDatePicker } from './ps-date-picker.js';
6
+ import { PsInput } from './ps-input.js';
7
+ export const PsDateTimePicker = ({ id, value, onValueChange, placeholder, disabled = false, invalid = false, clearable = false, fromDate, className, }) => {
8
+ const { date, time } = PsDateTimeService.split(value);
9
+ return (_jsxs("div", { className: PsClassNameService.merge('flex w-full gap-2', className), children: [_jsx(PsDatePicker, { className: 'min-w-0 flex-1', clearable: clearable, disabled: disabled, fromDate: fromDate, id: id, invalid: invalid, onValueChange: (next) => onValueChange(PsDateTimeService.join(next, time)), placeholder: placeholder, value: date }), _jsx(PsInput, { "aria-invalid": invalid, "aria-label": PsDateTimePickerConfig.timeLabel, className: 'h-10 w-32 shrink-0', disabled: disabled || date === '', onChange: (event) => onValueChange(PsDateTimeService.join(date, event.target.value)), type: 'time', value: time })] }));
10
+ };
@@ -6,5 +6,5 @@ import { X } from 'lucide-react';
6
6
  import { PsClassNameService } from '../services/ps-class-name-service.js';
7
7
  import { PsDialogOverlay } from './ps-dialog-overlay.js';
8
8
  import { PsDialogPortal } from './ps-dialog-portal.js';
9
- export const PsDialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(PsDialogPortal, { children: [_jsx(PsDialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: PsClassNameService.merge('fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props, children: [children, _jsxs(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 data-[state=open]:text-muted-foreground', children: [_jsx(X, { className: 'h-4 w-4' }), _jsx("span", { className: 'sr-only', children: "Close" })] })] })] })));
9
+ export const PsDialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(PsDialogPortal, { children: [_jsx(PsDialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: PsClassNameService.merge('fixed left-[50%] top-[50%] z-modal grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 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', className), ...props, children: [children, _jsxs(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 data-[state=open]:text-muted-foreground', children: [_jsx(X, { className: 'h-4 w-4' }), _jsx("span", { className: 'sr-only', children: "Close" })] })] })] })));
10
10
  PsDialogContent.displayName = DialogPrimitive.Content.displayName;
@@ -3,5 +3,5 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import * as DialogPrimitive from '@radix-ui/react-dialog';
5
5
  import { PsClassNameService } from '../services/ps-class-name-service.js';
6
- export const PsDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: PsClassNameService.merge('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props })));
6
+ export const PsDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: PsClassNameService.merge('fixed inset-0 z-overlay bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props })));
7
7
  PsDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
@@ -2,5 +2,5 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
4
  import { PsClassNameService } from '../services/ps-class-name-service.js';
5
- export const PsDropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: PsClassNameService.merge('z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props }) })));
5
+ export const PsDropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: PsClassNameService.merge('z-top-layer max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-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 origin-[--radix-dropdown-menu-content-transform-origin]', className), ...props }) })));
6
6
  PsDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;