@pallasoft/ps-core-components 2.15.4 → 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/components/ps-active-filter-chip.d.ts +7 -0
  2. package/dist/components/ps-active-filter-chip.js +8 -0
  3. package/dist/components/ps-back-link.d.ts +7 -0
  4. package/dist/components/ps-back-link.js +11 -0
  5. package/dist/components/ps-card-block-skeleton.d.ts +4 -0
  6. package/dist/components/ps-card-block-skeleton.js +8 -0
  7. package/dist/components/ps-data-boundary.d.ts +9 -0
  8. package/dist/components/ps-data-boundary.js +7 -0
  9. package/dist/components/ps-fab.js +1 -1
  10. package/dist/components/ps-faq-answer.d.ts +5 -0
  11. package/dist/components/ps-faq-answer.js +7 -0
  12. package/dist/components/ps-feature-grid.d.ts +7 -0
  13. package/dist/components/ps-feature-grid.js +10 -0
  14. package/dist/components/ps-form-fields-skeleton.d.ts +5 -0
  15. package/dist/components/ps-form-fields-skeleton.js +10 -0
  16. package/dist/components/ps-form-page-skeleton.d.ts +5 -0
  17. package/dist/components/ps-form-page-skeleton.js +10 -0
  18. package/dist/components/ps-icon-button.d.ts +7 -0
  19. package/dist/components/ps-icon-button.js +9 -0
  20. package/dist/components/ps-icon-link.d.ts +10 -0
  21. package/dist/components/ps-icon-link.js +13 -0
  22. package/dist/components/ps-intro-skeleton.d.ts +1 -0
  23. package/dist/components/ps-intro-skeleton.js +7 -0
  24. package/dist/components/ps-link-tile-grid.d.ts +7 -0
  25. package/dist/components/ps-link-tile-grid.js +13 -0
  26. package/dist/components/ps-metric-grid-skeleton.d.ts +4 -0
  27. package/dist/components/ps-metric-grid-skeleton.js +7 -0
  28. package/dist/components/ps-metric-grid.d.ts +5 -0
  29. package/dist/components/ps-metric-grid.js +12 -0
  30. package/dist/components/ps-metric-row.d.ts +5 -0
  31. package/dist/components/ps-metric-row.js +9 -0
  32. package/dist/components/ps-page-header.d.ts +8 -0
  33. package/dist/components/ps-page-header.js +8 -0
  34. package/dist/components/ps-page-intro.d.ts +6 -0
  35. package/dist/components/ps-page-intro.js +7 -0
  36. package/dist/components/ps-page-layout.d.ts +7 -0
  37. package/dist/components/ps-page-layout.js +7 -0
  38. package/dist/components/ps-page-skeleton.d.ts +9 -0
  39. package/dist/components/ps-page-skeleton.js +12 -0
  40. package/dist/components/ps-page-stack.d.ts +6 -0
  41. package/dist/components/ps-page-stack.js +7 -0
  42. package/dist/components/ps-section-panel-skeleton.d.ts +6 -0
  43. package/dist/components/ps-section-panel-skeleton.js +7 -0
  44. package/dist/components/ps-section-panel.d.ts +8 -0
  45. package/dist/components/ps-section-panel.js +7 -0
  46. package/dist/components/ps-signed-amount.d.ts +6 -0
  47. package/dist/components/ps-signed-amount.js +12 -0
  48. package/dist/components/ps-tab-row-skeleton.d.ts +1 -0
  49. package/dist/components/ps-tab-row-skeleton.js +8 -0
  50. package/dist/components/ps-table-list-skeleton.d.ts +1 -0
  51. package/dist/components/ps-table-list-skeleton.js +8 -0
  52. package/dist/components/ps-table-page-skeleton.d.ts +6 -0
  53. package/dist/components/ps-table-page-skeleton.js +8 -0
  54. package/dist/components/ps-theme-controller.d.ts +1 -0
  55. package/dist/components/ps-theme-controller.js +13 -0
  56. package/dist/components/ps-theme-system-listener.d.ts +1 -0
  57. package/dist/components/ps-theme-system-listener.js +13 -0
  58. package/dist/components/ps-tool-card-grid.d.ts +7 -0
  59. package/dist/components/ps-tool-card-grid.js +14 -0
  60. package/dist/constants/ps-amount-direction-classes.d.ts +2 -0
  61. package/dist/constants/ps-amount-direction-classes.js +9 -0
  62. package/dist/constants/ps-faq-block-kind.d.ts +4 -0
  63. package/dist/constants/ps-faq-block-kind.js +8 -0
  64. package/dist/constants/ps-icon-action-config.d.ts +5 -0
  65. package/dist/constants/ps-icon-action-config.js +8 -0
  66. package/dist/constants/ps-metric-grid-config.d.ts +5 -0
  67. package/dist/constants/ps-metric-grid-config.js +14 -0
  68. package/dist/constants/ps-page-skeleton-config.d.ts +8 -0
  69. package/dist/constants/ps-page-skeleton-config.js +11 -0
  70. package/dist/constants/ps-voice-orb.js +3 -3
  71. package/dist/constants/ps-website-section-config.d.ts +4 -0
  72. package/dist/constants/ps-website-section-config.js +7 -0
  73. package/dist/esm/components/ps-active-filter-chip.js +4 -0
  74. package/dist/esm/components/ps-back-link.js +7 -0
  75. package/dist/esm/components/ps-card-block-skeleton.js +4 -0
  76. package/dist/esm/components/ps-data-boundary.js +3 -0
  77. package/dist/esm/components/ps-fab.js +1 -1
  78. package/dist/esm/components/ps-faq-answer.js +3 -0
  79. package/dist/esm/components/ps-feature-grid.js +6 -0
  80. package/dist/esm/components/ps-form-fields-skeleton.js +6 -0
  81. package/dist/esm/components/ps-form-page-skeleton.js +6 -0
  82. package/dist/esm/components/ps-icon-button.js +5 -0
  83. package/dist/esm/components/ps-icon-link.js +9 -0
  84. package/dist/esm/components/ps-intro-skeleton.js +3 -0
  85. package/dist/esm/components/ps-link-tile-grid.js +9 -0
  86. package/dist/esm/components/ps-metric-grid-skeleton.js +3 -0
  87. package/dist/esm/components/ps-metric-grid.js +8 -0
  88. package/dist/esm/components/ps-metric-row.js +5 -0
  89. package/dist/esm/components/ps-page-header.js +4 -0
  90. package/dist/esm/components/ps-page-intro.js +3 -0
  91. package/dist/esm/components/ps-page-layout.js +3 -0
  92. package/dist/esm/components/ps-page-skeleton.js +8 -0
  93. package/dist/esm/components/ps-page-stack.js +3 -0
  94. package/dist/esm/components/ps-section-panel-skeleton.js +3 -0
  95. package/dist/esm/components/ps-section-panel.js +3 -0
  96. package/dist/esm/components/ps-signed-amount.js +8 -0
  97. package/dist/esm/components/ps-tab-row-skeleton.js +4 -0
  98. package/dist/esm/components/ps-table-list-skeleton.js +4 -0
  99. package/dist/esm/components/ps-table-page-skeleton.js +4 -0
  100. package/dist/esm/components/ps-theme-controller.js +9 -0
  101. package/dist/esm/components/ps-theme-system-listener.js +9 -0
  102. package/dist/esm/components/ps-tool-card-grid.js +10 -0
  103. package/dist/esm/constants/ps-amount-direction-classes.js +6 -0
  104. package/dist/esm/constants/ps-faq-block-kind.js +5 -0
  105. package/dist/esm/constants/ps-icon-action-config.js +5 -0
  106. package/dist/esm/constants/ps-metric-grid-config.js +11 -0
  107. package/dist/esm/constants/ps-page-skeleton-config.js +8 -0
  108. package/dist/esm/constants/ps-voice-orb.js +3 -3
  109. package/dist/esm/constants/ps-website-section-config.js +4 -0
  110. package/dist/esm/hooks/use-ps-theme-mode.js +17 -0
  111. package/dist/esm/index.js +42 -0
  112. package/dist/esm/models/ps-faq-block-data.js +1 -0
  113. package/dist/esm/models/ps-feature-card-data.js +1 -0
  114. package/dist/esm/models/ps-link-tile-data.js +1 -0
  115. package/dist/esm/models/ps-metric-item-data.js +1 -0
  116. package/dist/esm/models/ps-theme-mode-state.js +1 -0
  117. package/dist/esm/models/ps-tool-card-data.js +1 -0
  118. package/dist/hooks/use-ps-theme-mode.d.ts +2 -0
  119. package/dist/hooks/use-ps-theme-mode.js +21 -0
  120. package/dist/index.d.ts +42 -0
  121. package/dist/index.js +42 -0
  122. package/dist/models/ps-faq-block-data.d.ts +5 -0
  123. package/dist/models/ps-faq-block-data.js +2 -0
  124. package/dist/models/ps-feature-card-data.d.ts +6 -0
  125. package/dist/models/ps-feature-card-data.js +2 -0
  126. package/dist/models/ps-link-tile-data.d.ts +6 -0
  127. package/dist/models/ps-link-tile-data.js +2 -0
  128. package/dist/models/ps-metric-item-data.d.ts +5 -0
  129. package/dist/models/ps-metric-item-data.js +2 -0
  130. package/dist/models/ps-theme-mode-state.d.ts +7 -0
  131. package/dist/models/ps-theme-mode-state.js +2 -0
  132. package/dist/models/ps-tool-card-data.d.ts +8 -0
  133. package/dist/models/ps-tool-card-data.js +2 -0
  134. package/package.json +4 -3
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsFaqBlockKind = void 0;
4
+ var PsFaqBlockKind;
5
+ (function (PsFaqBlockKind) {
6
+ PsFaqBlockKind["List"] = "list";
7
+ PsFaqBlockKind["Paragraph"] = "paragraph";
8
+ })(PsFaqBlockKind || (exports.PsFaqBlockKind = PsFaqBlockKind = {}));
@@ -0,0 +1,5 @@
1
+ export declare const PsIconActionConfig: {
2
+ className: string;
3
+ disabledClassName: string;
4
+ iconClassName: string;
5
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsIconActionConfig = void 0;
4
+ exports.PsIconActionConfig = {
5
+ className: 'ps-focus-ring relative inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-2xl text-ink/65 transition-colors hover:bg-ink/5 hover:text-ink',
6
+ disabledClassName: 'disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent',
7
+ iconClassName: 'block h-5 w-5 shrink-0',
8
+ };
@@ -0,0 +1,5 @@
1
+ export declare const PsMetricGridColumns: Record<number, string>;
2
+ export declare const PsMetricGridConfig: {
3
+ defaultColumns: number;
4
+ maxColumns: number;
5
+ };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsMetricGridConfig = exports.PsMetricGridColumns = void 0;
4
+ exports.PsMetricGridColumns = {
5
+ 1: 'grid-cols-1',
6
+ 2: 'sm:grid-cols-2',
7
+ 3: 'sm:grid-cols-2 lg:grid-cols-3',
8
+ 4: 'sm:grid-cols-2 lg:grid-cols-4',
9
+ 5: 'sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5',
10
+ };
11
+ exports.PsMetricGridConfig = {
12
+ defaultColumns: 4,
13
+ maxColumns: 5,
14
+ };
@@ -0,0 +1,8 @@
1
+ export declare const PsPageSkeletonConfig: {
2
+ readonly formColumnsClassName: "sm:grid-cols-2";
3
+ readonly formFields: readonly [1, 2, 3, 4];
4
+ readonly formLabelClassName: "h-3 w-24";
5
+ readonly formSections: readonly [1, 2];
6
+ readonly tableColumns: 5;
7
+ readonly tableRows: 8;
8
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsPageSkeletonConfig = void 0;
4
+ exports.PsPageSkeletonConfig = {
5
+ formColumnsClassName: 'sm:grid-cols-2',
6
+ formFields: [1, 2, 3, 4],
7
+ formLabelClassName: 'h-3 w-24',
8
+ formSections: [1, 2],
9
+ tableColumns: 5,
10
+ tableRows: 8,
11
+ };
@@ -74,10 +74,10 @@ exports.PsVoiceOrbCadenceByState = {
74
74
  };
75
75
  exports.PsVoiceOrbThemes = {
76
76
  default: {
77
- glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-accent-rgb) / 0.5) 58%, rgb(var(--ps-color-primary-rgb) / 0.75) 100%)',
78
- rim: 'conic-gradient(rgb(var(--ps-color-primary-rgb)), rgb(var(--ps-color-accent-rgb)), rgb(255 255 255), rgb(var(--ps-color-secondary-rgb)), rgb(var(--ps-color-primary-rgb)))',
77
+ glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-secondary-rgb) / 0.55) 58%, rgb(var(--ps-color-primary-rgb) / 0.75) 100%)',
78
+ rim: 'conic-gradient(rgb(var(--ps-color-primary-rgb)), rgb(var(--ps-color-secondary-rgb)), rgb(255 255 255), rgb(var(--ps-color-secondary-rgb)), rgb(var(--ps-color-primary-rgb)))',
79
79
  ripple: 'rgb(var(--ps-color-primary-rgb) / 0.6)',
