@pallasoft/ps-core-components 2.15.3 → 2.16.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 (130) 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-faq-answer.d.ts +5 -0
  10. package/dist/components/ps-faq-answer.js +7 -0
  11. package/dist/components/ps-feature-grid.d.ts +7 -0
  12. package/dist/components/ps-feature-grid.js +10 -0
  13. package/dist/components/ps-form-fields-skeleton.d.ts +5 -0
  14. package/dist/components/ps-form-fields-skeleton.js +10 -0
  15. package/dist/components/ps-form-page-skeleton.d.ts +5 -0
  16. package/dist/components/ps-form-page-skeleton.js +10 -0
  17. package/dist/components/ps-icon-button.d.ts +7 -0
  18. package/dist/components/ps-icon-button.js +9 -0
  19. package/dist/components/ps-icon-link.d.ts +10 -0
  20. package/dist/components/ps-icon-link.js +13 -0
  21. package/dist/components/ps-intro-skeleton.d.ts +1 -0
  22. package/dist/components/ps-intro-skeleton.js +7 -0
  23. package/dist/components/ps-link-tile-grid.d.ts +7 -0
  24. package/dist/components/ps-link-tile-grid.js +13 -0
  25. package/dist/components/ps-metric-grid-skeleton.d.ts +4 -0
  26. package/dist/components/ps-metric-grid-skeleton.js +7 -0
  27. package/dist/components/ps-metric-grid.d.ts +5 -0
  28. package/dist/components/ps-metric-grid.js +12 -0
  29. package/dist/components/ps-metric-row.d.ts +5 -0
  30. package/dist/components/ps-metric-row.js +9 -0
  31. package/dist/components/ps-page-header.d.ts +8 -0
  32. package/dist/components/ps-page-header.js +8 -0
  33. package/dist/components/ps-page-intro.d.ts +6 -0
  34. package/dist/components/ps-page-intro.js +7 -0
  35. package/dist/components/ps-page-layout.d.ts +7 -0
  36. package/dist/components/ps-page-layout.js +7 -0
  37. package/dist/components/ps-page-skeleton.d.ts +9 -0
  38. package/dist/components/ps-page-skeleton.js +12 -0
  39. package/dist/components/ps-page-stack.d.ts +6 -0
  40. package/dist/components/ps-page-stack.js +7 -0
  41. package/dist/components/ps-section-panel-skeleton.d.ts +6 -0
  42. package/dist/components/ps-section-panel-skeleton.js +7 -0
  43. package/dist/components/ps-section-panel.d.ts +8 -0
  44. package/dist/components/ps-section-panel.js +7 -0
  45. package/dist/components/ps-signed-amount.d.ts +6 -0
  46. package/dist/components/ps-signed-amount.js +12 -0
  47. package/dist/components/ps-tab-row-skeleton.d.ts +1 -0
  48. package/dist/components/ps-tab-row-skeleton.js +8 -0
  49. package/dist/components/ps-table-list-skeleton.d.ts +1 -0
  50. package/dist/components/ps-table-list-skeleton.js +8 -0
  51. package/dist/components/ps-table-page-skeleton.d.ts +6 -0
  52. package/dist/components/ps-table-page-skeleton.js +8 -0
  53. package/dist/components/ps-theme-controller.d.ts +1 -0
  54. package/dist/components/ps-theme-controller.js +13 -0
  55. package/dist/components/ps-theme-system-listener.d.ts +1 -0
  56. package/dist/components/ps-theme-system-listener.js +13 -0
  57. package/dist/components/ps-tool-card-grid.d.ts +7 -0
  58. package/dist/components/ps-tool-card-grid.js +14 -0
  59. package/dist/constants/ps-amount-direction-classes.d.ts +2 -0
  60. package/dist/constants/ps-amount-direction-classes.js +9 -0
  61. package/dist/constants/ps-faq-block-kind.d.ts +4 -0
  62. package/dist/constants/ps-faq-block-kind.js +8 -0
  63. package/dist/constants/ps-icon-action-config.d.ts +5 -0
  64. package/dist/constants/ps-icon-action-config.js +8 -0
  65. package/dist/constants/ps-metric-grid-config.d.ts +5 -0
  66. package/dist/constants/ps-metric-grid-config.js +14 -0
  67. package/dist/constants/ps-page-skeleton-config.d.ts +8 -0
  68. package/dist/constants/ps-page-skeleton-config.js +11 -0
  69. package/dist/constants/ps-website-section-config.d.ts +4 -0
  70. package/dist/constants/ps-website-section-config.js +7 -0
  71. package/dist/esm/components/ps-active-filter-chip.js +4 -0
  72. package/dist/esm/components/ps-back-link.js +7 -0
  73. package/dist/esm/components/ps-card-block-skeleton.js +4 -0
  74. package/dist/esm/components/ps-data-boundary.js +3 -0
  75. package/dist/esm/components/ps-faq-answer.js +3 -0
  76. package/dist/esm/components/ps-feature-grid.js +6 -0
  77. package/dist/esm/components/ps-form-fields-skeleton.js +6 -0
  78. package/dist/esm/components/ps-form-page-skeleton.js +6 -0
  79. package/dist/esm/components/ps-icon-button.js +5 -0
  80. package/dist/esm/components/ps-icon-link.js +9 -0
  81. package/dist/esm/components/ps-intro-skeleton.js +3 -0
  82. package/dist/esm/components/ps-link-tile-grid.js +9 -0
  83. package/dist/esm/components/ps-metric-grid-skeleton.js +3 -0
  84. package/dist/esm/components/ps-metric-grid.js +8 -0
  85. package/dist/esm/components/ps-metric-row.js +5 -0
  86. package/dist/esm/components/ps-page-header.js +4 -0
  87. package/dist/esm/components/ps-page-intro.js +3 -0
  88. package/dist/esm/components/ps-page-layout.js +3 -0
  89. package/dist/esm/components/ps-page-skeleton.js +8 -0
  90. package/dist/esm/components/ps-page-stack.js +3 -0
  91. package/dist/esm/components/ps-section-panel-skeleton.js +3 -0
  92. package/dist/esm/components/ps-section-panel.js +3 -0
  93. package/dist/esm/components/ps-signed-amount.js +8 -0
  94. package/dist/esm/components/ps-tab-row-skeleton.js +4 -0
  95. package/dist/esm/components/ps-table-list-skeleton.js +4 -0
  96. package/dist/esm/components/ps-table-page-skeleton.js +4 -0
  97. package/dist/esm/components/ps-theme-controller.js +9 -0
  98. package/dist/esm/components/ps-theme-system-listener.js +9 -0
  99. package/dist/esm/components/ps-tool-card-grid.js +10 -0
  100. package/dist/esm/constants/ps-amount-direction-classes.js +6 -0
  101. package/dist/esm/constants/ps-faq-block-kind.js +5 -0
  102. package/dist/esm/constants/ps-icon-action-config.js +5 -0
  103. package/dist/esm/constants/ps-metric-grid-config.js +11 -0
  104. package/dist/esm/constants/ps-page-skeleton-config.js +8 -0
  105. package/dist/esm/constants/ps-website-section-config.js +4 -0
  106. package/dist/esm/hooks/use-ps-theme-mode.js +17 -0
  107. package/dist/esm/index.js +42 -0
  108. package/dist/esm/models/ps-faq-block-data.js +1 -0
  109. package/dist/esm/models/ps-feature-card-data.js +1 -0
  110. package/dist/esm/models/ps-link-tile-data.js +1 -0
  111. package/dist/esm/models/ps-metric-item-data.js +1 -0
  112. package/dist/esm/models/ps-theme-mode-state.js +1 -0
  113. package/dist/esm/models/ps-tool-card-data.js +1 -0
  114. package/dist/hooks/use-ps-theme-mode.d.ts +2 -0
  115. package/dist/hooks/use-ps-theme-mode.js +21 -0
  116. package/dist/index.d.ts +42 -0
  117. package/dist/index.js +42 -0
  118. package/dist/models/ps-faq-block-data.d.ts +5 -0
  119. package/dist/models/ps-faq-block-data.js +2 -0
  120. package/dist/models/ps-feature-card-data.d.ts +6 -0
  121. package/dist/models/ps-feature-card-data.js +2 -0
  122. package/dist/models/ps-link-tile-data.d.ts +6 -0
  123. package/dist/models/ps-link-tile-data.js +2 -0
  124. package/dist/models/ps-metric-item-data.d.ts +5 -0
  125. package/dist/models/ps-metric-item-data.js +2 -0
  126. package/dist/models/ps-theme-mode-state.d.ts +7 -0
  127. package/dist/models/ps-theme-mode-state.js +2 -0
  128. package/dist/models/ps-tool-card-data.d.ts +8 -0
  129. package/dist/models/ps-tool-card-data.js +2 -0
  130. package/package.json +4 -4
