reke-ui 0.1.0 → 0.1.2

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 (57) hide show
  1. package/README.md +2 -0
  2. package/custom-elements.json +216 -116
  3. package/dist/components/reke-alert/reke-alert.js +53 -0
  4. package/dist/components/reke-alert/reke-alert.styles.d.ts.map +1 -1
  5. package/dist/components/reke-alert/reke-alert.styles.js +106 -0
  6. package/dist/components/reke-badge/reke-badge.d.ts +4 -2
  7. package/dist/components/reke-badge/reke-badge.d.ts.map +1 -1
  8. package/dist/components/reke-badge/reke-badge.js +44 -0
  9. package/dist/components/reke-badge/reke-badge.styles.d.ts.map +1 -1
  10. package/dist/components/reke-badge/reke-badge.styles.js +95 -0
  11. package/dist/components/reke-button/reke-button.js +64 -0
  12. package/dist/components/reke-button/reke-button.styles.d.ts.map +1 -1
  13. package/dist/components/reke-button/reke-button.styles.js +229 -0
  14. package/dist/components/reke-card/reke-card.d.ts +7 -0
  15. package/dist/components/reke-card/reke-card.d.ts.map +1 -1
  16. package/dist/components/reke-card/reke-card.js +70 -0
  17. package/dist/components/reke-card/reke-card.styles.d.ts.map +1 -1
  18. package/dist/components/reke-card/reke-card.styles.js +150 -0
  19. package/dist/components/reke-checkbox/reke-checkbox.js +64 -0
  20. package/dist/components/reke-checkbox/reke-checkbox.styles.js +81 -0
  21. package/dist/components/reke-chip/reke-chip.js +70 -0
  22. package/dist/components/reke-chip/reke-chip.styles.d.ts.map +1 -1
  23. package/dist/components/reke-chip/reke-chip.styles.js +125 -0
  24. package/dist/components/reke-date-range/reke-date-range.js +346 -0
  25. package/dist/components/reke-date-range/reke-date-range.styles.js +322 -0
  26. package/dist/components/reke-dialog/reke-dialog.js +90 -0
  27. package/dist/components/reke-dialog/reke-dialog.styles.js +134 -0
  28. package/dist/components/reke-file-upload/reke-file-upload.js +108 -0
  29. package/dist/components/reke-file-upload/reke-file-upload.styles.js +107 -0
  30. package/dist/components/reke-input/reke-input.js +73 -0
  31. package/dist/components/reke-input/reke-input.styles.js +80 -0
  32. package/dist/components/reke-select/reke-select.js +112 -0
  33. package/dist/components/reke-select/reke-select.styles.js +122 -0
  34. package/dist/components/reke-table/reke-table.d.ts +21 -1
  35. package/dist/components/reke-table/reke-table.d.ts.map +1 -1
  36. package/dist/components/reke-table/reke-table.js +191 -0
  37. package/dist/components/reke-table/reke-table.styles.js +207 -0
  38. package/dist/components/reke-textarea/reke-textarea.js +73 -0
  39. package/dist/components/reke-textarea/reke-textarea.styles.js +76 -0
  40. package/dist/components/reke-toast/reke-toast.js +92 -0
  41. package/dist/components/reke-toast/reke-toast.styles.d.ts.map +1 -1
  42. package/dist/components/reke-toast/reke-toast.styles.js +182 -0
  43. package/dist/components/reke-toggle/reke-toggle.js +57 -0
  44. package/dist/components/reke-toggle/reke-toggle.styles.js +71 -0
  45. package/dist/components/reke-tooltip/reke-tooltip.js +67 -0
  46. package/dist/components/reke-tooltip/reke-tooltip.styles.js +67 -0
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +36 -0
  50. package/dist/react.js +79 -64
  51. package/dist/shared/base-element.js +16 -0
  52. package/dist/shared/tailwind-styles.js +6 -0
  53. package/dist/shared/tailwind.css.js +4 -0
  54. package/dist/tokens/reke-tokens.css +23 -0
  55. package/package.json +6 -4
  56. package/dist/reke-chip-Xb0Y_Cqo.js +0 -3358
  57. package/dist/reke-ui.js +0 -20