80
- core: 'radial-gradient(circle, rgb(255 255 255), rgb(var(--ps-color-accent-rgb) / 0.75) 35%, transparent 70%)',
80
+ core: 'radial-gradient(circle, rgb(255 255 255), rgb(var(--ps-color-secondary-rgb) / 0.75) 35%, transparent 70%)',
81
81
  },
82
82
  error: {
83
83
  glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-danger-rgb) / 0.45) 58%, rgb(var(--ps-color-danger-rgb) / 0.7) 100%)',
@@ -0,0 +1,4 @@
1
+ export declare const PsWebsiteSectionConfig: {
2
+ staggerDelay: number;
3
+ tileStaggerDelay: number;
4
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsWebsiteSectionConfig = void 0;
4
+ exports.PsWebsiteSectionConfig = {
5
+ staggerDelay: 0.08,
6
+ tileStaggerDelay: 0.06,
7
+ };
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsIcon, PsIconKey } from '@pallasoft/ps-icons';
3
+ import { PsPill } from './ps-pill';
4
+ export const PsActiveFilterChip = ({ id, label, onRemove, removeLabel, }) => (_jsx("button", { "aria-label": removeLabel, className: 'ps-focus-ring shrink-0 rounded-full', id: id, onClick: onRemove, type: 'button', children: _jsx(PsPill, { className: 'pr-2', tone: 'primary', children: _jsxs("span", { className: 'flex items-center gap-1.5', children: [label, _jsx(PsIcon, { className: 'h-3 w-3', iconKey: PsIconKey.Close })] }) }) }));
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsIcon, PsIconKey } from '@pallasoft/ps-icons';
3
+ const backLinkClassName = 'ps-focus-ring inline-flex w-fit items-center gap-1.5 rounded-ps-control text-sm font-medium text-ink/60 transition hover:text-primary';
4
+ export const PsBackLink = ({ href, label, LinkComponent }) => {
5
+ const content = (_jsxs(_Fragment, { children: [_jsx(PsIcon, { iconKey: PsIconKey.ChevronRight, className: 'h-4 w-4 rotate-180' }), label] }));
6
+ return LinkComponent ? (_jsx(LinkComponent, { className: backLinkClassName, prefetch: 'intent', to: href, children: content })) : (_jsx("a", { className: backLinkClassName, href: href, children: content }));
7
+ };
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsSkeletonShape } from '../constants/ps-skeleton-shape';
3
+ import { PsSkeleton } from './ps-skeleton';
4
+ export const PsCardBlockSkeleton = ({ height }) => (_jsx(PsSkeleton, { height: height, radius: '1.25rem', shape: PsSkeletonShape.Block, width: '100%' }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Suspense } from 'react';
3
+ export const PsDataBoundary = ({ AwaitComponent, children, errorElement, fallback, resolve, }) => (_jsx(Suspense, { fallback: fallback, children: _jsx(AwaitComponent, { errorElement: errorElement, resolve: resolve, children: children }) }));
@@ -6,4 +6,4 @@ const positionClassNames = {
6
6
  'bottom-left': 'bottom-6 left-6',
7
7
  'bottom-center': 'bottom-6 left-1/2 -translate-x-1/2',
8
8
  };
9
- export const PsFab = ({ className, position = 'bottom-right', ...props }) => (_jsx(PsButton, { size: 'large', variant: 'primary', className: PallasoftClassNameService.merge('fixed z-docked h-14 w-14 shrink-0 !px-0 shadow-lg', positionClassNames[position], className), ...props }));
9
+ export const PsFab = ({ className, position = 'bottom-right', ...props }) => (_jsx(PsButton, { size: 'large', variant: 'primary', className: PallasoftClassNameService.merge('!fixed z-docked h-14 w-14 shrink-0 !px-0 shadow-lg', positionClassNames[position], className), ...props }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsFaqBlockKind } from '../constants/ps-faq-block-kind';
3
+ export const PsFaqAnswer = ({ blocks }) => (_jsx("div", { className: 'flex flex-col gap-3', children: blocks.map((block, index) => block.kind === PsFaqBlockKind.List ? (_jsx("ul", { className: 'list-disc pl-5', children: block.items.map((item) => (_jsx("li", { children: item }, item))) }, index)) : (_jsx("div", { className: 'flex flex-col gap-3', children: block.items.map((item) => (_jsx("p", { children: item }, item))) }, index))) }));
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsIcon } from '@pallasoft/ps-icons';
3
+ import { PsScrollReveal, PsStaggerContainer, PsStaggerItem } from '@pallasoft/ps-motion-components';
4
+ import { PsWebsiteSectionConfig } from '../constants/ps-website-section-config';
5
+ import { PsCard } from './ps-card';
6
+ export const PsFeatureGrid = ({ eyebrow, features, title }) => (_jsxs("div", { className: 'flex w-full flex-col items-center gap-8', children: [_jsxs(PsScrollReveal, { className: 'text-center', children: [_jsx("span", { className: 'ps-eyebrow mb-3 block', children: eyebrow }), _jsx("h2", { className: 'text-header-2 text-ink', children: title })] }), _jsx(PsStaggerContainer, { className: 'grid w-full grid-cols-1 gap-5 md:grid-cols-3', staggerDelay: PsWebsiteSectionConfig.staggerDelay, children: features.map((feature) => (_jsx(PsStaggerItem, { children: _jsxs(PsCard, { className: 'h-full text-center', density: 'spacious', children: [_jsx("span", { className: 'ps-icon-surface mx-auto h-12 w-12', children: _jsx(PsIcon, { className: 'h-6 w-6', iconKey: feature.iconKey }) }), _jsx("h3", { className: 'text-header-4 mb-2 mt-4 text-ink', children: feature.title }), _jsx("p", { className: 'text-body-2 text-ink/60', children: feature.description })] }) }, feature.title))) })] }));
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ import { PsPageSkeletonConfig } from '../constants/ps-page-skeleton-config';
4
+ import { PsSkeletonShape } from '../constants/ps-skeleton-shape';
5
+ import { PsSkeleton } from './ps-skeleton';
6
+ export const PsFormFieldsSkeleton = ({ columnsClassName = PsPageSkeletonConfig.formColumnsClassName, fields = PsPageSkeletonConfig.formFields, }) => (_jsx("div", { className: PallasoftClassNameService.merge('grid gap-4', columnsClassName), children: fields.map((field) => (_jsxs("div", { className: 'flex flex-col gap-2', children: [_jsx(PsSkeleton, { className: PsPageSkeletonConfig.formLabelClassName }), _jsx(PsSkeleton, { className: 'h-10 w-full', shape: PsSkeletonShape.Block })] }, field))) }));
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsPageSkeletonConfig } from '../constants/ps-page-skeleton-config';
3
+ import { PsFormFieldsSkeleton } from './ps-form-fields-skeleton';
4
+ import { PsPageSkeleton } from './ps-page-skeleton';
5
+ import { PsSectionPanelSkeleton } from './ps-section-panel-skeleton';
6
+ export const PsFormPageSkeleton = ({ loadingLabel, title }) => (_jsx(PsPageSkeleton, { hasActions: true, loadingLabel: loadingLabel, title: title, children: PsPageSkeletonConfig.formSections.map((section) => (_jsx(PsSectionPanelSkeleton, { children: _jsx(PsFormFieldsSkeleton, {}) }, section))) }));
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ import { PsIcon } from '@pallasoft/ps-icons';
4
+ import { PsIconActionConfig } from '../constants/ps-icon-action-config';
5
+ export const PsIconButton = ({ className, iconKey, label, type, ...props }) => (_jsx("button", { ...props, "aria-label": label, className: PallasoftClassNameService.merge(PsIconActionConfig.className, PsIconActionConfig.disabledClassName, className), title: label, type: type === 'submit' || type === 'reset' ? type : 'button', children: _jsx(PsIcon, { "aria-hidden": 'true', className: PsIconActionConfig.iconClassName, iconKey: iconKey }) }));
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ import { PsIcon } from '@pallasoft/ps-icons';
4
+ import { PsIconActionConfig } from '../constants/ps-icon-action-config';
5
+ export const PsIconLink = ({ className, href, iconKey, label, LinkComponent }) => {
6
+ const linkClassName = PallasoftClassNameService.merge(PsIconActionConfig.className, className);
7
+ const icon = (_jsx(PsIcon, { "aria-hidden": 'true', className: PsIconActionConfig.iconClassName, iconKey: iconKey }));
8
+ return LinkComponent ? (_jsx(LinkComponent, { "aria-label": label, className: linkClassName, prefetch: 'intent', title: label, to: href, children: icon })) : (_jsx("a", { "aria-label": label, className: linkClassName, href: href, title: label, children: icon }));
9
+ };
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsSkeleton } from './ps-skeleton';
3
+ export const PsIntroSkeleton = () => (_jsxs("div", { className: 'mx-auto flex w-full max-w-3xl flex-col items-center gap-4', children: [_jsx(PsSkeleton, { height: '0.875rem', radius: '999px', width: '6rem' }), _jsx(PsSkeleton, { height: '2.5rem', radius: '0.75rem', width: '70%' }), _jsx(PsSkeleton, { height: '1.125rem', radius: '0.5rem', width: '85%' })] }));
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { PsIcon, PsIconKey } from '@pallasoft/ps-icons';
3
+ import { PsStaggerContainer, PsStaggerItem } from '@pallasoft/ps-motion-components';
4
+ import { PsWebsiteSectionConfig } from '../constants/ps-website-section-config';
5
+ const tileClassName = 'ps-pressable ps-focus-ring group flex h-full items-center justify-between gap-3 rounded-ps-card border border-line bg-surface px-4 py-3 transition-colors hover:border-primary/50';
6
+ export const PsLinkTileGrid = ({ LinkComponent, tiles }) => {
7
+ const renderTile = (tile, content) => LinkComponent ? (_jsx(LinkComponent, { "aria-label": tile.ariaLabel, className: tileClassName, prefetch: 'intent', to: tile.href, children: content })) : (_jsx("a", { "aria-label": tile.ariaLabel, className: tileClassName, href: tile.href, children: content }));
8
+ return (_jsx(PsStaggerContainer, { className: 'grid w-full grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3', staggerDelay: PsWebsiteSectionConfig.tileStaggerDelay, children: tiles.map((tile) => (_jsx(PsStaggerItem, { children: renderTile(tile, _jsxs(_Fragment, { children: [_jsxs("span", { className: 'flex min-w-0 flex-col', children: [_jsx("span", { className: 'text-body-2 font-semibold text-ink', children: tile.title }), _jsx("span", { className: 'truncate text-body-3 text-ink/60', children: tile.description })] }), _jsx(PsIcon, { className: 'h-4 w-4 shrink-0 text-ink/40 transition-colors group-hover:text-primary', iconKey: PsIconKey.ChevronRight })] })) }, tile.href))) }));
9
+ };
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsMetricCard } from './ps-metric-card';
3
+ export const PsMetricGridSkeleton = ({ count }) => (_jsx("div", { className: 'grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4', children: Array.from({ length: count }, (_, index) => (_jsx(PsMetricCard, { isLoading: true, label: '', value: '' }, index))) }));
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ import { PsMetricGridColumns, PsMetricGridConfig } from '../constants/ps-metric-grid-config';
4
+ import { PsMetricCard } from './ps-metric-card';
5
+ export const PsMetricGrid = ({ items }) => {
6
+ const columns = PsMetricGridColumns[Math.min(items.length, PsMetricGridConfig.maxColumns)];
7
+ return (_jsx("div", { className: PallasoftClassNameService.merge('grid grid-cols-1 gap-3', columns === undefined ? PsMetricGridColumns[PsMetricGridConfig.defaultColumns] : columns), children: items.map((item) => (_jsx(PsMetricCard, { label: item.label, value: item.value }, item.label))) }));
8
+ };
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsStaggerContainer, PsStaggerItem } from '@pallasoft/ps-motion-components';
3
+ import { PsWebsiteSectionConfig } from '../constants/ps-website-section-config';
4
+ import { PsMetricCard } from './ps-metric-card';
5
+ export const PsMetricRow = ({ metrics }) => (_jsx(PsStaggerContainer, { className: 'grid w-full grid-cols-1 gap-5 md:grid-cols-3', staggerDelay: PsWebsiteSectionConfig.staggerDelay, children: metrics.map((metric) => (_jsx(PsStaggerItem, { children: _jsx(PsMetricCard, { label: metric.label, value: metric.value }) }, metric.label))) }));
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsBackLink } from './ps-back-link';
3
+ import { PsSectionHeader } from './ps-section-header';
4
+ export const PsPageHeader = ({ actions, backLink, title }) => (_jsx(PsSectionHeader, { leading: backLink ? _jsx(PsBackLink, { ...backLink }) : undefined, title: title, trailing: actions ? (_jsx("div", { className: 'flex flex-wrap items-center justify-end gap-2', children: actions })) : undefined }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsScrollReveal } from '@pallasoft/ps-motion-components';
3
+ export const PsPageIntro = ({ description, eyebrow, title }) => (_jsxs(PsScrollReveal, { className: 'mx-auto flex w-full max-w-3xl flex-col items-center gap-4 text-center', children: [_jsx("span", { className: 'ps-eyebrow', children: eyebrow }), _jsx("h1", { className: 'text-header-1 text-ink', children: title }), description ? _jsx("p", { className: 'text-body-1 text-ink/60', children: description }) : null] }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ export const PsPageLayout = ({ children, className, isNarrow = false }) => (_jsx("div", { className: PallasoftClassNameService.merge('w-full px-4 py-5 md:px-6 md:py-6', className), children: _jsx("div", { className: isNarrow ? 'mx-auto flex w-full min-w-0 max-w-7xl flex-col' : 'flex min-w-0 flex-col', children: children }) }));
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsSkeletonShape } from '../constants/ps-skeleton-shape';
3
+ import { PsPageHeader } from './ps-page-header';
4
+ import { PsPageLayout } from './ps-page-layout';
5
+ import { PsPageStack } from './ps-page-stack';
6
+ import { PsSectionHeader } from './ps-section-header';
7
+ import { PsSkeleton } from './ps-skeleton';
8
+ export const PsPageSkeleton = ({ children, hasActions = false, isNarrow = false, loadingLabel, title, }) => (_jsx(PsPageLayout, { isNarrow: isNarrow, children: _jsxs(PsPageStack, { children: [title === undefined ? (_jsx(PsSectionHeader, { isLoading: true, title: loadingLabel, trailing: hasActions })) : (_jsx(PsPageHeader, { actions: hasActions ? (_jsx(PsSkeleton, { height: '2.5rem', radius: '9999px', shape: PsSkeletonShape.Block, width: '9rem' })) : undefined, title: title })), children] }) }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ export const PsPageStack = ({ children, className }) => (_jsx("div", { className: PallasoftClassNameService.merge('ps-stack', className), children: children }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsSkeleton } from './ps-skeleton';
3
+ export const PsSectionPanelSkeleton = ({ children, title }) => (_jsxs("section", { className: 'ps-section', children: [_jsx("div", { className: 'flex min-h-10 items-center', children: title === undefined ? (_jsx(PsSkeleton, { className: 'h-4 w-44' })) : (_jsx("h2", { className: 'text-base font-semibold text-ink', children: title })) }), _jsx("div", { className: 'flex min-w-0 flex-col gap-4', children: children })] }));
@@ -0,0 +1,3 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ export const PsSectionPanel = ({ actions, children, className, title }) => (_jsxs("section", { className: PallasoftClassNameService.merge('ps-section', className), children: [title || actions ? (_jsxs("div", { className: 'flex min-h-10 flex-wrap items-center justify-between gap-3', children: [title ? _jsx("h2", { className: 'text-base font-semibold text-ink', children: title }) : _jsx("span", {}), actions ? _jsx("div", { className: 'flex flex-wrap items-center gap-2', children: actions }) : null] })) : null, _jsx("div", { className: 'flex min-w-0 flex-col gap-4', children: children })] }));
@@ -0,0 +1,8 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
3
+ import { AmountDirection, Common } from '@pallasoft/ps-utilities';
4
+ import { PsAmountDirectionClasses } from '../constants/ps-amount-direction-classes';
5
+ export const PsSignedAmount = ({ amount, className, formatted }) => {
6
+ const direction = Common.AmountService.direction(amount);
7
+ return (_jsxs("span", { className: PallasoftClassNameService.merge('tabular-nums', PsAmountDirectionClasses[direction], className), children: [direction === AmountDirection.In ? '+' : '', formatted] }));
8
+ };
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsSkeletonShape } from '../constants/ps-skeleton-shape';
3
+ import { PsSkeleton } from './ps-skeleton';
4
+ export const PsTabRowSkeleton = () => (_jsx(PsSkeleton, { height: '2.75rem', radius: '9999px', shape: PsSkeletonShape.Block, width: '100%' }));
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsPageSkeletonConfig } from '../constants/ps-page-skeleton-config';
3
+ import { PsSkeletonTable } from './ps-skeleton-table';
4
+ export const PsTableListSkeleton = () => (_jsx(PsSkeletonTable, { columns: PsPageSkeletonConfig.tableColumns, hasToolbar: true, rows: PsPageSkeletonConfig.tableRows }));
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PsPageSkeleton } from './ps-page-skeleton';
3
+ import { PsTableListSkeleton } from './ps-table-list-skeleton';
4
+ export const PsTablePageSkeleton = ({ isNarrow = false, loadingLabel, title, }) => (_jsx(PsPageSkeleton, { hasActions: true, isNarrow: isNarrow, loadingLabel: loadingLabel, title: title, children: _jsx(PsTableListSkeleton, {}) }));
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { usePsThemeMode } from '../hooks/use-ps-theme-mode';
3
+ import { PsThemeToggle } from './ps-theme-toggle';
4
+ export const PsThemeController = () => {
5
+ const { resolvedMode, toggle } = usePsThemeMode();
6
+ if (resolvedMode === null)
7
+ return _jsx("div", { className: 'h-11 w-11' });
8
+ return _jsx(PsThemeToggle, { mode: resolvedMode, onClick: toggle });
9
+ };
@@ -0,0 +1,9 @@
1
+ import { useEffect } from 'react';
2
+ import { PallasoftThemeBrowserService } from '@pallasoft/ps-design-system';
3
+ export const PsThemeSystemListener = () => {
4
+ useEffect(() => {
5
+ PallasoftThemeBrowserService.applyStoredMode();
6
+ return PallasoftThemeBrowserService.listenToSystemChanges(() => undefined);
7
+ }, []);
8
+ return null;
9
+ };
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PsIcon, PsIconKey } from '@pallasoft/ps-icons';
3
+ import { PsStaggerContainer, PsStaggerItem } from '@pallasoft/ps-motion-components';
4
+ import { PsWebsiteSectionConfig } from '../constants/ps-website-section-config';
5
+ import { PsCard } from './ps-card';
6
+ const cardLinkClassName = 'ps-pressable ps-focus-ring block h-full rounded-ps-card';
7
+ export const PsToolCardGrid = ({ cards, LinkComponent }) => {
8
+ const renderCard = (card, content) => LinkComponent ? (_jsx(LinkComponent, { "aria-label": card.ariaLabel, className: cardLinkClassName, prefetch: 'intent', to: card.href, children: content })) : (_jsx("a", { "aria-label": card.ariaLabel, className: cardLinkClassName, href: card.href, children: content }));
9
+ return (_jsx(PsStaggerContainer, { className: 'grid w-full grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3', staggerDelay: PsWebsiteSectionConfig.staggerDelay, children: cards.map((card) => (_jsx(PsStaggerItem, { children: renderCard(card, _jsxs(PsCard, { className: 'group flex h-full flex-col gap-5 transition-colors hover:border-primary/50', density: 'spacious', variant: 'elevated', children: [_jsxs("div", { className: 'flex items-center justify-between gap-3', children: [_jsx("span", { className: 'ps-icon-surface h-12 w-12', children: _jsx(PsIcon, { className: 'h-6 w-6', iconKey: card.iconKey }) }), _jsx(PsIcon, { className: 'h-5 w-5 text-ink/30 transition-colors group-hover:text-primary', iconKey: PsIconKey.ChevronRight })] }), _jsxs("div", { className: 'flex flex-col gap-2', children: [_jsx("h2", { className: 'text-header-3 text-ink', children: card.title }), _jsx("p", { className: 'text-body-2 text-ink/60', children: card.description })] })] })) }, card.href))) }));
10
+ };
@@ -0,0 +1,6 @@
1
+ import { AmountDirection } from '@pallasoft/ps-utilities';
2
+ export const PsAmountDirectionClasses = {
3
+ [AmountDirection.In]: 'font-medium text-success',
4
+ [AmountDirection.Neutral]: 'text-ink',
5
+ [AmountDirection.Out]: 'font-medium text-danger',
6
+ };
@@ -0,0 +1,5 @@
1
+ export var PsFaqBlockKind;
2
+ (function (PsFaqBlockKind) {
3
+ PsFaqBlockKind["List"] = "list";
4
+ PsFaqBlockKind["Paragraph"] = "paragraph";
5
+ })(PsFaqBlockKind || (PsFaqBlockKind = {}));
@@ -0,0 +1,5 @@
1
+ export const PsIconActionConfig = {
2
+ className: 'ps-focus-ring relative inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-2xl text-ink/65 transition-colors hover:bg-ink/5 hover:text-ink',
3
+ disabledClassName: 'disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent',
4
+ iconClassName: 'block h-5 w-5 shrink-0',
5
+ };
@@ -0,0 +1,11 @@
1
+ export const PsMetricGridColumns = {
2
+ 1: 'grid-cols-1',
3
+ 2: 'sm:grid-cols-2',
4
+ 3: 'sm:grid-cols-2 lg:grid-cols-3',
5
+ 4: 'sm:grid-cols-2 lg:grid-cols-4',
6
+ 5: 'sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5',
7
+ };
8
+ export const PsMetricGridConfig = {
9
+ defaultColumns: 4,
10
+ maxColumns: 5,
11
+ };
@@ -0,0 +1,8 @@
1
+ export const PsPageSkeletonConfig = {
2
+ formColumnsClassName: 'sm:grid-cols-2',
3
+ formFields: [1, 2, 3, 4],
4
+ formLabelClassName: 'h-3 w-24',
5
+ formSections: [1, 2],
6
+ tableColumns: 5,
7
+ tableRows: 8,
8
+ };
@@ -71,10 +71,10 @@ export const PsVoiceOrbCadenceByState = {
71
71
  };
72
72
  export const PsVoiceOrbThemes = {
73
73
  default: {
74
- glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-accent-rgb) / 0.5) 58%, rgb(var(--ps-color-primary-rgb) / 0.75) 100%)',
75
- rim: 'conic-gradient(rgb(var(--ps-color-primary-rgb)), rgb(var(--ps-color-accent-rgb)), rgb(255 255 255), rgb(var(--ps-color-secondary-rgb)), rgb(var(--ps-color-primary-rgb)))',
74
+ glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-secondary-rgb) / 0.55) 58%, rgb(var(--ps-color-primary-rgb) / 0.75) 100%)',
75
+ rim: 'conic-gradient(rgb(var(--ps-color-primary-rgb)), rgb(var(--ps-color-secondary-rgb)), rgb(255 255 255), rgb(var(--ps-color-secondary-rgb)), rgb(var(--ps-color-primary-rgb)))',
76
76
  ripple: 'rgb(var(--ps-color-primary-rgb) / 0.6)',
