@lazhus/kg-ui 0.2.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 (70) hide show
  1. package/README.md +128 -0
  2. package/custom-elements.json +3815 -0
  3. package/dist/components/kg-accordion-item.js +117 -0
  4. package/dist/components/kg-accordion.js +32 -0
  5. package/dist/components/kg-button.js +241 -0
  6. package/dist/components/kg-card.js +129 -0
  7. package/dist/components/kg-checkbox.js +147 -0
  8. package/dist/components/kg-colorpicker.js +240 -0
  9. package/dist/components/kg-column.js +48 -0
  10. package/dist/components/kg-datagrid.js +428 -0
  11. package/dist/components/kg-datepicker.js +650 -0
  12. package/dist/components/kg-divider.js +118 -0
  13. package/dist/components/kg-drawer.js +178 -0
  14. package/dist/components/kg-file-upload.js +274 -0
  15. package/dist/components/kg-grid.js +46 -0
  16. package/dist/components/kg-image.js +100 -0
  17. package/dist/components/kg-input.js +318 -0
  18. package/dist/components/kg-loader.js +175 -0
  19. package/dist/components/kg-modal.js +165 -0
  20. package/dist/components/kg-progress.js +82 -0
  21. package/dist/components/kg-radio-group.js +75 -0
  22. package/dist/components/kg-radio.js +121 -0
  23. package/dist/components/kg-row.js +42 -0
  24. package/dist/components/kg-select.js +331 -0
  25. package/dist/components/kg-skeleton.js +108 -0
  26. package/dist/components/kg-slider.js +196 -0
  27. package/dist/components/kg-spinner.js +79 -0
  28. package/dist/components/kg-stepper.js +214 -0
  29. package/dist/components/kg-switch.js +106 -0
  30. package/dist/components/kg-tab-panel.js +35 -0
  31. package/dist/components/kg-tabs.js +158 -0
  32. package/dist/components/kg-text.js +141 -0
  33. package/dist/components/kg-textarea.js +162 -0
  34. package/dist/components/kg-toast.js +200 -0
  35. package/dist/index.js +68 -0
  36. package/dist/kg-ui.css +1 -0
  37. package/package.json +57 -0
  38. package/types/components/kg-accordion-item.d.ts +25 -0
  39. package/types/components/kg-accordion.d.ts +22 -0
  40. package/types/components/kg-button.d.ts +34 -0
  41. package/types/components/kg-card.d.ts +31 -0
  42. package/types/components/kg-checkbox.d.ts +28 -0
  43. package/types/components/kg-colorpicker.d.ts +28 -0
  44. package/types/components/kg-column.d.ts +20 -0
  45. package/types/components/kg-datagrid.d.ts +55 -0
  46. package/types/components/kg-datepicker.d.ts +43 -0
  47. package/types/components/kg-divider.d.ts +34 -0
  48. package/types/components/kg-drawer.d.ts +31 -0
  49. package/types/components/kg-file-upload.d.ts +40 -0
  50. package/types/components/kg-grid.d.ts +20 -0
  51. package/types/components/kg-image.d.ts +40 -0
  52. package/types/components/kg-input.d.ts +34 -0
  53. package/types/components/kg-loader.d.ts +31 -0
  54. package/types/components/kg-modal.d.ts +31 -0
  55. package/types/components/kg-progress.d.ts +37 -0
  56. package/types/components/kg-radio-group.d.ts +25 -0
  57. package/types/components/kg-radio.d.ts +25 -0
  58. package/types/components/kg-row.d.ts +20 -0
  59. package/types/components/kg-select.d.ts +37 -0
  60. package/types/components/kg-skeleton.d.ts +34 -0
  61. package/types/components/kg-slider.d.ts +40 -0
  62. package/types/components/kg-spinner.d.ts +28 -0
  63. package/types/components/kg-stepper.d.ts +31 -0
  64. package/types/components/kg-switch.d.ts +28 -0
  65. package/types/components/kg-tab-panel.d.ts +28 -0
  66. package/types/components/kg-tabs.d.ts +25 -0
  67. package/types/components/kg-text.d.ts +31 -0
  68. package/types/components/kg-textarea.d.ts +43 -0
  69. package/types/components/kg-toast.d.ts +28 -0
  70. package/types/index.d.ts +335 -0