@@ -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
+ };
@@ -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 }) }));
@@ -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
+ };
@@ -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';
package/dist/index.js CHANGED
@@ -71,3 +71,45 @@ __exportStar(require("./models/ps-draggable-grid"), exports);
71
71
  __exportStar(require("./constants/ps-draggable-grid"), exports);
72
72
  __exportStar(require("./constants/ps-navigation-progress-config"), exports);
73
73
  __exportStar(require("./constants/ps-step-progress-config"), exports);
74
+ __exportStar(require("./components/ps-active-filter-chip"), exports);
75
+ __exportStar(require("./components/ps-back-link"), exports);
76
+ __exportStar(require("./components/ps-card-block-skeleton"), exports);
77
+ __exportStar(require("./components/ps-data-boundary"), exports);
78
+ __exportStar(require("./components/ps-faq-answer"), exports);
79
+ __exportStar(require("./components/ps-feature-grid"), exports);
80
+ __exportStar(require("./components/ps-form-fields-skeleton"), exports);
81
+ __exportStar(require("./components/ps-form-page-skeleton"), exports);
82
+ __exportStar(require("./components/ps-icon-button"), exports);
83
+ __exportStar(require("./components/ps-icon-link"), exports);
84
+ __exportStar(require("./components/ps-intro-skeleton"), exports);
85
+ __exportStar(require("./components/ps-link-tile-grid"), exports);
86
+ __exportStar(require("./components/ps-metric-grid"), exports);
87
+ __exportStar(require("./components/ps-metric-grid-skeleton"), exports);
88
+ __exportStar(require("./components/ps-metric-row"), exports);
89
+ __exportStar(require("./components/ps-page-header"), exports);
90
+ __exportStar(require("./components/ps-page-intro"), exports);
91
+ __exportStar(require("./components/ps-page-layout"), exports);
92
+ __exportStar(require("./components/ps-page-skeleton"), exports);
93
+ __exportStar(require("./components/ps-page-stack"), exports);
94
+ __exportStar(require("./components/ps-section-panel"), exports);
95
+ __exportStar(require("./components/ps-section-panel-skeleton"), exports);
96
+ __exportStar(require("./components/ps-signed-amount"), exports);
97
+ __exportStar(require("./components/ps-tab-row-skeleton"), exports);
98
+ __exportStar(require("./components/ps-table-list-skeleton"), exports);
99
+ __exportStar(require("./components/ps-table-page-skeleton"), exports);
100
+ __exportStar(require("./components/ps-theme-controller"), exports);
101
+ __exportStar(require("./components/ps-theme-system-listener"), exports);
102
+ __exportStar(require("./components/ps-tool-card-grid"), exports);
103
+ __exportStar(require("./constants/ps-amount-direction-classes"), exports);
104
+ __exportStar(require("./constants/ps-faq-block-kind"), exports);
105
+ __exportStar(require("./constants/ps-icon-action-config"), exports);
106
+ __exportStar(require("./constants/ps-metric-grid-config"), exports);
107
+ __exportStar(require("./constants/ps-page-skeleton-config"), exports);
108
+ __exportStar(require("./constants/ps-website-section-config"), exports);
109
+ __exportStar(require("./hooks/use-ps-theme-mode"), exports);
110
+ __exportStar(require("./models/ps-faq-block-data"), exports);
111
+ __exportStar(require("./models/ps-feature-card-data"), exports);
112
+ __exportStar(require("./models/ps-link-tile-data"), exports);
113
+ __exportStar(require("./models/ps-metric-item-data"), exports);
114
+ __exportStar(require("./models/ps-theme-mode-state"), exports);
115
+ __exportStar(require("./models/ps-tool-card-data"), exports);
@@ -0,0 +1,5 @@
1
+ import type { PsFaqBlockKind } from '../constants/ps-faq-block-kind';
2
+ export interface PsFaqBlockData {
3
+ items: string[];
4
+ kind: PsFaqBlockKind;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { PsIconKey } from '@pallasoft/ps-icons';
2
+ export interface PsFeatureCardData {
3
+ description: string;
4
+ iconKey: PsIconKey;
5
+ title: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface PsLinkTileData {
2
+ ariaLabel: string;
3
+ description: string;
4
+ href: string;
5
+ title: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });