@ryanhelsing/ry-ui 1.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.
Files changed (63) hide show
  1. package/README.md +223 -0
  2. package/dist/components/ry-accordion.d.ts +24 -0
  3. package/dist/components/ry-accordion.d.ts.map +1 -0
  4. package/dist/components/ry-alert.d.ts +19 -0
  5. package/dist/components/ry-alert.d.ts.map +1 -0
  6. package/dist/components/ry-button.d.ts +19 -0
  7. package/dist/components/ry-button.d.ts.map +1 -0
  8. package/dist/components/ry-code.d.ts +27 -0
  9. package/dist/components/ry-code.d.ts.map +1 -0
  10. package/dist/components/ry-color-input.d.ts +28 -0
  11. package/dist/components/ry-color-input.d.ts.map +1 -0
  12. package/dist/components/ry-color-picker.d.ts +52 -0
  13. package/dist/components/ry-color-picker.d.ts.map +1 -0
  14. package/dist/components/ry-drawer.d.ts +28 -0
  15. package/dist/components/ry-drawer.d.ts.map +1 -0
  16. package/dist/components/ry-dropdown.d.ts +24 -0
  17. package/dist/components/ry-dropdown.d.ts.map +1 -0
  18. package/dist/components/ry-example.d.ts +23 -0
  19. package/dist/components/ry-example.d.ts.map +1 -0
  20. package/dist/components/ry-field.d.ts +18 -0
  21. package/dist/components/ry-field.d.ts.map +1 -0
  22. package/dist/components/ry-icon.d.ts +27 -0
  23. package/dist/components/ry-icon.d.ts.map +1 -0
  24. package/dist/components/ry-knob.d.ts +27 -0
  25. package/dist/components/ry-knob.d.ts.map +1 -0
  26. package/dist/components/ry-modal.d.ts +23 -0
  27. package/dist/components/ry-modal.d.ts.map +1 -0
  28. package/dist/components/ry-select.d.ts +29 -0
  29. package/dist/components/ry-select.d.ts.map +1 -0
  30. package/dist/components/ry-slider.d.ts +30 -0
  31. package/dist/components/ry-slider.d.ts.map +1 -0
  32. package/dist/components/ry-switch.d.ts +22 -0
  33. package/dist/components/ry-switch.d.ts.map +1 -0
  34. package/dist/components/ry-tabs.d.ts +21 -0
  35. package/dist/components/ry-tabs.d.ts.map +1 -0
  36. package/dist/components/ry-theme-toggle.d.ts +21 -0
  37. package/dist/components/ry-theme-toggle.d.ts.map +1 -0
  38. package/dist/components/ry-toast.d.ts +31 -0
  39. package/dist/components/ry-toast.d.ts.map +1 -0
  40. package/dist/components/ry-toggle-button.d.ts +31 -0
  41. package/dist/components/ry-toggle-button.d.ts.map +1 -0
  42. package/dist/components/ry-tooltip.d.ts +23 -0
  43. package/dist/components/ry-tooltip.d.ts.map +1 -0
  44. package/dist/core/ry-element.d.ts +66 -0
  45. package/dist/core/ry-element.d.ts.map +1 -0
  46. package/dist/core/ry-icons.d.ts +38 -0
  47. package/dist/core/ry-icons.d.ts.map +1 -0
  48. package/dist/core/ry-transform.d.ts +35 -0
  49. package/dist/core/ry-transform.d.ts.map +1 -0
  50. package/dist/css/ry-base.css +155 -0
  51. package/dist/css/ry-components.css +1195 -0
  52. package/dist/css/ry-layout.css +240 -0
  53. package/dist/css/ry-structure.css +1737 -0
  54. package/dist/css/ry-theme.css +1433 -0
  55. package/dist/css/ry-tokens.css +145 -0
  56. package/dist/css/ry-ui.css +1207 -0
  57. package/dist/ry-ui.d.ts +54 -0
  58. package/dist/ry-ui.d.ts.map +1 -0
  59. package/dist/ry-ui.js +2433 -0
  60. package/dist/ry-ui.js.map +1 -0
  61. package/dist/types.d.ts +33 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/package.json +40 -0
