@elyracode/mini-lit 0.9.4

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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -0
  3. package/dist/Alert.d.ts +12 -0
  4. package/dist/Alert.d.ts.map +1 -0
  5. package/dist/Alert.js +35 -0
  6. package/dist/Alert.js.map +1 -0
  7. package/dist/Badge.d.ts +8 -0
  8. package/dist/Badge.d.ts.map +1 -0
  9. package/dist/Badge.js +19 -0
  10. package/dist/Badge.js.map +1 -0
  11. package/dist/Button.d.ts +14 -0
  12. package/dist/Button.d.ts.map +1 -0
  13. package/dist/Button.js +60 -0
  14. package/dist/Button.js.map +1 -0
  15. package/dist/Card.d.ts +19 -0
  16. package/dist/Card.d.ts.map +1 -0
  17. package/dist/Card.js +76 -0
  18. package/dist/Card.js.map +1 -0
  19. package/dist/Checkbox.d.ts +15 -0
  20. package/dist/Checkbox.d.ts.map +1 -0
  21. package/dist/Checkbox.js +49 -0
  22. package/dist/Checkbox.js.map +1 -0
  23. package/dist/CodeBlock.d.ts +11 -0
  24. package/dist/CodeBlock.d.ts.map +1 -0
  25. package/dist/CodeBlock.js +90 -0
  26. package/dist/CodeBlock.js.map +1 -0
  27. package/dist/CopyButton.d.ts +11 -0
  28. package/dist/CopyButton.d.ts.map +1 -0
  29. package/dist/CopyButton.js +65 -0
  30. package/dist/CopyButton.js.map +1 -0
  31. package/dist/Dialog.d.ts +24 -0
  32. package/dist/Dialog.d.ts.map +1 -0
  33. package/dist/Dialog.js +72 -0
  34. package/dist/Dialog.js.map +1 -0
  35. package/dist/DialogBase.d.ts +13 -0
  36. package/dist/DialogBase.d.ts.map +1 -0
  37. package/dist/DialogBase.js +48 -0
  38. package/dist/DialogBase.js.map +1 -0
  39. package/dist/Diff.d.ts +8 -0
  40. package/dist/Diff.d.ts.map +1 -0
  41. package/dist/Diff.js +47 -0
  42. package/dist/Diff.js.map +1 -0
  43. package/dist/DownloadButton.d.ts +16 -0
  44. package/dist/DownloadButton.d.ts.map +1 -0
  45. package/dist/DownloadButton.js +53 -0
  46. package/dist/DownloadButton.js.map +1 -0
  47. package/dist/FileButton.d.ts +9 -0
  48. package/dist/FileButton.d.ts.map +1 -0
  49. package/dist/FileButton.js +53 -0
  50. package/dist/FileButton.js.map +1 -0
  51. package/dist/Input.d.ts +28 -0
  52. package/dist/Input.d.ts.map +1 -0
  53. package/dist/Input.js +58 -0
  54. package/dist/Input.js.map +1 -0
  55. package/dist/Label.d.ts +9 -0
  56. package/dist/Label.d.ts.map +1 -0
  57. package/dist/Label.js +17 -0
  58. package/dist/Label.js.map +1 -0
  59. package/dist/LanguageSelector.d.ts +14 -0
  60. package/dist/LanguageSelector.d.ts.map +1 -0
  61. package/dist/LanguageSelector.js +92 -0
  62. package/dist/LanguageSelector.js.map +1 -0
  63. package/dist/MarkdownBlock.d.ts +10 -0
  64. package/dist/MarkdownBlock.d.ts.map +1 -0
  65. package/dist/MarkdownBlock.js +257 -0
  66. package/dist/MarkdownBlock.js.map +1 -0
  67. package/dist/ModeToggle.d.ts +14 -0
  68. package/dist/ModeToggle.d.ts.map +1 -0
  69. package/dist/ModeToggle.js +59 -0
  70. package/dist/ModeToggle.js.map +1 -0
  71. package/dist/PreviewCode.d.ts +12 -0
  72. package/dist/PreviewCode.d.ts.map +1 -0
  73. package/dist/PreviewCode.js +80 -0
  74. package/dist/PreviewCode.js.map +1 -0
  75. package/dist/PreviewCodeToggle.d.ts +15 -0
  76. package/dist/PreviewCodeToggle.d.ts.map +1 -0
  77. package/dist/PreviewCodeToggle.js +55 -0
  78. package/dist/PreviewCodeToggle.js.map +1 -0
  79. package/dist/Progress.d.ts +10 -0
  80. package/dist/Progress.d.ts.map +1 -0
  81. package/dist/Progress.js +27 -0
  82. package/dist/Progress.js.map +1 -0
  83. package/dist/PromptDialog.d.ts +20 -0
  84. package/dist/PromptDialog.d.ts.map +1 -0
  85. package/dist/PromptDialog.js +114 -0
  86. package/dist/PromptDialog.js.map +1 -0
  87. package/dist/Select.d.ts +25 -0
  88. package/dist/Select.d.ts.map +1 -0
  89. package/dist/Select.js +335 -0
  90. package/dist/Select.js.map +1 -0
  91. package/dist/Separator.d.ts +10 -0
  92. package/dist/Separator.d.ts.map +1 -0
  93. package/dist/Separator.js +19 -0
  94. package/dist/Separator.js.map +1 -0
  95. package/dist/Sidebar.d.ts +27 -0
  96. package/dist/Sidebar.d.ts.map +1 -0
  97. package/dist/Sidebar.js +151 -0
  98. package/dist/Sidebar.js.map +1 -0
  99. package/dist/SplitPanel.d.ts +40 -0
  100. package/dist/SplitPanel.d.ts.map +1 -0
  101. package/dist/SplitPanel.js +275 -0
  102. package/dist/SplitPanel.js.map +1 -0
  103. package/dist/Switch.d.ts +13 -0
  104. package/dist/Switch.d.ts.map +1 -0
  105. package/dist/Switch.js +48 -0
  106. package/dist/Switch.js.map +1 -0
  107. package/dist/Textarea.d.ts +21 -0
  108. package/dist/Textarea.d.ts.map +1 -0
  109. package/dist/Textarea.js +67 -0
  110. package/dist/Textarea.js.map +1 -0
  111. package/dist/ThemeToggle.d.ts +11 -0
  112. package/dist/ThemeToggle.d.ts.map +1 -0
  113. package/dist/ThemeToggle.js +91 -0
  114. package/dist/ThemeToggle.js.map +1 -0
  115. package/dist/component.d.ts +190 -0
  116. package/dist/component.d.ts.map +1 -0
  117. package/dist/component.js +241 -0
  118. package/dist/component.js.map +1 -0
  119. package/dist/i18n.d.ts +73 -0
  120. package/dist/i18n.d.ts.map +1 -0
  121. package/dist/i18n.js +146 -0
  122. package/dist/i18n.js.map +1 -0
  123. package/dist/icons.d.ts +7 -0
  124. package/dist/icons.d.ts.map +1 -0
  125. package/dist/icons.js +21 -0
  126. package/dist/icons.js.map +1 -0
  127. package/dist/index.d.ts +4 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +8 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/mini.d.ts +19 -0
  132. package/dist/mini.d.ts.map +1 -0
  133. package/dist/mini.js +29 -0
  134. package/dist/mini.js.map +1 -0
  135. package/llms.txt +681 -0
  136. package/package.json +69 -0
  137. package/src/styles/base.css +63 -0
  138. package/src/styles/themes/claude.css +155 -0
  139. package/src/styles/themes/default.css +102 -0
  140. package/src/styles/utils/markdown.css +104 -0
  141. package/src/styles/utils/math.css +7 -0
  142. package/src/styles/utils/syntax-highlighting.css +134 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../src/Textarea.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { LitElement } from "lit";
