design-system-silkhaus 4.0.0-beta.combine-tailwind-config.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/app/index.js CHANGED
@@ -1,279 +1,9 @@
1
- var J = Object.defineProperty, K = Object.defineProperties;
2
- var L = Object.getOwnPropertyDescriptors;
3
- var C = Object.getOwnPropertySymbols;
4
- var Q = Object.prototype.hasOwnProperty, X = Object.prototype.propertyIsEnumerable;
5
- var I = (s, e, a) => e in s ? J(s, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : s[e] = a, x = (s, e) => {
6
- for (var a in e || (e = {}))
7
- Q.call(e, a) && I(s, a, e[a]);
8
- if (C)
9
- for (var a of C(e))
10
- X.call(e, a) && I(s, a, e[a]);
11
- return s;
12
- }, k = (s, e) => K(s, L(e));
13
- import { j as d, p as Y, u as Z, o as _, i as O, s as ss, r as es, v as ds, d as as, e as ls, f as ts, g as rs, a as m, F as ns, A as is, h as os, D as cs, x as us, C as fs, l as xs, k as ms, n as ps } from "../ButtonsGroupSelector-sjBrndhv.js";
14
- import { w as ks } from "../ButtonsGroupSelector-sjBrndhv.js";
15
- import { useState as b } from "react";
16
- const hs = (s) => window.innerWidth < Y ? /* @__PURE__ */ d.jsx(R, x({}, s)) : /* @__PURE__ */ d.jsx(M, x({}, s));
17
- hs.displayName = "Dropdown";
18
- const M = ({
19
- placement: s = "bottom-start",
20
- trigger: e,
21
- triggerContainerClassName: a,
22
- disabled: l,
23
- onOpenChange: o,
24
- adjustHeight: n = !0,
25
- adjustWidth: t = !0,
26
- options: r,
27
- getSelectedValueDisplayText: i = P,
28
- placeholder: u,
29
- value: f,
30
- isMultiSelect: y,
31
- onChange: w
32
- }) => {
33
- const [p, N] = b(), h = typeof f == "undefined" ? p : f, c = typeof f == "undefined" ? N : () => {
34
- }, [A, F] = b(!1), { refs: g, floatingStyles: B, context: j } = Z({
35
- open: A,
36
- onOpenChange: (v) => {
37
- F(v), o && o(v);
38
- },
39
- middleware: [
40
- _(8),
41
- O({
42
- crossAxis: s.includes("-"),
43
- fallbackAxisSideDirection: "end"
44
- }),
45
- ss({ padding: 4 }),
46
- es({
47
- apply({ availableWidth: v, availableHeight: q, elements: z }) {
48
- n && (z.floating.style.maxHeight = `${q - 4}px`), t && (z.floating.style.maxWidth = `${v - 4}px`);
49
- }
50
- })
51
- ],
52
- whileElementsMounted: os,
53
- placement: s
54
- }), E = ds(j), W = as(j), $ = ls(j), G = ts(j), { getReferenceProps: T, getFloatingProps: H } = rs([E, W, $, G]);
55
- return e || (e = /* @__PURE__ */ d.jsx(
56
- U,
57
- {
58
- selectedOption: D(h, r),
59
- getSelectedValueDisplayText: i,
60
- placeholder: u
61
- }
62
- )), l ? /* @__PURE__ */ d.jsx("div", { className: a, children: e }) : /* @__PURE__ */ d.jsxs(d.Fragment, { children: [
63
- /* @__PURE__ */ d.jsx(
64
- "div",
65
- k(x({
66
- className: m("ds-cursor-pointer", a),
67
- ref: g.setReference
68
- }, T()), {
69
- children: e
70
- })
71
- ),
72
- A && /* @__PURE__ */ d.jsx(ns, { children: /* @__PURE__ */ d.jsx(
73
- "div",
74
- k(x({
75
- ref: g.setFloating,
76
- style: B
77
- }, H()), {
78
- className: m(
79
- "ds-z-[29999] ds-flex ds-min-w-[200px] ds-flex-col ds-gap-1 ds-rounded ds-bg-white ds-p-2 ds-shadow-md",
80
- n && "ds-overflow-y-auto",
81
- t && "ds-overflow-x-auto"
82
- ),
83
- children: /* @__PURE__ */ d.jsx(
84
- V,
85
- {
86
- isMultiSelect: y,
87
- options: r,
88
- value: h,
89
- setValue: c,
90
- setIsOpen: F,
91
- onChange: w
92
- }
93
- )
94
- })
95
- ) })
96
- ] });
97
- };
98
- M.displayName = "DesktopDropdown";
99
- const R = ({
100
- trigger: s,
101
- triggerContainerClassName: e,
102
- disabled: a,
103
- onOpenChange: l,
104
- getSelectedValueDisplayText: o = P,
105
- placeholder: n,
106
- value: t,
107
- options: r,
108
- isMultiSelect: i,
109
- onChange: u,
110
- closeButtonLabel: f = "Close"
111
- }) => {
112
- const [y, w] = b(), p = typeof t == "undefined" ? y : t, N = typeof t == "undefined" ? w : () => {
113
- }, [h, c] = b(!1);
114
- return s || (s = /* @__PURE__ */ d.jsx(
115
- U,
116
- {
117
- selectedOption: D(p, r),
118
- getSelectedValueDisplayText: o,
119
- placeholder: n
120
- }
121
- )), a ? /* @__PURE__ */ d.jsx("div", { className: e, children: s }) : /* @__PURE__ */ d.jsxs(d.Fragment, { children: [
122
- /* @__PURE__ */ d.jsx(
123
- "div",
124
- {
125
- className: e,
126
- onClick: () => {
127
- c(!0), l && l(!0);
128
- },
129
- children: s
130
- }
131
- ),
132
- /* @__PURE__ */ d.jsx(
133
- is,
134
- {
135
- animation: "slideUp",
136
- show: h,
137
- handleClose: () => {
138
- c(!1), l && l(!1);
139
- },
140
- contentClassName: m("ds-absolute ds-mb-0 ds-w-full"),
141
- className: "ds-z-[29999]",
142
- children: /* @__PURE__ */ d.jsx(
143
- S,
144
- {
145
- onClose: () => {
146
- c(!1), l && l(!1);
147
- },
148
- closeButtonLabel: f,
149
- children: /* @__PURE__ */ d.jsx(
150
- V,
151
- {
152
- isMultiSelect: i,
153
- options: r,
154
- value: p,
155
- setValue: N,
156
- setIsOpen: c,
157
- onChange: u
158
- }
159
- )
160
- }
161
- )
162
- }
163
- )
164
- ] });
165
- };
166
- R.displayName = "MobileDropdown";
167
- const S = ({ onClose: s, closeButtonLabel: e, children: a }) => /* @__PURE__ */ d.jsxs("div", { className: "ds-mb-0 ds-flex ds-max-h-dvh ds-w-full ds-flex-col ds-bg-white", children: [
168
- /* @__PURE__ */ d.jsxs("div", { className: "ds-flex ds-shrink-0 ds-items-center ds-justify-between ds-px-8 ds-py-4", children: [
169
- /* @__PURE__ */ d.jsx(
170
- "div",
171
- {
172
- onClick: s,
173
- className: "ds-flex ds-size-5 ds-cursor-pointer ds-items-center ds-justify-center",
174
- children: /* @__PURE__ */ d.jsx(fs, { className: "ds-size-4" })
175
- }
176
- ),
177
- /* @__PURE__ */ d.jsx("div", { className: "ds-size-5" })
178
- ] }),
179
- /* @__PURE__ */ d.jsx("div", { className: "ds-grow ds-overflow-y-auto ds-p-4 ds-text-xSmallCalloutRegular", children: a }),
180
- /* @__PURE__ */ d.jsx("div", { className: "ds-px-8 ds-py-4", children: /* @__PURE__ */ d.jsx(
181
- xs,
182
- {
183
- buttonClassName: "ds-py-3",
184
- onClick: s,
185
- children: e
186
- }
187
- ) })
188
- ] });
189
- S.displayName = "MobilePopoverContentWrapper";
190
- const U = ({
191
- selectedOption: s,
192
- getSelectedValueDisplayText: e,
193
- placeholder: a
194
- }) => {
195
- const l = !s || Array.isArray(s) && s.length === 0 ? a || "" : e(s);
196
- return /* @__PURE__ */ d.jsx(
197
- cs,
198
- {
199
- color: "secondary",
200
- endIcon: /* @__PURE__ */ d.jsx(us, { className: "ds-size-4" }),
201
- buttonClassName: "ds-justify-between",
202
- children: l
203
- }
204
- );
205
- }, V = ({
206
- options: s,
207
- isMultiSelect: e,
208
- value: a,
209
- setValue: l,
210
- setIsOpen: o,
211
- onChange: n
212
- }) => s && s.map((t) => /* @__PURE__ */ d.jsx(
213
- js,
214
- {
215
- onClick: () => {
216
- let r;
217
- if (e) {
218
- const i = a || [];
219
- i.includes(t.value) ? r = i.filter((u) => u !== t.value) : r = [...i, t.value];
220
- } else
221
- r = t.value, o(!1);
222
- l(r), n && n(D(r, s));
223
- },
224
- option: t,
225
- isSelected: Array.isArray(a) ? a.some((r) => r === t.value) : a === t.value,
226
- showCheckbox: e
227
- },
228
- t.value
229
- )), js = ({
230
- onClick: s,
231
- option: e,
232
- isSelected: a,
233
- showCheckbox: l
234
- }) => /* @__PURE__ */ d.jsxs(
235
- "div",
236
- {
237
- onClick: e.disabled ? void 0 : s,
238
- className: m(
239
- "ds-group ds-flex ds-min-h-[72px] ds-cursor-pointer ds-items-center ds-gap-4 ds-rounded ds-px-4 ds-py-2 ds-text-mediumSubHeadEmphasized hover:ds-bg-[#F6F8FC] ds-tablet:ds-min-h-[auto] ds-tablet:ds-gap-2 ds-tablet:ds-px-2 ds-desktop:ds-text-mediumFootnoteEmphasized",
240
- !l && "ds-transition-[padding] ds-duration-300 hover:ds-px-4"
241
- ),
242
- children: [
243
- e.thumbnailUrl && /* @__PURE__ */ d.jsx(
244
- "img",
245
- {
246
- src: e.thumbnailUrl,
247
- className: "ds-h-14 ds-w-14 ds-shrink-0 ds-rounded ds-object-cover group-hover:ds-pr-0 ds-tablet:ds-h-6 ds-tablet:ds-w-9 ds-tablet:ds-rounded-sm"
248
- }
249
- ),
250
- e.icon,
251
- /* @__PURE__ */ d.jsx(
252
- "div",
253
- {
254
- className: m(
255
- "ds-flex-grow",
256
- !l && "ds-transition-[padding] ds-duration-300 group-hover:ds-pr-0 ds-tablet:ds-pr-4"
257
- ),
258
- children: e.label
259
- }
260
- ),
261
- a && !l && /* @__PURE__ */ d.jsx(ms, { className: "ds-size-4 ds-shrink-0" }),
262
- l && /* @__PURE__ */ d.jsx(
263
- ps,
264
- {
265
- isChecked: a,
266
- disabled: e.disabled
267
- }
268
- )
269
- ]
270
- }
271
- ), D = (s, e) => Array.isArray(s) ? e.filter((a) => s.includes(a.value)) : e.find((a) => a.value === s), P = (s) => Array.isArray(s) ? s.map((e) => e.label).join(", ") : s.label;
1
+ import { B as s, a as t, b as n, D as p, M as r, f as e } from "../index-CS40ZeSb.js";
272
2
  export {
273
- cs as Button,
274
- ks as ButtonsGroupSelector,
275
- M as DesktopDropdown,
276
- hs as Dropdown,
277
- R as MobileDropdown,
278
- D as findOptionByValue
3
+ s as Button,
4
+ t as ButtonsGroupSelector,
5
+ n as DesktopDropdown,
6
+ p as Dropdown,
7
+ r as MobileDropdown,
8
+ e as findOptionByValue
279
9
  };
@@ -0,0 +1,65 @@
1
+ export default {
2
+ meta: {
3
+ type: 'problem',
4
+ docs: {
5
+ description: 'Disallow hardcoded color values like hex, rgb, rgba, hsl, hsla',
6
+ recommended: false,
7
+ },
8
+ messages: {
9
+ hardcodedColor:
10
+ "Do not use hardcoded color value: '{{ color }}'. Use a tailwind class with design token name instead",
11
+ },
12
+ schema: [],
13
+ },
14
+
15
+ create(context) {
16
+ const COLOR_REGEX = new RegExp(
17
+ /#(?:[0-9a-fA-F]{3,8})\b|(rgb|hsl)a?\(\s*\d+\s*,\s*\d+%?\s*,\s*\d+%?(?:\s*,\s*(?:\d+(?:\.\d+)?|\.\d+))?\s*\)/,
18
+ 'i',
19
+ );
20
+
21
+ function reportIfHardcodedColor(node, value) {
22
+ const match = value.match(COLOR_REGEX);
23
+ if (match) {
24
+ context.report({
25
+ node,
26
+ messageId: 'hardcodedColor',
27
+ data: {
28
+ color: match[0],
29
+ },
30
+ });
31
+ }
32
+ }
33
+
34
+ return {
35
+ Literal(node) {
36
+ if (typeof node.value === 'string') {
37
+ reportIfHardcodedColor(node, node.value);
38
+ }
39
+ },
40
+
41
+ JSXAttribute(node) {
42
+ if (node.name && ['class', 'className', 'style'].includes(node.name.name) && node.value) {
43
+ if (node.value.type === 'Literal' && typeof node.value.value === 'string') {
44
+ reportIfHardcodedColor(node.value, node.value.value);
45
+ }
46
+
47
+ if (
48
+ node.value.type === 'JSXExpressionContainer' &&
49
+ node.value.expression &&
50
+ node.value.expression.type === 'Literal' &&
51
+ typeof node.value.expression.value === 'string'
52
+ ) {
53
+ reportIfHardcodedColor(node.value.expression, node.value.expression.value);
54
+ }
55
+ }
56
+ },
57
+
58
+ TemplateLiteral(node) {
59
+ node.quasis.forEach((quasi) => {
60
+ reportIfHardcodedColor(quasi, quasi.value.cooked || '');
61
+ });
62
+ },
63
+ };
64
+ },
65
+ };
@@ -0,0 +1,79 @@
1
+ export default {
2
+ meta: {
3
+ type: 'problem',
4
+ docs: {
5
+ description: 'Restrict listed names in tailwind tokens',
6
+ recommended: false,
7
+ },
8
+ messages: {
9
+ disallowedToken:
10
+ "Do not use '{{ token }}' in token names. Use a semantic design token name instead.",
11
+ },
12
+ schema: [],
13
+ },
14
+
15
+ create(context) {
16
+ const RESTRICTED_TOKENS = [
17
+ 'white',
18
+ 'black',
19
+ 'red',
20
+ 'green',
21
+ 'grey',
22
+ 'gray',
23
+ 'eggplant',
24
+ 'carrot',
25
+ 'teal',
26
+ 'mustard',
27
+ ];
28
+
29
+ const regex = new RegExp(`\\b(${RESTRICTED_TOKENS.join('|')})\\b`, 'i');
30
+
31
+ function reportIfTokenUsed(node, value) {
32
+ const match = regex.exec(value);
33
+ if (match) {
34
+ context.report({
35
+ node,
36
+ messageId: 'disallowedToken',
37
+ data: {
38
+ token: match[1],
39
+ },
40
+ });
41
+ }
42
+ }
43
+
44
+ return {
45
+ Literal(node) {
46
+ if (typeof node.value === 'string') {
47
+ reportIfTokenUsed(node, node.value);
48
+ }
49
+ },
50
+ JSXAttribute(node) {
51
+ if (
52
+ node.name &&
53
+ ['class', 'className', 'style'].includes(node.name.name) &&
54
+ node.value &&
55
+ node.value.type === 'Literal' &&
56
+ typeof node.value.value === 'string'
57
+ ) {
58
+ reportIfTokenUsed(node.value, node.value.value);
59
+ }
60
+
61
+ // Also handle JSXExpressionContainer e.g. className={"my-class red-text"}
62
+ if (
63
+ node.value &&
64
+ node.value.type === 'JSXExpressionContainer' &&
65
+ node.value.expression &&
66
+ node.value.expression.type === 'Literal' &&
67
+ typeof node.value.expression.value === 'string'
68
+ ) {
69
+ reportIfTokenUsed(node.value.expression, node.value.expression.value);
70
+ }
71
+ },
72
+ TemplateLiteral(node) {
73
+ node.quasis.forEach((quasi) => {
74
+ reportIfTokenUsed(quasi, quasi.value.cooked || '');
75
+ });
76
+ },
77
+ };
78
+ },
79
+ };