@spaced-out/ui-design-system 0.5.38 → 0.5.40

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/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.5.40](https://github.com/spaced-out/ui-design-system/compare/v0.5.39...v0.5.40) (2026-01-16)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * remove focus within unnecessary specificity ([#455](https://github.com/spaced-out/ui-design-system/issues/455)) ([97c108f](https://github.com/spaced-out/ui-design-system/commit/97c108fedcec080b45d2ad5553f1f5842e61728f))
11
+
12
+ ### [0.5.39](https://github.com/spaced-out/ui-design-system/compare/v0.5.38...v0.5.39) (2026-01-16)
13
+
14
+
15
+ ### Features
16
+
17
+ * past chat card component ([#438](https://github.com/spaced-out/ui-design-system/issues/438)) ([6a82638](https://github.com/spaced-out/ui-design-system/commit/6a82638a863dbc9f2950a30414bdf9f784f8a515)), closes [#419](https://github.com/spaced-out/ui-design-system/issues/419) [#440](https://github.com/spaced-out/ui-design-system/issues/440) [#441](https://github.com/spaced-out/ui-design-system/issues/441)
18
+ * preview card component ([#436](https://github.com/spaced-out/ui-design-system/issues/436)) ([447fecd](https://github.com/spaced-out/ui-design-system/commit/447fecd433b200e04c23325f901956aaf037976d))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * box shadow and background color for msg ([#454](https://github.com/spaced-out/ui-design-system/issues/454)) ([0acff77](https://github.com/spaced-out/ui-design-system/commit/0acff7762220f9dad7aa7bcc1e145bf12d51a212))
24
+
5
25
  ### [0.5.38](https://github.com/spaced-out/ui-design-system/compare/v0.5.37...v0.5.38) (2025-12-19)
6
26
 
7
27
 
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import type { Flow } from 'flow-to-typescript-codemod';
3
+ import { type AlertSemanticType } from '../../types/common';
4
+ import type { IconSize, IconType } from '../../components/Icon';
5
+ type ClassNames = Readonly<{
6
+ wrapper?: string;
7
+ }>;
8
+ export interface PastChatCardProps {
9
+ title: string;
10
+ subTitle: string;
11
+ iconName?: string;
12
+ iconType?: IconType;
13
+ iconSize?: IconSize;
14
+ semantic?: AlertSemanticType;
15
+ disabled?: boolean;
16
+ classNames?: ClassNames;
17
+ onClick?: (event: React.SyntheticEvent<HTMLDivElement>) => void;
18
+ testId?: string;
19
+ }
20
+ export declare const PastChatCard: Flow.AbstractComponent<PastChatCardProps, HTMLDivElement>;
21
+ export {};
22
+ //# sourceMappingURL=PastChatCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PastChatCard.d.ts","sourceRoot":"","sources":["../../../src/components/PastChatCard/PastChatCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAiB,KAAK,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAKxE,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAO5D,KAAK,UAAU,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAC/C,iBAAiB,EACjB,cAAc,CAyEf,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PastChatCard = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _common = require("../../types/common");
9
+ var _typography = require("../../types/typography");
10
+ var _classify = _interopRequireDefault(require("../../utils/classify"));
11
+ var _qa = require("../../utils/qa");
12
+ var _Icon = require("../Icon");
13
+ var _Text = require("../Text");
14
+ var _PastChatCardModule = _interopRequireDefault(require("./PastChatCard.module.css"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ const PastChatCard = exports.PastChatCard = /*#__PURE__*/React.forwardRef((_ref, ref) => {
19
+ let {
20
+ title,
21
+ subTitle,
22
+ iconName,
23
+ iconType = _Icon.ICON_TYPE.solid,
24
+ iconSize = _Icon.ICON_SIZE.small,
25
+ semantic = _common.ALERT_SEMANTIC.neutral,
26
+ disabled = false,
27
+ classNames,
28
+ onClick,
29
+ testId
30
+ } = _ref;
31
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
32
+ ref: ref,
33
+ "data-testid": (0, _qa.generateTestId)({
34
+ base: testId,
35
+ slot: 'root'
36
+ }),
37
+ className: (0, _classify.default)(_PastChatCardModule.default.card, {
38
+ [_PastChatCardModule.default.disabled]: disabled
39
+ }, classNames?.wrapper),
40
+ onClick: onClick,
41
+ tabIndex: disabled ? -1 : 0,
42
+ onKeyDown: e => e.key === 'Enter' && onClick?.(e),
43
+ "aria-disabled": disabled,
44
+ children: [iconName && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.SemanticIcon, {
45
+ name: iconName,
46
+ type: iconType,
47
+ size: iconSize,
48
+ semantic: disabled ? _common.ALERT_SEMANTIC.neutral : semantic,
49
+ testId: (0, _qa.generateTestId)({
50
+ base: testId,
51
+ slot: 'icon-element'
52
+ }),
53
+ classNames: {
54
+ wrapper: _PastChatCardModule.default.semanticIcon
55
+ }
56
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
57
+ className: _PastChatCardModule.default.textContent,
58
+ "data-testid": (0, _qa.generateTestId)({
59
+ base: testId,
60
+ slot: 'content'
61
+ }),
62
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.BodyMediumBold, {
63
+ className: _PastChatCardModule.default.title,
64
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.primary,
65
+ testId: (0, _qa.generateTestId)({
66
+ base: testId,
67
+ slot: 'title'
68
+ }),
69
+ children: title
70
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.BodySmall, {
71
+ className: _PastChatCardModule.default.subTitle,
72
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.secondary,
73
+ testId: (0, _qa.generateTestId)({
74
+ base: testId,
75
+ slot: 'subtitle'
76
+ }),
77
+ children: subTitle
78
+ })]
79
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
80
+ name: "chevron-right",
81
+ size: _Icon.ICON_SIZE.small,
82
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.tertiary,
83
+ className: _PastChatCardModule.default.chevronIcon,
84
+ testId: (0, _qa.generateTestId)({
85
+ base: testId,
86
+ slot: 'chevron-icon'
87
+ })
88
+ })]
89
+ });
90
+ });
91
+ PastChatCard.displayName = 'PastChatCard';
@@ -0,0 +1,83 @@
1
+ @value (
2
+ spaceSmall,
3
+ spaceXSmall,
4
+ spaceXXSmall
5
+ ) from '../../styles/variables/_space.css';
6
+
7
+ @value (
8
+ colorBorderPrimary,
9
+ colorBorderTertiary,
10
+ colorBackgroundTertiary,
11
+ colorBackgroundPrimary,
12
+ colorFocusPrimary,
13
+ colorTextClickable
14
+ ) from '../../styles/variables/_color.css';
15
+
16
+ @value (
17
+ borderWidthPrimary,
18
+ borderWidthTertiary,
19
+ borderWidthNone,
20
+ borderRadiusSmall
21
+ ) from '../../styles/variables/_border.css';
22
+
23
+ @value (
24
+ sizeFluid
25
+ ) from '../../styles/variables/_size.css';
26
+
27
+ .card {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: spaceXSmall;
31
+ padding: spaceSmall;
32
+ background-color: colorBackgroundTertiary;
33
+ composes: borderPrimary from '../../styles/border.module.css';
34
+ border-radius: borderRadiusSmall;
35
+ cursor: pointer;
36
+ width: sizeFluid;
37
+ min-width: fit-content;
38
+
39
+ &:focus {
40
+ border-color: colorTextClickable;
41
+ box-shadow: borderWidthNone borderWidthNone borderWidthNone
42
+ borderWidthTertiary colorFocusPrimary;
43
+ outline: none;
44
+ }
45
+
46
+ &:hover {
47
+ background-color: colorBackgroundPrimary;
48
+
49
+ &:not(:focus) {
50
+ border-color: colorBorderTertiary;
51
+ }
52
+ }
53
+
54
+ &.disabled {
55
+ cursor: not-allowed;
56
+ pointer-events: none;
57
+ }
58
+ }
59
+
60
+ .textContent {
61
+ display: flex;
62
+ flex-direction: column;
63
+ gap: spaceXXSmall;
64
+ flex: 1;
65
+ }
66
+
67
+ .title,
68
+ .subTitle {
69
+ width: sizeFluid;
70
+ }
71
+
72
+ .chevronIcon {
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ }
77
+
78
+ .semanticIcon {
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ border-radius: borderRadiusSmall;
83
+ }
@@ -0,0 +1,2 @@
1
+ export * from '../../components/PastChatCard/PastChatCard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PastChatCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _PastChatCard = require("./PastChatCard");
7
+ Object.keys(_PastChatCard).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _PastChatCard[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _PastChatCard[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import type { Flow } from 'flow-to-typescript-codemod';
3
+ import type { ColorTypes } from '../../types/typography';
4
+ import type { IconSize, IconType } from '../../components/Icon';
5
+ type ClassNames = Readonly<{
6
+ wrapper?: string;
7
+ card?: string;
8
+ titleText?: string;
9
+ previewText?: string;
10
+ cardIconSection?: string;
11
+ helperText?: string;
12
+ }>;
13
+ export interface PreviewCardProps {
14
+ title: string;
15
+ previewText: string;
16
+ cardImgIconName?: string;
17
+ isSelected: boolean;
18
+ disabled?: boolean;
19
+ onClick?: (e: React.SyntheticEvent<HTMLElement>) => unknown;
20
+ helperTextIconName?: string;
21
+ helperTextIconColor?: ColorTypes;
22
+ helperTextIconType?: IconType;
23
+ helperTextIconSize?: IconSize;
24
+ helperText?: string;
25
+ classNames?: ClassNames;
26
+ testId?: string;
27
+ }
28
+ export declare const PreviewCard: Flow.AbstractComponent<PreviewCardProps, HTMLDivElement>;
29
+ export {};
30
+ //# sourceMappingURL=PreviewCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreviewCard.d.ts","sourceRoot":"","sources":["../../../src/components/PreviewCard/PreviewCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAKrD,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAQ5D,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,kBAAkB,CAAC,EAAE,QAAQ,CAAC;IAC9B,kBAAkB,CAAC,EAAE,QAAQ,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAC9C,gBAAgB,EAChB,cAAc,CAiJf,CAAC"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PreviewCard = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _typography = require("../../types/typography");
9
+ var _classify = require("../../utils/classify");
10
+ var _qa = require("../../utils/qa");
11
+ var _Icon = require("../Icon");
12
+ var _Text = require("../Text");
13
+ var _TruncatedTextWithTooltip = require("../TruncatedTextWithTooltip");
14
+ var _PreviewCardModule = _interopRequireDefault(require("./PreviewCard.module.css"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ const PreviewCard = exports.PreviewCard = /*#__PURE__*/React.forwardRef((_ref, ref) => {
19
+ let {
20
+ title,
21
+ previewText,
22
+ cardImgIconName = 'sparkles',
23
+ isSelected,
24
+ disabled = false,
25
+ onClick,
26
+ helperTextIconName = '',
27
+ helperTextIconColor = _typography.TEXT_COLORS.primary,
28
+ helperTextIconType = _Icon.ICON_TYPE.regular,
29
+ helperTextIconSize = _Icon.ICON_SIZE.small,
30
+ helperText,
31
+ classNames,
32
+ testId
33
+ } = _ref;
34
+ const handleClick = e => {
35
+ onClick?.(e);
36
+ };
37
+ const handleKeyDown = e => {
38
+ if (e.key === 'Enter' || e.key === ' ') {
39
+ e.preventDefault();
40
+ onClick?.(e);
41
+ }
42
+ };
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
44
+ ref: ref,
45
+ "data-testid": (0, _qa.generateTestId)({
46
+ base: testId,
47
+ slot: 'root'
48
+ }),
49
+ className: (0, _classify.classify)(_PreviewCardModule.default.wrapper, classNames?.wrapper),
50
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
51
+ className: (0, _classify.classify)(_PreviewCardModule.default.card, {
52
+ [_PreviewCardModule.default.selected]: isSelected,
53
+ [_PreviewCardModule.default.disabled]: disabled
54
+ }, classNames?.card),
55
+ onClick: handleClick,
56
+ onKeyDown: handleKeyDown,
57
+ tabIndex: disabled ? -1 : 0,
58
+ role: "button",
59
+ "aria-pressed": isSelected,
60
+ "aria-disabled": disabled,
61
+ "data-testid": (0, _qa.generateTestId)({
62
+ base: testId,
63
+ slot: 'card'
64
+ }),
65
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
66
+ className: _PreviewCardModule.default.cardContent,
67
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
68
+ className: _PreviewCardModule.default.mainContent,
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.BodySmall, {
70
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.primary,
71
+ className: (0, _classify.classify)(_PreviewCardModule.default.titleText, classNames?.titleText),
72
+ testId: (0, _qa.generateTestId)({
73
+ base: testId,
74
+ slot: 'title-link'
75
+ }),
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TruncatedTextWithTooltip.TruncatedTextWithTooltip, {
77
+ line: 1,
78
+ tooltip: {
79
+ delayMotionDuration: 'normal'
80
+ },
81
+ classNames: {
82
+ wrapper: _PreviewCardModule.default.titleTruncateWrapper
83
+ },
84
+ testId: (0, _qa.generateTestId)({
85
+ base: testId,
86
+ slot: 'title-tooltip'
87
+ }),
88
+ children: title
89
+ })
90
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
91
+ className: _PreviewCardModule.default.previewTextContainer,
92
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.ButtonTextExtraSmall, {
93
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.tertiary,
94
+ testId: (0, _qa.generateTestId)({
95
+ base: testId,
96
+ slot: 'preview-link-text'
97
+ }),
98
+ className: (0, _classify.classify)(_PreviewCardModule.default.previewText, classNames?.previewText),
99
+ children: previewText
100
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
101
+ name: "chevron-right",
102
+ size: _Icon.ICON_SIZE.small,
103
+ color: disabled ? _typography.TEXT_COLORS.disabled : _typography.TEXT_COLORS.tertiary,
104
+ testId: (0, _qa.generateTestId)({
105
+ base: testId,
106
+ slot: 'preview-chevron'
107
+ })
108
+ })]
109
+ })]
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
111
+ className: (0, _classify.classify)(_PreviewCardModule.default.cardIconSection, classNames?.cardIconSection),
112
+ "data-testid": (0, _qa.generateTestId)({
113
+ base: testId,
114
+ slot: 'card-icon'
115
+ }),
116
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
117
+ name: cardImgIconName,
118
+ type: _Icon.ICON_TYPE.solid,
119
+ size: _Icon.ICON_SIZE.small,
120
+ color: disabled ? _typography.TEXT_COLORS.disabled : isSelected ? _typography.TEXT_COLORS.clickable : _typography.TEXT_COLORS.inverseSecondary,
121
+ testId: (0, _qa.generateTestId)({
122
+ base: testId,
123
+ slot: 'card-icon-image'
124
+ })
125
+ })
126
+ })]
127
+ })
128
+ }), !!helperText && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
129
+ className: (0, _classify.classify)(_PreviewCardModule.default.helperText, classNames?.helperText),
130
+ "data-testid": (0, _qa.generateTestId)({
131
+ base: testId,
132
+ slot: 'helper-text'
133
+ }),
134
+ children: [helperTextIconName && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
135
+ name: helperTextIconName,
136
+ type: helperTextIconType,
137
+ size: helperTextIconSize,
138
+ color: helperTextIconColor,
139
+ testId: (0, _qa.generateTestId)({
140
+ base: testId,
141
+ slot: 'helper-text-icon'
142
+ })
143
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.ButtonTextExtraSmall, {
144
+ color: _typography.TEXT_COLORS.tertiary,
145
+ testId: (0, _qa.generateTestId)({
146
+ base: testId,
147
+ slot: 'helper-text-label'
148
+ }),
149
+ children: helperText
150
+ })]
151
+ })]
152
+ });
153
+ });
154
+ PreviewCard.displayName = 'PreviewCard';
@@ -0,0 +1,216 @@
1
+ @value (
2
+ spaceSmall,
3
+ spaceXSmall,
4
+ spaceXXSmall,
5
+ spaceXLarge,
6
+ spaceNone
7
+ ) from '../../styles/variables/_space.css';
8
+
9
+ @value (
10
+ colorBorderPrimary,
11
+ colorBackgroundTertiary,
12
+ colorNeutralLightest,
13
+ colorFillSecondary,
14
+ colorInformationLightest,
15
+ colorFillPrimary,
16
+ colorInformation,
17
+ colorTextClickable,
18
+ colorFocusPrimary,
19
+ colorDataViz1,
20
+ colorDataViz2,
21
+ colorTextDisabled
22
+ ) from '../../styles/variables/_color.css';
23
+
24
+ @value (
25
+ borderRadiusSmall,
26
+ borderRadiusMedium,
27
+ borderWidthPrimary,
28
+ borderWidthTertiary,
29
+ borderWidthNone
30
+ ) from '../../styles/variables/_border.css';
31
+
32
+ @value (
33
+ shadowBoxShadow1X,
34
+ shadowBoxShadow1Y,
35
+ shadowBoxShadow1Blur,
36
+ shadowBoxShadow2X,
37
+ shadowBoxShadow2Y,
38
+ shadowBoxShadow2Blur,
39
+ shadowBoxShadow1Spread,
40
+ shadowBoxShadow1Color,
41
+ shadowBoxShadow4Spread
42
+ ) from '../../styles/variables/_shadow.css';
43
+
44
+ @value (
45
+ sizeFluid,
46
+ size66,
47
+ size50,
48
+ size4,
49
+ size120,
50
+ size10
51
+ ) from '../../styles/variables/_size.css';
52
+
53
+ @value (
54
+ motionDurationNormal,
55
+ motionDurationSlow,
56
+ motionEaseInEaseOut
57
+ ) from '../../styles/variables/_motion.css';
58
+
59
+ .wrapper {
60
+ display: flex;
61
+ flex-direction: column;
62
+ gap: spaceXSmall;
63
+ width: sizeFluid;
64
+ }
65
+
66
+ .previewTextContainer {
67
+ display: flex;
68
+ align-items: center;
69
+ gap: spaceXXSmall;
70
+ }
71
+
72
+ .card {
73
+ background-color: colorBackgroundTertiary;
74
+ border: borderWidthPrimary solid colorBorderPrimary;
75
+ border-radius: borderRadiusMedium;
76
+ cursor: pointer;
77
+ outline: none;
78
+ transition: all motionDurationNormal motionEaseInEaseOut;
79
+ width: sizeFluid;
80
+ min-height: fit-content;
81
+ overflow: hidden;
82
+
83
+ &:focus {
84
+ border-color: colorTextClickable;
85
+ box-shadow: borderWidthNone borderWidthNone borderWidthNone
86
+ borderWidthTertiary colorFocusPrimary;
87
+ }
88
+
89
+ &:hover:not(:focus) {
90
+ box-shadow: shadowBoxShadow1X shadowBoxShadow1Y shadowBoxShadow1Blur
91
+ shadowBoxShadow1Spread shadowBoxShadow1Color;
92
+ background-color: colorNeutralLightest;
93
+ border-color: transparent;
94
+ background-image: linear-gradient(
95
+ colorNeutralLightest,
96
+ colorNeutralLightest
97
+ ),
98
+ linear-gradient(to right, colorDataViz2, colorDataViz1);
99
+ background-clip: content-box, border-box;
100
+ background-origin: border-box;
101
+ }
102
+
103
+ &:focus:hover {
104
+ box-shadow: borderWidthNone borderWidthNone borderWidthNone
105
+ borderWidthTertiary colorFocusPrimary;
106
+ background-color: colorNeutralLightest;
107
+ }
108
+
109
+ &.selected {
110
+ border: borderWidthPrimary solid transparent;
111
+ border-radius: borderRadiusMedium;
112
+ background-image: linear-gradient(
113
+ colorFillSecondary,
114
+ colorInformationLightest
115
+ ),
116
+ linear-gradient(to right, colorFillPrimary, colorInformation);
117
+ background-clip: content-box, border-box;
118
+ background-origin: border-box;
119
+ box-shadow: none;
120
+
121
+ &:focus {
122
+ box-shadow: borderWidthNone borderWidthNone borderWidthNone
123
+ borderWidthTertiary colorFocusPrimary;
124
+ border-color: colorTextClickable;
125
+ }
126
+
127
+ &:focus:hover {
128
+ background-image: linear-gradient(
129
+ colorNeutralLightest,
130
+ colorNeutralLightest
131
+ );
132
+ }
133
+ }
134
+
135
+ &.disabled {
136
+ cursor: not-allowed;
137
+ pointer-events: none;
138
+ background-color: colorBackgroundTertiary;
139
+ border: borderWidthPrimary solid colorBorderPrimary;
140
+ }
141
+ }
142
+
143
+ .cardContent {
144
+ display: flex;
145
+ align-items: flex-start;
146
+ padding: spaceSmall;
147
+ gap: spaceSmall;
148
+ position: relative;
149
+ min-height: size66;
150
+ }
151
+
152
+ .mainContent {
153
+ display: flex;
154
+ flex-direction: column;
155
+ gap: spaceXSmall;
156
+ flex: 1;
157
+ min-width: spaceNone;
158
+ padding-right: calc(spaceXLarge + spaceXSmall + spaceSmall);
159
+ }
160
+
161
+ .titleText {
162
+ width: sizeFluid;
163
+ }
164
+
165
+ .previewText {
166
+ width: fit-content;
167
+ }
168
+
169
+ .cardIconSection {
170
+ display: flex;
171
+ align-items: flex-start;
172
+ justify-content: center;
173
+ height: calc(size120 + size10);
174
+ width: calc(size50 + size4);
175
+ flex-shrink: 0;
176
+ border-radius: borderRadiusSmall;
177
+ background-color: colorNeutralLightest;
178
+ border: borderWidthPrimary solid colorBorderPrimary;
179
+ transition: all motionDurationSlow motionEaseInEaseOut;
180
+ transform: rotate(-3deg);
181
+ padding-top: spaceSmall;
182
+ position: absolute;
183
+ right: spaceXSmall;
184
+ box-shadow: shadowBoxShadow2X shadowBoxShadow2Y shadowBoxShadow2Blur
185
+ shadowBoxShadow4Spread shadowBoxShadow1Color;
186
+ }
187
+
188
+ .card:hover .cardIconSection {
189
+ transform: rotate(5deg);
190
+ }
191
+
192
+ .card.selected .cardIconSection,
193
+ .card:hover .cardIconSection {
194
+ border: borderWidthPrimary solid colorBorderPrimary;
195
+ background-image: linear-gradient(
196
+ colorBackgroundTertiary,
197
+ colorBackgroundTertiary
198
+ );
199
+ background-clip: border-box;
200
+ background-origin: border-box;
201
+ }
202
+
203
+ .card.selected .cardIconSection > div,
204
+ .card:hover .cardIconSection > div {
205
+ color: colorTextClickable;
206
+ }
207
+
208
+ .card.disabled .cardIconSection > div {
209
+ color: colorTextDisabled;
210
+ }
211
+
212
+ .helperText {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: spaceXXSmall;
216
+ }
@@ -0,0 +1,2 @@
1
+ export * from '../../components/PreviewCard/PreviewCard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PreviewCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _PreviewCard = require("./PreviewCard");
7
+ Object.keys(_PreviewCard).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _PreviewCard[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _PreviewCard[key];
14
+ }
15
+ });
16
+ });
@@ -43,44 +43,42 @@
43
43
  flex: 0 0 auto;
