@pallasoft/ps-core-components 2.25.0 → 2.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ps-app-store-buttons.d.ts +10 -0
- package/dist/components/ps-app-store-buttons.js +15 -0
- package/dist/components/ps-divider.d.ts +7 -0
- package/dist/components/ps-divider.js +12 -0
- package/dist/components/ps-site-header.js +1 -1
- package/dist/components/ps-store-badge.d.ts +11 -0
- package/dist/components/ps-store-badge.js +18 -0
- package/dist/constants/ps-drag-config.d.ts +1 -1
- package/dist/constants/ps-drag-config.js +1 -1
- package/dist/constants/ps-draggable-grid.d.ts +1 -1
- package/dist/constants/ps-store-badge-config.d.ts +46 -0
- package/dist/constants/ps-store-badge-config.js +48 -0
- package/dist/constants/ps-store-platform.d.ts +5 -0
- package/dist/constants/ps-store-platform.js +7 -0
- package/dist/esm/components/ps-app-store-buttons.js +11 -0
- package/dist/esm/components/ps-divider.js +8 -0
- package/dist/esm/components/ps-site-header.js +1 -1
- package/dist/esm/components/ps-store-badge.js +14 -0
- package/dist/esm/constants/ps-drag-config.js +1 -1
- package/dist/esm/constants/ps-store-badge-config.js +45 -0
- package/dist/esm/constants/ps-store-platform.js +4 -0
- package/dist/esm/hooks/use-ps-media-query.js +12 -0
- package/dist/esm/hooks/use-ps-optimistic-rows.js +6 -5
- package/dist/esm/index.js +10 -0
- package/dist/esm/models/ps-divider-orientation.js +1 -0
- package/dist/esm/models/ps-store-badge-labels.js +1 -0
- package/dist/esm/models/ps-store-badge-logo-path.js +1 -0
- package/dist/esm/models/ps-store-badge-platform-data.js +1 -0
- package/dist/hooks/use-ps-media-query.d.ts +1 -0
- package/dist/hooks/use-ps-media-query.js +16 -0
- package/dist/hooks/use-ps-optimistic-rows.js +6 -5
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/models/ps-divider-orientation.d.ts +1 -0
- package/dist/models/ps-divider-orientation.js +2 -0
- package/dist/models/ps-store-badge-labels.d.ts +4 -0
- package/dist/models/ps-store-badge-labels.js +2 -0
- package/dist/models/ps-store-badge-logo-path.d.ts +3 -0
- package/dist/models/ps-store-badge-logo-path.js +2 -0
- package/dist/models/ps-store-badge-platform-data.d.ts +6 -0
- package/dist/models/ps-store-badge-platform-data.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PsStoreBadgeLabels } from '../models/ps-store-badge-labels';
|
|
2
|
+
export interface PsAppStoreButtonsProps {
|
|
3
|
+
appStoreLabels?: PsStoreBadgeLabels;
|
|
4
|
+
appStoreUrl?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
playStoreLabels?: PsStoreBadgeLabels;
|
|
7
|
+
playStoreUrl?: string;
|
|
8
|
+
size?: 'default' | 'large';
|
|
9
|
+
}
|
|
10
|
+
export declare const PsAppStoreButtons: ({ appStoreLabels, appStoreUrl, className, playStoreLabels, playStoreUrl, size, }: PsAppStoreButtonsProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsAppStoreButtons = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ps_design_system_1 = require("@pallasoft/ps-design-system");
|
|
6
|
+
const ps_store_badge_config_1 = require("../constants/ps-store-badge-config");
|
|
7
|
+
const ps_store_platform_1 = require("../constants/ps-store-platform");
|
|
8
|
+
const ps_store_badge_1 = require("./ps-store-badge");
|
|
9
|
+
const isLinked = (url) => url !== undefined && url.trim() !== '';
|
|
10
|
+
const PsAppStoreButtons = ({ appStoreLabels, appStoreUrl, className, playStoreLabels, playStoreUrl, size = 'default', }) => {
|
|
11
|
+
const appStoreHref = isLinked(appStoreUrl) ? appStoreUrl : undefined;
|
|
12
|
+
const playStoreHref = isLinked(playStoreUrl) ? playStoreUrl : undefined;
|
|
13
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: ps_design_system_1.PallasoftClassNameService.merge(ps_store_badge_config_1.PsStoreBadgeClasses.group, ps_store_badge_config_1.PsStoreBadgeClasses.sizes[size].gap, className), children: [(0, jsx_runtime_1.jsx)(ps_store_badge_1.PsStoreBadge, { href: appStoreHref, labels: appStoreLabels, platform: ps_store_platform_1.PsStorePlatform.appStore, size: size }), (0, jsx_runtime_1.jsx)(ps_store_badge_1.PsStoreBadge, { href: playStoreHref, labels: playStoreLabels, platform: ps_store_platform_1.PsStorePlatform.googlePlay, size: size })] }));
|
|
14
|
+
};
|
|
15
|
+
exports.PsAppStoreButtons = PsAppStoreButtons;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PsDividerOrientation } from '../models/ps-divider-orientation';
|
|
2
|
+
export interface PsDividerProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
orientation?: PsDividerOrientation;
|
|
6
|
+
}
|
|
7
|
+
export declare const PsDivider: ({ className, label, orientation, }: PsDividerProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsDivider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const PsDivider = ({ className = '', label, orientation = 'horizontal', }) => {
|
|
6
|
+
if (orientation === 'vertical')
|
|
7
|
+
return ((0, jsx_runtime_1.jsx)("div", { "aria-orientation": 'vertical', className: `w-px shrink-0 self-stretch bg-line ${className}`, role: 'separator' }));
|
|
8
|
+
if (!label)
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)("div", { "aria-orientation": 'horizontal', className: `h-px w-full shrink-0 bg-line ${className}`, role: 'separator' }));
|
|
10
|
+
return ((0, jsx_runtime_1.jsxs)("div", { "aria-label": label, "aria-orientation": 'horizontal', className: `flex w-full items-center gap-3 ${className}`, role: 'separator', children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: 'h-px flex-1 bg-line' }), (0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: 'text-xs text-ink/55', children: label }), (0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: 'h-px flex-1 bg-line' })] }));
|
|
11
|
+
};
|
|
12
|
+
exports.PsDivider = PsDivider;
|
|
@@ -13,6 +13,6 @@ const PsSiteHeader = ({ centerContent, className, homeHref, label, LinkComponent
|
|
|
13
13
|
const renderLogo = (src, darkSrc, baseClassName) => darkSrc ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: ps_design_system_1.PallasoftClassNameService.merge(baseClassName, 'dark:hidden', logoClassName), decoding: 'async', src: src }), (0, jsx_runtime_1.jsx)("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: ps_design_system_1.PallasoftClassNameService.merge(baseClassName, 'hidden dark:block', logoClassName), decoding: 'async', src: darkSrc })] })) : ((0, jsx_runtime_1.jsx)("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: ps_design_system_1.PallasoftClassNameService.merge(baseClassName, logoClassName), decoding: 'async', src: src }));
|
|
14
14
|
const logoContent = logoSrcMobile ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: 'hidden sm:contents', children: renderLogo(logoSrc, logoSrcDark, 'h-8 w-auto') }), (0, jsx_runtime_1.jsx)("span", { className: 'contents sm:hidden', children: renderLogo(logoSrcMobile, logoSrcMobileDark, 'h-8 w-auto') }), showLabel ? (0, jsx_runtime_1.jsx)("span", { className: 'text-base font-bold text-ink', children: label }) : null] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [renderLogo(logoSrc, logoSrcDark, 'h-8 w-auto'), showLabel ? (0, jsx_runtime_1.jsx)("span", { className: 'text-base font-bold text-ink', children: label }) : null] }));
|
|
15
15
|
const logoLink = LinkComponent ? ((0, jsx_runtime_1.jsx)(LinkComponent, { "aria-label": logoLabel, className: logoLinkClassName, prefetch: 'intent', to: homeHref, children: logoContent })) : ((0, jsx_runtime_1.jsx)("a", { "aria-label": logoLabel, className: logoLinkClassName, href: homeHref, children: logoContent }));
|
|
16
|
-
return ((0, jsx_runtime_1.jsx)("header", { ref: headerRef, className: ps_design_system_1.PallasoftClassNameService.merge('fixed inset-x-0 top-0 z-header px-
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("header", { ref: headerRef, className: ps_design_system_1.PallasoftClassNameService.merge('fixed inset-x-0 top-0 z-header px-4 pt-[max(1rem,env(safe-area-inset-top))] sm:px-6', className), children: (0, jsx_runtime_1.jsxs)("nav", { className: ps_design_system_1.PallasoftClassNameService.merge('ps-glass mx-auto flex max-w-6xl items-center gap-3 rounded-ps-card px-5 py-3', navClassName), children: [onBack ? ((0, jsx_runtime_1.jsx)("button", { "aria-label": 'Back', className: 'ps-focus-ring ps-control-square ps-control-compact flex shrink-0 items-center justify-center rounded-ps-control text-ink md:hidden', onClick: onBack, type: 'button', children: (0, jsx_runtime_1.jsx)(ps_icons_1.PsIcon, { iconKey: ps_icons_1.PsIconKey.ChevronRight, width: 20, height: 20, className: 'rotate-180' }) })) : null, (0, jsx_runtime_1.jsx)("div", { className: onBack ? 'hidden md:flex' : 'contents', children: logoLink }), (0, jsx_runtime_1.jsx)("div", { className: 'flex min-w-0 flex-1 items-center justify-center gap-3', children: centerContent }), trailing ? (0, jsx_runtime_1.jsx)("div", { className: 'flex shrink-0 items-center gap-2.5', children: trailing }) : null] }) }));
|
|
17
17
|
};
|
|
18
18
|
exports.PsSiteHeader = PsSiteHeader;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PsStorePlatform } from '../constants/ps-store-platform';
|
|
2
|
+
import type { PsStoreBadgeLabels } from '../models/ps-store-badge-labels';
|
|
3
|
+
export interface PsStoreBadgeProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
onPress?: () => void;
|
|
7
|
+
labels?: PsStoreBadgeLabels;
|
|
8
|
+
platform: PsStorePlatform;
|
|
9
|
+
size?: 'default' | 'large';
|
|
10
|
+
}
|
|
11
|
+
export declare const PsStoreBadge: ({ className, href, labels, onPress, platform, size, }: PsStoreBadgeProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsStoreBadge = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ps_design_system_1 = require("@pallasoft/ps-design-system");
|
|
6
|
+
const ps_store_badge_config_1 = require("../constants/ps-store-badge-config");
|
|
7
|
+
const PsStoreBadge = ({ className, href, labels, onPress, platform, size = 'default', }) => {
|
|
8
|
+
const platformData = ps_store_badge_config_1.PsStoreBadgeConfig.platforms[platform];
|
|
9
|
+
const shownLabels = labels === undefined ? platformData.labels : labels;
|
|
10
|
+
const sizeClasses = ps_store_badge_config_1.PsStoreBadgeClasses.sizes[size];
|
|
11
|
+
const badgeClassName = ps_design_system_1.PallasoftClassNameService.merge(ps_store_badge_config_1.PsStoreBadgeClasses.base, sizeClasses.badge, className);
|
|
12
|
+
const ariaLabel = `${shownLabels.caption} ${shownLabels.name}`;
|
|
13
|
+
const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: ps_design_system_1.PallasoftClassNameService.merge(ps_store_badge_config_1.PsStoreBadgeClasses.tile, sizeClasses.tile), children: (0, jsx_runtime_1.jsx)("svg", { className: sizeClasses.logo, fill: 'currentColor', viewBox: ps_store_badge_config_1.PsStoreBadgeConfig.logoViewBox, xmlns: 'http://www.w3.org/2000/svg', children: platformData.logoPaths.map((path) => ((0, jsx_runtime_1.jsx)("path", { d: path.d }, path.d))) }) }), (0, jsx_runtime_1.jsxs)("span", { "aria-hidden": 'true', className: 'flex min-w-0 flex-col items-start', children: [(0, jsx_runtime_1.jsx)("span", { className: ps_design_system_1.PallasoftClassNameService.merge('truncate max-w-full', sizeClasses.caption), children: shownLabels.caption }), (0, jsx_runtime_1.jsx)("span", { className: ps_design_system_1.PallasoftClassNameService.merge('truncate max-w-full', sizeClasses.name), children: shownLabels.name })] })] }));
|
|
14
|
+
if (href === undefined)
|
|
15
|
+
return ((0, jsx_runtime_1.jsx)("button", { "aria-label": ariaLabel, className: badgeClassName, "data-platform": platform, onClick: onPress, type: 'button', children: content }));
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("a", { "aria-label": ariaLabel, className: badgeClassName, "data-platform": platform, href: href, rel: 'noopener noreferrer', target: '_blank', children: content }));
|
|
17
|
+
};
|
|
18
|
+
exports.PsStoreBadge = PsStoreBadge;
|
|
@@ -9,7 +9,7 @@ export declare const PsDragConfig: {
|
|
|
9
9
|
readonly touchTolerance: 6;
|
|
10
10
|
};
|
|
11
11
|
export declare const PsDragClasses: {
|
|
12
|
-
readonly handle: "ps-focus-ring inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100";
|
|
12
|
+
readonly handle: "ps-focus-ring ps-touch-target relative inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100";
|
|
13
13
|
readonly listItem: "min-w-0";
|
|
14
14
|
readonly lifted: "cursor-grabbing rounded-xl bg-surface ring-1 ring-primary/30";
|
|
15
15
|
readonly placeholder: "outline-dashed outline-2 outline-offset-[-2px] outline-primary/35";
|
|
@@ -12,7 +12,7 @@ exports.PsDragConfig = {
|
|
|
12
12
|
touchTolerance: 6,
|
|
13
13
|
};
|
|
14
14
|
exports.PsDragClasses = {
|
|
15
|
-
handle: 'ps-focus-ring inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100',
|
|
15
|
+
handle: 'ps-focus-ring ps-touch-target relative inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100',
|
|
16
16
|
listItem: 'min-w-0',
|
|
17
17
|
lifted: 'cursor-grabbing rounded-xl bg-surface ring-1 ring-primary/30',
|
|
18
18
|
placeholder: 'outline-dashed outline-2 outline-offset-[-2px] outline-primary/35',
|
|
@@ -9,7 +9,7 @@ export declare const PsDraggableGridConfig: {
|
|
|
9
9
|
readonly touchTolerance: 6;
|
|
10
10
|
};
|
|
11
11
|
export declare const PsDraggableGridClasses: {
|
|
12
|
-
readonly handle: "ps-focus-ring inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100";
|
|
12
|
+
readonly handle: "ps-focus-ring ps-touch-target relative inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100";
|
|
13
13
|
readonly item: "min-w-0 rounded-[1.7rem]";
|
|
14
14
|
readonly lifted: "cursor-grabbing rounded-[1.7rem] ring-1 ring-primary/30";
|
|
15
15
|
readonly placeholder: "rounded-[1.7rem] outline-dashed outline-2 outline-offset-[-2px] outline-primary/35";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const PsStoreBadgeConfig: {
|
|
2
|
+
readonly logoViewBox: "0 0 24 24";
|
|
3
|
+
readonly platforms: {
|
|
4
|
+
"app-store": {
|
|
5
|
+
labels: {
|
|
6
|
+
caption: string;
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
logoPaths: {
|
|
10
|
+
d: string;
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
"google-play": {
|
|
14
|
+
labels: {
|
|
15
|
+
caption: string;
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
logoPaths: {
|
|
19
|
+
d: string;
|
|
20
|
+
}[];
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export declare const PsStoreBadgeClasses: {
|
|
25
|
+
readonly base: "ps-focus-ring ps-liquid ps-liquid-control ps-pressable group/store inline-flex w-full min-w-0 items-center bg-white/72 font-sans text-left text-ink hover:border-primary/30 dark:border-white/16 dark:bg-white/12 motion-reduce:transition-none motion-reduce:hover:transform-none";
|
|
26
|
+
readonly group: "grid w-full grid-cols-1 sm:grid-cols-2";
|
|
27
|
+
readonly sizes: {
|
|
28
|
+
readonly default: {
|
|
29
|
+
readonly badge: "min-h-12 gap-3 px-2.5 py-1.5";
|
|
30
|
+
readonly caption: "text-xs leading-4";
|
|
31
|
+
readonly gap: "gap-3";
|
|
32
|
+
readonly logo: "size-5";
|
|
33
|
+
readonly name: "text-sm font-semibold leading-5";
|
|
34
|
+
readonly tile: "size-9";
|
|
35
|
+
};
|
|
36
|
+
readonly large: {
|
|
37
|
+
readonly badge: "min-h-14 gap-3.5 px-3 py-2";
|
|
38
|
+
readonly caption: "text-xs leading-4";
|
|
39
|
+
readonly gap: "gap-4";
|
|
40
|
+
readonly logo: "size-6";
|
|
41
|
+
readonly name: "text-base font-semibold leading-6";
|
|
42
|
+
readonly tile: "size-10";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
readonly tile: "ps-icon-surface transition-colors group-hover/store:bg-primary/15 motion-reduce:transition-none";
|
|
46
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsStoreBadgeClasses = exports.PsStoreBadgeConfig = void 0;
|
|
4
|
+
const ps_store_platform_1 = require("./ps-store-platform");
|
|
5
|
+
exports.PsStoreBadgeConfig = {
|
|
6
|
+
logoViewBox: '0 0 24 24',
|
|
7
|
+
platforms: {
|
|
8
|
+
[ps_store_platform_1.PsStorePlatform.appStore]: {
|
|
9
|
+
labels: { caption: 'Download on the', name: 'App Store' },
|
|
10
|
+
logoPaths: [
|
|
11
|
+
{
|
|
12
|
+
d: 'M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
[ps_store_platform_1.PsStorePlatform.googlePlay]: {
|
|
17
|
+
labels: { caption: 'Get it on', name: 'Google Play' },
|
|
18
|
+
logoPaths: [
|
|
19
|
+
{
|
|
20
|
+
d: 'M6.2 2.9c-.5-.3-1.2.1-1.2.7v16.8c0 .6.7 1 1.2.7l14-8.4c.5-.3.5-1.1 0-1.4L6.2 2.9z',
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
exports.PsStoreBadgeClasses = {
|
|
27
|
+
base: 'ps-focus-ring ps-liquid ps-liquid-control ps-pressable group/store inline-flex w-full min-w-0 items-center bg-white/72 font-sans text-left text-ink hover:border-primary/30 dark:border-white/16 dark:bg-white/12 motion-reduce:transition-none motion-reduce:hover:transform-none',
|
|
28
|
+
group: 'grid w-full grid-cols-1 sm:grid-cols-2',
|
|
29
|
+
sizes: {
|
|
30
|
+
default: {
|
|
31
|
+
badge: 'min-h-12 gap-3 px-2.5 py-1.5',
|
|
32
|
+
caption: 'text-xs leading-4',
|
|
33
|
+
gap: 'gap-3',
|
|
34
|
+
logo: 'size-5',
|
|
35
|
+
name: 'text-sm font-semibold leading-5',
|
|
36
|
+
tile: 'size-9',
|
|
37
|
+
},
|
|
38
|
+
large: {
|
|
39
|
+
badge: 'min-h-14 gap-3.5 px-3 py-2',
|
|
40
|
+
caption: 'text-xs leading-4',
|
|
41
|
+
gap: 'gap-4',
|
|
42
|
+
logo: 'size-6',
|
|
43
|
+
name: 'text-base font-semibold leading-6',
|
|
44
|
+
tile: 'size-10',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
tile: 'ps-icon-surface transition-colors group-hover/store:bg-primary/15 motion-reduce:transition-none',
|
|
48
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
|
|
3
|
+
import { PsStoreBadgeClasses } from '../constants/ps-store-badge-config';
|
|
4
|
+
import { PsStorePlatform } from '../constants/ps-store-platform';
|
|
5
|
+
import { PsStoreBadge } from './ps-store-badge';
|
|
6
|
+
const isLinked = (url) => url !== undefined && url.trim() !== '';
|
|
7
|
+
export const PsAppStoreButtons = ({ appStoreLabels, appStoreUrl, className, playStoreLabels, playStoreUrl, size = 'default', }) => {
|
|
8
|
+
const appStoreHref = isLinked(appStoreUrl) ? appStoreUrl : undefined;
|
|
9
|
+
const playStoreHref = isLinked(playStoreUrl) ? playStoreUrl : undefined;
|
|
10
|
+
return (_jsxs("div", { className: PallasoftClassNameService.merge(PsStoreBadgeClasses.group, PsStoreBadgeClasses.sizes[size].gap, className), children: [_jsx(PsStoreBadge, { href: appStoreHref, labels: appStoreLabels, platform: PsStorePlatform.appStore, size: size }), _jsx(PsStoreBadge, { href: playStoreHref, labels: playStoreLabels, platform: PsStorePlatform.googlePlay, size: size })] }));
|
|
11
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const PsDivider = ({ className = '', label, orientation = 'horizontal', }) => {
|
|
3
|
+
if (orientation === 'vertical')
|
|
4
|
+
return (_jsx("div", { "aria-orientation": 'vertical', className: `w-px shrink-0 self-stretch bg-line ${className}`, role: 'separator' }));
|
|
5
|
+
if (!label)
|
|
6
|
+
return (_jsx("div", { "aria-orientation": 'horizontal', className: `h-px w-full shrink-0 bg-line ${className}`, role: 'separator' }));
|
|
7
|
+
return (_jsxs("div", { "aria-label": label, "aria-orientation": 'horizontal', className: `flex w-full items-center gap-3 ${className}`, role: 'separator', children: [_jsx("span", { "aria-hidden": 'true', className: 'h-px flex-1 bg-line' }), _jsx("span", { "aria-hidden": 'true', className: 'text-xs text-ink/55', children: label }), _jsx("span", { "aria-hidden": 'true', className: 'h-px flex-1 bg-line' })] }));
|
|
8
|
+
};
|
|
@@ -10,5 +10,5 @@ export const PsSiteHeader = ({ centerContent, className, homeHref, label, LinkCo
|
|
|
10
10
|
const renderLogo = (src, darkSrc, baseClassName) => darkSrc ? (_jsxs(_Fragment, { children: [_jsx("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: PallasoftClassNameService.merge(baseClassName, 'dark:hidden', logoClassName), decoding: 'async', src: src }), _jsx("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: PallasoftClassNameService.merge(baseClassName, 'hidden dark:block', logoClassName), decoding: 'async', src: darkSrc })] })) : (_jsx("img", { alt: logoAlt !== null && logoAlt !== undefined ? logoAlt : label, className: PallasoftClassNameService.merge(baseClassName, logoClassName), decoding: 'async', src: src }));
|
|
11
11
|
const logoContent = logoSrcMobile ? (_jsxs(_Fragment, { children: [_jsx("span", { className: 'hidden sm:contents', children: renderLogo(logoSrc, logoSrcDark, 'h-8 w-auto') }), _jsx("span", { className: 'contents sm:hidden', children: renderLogo(logoSrcMobile, logoSrcMobileDark, 'h-8 w-auto') }), showLabel ? _jsx("span", { className: 'text-base font-bold text-ink', children: label }) : null] })) : (_jsxs(_Fragment, { children: [renderLogo(logoSrc, logoSrcDark, 'h-8 w-auto'), showLabel ? _jsx("span", { className: 'text-base font-bold text-ink', children: label }) : null] }));
|
|
12
12
|
const logoLink = LinkComponent ? (_jsx(LinkComponent, { "aria-label": logoLabel, className: logoLinkClassName, prefetch: 'intent', to: homeHref, children: logoContent })) : (_jsx("a", { "aria-label": logoLabel, className: logoLinkClassName, href: homeHref, children: logoContent }));
|
|
13
|
-
return (_jsx("header", { ref: headerRef, className: PallasoftClassNameService.merge('fixed inset-x-0 top-0 z-header px-
|
|
13
|
+
return (_jsx("header", { ref: headerRef, className: PallasoftClassNameService.merge('fixed inset-x-0 top-0 z-header px-4 pt-[max(1rem,env(safe-area-inset-top))] sm:px-6', className), children: _jsxs("nav", { className: PallasoftClassNameService.merge('ps-glass mx-auto flex max-w-6xl items-center gap-3 rounded-ps-card px-5 py-3', navClassName), children: [onBack ? (_jsx("button", { "aria-label": 'Back', className: 'ps-focus-ring ps-control-square ps-control-compact flex shrink-0 items-center justify-center rounded-ps-control text-ink md:hidden', onClick: onBack, type: 'button', children: _jsx(PsIcon, { iconKey: PsIconKey.ChevronRight, width: 20, height: 20, className: 'rotate-180' }) })) : null, _jsx("div", { className: onBack ? 'hidden md:flex' : 'contents', children: logoLink }), _jsx("div", { className: 'flex min-w-0 flex-1 items-center justify-center gap-3', children: centerContent }), trailing ? _jsx("div", { className: 'flex shrink-0 items-center gap-2.5', children: trailing }) : null] }) }));
|
|
14
14
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { PallasoftClassNameService } from '@pallasoft/ps-design-system';
|
|
3
|
+
import { PsStoreBadgeClasses, PsStoreBadgeConfig } from '../constants/ps-store-badge-config';
|
|
4
|
+
export const PsStoreBadge = ({ className, href, labels, onPress, platform, size = 'default', }) => {
|
|
5
|
+
const platformData = PsStoreBadgeConfig.platforms[platform];
|
|
6
|
+
const shownLabels = labels === undefined ? platformData.labels : labels;
|
|
7
|
+
const sizeClasses = PsStoreBadgeClasses.sizes[size];
|
|
8
|
+
const badgeClassName = PallasoftClassNameService.merge(PsStoreBadgeClasses.base, sizeClasses.badge, className);
|
|
9
|
+
const ariaLabel = `${shownLabels.caption} ${shownLabels.name}`;
|
|
10
|
+
const content = (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": 'true', className: PallasoftClassNameService.merge(PsStoreBadgeClasses.tile, sizeClasses.tile), children: _jsx("svg", { className: sizeClasses.logo, fill: 'currentColor', viewBox: PsStoreBadgeConfig.logoViewBox, xmlns: 'http://www.w3.org/2000/svg', children: platformData.logoPaths.map((path) => (_jsx("path", { d: path.d }, path.d))) }) }), _jsxs("span", { "aria-hidden": 'true', className: 'flex min-w-0 flex-col items-start', children: [_jsx("span", { className: PallasoftClassNameService.merge('truncate max-w-full', sizeClasses.caption), children: shownLabels.caption }), _jsx("span", { className: PallasoftClassNameService.merge('truncate max-w-full', sizeClasses.name), children: shownLabels.name })] })] }));
|
|
11
|
+
if (href === undefined)
|
|
12
|
+
return (_jsx("button", { "aria-label": ariaLabel, className: badgeClassName, "data-platform": platform, onClick: onPress, type: 'button', children: content }));
|
|
13
|
+
return (_jsx("a", { "aria-label": ariaLabel, className: badgeClassName, "data-platform": platform, href: href, rel: 'noopener noreferrer', target: '_blank', children: content }));
|
|
14
|
+
};
|
|
@@ -9,7 +9,7 @@ export const PsDragConfig = {
|
|
|
9
9
|
touchTolerance: 6,
|
|
10
10
|
};
|
|
11
11
|
export const PsDragClasses = {
|
|
12
|
-
handle: 'ps-focus-ring inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100',
|
|
12
|
+
handle: 'ps-focus-ring ps-touch-target relative inline-flex h-7 w-7 shrink-0 cursor-grab touch-none items-center justify-center rounded-ps-control text-slate-400/70 transition hover:bg-white/36 hover:text-slate-600 active:cursor-grabbing dark:text-slate-300/55 dark:hover:bg-white/8 dark:hover:text-slate-100',
|
|
13
13
|
listItem: 'min-w-0',
|
|
14
14
|
lifted: 'cursor-grabbing rounded-xl bg-surface ring-1 ring-primary/30',
|
|
15
15
|
placeholder: 'outline-dashed outline-2 outline-offset-[-2px] outline-primary/35',
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PsStorePlatform } from './ps-store-platform';
|
|
2
|
+
export const PsStoreBadgeConfig = {
|
|
3
|
+
logoViewBox: '0 0 24 24',
|
|
4
|
+
platforms: {
|
|
5
|
+
[PsStorePlatform.appStore]: {
|
|
6
|
+
labels: { caption: 'Download on the', name: 'App Store' },
|
|
7
|
+
logoPaths: [
|
|
8
|
+
{
|
|
9
|
+
d: 'M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701',
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
[PsStorePlatform.googlePlay]: {
|
|
14
|
+
labels: { caption: 'Get it on', name: 'Google Play' },
|
|
15
|
+
logoPaths: [
|
|
16
|
+
{
|
|
17
|
+
d: 'M6.2 2.9c-.5-.3-1.2.1-1.2.7v16.8c0 .6.7 1 1.2.7l14-8.4c.5-.3.5-1.1 0-1.4L6.2 2.9z',
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export const PsStoreBadgeClasses = {
|
|
24
|
+
base: 'ps-focus-ring ps-liquid ps-liquid-control ps-pressable group/store inline-flex w-full min-w-0 items-center bg-white/72 font-sans text-left text-ink hover:border-primary/30 dark:border-white/16 dark:bg-white/12 motion-reduce:transition-none motion-reduce:hover:transform-none',
|
|
25
|
+
group: 'grid w-full grid-cols-1 sm:grid-cols-2',
|
|
26
|
+
sizes: {
|
|
27
|
+
default: {
|
|
28
|
+
badge: 'min-h-12 gap-3 px-2.5 py-1.5',
|
|
29
|
+
caption: 'text-xs leading-4',
|
|
30
|
+
gap: 'gap-3',
|
|
31
|
+
logo: 'size-5',
|
|
32
|
+
name: 'text-sm font-semibold leading-5',
|
|
33
|
+
tile: 'size-9',
|
|
34
|
+
},
|
|
35
|
+
large: {
|
|
36
|
+
badge: 'min-h-14 gap-3.5 px-3 py-2',
|
|
37
|
+
caption: 'text-xs leading-4',
|
|
38
|
+
gap: 'gap-4',
|
|
39
|
+
logo: 'size-6',
|
|
40
|
+
name: 'text-base font-semibold leading-6',
|
|
41
|
+
tile: 'size-10',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
tile: 'ps-icon-surface transition-colors group-hover/store:bg-primary/15 motion-reduce:transition-none',
|
|
45
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useCallback, useSyncExternalStore } from 'react';
|
|
2
|
+
export const usePsMediaQuery = (query) => {
|
|
3
|
+
const subscribe = useCallback((onChange) => {
|
|
4
|
+
if (typeof window.matchMedia !== 'function')
|
|
5
|
+
return () => undefined;
|
|
6
|
+
const list = window.matchMedia(query);
|
|
7
|
+
list.addEventListener('change', onChange);
|
|
8
|
+
return () => list.removeEventListener('change', onChange);
|
|
9
|
+
}, [query]);
|
|
10
|
+
const clientSnapshot = useCallback(() => (typeof window.matchMedia === 'function' ? window.matchMedia(query).matches : null), [query]);
|
|
11
|
+
return useSyncExternalStore(subscribe, clientSnapshot, () => null);
|
|
12
|
+
};
|
|
@@ -4,12 +4,13 @@ export const usePsOptimisticRows = ({ apply, isHolding = false, isSaving, rows,
|
|
|
4
4
|
base: rows,
|
|
5
5
|
changes: [],
|
|
6
6
|
});
|
|
7
|
-
const
|
|
7
|
+
const isActive = isSaving || isHolding;
|
|
8
|
+
const isStale = remembered.base !== rows && !isActive;
|
|
9
|
+
if (isStale)
|
|
10
|
+
setRemembered({ base: rows, changes: [] });
|
|
11
|
+
const changes = isStale ? [] : remembered.changes;
|
|
8
12
|
const shown = useMemo(() => (changes.length === 0 ? rows : apply(rows, changes)), [apply, changes, rows]);
|
|
9
|
-
const remember = useCallback((change) => setRemembered((current) => ({
|
|
10
|
-
base: rows,
|
|
11
|
-
changes: [...(current.base === rows ? current.changes : []), change],
|
|
12
|
-
})), [rows]);
|
|
13
|
+
const remember = useCallback((change) => setRemembered((current) => ({ base: rows, changes: [...current.changes, change] })), [rows]);
|
|
13
14
|
const forgetLast = useCallback(() => setRemembered((current) => ({ base: current.base, changes: current.changes.slice(0, -1) })), []);
|
|
14
15
|
const rollback = useCallback(() => setRemembered({ base: rows, changes: [] }), [rows]);
|
|
15
16
|
return { forgetLast, remember, rollback, rows: shown };
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,13 @@ export * from './components/ps-button';
|
|
|
8
8
|
export * from './components/ps-link-button';
|
|
9
9
|
export * from './components/ps-pallasoft-mark';
|
|
10
10
|
export * from './components/ps-pallasoft-sign-in-button';
|
|
11
|
+
export * from './components/ps-store-badge';
|
|
12
|
+
export * from './components/ps-app-store-buttons';
|
|
13
|
+
export * from './constants/ps-store-platform';
|
|
14
|
+
export * from './constants/ps-store-badge-config';
|
|
15
|
+
export * from './models/ps-store-badge-labels';
|
|
16
|
+
export * from './models/ps-store-badge-logo-path';
|
|
17
|
+
export * from './models/ps-store-badge-platform-data';
|
|
11
18
|
export * from './constants/ps-pallasoft-mark-config';
|
|
12
19
|
export * from './components/ps-card';
|
|
13
20
|
export * from './components/ps-client-only';
|
|
@@ -58,6 +65,7 @@ export * from './hooks/use-ps-route-loader-data';
|
|
|
58
65
|
export * from './hooks/use-ps-element-size';
|
|
59
66
|
export * from './hooks/use-ps-hydrated';
|
|
60
67
|
export * from './hooks/use-ps-viewport';
|
|
68
|
+
export * from './hooks/use-ps-media-query';
|
|
61
69
|
export * from './interfaces/ps-component-props';
|
|
62
70
|
export * from './models/ps-element-size';
|
|
63
71
|
export * from './models/ps-voice-orb';
|
|
@@ -137,3 +145,5 @@ export * from './components/ps-drag-grip';
|
|
|
137
145
|
export * from './components/ps-drag-overlay';
|
|
138
146
|
export * from './hooks/use-ps-drag-sensors';
|
|
139
147
|
export * from './hooks/use-ps-reduced-motion';
|
|
148
|
+
export * from './components/ps-divider';
|
|
149
|
+
export * from './models/ps-divider-orientation';
|
|
@@ -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 declare const usePsMediaQuery: (query: string) => boolean | null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usePsMediaQuery = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const usePsMediaQuery = (query) => {
|
|
6
|
+
const subscribe = (0, react_1.useCallback)((onChange) => {
|
|
7
|
+
if (typeof window.matchMedia !== 'function')
|
|
8
|
+
return () => undefined;
|
|
9
|
+
const list = window.matchMedia(query);
|
|
10
|
+
list.addEventListener('change', onChange);
|
|
11
|
+
return () => list.removeEventListener('change', onChange);
|
|
12
|
+
}, [query]);
|
|
13
|
+
const clientSnapshot = (0, react_1.useCallback)(() => (typeof window.matchMedia === 'function' ? window.matchMedia(query).matches : null), [query]);
|
|
14
|
+
return (0, react_1.useSyncExternalStore)(subscribe, clientSnapshot, () => null);
|
|
15
|
+
};
|
|
16
|
+
exports.usePsMediaQuery = usePsMediaQuery;
|
|
@@ -7,12 +7,13 @@ const usePsOptimisticRows = ({ apply, isHolding = false, isSaving, rows, }) => {
|
|
|
7
7
|
base: rows,
|
|
8
8
|
changes: [],
|
|
9
9
|
});
|
|
10
|
-
const
|
|
10
|
+
const isActive = isSaving || isHolding;
|
|
11
|
+
const isStale = remembered.base !== rows && !isActive;
|
|
12
|
+
if (isStale)
|
|
13
|
+
setRemembered({ base: rows, changes: [] });
|
|
14
|
+
const changes = isStale ? [] : remembered.changes;
|
|
11
15
|
const shown = (0, react_1.useMemo)(() => (changes.length === 0 ? rows : apply(rows, changes)), [apply, changes, rows]);
|
|
12
|
-
const remember = (0, react_1.useCallback)((change) => setRemembered((current) => ({
|
|
13
|
-
base: rows,
|
|
14
|
-
changes: [...(current.base === rows ? current.changes : []), change],
|
|
15
|
-
})), [rows]);
|
|
16
|
+
const remember = (0, react_1.useCallback)((change) => setRemembered((current) => ({ base: rows, changes: [...current.changes, change] })), [rows]);
|
|
16
17
|
const forgetLast = (0, react_1.useCallback)(() => setRemembered((current) => ({ base: current.base, changes: current.changes.slice(0, -1) })), []);
|
|
17
18
|
const rollback = (0, react_1.useCallback)(() => setRemembered({ base: rows, changes: [] }), [rows]);
|
|
18
19
|
return { forgetLast, remember, rollback, rows: shown };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,13 @@ export * from './components/ps-button';
|
|
|
8
8
|
export * from './components/ps-link-button';
|
|
9
9
|
export * from './components/ps-pallasoft-mark';
|
|
10
10
|
export * from './components/ps-pallasoft-sign-in-button';
|
|
11
|
+
export * from './components/ps-store-badge';
|
|
12
|
+
export * from './components/ps-app-store-buttons';
|
|
13
|
+
export * from './constants/ps-store-platform';
|
|
14
|
+
export * from './constants/ps-store-badge-config';
|
|
15
|
+
export * from './models/ps-store-badge-labels';
|
|
16
|
+
export * from './models/ps-store-badge-logo-path';
|
|
17
|
+
export * from './models/ps-store-badge-platform-data';
|
|
11
18
|
export * from './constants/ps-pallasoft-mark-config';
|
|
12
19
|
export * from './components/ps-card';
|
|
13
20
|
export * from './components/ps-client-only';
|
|
@@ -58,6 +65,7 @@ export * from './hooks/use-ps-route-loader-data';
|
|
|
58
65
|
export * from './hooks/use-ps-element-size';
|
|
59
66
|
export * from './hooks/use-ps-hydrated';
|
|
60
67
|
export * from './hooks/use-ps-viewport';
|
|
68
|
+
export * from './hooks/use-ps-media-query';
|
|
61
69
|
export * from './interfaces/ps-component-props';
|
|
62
70
|
export * from './models/ps-element-size';
|
|
63
71
|
export * from './models/ps-voice-orb';
|
|
@@ -137,3 +145,5 @@ export * from './components/ps-drag-grip';
|
|
|
137
145
|
export * from './components/ps-drag-overlay';
|
|
138
146
|
export * from './hooks/use-ps-drag-sensors';
|
|
139
147
|
export * from './hooks/use-ps-reduced-motion';
|
|
148
|
+
export * from './components/ps-divider';
|
|
149
|
+
export * from './models/ps-divider-orientation';
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,13 @@ __exportStar(require("./components/ps-button"), exports);
|
|
|
24
24
|
__exportStar(require("./components/ps-link-button"), exports);
|
|
25
25
|
__exportStar(require("./components/ps-pallasoft-mark"), exports);
|
|
26
26
|
__exportStar(require("./components/ps-pallasoft-sign-in-button"), exports);
|
|
27
|
+
__exportStar(require("./components/ps-store-badge"), exports);
|
|
28
|
+
__exportStar(require("./components/ps-app-store-buttons"), exports);
|
|
29
|
+
__exportStar(require("./constants/ps-store-platform"), exports);
|
|
30
|
+
__exportStar(require("./constants/ps-store-badge-config"), exports);
|
|
31
|
+
__exportStar(require("./models/ps-store-badge-labels"), exports);
|
|
32
|
+
__exportStar(require("./models/ps-store-badge-logo-path"), exports);
|
|
33
|
+
__exportStar(require("./models/ps-store-badge-platform-data"), exports);
|
|
27
34
|
__exportStar(require("./constants/ps-pallasoft-mark-config"), exports);
|
|
28
35
|
__exportStar(require("./components/ps-card"), exports);
|
|
29
36
|
__exportStar(require("./components/ps-client-only"), exports);
|
|
@@ -74,6 +81,7 @@ __exportStar(require("./hooks/use-ps-route-loader-data"), exports);
|
|
|
74
81
|
__exportStar(require("./hooks/use-ps-element-size"), exports);
|
|
75
82
|
__exportStar(require("./hooks/use-ps-hydrated"), exports);
|
|
76
83
|
__exportStar(require("./hooks/use-ps-viewport"), exports);
|
|
84
|
+
__exportStar(require("./hooks/use-ps-media-query"), exports);
|
|
77
85
|
__exportStar(require("./interfaces/ps-component-props"), exports);
|
|
78
86
|
__exportStar(require("./models/ps-element-size"), exports);
|
|
79
87
|
__exportStar(require("./models/ps-voice-orb"), exports);
|
|
@@ -153,3 +161,5 @@ __exportStar(require("./components/ps-drag-grip"), exports);
|
|
|
153
161
|
__exportStar(require("./components/ps-drag-overlay"), exports);
|
|
154
162
|
__exportStar(require("./hooks/use-ps-drag-sensors"), exports);
|
|
155
163
|
__exportStar(require("./hooks/use-ps-reduced-motion"), exports);
|
|
164
|
+
__exportStar(require("./components/ps-divider"), exports);
|
|
165
|
+
__exportStar(require("./models/ps-divider-orientation"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type PsDividerOrientation = 'horizontal' | 'vertical';
|