@vinyasa/feedback 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +134 -0
  2. package/dist/cjs/alert.cjs +286 -0
  3. package/dist/cjs/alert.css +51 -0
  4. package/dist/cjs/banner.cjs +270 -0
  5. package/dist/cjs/banner.css +37 -0
  6. package/dist/cjs/circular-progress.cjs +286 -0
  7. package/dist/cjs/circular-progress.css +30 -0
  8. package/dist/cjs/empty-state.cjs +165 -0
  9. package/dist/cjs/empty-state.css +7 -0
  10. package/dist/cjs/error-boundary.cjs +234 -0
  11. package/dist/cjs/error-boundary.css +7 -0
  12. package/dist/cjs/index.cjs +1763 -0
  13. package/dist/cjs/index.css +448 -0
  14. package/dist/cjs/inline-message.cjs +366 -0
  15. package/dist/cjs/inline-message.css +29 -0
  16. package/dist/cjs/loading-overlay.cjs +451 -0
  17. package/dist/cjs/loading-overlay.css +61 -0
  18. package/dist/cjs/progress-bar.cjs +163 -0
  19. package/dist/cjs/progress-bar.css +15 -0
  20. package/dist/cjs/skeleton.cjs +282 -0
  21. package/dist/cjs/skeleton.css +42 -0
  22. package/dist/cjs/spinner.cjs +329 -0
  23. package/dist/cjs/spinner.css +34 -0
  24. package/dist/cjs/toaster.cjs +377 -0
  25. package/dist/cjs/toaster.css +176 -0
  26. package/dist/esm/147.css +176 -0
  27. package/dist/esm/147.js +164 -0
  28. package/dist/esm/158.css +21 -0
  29. package/dist/esm/158.js +31 -0
  30. package/dist/esm/266.css +30 -0
  31. package/dist/esm/266.js +75 -0
  32. package/dist/esm/277.js +8 -0
  33. package/dist/esm/288.css +7 -0
  34. package/dist/esm/288.js +38 -0
  35. package/dist/esm/474.js +76 -0
  36. package/dist/esm/495.css +39 -0
  37. package/dist/esm/495.js +61 -0
  38. package/dist/esm/516.css +29 -0
  39. package/dist/esm/516.js +66 -0
  40. package/dist/esm/703.css +34 -0
  41. package/dist/esm/703.js +56 -0
  42. package/dist/esm/872.css +15 -0
  43. package/dist/esm/872.js +29 -0
  44. package/dist/esm/880.js +47 -0
  45. package/dist/esm/903.css +51 -0
  46. package/dist/esm/903.js +61 -0
  47. package/dist/esm/953.js +87 -0
  48. package/dist/esm/989.css +37 -0
  49. package/dist/esm/989.js +46 -0
  50. package/dist/esm/alert.d.ts +2 -0
  51. package/dist/esm/alert.js +1 -0
  52. package/dist/esm/banner.d.ts +2 -0
  53. package/dist/esm/banner.js +1 -0
  54. package/dist/esm/circular-progress.d.ts +2 -0
  55. package/dist/esm/circular-progress.js +1 -0
  56. package/dist/esm/components/alert/Alert.css.d.ts +24 -0
  57. package/dist/esm/components/alert/Alert.d.ts +14 -0
  58. package/dist/esm/components/alert/index.d.ts +1 -0
  59. package/dist/esm/components/banner/Banner.css.d.ts +21 -0
  60. package/dist/esm/components/banner/Banner.d.ts +12 -0
  61. package/dist/esm/components/banner/index.d.ts +1 -0
  62. package/dist/esm/components/circular-progress/CircularProgress.css.d.ts +4 -0
  63. package/dist/esm/components/circular-progress/CircularProgress.d.ts +17 -0
  64. package/dist/esm/components/circular-progress/index.d.ts +1 -0
  65. package/dist/esm/components/empty-state/EmptyState.css.d.ts +1 -0
  66. package/dist/esm/components/empty-state/EmptyState.d.ts +15 -0
  67. package/dist/esm/components/empty-state/index.d.ts +1 -0
  68. package/dist/esm/components/error-boundary/ErrorBoundary.d.ts +32 -0
  69. package/dist/esm/components/error-boundary/index.d.ts +1 -0
  70. package/dist/esm/components/inline-message/InlineMessage.css.d.ts +17 -0
  71. package/dist/esm/components/inline-message/InlineMessage.d.ts +10 -0
  72. package/dist/esm/components/inline-message/index.d.ts +1 -0
  73. package/dist/esm/components/loading-overlay/LoadingOverlay.css.d.ts +3 -0
  74. package/dist/esm/components/loading-overlay/LoadingOverlay.d.ts +11 -0
  75. package/dist/esm/components/loading-overlay/index.d.ts +1 -0
  76. package/dist/esm/components/progress-bar/ProgressBar.css.d.ts +2 -0
  77. package/dist/esm/components/progress-bar/ProgressBar.d.ts +12 -0
  78. package/dist/esm/components/progress-bar/index.d.ts +1 -0
  79. package/dist/esm/components/skeleton/Skeleton.css.d.ts +15 -0
  80. package/dist/esm/components/skeleton/Skeleton.d.ts +35 -0
  81. package/dist/esm/components/skeleton/index.d.ts +1 -0
  82. package/dist/esm/components/spinner/Spinner.css.d.ts +16 -0
  83. package/dist/esm/components/spinner/Spinner.d.ts +10 -0
  84. package/dist/esm/components/spinner/index.d.ts +1 -0
  85. package/dist/esm/components/toaster/ToastItemView.d.ts +7 -0
  86. package/dist/esm/components/toaster/Toaster.css.d.ts +59 -0
  87. package/dist/esm/components/toaster/Toaster.d.ts +10 -0
  88. package/dist/esm/components/toaster/index.d.ts +2 -0
  89. package/dist/esm/components/toaster/toastStore.d.ts +25 -0
  90. package/dist/esm/empty-state.d.ts +2 -0
  91. package/dist/esm/empty-state.js +1 -0
  92. package/dist/esm/error-boundary.d.ts +2 -0
  93. package/dist/esm/error-boundary.js +1 -0
  94. package/dist/esm/index.d.ts +12 -0
  95. package/dist/esm/index.js +11 -0
  96. package/dist/esm/inline-message.d.ts +2 -0
  97. package/dist/esm/inline-message.js +1 -0
  98. package/dist/esm/loading-overlay.d.ts +2 -0
  99. package/dist/esm/loading-overlay.js +1 -0
  100. package/dist/esm/polymorphic.d.ts +5 -0
  101. package/dist/esm/progress-bar.d.ts +2 -0
  102. package/dist/esm/progress-bar.js +1 -0
  103. package/dist/esm/skeleton.d.ts +2 -0
  104. package/dist/esm/skeleton.js +1 -0
  105. package/dist/esm/spacing.d.ts +19 -0
  106. package/dist/esm/spinner.d.ts +2 -0
  107. package/dist/esm/spinner.js +1 -0
  108. package/dist/esm/status.d.ts +4 -0
  109. package/dist/esm/toaster.d.ts +2 -0
  110. package/dist/esm/toaster.js +1 -0
  111. package/package.json +147 -0