44
44
  overflow: auto;
45
45
  cursor: pointer;
46
+ border: borderWidthPrimary solid colorBorderPrimary;
46
47
  }
47
48
 
48
49
  .box:not(.withError):not(.inputDisabled):not(.inputLocked):not(.inputHidden) {
49
- border: borderWidthPrimary solid colorBorderPrimary;
50
+ border-color: colorBorderPrimary;
50
51
  }
51
52
 
52
53
  .box:not(.withError):not(.inputDisabled):not(.inputLocked):not(
53
54
  .inputHidden
54
55
  ):hover {
55
- border: borderWidthPrimary solid colorBorderTertiary;
56
+ border-color: colorBorderTertiary;
56
57
  }
57
58
 
58
- .box:not(.withError):not(.inputDisabled):not(.inputLocked):not(
59
- .inputHidden
60
- ):focus-within {
61
- border: borderWidthPrimary solid colorFillPrimary;
59
+ .box:focus-within {
60
+ border-color: colorFillPrimary;
62
61
  box-shadow: borderWidthNone borderWidthNone borderWidthNone
63
62
  borderWidthTertiary colorFocusPrimary;
64
63
  }
65
64
 
66
65
  .box.withError {
67
- border: borderWidthPrimary solid colorBorderDanger;
66
+ border-color: colorBorderDanger;
68
67
  }
69
68
 
70
69
  .box.withError:focus-within {
71
- border: borderWidthPrimary solid colorBorderDanger;
70
+ border-color: colorBorderDanger;
72
71
  box-shadow: borderWidthNone borderWidthNone borderWidthNone
73
72
  borderWidthTertiary colorFocusDanger;
74
73
  }
75
74
 
76
75
  .box.inputLocked {
77
- border: borderWidthPrimary solid colorBorderPrimary;
76
+ border-color: colorBorderPrimary;
78
77
  border-style: dashed;
79
78
  }
80
79
 
81
80
  .box.inputDisabled {
82
- border: borderWidthPrimary solid colorBorderPrimary;
83
- background-color: colorFillDisabled;
81
+ border-color: colorBorderPrimary;
84
82
  }
85
83
 
86
84
  .tokenListContainer {
@@ -45,6 +45,8 @@ export * from '../components/OptionButton';
45
45
  export * from '../components/PageTitle';
46
46
  export * from '../components/Pagination';
47
47
  export * from '../components/Panel';
48
+ export * from '../components/PreviewCard';
49
+ export * from '../components/PastChatCard';
48
50
  export * from '../components/ProgressDonut';
49
51
  export * from '../components/PromptChip';
50
52
  export * from '../components/PromptInput';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC"}
@@ -520,6 +520,28 @@ Object.keys(_Panel).forEach(function (key) {
520
520
  }
521
521
  });
522
522
  });