@@ -0,0 +1,30 @@
1
+ /**
2
+ * <ry-slider>
3
+ *
4
+ * Range slider component with single or dual handles.
5
+ *
6
+ * Usage:
7
+ * <ry-slider min="0" max="100" value="50"></ry-slider>
8
+ * <ry-slider min="0" max="100" start="25" end="75" range labeled></ry-slider>
9
+ */
10
+ import { RyElement } from '../core/ry-element.js';
11
+ export declare class RySlider extends RyElement {
12
+ #private;
13
+ static observedAttributes: readonly ["min", "max", "step", "value", "start", "end", "disabled"];
14
+ setup(): void;
15
+ get min(): number;
16
+ set min(val: number);
17
+ get max(): number;
18
+ set max(val: number);
19
+ get step(): number;
20
+ set step(val: number);
21
+ get value(): number;
22
+ set value(val: number);
23
+ get start(): number;
24
+ set start(val: number);
25
+ get end(): number;
26
+ set end(val: number);
27
+ get disabled(): boolean;
28
+ set disabled(val: boolean);
29
+ }
30
+ //# sourceMappingURL=ry-slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-slider.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-slider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,QAAS,SAAQ,SAAS;;IAQrC,MAAM,CAAC,kBAAkB,uEAAwE;IAEjG,KAAK,IAAI,IAAI;IAoYb,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAElB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAEpB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAEpB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAElB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAMxB;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * <ry-switch>
3
+ *
4
+ * Toggle switch component.
5
+ *
6
+ * Usage:
7
+ * <ry-switch name="darkMode">Dark mode</ry-switch>
8
+ * <ry-switch name="notifications" checked>Enable notifications</ry-switch>
9
+ *
10
+ * JS uses data-ry-target for queries, CSS uses classes for styling.
11
+ */
12
+ import { RyElement } from '../core/ry-element.js';
13
+ export declare class RySwitch extends RyElement {
14
+ #private;
15
+ static observedAttributes: readonly ["checked", "disabled"];
16
+ setup(): void;
17
+ get checked(): boolean;
18
+ set checked(value: boolean);
19
+ get value(): string;
20
+ set value(val: string);
21
+ }
22
+ //# sourceMappingURL=ry-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-switch.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-switch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,qBAAa,QAAS,SAAQ,SAAS;;IAGrC,MAAM,CAAC,kBAAkB,mCAAoC;IAE7D,KAAK,IAAI,IAAI;IAqEb,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAWzB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAIpB;CACF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * <ry-tabs>
3
+ *
4
+ * Tab interface with keyboard navigation.
5
+ *
6
+ * Minimal markup (recommended):
7
+ * <ry-tabs>
8
+ * <ry-tab title="Tab 1" active>Content 1</ry-tab>
9
+ * <ry-tab title="Tab 2">Content 2</ry-tab>
10
+ * </ry-tabs>
11
+ *
12
+ * JS uses data-ry-target for queries, CSS uses classes for styling.
13
+ */
14
+ import { RyElement } from '../core/ry-element.js';
15
+ export declare class RyTabs extends RyElement {
16
+ #private;
17
+ setup(): void;
18
+ select(index: number): void;
19
+ get selectedIndex(): number;
20
+ }
21
+ //# sourceMappingURL=ry-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-tabs.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD,qBAAa,MAAO,SAAQ,SAAS;;IACnC,KAAK,IAAI,IAAI;IAiIb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA8B3B,IAAI,aAAa,IAAI,MAAM,CAG1B;CACF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * <ry-theme-toggle>
3
+ *
4
+ * Simple theme switcher button.
5
+ * Cycles through available themes or toggles light/dark.
6
+ *
7
+ * Usage:
8
+ * <ry-theme-toggle></ry-theme-toggle>
9
+ * <ry-theme-toggle themes="light,dark,ocean"></ry-theme-toggle>
10
+ *
11
+ * JS uses data-ry-target for queries, CSS uses classes for styling.
12
+ */
13
+ import { RyElement } from '../core/ry-element.js';
14
+ export declare class RyThemeToggle extends RyElement {
15
+ #private;
16
+ setup(): void;
17
+ toggle(): void;
18
+ get theme(): string;
19
+ set theme(value: string);
20
+ }
21
+ //# sourceMappingURL=ry-theme-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-theme-toggle.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-theme-toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMlD,qBAAa,aAAc,SAAQ,SAAS;;IAI1C,KAAK,IAAI,IAAI;IAiCb,MAAM,IAAI,IAAI;IAed,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAWtB;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * <ry-toast>
3
+ *
4
+ * Toast notification component with static API.
5
+ *
6
+ * Usage (declarative):
7
+ * <ry-toast variant="success">Saved successfully!</ry-toast>
8
+ *
9
+ * Usage (programmatic):
10
+ * RyToast.success('Saved!');
11
+ * RyToast.error('Failed to save');
12
+ * RyToast.info('Processing...');
13
+ * RyToast.warning('Are you sure?');
14
+ *
15
+ * JS and structure CSS use data-ry-target, theme CSS uses classes.
16
+ */
17
+ import { RyElement } from '../core/ry-element.js';
18
+ import type { ToastOptions } from '../types.js';
19
+ export declare class RyToast extends RyElement {
20
+ #private;
21
+ static observedAttributes: readonly ["variant", "duration"];
22
+ static show(options: ToastOptions): RyToast;
23
+ static success(message: string, duration?: number): RyToast;
24
+ static error(message: string, duration?: number): RyToast;
25
+ static info(message: string, duration?: number): RyToast;
26
+ static warning(message: string, duration?: number): RyToast;
27
+ setup(): void;
28
+ dismiss(): void;
29
+ teardown(): void;
30
+ }
31
+ //# sourceMappingURL=ry-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-toast.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-toast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAI9D,qBAAa,OAAQ,SAAQ,SAAS;;IAGpC,MAAM,CAAC,kBAAkB,mCAAoC;IAgB7D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAe3C,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAI3D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAI3D,KAAK,IAAI,IAAI;IAgDb,OAAO,IAAI,IAAI;IAgBf,QAAQ,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * <ry-toggle-button>
3
+ *
4
+ * Standalone toggle button that works as part of a group via shared `name` attribute.
5
+ * Buttons with the same name behave like radio buttons - only one can be pressed at a time.
6
+ *
7
+ * Usage:
8
+ * <ry-toggle-button name="view" value="list" icon="list"></ry-toggle-button>
9
+ * <ry-toggle-button name="view" value="grid" icon="grid" pressed></ry-toggle-button>
10
+ *
11
+ * Conflict detection:
12
+ * Warns in console if same-name buttons span different form/section/fieldset containers.
13
+ */
14
+ import { RyElement } from '../core/ry-element.js';
15
+ export declare class RyToggleButton extends RyElement {
16
+ #private;
17
+ static observedAttributes: readonly ["pressed", "disabled", "name", "value"];
18
+ setup(): void;
19
+ teardown(): void;
20
+ get pressed(): boolean;
21
+ set pressed(value: boolean);
22
+ get disabled(): boolean;
23
+ set disabled(value: boolean);
24
+ get name(): string;
25
+ set name(value: string);
26
+ get value(): string;
27
+ set value(val: string);
28
+ get icon(): string;
29
+ set icon(val: string);
30
+ }
31
+ //# sourceMappingURL=ry-toggle-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-toggle-button.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-toggle-button.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAgElD,qBAAa,cAAe,SAAQ,SAAS;;IAC3C,MAAM,CAAC,kBAAkB,oDAAqD;IAI9E,KAAK,IAAI,IAAI;IAiBb,QAAQ,IAAI,IAAI;IAmEhB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAmBzB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAU1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAYrB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAEnB;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * <ry-tooltip>
3
+ *
4
+ * Tooltip component that shows on hover/focus.
5
+ *
6
+ * Usage:
7
+ * <ry-tooltip content="Save your changes">
8
+ * <ry-button>Save</ry-button>
9
+ * </ry-tooltip>
10
+ *
11
+ * <ry-tooltip content="Delete item" position="bottom">
12
+ * <ry-button variant="danger">Delete</ry-button>
13
+ * </ry-tooltip>
14
+ *
15
+ * JS uses data-ry-target for queries, CSS uses classes for styling.
16
+ */
17
+ import { RyElement } from '../core/ry-element.js';
18
+ export declare class RyTooltip extends RyElement {
19
+ #private;
20
+ setup(): void;
21
+ teardown(): void;
22
+ }
23
+ //# sourceMappingURL=ry-tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-tooltip.d.ts","sourceRoot":"","sources":["../../src/ts/components/ry-tooltip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMlD,qBAAa,SAAU,SAAQ,SAAS;;IAKtC,KAAK,IAAI,IAAI;IAuEb,QAAQ,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * RyElement - Base class for all ry-ui components
3
+ *
4
+ * Provides:
5
+ * - Lifecycle hooks with auto-cleanup
6
+ * - Event helper methods
7
+ * - State management via data attributes
8
+ * - DOM query helpers
9
+ */
10
+ export declare class RyElement extends HTMLElement {
11
+ #private;
12
+ constructor();
13
+ /**
14
+ * Called when element is added to DOM.
15
+ * Override setup() in subclass instead of this.
16
+ */
17
+ connectedCallback(): void;
18
+ /**
19
+ * Called when element is removed from DOM.
20
+ * Automatically cleans up event listeners and observers.
21
+ */
22
+ disconnectedCallback(): void;
23
+ /**
24
+ * Override in subclass for component initialization
25
+ */
26
+ setup?(): void;
27
+ /**
28
+ * Override in subclass for cleanup
29
+ */
30
+ teardown?(): void;
31
+ /**
32
+ * Add event listener with automatic cleanup on disconnect.
33
+ */
34
+ on<K extends keyof HTMLElementEventMap>(target: EventTarget, event: K, handler: (e: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): (e: HTMLElementEventMap[K]) => void;
35
+ on(target: EventTarget, event: string, handler: EventListener, options?: AddEventListenerOptions): EventListener;
36
+ /**
37
+ * Emit a custom event with ry: prefix.
38
+ */
39
+ emit<T = void>(name: string, detail?: T, options?: CustomEventInit): boolean;
40
+ /**
41
+ * Get/set component state via data attribute.
42
+ */
43
+ get state(): string;
44
+ set state(value: string);
45
+ /**
46
+ * Query within this element.
47
+ */
48
+ $<E extends Element = Element>(selector: string): E | null;
49
+ /**
50
+ * Query all within this element.
51
+ */
52
+ $$<E extends Element = Element>(selector: string): E[];
53
+ /**
54
+ * Setup a MutationObserver on this element.
55
+ */
56
+ observe(callback: MutationCallback, options?: MutationObserverInit): void;
57
+ /**
58
+ * Wait for next animation frame.
59
+ */
60
+ nextFrame(): Promise<number>;
61
+ /**
62
+ * Trap focus within a container (for modals, dropdowns).
63
+ */
64
+ trapFocus(container: HTMLElement): void;
65
+ }
66
+ //# sourceMappingURL=ry-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-element.d.ts","sourceRoot":"","sources":["../../src/ts/core/ry-element.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,qBAAa,SAAU,SAAQ,WAAW;;;IAWxC;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAQzB;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAe5B;;OAEG;IACH,KAAK,CAAC,IAAI,IAAI;IAEd;;OAEG;IACH,QAAQ,CAAC,IAAI,IAAI;IAEjB;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,uBAAuB,GAChC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI;IAEtC,EAAE,CACA,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,uBAAuB,GAChC,aAAa;IAkBhB;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO;IAUhF;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAMtB;IAED;;OAEG;IACH,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI1D;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;IAItD;;OAEG;IACH,OAAO,CACL,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,oBAAyD,GACjE,IAAI;IASP;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAmCxC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ry-ui Icon Registry
3
+ *
4
+ * System icons used by ry-ui components.
5
+ * Users can override any icon by calling registerIcon() or registerIcons().
6
+ *
7
+ * Usage:
8
+ * import { getIcon, registerIcon } from 'ry-ui';
9
+ *
10
+ * // Get an icon
11
+ * const svg = getIcon('close');
12
+ *
13
+ * // Override a system icon
14
+ * registerIcon('close', '<svg>...custom...</svg>');
15
+ *
16
+ * // Override multiple icons
17
+ * registerIcons({
18
+ * 'close': '<svg>...</svg>',
19
+ * 'check': '<svg>...</svg>',
20
+ * });
21
+ */
22
+ /**
23
+ * Get an icon SVG string by name
24
+ */
25
+ export declare function getIcon(name: string): string;
26
+ /**
27
+ * Register or override a single icon
28
+ */
29
+ export declare function registerIcon(name: string, svg: string): void;
30
+ /**
31
+ * Register or override multiple icons at once
32
+ */
33
+ export declare function registerIcons(newIcons: Record<string, string>): void;
34
+ /**
35
+ * Get all registered icon names
36
+ */
37
+ export declare function getIconNames(): string[];
38
+ //# sourceMappingURL=ry-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-icons.d.ts","sourceRoot":"","sources":["../../src/ts/core/ry-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmFH;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEpE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * <ry> Transform Wrapper
3
+ *
4
+ * Allows clean, unprefixed markup inside <ry> tags.
5
+ * Converts <accordion> to <ry-accordion>, etc.
6
+ *
7
+ * Usage:
8
+ * <ry>
9
+ * <accordion>
10
+ * <accordion-item title="Foo">Content</accordion-item>
11
+ * </accordion>
12
+ * </ry>
13
+ *
14
+ * Or with <template ry>:
15
+ * <template ry>
16
+ * <accordion>...</accordion>
17
+ * </template>
18
+ *
19
+ * Both prefixed and unprefixed work together:
20
+ * <ry>
21
+ * <accordion>
22
+ * <ry-accordion-item>Already prefixed, unchanged</ry-accordion-item>
23
+ * <accordion-item>Gets transformed</accordion-item>
24
+ * </accordion>
25
+ * </ry>
26
+ */
27
+ /**
28
+ * Transform unprefixed markup to ry- prefixed
29
+ */
30
+ export declare function transform(html: string): string;
31
+ /**
32
+ * Process all <ry> wrappers and <template ry> blocks
33
+ */
34
+ export declare function processTransforms(): void;
35
+ //# sourceMappingURL=ry-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ry-transform.d.ts","sourceRoot":"","sources":["../../src/ts/core/ry-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwCH;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAgBxC"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * ry-ui Base Styles
3
+ *
4
+ * Reset and base element defaults.
5
+ * Custom element display modes.
6
+ */
7
+
8
+ /* ═══════════════════════════════════════════════════════════════
9
+ TRANSFORM WRAPPER (FOUC prevention)
10
+ The <ry> wrapper is hidden until JS transforms and removes it.
11
+ CSS loads before JS, so content stays hidden until ready.
12
+ ═══════════════════════════════════════════════════════════════ */
13
+
14
+ ry {
15
+ display: none;
16
+ }
17
+
18
+ /* ═══════════════════════════════════════════════════════════════
19
+ MINIMAL RESET
20
+ ═══════════════════════════════════════════════════════════════ */
21
+
22
+ html {
23
+ background-color: var(--ry-color-bg);
24
+ }
25
+
26
+ body {
27
+ margin: 0;
28
+ padding: 0;
29
+ }
30
+
31
+ /* ═══════════════════════════════════════════════════════════════
32
+ BOX SIZING RESET (scoped to ry- elements)
33
+ ═══════════════════════════════════════════════════════════════ */
34
+
35
+ [class^="ry-"],
36
+ [class*=" ry-"],
37
+ ry-page, ry-header, ry-main, ry-footer, ry-section, ry-aside,
38
+ ry-grid, ry-stack, ry-cluster, ry-split, ry-center,
39
+ ry-card, ry-accordion, ry-modal, ry-tabs, ry-dropdown,
40
+ ry-button, ry-badge, ry-alert, ry-field, ry-nav, ry-logo, ry-actions,
41
+ ry-accordion-item, ry-tab, ry-menu, ry-menu-item, ry-divider,
42
+ ry-theme-toggle {
43
+ box-sizing: border-box;
44
+ }
45
+
46
+ [class^="ry-"] *,
47
+ [class*=" ry-"] *,
48
+ ry-page *, ry-header *, ry-main *, ry-footer *, ry-section *,
49
+ ry-card *, ry-accordion *, ry-modal *, ry-tabs *, ry-dropdown * {
50
+ box-sizing: inherit;
51
+ }
52
+
53
+ /* ═══════════════════════════════════════════════════════════════
54
+ CUSTOM ELEMENT DISPLAY DEFAULTS
55
+ ═══════════════════════════════════════════════════════════════ */
56
+
57
+ /* Block elements */
58
+ ry-page,
59
+ ry-header,
60
+ ry-main,
61
+ ry-footer,
62
+ ry-section,
63
+ ry-aside,
64
+ ry-card,
65
+ ry-accordion,
66
+ ry-accordion-item,
67
+ ry-tabs,
68
+ ry-tab,
69
+ ry-alert,
70
+ ry-field {
71
+ display: block;
72
+ }
73
+
74
+ /* Flex containers */
75
+ ry-grid,
76
+ ry-stack,
77
+ ry-cluster,
78
+ ry-split,
79
+ ry-center,
80
+ ry-nav,
81
+ ry-actions {
82
+ display: flex;
83
+ }
84
+
85
+ /* Inline elements */
86
+ ry-badge,
87
+ ry-logo {
88
+ display: inline-flex;
89
+ }
90
+
91
+ /* Contents (wrapper doesn't affect layout) */
92
+ ry-modal,
93
+ ry-dropdown {
94
+ display: contents;
95
+ }
96
+
97
+ /* Button-like elements */
98
+ ry-button,
99
+ ry-menu-item {
100
+ display: inline-flex;
101
+ }
102
+
103
+ /* Note: We don't use :not(:defined) because our layout
104
+ primitives are CSS-only and never get registered as
105
+ custom elements. They work without JavaScript. */
106
+
107
+ /* ═══════════════════════════════════════════════════════════════
108
+ FOCUS STYLES
109
+ ═══════════════════════════════════════════════════════════════ */
110
+
111
+ [class^="ry-"]:focus-visible,
112
+ [class*=" ry-"]:focus-visible,
113
+ ry-button:focus-visible,
114
+ .ry-btn:focus-visible,
115
+ .ry-input:focus-visible {
116
+ outline: none;
117
+ box-shadow: var(--ry-focus-ring);
118
+ }
119
+
120
+ /* ═══════════════════════════════════════════════════════════════
121
+ BASE TYPOGRAPHY (when inside ry-page)
122
+ ═══════════════════════════════════════════════════════════════ */
123
+
124
+ ry-page {
125
+ font-family: var(--ry-font-sans);
126
+ font-size: var(--ry-text-base);
127
+ line-height: var(--ry-leading-normal);
128
+ color: var(--ry-color-text);
129
+ background-color: var(--ry-color-bg);
130
+ }
131
+
132
+ ry-page h1, ry-page h2, ry-page h3, ry-page h4, ry-page h5, ry-page h6 {
133
+ margin: 0 0 var(--ry-space-4) 0;
134
+ font-weight: var(--ry-font-semibold);
135
+ line-height: var(--ry-leading-tight);
136
+ color: var(--ry-color-text);
137
+ }
138
+
139
+ ry-page h1 { font-size: var(--ry-text-4xl); }
140
+ ry-page h2 { font-size: var(--ry-text-3xl); }
141
+ ry-page h3 { font-size: var(--ry-text-2xl); }
142
+ ry-page h4 { font-size: var(--ry-text-xl); }
143
+
144
+ ry-page p {
145
+ margin: 0 0 var(--ry-space-4) 0;
146
+ }
147
+
148
+ ry-page a {
149
+ color: var(--ry-color-primary);
150
+ text-decoration: none;
151
+ }
152
+
153
+ ry-page a:hover {
154
+ text-decoration: underline;
155
+ }