2
+ export declare class ThemeToggle extends LitElement {
3
+ includeSystem: boolean;
4
+ private theme;
5
+ private setTheme;
6
+ private cycleTheme;
7
+ private getIcon;
8
+ createRenderRoot(): this;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ }
11
+ //# sourceMappingURL=ThemeToggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../src/ThemeToggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AA4BvC,qBACa,WAAY,SAAQ,UAAU;IACX,aAAa,UAAS;IAE1C,OAAO,CAAC,KAAK,CAC2E;IAEjG,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,OAAO;IAYN,gBAAgB;IAIhB,MAAM;CAUjB"}
@@ -0,0 +1,91 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, LitElement } from "lit";
8
+ import { customElement, property, state } from "lit/decorators.js";
9
+ import { Monitor, Moon, Sun } from "lucide";
10
+ import { Button } from "./Button.js";
11
+ import { icon } from "./icons.js";
12
+ // Apply theme to document
13
+ function applyTheme() {
14
+ const theme = localStorage.getItem("theme") || "system";
15
+ const effectiveTheme = theme === "system" ? (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light") : theme;
16
+ document.documentElement.classList.toggle("dark", effectiveTheme === "dark");
17
+ }
18
+ // Initialize theme on load
19
+ if (typeof window !== "undefined") {
20
+ applyTheme();
21
+ // Listen for system theme changes
22
+ window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
23
+ const theme = localStorage.getItem("theme");
24
+ if (!theme || theme === "system") {
25
+ applyTheme();
26
+ }
27
+ });
28
+ }
29
+ let ThemeToggle = class ThemeToggle extends LitElement {
30
+ constructor() {
31
+ super(...arguments);
32
+ this.includeSystem = false;
33
+ this.theme = (typeof window !== "undefined" ? localStorage.getItem("theme") : null) || "system";
34
+ }
35
+ setTheme(theme) {
36
+ this.theme = theme;
37
+ if (theme === "system") {
38
+ localStorage.removeItem("theme");
39
+ }
40
+ else {
41
+ localStorage.setItem("theme", theme);
42
+ }
43
+ applyTheme();
44
+ }
45
+ cycleTheme() {
46
+ const themes = this.includeSystem ? ["light", "dark", "system"] : ["light", "dark"];
47
+ // If current theme is system but we're not including it, default to light
48
+ let currentTheme = this.theme;
49
+ if (!this.includeSystem && currentTheme === "system") {
50
+ currentTheme = "light";
51
+ }
52
+ const currentIndex = themes.indexOf(currentTheme);
53
+ const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themes.length;
54
+ this.setTheme(themes[nextIndex]);
55
+ }
56
+ getIcon() {
57
+ switch (this.theme) {
58
+ case "light":
59
+ return icon(Sun, "md");
60
+ case "dark":
61
+ return icon(Moon, "md");
62
+ case "system":
63
+ return icon(Monitor, "md");
64
+ }
65
+ }
66
+ // Remove shadow DOM for consistent styling
67
+ createRenderRoot() {
68
+ return this;
69
+ }
70
+ render() {
71
+ return html `
72
+ ${Button({
73
+ variant: "ghost",
74
+ size: "icon",
75
+ onClick: () => this.cycleTheme(),
76
+ children: this.getIcon(),
77
+ })}
78
+ `;
79
+ }
80
+ };
81
+ __decorate([
82
+ property({ type: Boolean })
83
+ ], ThemeToggle.prototype, "includeSystem", void 0);
84
+ __decorate([
85
+ state()
86
+ ], ThemeToggle.prototype, "theme", void 0);
87
+ ThemeToggle = __decorate([
88
+ customElement("theme-toggle")
89
+ ], ThemeToggle);
90
+ export { ThemeToggle };
91
+ //# sourceMappingURL=ThemeToggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../src/ThemeToggle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ import { LitElement, type TemplateResult } from "lit";
2
+ import { type ClassValue } from "tailwind-variants";
3
+ export type VariantDef<T extends readonly string[]> = {
4
+ options: T;
5
+ default: T[number];
6
+ description?: string;
7
+ };
8
+ export type PropDef<T> = {
9
+ type: "string";
10
+ default: string | undefined;
11
+ description?: string;
12
+ } | {
13
+ type: "number";
14
+ default: number | undefined;
15
+ description?: string;
16
+ } | {
17
+ type: "boolean";
18
+ default: boolean | undefined;
19
+ description?: string;
20
+ } | {
21
+ type: "object";
22
+ default: T;
23
+ description?: string;
24
+ } | {
25
+ type: "array";
26
+ default: T[] | undefined;
27
+ description?: string;
28
+ } | {
29
+ type: "function";
30
+ default: T | undefined;
31
+ description?: string;
32
+ } | {
33
+ type: "enum";
34
+ default: T;
35
+ options: readonly T[];
36
+ description?: string;
37
+ } | {
38
+ type: "classname";
39
+ default: string | undefined;
40
+ description?: string;
41
+ } | {
42
+ type: "children";
43
+ default: ComponentChild | undefined;
44
+ description?: string;
45
+ };
46
+ type PropDictionary = Record<string, PropDef<unknown>>;
47
+ export type ComponentChild = TemplateResult | string | number | Node | Node[];
48
+ type BasePropDefinitions = {
49
+ className: Extract<PropDef<unknown>, {
50
+ type: "classname";
51
+ }>;
52
+ children: Extract<PropDef<unknown>, {
53
+ type: "children";
54
+ }>;
55
+ };
56
+ type WithBaseProps<P extends PropDictionary | undefined> = (P extends PropDictionary ? {
57
+ [K in keyof P]: P[K];
58
+ } : Record<string, never>) & BasePropDefinitions;
59
+ type PropValue<P> = P extends {
60
+ type: "boolean";
61
+ } ? boolean | undefined : P extends {
62
+ type: "string";
63
+ } ? string | undefined : P extends {
64
+ type: "number";
65
+ } ? number | undefined : P extends {
66
+ type: "classname";
67
+ } ? string | undefined : P extends {
68
+ type: "children";
69
+ } ? ComponentChild | undefined : P extends {
70
+ type: "enum";
71
+ options: readonly (infer O)[];
72
+ } ? O : P extends {
73
+ default: infer D;
74
+ } ? D : never;
75
+ export type ComponentDefinition = {
76
+ tag: string;
77
+ slots?: readonly string[];
78
+ variants?: {
79
+ [key: string]: VariantDef<readonly string[]>;
80
+ };
81
+ props?: PropDictionary;
82
+ };
83
+ type SlotClassNameProps<T extends ComponentDefinition> = T["slots"] extends readonly string[] ? {
84
+ [K in T["slots"][number] as K extends "base" ? never : `${K}ClassName`]: {
85
+ type: "classname";
86
+ default: undefined;
87
+ description: string;
88
+ };
89
+ } : Record<never, never>;
90
+ export type ExtractVariants<T extends ComponentDefinition> = T["variants"] extends infer V ? V extends {
91
+ [K in keyof V]: VariantDef<readonly string[]>;
92
+ } ? {
93
+ [K in keyof V]?: V[K] extends {
94
+ options: readonly (infer O)[];
95
+ } ? O : never;
96
+ } : Record<string, never> : Record<string, never>;
97
+ type NormalizedPropDefinitions<T extends ComponentDefinition> = WithBaseProps<T["props"]> & SlotClassNameProps<T>;
98
+ export type ExtractRegularProps<T extends ComponentDefinition> = {
99
+ [K in keyof NormalizedPropDefinitions<T>]?: PropValue<NormalizedPropDefinitions<T>[K]>;
100
+ };
101
+ export type BaseComponentProps = {
102
+ className?: string;
103
+ children?: ComponentChild;
104
+ };
105
+ export type ExtractProps<T extends ComponentDefinition> = ExtractVariants<T> & ExtractRegularProps<T>;
106
+ type ConflictingHTMLElementProps = "accessKey" | "className" | "contentEditable" | "dir" | "draggable" | "hidden" | "id" | "lang" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate";
107
+ type ClassPropKeys<T extends ComponentDefinition> = Exclude<keyof NormalizedPropDefinitions<T>, "children" | ConflictingHTMLElementProps>;
108
+ type DefinitionPropValues<T extends ComponentDefinition> = {
109
+ [K in keyof NormalizedPropDefinitions<T>]: PropValue<NormalizedPropDefinitions<T>[K]>;
110
+ };
111
+ type RequiredDefinitionProps<T extends ComponentDefinition> = Pick<DefinitionPropValues<T>, ClassPropKeys<T>>;
112
+ export type ExtractPropsForClass<T extends ComponentDefinition> = ExtractVariants<T> & RequiredDefinitionProps<T>;
113
+ type MapVariantToTV<V extends VariantDef<readonly string[]>> = V extends {
114
+ options: readonly (infer O)[];
115
+ } ? Record<O extends string ? O : never, string> : never;
116
+ type MapVariantsToTV<T extends ComponentDefinition> = T["variants"] extends infer V ? V extends {
117
+ [K in keyof V]: VariantDef<readonly string[]>;
118
+ } ? {
119
+ [K in keyof V]: MapVariantToTV<V[K]>;
120
+ } : Record<string, never> : Record<string, never>;
121
+ export type SimpleStyles<T extends ComponentDefinition> = {
122
+ base?: string;
123
+ variants?: MapVariantsToTV<T>;
124
+ defaultVariants?: ExtractVariants<T>;
125
+ compoundVariants?: Array<Partial<ExtractVariants<T>> & {
126
+ class?: string;
127
+ className?: string;
128
+ }>;
129
+ };
130
+ export type SlotStyles<T extends ComponentDefinition, Slots extends Record<string, string>> = {
131
+ slots: Slots;
132
+ variants?: {
133
+ [K in keyof MapVariantsToTV<T>]: {
134
+ [V in keyof MapVariantsToTV<T>[K]]: Partial<Slots> | string;
135
+ };
136
+ };
137
+ defaultVariants?: ExtractVariants<T>;
138
+ compoundVariants?: Array<Partial<ExtractVariants<T>> & {
139
+ class?: Partial<Slots> | string;
140
+ className?: never;
141
+ }>;
142
+ };
143
+ export type ComponentStyles<T extends ComponentDefinition> = SimpleStyles<T> | SlotStyles<T, Record<string, string>>;
144
+ export type ExtractStyles<T extends ComponentDefinition> = SimpleStyles<T>;
145
+ export declare function getDefaultVariants<T extends ComponentDefinition>(def: T): ExtractVariants<T>;
146
+ export declare function getDefaultProps<T extends ComponentDefinition>(def: T): ExtractProps<T>;
147
+ type TVSlotResult<S> = S extends {
148
+ slots: infer Slots;
149
+ } ? {
150
+ [K in keyof Slots]: (props?: {
151
+ class?: ClassValue;
152
+ className?: ClassValue;
153
+ }) => string;
154
+ } : never;
155
+ export type VariantPropsFromStyles<S> = S extends SimpleStyles<ComponentDefinition> ? {
156
+ [K in keyof NonNullable<S["variants"]>]?: keyof NonNullable<S["variants"]>[K];
157
+ } & {
158
+ className?: string;
159
+ class?: string;
160
+ } : never;
161
+ export type RenderFunction<Props, Styles> = Styles extends {
162
+ slots: Record<string, string>;
163
+ } ? (props: Props, slots: TVSlotResult<Styles>) => TemplateResult : (props: Props, className: (overrides?: ClassValue) => string) => TemplateResult;
164
+ type ComponentWithBaseProps<T extends ComponentDefinition> = Omit<T, "props"> & {
165
+ props: NormalizedPropDefinitions<T>;
166
+ };
167
+ export declare function defineComponent<T extends ComponentDefinition>(definition: T): ComponentWithBaseProps<T>;
168
+ export declare function styleComponent<T extends ComponentDefinition>(definition: T, styles: SimpleStyles<T>): SimpleStyles<T>;
169
+ export declare function styleComponent<T extends ComponentDefinition, S extends Record<string, string>>(definition: T, styles: SlotStyles<T, S>): SlotStyles<T, S>;
170
+ export declare function renderComponent<T extends ComponentDefinition, S extends ComponentStyles<T>>(_definition: T, _styles: S, render: RenderFunction<ExtractProps<T>, S>): RenderFunction<ExtractProps<T>, S>;
171
+ export declare function createComponent<T extends ComponentDefinition, S extends ComponentStyles<T>>(definition: T, styles: S, render: RenderFunction<ExtractProps<T>, S>): import("./mini.js").Component<ExtractProps<T>>;
172
+ /**
173
+ * Base class for Lit components using the definition system
174
+ */
175
+ export declare abstract class ComponentLitBase<T extends ComponentDefinition, S extends ComponentStyles<T> = ComponentStyles<T>> extends LitElement {
176
+ protected abstract definition: T;
177
+ protected abstract styles: S;
178
+ protected abstract renderFn: RenderFunction<ExtractProps<T>, S>;
179
+ private _tvInstance?;
180
+ private _children?;
181
+ createRenderRoot(): this;
182
+ protected get tvInstance(): (props?: Record<string, unknown>) => string | Record<string, (props?: {
183
+ class?: ClassValue;
184
+ }) => string>;
185
+ connectedCallback(): void;
186
+ render(): TemplateResult;
187
+ }
188
+ export type { Ref, TemplateResult } from "./mini.js";
189
+ export { createRef, html, nothing, ref } from "./mini.js";
190
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ import { LitElement } from "lit";
2
+ import { tv } from "tailwind-variants";
3
+ const basePropDefinitions = {
4
+ children: {
5
+ type: "children",
6
+ default: undefined,
7
+ description: "Component content",
8
+ },
9
+ className: {
10
+ type: "classname",
11
+ default: undefined,
12
+ description: "Additional CSS classes to apply",
13
+ },
14
+ };
15
+ function mergeBaseProps(props) {
16
+ const userProps = (props ?? {});
17
+ const className = userProps.className && userProps.className.type === "classname"
18
+ ? userProps.className
19
+ : basePropDefinitions.className;
20
+ const children = userProps.children && userProps.children.type === "children" ? userProps.children : basePropDefinitions.children;
21
+ return {
22
+ ...userProps,
23
+ className,
24
+ children,
25
+ };
26
+ }
27
+ // ============================================================================
28
+ // Helper Functions
29
+ // ============================================================================
30
+ // Extract default variant values from definition
31
+ export function getDefaultVariants(def) {
32
+ const defaults = {};
33
+ if (def.variants) {
34
+ for (const [key, value] of Object.entries(def.variants)) {
35
+ defaults[key] = value.default;
36
+ }
37
+ }
38
+ return defaults;
39
+ }
40
+ // Extract all default values from definition (for spreading as default props)
41
+ export function getDefaultProps(def) {
42
+ const defaults = {};
43
+ // Add variant defaults
44
+ if (def.variants) {
45
+ for (const [key, value] of Object.entries(def.variants)) {
46
+ defaults[key] = value.default;
47
+ }
48
+ }
49
+ // Add prop defaults
50
+ const propDefinitions = mergeBaseProps(def.props);
51
+ for (const [key, value] of Object.entries(propDefinitions)) {
52
+ defaults[key] = value.default;
53
+ }
54
+ return defaults;
55
+ }
56
+ // ============================================================================
57
+ // Component Factory
58
+ // ============================================================================
59
+ import { fc } from "./mini.js";
60
+ export function defineComponent(definition) {
61
+ const props = { ...(definition.props || {}) };
62
+ // If slots are defined, auto-generate className props for them
63
+ if (definition.slots) {
64
+ for (const slotName of definition.slots) {
65
+ if (slotName !== "base") {
66
+ const propName = `${slotName}ClassName`;
67
+ if (!props[propName]) {
68
+ props[propName] = {
69
+ type: "classname",
70
+ default: undefined,
71
+ description: `Additional CSS classes for the ${slotName} element`,
72
+ };
73
+ }
74
+ }
75
+ }
76
+ }
77
+ const propsWithBase = mergeBaseProps(props);
78
+ return {
79
+ ...definition,
80
+ props: propsWithBase,
81
+ };
82
+ }
83
+ export function styleComponent(_definition, styles) {
84
+ // Just return the styles - defineComponent already handles prop generation
85
+ return styles;
86
+ }
87
+ // Helper function that just returns the render function but helps with type inference
88
+ export function renderComponent(_definition, _styles, render) {
89
+ return render;
90
+ }
91
+ // Helper to extract variant props from component props
92
+ function extractVariantProps(props, definition) {
93
+ const variantProps = {};
94
+ if (definition.variants) {
95
+ for (const key of Object.keys(definition.variants)) {
96
+ if (key in props) {
97
+ variantProps[key] = props[key];
98
+ }
99
+ }
100
+ }
101
+ return variantProps;
102
+ }
103
+ // Type guard to check if styles have slots
104
+ function hasSlots(styles) {
105
+ return "slots" in styles;
106
+ }
107
+ // Create the actual component from definition, styles, and render
108
+ export function createComponent(definition, styles, render) {
109
+ const tvConfig = {
110
+ ...styles,
111
+ defaultVariants: styles.defaultVariants || getDefaultVariants(definition),
112
+ };
113
+ const tvInstance = tv(tvConfig);
114
+ const component = fc((props) => {
115
+ // Apply default values
116
+ const propsWithDefaults = {
117
+ ...getDefaultProps(definition),
118
+ ...props,
119
+ };
120
+ if (hasSlots(styles)) {
121
+ // Multi-element component: pass slots object
122
+ const variantProps = extractVariantProps(propsWithDefaults, definition);
123
+ const slots = tvInstance({ ...variantProps });
124
+ // Create slot functions that accept className overrides
125
+ const slotFunctions = {};
126
+ for (const [slotName, slotFn] of Object.entries(slots)) {
127
+ slotFunctions[slotName] = (overrides) => {
128
+ // Get the slot-specific className prop if it exists
129
+ const slotClassNameProp = slotName === "base"
130
+ ? propsWithDefaults.className
131
+ : propsWithDefaults[`${slotName}ClassName`];
132
+ // Combine variant classes with user overrides
133
+ const classOverride = overrides?.class || overrides?.className || slotClassNameProp;
134
+ return slotFn({ class: classOverride });
135
+ };
136
+ }
137
+ const typedRender = render;
138
+ return typedRender(propsWithDefaults, slotFunctions);
139
+ }
140
+ else {
141
+ // Single-element component: pass className function
142
+ const className = (overrides) => {
143
+ const variantProps = extractVariantProps(propsWithDefaults, definition);
144
+ const userClassName = overrides || propsWithDefaults.className;
145
+ return String(tvInstance({ ...variantProps, class: userClassName }));
146
+ };
147
+ const typedRender = render;
148
+ return typedRender(propsWithDefaults, className);
149
+ }
150
+ });
151
+ // Attach definition for introspection
152
+ component.__def = definition;
153
+ return component;
154
+ }
155
+ // ============================================================================
156
+ // Lit Component Base Class
157
+ // ============================================================================
158
+ /**
159
+ * Base class for Lit components using the definition system
160
+ */
161
+ export class ComponentLitBase extends LitElement {
162
+ createRenderRoot() {
163
+ return this; // Light DOM
164
+ }
165
+ get tvInstance() {
166
+ if (!this._tvInstance) {
167
+ const tvConfig = {
168
+ ...this.styles,
169
+ defaultVariants: this.styles.defaultVariants || getDefaultVariants(this.definition),
170
+ };
171
+ this._tvInstance = tv(tvConfig);
172
+ }
173
+ return this._tvInstance;
174
+ }
175
+ connectedCallback() {
176
+ super.connectedCallback();
177
+ // Apply defaults
178
+ const defaults = getDefaultProps(this.definition);
179
+ Object.entries(defaults).forEach(([key, value]) => {
180
+ if (this[key] === undefined) {
181
+ this[key] = value;
182
+ }
183
+ });
184
+ }
185
+ render() {
186
+ // Capture children on first render if not already captured
187
+ if (!this._children && this.childNodes.length > 0) {
188
+ // Store the actual DOM nodes - Lit can handle them directly
189
+ this._children = Array.from(this.childNodes);
190
+ }
191
+ const props = {};
192
+ // Collect all props
193
+ if (this.definition?.variants) {
194
+ for (const key of Object.keys(this.definition.variants)) {
195
+ props[key] = this[key];
196
+ }
197
+ }
198
+ if (this.definition?.props) {
199
+ for (const key of Object.keys(this.definition.props)) {
200
+ if (key === "children") {
201
+ props[key] = this._children || Array.from(this.childNodes);
202
+ }
203
+ else {
204
+ props[key] = this[key];
205
+ }
206
+ }
207
+ }
208
+ props.className = this.className;
209
+ if (hasSlots(this.styles)) {
210
+ // Multi-element component: create slots object
211
+ const variantProps = extractVariantProps(props, this.definition);
212
+ const slotsResult = this.tvInstance({ ...variantProps });
213
+ const slots = (typeof slotsResult === "function" ? {} : slotsResult);
214
+ // Create slot functions that accept className overrides
215
+ const slotFunctions = {};
216
+ for (const [slotName, slotFn] of Object.entries(slots)) {
217
+ slotFunctions[slotName] = (overrides) => {
218
+ // Get the slot-specific className prop if it exists
219
+ const slotClassNameProp = slotName === "base" ? props.className : props[`${slotName}ClassName`];
220
+ // Combine variant classes with user overrides
221
+ const classOverride = overrides?.class || overrides?.className || slotClassNameProp;
222
+ return slotFn({ class: classOverride });
223
+ };
224
+ }
225
+ const typedRender = this.renderFn;
226
+ return typedRender(props, slotFunctions);
227
+ }
228
+ else {
229
+ // Single-element component: create className function
230
+ const className = (overrides) => {
231
+ const variantProps = extractVariantProps(props, this.definition);
232
+ const userClassName = overrides || props.className;
233
+ return String(this.tvInstance({ ...variantProps, class: userClassName }));
234
+ };
235
+ const typedRender = this.renderFn;
236
+ return typedRender(props, className);
237
+ }
238
+ }
239
+ }
240
+ export { createRef, html, nothing, ref } from "./mini.js";
241
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Flexible i18n system for mini-lit
3
+ *
4
+ * Users can extend this with their own messages while ensuring
5
+ * mini-lit's required messages are included.
6
+ */
7
+ export type LanguageCode = "en" | "de" | string;
8
+ export interface MiniLitRequiredMessages {
9
+ "*": string;
10
+ Copy: string;
11
+ "Copy code": string;
12
+ "Copied!": string;
13
+ Download: string;
14
+ Close: string;
15
+ Preview: string;
16
+ Code: string;
17
+ "Loading...": string;
18
+ "Select an option": string;
19
+ "Mode 1": string;
20
+ "Mode 2": string;
21
+ Required: string;
22
+ Optional: string;
23
+ "Input Required": string;
24
+ Cancel: string;
25
+ Confirm: string;
26
+ }
27
+ export interface i18nMessages extends MiniLitRequiredMessages {
28
+ }
29
+ export declare const defaultEnglish: MiniLitRequiredMessages;
30
+ export declare const defaultGerman: MiniLitRequiredMessages;
31
+ /**
32
+ * Set custom translations for your app
33
+ *
34
+ * @example
35
+ * import { setTranslations } from '@elyracode/mini-lit';
36
+ *
37
+ * // Your messages must include all MiniLitRequiredMessages
38
+ * const myTranslations = {
39
+ * en: {
40
+ * // Required mini-lit messages
41
+ * "Copy": "Copy",
42
+ * "Copied!": "Copied!",
43
+ * // ... all other required messages
44
+ *
45
+ * // Your app messages
46
+ * "Welcome": "Welcome",
47
+ * "Settings": "Settings",
48
+ * },
49
+ * de: {
50
+ * // Required mini-lit messages
51
+ * "Copy": "Kopieren",
52
+ * "Copied!": "Kopiert!",
53
+ * // ... all other required messages
54
+ *
55
+ * // Your app messages
56
+ * "Welcome": "Willkommen",
57
+ * "Settings": "Einstellungen",
58
+ * }
59
+ * };
60
+ *
61
+ * setTranslations(myTranslations);
62
+ */
63
+ export declare function setTranslations(customTranslations: Record<string, i18nMessages>): void;
64
+ /**
65
+ * Get current translations
66
+ */
67
+ export declare function getTranslations(): Record<string, i18nMessages>;
68
+ export declare function getCurrentLanguage(): LanguageCode;
69
+ export declare function setLanguage(code: LanguageCode): void;
70
+ export declare function i18n<T extends keyof i18nMessages>(key: T): i18nMessages[T];
71
+ export declare function i18n<TCategory extends keyof i18nMessages, TKey extends keyof i18nMessages[TCategory]>(category: TCategory, key: TKey): i18nMessages[TCategory][TKey];
72
+ export default i18n;
73
+ //# sourceMappingURL=i18n.d.ts.map