77
- core: 'radial-gradient(circle, rgb(255 255 255), rgb(var(--ps-color-accent-rgb) / 0.75) 35%, transparent 70%)',
77
+ core: 'radial-gradient(circle, rgb(255 255 255), rgb(var(--ps-color-secondary-rgb) / 0.75) 35%, transparent 70%)',
78
78
  },
79
79
  error: {
80
80
  glass: 'radial-gradient(circle at 32% 28%, rgb(255 255 255 / 0.95), transparent 46%), radial-gradient(circle, rgb(255 255 255 / 0.92), rgb(var(--ps-color-danger-rgb) / 0.45) 58%, rgb(var(--ps-color-danger-rgb) / 0.7) 100%)',
@@ -0,0 +1,4 @@
1
+ export const PsWebsiteSectionConfig = {
2
+ staggerDelay: 0.08,
3
+ tileStaggerDelay: 0.06,
4
+ };
@@ -0,0 +1,17 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { PallasoftThemeBrowserService, PallasoftThemeMode, PallasoftThemeModeService, } from '@pallasoft/ps-design-system';
3
+ export const usePsThemeMode = () => {
4
+ const [mode, setMode] = useState(null);
5
+ const [resolvedMode, setResolvedMode] = useState(null);
6
+ useEffect(() => {
7
+ setMode(PallasoftThemeBrowserService.getStoredMode());
8
+ setResolvedMode(PallasoftThemeBrowserService.applyStoredMode());
9
+ return PallasoftThemeBrowserService.listenToSystemChanges(setResolvedMode);
10
+ }, []);
11
+ const select = (next) => {
12
+ setMode(next);
13
+ setResolvedMode(PallasoftThemeBrowserService.storeAndApplyMode(next));
14
+ };
15
+ const toggle = () => select(PallasoftThemeModeService.getNextMode(resolvedMode === null ? PallasoftThemeMode.Light : resolvedMode));
16
+ return { mode, resolvedMode, select, toggle };
17
+ };
package/dist/esm/index.js CHANGED
@@ -55,3 +55,45 @@ export * from './models/ps-draggable-grid';
55
55
  export * from './constants/ps-draggable-grid';
56
56
  export * from './constants/ps-navigation-progress-config';
57
57
  export * from './constants/ps-step-progress-config';
58
+ export * from './components/ps-active-filter-chip';
59
+ export * from './components/ps-back-link';
60
+ export * from './components/ps-card-block-skeleton';
61
+ export * from './components/ps-data-boundary';
62
+ export * from './components/ps-faq-answer';
63
+ export * from './components/ps-feature-grid';
64
+ export * from './components/ps-form-fields-skeleton';
65
+ export * from './components/ps-form-page-skeleton';
66
+ export * from './components/ps-icon-button';
67
+ export * from './components/ps-icon-link';
68
+ export * from './components/ps-intro-skeleton';
69
+ export * from './components/ps-link-tile-grid';
70
+ export * from './components/ps-metric-grid';
71
+ export * from './components/ps-metric-grid-skeleton';
72
+ export * from './components/ps-metric-row';
73
+ export * from './components/ps-page-header';
74
+ export * from './components/ps-page-intro';
75
+ export * from './components/ps-page-layout';
76
+ export * from './components/ps-page-skeleton';
77
+ export * from './components/ps-page-stack';
78
+ export * from './components/ps-section-panel';
79
+ export * from './components/ps-section-panel-skeleton';
80
+ export * from './components/ps-signed-amount';
81
+ export * from './components/ps-tab-row-skeleton';
82
+ export * from './components/ps-table-list-skeleton';
83
+ export * from './components/ps-table-page-skeleton';
84
+ export * from './components/ps-theme-controller';
85
+ export * from './components/ps-theme-system-listener';
86
+ export * from './components/ps-tool-card-grid';
87
+ export * from './constants/ps-amount-direction-classes';
88
+ export * from './constants/ps-faq-block-kind';
89
+ export * from './constants/ps-icon-action-config';
90
+ export * from './constants/ps-metric-grid-config';
91
+ export * from './constants/ps-page-skeleton-config';
92
+ export * from './constants/ps-website-section-config';
93
+ export * from './hooks/use-ps-theme-mode';
94
+ export * from './models/ps-faq-block-data';
95
+ export * from './models/ps-feature-card-data';
96
+ export * from './models/ps-link-tile-data';
97
+ export * from './models/ps-metric-item-data';
98
+ export * from './models/ps-theme-mode-state';
99
+ export * from './models/ps-tool-card-data';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { PsThemeModeState } from '../models/ps-theme-mode-state';
2
+ export declare const usePsThemeMode: () => PsThemeModeState;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePsThemeMode = void 0;
4
+ const react_1 = require("react");
5
+ const ps_design_system_1 = require("@pallasoft/ps-design-system");
6
+ const usePsThemeMode = () => {
7
+ const [mode, setMode] = (0, react_1.useState)(null);
8
+ const [resolvedMode, setResolvedMode] = (0, react_1.useState)(null);
9
+ (0, react_1.useEffect)(() => {
10
+ setMode(ps_design_system_1.PallasoftThemeBrowserService.getStoredMode());
11
+ setResolvedMode(ps_design_system_1.PallasoftThemeBrowserService.applyStoredMode());
12
+ return ps_design_system_1.PallasoftThemeBrowserService.listenToSystemChanges(setResolvedMode);
13
+ }, []);
14
+ const select = (next) => {
15
+ setMode(next);
16
+ setResolvedMode(ps_design_system_1.PallasoftThemeBrowserService.storeAndApplyMode(next));
17
+ };
18
+ const toggle = () => select(ps_design_system_1.PallasoftThemeModeService.getNextMode(resolvedMode === null ? ps_design_system_1.PallasoftThemeMode.Light : resolvedMode));
19
+ return { mode, resolvedMode, select, toggle };
20
+ };
21
+ exports.usePsThemeMode = usePsThemeMode;
package/dist/index.d.ts CHANGED
@@ -55,3 +55,45 @@ export * from './models/ps-draggable-grid';
55
55
  export * from './constants/ps-draggable-grid';
56
56
  export * from './constants/ps-navigation-progress-config';
57
57
  export * from './constants/ps-step-progress-config';
58
+ export * from './components/ps-active-filter-chip';
59
+ export * from './components/ps-back-link';
60
+ export * from './components/ps-card-block-skeleton';
61
+ export * from './components/ps-data-boundary';
62
+ export * from './components/ps-faq-answer';
63
+ export * from './components/ps-feature-grid';
64
+ export * from './components/ps-form-fields-skeleton';
65
+ export * from './components/ps-form-page-skeleton';
66
+ export * from './components/ps-icon-button';
67
+ export * from './components/ps-icon-link';
68
+ export * from './components/ps-intro-skeleton';
69
+ export * from './components/ps-link-tile-grid';
70
+ export * from './components/ps-metric-grid';
71
+ export * from './components/ps-metric-grid-skeleton';
72
+ export * from './components/ps-metric-row';
73
+ export * from './components/ps-page-header';
74
+ export * from './components/ps-page-intro';
75
+ export * from './components/ps-page-layout';
76
+ export * from './components/ps-page-skeleton';
77
+ export * from './components/ps-page-stack';
78
+ export * from './components/ps-section-panel';
79
+ export * from './components/ps-section-panel-skeleton';
80
+ export * from './components/ps-signed-amount';
81
+ export * from './components/ps-tab-row-skeleton';
82
+ export * from './components/ps-table-list-skeleton';
83
+ export * from './components/ps-table-page-skeleton';
84
+ export * from './components/ps-theme-controller';
85
+ export * from './components/ps-theme-system-listener';
86
+ export * from './components/ps-tool-card-grid';
87
+ export * from './constants/ps-amount-direction-classes';
88
+ export * from './constants/ps-faq-block-kind';
89
+ export * from './constants/ps-icon-action-config';
90
+ export * from './constants/ps-metric-grid-config';
91
+ export * from './constants/ps-page-skeleton-config';
92
+ export * from './constants/ps-website-section-config';
93
+ export * from './hooks/use-ps-theme-mode';
94
+ export * from './models/ps-faq-block-data';
95
+ export * from './models/ps-feature-card-data';
96
+ export * from './models/ps-link-tile-data';
97
+ export * from './models/ps-metric-item-data';
98
+ export * from './models/ps-theme-mode-state';
99
+ export * from './models/ps-tool-card-data';