thread-ui 0.13.0 → 0.14.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/README.md +13 -7
- package/dist/components/content-display/carousel/carousel-context.d.ts +117 -9
- package/dist/components/content-display/carousel/carousel.d.ts +1 -1
- package/dist/components/content-display/carousel/carousel.js +19 -4
- package/dist/components/content-display/carousel/carousel.js.map +1 -1
- package/dist/components/content-display/carousel/carousel.types.d.ts +10 -9
- package/dist/components/content-display/carousel/components/carousel-controls.js +1 -1
- package/dist/components/content-display/carousel/components/carousel-controls.js.map +1 -1
- package/dist/components/content-display/carousel/components/carousel-header.d.ts +1 -1
- package/dist/components/content-display/carousel/components/carousel-header.js +6 -13
- package/dist/components/content-display/carousel/components/carousel-header.js.map +1 -1
- package/dist/components/content-display/carousel/components/carousel-item.js +1 -5
- package/dist/components/content-display/carousel/components/carousel-item.js.map +1 -1
- package/dist/components/content-display/gallery/components/gallery-content.js +3 -4
- package/dist/components/content-display/gallery/components/gallery-content.js.map +1 -1
- package/dist/components/content-display/gallery/gallery-context.d.ts +117 -9
- package/dist/components/content-display/gallery/gallery.d.ts +1 -1
- package/dist/components/content-display/gallery/gallery.js +2 -1
- package/dist/components/content-display/gallery/gallery.js.map +1 -1
- package/dist/components/content-display/gallery/gallery.types.d.ts +4 -5
- package/dist/components/content-display/lightbox/components/lightbox-title.js +5 -8
- package/dist/components/content-display/lightbox/components/lightbox-title.js.map +1 -1
- package/dist/components/content-display/lightbox/lightbox-context.d.ts +44 -2
- package/dist/components/content-display/lightbox/lightbox.types.d.ts +1 -1
- package/dist/components/layouts/column-layout/column-layout.d.ts +2 -2
- package/dist/components/layouts/column-layout/column-layout.js +6 -6
- package/dist/components/layouts/column-layout/column-layout.js.map +1 -1
- package/dist/components/layouts/column-layout/column-layout.types.d.ts +4 -7
- package/dist/components/layouts/footer/footer.d.ts +3 -3
- package/dist/components/layouts/footer/footer.js +4 -4
- package/dist/components/layouts/footer/footer.js.map +1 -1
- package/dist/components/layouts/footer/footer.types.d.ts +1 -1
- package/dist/components/layouts/layout-component.types.d.ts +2 -1
- package/dist/components/layouts/masonry-layout/masonry-layout.d.ts +1 -1
- package/dist/components/layouts/masonry-layout/masonry-layout.js +3 -3
- package/dist/components/layouts/masonry-layout/masonry-layout.js.map +1 -1
- package/dist/components/layouts/masonry-layout/masonry-layout.types.d.ts +4 -6
- package/dist/components/media-display/info-card/info-card.js +2 -2
- package/dist/components/media-display/info-card/info-card.js.map +1 -1
- package/dist/components/media-display/info-card/info-card.types.d.ts +1 -1
- package/dist/components/typography/heading/heading.js +1 -1
- package/dist/components/typography/heading/heading.js.map +1 -1
- package/dist/components/typography/page-header/page-header.d.ts +3 -3
- package/dist/components/typography/page-header/page-header.js +5 -5
- package/dist/components/typography/page-header/page-header.js.map +1 -1
- package/dist/components/typography/page-header/page-header.types.d.ts +3 -3
- package/dist/components/ui/button/button-recipe.js +11 -10
- package/dist/components/ui/button/button-recipe.js.map +1 -1
- package/dist/components/ui/card/card.d.ts +1 -1
- package/dist/components/ui/card/card.js +14 -9
- package/dist/components/ui/card/card.js.map +1 -1
- package/dist/components/ui/card/card.types.d.ts +2 -0
- package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.types.d.ts +1 -1
- package/dist/components/ui/modal/modal-context.d.ts +2 -2
- package/dist/internal-components/content-header/content-header.d.ts +12 -0
- package/dist/internal-components/content-header/content-header.js +36 -0
- package/dist/internal-components/content-header/content-header.js.map +1 -0
- package/dist/internal-components/content-header/content-header.types.d.ts +32 -0
- package/dist/internal-components/content-header/content-header.types.js +2 -0
- package/dist/internal-components/content-header/content-header.types.js.map +1 -0
- package/dist/internal-components/content-header/index.d.ts +2 -0
- package/dist/internal-components/content-header/index.js +2 -0
- package/dist/internal-components/content-header/index.js.map +1 -0
- package/dist/internal-components/index.d.ts +2 -0
- package/dist/internal-components/index.js +2 -0
- package/dist/internal-components/index.js.map +1 -1
- package/dist/internal-components/modal-primitive/modal-primitive.d.ts +1 -1
- package/dist/internal-components/modal-primitive/modal-primitive.js +3 -2
- package/dist/internal-components/modal-primitive/modal-primitive.js.map +1 -1
- package/dist/internal-components/modal-primitive/modal-primitive.types.d.ts +2 -0
- package/dist/internal-components/surface/index.d.ts +2 -0
- package/dist/internal-components/surface/index.js +2 -0
- package/dist/internal-components/surface/index.js.map +1 -0
- package/dist/internal-components/surface/surface.d.ts +3 -0
- package/dist/internal-components/surface/surface.js +11 -0
- package/dist/internal-components/surface/surface.js.map +1 -0
- package/dist/internal-components/surface/surface.types.d.ts +15 -0
- package/dist/internal-components/surface/surface.types.js +2 -0
- package/dist/internal-components/surface/surface.types.js.map +1 -0
- package/dist/styled-system/recipes/button.js +6 -6
- package/dist/styled-system/tokens/index.js +8 -0
- package/dist/styled-system/tokens/tokens.d.ts +1 -1
- package/dist/styles/panda.css +1 -1
- package/dist/styles/theme.css +6 -0
- package/dist/theme/css-name-configurations/theme-css-names.d.ts +1 -0
- package/dist/theme/css-name-configurations/theme-css-names.js +3 -0
- package/dist/theme/css-name-configurations/theme-css-names.js.map +1 -1
- package/dist/theme/default-theme.js +2 -0
- package/dist/theme/default-theme.js.map +1 -1
- package/dist/theme/theme-surface-system.d.ts +2 -1
- package/dist/theme/theme-surface-system.js.map +1 -1
- package/dist/types/colors/utility-color-options.types.d.ts +1 -1
- package/dist/types/theme/theme.types.d.ts +1 -0
- package/dist/utils/theme-utilities/get-colored-text-color/get-colored-text-color.js +2 -0
- package/dist/utils/theme-utilities/get-colored-text-color/get-colored-text-color.js.map +1 -1
- package/dist/utils/theme-utilities/get-surface-styles/get-surface-styles.d.ts +2 -3
- package/dist/utils/theme-utilities/get-surface-styles/get-surface-styles.js.map +1 -1
- package/dist/utils/theme-utilities/get-text-color-styles/get-text-color-styles.js +1 -0
- package/dist/utils/theme-utilities/get-text-color-styles/get-text-color-styles.js.map +1 -1
- package/dist/utils/theme-utilities/get-utility-size-value/get-utility-size-value.d.ts +1 -1
- package/package.json +1 -1
- package/dist/styled-system/css/conditions..js +0 -36
- package/dist/styled-system/css/conditions.mjs +0 -36
- package/dist/styled-system/css/css..js +0 -45
- package/dist/styled-system/css/css.mjs +0 -45
- package/dist/styled-system/css/cva..js +0 -87
- package/dist/styled-system/css/cva.mjs +0 -87
- package/dist/styled-system/css/cx..js +0 -15
- package/dist/styled-system/css/cx.mjs +0 -15
- package/dist/styled-system/css/index..js +0 -4
- package/dist/styled-system/css/index.mjs +0 -4
- package/dist/styled-system/css/sva..js +0 -46
- package/dist/styled-system/css/sva.mjs +0 -46
- package/dist/styled-system/helpers..js +0 -316
- package/dist/styled-system/helpers.mjs +0 -316
- package/dist/styled-system/patterns/aspect-ratio..js +0 -38
- package/dist/styled-system/patterns/aspect-ratio.mjs +0 -38
- package/dist/styled-system/patterns/bleed..js +0 -24
- package/dist/styled-system/patterns/bleed.mjs +0 -24
- package/dist/styled-system/patterns/box..js +0 -15
- package/dist/styled-system/patterns/box.mjs +0 -15
- package/dist/styled-system/patterns/center..js +0 -21
- package/dist/styled-system/patterns/center.mjs +0 -21
- package/dist/styled-system/patterns/circle..js +0 -25
- package/dist/styled-system/patterns/circle.mjs +0 -25
- package/dist/styled-system/patterns/container..js +0 -22
- package/dist/styled-system/patterns/container.mjs +0 -22
- package/dist/styled-system/patterns/cq..js +0 -21
- package/dist/styled-system/patterns/cq.mjs +0 -21
- package/dist/styled-system/patterns/divider..js +0 -25
- package/dist/styled-system/patterns/divider.mjs +0 -25
- package/dist/styled-system/patterns/flex..js +0 -26
- package/dist/styled-system/patterns/flex.mjs +0 -26
- package/dist/styled-system/patterns/float..js +0 -52
- package/dist/styled-system/patterns/float.mjs +0 -52
- package/dist/styled-system/patterns/grid-item..js +0 -25
- package/dist/styled-system/patterns/grid-item.mjs +0 -25
- package/dist/styled-system/patterns/grid..js +0 -27
- package/dist/styled-system/patterns/grid.mjs +0 -27
- package/dist/styled-system/patterns/hstack..js +0 -24
- package/dist/styled-system/patterns/hstack.mjs +0 -24
- package/dist/styled-system/patterns/index..js +0 -20
- package/dist/styled-system/patterns/index.mjs +0 -20
- package/dist/styled-system/patterns/link-overlay..js +0 -24
- package/dist/styled-system/patterns/link-overlay.mjs +0 -24
- package/dist/styled-system/patterns/spacer..js +0 -21
- package/dist/styled-system/patterns/spacer.mjs +0 -21
- package/dist/styled-system/patterns/square..js +0 -24
- package/dist/styled-system/patterns/square.mjs +0 -24
- package/dist/styled-system/patterns/stack..js +0 -24
- package/dist/styled-system/patterns/stack.mjs +0 -24
- package/dist/styled-system/patterns/visually-hidden..js +0 -18
- package/dist/styled-system/patterns/visually-hidden.mjs +0 -18
- package/dist/styled-system/patterns/vstack..js +0 -24
- package/dist/styled-system/patterns/vstack.mjs +0 -24
- package/dist/styled-system/patterns/wrap..js +0 -25
- package/dist/styled-system/patterns/wrap.mjs +0 -25
- package/dist/styled-system/recipes/button..js +0 -445
- package/dist/styled-system/recipes/button.mjs +0 -445
- package/dist/styled-system/recipes/create-recipe..js +0 -82
- package/dist/styled-system/recipes/create-recipe.mjs +0 -82
- package/dist/styled-system/recipes/index..js +0 -1
- package/dist/styled-system/recipes/index.mjs +0 -1
- package/dist/styled-system/styles.css +0 -1
- package/dist/styled-system/tokens/index..js +0 -2104
- package/dist/styled-system/tokens/index.mjs +0 -2164
package/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Thread UI
|
|
2
2
|
|
|
3
|
-
Thread is a React component library I built to create my [personal website](https://fisherandrew.org). It's designed around a clean, token-based theme system with
|
|
3
|
+
Thread is a React component library I built to create my [personal website](https://fisherandrew.org). It's designed around a clean, token-based theme system with easy customization, light/dark mode and SSR support.
|
|
4
4
|
|
|
5
5
|
## Get Started
|
|
6
6
|
|
|
7
7
|
All items work out of the box. Explore thread components at [thread.fisherandrew.org](https://thread.fisherandrew.org)!
|
|
8
8
|
|
|
9
|
+
### Setup
|
|
10
|
+
|
|
9
11
|
```bash
|
|
10
12
|
npm install thread-ui
|
|
11
13
|
```
|
|
@@ -23,10 +25,12 @@ import 'thread-ui/thread.css';
|
|
|
23
25
|
|
|
24
26
|
## Design System
|
|
25
27
|
|
|
26
|
-
Thread UI
|
|
28
|
+
Thread UI is built around a central `Theme` that defines token values across the library - colors, spacing, type scales. Thread's design language governs how these tokens are applied to communicate hierarchy and intent.
|
|
27
29
|
|
|
28
30
|
### Surface Layers
|
|
29
31
|
|
|
32
|
+
Thread UI uses a **layer-based elevation system**. Every component either sits on a named layer (canvas, inset, surface, elevated, overlay) or opts out entirely (transparent). The layer determines the component's background color, shadow depth, border treatment, and stacking order.
|
|
33
|
+
|
|
30
34
|
| Layer | Purpose |
|
|
31
35
|
| ---------- | --------------------------------------------------------------------------- |
|
|
32
36
|
| `canvas` | Page background. The base everything sits on. |
|
|
@@ -43,7 +47,7 @@ Thread UI uses a **layer-based elevation system**. Every component either sits o
|
|
|
43
47
|
<Card layer="surface" bg="elevated" shadow="md" structure="none" />
|
|
44
48
|
```
|
|
45
49
|
|
|
46
|
-
|
|
50
|
+
#### The Two Rules
|
|
47
51
|
|
|
48
52
|
1. **Light mode communicates elevation through shadows.** Surface, elevated, and overlay share the same background color — shadows and z-index differentiate them.
|
|
49
53
|
2. **Dark mode communicates elevation through lightness.** Each layer step up is slightly lighter. Shadows are nearly invisible against dark surfaces.
|
|
@@ -74,7 +78,9 @@ return <ThemeProvider theme={customTheme}>{children}</ThemeProvider>;
|
|
|
74
78
|
|
|
75
79
|
### Dark Mode
|
|
76
80
|
|
|
77
|
-
Thread includes
|
|
81
|
+
Thread includes built-in light/dark/system UI modes. Default UI behavior matches the system and works out of the box.
|
|
82
|
+
|
|
83
|
+
To override the default mode, utilize `ThreadScript`. This injects an inline script into your `<head>` that reads the configured default mode, or even the user's saved preference in `localStorage` and sets `data-theme` on `:root` before the first paint — eliminating any flash of wrong-mode content.
|
|
78
84
|
|
|
79
85
|
```tsx
|
|
80
86
|
// Next.js App Router
|
|
@@ -90,13 +96,13 @@ Thread includes a built-in light/dark/system mode system. The `ThreadScript` com
|
|
|
90
96
|
|
|
91
97
|
### SSR Compatible
|
|
92
98
|
|
|
93
|
-
Component CSS is pre-generated using Panda CSS, so components render correctly server-side without any runtime style injection. Most components are SSR compatible, and all work out of the box with `Next.js`.
|
|
99
|
+
Component CSS is pre-generated using Panda CSS, so components render correctly server-side without any runtime style injection. Most components are SSR compatible, and all client-side components and hooks are marked with `use client` and work out of the box with `Next.js`.
|
|
94
100
|
|
|
95
101
|
## Components
|
|
96
102
|
|
|
97
103
|
### UI Elements
|
|
98
104
|
|
|
99
|
-
`Button` `Card` `
|
|
105
|
+
`Button` `Card` `Divider` `DotsLoader` `Icon` `IconButton` `Modal` `SkeletonLayoutLoader` `SkeletonLoader` `SpinLoader` `Toggle`
|
|
100
106
|
|
|
101
107
|
### Media Display
|
|
102
108
|
|
|
@@ -104,7 +110,7 @@ Component CSS is pre-generated using Panda CSS, so components render correctly s
|
|
|
104
110
|
|
|
105
111
|
### Content Display
|
|
106
112
|
|
|
107
|
-
`Lightbox`
|
|
113
|
+
`Carousel` `Gallery` `Lightbox` `TabView`
|
|
108
114
|
|
|
109
115
|
### Typography Elements
|
|
110
116
|
|
|
@@ -2,47 +2,155 @@ import { CarouselEmblaContext } from './carousel.types';
|
|
|
2
2
|
export declare const CarouselProvider: {
|
|
3
3
|
({ initialValue, children, }: {
|
|
4
4
|
initialValue: {
|
|
5
|
-
title?: import("react").
|
|
5
|
+
title?: (string | import("react").ReactElement<{
|
|
6
|
+
align?: "left" | "center" | undefined;
|
|
7
|
+
inline?: boolean | undefined;
|
|
8
|
+
truncate?: boolean | undefined;
|
|
9
|
+
children: import("react").ReactNode;
|
|
10
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
11
|
+
subtitle?: import("react").ReactNode;
|
|
12
|
+
}, ((props: {
|
|
13
|
+
align?: "left" | "center" | undefined;
|
|
14
|
+
inline?: boolean | undefined;
|
|
15
|
+
truncate?: boolean | undefined;
|
|
16
|
+
children: import("react").ReactNode;
|
|
17
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
18
|
+
subtitle?: import("react").ReactNode;
|
|
19
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
20
|
+
align?: "left" | "center" | undefined;
|
|
21
|
+
inline?: boolean | undefined;
|
|
22
|
+
truncate?: boolean | undefined;
|
|
23
|
+
children: import("react").ReactNode;
|
|
24
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
25
|
+
subtitle?: import("react").ReactNode;
|
|
26
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
27
|
+
align?: "left" | "center" | undefined;
|
|
28
|
+
inline?: boolean | undefined;
|
|
29
|
+
truncate?: boolean | undefined;
|
|
30
|
+
children: import("react").ReactNode;
|
|
31
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
32
|
+
subtitle?: import("react").ReactNode;
|
|
33
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
34
|
+
align?: "left" | "center" | undefined;
|
|
35
|
+
inline?: boolean | undefined;
|
|
36
|
+
truncate?: boolean | undefined;
|
|
37
|
+
children: import("react").ReactNode;
|
|
38
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
39
|
+
subtitle?: import("react").ReactNode;
|
|
40
|
+
}) => import("react/jsx-runtime").JSX.Element)>) | undefined;
|
|
41
|
+
subtitle?: string | undefined;
|
|
6
42
|
mdCols: import("../..").MediumColumnOptions;
|
|
7
43
|
lgCols: import("../..").LargeColumnOptions;
|
|
8
44
|
items: Record<string, {
|
|
9
|
-
title
|
|
45
|
+
title?: string | undefined;
|
|
10
46
|
content: import("react").ReactNode;
|
|
11
47
|
id: import("./carousel.types").CarouselItemId;
|
|
12
48
|
}>;
|
|
13
49
|
itemOrder: import("./carousel.types").CarouselItemId[];
|
|
14
50
|
controlsPosition: import("./carousel.types").CarouselControlsPosition;
|
|
15
|
-
ItemWrapper: import("react").
|
|
51
|
+
ItemWrapper: import("react").ComponentClass<any, any> | import("react").FunctionComponent<any>;
|
|
16
52
|
};
|
|
17
53
|
children: import("react").ReactNode;
|
|
18
54
|
}): import("react/jsx-runtime").JSX.Element;
|
|
19
55
|
displayName: string;
|
|
20
56
|
}, useCarouselContext: () => {
|
|
21
57
|
value: {
|
|
22
|
-
title?: import("react").
|
|
58
|
+
title?: (string | import("react").ReactElement<{
|
|
59
|
+
align?: "left" | "center" | undefined;
|
|
60
|
+
inline?: boolean | undefined;
|
|
61
|
+
truncate?: boolean | undefined;
|
|
62
|
+
children: import("react").ReactNode;
|
|
63
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
64
|
+
subtitle?: import("react").ReactNode;
|
|
65
|
+
}, ((props: {
|
|
66
|
+
align?: "left" | "center" | undefined;
|
|
67
|
+
inline?: boolean | undefined;
|
|
68
|
+
truncate?: boolean | undefined;
|
|
69
|
+
children: import("react").ReactNode;
|
|
70
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
71
|
+
subtitle?: import("react").ReactNode;
|
|
72
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
73
|
+
align?: "left" | "center" | undefined;
|
|
74
|
+
inline?: boolean | undefined;
|
|
75
|
+
truncate?: boolean | undefined;
|
|
76
|
+
children: import("react").ReactNode;
|
|
77
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
78
|
+
subtitle?: import("react").ReactNode;
|
|
79
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
80
|
+
align?: "left" | "center" | undefined;
|
|
81
|
+
inline?: boolean | undefined;
|
|
82
|
+
truncate?: boolean | undefined;
|
|
83
|
+
children: import("react").ReactNode;
|
|
84
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
85
|
+
subtitle?: import("react").ReactNode;
|
|
86
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
87
|
+
align?: "left" | "center" | undefined;
|
|
88
|
+
inline?: boolean | undefined;
|
|
89
|
+
truncate?: boolean | undefined;
|
|
90
|
+
children: import("react").ReactNode;
|
|
91
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
92
|
+
subtitle?: import("react").ReactNode;
|
|
93
|
+
}) => import("react/jsx-runtime").JSX.Element)>) | undefined;
|
|
94
|
+
subtitle?: string | undefined;
|
|
23
95
|
mdCols: import("../..").MediumColumnOptions;
|
|
24
96
|
lgCols: import("../..").LargeColumnOptions;
|
|
25
97
|
items: Record<string, {
|
|
26
|
-
title
|
|
98
|
+
title?: string | undefined;
|
|
27
99
|
content: import("react").ReactNode;
|
|
28
100
|
id: import("./carousel.types").CarouselItemId;
|
|
29
101
|
}>;
|
|
30
102
|
itemOrder: import("./carousel.types").CarouselItemId[];
|
|
31
103
|
controlsPosition: import("./carousel.types").CarouselControlsPosition;
|
|
32
|
-
ItemWrapper: import("react").
|
|
104
|
+
ItemWrapper: import("react").ComponentClass<any, any> | import("react").FunctionComponent<any>;
|
|
33
105
|
};
|
|
34
106
|
setValue: import("react").Dispatch<import("react").SetStateAction<{
|
|
35
|
-
title?: import("react").
|
|
107
|
+
title?: (string | import("react").ReactElement<{
|
|
108
|
+
align?: "left" | "center" | undefined;
|
|
109
|
+
inline?: boolean | undefined;
|
|
110
|
+
truncate?: boolean | undefined;
|
|
111
|
+
children: import("react").ReactNode;
|
|
112
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
113
|
+
subtitle?: import("react").ReactNode;
|
|
114
|
+
}, ((props: {
|
|
115
|
+
align?: "left" | "center" | undefined;
|
|
116
|
+
inline?: boolean | undefined;
|
|
117
|
+
truncate?: boolean | undefined;
|
|
118
|
+
children: import("react").ReactNode;
|
|
119
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
120
|
+
subtitle?: import("react").ReactNode;
|
|
121
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
122
|
+
align?: "left" | "center" | undefined;
|
|
123
|
+
inline?: boolean | undefined;
|
|
124
|
+
truncate?: boolean | undefined;
|
|
125
|
+
children: import("react").ReactNode;
|
|
126
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
127
|
+
subtitle?: import("react").ReactNode;
|
|
128
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
129
|
+
align?: "left" | "center" | undefined;
|
|
130
|
+
inline?: boolean | undefined;
|
|
131
|
+
truncate?: boolean | undefined;
|
|
132
|
+
children: import("react").ReactNode;
|
|
133
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
134
|
+
subtitle?: import("react").ReactNode;
|
|
135
|
+
}) => import("react/jsx-runtime").JSX.Element) | ((props: {
|
|
136
|
+
align?: "left" | "center" | undefined;
|
|
137
|
+
inline?: boolean | undefined;
|
|
138
|
+
truncate?: boolean | undefined;
|
|
139
|
+
children: import("react").ReactNode;
|
|
140
|
+
color?: import("../../..").ColoredTextOptions | undefined;
|
|
141
|
+
subtitle?: import("react").ReactNode;
|
|
142
|
+
}) => import("react/jsx-runtime").JSX.Element)>) | undefined;
|
|
143
|
+
subtitle?: string | undefined;
|
|
36
144
|
mdCols: import("../..").MediumColumnOptions;
|
|
37
145
|
lgCols: import("../..").LargeColumnOptions;
|
|
38
146
|
items: Record<string, {
|
|
39
|
-
title
|
|
147
|
+
title?: string | undefined;
|
|
40
148
|
content: import("react").ReactNode;
|
|
41
149
|
id: import("./carousel.types").CarouselItemId;
|
|
42
150
|
}>;
|
|
43
151
|
itemOrder: import("./carousel.types").CarouselItemId[];
|
|
44
152
|
controlsPosition: import("./carousel.types").CarouselControlsPosition;
|
|
45
|
-
ItemWrapper: import("react").
|
|
153
|
+
ItemWrapper: import("react").ComponentClass<any, any> | import("react").FunctionComponent<any>;
|
|
46
154
|
}>>;
|
|
47
155
|
};
|
|
48
156
|
export declare const CarouselEmblaProvider: import("react").Provider<CarouselEmblaContext | undefined>, useCarouselEmblaContext: () => CarouselEmblaContext;
|
|
@@ -15,4 +15,4 @@ import { CarouselProps } from './carousel.types';
|
|
|
15
15
|
* />
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
export declare const Carousel: ({ title, items: itemList, controlsPosition, mdCols, lgCols, itemWrapper, }: CarouselProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
18
|
+
export declare const Carousel: ({ title, subtitle, items: itemList, controlsPosition, mdCols, lgCols, itemWrapper, }: CarouselProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo, useState, useEffect, useCallback } from 'react';
|
|
4
4
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
5
|
+
import { Card } from '../../../components/ui';
|
|
5
6
|
import { CarouselProvider, CarouselEmblaProvider } from './carousel-context';
|
|
6
7
|
import { CarouselContent } from './components/carousel-content';
|
|
8
|
+
// -- Item Wrapper Resolution --
|
|
9
|
+
const FragmentWrapper = ({ children }) => _jsx(_Fragment, { children: children });
|
|
10
|
+
const CardWrapper = ({ children, title }) => (_jsx(Card, { fullWidth: true, title: title ? { text: title } : undefined, size: "md", children: children }));
|
|
11
|
+
const CardFrameWrapper = ({ children, title }) => (_jsx(Card, { fullWidth: true, flush: true, title: title ? { text: title } : undefined, size: "md", children: children }));
|
|
12
|
+
const resolveItemWrapper = (option) => {
|
|
13
|
+
if (option === 'none')
|
|
14
|
+
return FragmentWrapper;
|
|
15
|
+
if (option === 'card')
|
|
16
|
+
return CardWrapper;
|
|
17
|
+
if (option === 'cardFrame')
|
|
18
|
+
return CardFrameWrapper;
|
|
19
|
+
return option;
|
|
20
|
+
};
|
|
7
21
|
/**
|
|
8
22
|
* A scrollable carousel with optional navigation controls and responsive column configuration. Powered by [Embla Carousel](https://www.embla-carousel.com)
|
|
9
23
|
*
|
|
@@ -20,7 +34,7 @@ import { CarouselContent } from './components/carousel-content';
|
|
|
20
34
|
* />
|
|
21
35
|
* ```
|
|
22
36
|
*/
|
|
23
|
-
export const Carousel = ({ title, items: itemList, controlsPosition = 'above', mdCols, lgCols, itemWrapper, }) => {
|
|
37
|
+
export const Carousel = ({ title, subtitle, items: itemList, controlsPosition = 'above', mdCols, lgCols, itemWrapper = 'card', }) => {
|
|
24
38
|
// Embla Config
|
|
25
39
|
const [emblaRef, emblaApi] = useEmblaCarousel();
|
|
26
40
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
@@ -49,14 +63,15 @@ export const Carousel = ({ title, items: itemList, controlsPosition = 'above', m
|
|
|
49
63
|
const itemOrder = normalizedItems.map((item) => item.id);
|
|
50
64
|
return {
|
|
51
65
|
title,
|
|
66
|
+
subtitle,
|
|
52
67
|
items,
|
|
53
68
|
itemOrder,
|
|
54
|
-
ItemWrapper: itemWrapper,
|
|
69
|
+
ItemWrapper: resolveItemWrapper(itemWrapper),
|
|
55
70
|
controlsPosition,
|
|
56
71
|
mdCols,
|
|
57
72
|
lgCols: lgCols ? lgCols : mdCols,
|
|
58
73
|
};
|
|
59
|
-
}, [title, normalizedItems, controlsPosition, mdCols, lgCols]);
|
|
74
|
+
}, [title, normalizedItems, controlsPosition, mdCols, lgCols, itemWrapper]);
|
|
60
75
|
const emblaValue = useMemo(() => ({
|
|
61
76
|
emblaRef,
|
|
62
77
|
emblaApi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../../src/components/content-display/carousel/carousel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../../src/components/content-display/carousel/carousel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,12 @@ import { Prettify } from '../../../types';
|
|
|
3
3
|
import { EmblaViewportRefType } from 'embla-carousel-react';
|
|
4
4
|
import { EmblaCarouselType } from 'embla-carousel';
|
|
5
5
|
import { LargeColumnOptions, MediumColumnOptions } from '../../../components';
|
|
6
|
+
import { ContentTitle } from '../../../internal-components';
|
|
6
7
|
export type CarouselControlsPosition = 'above' | 'around' | 'below' | 'none';
|
|
7
8
|
/** A single pane consumed and displayed by the `Carousel` component */
|
|
8
9
|
export type CarouselItem = {
|
|
9
10
|
/** Optional title rendered with content */
|
|
10
|
-
title
|
|
11
|
+
title?: string;
|
|
11
12
|
/** Content rendered in the carousel */
|
|
12
13
|
content: ReactNode;
|
|
13
14
|
};
|
|
@@ -15,25 +16,25 @@ export type CarouselItemId = string;
|
|
|
15
16
|
type InternalCarouselItem = Prettify<CarouselItem & {
|
|
16
17
|
id: CarouselItemId;
|
|
17
18
|
}>;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
type ItemWrapperComponent = ComponentType<any>;
|
|
20
|
+
export type ItemWrapperOptions = 'none' | 'card' | 'cardFrame' | ItemWrapperComponent;
|
|
21
|
+
export type CarouselProps = Prettify<ContentTitle & {
|
|
21
22
|
/** Items to render, in display order */
|
|
22
|
-
items:
|
|
23
|
+
items: CarouselItem[];
|
|
23
24
|
/** Location to Render Controls @default 'around' */
|
|
24
25
|
controlsPosition?: CarouselControlsPosition;
|
|
25
|
-
/** Optional Carousel Item Wrapper @default `
|
|
26
|
-
itemWrapper?:
|
|
26
|
+
/** Optional Carousel Item Wrapper @default `cardOutline` */
|
|
27
|
+
itemWrapper?: ItemWrapperOptions;
|
|
27
28
|
/** Number of Columns in Medium Viewport */
|
|
28
29
|
mdCols: MediumColumnOptions;
|
|
29
30
|
/** Number of Columns in Large Viewport */
|
|
30
31
|
lgCols?: LargeColumnOptions;
|
|
31
32
|
}>;
|
|
32
|
-
export type CarouselState = Prettify<Pick<CarouselProps, 'title' | 'mdCols'> & Required<Pick<CarouselProps, 'lgCols'>> & {
|
|
33
|
+
export type CarouselState = Prettify<Pick<CarouselProps, 'title' | 'subtitle' | 'mdCols'> & Required<Pick<CarouselProps, 'lgCols'>> & {
|
|
33
34
|
items: Record<CarouselItemId, InternalCarouselItem>;
|
|
34
35
|
itemOrder: CarouselItemId[];
|
|
35
36
|
controlsPosition: CarouselControlsPosition;
|
|
36
|
-
ItemWrapper:
|
|
37
|
+
ItemWrapper: ItemWrapperComponent;
|
|
37
38
|
}>;
|
|
38
39
|
/** Live embla values, bridged out of embla's mutable api via its event loop.
|
|
39
40
|
* Separate from CarouselState because these change externally, not via dispatch. */
|
|
@@ -17,7 +17,7 @@ export const PreviousButton = () => {
|
|
|
17
17
|
return (_jsx(IconButton, { color: "neutral", name: "CaretLeft", size: "sm", onClick: goToPrev, disabled: !canScrollPrev }));
|
|
18
18
|
};
|
|
19
19
|
export const NextButton = () => {
|
|
20
|
-
const { emblaApi,
|
|
20
|
+
const { emblaApi, canScrollNext } = useCarouselEmblaContext();
|
|
21
21
|
const goToNext = () => emblaApi?.scrollNext();
|
|
22
22
|
return (_jsx(IconButton, { color: "neutral", name: "CaretRight", size: "sm", onClick: goToNext, disabled: !canScrollNext }));
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-controls.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-controls.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,MAAM,GAAG;IACd,SAAS,EAAE,GAAG,CAAC;QACd,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,GAAG;KACR,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAE9C,OAAO,CACN,KAAC,UAAU,IACV,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,aAAa,GACvB,CACF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"carousel-controls.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-controls.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,MAAM,GAAG;IACd,SAAS,EAAE,GAAG,CAAC;QACd,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,GAAG;KACR,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAE9C,OAAO,CACN,KAAC,UAAU,IACV,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,aAAa,GACvB,CACF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAE9C,OAAO,CACN,KAAC,UAAU,IACV,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,aAAa,GACvB,CACF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACpC,OAAO,CACN,eAAK,SAAS,EAAE,MAAM,CAAC,SAAS,aAC/B,KAAC,cAAc,KAAG,EAClB,KAAC,UAAU,KAAG,IACT,CACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CarouselHeader: () => import("react/jsx-runtime").JSX.Element
|
|
1
|
+
export declare const CarouselHeader: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import { useCarouselContext } from '../carousel-context';
|
|
4
|
-
import { H2 } from '../../../../components/typography';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
3
|
import { css } from '../../../../styled-system/css';
|
|
4
|
+
import { useCarouselContext } from '../carousel-context';
|
|
6
5
|
import { CarouselControls } from './carousel-controls';
|
|
6
|
+
import { ContentHeader } from '../../../../internal-components';
|
|
7
7
|
const styles = {
|
|
8
8
|
titleBlock: css({
|
|
9
|
-
display: 'flex',
|
|
10
|
-
flexDirection: 'row',
|
|
11
|
-
justifyContent: 'space-between',
|
|
12
|
-
alignItems: 'center',
|
|
13
9
|
marginBottom: '4',
|
|
14
10
|
}),
|
|
15
11
|
};
|
|
16
12
|
export const CarouselHeader = () => {
|
|
17
|
-
const { value: { controlsPosition, title }, } = useCarouselContext();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
const titleDisplay = typeof title === 'string' ? _jsx(H2, { inline: true, children: title }) : title;
|
|
22
|
-
return (_jsxs("div", { className: styles.titleBlock, children: [title && titleDisplay, controlsPosition === 'above' && _jsx(CarouselControls, {})] }));
|
|
13
|
+
const { value: { controlsPosition, title, subtitle }, } = useCarouselContext();
|
|
14
|
+
const headerControls = controlsPosition === 'above' ? _jsx(CarouselControls, {}) : undefined;
|
|
15
|
+
return (_jsx(ContentHeader, { className: styles.titleBlock, title: title, subtitle: subtitle, secondaryContent: headerControls }));
|
|
23
16
|
};
|
|
24
17
|
//# sourceMappingURL=carousel-header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-header.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"carousel-header.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACd,UAAU,EAAE,GAAG,CAAC;QACf,YAAY,EAAE,GAAG;KACjB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAClC,MAAM,EACL,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAC5C,GAAG,kBAAkB,EAAE,CAAC;IAEzB,MAAM,cAAc,GAAG,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,gBAAgB,KAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvF,OAAO,CACN,KAAC,aAAa,IACb,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,cAAc,GAC/B,CACF,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { cva } from '../../../../styled-system/css';
|
|
4
|
-
import { Card } from '../../../../components/ui';
|
|
5
4
|
import { useCarouselContext } from '../carousel-context';
|
|
6
5
|
const styles = {
|
|
7
6
|
wrapper: cva({
|
|
@@ -35,9 +34,6 @@ const styles = {
|
|
|
35
34
|
export const CarouselItem = ({ itemId }) => {
|
|
36
35
|
const { value: { items, ItemWrapper, mdCols, lgCols }, } = useCarouselContext();
|
|
37
36
|
const item = items[itemId];
|
|
38
|
-
|
|
39
|
-
return (_jsx("div", { className: styles.wrapper({ mdCols, lgCols }), children: _jsx(ItemWrapper, { children: item.content }) }));
|
|
40
|
-
}
|
|
41
|
-
return (_jsx("div", { className: styles.wrapper({ mdCols, lgCols }), children: _jsx(Card, { fullWidth: true, title: { text: item.title }, size: "md", children: item.content }) }));
|
|
37
|
+
return (_jsx("div", { className: styles.wrapper({ mdCols, lgCols }), children: _jsx(ItemWrapper, { title: item.title, children: item.content }) }));
|
|
42
38
|
};
|
|
43
39
|
//# sourceMappingURL=carousel-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-item.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-item.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,
|
|
1
|
+
{"version":3,"file":"carousel-item.js","sourceRoot":"","sources":["../../../../../src/components/content-display/carousel/components/carousel-item.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAOzD,MAAM,MAAM,GAAG;IACd,OAAO,EAAE,GAAG,CAAC;QACZ,IAAI,EAAE;YACL,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;SACnC;QACD,QAAQ,EAAE;YACT,MAAM,EAAE;gBACP,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;gBAC9C,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC7C,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;aACjD;YACD,MAAM,EAAE;gBACP,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;gBAChC,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC/B,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;gBACnC,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC/B,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC/B,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;aACnC;SACD;QACD,eAAe,EAAE;YAChB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;SACT;KACD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,MAAM,EAAqB,EAAE,EAAE;IAC7D,MAAM,EACL,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAC7C,GAAG,kBAAkB,EAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,OAAO,CACN,cAAK,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YACjD,KAAC,WAAW,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YAAG,IAAI,CAAC,OAAO,GAAe,GACvD,CACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { css, cva } from '../../../../styled-system/css';
|
|
4
|
-
import { H2 } from '../../../../components/typography';
|
|
5
4
|
import { useGalleryContext } from '../gallery-context';
|
|
6
5
|
import { GALLERY_DISPLAY_CONSTANT_NAMES, GALLERY_DISPLAY_CONSTANTS, } from '../gallery-display-constants';
|
|
7
6
|
import { GalleryItemsDisplay } from './item-display/gallery-items-display';
|
|
8
7
|
import { ItemTrack } from './item-track/item-track';
|
|
8
|
+
import { ContentHeader } from '../../../../internal-components';
|
|
9
9
|
const styles = {
|
|
10
10
|
container: cva({
|
|
11
11
|
base: {
|
|
@@ -56,9 +56,8 @@ const styles = {
|
|
|
56
56
|
}),
|
|
57
57
|
};
|
|
58
58
|
export const GalleryContent = () => {
|
|
59
|
-
const { value: { size, title }, } = useGalleryContext();
|
|
60
|
-
const titleDisplay = typeof title === 'string' ? _jsx(H2, { children: title }) : title;
|
|
59
|
+
const { value: { size, title, subtitle }, } = useGalleryContext();
|
|
61
60
|
const cssVariables = Object.fromEntries(Object.entries(GALLERY_DISPLAY_CONSTANT_NAMES).map(([key, cssVar]) => [cssVar, GALLERY_DISPLAY_CONSTANTS[key]]));
|
|
62
|
-
return (_jsxs("div", { className: styles.container({ size }), style: cssVariables, children: [title
|
|
61
|
+
return (_jsxs("div", { className: styles.container({ size }), style: cssVariables, children: [_jsx(ContentHeader, { title: title, subtitle: subtitle }), _jsxs("div", { className: styles.internalContent, children: [_jsx("div", { className: styles.displayContent, children: _jsx(GalleryItemsDisplay, {}) }), _jsx("div", { className: styles.trackContent({ size: size === 'fill' ? 'lg' : size }), children: _jsx(ItemTrack, {}) })] })] }));
|
|
63
62
|
};
|
|
64
63
|
//# sourceMappingURL=gallery-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery-content.js","sourceRoot":"","sources":["../../../../../src/components/content-display/gallery/components/gallery-content.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"gallery-content.js","sourceRoot":"","sources":["../../../../../src/components/content-display/gallery/components/gallery-content.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAEN,8BAA8B,EAC9B,yBAAyB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,MAAM,GAAG;IACd,SAAS,EAAE,GAAG,CAAC;QACd,IAAI,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,MAAM;SACb;QACD,QAAQ,EAAE;YACT,IAAI,EAAE;gBACL,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;gBACvB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;gBACvB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;gBACvB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;aACxB;SACD;KACD,CAAC;IACF,eAAe,EAAE,GAAG,CAAC;QACpB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,GAAG;QACR,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,cAAc,EAAE,GAAG,CAAC;QACnB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,QAAQ;KAClB,CAAC;IACF,YAAY,EAAE,GAAG,CAAC;QACjB,IAAI,EAAE;YACL,KAAK,EAAE,MAAM;SACb;QACD,QAAQ,EAAE;YACT,IAAI,EAAE;gBACL,EAAE,EAAE;oBACH,MAAM,EAAE,MAAM;iBACd;gBACD,EAAE,EAAE;oBACH,MAAM,EAAE,MAAM;iBACd;gBACD,EAAE,EAAE;oBACH,MAAM,EAAE,OAAO;iBACf;aACD;SACD;KACD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAClC,MAAM,EACL,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAChC,GAAG,iBAAiB,EAAE,CAAC;IAExB,MAAM,YAAY,GAA2B,MAAM,CAAC,WAAW,CAC7D,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAsC,CAAC,GAAG,CACvF,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAC3D,CACD,CAAC;IAEF,OAAO,CACN,eAAK,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,aAC9D,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACnD,eAAK,SAAS,EAAE,MAAM,CAAC,eAAe,aACrC,cAAK,SAAS,EAAE,MAAM,CAAC,cAAc,YACpC,KAAC,mBAAmB,KAAG,GAClB,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAC3E,KAAC,SAAS,KAAG,GACR,IACD,IACD,CACN,CAAC;AACH,CAAC,CAAC"}
|