@@ -0,0 +1,95 @@
1
+ import { tailwindStyles as r } from "../../shared/tailwind-styles.js";
2
+ import { css as o } from "lit";
3
+ const n = [
4
+ r,
5
+ o`
6
+ :host {
7
+ display: inline-block;
8
+ }
9
+
10
+ .badge {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ font-family: var(--reke-font-mono, 'JetBrains Mono', ui-monospace, monospace);
14
+ font-weight: var(--reke-font-weight-medium, 500);
15
+ border: 1px solid transparent;
16
+ line-height: 1;
17
+ white-space: nowrap;
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ /* === Shape === */
22
+
23
+ .badge--pill {
24
+ border-radius: 9999px;
25
+ }
26
+
27
+ .badge--square {
28
+ border-radius: var(--reke-radius, 4px);
29
+ }
30
+
31
+ /* === Sizes === */
32
+
33
+ .badge--sm {
34
+ padding: 2px 8px;
35
+ font-size: 11px;
36
+ }
37
+
38
+ .badge--md {
39
+ padding: 4px 10px;
40
+ font-size: 12px;
41
+ }
42
+
43
+ .badge--lg {
44
+ padding: 5px 14px;
45
+ font-size: 13px;
46
+ }
47
+
48
+ /* === Variants === */
49
+
50
+ .badge--default {
51
+ background-color: var(--reke-color-surface, #1A1A1A);
52
+ color: var(--reke-color-text, #E5E5E5);
53
+ border-color: var(--reke-color-border, #252525);
54
+ }
55
+
56
+ .badge--primary {
57
+ background-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 15%, transparent);
58
+ color: var(--reke-color-primary, #22C55E);
59
+ border-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 30%, transparent);
60
+ }
61
+
62
+ .badge--secondary {
63
+ background-color: color-mix(in srgb, var(--reke-color-secondary, #3B82F6) 15%, transparent);
64
+ color: var(--reke-color-secondary, #3B82F6);
65
+ border-color: color-mix(in srgb, var(--reke-color-secondary, #3B82F6) 30%, transparent);
66
+ }
67
+
68
+ .badge--danger {
69
+ background-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 15%, transparent);
70
+ color: var(--reke-color-danger, #EF4444);
71
+ border-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 30%, transparent);
72
+ }
73
+
74
+ .badge--warning {
75
+ background-color: color-mix(in srgb, var(--reke-color-warning, #F59E0B) 15%, transparent);
76
+ color: var(--reke-color-warning, #F59E0B);
77
+ border-color: color-mix(in srgb, var(--reke-color-warning, #F59E0B) 30%, transparent);
78
+ }
79
+
80
+ .badge--success {
81
+ background-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 15%, transparent);
82
+ color: var(--reke-color-primary, #22C55E);
83
+ border-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 30%, transparent);
84
+ }
85
+
86
+ .badge--outline {
87
+ background-color: transparent;
88
+ color: var(--reke-color-text-ghost, #737373);
89
+ border-color: var(--reke-color-border, #252525);
90
+ }
91
+ `
92
+ ];
93
+ export {
94
+ n as styles
95
+ };
@@ -0,0 +1,64 @@
1
+ import { nothing as d, html as u } from "lit";
2
+ import { property as a, customElement as c } from "lit/decorators.js";
3
+ import { classMap as h } from "lit/directives/class-map.js";
4
+ import { RekeElement as f } from "../../shared/base-element.js";
5
+ import { styles as m } from "./reke-button.styles.js";
6
+ var b = Object.defineProperty, y = Object.getOwnPropertyDescriptor, r = (t, i, l, o) => {
7
+ for (var e = o > 1 ? void 0 : o ? y(i, l) : i, n = t.length - 1, p; n >= 0; n--)
8
+ (p = t[n]) && (e = (o ? p(i, l, e) : p(e)) || e);
9
+ return o && e && b(i, l, e), e;
10
+ };
11
+ let s = class extends f {
12
+ constructor() {
13
+ super(...arguments), this.variant = "primary", this.size = "md", this.disabled = !1, this.loading = !1;
14
+ }
15
+ handleClick(t) {
16
+ if (this.disabled || this.loading) {
17
+ t.preventDefault(), t.stopPropagation();
18
+ return;
19
+ }
20
+ this.emit("reke-click");
21
+ }
22
+ render() {
23
+ const t = {
24
+ button: !0,
25
+ [`button--${this.variant}`]: !0,
26
+ [`button--${this.size}`]: !0,
27
+ "button--loading": this.loading
28
+ };
29
+ return u`
30
+ <button
31
+ part="button"
32
+ class=${h(t)}
33
+ ?disabled=${this.disabled}
34
+ aria-disabled=${this.disabled || this.loading}
35
+ aria-busy=${this.loading}
36
+ @click=${this.handleClick}
37
+ >
38
+ <span class="spinner" aria-hidden="true"></span>
39
+ ${this.variant !== "icon-only" ? u`<slot name="prefix"></slot>` : d}
40
+ <slot></slot>
41
+ ${this.variant !== "icon-only" ? u`<slot name="suffix"></slot>` : d}
42
+ </button>
43
+ `;
44
+ }
45
+ };
46
+ s.styles = m;
47
+ r([
48
+ a({ reflect: !0 })
49
+ ], s.prototype, "variant", 2);
50
+ r([
51
+ a({ reflect: !0 })
52
+ ], s.prototype, "size", 2);
53
+ r([
54
+ a({ type: Boolean, reflect: !0 })
55
+ ], s.prototype, "disabled", 2);
56
+ r([
57
+ a({ type: Boolean, reflect: !0 })
58
+ ], s.prototype, "loading", 2);
59
+ s = r([
60
+ c("reke-button")
61
+ ], s);
62
+ export {
63
+ s as RekeButton
64
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"reke-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/reke-button/reke-button.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,2BAyLlB,CAAC"}
1
+ {"version":3,"file":"reke-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/reke-button/reke-button.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,2BA+NlB,CAAC"}
@@ -0,0 +1,229 @@
1
+ import { tailwindStyles as r } from "../../shared/tailwind-styles.js";
2
+ import { css as o } from "lit";
3
+ const n = [
4
+ r,
5
+ o`
6
+ :host {
7
+ display: inline-block;
8
+ }
9
+
10
+ :host([disabled]) {
11
+ pointer-events: none;
12
+ opacity: 0.5;
13
+ }
14
+
15
+ .button {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ gap: var(--reke-space-xs, 8px);
20
+ border: 1px solid transparent;
21
+ border-radius: var(--reke-radius, 4px);
22
+ font-family: var(--reke-font-mono, 'JetBrains Mono', ui-monospace, monospace);
23
+ font-weight: var(--reke-font-weight-medium, 500);
24
+ cursor: pointer;
25
+ transition:
26
+ background-color var(--reke-transition-fast, 0.12s ease),
27
+ border-color var(--reke-transition-fast, 0.12s ease),
28
+ color var(--reke-transition-fast, 0.12s ease),
29
+ box-shadow var(--reke-transition-normal, 0.2s ease),
30
+ transform var(--reke-transition-normal, 0.2s ease);
31
+ text-decoration: none;
32
+ line-height: 1;
33
+ white-space: nowrap;
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ .button:focus-visible {
38
+ outline: 2px solid var(--reke-color-primary, #22C55E);
39
+ outline-offset: 2px;
40
+ }
41
+
42
+ /* === Sizes === */
43
+
44
+ .button--xs {
45
+ padding: var(--reke-space-2xs, 6px) var(--reke-space-xs, 8px);
46
+ font-size: var(--reke-font-size-2xs, 11px);
47
+ }
48
+
49
+ .button--sm {
50
+ padding: var(--reke-space-xs, 8px) var(--reke-space-md, 16px);
51
+ font-size: var(--reke-font-size-xs, 12px);
52
+ }
53
+
54
+ .button--md {
55
+ padding: var(--reke-space-sm, 12px) var(--reke-space-xl, 24px);
56
+ font-size: var(--reke-font-size-sm, 13px);
57
+ }
58
+
59
+ .button--lg {
60
+ padding: var(--reke-space-md, 16px) var(--reke-space-2xl, 28px);
61
+ font-size: var(--reke-font-size-md, 14px);
62
+ }
63
+
64
+ /* === Variants === */
65
+
66
+ .button--primary {
67
+ background-color: var(--reke-color-primary, #22C55E);
68
+ color: var(--reke-color-on-primary, #0A0A0B);
69
+ border-color: var(--reke-color-primary, #22C55E);
70
+ }
71
+
72
+ .button--primary:hover:not(:disabled) {
73
+ background-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 88%, black);
74
+ border-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 88%, black);
75
+ box-shadow: var(--reke-shadow-glow-primary, 0 0 20px rgba(34, 197, 94, 0.35));
76
+ transform: translateY(-1px);
77
+ }
78
+
79
+ .button--primary:active:not(:disabled) {
80
+ transform: translateY(0);
81
+ box-shadow: none;
82
+ }
83
+
84
+ .button--secondary {
85
+ background-color: var(--reke-color-surface, #1A1A1A);
86
+ color: var(--reke-color-text, #E5E5E5);
87
+ border-color: var(--reke-color-border, #252525);
88
+ }
89
+
90
+ .button--secondary:hover:not(:disabled) {
91
+ background-color: var(--reke-color-surface-hover, #202020);
92
+ border-color: var(--reke-color-border-hover, #3A3A3A);
93
+ color: var(--reke-color-text, #E5E5E5);
94
+ transform: translateY(-1px);
95
+ box-shadow: var(--reke-shadow-lift-sm, 0 4px 16px rgba(0, 0, 0, 0.35));
96
+ }
97
+
98
+ .button--secondary:active:not(:disabled) {
99
+ transform: translateY(0);
100
+ box-shadow: none;
101
+ }
102
+
103
+ .button--ghost {
104
+ background-color: transparent;
105
+ color: var(--reke-color-text-ghost, #737373);
106
+ border-color: transparent;
107
+ }
108
+
109
+ .button--ghost:hover:not(:disabled) {
110
+ background-color: var(--reke-color-surface, #1A1A1A);
111
+ color: var(--reke-color-text, #E5E5E5);
112
+ border-color: var(--reke-color-border-subtle, #1F1F1F);
113
+ }
114
+
115
+ .button--danger {
116
+ background-color: var(--reke-color-danger, #EF4444);
117
+ color: #FFFFFF;
118
+ border-color: var(--reke-color-danger, #EF4444);
119
+ }
120
+
121
+ .button--danger:hover:not(:disabled) {
122
+ background-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 88%, black);
123
+ border-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 88%, black);
124
+ box-shadow: var(--reke-shadow-glow-danger, 0 0 20px rgba(239, 68, 68, 0.35));
125
+ transform: translateY(-1px);
126
+ }
127
+
128
+ .button--danger:active:not(:disabled) {
129
+ transform: translateY(0);
130
+ box-shadow: none;
131
+ }
132
+
133
+ .button--danger-outline {
134
+ background-color: transparent;
135
+ color: var(--reke-color-danger, #EF4444);
136
+ border-color: var(--reke-color-danger, #EF4444);
137
+ }
138
+
139
+ .button--danger-outline:hover:not(:disabled) {
140
+ background-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 10%, transparent);
141
+ box-shadow: var(--reke-shadow-glow-danger, 0 0 20px rgba(239, 68, 68, 0.35));
142
+ transform: translateY(-1px);
143
+ }
144
+
145
+ .button--danger-outline:active:not(:disabled) {
146
+ transform: translateY(0);
147
+ box-shadow: none;
148
+ }
149
+
150
+ .button--icon-only {
151
+ background-color: var(--reke-color-surface, #1A1A1A);
152
+ color: var(--reke-color-text, #E5E5E5);
153
+ border-color: var(--reke-color-border, #252525);
154
+ }
155
+
156
+ .button--icon-only:hover:not(:disabled) {
157
+ background-color: var(--reke-color-surface-hover, #202020);
158
+ border-color: var(--reke-color-border-hover, #3A3A3A);
159
+ color: var(--reke-color-text, #E5E5E5);
160
+ }
161
+
162
+ .button--icon-only.button--xs {
163
+ padding: var(--reke-space-2xs, 6px);
164
+ }
165
+
166
+ .button--icon-only.button--sm {
167
+ padding: var(--reke-space-xs, 8px);
168
+ }
169
+
170
+ .button--icon-only.button--md {
171
+ padding: var(--reke-space-sm, 12px);
172
+ }
173
+
174
+ .button--icon-only.button--lg {
175
+ padding: var(--reke-space-md, 16px);
176
+ }
177
+
178
+ /* === Loading === */
179
+
180
+ .button--loading {
181
+ position: relative;
182
+ color: transparent !important;
183
+ pointer-events: none;
184
+ }
185
+
186
+ .spinner {
187
+ display: none;
188
+ }
189
+
190
+ .button--loading .spinner {
191
+ display: block;
192
+ position: absolute;
193
+ width: 1em;
194
+ height: 1em;
195
+ border: 2px solid currentColor;
196
+ border-right-color: transparent;
197
+ border-radius: 50%;
198
+ animation: spin 0.6s linear infinite;
199
+ color: inherit;
200
+ }
201
+
202
+ .button--loading.button--primary .spinner {
203
+ color: var(--reke-color-on-primary, #0A0A0B);
204
+ }
205
+
206
+ .button--loading.button--secondary .spinner,
207
+ .button--loading.button--ghost .spinner,
208
+ .button--loading.button--icon-only .spinner {
209
+ color: var(--reke-color-text, #E5E5E5);
210
+ }
211
+
212
+ .button--loading.button--danger .spinner {
213
+ color: #FFFFFF;
214
+ }
215
+
216
+ .button--loading.button--danger-outline .spinner {
217
+ color: var(--reke-color-danger, #EF4444);
218
+ }
219
+
220
+ @keyframes spin {
221
+ to {
222
+ transform: rotate(360deg);
223
+ }
224
+ }
225
+ `
226
+ ];
227
+ export {
228
+ n as styles
229
+ };
@@ -1,6 +1,7 @@
1
1
  import { RekeElement } from '../../shared/base-element.js';