package/README.md ADDED
@@ -0,0 +1,134 @@
1
+ # @vinyasa/feedback
2
+
3
+ 11 feedback primitives: Spinner, ProgressBar, CircularProgress, Alert, Banner, InlineMessage, Skeleton, LoadingOverlay, EmptyState, ErrorBoundary, Toaster (+ the `toast` imperative API).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @vinyasa/feedback @vinyasa/layout @vinyasa/typography @vinyasa/icons @vinyasa/button @vinyasa/tokens react react-dom
9
+ ```
10
+
11
+ This is the one package that sits on top of every other category — it composes `@vinyasa/layout` (Box, Stack, Center), `@vinyasa/typography` (Heading, Paragraph), `@vinyasa/icons` (status icons), and `@vinyasa/button` (action slots), rather than being a peer to them. All five are peer dependencies. Rendering requires a `VinyasaProvider` (from `@vinyasa/tokens`) above these components in the tree — including `<Toaster />`, which renders in place (not via a portal — see its own docs below) and so must stay inside the same `VinyasaProvider` subtree as everything else.
12
+
13
+ ## New tokens this package introduces
14
+
15
+ Alert/Banner/InlineMessage/Toast share one status system — four pale-background + readable-text pairs, purpose-built for status communication (distinct from `primary`/`secondary`/`tertiary`, which are Button's brand-hierarchy roles, and from the existing solid `error`/`onError` pair, which is built for Button's loud danger variant, not a pale alert box):
16
+
17
+ | Token | Value | Source |
18
+ | ------------------- | --------- | -------------------- |
19
+ | `statusInfoBg` | `#dbeafe` | existing `blue[100]` |
20
+ | `statusInfoText` | `#1d4ed8` | existing `blue[700]` |
21
+ | `statusSuccessBg` | `#dcfce7` | new `green[100]` |
22
+ | `statusSuccessText` | `#15803d` | new `green[700]` |
23
+ | `statusWarningBg` | `#fef3c7` | new `amber[100]` |
24
+ | `statusWarningText` | `#b45309` | new `amber[700]` |
25
+ | `statusErrorBg` | `#fee2e2` | existing `red[100]` |
26
+ | `statusErrorText` | `#dc2626` | existing `red[600]` |
27
+
28
+ Everything else (Spinner, Skeleton, both progress components, LoadingOverlay) reuses existing tokens — `primary`/`secondary`/`borderColorDefault`/`radiusFull`/`elevationOverlay`/`zIndexOverlay`/`zIndexToast`.
29
+
30
+ ## Spacing
31
+
32
+ Every component accepts the same margin/padding props as `@vinyasa/layout` — see [its README](../layout/README.md#spacing) for the full prop and token tables.
33
+
34
+ ## Usage
35
+
36
+ ### Spinner
37
+
38
+ ```tsx
39
+ <Spinner size="md" />
40
+ ```
41
+
42
+ A public, standalone spinner — distinct from the private one `@vinyasa/button` already uses internally for its own `loading` prop, not a shared dependency between the two.
43
+
44
+ ### ProgressBar, CircularProgress
45
+
46
+ ```tsx
47
+ <ProgressBar value={60} />
48
+ <CircularProgress value={60} />
49
+ <CircularProgress /> {/* indeterminate — omit value */}
50
+ ```
51
+
52
+ Both expose `role="progressbar"` with `aria-valuenow`/`aria-valuemin`/`aria-valuemax`.
53
+
54
+ ### Alert, Banner, InlineMessage
55
+
56
+ One shared status vocabulary — `status`: `info` / `success` / `warning` / `error` — differing only in layout: `Alert` is boxed (icon + title + description), `Banner` is edge-to-edge (for a page/section top), `InlineMessage` is bare (icon + colored text, e.g. under a form field).
57
+
58
+ ```tsx
59
+ <Alert status="success" title="Saved" description="Your changes have been saved." />
60
+ <Banner status="warning">Scheduled maintenance tonight at 10pm.</Banner>
61
+ <InlineMessage status="error">This field is required.</InlineMessage>
62
+ ```
63
+
64
+ ### Skeleton
65
+
66
+ ```tsx
67
+ <Skeleton width="100%" height="1rem" />
68
+ <Skeleton circle width="3rem" height="3rem" />
69
+ ```
70
+
71
+ ### LoadingOverlay
72
+
73
+ ```tsx
74
+ <LoadingOverlay visible={isLoading}>
75
+ <Content />
76
+ </LoadingOverlay>
77
+ ```
78
+
79
+ ### EmptyState
80
+
81
+ ```tsx
82
+ <EmptyState
83
+ icon={<InboxIcon />}
84
+ title="No results"
85
+ description="Try adjusting your filters."
86
+ action={<Button>Clear filters</Button>}
87
+ />
88
+ ```
89
+
90
+ ### ErrorBoundary
91
+
92
+ The one class component in the system — `getDerivedStateFromError`/`componentDidCatch` have no hook equivalent.
93
+
94
+ ```tsx
95
+ <ErrorBoundary fallback={<EmptyState title="Something went wrong" />}>
96
+ <App />
97
+ </ErrorBoundary>
98
+ ```
99
+
100
+ ### Toaster + toast
101
+
102
+ An imperative API: mount one `<Toaster />` inside `VinyasaProvider`, near the app root, then call `toast.show()` from anywhere.
103
+
104
+ ```tsx
105
+ // once, inside VinyasaProvider, near the app root
106
+ <Toaster position="bottom-right" />;
107
+
108
+ // from anywhere
109
+ import { toast } from '@vinyasa/feedback';
110
+ toast.show({ status: 'success', title: 'Saved' });
111
+ ```
112
+
113
+ `position` accepts `top-left` / `top-center` / `top-right` / `bottom-left` / `bottom-center` / `bottom-right`, defaulting to `bottom-right`. Mount exactly one `<Toaster />` — the `toast` API is backed by a single global store, same as Mantine/sonner, so multiple instances would all render the same list rather than partitioning it by position.
114
+
115
+ `Toaster` renders in place with `position: fixed`, deliberately not via a portal to `document.body`: `VinyasaProvider` injects its theme as CSS custom properties on its own wrapper element rather than on `:root`, so anything portaled outside that subtree would lose every token (transparent backgrounds, no radius, no shadow). `position: fixed` already floats the toast stack above the rest of the page without leaving the themed DOM subtree.
116
+
117
+ ## Subpath imports
118
+
119
+ Every component can be imported directly instead of through the package root, e.g.:
120
+
121
+ ```tsx
122
+ import Spinner from '@vinyasa/feedback/spinner';
123
+ ```
124
+
125
+ ## Development
126
+
127
+ From the repository root:
128
+
129
+ ```bash
130
+ pnpm --filter @vinyasa/feedback build
131
+ pnpm --filter @vinyasa/feedback test
132
+ pnpm --filter @vinyasa/feedback lint
133
+ pnpm storybook # Feedback/*
134
+ ```
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
22
+ };
23
+ })();
24
+ (()=>{
25
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
+ })();
27
+ (()=>{
28
+ __webpack_require__.r = (exports1)=>{
29
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
30
+ value: 'Module'
31
+ });
32
+ Object.defineProperty(exports1, '__esModule', {
33
+ value: true
34
+ });
35
+ };
36
+ })();
37
+ var __webpack_exports__ = {};
38
+ __webpack_require__.r(__webpack_exports__);
39
+ __webpack_require__.d(__webpack_exports__, {
40
+ default: ()=>alert_Alert
41
+ });
42
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
43
+ const box_namespaceObject = require("@vinyasa/layout/box");
44
+ var box_default = /*#__PURE__*/ __webpack_require__.n(box_namespaceObject);
45
+ const external_react_namespaceObject = require("react");
46
+ const icons_namespaceObject = require("@vinyasa/icons");
47
+ const statusIcons = {
48
+ info: icons_namespaceObject.InfoIcon,
49
+ success: icons_namespaceObject.CheckCircleIcon,
50
+ warning: icons_namespaceObject.AlertTriangleIcon,
51
+ error: icons_namespaceObject.XIcon
52
+ };
53
+ function toPrimitive(t, r) {
54
+ if ("object" != typeof t || !t) return t;
55
+ var e = t[Symbol.toPrimitive];
56
+ if (void 0 !== e) {
57
+ var i = e.call(t, r || "default");
58
+ if ("object" != typeof i) return i;
59
+ throw new TypeError("@@toPrimitive must return a primitive value.");
60
+ }
61
+ return ("string" === r ? String : Number)(t);
62
+ }
63
+ function toPropertyKey(t) {
64
+ var i = toPrimitive(t, "string");
65
+ return "symbol" == typeof i ? i : String(i);
66
+ }
67
+ function _defineProperty(obj, key, value) {
68
+ key = toPropertyKey(key);
69
+ if (key in obj) Object.defineProperty(obj, key, {
70
+ value: value,
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true
74
+ });
75
+ else obj[key] = value;
76
+ return obj;
77
+ }
78
+ function createRuntimeFn_62c9670f_esm_ownKeys(e, r) {
79
+ var t = Object.keys(e);
80
+ if (Object.getOwnPropertySymbols) {
81
+ var o = Object.getOwnPropertySymbols(e);
82
+ r && (o = o.filter(function(r) {
83
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
84
+ })), t.push.apply(t, o);
85
+ }
86
+ return t;
87
+ }
88
+ function _objectSpread2(e) {
89
+ for(var r = 1; r < arguments.length; r++){
90
+ var t = null != arguments[r] ? arguments[r] : {};
91
+ r % 2 ? createRuntimeFn_62c9670f_esm_ownKeys(Object(t), !0).forEach(function(r) {
92
+ _defineProperty(e, r, t[r]);
93
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : createRuntimeFn_62c9670f_esm_ownKeys(Object(t)).forEach(function(r) {
94
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
95
+ });
96
+ }
97
+ return e;
98
+ }
99
+ function mapValues(input, fn) {
100
+ var result = {};
101
+ for(var _key in input)result[_key] = fn(input[_key], _key);
102
+ return result;
103
+ }
104
+ var shouldApplyCompound = (compoundCheck, selections, defaultVariants)=>{
105
+ for (var key of Object.keys(compoundCheck)){
106
+ var _selections$key;
107
+ if (compoundCheck[key] !== (null != (_selections$key = selections[key]) ? _selections$key : defaultVariants[key])) return false;
108
+ }
109
+ return true;
110
+ };
111
+ var createRuntimeFn = (config)=>{
112
+ var runtimeFn = (options)=>{
113
+ var className = config.defaultClassName;
114
+ var selections = _objectSpread2(_objectSpread2({}, config.defaultVariants), options);
115
+ for(var variantName in selections){
116
+ var _selections$variantNa;
117
+ var variantSelection = null != (_selections$variantNa = selections[variantName]) ? _selections$variantNa : config.defaultVariants[variantName];
118
+ if (null != variantSelection) {
119
+ var selection = variantSelection;
120
+ if ('boolean' == typeof selection) selection = true === selection ? 'true' : 'false';
121
+ var selectionClassName = config.variantClassNames[variantName][selection];
122
+ if (selectionClassName) className += ' ' + selectionClassName;
123
+ }
124
+ }
125
+ for (var [compoundCheck, compoundClassName] of config.compoundVariants)if (shouldApplyCompound(compoundCheck, selections, config.defaultVariants)) className += ' ' + compoundClassName;
126
+ return className;
127
+ };
128
+ runtimeFn.variants = ()=>Object.keys(config.variantClassNames);
129
+ runtimeFn.classNames = {
130
+ get base () {
131
+ return config.defaultClassName.split(' ')[0];
132
+ },
133
+ get variants () {
134
+ return mapValues(config.variantClassNames, (classNames)=>mapValues(classNames, (className)=>className.split(' ')[0]));
135
+ }
136
+ };
137
+ return runtimeFn;
138
+ };
139
+ var Alert_css_alert = createRuntimeFn({
140
+ defaultClassName: '_1313gq0',
141
+ variantClassNames: {
142
+ status: {
143
+ info: '_1313gq1',
144
+ success: '_1313gq2',
145
+ warning: '_1313gq3',
146
+ error: '_1313gq4'
147
+ }
148
+ },
149
+ defaultVariants: {
150
+ status: 'info'
151
+ },
152
+ compoundVariants: []
153
+ });
154
+ var body = '_1313gq6';
155
+ var Alert_css_description = '_1313gq8';
156
+ var icon = '_1313gq5';
157
+ var Alert_css_title = '_1313gq7';
158
+ function _define_property(obj, key, value) {
159
+ if (key in obj) Object.defineProperty(obj, key, {
160
+ value: value,
161
+ enumerable: true,
162
+ configurable: true,
163
+ writable: true
164
+ });
165
+ else obj[key] = value;
166
+ return obj;
167
+ }
168
+ function _object_spread(target) {
169
+ for(var i = 1; i < arguments.length; i++){
170
+ var source = null != arguments[i] ? arguments[i] : {};
171
+ var ownKeys = Object.keys(source);
172
+ if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
173
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
174
+ }));
175
+ ownKeys.forEach(function(key) {
176
+ _define_property(target, key, source[key]);
177
+ });
178
+ }
179
+ return target;
180
+ }
181
+ function Alert_ownKeys(object, enumerableOnly) {
182
+ var keys = Object.keys(object);
183
+ if (Object.getOwnPropertySymbols) {
184
+ var symbols = Object.getOwnPropertySymbols(object);
185
+ if (enumerableOnly) symbols = symbols.filter(function(sym) {
186
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
187
+ });
188
+ keys.push.apply(keys, symbols);
189
+ }
190
+ return keys;
191
+ }
192
+ function _object_spread_props(target, source) {
193
+ source = null != source ? source : {};
194
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
195
+ else Alert_ownKeys(Object(source)).forEach(function(key) {
196
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
197
+ });
198
+ return target;
199
+ }
200
+ function _object_without_properties(source, excluded) {
201
+ if (null == source) return {};
202
+ var target = {}, sourceKeys, key, i;
203
+ if ("u" > typeof Reflect && Reflect.ownKeys) {
204
+ sourceKeys = Reflect.ownKeys(Object(source));
205
+ for(i = 0; i < sourceKeys.length; i++){
206
+ key = sourceKeys[i];
207
+ if (!(excluded.indexOf(key) >= 0)) {
208
+ if (Object.prototype.propertyIsEnumerable.call(source, key)) target[key] = source[key];
209
+ }
210
+ }
211
+ return target;
212
+ }
213
+ target = _object_without_properties_loose(source, excluded);
214
+ if (Object.getOwnPropertySymbols) {
215
+ sourceKeys = Object.getOwnPropertySymbols(source);
216
+ for(i = 0; i < sourceKeys.length; i++){
217
+ key = sourceKeys[i];
218
+ if (!(excluded.indexOf(key) >= 0)) {
219
+ if (Object.prototype.propertyIsEnumerable.call(source, key)) target[key] = source[key];
220
+ }
221
+ }
222
+ }
223
+ return target;
224
+ }
225
+ function _object_without_properties_loose(source, excluded) {
226
+ if (null == source) return {};
227
+ var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
228
+ for(i = 0; i < sourceKeys.length; i++){
229
+ key = sourceKeys[i];
230
+ if (!(excluded.indexOf(key) >= 0)) {
231
+ if (Object.prototype.propertyIsEnumerable.call(source, key)) target[key] = source[key];
232
+ }
233
+ }
234
+ return target;
235
+ }
236
+ const Alert = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)((_0, _1)=>{
237
+ let _ref = [
238
+ _0,
239
+ _1
240
+ ], [_ref1, ..._rest] = _ref, { status = 'info', title, description, className } = _ref1, rest = _object_without_properties(_ref1, [
241
+ "status",
242
+ "title",
243
+ "description",
244
+ "className"
245
+ ]), [ref] = _rest;
246
+ const Icon = statusIcons[status];
247
+ const classes = className ? `${Alert_css_alert({
248
+ status
249
+ })} ${className}` : Alert_css_alert({
250
+ status
251
+ });
252
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(box_default(), _object_spread_props(_object_spread({
253
+ ref: ref,
254
+ role: "alert",
255
+ className: classes
256
+ }, rest), {
257
+ children: [
258
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Icon, {
259
+ className: icon,
260
+ "aria-hidden": "true"
261
+ }),
262
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
263
+ className: body,
264
+ children: [
265
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
266
+ className: Alert_css_title,
267
+ children: title
268
+ }),
269
+ description ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
270
+ className: Alert_css_description,
271
+ children: description
272
+ }) : null
273
+ ]
274
+ })
275
+ ]
276
+ }));
277
+ });
278
+ Alert.displayName = 'Alert';
279
+ const alert_Alert = Alert;
280
+ exports["default"] = __webpack_exports__["default"];
281
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
282
+ "default"
283
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
284
+ Object.defineProperty(exports, '__esModule', {
285
+ value: true
286
+ });
@@ -0,0 +1,51 @@
1
+ ._1313gq0 {
2
+ align-items: flex-start;
3
+ gap: var(--vinyasa-space3);
4
+ padding: var(--vinyasa-space4);
5
+ border-radius: var(--vinyasa-radius-md);
6
+ font-family: var(--vinyasa-font-family-sans);
7
+ display: flex;
8
+ }
9
+
10
+ ._1313gq1 {
11
+ background-color: var(--vinyasa-status-info-bg);
12
+ color: var(--vinyasa-status-info-text);
13
+ }
14
+
15
+ ._1313gq2 {
16
+ background-color: var(--vinyasa-status-success-bg);
17
+ color: var(--vinyasa-status-success-text);
18
+ }
19
+
20
+ ._1313gq3 {
21
+ background-color: var(--vinyasa-status-warning-bg);
22
+ color: var(--vinyasa-status-warning-text);
23
+ }
24
+
25
+ ._1313gq4 {
26
+ background-color: var(--vinyasa-status-error-bg);
27
+ color: var(--vinyasa-status-error-text);
28
+ }
29
+
30
+ ._1313gq5 {
31
+ flex-shrink: 0;
32
+ margin-top: .125em;
33
+ }
34
+
35
+ ._1313gq6 {
36
+ gap: var(--vinyasa-space1);
37
+ flex-direction: column;
38
+ display: flex;
39
+ }
40
+
41
+ ._1313gq7 {
42
+ font-size: var(--vinyasa-font-size-sm);
43
+ font-weight: var(--vinyasa-font-weight-semibold);
44
+ margin: 0;
45
+ }
46
+
47
+ ._1313gq8 {
48
+ font-size: var(--vinyasa-font-size-sm);
49
+ margin: 0;
50
+ }
51
+