@@ -0,0 +1,240 @@
1
+ import { LitElement as t, css as o, html as i } from "lit";
2
+ import "lit/directives/class-map.js";
3
+ class r extends t {
4
+ static properties = {
5
+ value: { type: String, reflect: !0 },
6
+ label: { type: String },
7
+ open: { type: Boolean },
8
+ disabled: { type: Boolean }
9
+ };
10
+ static styles = o`
11
+ :host {
12
+ display: inline-block;
13
+ font-family: inherit;
14
+ }
15
+
16
+ .kg-color-container {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 6px;
20
+ }
21
+
22
+ .label-text {
23
+ font-size: 0.875rem;
24
+ font-weight: 600;
25
+ color: var(--kg-text);
26
+ opacity: 0.8;
27
+ margin-left: 2px;
28
+ }
29
+
30
+ .picker-trigger {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: 10px;
34
+ padding: 0 10px;
35
+ height: var(--kg-form-height);
36
+ background: var(--kg-surface);
37
+ border: 1px solid var(--kg-border);
38
+ border-radius: var(--kg-radius-md);
39
+ cursor: pointer;
40
+ transition: all 0.2s;
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ .picker-trigger:hover {
45
+ border-color: var(--kg-primary);
46
+ }
47
+
48
+ .color-swatch {
49
+ width: 24px;
50
+ height: 24px;
51
+ border-radius: 4px;
52
+ border: 1px solid rgba(0,0,0,0.1);
53
+ flex-shrink: 0;
54
+ }
55
+
56
+ .color-value {
57
+ font-size: 0.9rem;
58
+ font-family: monospace;
59
+ color: var(--kg-text);
60
+ flex: 1;
61
+ }
62
+
63
+ .picker-popup {
64
+ position: absolute;
65
+ top: calc(100% + 8px);
66
+ left: 0;
67
+ z-index: 1000;
68
+ background: var(--kg-bg);
69
+ border: 1px solid var(--kg-border);
70
+ border-radius: var(--kg-radius-lg);
71
+ box-shadow: var(--kg-shadow-lg);
72
+ padding: 16px;
73
+ display: none;
74
+ width: 230px;
75
+ box-sizing: border-box;
76
+ }
77
+
78
+ .picker-popup.open {
79
+ display: block;
80
+ animation: slideDown 0.2s cubic-bezier(0.4, 0, 0.2, 1);
81
+ }
82
+
83
+ @keyframes slideDown {
84
+ from { opacity: 0; transform: translateY(-10px); }
85
+ to { opacity: 1; transform: translateY(0); }
86
+ }
87
+
88
+ .swatch-grid {
89
+ display: grid;
90
+ grid-template-columns: repeat(6, 1fr);
91
+ gap: 8px;
92
+ margin-bottom: 16px;
93
+ }
94
+
95
+ .preset-swatch {
96
+ width: 100%;
97
+ aspect-ratio: 1;
98
+ border-radius: 6px;
99
+ cursor: pointer;
100
+ border: 1px solid rgba(0,0,0,0.1);
101
+ transition: all 0.2s;
102
+ box-sizing: border-box;
103
+ }
104
+
105
+ .preset-swatch:hover {
106
+ transform: scale(1.15);
107
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
108
+ z-index: 2;
109
+ }
110
+
111
+ .custom-input-container {
112
+ border-top: 1px solid var(--kg-border);
113
+ padding-top: 16px;
114
+ display: flex;
115
+ flex-direction: column;
116
+ gap: 8px;
117
+ }
118
+
119
+ .color-input-wrapper {
120
+ display: flex;
121
+ align-items: center;
122
+ background: var(--kg-surface);
123
+ border: 1px solid var(--kg-border);
124
+ border-radius: 8px;
125
+ padding: 4px;
126
+ height: var(--kg-form-height);
127
+ overflow: hidden;
128
+ }
129
+
130
+ input[type="color"] {
131
+ flex: 1;
132
+ height: 100%;
133
+ padding: 0;
134
+ border: none;
135
+ background: none;
136
+ cursor: pointer;
137
+ min-width: 40px;
138
+ }
139
+
140
+ .color-hex-label {
141
+ font-family: monospace;
142
+ font-size: 0.85rem;
143
+ padding: 0 10px;
144
+ color: var(--kg-text-muted);
145
+ border-left: 1px solid var(--kg-border);
146
+ }
147
+
148
+ .disabled {
149
+ opacity: 0.5;
150
+ pointer-events: none;
151
+ }
152
+ `;
153
+ constructor() {
154
+ super(), this.value = "#1367FF", this.open = !1, this.disabled = !1, this._presets = [
155
+ "#1367FF",
156
+ "#FF0000",
157
+ "#00FF00",
158
+ "#FFA500",
159
+ "#800080",
160
+ "#000000",
161
+ "#FFFFFF",
162
+ "#808080",
163
+ "#FFC0CB",
164
+ "#00FFFF",
165
+ "#FFFF00",
166
+ "#A52A2A",
167
+ "#3498db",
168
+ "#2ecc71",
169
+ "#e74c3c",
170
+ "#f1c40f",
171
+ "#9b59b6",
172
+ "#34495e"
173
+ ], this._handleOutsideClick = this._handleOutsideClick.bind(this);
174
+ }
175
+ connectedCallback() {
176
+ super.connectedCallback(), document.addEventListener("click", this._handleOutsideClick);
177
+ }
178
+ disconnectedCallback() {
179
+ super.disconnectedCallback(), document.removeEventListener("click", this._handleOutsideClick);
180
+ }
181
+ _handleOutsideClick(e) {
182
+ this.open && !e.composedPath().includes(this) && (this.open = !1);
183
+ }
184
+ _togglePopup(e) {
185
+ e && e.stopPropagation(), this.open = !this.open;
186
+ }
187
+ _selectColor(e) {
188
+ this.value = e, this._dispatchChange();
189
+ }
190
+ _handleInput(e) {
191
+ this.value = e.target.value, this._dispatchChange();
192
+ }
193
+ _dispatchChange() {
194
+ this.dispatchEvent(new CustomEvent("change", {
195
+ detail: { value: this.value },
196
+ bubbles: !0,
197
+ composed: !0
198
+ }));
199
+ }
200
+ render() {
201
+ return i`
202
+ <div class="kg-color-container ${this.disabled ? "disabled" : ""}" style="position: relative;">
203
+ ${this.label ? i`<span class="label-text">${this.label}</span>` : ""}
204
+
205
+ <div class="picker-trigger" @click="${this._togglePopup}">
206
+ <div class="color-swatch" style="background-color: ${this.value}"></div>
207
+ <span class="color-value">${this.value}</span>
208
+ </div>
209
+
210
+ <div class="picker-popup ${this.open ? "open" : ""}" @click="${(e) => e.stopPropagation()}">
211
+ <div class="swatch-grid">
212
+ ${this._presets.map((e) => i`
213
+ <div
214
+ class="preset-swatch"
215
+ style="background-color: ${e}"
216
+ @click="${() => this._selectColor(e)}"
217
+ ></div>
218
+ `)}
219
+ </div>
220
+
221
+ <div class="custom-input-container">
222
+ <span style="font-size: 0.75rem; color: var(--kg-text-muted); font-weight: 600;">Özel Renk Seç</span>
223
+ <div class="color-input-wrapper">
224
+ <input
225
+ type="color"
226
+ .value="${this.value}"
227
+ @input="${this._handleInput}"
228
+ />
229
+ <span class="color-hex-label">${this.value.toUpperCase()}</span>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ `;
235
+ }
236
+ }
237
+ customElements.define("kg-colorpicker", r);
238
+ export {
239
+ r as kgcolorpicker
240
+ };
@@ -0,0 +1,48 @@
1
+ import { LitElement as s, css as e, html as l } from "lit";
2
+ class i extends s {
3
+ static properties = {
4
+ sm: { type: Number },
5
+ // mobile
6
+ md: { type: Number },
7
+ // tablet
8
+ lg: { type: Number },
9
+ // desktop (replaces width)
10
+ floated: { type: String },
11
+ color: { type: String }
12
+ };
13
+ static styles = e`
14
+ :host {
15
+ display: block;
16
+ box-sizing: border-box;
17
+ min-height: 1px;
18
+ padding: var(--kg-space-md);
19
+ flex: 0 0 auto;
20
+ width: var(--kg-col-lg, 100%);
21
+ }
22
+
23
+ :host([floated="right"]) { margin-left: auto; }
24
+ :host([floated="left"]) { margin-right: auto; }
25
+
26
+ @media (max-width: 768px) {
27
+ :host {
28
+ width: var(--kg-col-sm, 100%);
29
+ }
30
+ }
31
+
32
+ @media (min-width: 769px) and (max-width: 1024px) {
33
+ :host {
34
+ width: var(--kg-col-md, var(--kg-col-lg, 100%));
35
+ }
36
+ }
37
+ `;
38
+ willUpdate(t) {
39
+ t.has("sm") && this.style.setProperty("--kg-col-sm", `${this.sm / 12 * 100}%`), t.has("md") && this.style.setProperty("--kg-col-md", `${this.md / 12 * 100}%`), t.has("lg") && this.style.setProperty("--kg-col-lg", `${this.lg / 12 * 100}%`);
40
+ }
41
+ render() {
42
+ return l`<slot></slot>`;
43
+ }
44
+ }
45
+ customElements.define("kg-column", i);
46
+ export {
47
+ i as kgcolumn
48
+ };