2
2
  export type CardVariant = 'default' | 'elevated' | 'outlined';
3
3
  export type CardPadding = 'none' | 'sm' | 'md' | 'lg';
4
+ export type CardAccent = 'none' | 'primary' | 'secondary' | 'danger' | 'warning';
4
5
  /**
5
6
  * @tag reke-card
6
7
  * @summary A card container component with multiple variants and padding options.
@@ -13,11 +14,17 @@ export type CardPadding = 'none' | 'sm' | 'md' | 'lg';
13
14
  * @cssprop [--reke-color-border=#252525] - Card border color.
14
15
  * @cssprop [--reke-shadow-md=0 4px 6px rgba(0,0,0,0.3)] - Elevated variant shadow.
15
16
  * @cssprop [--reke-radius=4px] - Card border radius.
17
+ * @cssprop [--reke-shadow-lift] - Shadow applied on hover when interactive.
18
+ * @cssprop [--reke-shadow-glow-primary] - Glow shadow for accent=primary on hover.
16
19
  */
17
20
  export declare class RekeCard extends RekeElement {
18
21
  static styles: import("lit").CSSResult[];
19
22
  variant: CardVariant;
20
23
  padding: CardPadding;
24
+ /** Enables hover lift + border glow effect. */
25
+ interactive: boolean;
26
+ /** Accent color shown on hover border (requires interactive=true). */
27
+ accent: CardAccent;
21
28
  private _hasHeader;
22
29
  private _hasFooter;
23
30
  private _onSlotChange;
@@ -1 +1 @@
1
- {"version":3,"file":"reke-card.d.ts","sourceRoot":"","sources":["../../../src/components/reke-card/reke-card.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,qBACa,QAAS,SAAQ,WAAW;IACvC,OAAgB,MAAM,4BAAU;IAGhC,OAAO,EAAE,WAAW,CAAa;IAGjC,OAAO,EAAE,WAAW,CAAQ;IAEnB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,aAAa;IAOZ,MAAM;CAyBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"reke-card.d.ts","sourceRoot":"","sources":["../../../src/components/reke-card/reke-card.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjF;;;;;;;;;;;;;;GAcG;AACH,qBACa,QAAS,SAAQ,WAAW;IACvC,OAAgB,MAAM,4BAAU;IAGhC,OAAO,EAAE,WAAW,CAAa;IAGjC,OAAO,EAAE,WAAW,CAAQ;IAE5B,+CAA+C;IAE/C,WAAW,UAAS;IAEpB,sEAAsE;IAEtE,MAAM,EAAE,UAAU,CAAU;IAEnB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,aAAa;IAOZ,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KAEvB;CACF"}
@@ -0,0 +1,70 @@
1
+ import { html as n } from "lit";
2
+ import { property as i, state as d, customElement as p } from "lit/decorators.js";
3
+ import { classMap as f } from "lit/directives/class-map.js";
4
+ import { RekeElement as v } from "../../shared/base-element.js";
5
+ import { styles as m } from "./reke-card.styles.js";
6
+ var _ = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (a, e, l, r) => {
7
+ for (var s = r > 1 ? void 0 : r ? g(e, l) : e, c = a.length - 1, h; c >= 0; c--)
8
+ (h = a[c]) && (s = (r ? h(e, l, s) : h(s)) || s);
9
+ return r && s && _(e, l, s), s;
10
+ };
11
+ let t = class extends v {
12
+ constructor() {
13
+ super(...arguments), this.variant = "default", this.padding = "md", this.interactive = !1, this.accent = "none", this._hasHeader = !1, this._hasFooter = !1;
14
+ }
15
+ _onSlotChange(a, e) {
16
+ const r = e.target.assignedNodes({ flatten: !0 }).length > 0;
17
+ a === "header" ? this._hasHeader = r : this._hasFooter = r;
18
+ }
19
+ render() {
20
+ const a = {
21
+ card: !0,
22
+ [`card--${this.variant}`]: !0,
23
+ [`card--padding-${this.padding}`]: !0,
24
+ "card--interactive": this.interactive,
25
+ [`card--accent-${this.accent}`]: this.accent !== "none"
26
+ };
27
+ return n`
28
+ <div class=${f(a)}>
29
+ ${this._hasHeader ? n`
30
+ <div class="card-header">
31
+ <slot name="header" @slotchange=${(e) => this._onSlotChange("header", e)}></slot>
32
+ </div>
33
+ ` : n`<slot name="header" @slotchange=${(e) => this._onSlotChange("header", e)} style="display:none"></slot>`}
34
+ <div class="card-body">
35
+ <slot></slot>
36
+ </div>
37
+ ${this._hasFooter ? n`
38
+ <div class="card-footer">
39
+ <slot name="footer" @slotchange=${(e) => this._onSlotChange("footer", e)}></slot>
40
+ </div>
41
+ ` : n`<slot name="footer" @slotchange=${(e) => this._onSlotChange("footer", e)} style="display:none"></slot>`}
42
+ </div>
43
+ `;
44
+ }
45
+ };
46
+ t.styles = m;
47
+ o([
48
+ i({ reflect: !0 })
49
+ ], t.prototype, "variant", 2);
50
+ o([
51
+ i({ reflect: !0 })
52
+ ], t.prototype, "padding", 2);
53
+ o([
54
+ i({ type: Boolean, reflect: !0 })
55
+ ], t.prototype, "interactive", 2);
56
+ o([
57
+ i({ reflect: !0 })
58
+ ], t.prototype, "accent", 2);
59
+ o([
60
+ d()
61
+ ], t.prototype, "_hasHeader", 2);
62
+ o([
63
+ d()
64
+ ], t.prototype, "_hasFooter", 2);
65
+ t = o([
66
+ p("reke-card")
67
+ ], t);
68
+ export {
69
+ t as RekeCard
70
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"reke-card.styles.d.ts","sourceRoot":"","sources":["../../../src/components/reke-card/reke-card.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,2BA6FlB,CAAC"}
1
+ {"version":3,"file":"reke-card.styles.d.ts","sourceRoot":"","sources":["../../../src/components/reke-card/reke-card.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,2BAgJlB,CAAC"}
@@ -0,0 +1,150 @@
1
+ import { tailwindStyles as r } from "../../shared/tailwind-styles.js";
2
+ import { css as a } from "lit";
3
+ const e = [
4
+ r,
5
+ a`
6
+ :host {
7
+ display: block;
8
+ }
9
+
10
+ .card {
11
+ border-radius: var(--reke-radius, 4px);
12
+ font-family: var(--reke-font-mono, 'JetBrains Mono', ui-monospace, monospace);
13
+ overflow: hidden;
14
+ transition:
15
+ border-color var(--reke-transition-normal, 0.2s ease),
16
+ box-shadow var(--reke-transition-normal, 0.2s ease),
17
+ transform var(--reke-transition-normal, 0.2s ease);
18
+ }
19
+
20
+ /* === Variants === */
21
+
22
+ .card--default {
23
+ background: var(--reke-color-surface, #1A1A1A);
24
+ border: 1px solid var(--reke-color-border, #252525);
25
+ }
26
+
27
+ .card--elevated {
28
+ background: var(--reke-color-surface, #1A1A1A);
29
+ border: 1px solid var(--reke-color-border, #252525);
30
+ box-shadow: var(--reke-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.3));
31
+ }
32
+
33
+ .card--outlined {
34
+ background: transparent;
35
+ border: 1px solid var(--reke-color-border, #252525);
36
+ }
37
+
38
+ /* === Interactive hover === */
39
+
40
+ .card--interactive {
41
+ cursor: pointer;
42
+ }
43
+
44
+ .card--interactive:hover {
45
+ transform: translateY(-2px);
46
+ box-shadow: var(--reke-shadow-lift, 0 8px 32px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2));
47
+ border-color: var(--reke-color-border-hover, #3A3A3A);
48
+ }
49
+
50
+ .card--interactive:active {
51
+ transform: translateY(0);
52
+ box-shadow: var(--reke-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.3));
53
+ }
54
+
55
+ /* === Accent hover borders === */
56
+
57
+ .card--interactive.card--accent-primary:hover {
58
+ border-color: color-mix(in srgb, var(--reke-color-primary, #22C55E) 50%, transparent);
59
+ box-shadow:
60
+ var(--reke-shadow-lift, 0 8px 32px rgba(0, 0, 0, 0.4)),
61
+ var(--reke-shadow-glow-primary, 0 0 20px rgba(34, 197, 94, 0.15));
62
+ }
63
+
64
+ .card--interactive.card--accent-secondary:hover {
65
+ border-color: color-mix(in srgb, var(--reke-color-secondary, #3B82F6) 50%, transparent);
66
+ box-shadow:
67
+ var(--reke-shadow-lift, 0 8px 32px rgba(0, 0, 0, 0.4)),
68
+ var(--reke-shadow-glow-secondary, 0 0 20px rgba(59, 130, 246, 0.15));
69
+ }
70
+
71
+ .card--interactive.card--accent-danger:hover {
72
+ border-color: color-mix(in srgb, var(--reke-color-danger, #EF4444) 50%, transparent);
73
+ box-shadow:
74
+ var(--reke-shadow-lift, 0 8px 32px rgba(0, 0, 0, 0.4)),
75
+ var(--reke-shadow-glow-danger, 0 0 20px rgba(239, 68, 68, 0.15));
76
+ }
77
+
78
+ .card--interactive.card--accent-warning:hover {
79
+ border-color: color-mix(in srgb, var(--reke-color-warning, #F59E0B) 50%, transparent);
80
+ box-shadow:
81
+ var(--reke-shadow-lift, 0 8px 32px rgba(0, 0, 0, 0.4)),
82
+ 0 0 20px color-mix(in srgb, var(--reke-color-warning, #F59E0B) 15%, transparent);
83
+ }
84
+
85
+ /* === Padding (applied to .card-body) === */
86
+
87
+ .card--padding-none .card-body {
88
+ padding: 0;
89
+ }
90
+
91
+ .card--padding-sm .card-body {
92
+ padding: 12px;
93
+ }
94
+
95
+ .card--padding-md .card-body {
96
+ padding: 16px;
97
+ }
98
+
99
+ .card--padding-lg .card-body {
100
+ padding: 24px;
101
+ }
102
+
103
+ /* === Header === */
104
+
105
+ .card-header {
106
+ border-bottom: 1px solid var(--reke-color-border, #252525);
107
+ }
108
+
109
+ .card--padding-none .card-header {
110
+ padding: 0;
111
+ }
112
+
113
+ .card--padding-sm .card-header {
114
+ padding: 12px;
115
+ }
116
+
117
+ .card--padding-md .card-header {
118
+ padding: 16px;
119
+ }
120
+
121
+ .card--padding-lg .card-header {
122
+ padding: 24px;
123
+ }
124
+
125
+ /* === Footer === */
126
+
127
+ .card-footer {
128
+ border-top: 1px solid var(--reke-color-border, #252525);
129
+ }
130
+
131
+ .card--padding-none .card-footer {
132
+ padding: 0;
133
+ }
134
+
135
+ .card--padding-sm .card-footer {
136
+ padding: 12px;
137
+ }
138
+
139
+ .card--padding-md .card-footer {
140
+ padding: 16px;
141
+ }
142
+
143
+ .card--padding-lg .card-footer {
144
+ padding: 24px;
145
+ }
146
+ `
147
+ ];
148
+ export {
149
+ e as styles
150
+ };