@ryanhelsing/ry-ui 1.0.4 → 1.0.5

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/AGENT.md CHANGED
@@ -85,7 +85,7 @@ Wrap markup in `<ry>` to use unprefixed tags:
85
85
 
86
86
  | Component | Key Attributes | Description |
87
87
  |-----------|---------------|-------------|
88
- | `<ry-card>` | | Bordered card with padding. Put any content inside |
88
+ | `<ry-card>` | `interactive`, `href` | Card container. All cards lift on hover. `interactive` adds click/keyboard + primary border hover. `href` navigates on click |
89
89
  | `<ry-badge>` | `variant="primary\|success\|warning\|danger\|accent"` | Pill badge. Arbitrary color: `style="--ry-badge-color: #8B5CF6"` |
90
90
  | `<ry-alert>` | `type="info\|success\|warning\|danger"` | Alert box with optional `[slot="title"]` |
91
91
  | `<ry-field>` | `label`, `error`, `hint` | Form field wrapper. See [Forms](#forms) |
@@ -200,6 +200,35 @@ document.querySelector('ry-button-group').addEventListener('ry:change', e => {
200
200
  <ry-button size="lg">Large</ry-button>
201
201
  ```
202
202
 
203
+ ### Interactive Card Grid
204
+
205
+ ```html
206
+ <!-- Clickable card grid (e.g., demo index, dashboard) -->
207
+ <ry-grid cols="3">
208
+ <ry-card interactive href="/demos/goap">
209
+ <h3>GOAP</h3>
210
+ <p>Goal-Oriented Action Planning</p>
211
+ </ry-card>
212
+ <ry-card interactive href="/demos/fsm">
213
+ <h3>FSM</h3>
214
+ <p>Finite State Machine</p>
215
+ </ry-card>
216
+ <ry-card interactive href="/demos/bt">
217
+ <h3>Behavior Trees</h3>
218
+ <p>Hierarchical task planning</p>
219
+ </ry-card>
220
+ </ry-grid>
221
+
222
+ <!-- Listen for clicks -->
223
+ <script>
224
+ document.querySelectorAll('ry-card[interactive]').forEach(card => {
225
+ card.addEventListener('ry:click', () => console.log('clicked', card.getAttribute('href')));
226
+ });
227
+ </script>
228
+ ```
229
+
230
+ All cards hover-lift by default. `interactive` adds: cursor pointer, stronger lift, primary border on hover, keyboard (Tab/Enter/Space), and `ry:click` event.
231
+
203
232
  ### Badge with Arbitrary Color
204
233
 
205
234
  ```html
@@ -0,0 +1,17 @@
1
+ /**
2
+ * <ry-card>
3
+ *
4
+ * Card container. CSS-only by default.
5
+ * Add `interactive` attribute for clickable cards with href navigation.
6
+ *
7
+ * Usage:
8
+ * <ry-card>Static content</ry-card>
9
+ * <ry-card interactive href="/demos/goap">Clickable card</ry-card>
10
+ * <ry-card interactive>Emits ry:click on click</ry-card>
11
+ */
12
+ import { RyElement } from '../core/ry-element.js';
13
+ export declare class RyCard extends RyElement {
14
+ #private;
15
+ setup(): void;
16
+ }
17
+ //# sourceMappingURL=ry-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-card.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,MAAO,SAAQ,SAAS;;IACnC,KAAK,IAAI,IAAI;CA8Bd"}
@@ -823,6 +823,23 @@ ry-card {
823
823
  display: block;
824
824
  padding: var(--ry-space-6, 1.5rem);
825
825
  container-type: inline-size;
826
+ transition: transform var(--ry-duration-fast, 100ms) var(--ry-ease, ease);
827
+ }
828
+
829
+ ry-card:hover {
830
+ transform: translateY(-2px);
831
+ }
832
+
833
+ ry-card[interactive] {
834
+ cursor: pointer;
835
+ }
836
+
837
+ ry-card[interactive]:hover {
838
+ transform: translateY(-3px);
839
+ }
840
+
841
+ ry-card[interactive]:active {
842
+ transform: translateY(0);
826
843
  }
827
844
 
828
845
  ry-card h3 {
@@ -680,6 +680,18 @@ ry-card {
680
680
  border: var(--ry-border-width) solid var(--ry-color-border);
681
681
  border-radius: var(--ry-radius-lg);
682
682
  box-shadow: var(--ry-shadow-sm);
683
+ transition: border-color var(--ry-duration-fast) var(--ry-ease),
684
+ box-shadow var(--ry-duration-fast) var(--ry-ease);
685
+ }
686
+
687
+ ry-card:hover {
688
+ border-color: var(--ry-color-border-strong);
689
+ box-shadow: var(--ry-shadow-md);
690
+ }
691
+
692
+ ry-card[interactive]:hover {
693
+ border-color: var(--ry-color-primary);
694
+ box-shadow: var(--ry-shadow-lg);
683
695
  }
684
696
 
685
697
  ry-card h3 {
@@ -1065,6 +1065,23 @@ ry-card {
1065
1065
  display: block;
1066
1066
  padding: var(--ry-space-6, 1.5rem);
1067
1067
  container-type: inline-size;
1068
+ transition: transform var(--ry-duration-fast, 100ms) var(--ry-ease, ease);
1069
+ }
1070
+
1071
+ ry-card:hover {
1072
+ transform: translateY(-2px);
1073
+ }
1074
+
1075
+ ry-card[interactive] {
1076
+ cursor: pointer;
1077
+ }
1078
+
1079
+ ry-card[interactive]:hover {
1080
+ transform: translateY(-3px);
1081
+ }
1082
+
1083
+ ry-card[interactive]:active {
1084
+ transform: translateY(0);
1068
1085
  }
1069
1086
 
1070
1087
  ry-card h3 {
@@ -3733,6 +3750,18 @@ ry-card {
3733
3750
  border: var(--ry-border-width) solid var(--ry-color-border);
3734
3751
  border-radius: var(--ry-radius-lg);
3735
3752
  box-shadow: var(--ry-shadow-sm);
3753
+ transition: border-color var(--ry-duration-fast) var(--ry-ease),
3754
+ box-shadow var(--ry-duration-fast) var(--ry-ease);
3755
+ }
3756
+
3757
+ ry-card:hover {
3758
+ border-color: var(--ry-color-border-strong);
3759
+ box-shadow: var(--ry-shadow-md);
3760
+ }
3761
+
3762
+ ry-card[interactive]:hover {
3763
+ border-color: var(--ry-color-primary);
3764
+ box-shadow: var(--ry-shadow-lg);
3736
3765
  }
3737
3766
 
3738
3767
  ry-card h3 {
package/dist/ry-ui.d.ts CHANGED
@@ -30,6 +30,7 @@ export { RyButton } from './components/ry-button.js';
30
30
  export { RyButtonGroup } from './components/ry-button-group.js';
31
31
  export { RySplit } from './components/ry-split.js';
32
32
  export { RyThemeToggle } from './components/ry-theme-toggle.js';
33
+ export { RyCard } from './components/ry-card.js';
33
34
  export { RyAlert } from './components/ry-alert.js';
34
35
  export { RyField } from './components/ry-field.js';
35
36
  export { RySwitch } from './components/ry-switch.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ry-ui.d.ts","sourceRoot":"","sources":["../src/ts/ry-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ry-ui.d.ts","sourceRoot":"","sources":["../src/ts/ry-ui.ts"],"names":[],"mappings":"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"}