523
+ var _PreviewCard = require("./PreviewCard");
524
+ Object.keys(_PreviewCard).forEach(function (key) {
525
+ if (key === "default" || key === "__esModule") return;
526
+ if (key in exports && exports[key] === _PreviewCard[key]) return;
527
+ Object.defineProperty(exports, key, {
528
+ enumerable: true,
529
+ get: function () {
530
+ return _PreviewCard[key];
531
+ }
532
+ });
533
+ });
534
+ var _PastChatCard = require("./PastChatCard");
535
+ Object.keys(_PastChatCard).forEach(function (key) {
536
+ if (key === "default" || key === "__esModule") return;
537
+ if (key in exports && exports[key] === _PastChatCard[key]) return;
538
+ Object.defineProperty(exports, key, {
539
+ enumerable: true,
540
+ get: function () {
541
+ return _PastChatCard[key];
542
+ }
543
+ });
544
+ });
523
545
  var _ProgressDonut = require("./ProgressDonut");
524
546
  Object.keys(_ProgressDonut).forEach(function (key) {
525
547
  if (key === "default" || key === "__esModule") return;
package/mcp/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/genesis-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "MCP server for Genesis UI Design System - provides AI assistants with access to components, hooks, and design tokens",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/ui-design-system",
3
- "version": "0.5.38",
3
+ "version": "0.5.40",
4
4
  "description": "Sense UI components library",
5
5
  "author": {
6
6
  "name": "Spaced Out"