@geajs/ui 0.1.4 → 0.2.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 (127) hide show
  1. package/README.md +14 -19
  2. package/dist/accordion.d.mts +34 -0
  3. package/dist/accordion.mjs +167 -0
  4. package/dist/accordion.mjs.map +1 -0
  5. package/dist/alert.d.mts +15 -0
  6. package/dist/alert.mjs +101 -0
  7. package/dist/alert.mjs.map +1 -0
  8. package/dist/avatar.d.mts +26 -0
  9. package/dist/avatar.mjs +97 -0
  10. package/dist/avatar.mjs.map +1 -0
  11. package/dist/badge.d.mts +9 -0
  12. package/dist/badge.mjs +49 -0
  13. package/dist/badge.mjs.map +1 -0
  14. package/dist/button.d.mts +21 -0
  15. package/dist/button.mjs +96 -0
  16. package/dist/button.mjs.map +1 -0
  17. package/dist/card.d.mts +24 -0
  18. package/dist/card.mjs +169 -0
  19. package/dist/card.mjs.map +1 -0
  20. package/dist/checkbox.d.mts +37 -0
  21. package/dist/checkbox.mjs +80 -0
  22. package/dist/checkbox.mjs.map +1 -0
  23. package/dist/clipboard.d.mts +33 -0
  24. package/dist/clipboard.mjs +100 -0
  25. package/dist/clipboard.mjs.map +1 -0
  26. package/dist/cn.mjs +10 -0
  27. package/dist/cn.mjs.map +1 -0
  28. package/dist/collapsible.d.mts +29 -0
  29. package/dist/collapsible.mjs +77 -0
  30. package/dist/collapsible.mjs.map +1 -0
  31. package/dist/combobox.d.mts +67 -0
  32. package/dist/combobox.mjs +375 -0
  33. package/dist/combobox.mjs.map +1 -0
  34. package/dist/dialog.d.mts +57 -0
  35. package/dist/dialog.mjs +139 -0
  36. package/dist/dialog.mjs.map +1 -0
  37. package/dist/dnd-manager.d.mts +67 -0
  38. package/dist/dnd-manager.mjs +387 -0
  39. package/dist/dnd-manager.mjs.map +1 -0
  40. package/dist/drag-drop-context.d.mts +11 -0
  41. package/dist/drag-drop-context.mjs +43 -0
  42. package/dist/drag-drop-context.mjs.map +1 -0
  43. package/dist/draggable.d.mts +11 -0
  44. package/dist/draggable.mjs +72 -0
  45. package/dist/draggable.mjs.map +1 -0
  46. package/dist/droppable.d.mts +14 -0
  47. package/dist/droppable.mjs +66 -0
  48. package/dist/droppable.mjs.map +1 -0
  49. package/dist/file-upload.d.mts +38 -0
  50. package/dist/file-upload.mjs +170 -0
  51. package/dist/file-upload.mjs.map +1 -0
  52. package/dist/hover-card.d.mts +33 -0
  53. package/dist/hover-card.mjs +92 -0
  54. package/dist/hover-card.mjs.map +1 -0
  55. package/dist/index.d.mts +41 -1068
  56. package/dist/index.mjs +41 -4332
  57. package/dist/input.d.mts +9 -0
  58. package/dist/input.mjs +82 -0
  59. package/dist/input.mjs.map +1 -0
  60. package/dist/label.d.mts +9 -0
  61. package/dist/label.mjs +42 -0
  62. package/dist/label.mjs.map +1 -0
  63. package/dist/menu.d.mts +36 -0
  64. package/dist/menu.mjs +88 -0
  65. package/dist/menu.mjs.map +1 -0
  66. package/dist/number-input.d.mts +46 -0
  67. package/dist/number-input.mjs +89 -0
  68. package/dist/number-input.mjs.map +1 -0
  69. package/dist/pagination.d.mts +37 -0
  70. package/dist/pagination.mjs +97 -0
  71. package/dist/pagination.mjs.map +1 -0
  72. package/dist/pin-input.d.mts +45 -0
  73. package/dist/pin-input.mjs +147 -0
  74. package/dist/pin-input.mjs.map +1 -0
  75. package/dist/popover.d.mts +39 -0
  76. package/dist/popover.mjs +109 -0
  77. package/dist/popover.mjs.map +1 -0
  78. package/dist/progress.d.mts +34 -0
  79. package/dist/progress.mjs +86 -0
  80. package/dist/progress.mjs.map +1 -0
  81. package/dist/radio-group.d.mts +37 -0
  82. package/dist/radio-group.mjs +184 -0
  83. package/dist/radio-group.mjs.map +1 -0
  84. package/dist/rating-group.d.mts +38 -0
  85. package/dist/rating-group.mjs +171 -0
  86. package/dist/rating-group.mjs.map +1 -0
  87. package/dist/select.d.mts +54 -0
  88. package/dist/select.mjs +277 -0
  89. package/dist/select.mjs.map +1 -0
  90. package/dist/separator.d.mts +9 -0
  91. package/dist/separator.mjs +49 -0
  92. package/dist/separator.mjs.map +1 -0
  93. package/dist/skeleton.d.mts +9 -0
  94. package/dist/skeleton.mjs +43 -0
  95. package/dist/skeleton.mjs.map +1 -0
  96. package/dist/slider.d.mts +44 -0
  97. package/dist/slider.mjs +117 -0
  98. package/dist/slider.mjs.map +1 -0
  99. package/dist/switch.d.mts +37 -0
  100. package/dist/switch.mjs +80 -0
  101. package/dist/switch.mjs.map +1 -0
  102. package/dist/tabs.d.mts +36 -0
  103. package/dist/tabs.mjs +197 -0
  104. package/dist/tabs.mjs.map +1 -0
  105. package/dist/tags-input.d.mts +48 -0
  106. package/dist/tags-input.mjs +267 -0
  107. package/dist/tags-input.mjs.map +1 -0
  108. package/dist/textarea.d.mts +9 -0
  109. package/dist/textarea.mjs +73 -0
  110. package/dist/textarea.mjs.map +1 -0
  111. package/dist/toast.d.mts +33 -0
  112. package/dist/toast.mjs +213 -0
  113. package/dist/toast.mjs.map +1 -0
  114. package/dist/toggle-group.d.mts +32 -0
  115. package/dist/toggle-group.mjs +124 -0
  116. package/dist/toggle-group.mjs.map +1 -0
  117. package/dist/tooltip.d.mts +39 -0
  118. package/dist/tooltip.mjs +85 -0
  119. package/dist/tooltip.mjs.map +1 -0
  120. package/dist/tree-view.d.mts +35 -0
  121. package/dist/tree-view.mjs +94 -0
  122. package/dist/tree-view.mjs.map +1 -0
  123. package/dist/zag-component.d.mts +40 -0
  124. package/dist/zag-component.mjs +135 -0
  125. package/dist/zag-component.mjs.map +1 -0
  126. package/package.json +8 -8
  127. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,277 @@
1
+ import { t as ZagComponent } from "./zag-component.mjs";
2
+ import { Component, GEA_CTOR_TAG_NAME, GEA_DOM_ITEM, GEA_DOM_KEY, GEA_ELEMENT, GEA_MAP_CONFIG_TPL, GEA_OBSERVE, GEA_PATCH_COND, GEA_REGISTER_COND, GEA_REGISTER_MAP, GEA_RENDERED, GEA_SETUP_LOCAL_STATE_OBSERVERS, GEA_SYNC_MAP, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
3
+ import { normalizeProps } from "@zag-js/vanilla";
4
+ import * as select from "@zag-js/select";
5
+ //#region src/components/select.tsx
6
+ const __v = (v) => v != null && typeof v === "object" ? v.valueOf() : v;
7
+ var Select = class extends ZagComponent {
8
+ static {
9
+ this[GEA_CTOR_TAG_NAME] = "gea-select";
10
+ }
11
+ #__rowEls_b2;
12
+ #__dc_b2;
13
+ constructor(...args) {
14
+ super(...args);
15
+ this.props;
16
+ this[geaCondValueSymbol(0)] = !!this.props.label;
17
+ this[GEA_REGISTER_COND](0, "c0", () => {
18
+ this.props;
19
+ return this.props.label;
20
+ }, () => {
21
+ this.props;
22
+ return `<label data-part="label" class="select-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(this.props.label))}</label>`;
23
+ }, null);
24
+ }
25
+ createMachine(_props) {
26
+ return select.machine;
27
+ }
28
+ getMachineProps(props) {
29
+ const items = props.items || [];
30
+ const col = props.collection || select.collection({
31
+ items,
32
+ itemToValue: (item) => item.value,
33
+ itemToString: (item) => item.label || item.value
34
+ });
35
+ return {
36
+ id: this.id,
37
+ collection: col,
38
+ value: props.value,
39
+ defaultValue: props.defaultValue,
40
+ open: props.open,
41
+ defaultOpen: props.defaultOpen,
42
+ multiple: props.multiple,
43
+ disabled: props.disabled,
44
+ invalid: props.invalid,
45
+ readOnly: props.readOnly,
46
+ required: props.required,
47
+ name: props.name,
48
+ form: props.form,
49
+ closeOnSelect: props.closeOnSelect ?? true,
50
+ positioning: props.positioning,
51
+ loopFocus: props.loopFocus ?? false,
52
+ onValueChange: (details) => {
53
+ this.value = details.value;
54
+ this.valueAsString = details.items.map((i) => i.label || i.value).join(", ");
55
+ props.onValueChange?.(details);
56
+ },
57
+ onOpenChange: (details) => {
58
+ this.open = details.open;
59
+ props.onOpenChange?.(details);
60
+ }
61
+ };
62
+ }
63
+ connectApi(service) {
64
+ return select.connect(service, normalizeProps);
65
+ }
66
+ getSpreadMap() {
67
+ return {
68
+ "[data-part=\"root\"]": "getRootProps",
69
+ "[data-part=\"label\"]": "getLabelProps",
70
+ "[data-part=\"control\"]": "getControlProps",
71
+ "[data-part=\"trigger\"]": "getTriggerProps",
72
+ "[data-part=\"indicator\"]": "getIndicatorProps",
73
+ "[data-part=\"clear-trigger\"]": "getClearTriggerProps",
74
+ "[data-part=\"value-text\"]": "getValueTextProps",
75
+ "[data-part=\"positioner\"]": "getPositionerProps",
76
+ "[data-part=\"content\"]": "getContentProps",
77
+ "[data-part=\"list\"]": "getListProps",
78
+ "[data-part=\"item\"]": (api, el) => {
79
+ const value = el.dataset.value;
80
+ const label = el.dataset.label || value;
81
+ return api.getItemProps({ item: {
82
+ value,
83
+ label
84
+ } });
85
+ },
86
+ "[data-part=\"item-text\"]": (api, el) => {
87
+ const value = el.dataset.value;
88
+ const label = el.dataset.label || value;
89
+ return api.getItemTextProps({ item: {
90
+ value,
91
+ label
92
+ } });
93
+ },
94
+ "[data-part=\"item-indicator\"]": (api, el) => {
95
+ const value = el.dataset.value;
96
+ const label = el.dataset.label || value;
97
+ return api.getItemIndicatorProps({ item: {
98
+ value,
99
+ label
100
+ } });
101
+ }
102
+ };
103
+ }
104
+ syncState(api) {
105
+ this.open = api.open;
106
+ this.value = api.value;
107
+ this.valueAsString = api.valueAsString;
108
+ }
109
+ template(props) {
110
+ const __id = this.id;
111
+ Component._register(ZagComponent, "zag-component");
112
+ const items = props.items || [];
113
+ return `<div id="${__id}" data-part="root"${(props.class || "") == null || (props.class || "") === false ? "" : ` class="${((props.class || "") != null ? String(props.class || "") : "").trim()}"`}><!--${__id + "-c0"}-->${props.label && `<label data-part="label" class="select-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(props.label))}</label>` || ""}<!--${__id + "-c0-end"}--><div data-part="control" class="select-control"><button data-part="trigger" class="select-trigger flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50"><span id="${__id + "-b1"}" data-part="value-text" class="select-value-text">${geaEscapeHtml(String(this.valueAsString || props.placeholder || "Select..."))}</span><span data-part="indicator" class="select-indicator">▼</span></button></div><div data-part="positioner" class="select-positioner"><div data-part="content" class="select-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md"><div id="${__id + "-b2"}" data-part="list">${items.map((item) => `<div data-gea-item-id="${item?.value ?? item}" data-part="item"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`} class="select-item relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"><span data-part="item-text"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`}>${item.label}</span><span data-part="item-indicator"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`} class="select-item-indicator ml-auto">✓</span></div>`).join("") + "<!---->"}</div></div></div></div>`;
114
+ }
115
+ render__unresolved_0Item(item) {
116
+ return `<div data-gea-item-id="${item?.value ?? item}" data-part="item"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`} class="select-item relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"><span data-part="item-text"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`}>${item.label}</span><span data-part="item-indicator"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`} class="select-item-indicator ml-auto">✓</span></div>`;
117
+ }
118
+ create__unresolved_0Item(item) {
119
+ var __c = this.#__dc_b2 || (this.#__dc_b2 = this.____unresolved_0_container);
120
+ if (!__c[GEA_MAP_CONFIG_TPL]) try {
121
+ var __tw = document.createElement("template");
122
+ __tw.innerHTML = this.render__unresolved_0Item({
123
+ value: 0,
124
+ label: " "
125
+ });
126
+ __c[GEA_MAP_CONFIG_TPL] = __tw.content.firstElementChild;
127
+ __c[GEA_MAP_CONFIG_TPL]?.removeAttribute("data-gea-item-id");
128
+ } catch (__err) {
129
+ console.error(__err);
130
+ }
131
+ if (__c[GEA_MAP_CONFIG_TPL]) var el = __c[GEA_MAP_CONFIG_TPL].cloneNode(true);
132
+ else {
133
+ var __fw = document.createElement("template");
134
+ __fw.innerHTML = this.render__unresolved_0Item(item);
135
+ var el = __fw.content.firstElementChild;
136
+ }
137
+ el.__ref_0 = el.firstElementChild;
138
+ el.__ref_1 = el.firstElementChild.nextElementSibling;
139
+ var __av = item.value;
140
+ if (__av == null || __av === false) el.removeAttribute("data-value");
141
+ else {
142
+ const __newAttr = String(__av);
143
+ if (el.getAttribute("data-value") !== __newAttr) el.setAttribute("data-value", __newAttr);
144
+ }
145
+ var __av = item.label;
146
+ if (__av == null || __av === false) el.removeAttribute("data-label");
147
+ else {
148
+ const __newAttr = String(__av);
149
+ if (el.getAttribute("data-label") !== __newAttr) el.setAttribute("data-label", __newAttr);
150
+ }
151
+ var __av = item.value;
152
+ if (__av == null || __av === false) el.__ref_0.removeAttribute("data-value");
153
+ else {
154
+ const __newAttr = String(__av);
155
+ if (el.__ref_0.getAttribute("data-value") !== __newAttr) el.__ref_0.setAttribute("data-value", __newAttr);
156
+ }
157
+ var __av = item.label;
158
+ if (__av == null || __av === false) el.__ref_0.removeAttribute("data-label");
159
+ else {
160
+ const __newAttr = String(__av);
161
+ if (el.__ref_0.getAttribute("data-label") !== __newAttr) el.__ref_0.setAttribute("data-label", __newAttr);
162
+ }
163
+ el.__ref_0.firstChild.nodeValue = `
164
+ ${item.label}
165
+ `;
166
+ var __av = item.value;
167
+ if (__av == null || __av === false) el.__ref_1.removeAttribute("data-value");
168
+ else {
169
+ const __newAttr = String(__av);
170
+ if (el.__ref_1.getAttribute("data-value") !== __newAttr) el.__ref_1.setAttribute("data-value", __newAttr);
171
+ }
172
+ var __av = item.label;
173
+ if (__av == null || __av === false) el.__ref_1.removeAttribute("data-label");
174
+ else {
175
+ const __newAttr = String(__av);
176
+ if (el.__ref_1.getAttribute("data-label") !== __newAttr) el.__ref_1.setAttribute("data-label", __newAttr);
177
+ }
178
+ el[GEA_DOM_KEY] = String(item?.value ?? item);
179
+ el[GEA_DOM_ITEM] = item;
180
+ return el;
181
+ }
182
+ patch__unresolved_0Item(row, item, __prevItem) {
183
+ if (!row) return;
184
+ if (!row.__ref_0) row.__ref_0 = row.firstElementChild;
185
+ if (!row.__ref_1) row.__ref_1 = row.firstElementChild.nextElementSibling;
186
+ var __av = item.value;
187
+ if (__av == null || __av === false) row.removeAttribute("data-value");
188
+ else {
189
+ const __newAttr = String(__av);
190
+ if (row.getAttribute("data-value") !== __newAttr) row.setAttribute("data-value", __newAttr);
191
+ }
192
+ var __av = item.label;
193
+ if (__av == null || __av === false) row.removeAttribute("data-label");
194
+ else {
195
+ const __newAttr = String(__av);
196
+ if (row.getAttribute("data-label") !== __newAttr) row.setAttribute("data-label", __newAttr);
197
+ }
198
+ var __av = item.value;
199
+ if (__av == null || __av === false) row.__ref_0.removeAttribute("data-value");
200
+ else {
201
+ const __newAttr = String(__av);
202
+ if (row.__ref_0.getAttribute("data-value") !== __newAttr) row.__ref_0.setAttribute("data-value", __newAttr);
203
+ }
204
+ var __av = item.label;
205
+ if (__av == null || __av === false) row.__ref_0.removeAttribute("data-label");
206
+ else {
207
+ const __newAttr = String(__av);
208
+ if (row.__ref_0.getAttribute("data-label") !== __newAttr) row.__ref_0.setAttribute("data-label", __newAttr);
209
+ }
210
+ row.__ref_0.firstChild.nodeValue = `
211
+ ${item.label}
212
+ `;
213
+ var __av = item.value;
214
+ if (__av == null || __av === false) row.__ref_1.removeAttribute("data-value");
215
+ else {
216
+ const __newAttr = String(__av);
217
+ if (row.__ref_1.getAttribute("data-value") !== __newAttr) row.__ref_1.setAttribute("data-value", __newAttr);
218
+ }
219
+ var __av = item.label;
220
+ if (__av == null || __av === false) row.__ref_1.removeAttribute("data-label");
221
+ else {
222
+ const __newAttr = String(__av);
223
+ if (row.__ref_1.getAttribute("data-label") !== __newAttr) row.__ref_1.setAttribute("data-label", __newAttr);
224
+ }
225
+ row[GEA_DOM_KEY] = String(item?.value ?? item);
226
+ (this.#__rowEls_b2 || (this.#__rowEls_b2 = {}))[String(item?.value ?? item)] = row;
227
+ row[GEA_DOM_ITEM] = item;
228
+ }
229
+ __onPropChange(key, value) {
230
+ const __id = this.id;
231
+ if (key === "class") {
232
+ const __el = this[GEA_ELEMENT];
233
+ this.props;
234
+ const __boundValue = value || "";
235
+ if (__el) {
236
+ const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
237
+ if (__el.className !== __newClass) __el.className = __newClass;
238
+ }
239
+ }
240
+ if (key === "placeholder") {
241
+ const __el = this.__e0 || (this.__e0 = document.getElementById(__id + "-b1"));
242
+ this.props;
243
+ const __boundValue = this.valueAsString || value || "Select...";
244
+ if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
245
+ }
246
+ if (key === "label") this[GEA_PATCH_COND](0);
247
+ if (key === "items") this[GEA_SYNC_MAP](0);
248
+ }
249
+ *GEA_RESET_ELS() {
250
+ this.__e0 = null;
251
+ }
252
+ __observe_local_valueAsString(value, change) {
253
+ const __id = this.id;
254
+ if (this[GEA_RENDERED]) {
255
+ const __el = this.__e0 || (this.__e0 = document.getElementById(__id + "-b1"));
256
+ this.props;
257
+ const __boundValue = this.valueAsString || value || "Select...";
258
+ if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
259
+ }
260
+ }
261
+ __observe_local_props(__v, __c) {
262
+ this[GEA_SYNC_MAP](0);
263
+ }
264
+ createdHooks() {
265
+ this[GEA_REGISTER_MAP](0, "____unresolved_0_container", () => document.getElementById(this.id + "-b2"), () => {
266
+ return this.props.items || [];
267
+ }, (__item) => this.create__unresolved_0Item(__item), "value");
268
+ }
269
+ [GEA_SETUP_LOCAL_STATE_OBSERVERS]() {
270
+ if (!this.__store) return;
271
+ this[GEA_OBSERVE](this, ["valueAsString"], this.__observe_local_valueAsString);
272
+ }
273
+ };
274
+ //#endregion
275
+ export { Select as default };
276
+
277
+ //# sourceMappingURL=select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.mjs","names":["__v","v","valueOf","Component","GEA_RENDERED","GEA_ELEMENT","GEA_MAPS","GEA_CONDS","GEA_RESET_ELS","GEA_OBSERVE","GEA_OBSERVE_LIST","GEA_EL","GEA_UPDATE_TEXT","GEA_REQUEST_RENDER","GEA_UPDATE_PROPS","GEA_SYNC_MAP","GEA_REGISTER_MAP","GEA_PATCH_COND","GEA_REGISTER_COND","GEA_REFRESH_LIST","GEA_RECONCILE_LIST","GEA_ENSURE_ARRAY_CONFIGS","GEA_APPLY_LIST_CHANGES","GEA_SWAP_CHILD","GEA_SWAP_STATE_CHILDREN","GEA_CHILD","GEA_LIST_CONFIG_REFRESHING","GEA_DOM_KEY","GEA_DOM_ITEM","GEA_DOM_PROPS","GEA_MAP_CONFIG_TPL","GEA_MAP_CONFIG_PREV","GEA_MAP_CONFIG_COUNT","geaCondPatchedSymbol","geaCondValueSymbol","geaObservePrevSymbol","geaPrevGuardSymbol","GEA_SETUP_LOCAL_STATE_OBSERVERS","geaSanitizeAttr","geaEscapeHtml","GEA_CTOR_TAG_NAME","select","normalizeProps","ZagComponent","Select","__rowEls_b2","__dc_b2","constructor","args","props","label","String","open","value","valueAsString","createMachine","_props","machine","getMachineProps","items","col","collection","itemToValue","item","itemToString","id","defaultValue","defaultOpen","multiple","disabled","invalid","readOnly","required","name","form","closeOnSelect","positioning","loopFocus","onValueChange","details","ValueChangeDetails","map","i","join","onOpenChange","OpenChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","HTMLElement","dataset","getItemProps","[data-part=\"item-text\"]","getItemTextProps","[data-part=\"item-indicator\"]","getItemIndicatorProps","syncState","template","__id","_register","class","trim","placeholder","render__unresolved_0Item","create__unresolved_0Item","__c","____unresolved_0_container","__tw","document","createElement","innerHTML","content","firstElementChild","removeAttribute","__err","console","error","cloneNode","__fw","__ref_0","__ref_1","nextElementSibling","__av","__newAttr","getAttribute","setAttribute","firstChild","nodeValue","patch__unresolved_0Item","row","__prevItem","__onPropChange","key","__el","__boundValue","__newClass","className","__e0","getElementById","textContent","__observe_local_valueAsString","change","__observe_local_props","createdHooks","__item","__store"],"sources":["../src/components/select.tsx"],"sourcesContent":["import * as select from '@zag-js/select'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Select extends ZagComponent {\n declare open: boolean\n declare value: string[]\n declare valueAsString: string\n\n createMachine(_props: any): any {\n return select.machine\n }\n\n getMachineProps(props: any) {\n const items = props.items || []\n const col =\n props.collection ||\n select.collection({\n items,\n itemToValue: (item: any) => item.value,\n itemToString: (item: any) => item.label || item.value,\n })\n\n return {\n id: this.id,\n collection: col,\n value: props.value,\n defaultValue: props.defaultValue,\n open: props.open,\n defaultOpen: props.defaultOpen,\n multiple: props.multiple,\n disabled: props.disabled,\n invalid: props.invalid,\n readOnly: props.readOnly,\n required: props.required,\n name: props.name,\n form: props.form,\n closeOnSelect: props.closeOnSelect ?? true,\n positioning: props.positioning,\n loopFocus: props.loopFocus ?? false,\n onValueChange: (details: select.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsString = details.items.map((i: any) => i.label || i.value).join(', ')\n props.onValueChange?.(details)\n },\n onOpenChange: (details: select.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return select.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"indicator\"]': 'getIndicatorProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n '[data-part=\"value-text\"]': 'getValueTextProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"list\"]': 'getListProps',\n '[data-part=\"item\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemProps({ item: { value, label } })\n },\n '[data-part=\"item-text\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemTextProps({ item: { value, label } })\n },\n '[data-part=\"item-indicator\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemIndicatorProps({ item: { value, label } })\n },\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n this.value = api.value\n this.valueAsString = api.valueAsString\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"select-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"select-control\">\n <button\n data-part=\"trigger\"\n class=\"select-trigger flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <span data-part=\"value-text\" class=\"select-value-text\">\n {this.valueAsString || props.placeholder || 'Select...'}\n </span>\n <span data-part=\"indicator\" class=\"select-indicator\">\n &#x25BC;\n </span>\n </button>\n </div>\n <div data-part=\"positioner\" class=\"select-positioner\">\n <div\n data-part=\"content\"\n class=\"select-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n <div data-part=\"list\">\n {items.map((item: any) => (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span data-part=\"item-text\" data-value={item.value} data-label={item.label}>\n {item.label}\n </span>\n <span\n data-part=\"item-indicator\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item-indicator ml-auto\"\n >\n &#x2713;\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Component } from "@geajs/core";
2
+
3
+ //#region src/components/separator.d.ts
4
+ declare class Separator extends Component {
5
+ template(props: any): string;
6
+ }
7
+ //#endregion
8
+ export { Separator as default };
9
+ //# sourceMappingURL=separator.d.mts.map
@@ -0,0 +1,49 @@
1
+ import { t as cn } from "./cn.mjs";
2
+ import { Component, GEA_CTOR_TAG_NAME, GEA_ELEMENT } from "@geajs/core";
3
+ //#region src/components/separator.tsx
4
+ var Separator = class extends Component {
5
+ static {
6
+ this[GEA_CTOR_TAG_NAME] = "separator";
7
+ }
8
+ template(props) {
9
+ const __id = this.id;
10
+ const isVertical = props.orientation === "vertical";
11
+ return `<div id="${__id}"${cn("shrink-0 bg-border", isVertical ? "h-full w-[1px]" : "h-[1px] w-full", props.class) == null || cn("shrink-0 bg-border", isVertical ? "h-full w-[1px]" : "h-[1px] w-full", props.class) === false ? "" : ` class="${(cn("shrink-0 bg-border", isVertical ? "h-full w-[1px]" : "h-[1px] w-full", props.class) != null ? String(cn("shrink-0 bg-border", isVertical ? "h-full w-[1px]" : "h-[1px] w-full", props.class)) : "").trim()}"`} role="separator"${(props.orientation || "horizontal") == null || (props.orientation || "horizontal") === false ? "" : ` aria-orientation="${props.orientation || "horizontal"}"`}></div>`;
12
+ }
13
+ __onPropChange(key, value) {
14
+ if (key === "orientation") {
15
+ {
16
+ const __el = this[GEA_ELEMENT];
17
+ this.props;
18
+ const __boundValue = cn("shrink-0 bg-border", this.props.orientation === "vertical" ? "h-full w-[1px]" : "h-[1px] w-full", this.props.class);
19
+ if (__el) {
20
+ const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
21
+ if (__el.className !== __newClass) __el.className = __newClass;
22
+ }
23
+ }
24
+ {
25
+ const __el = this[GEA_ELEMENT];
26
+ this.props;
27
+ const __boundValue = value || "horizontal";
28
+ if (__el) if (__boundValue === null || __boundValue === void 0) __el.removeAttribute("aria-orientation");
29
+ else {
30
+ const __newAttr = String(__boundValue);
31
+ if (__el.getAttribute("aria-orientation") !== __newAttr) __el.setAttribute("aria-orientation", __newAttr);
32
+ }
33
+ }
34
+ }
35
+ if (key === "class") {
36
+ const __el = this[GEA_ELEMENT];
37
+ this.props;
38
+ const __boundValue = cn("shrink-0 bg-border", this.props.orientation === "vertical" ? "h-full w-[1px]" : "h-[1px] w-full", value);
39
+ if (__el) {
40
+ const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
41
+ if (__el.className !== __newClass) __el.className = __newClass;
42
+ }
43
+ }
44
+ }
45
+ };
46
+ //#endregion
47
+ export { Separator as default };
48
+
49
+ //# sourceMappingURL=separator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.mjs","names":["Component","GEA_RENDERED","GEA_ELEMENT","GEA_MAPS","GEA_CONDS","GEA_RESET_ELS","GEA_OBSERVE","GEA_OBSERVE_LIST","GEA_EL","GEA_UPDATE_TEXT","GEA_REQUEST_RENDER","GEA_UPDATE_PROPS","GEA_SYNC_MAP","GEA_REGISTER_MAP","GEA_PATCH_COND","GEA_REGISTER_COND","GEA_REFRESH_LIST","GEA_RECONCILE_LIST","GEA_ENSURE_ARRAY_CONFIGS","GEA_APPLY_LIST_CHANGES","GEA_SWAP_CHILD","GEA_SWAP_STATE_CHILDREN","GEA_CHILD","GEA_LIST_CONFIG_REFRESHING","GEA_DOM_KEY","GEA_DOM_ITEM","GEA_DOM_PROPS","GEA_MAP_CONFIG_TPL","GEA_MAP_CONFIG_PREV","GEA_MAP_CONFIG_COUNT","geaCondPatchedSymbol","geaCondValueSymbol","geaObservePrevSymbol","geaPrevGuardSymbol","GEA_SETUP_LOCAL_STATE_OBSERVERS","geaSanitizeAttr","geaEscapeHtml","GEA_CTOR_TAG_NAME","cn","Separator","template","props","__id","id","isVertical","orientation","class","String","trim","__onPropChange","key","value","__el","__boundValue","__newClass","className","undefined","removeAttribute","__newAttr","getAttribute","setAttribute"],"sources":["../src/components/separator.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Separator extends Component {\n template(props: any) {\n const isVertical = props.orientation === 'vertical'\n\n return (\n <div\n class={cn('shrink-0 bg-border', isVertical ? 'h-full w-[1px]' : 'h-[1px] w-full', props.class)}\n role=\"separator\"\n aria-orientation={props.orientation || 'horizontal'}\n ></div>\n )\n }\n}\n"],"mappings":";;;AAGA,IAAqBuC,YAArB,cAAuCvC,UAAU;;OAAAqC,qBAAA;;CAC/CG,SAASC,OAAY;EAAA,MAAAC,OAAA,KAAAC;EACnB,MAAMC,aAAaH,MAAMI,gBAAgB;AAEzC,SAAA,YAAAH,KAAA,GAEWJ,GAAG,sBAAsBM,aAAa,mBAAmB,kBAAkBH,MAAMK,MAAM,IAAA,QAAvFR,GAAG,sBAAsBM,aAAa,mBAAmB,kBAAkBH,MAAMK,MAAM,KAAA,QAAA,KAAA,YAAvFR,GAAG,sBAAsBM,aAAa,mBAAmB,kBAAkBH,MAAMK,MAAM,IAAA,OAAAC,OAAvFT,GAAG,sBAAsBM,aAAa,mBAAmB,kBAAkBH,MAAMK,MAAM,CAAA,GAAA,IAAAE,MAAA,CAAA,GAAA,oBAE5EP,MAAMI,eAAe,iBAAY,SAAjCJ,MAAMI,eAAe,kBAAY,QAAA,KAAA,sBAAjCJ,MAAMI,eAAe,aAAY,GAAA;;CAV3DI,eAAsBC,KAAKC,OAAK;AAAA,MAAAD,QAAA,eAAA;GAAA;IAAA,MAAAE,OAAA,KAAAlD;AAGX,SAAAuC;IACkC,MAAAY,eAIxCf,GAAG,sBAJE,KAAAG,MAASI,gBAAgB,aAIQ,mBAAmB,kBAAgB,KAAAJ,MAAQK,MAAK;AAAA,QAAAM,MAAA;KAAA,MAAAE,cAAAD,gBAAA,OAAAN,OAAAM,aAAA,GAAA,IAAAL,MAAA;AAAA,SAAAI,KAAAG,cAAAD,WAAAF,MAAAG,YAAAD;;;GAAA;IAAA,MAAAF,OAAA,KAAAlD;AALhF,SAAAuC;IAAA,MAAAY,eAAAF,SAO0B;AAAY,QAAAC,KAAA,KAAAC,iBAAA,QAAAA,iBAAAG,KAAAA,EAAAJ,MAAAK,gBAAA,mBAAA;SAAA;KAAA,MAAAC,YAAAX,OAAAM,aAAA;AAAA,SAAAD,KAAAO,aAAA,mBAAA,KAAAD,UAAAN,MAAAQ,aAAA,oBAAAF,UAAA;;;;AAAA,MAAAR,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAAlD;AAPtC,QAAAuC;GACkC,MAAAY,eAIxCf,GAAG,sBAJE,KAAAG,MAASI,gBAAgB,aAIQ,mBAAmB,kBAAgBM,MAAA;AAAA,OAAAC,MAAA;IAAA,MAAAE,cAAAD,gBAAA,OAAAN,OAAAM,aAAA,GAAA,IAAAL,MAAA;AAAA,QAAAI,KAAAG,cAAAD,WAAAF,MAAAG,YAAAD"}
@@ -0,0 +1,9 @@
1
+ import { Component } from "@geajs/core";
2
+
3
+ //#region src/components/skeleton.d.ts
4
+ declare class Skeleton extends Component {
5
+ template(props: any): string;
6
+ }
7
+ //#endregion
8
+ export { Skeleton as default };
9
+ //# sourceMappingURL=skeleton.d.mts.map
@@ -0,0 +1,43 @@
1
+ import { t as cn } from "./cn.mjs";
2
+ import { Component, GEA_CTOR_TAG_NAME, GEA_ELEMENT } from "@geajs/core";
3
+ //#region src/components/skeleton.tsx
4
+ var Skeleton = class extends Component {
5
+ static {
6
+ this[GEA_CTOR_TAG_NAME] = "skeleton";
7
+ }
8
+ template(props) {
9
+ return `<div id="${this.id}"${cn("animate-pulse rounded-md bg-primary/10", props.class) == null || cn("animate-pulse rounded-md bg-primary/10", props.class) === false ? "" : ` class="${(cn("animate-pulse rounded-md bg-primary/10", props.class) != null ? String(cn("animate-pulse rounded-md bg-primary/10", props.class)) : "").trim()}"`}></div>`;
10
+ }
11
+ static {
12
+ this.__tpl = (() => {
13
+ if (typeof document === "undefined") return void 0;
14
+ var t = document.createElement("template");
15
+ t.innerHTML = "<div></div>";
16
+ return t;
17
+ })();
18
+ }
19
+ __cloneTemplate() {
20
+ const __id = this.id;
21
+ var __tpl = this.constructor.__tpl;
22
+ if (!__tpl) throw new Error("[gea] __tpl missing for clone template");
23
+ var __root = __tpl.content.firstElementChild.cloneNode(true);
24
+ __root.id = __id;
25
+ __root.className = (cn("animate-pulse rounded-md bg-primary/10", props.class) != null ? String(cn("animate-pulse rounded-md bg-primary/10", props.class)) : "").trim();
26
+ return __root;
27
+ }
28
+ __onPropChange(key, value) {
29
+ if (key === "class") {
30
+ const __el = this[GEA_ELEMENT];
31
+ this.props;
32
+ const __boundValue = cn("animate-pulse rounded-md bg-primary/10", value);
33
+ if (__el) {
34
+ const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
35
+ if (__el.className !== __newClass) __el.className = __newClass;
36
+ }
37
+ }
38
+ }
39
+ };
40
+ //#endregion
41
+ export { Skeleton as default };
42
+
43
+ //# sourceMappingURL=skeleton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.mjs","names":["Component","GEA_RENDERED","GEA_ELEMENT","GEA_MAPS","GEA_CONDS","GEA_RESET_ELS","GEA_OBSERVE","GEA_OBSERVE_LIST","GEA_EL","GEA_UPDATE_TEXT","GEA_REQUEST_RENDER","GEA_UPDATE_PROPS","GEA_SYNC_MAP","GEA_REGISTER_MAP","GEA_PATCH_COND","GEA_REGISTER_COND","GEA_REFRESH_LIST","GEA_RECONCILE_LIST","GEA_ENSURE_ARRAY_CONFIGS","GEA_APPLY_LIST_CHANGES","GEA_SWAP_CHILD","GEA_SWAP_STATE_CHILDREN","GEA_CHILD","GEA_LIST_CONFIG_REFRESHING","GEA_DOM_KEY","GEA_DOM_ITEM","GEA_DOM_PROPS","GEA_MAP_CONFIG_TPL","GEA_MAP_CONFIG_PREV","GEA_MAP_CONFIG_COUNT","geaCondPatchedSymbol","geaCondValueSymbol","geaObservePrevSymbol","geaPrevGuardSymbol","GEA_SETUP_LOCAL_STATE_OBSERVERS","geaSanitizeAttr","geaEscapeHtml","GEA_CTOR_TAG_NAME","cn","Skeleton","template","props","__id","id","class","String","trim","__tpl","document","undefined","t","createElement","innerHTML","__cloneTemplate","constructor","Error","__root","content","firstElementChild","cloneNode","className","__onPropChange","key","value","__el","__boundValue","__newClass"],"sources":["../src/components/skeleton.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Skeleton extends Component {\n template(props: any) {\n return <div class={cn('animate-pulse rounded-md bg-primary/10', props.class)}></div>\n }\n}\n"],"mappings":";;;AAGA,IAAqBuC,WAArB,cAAsCvC,UAAU;;OAAAqC,qBAAA;;CAC9CG,SAASC,OAAY;AACnB,SAAA,YADmB,KAAAE,GACnB,GAAmBL,GAAG,0CAA0CG,MAAMG,MAAM,IAAA,QAAzDN,GAAG,0CAA0CG,MAAMG,MAAM,KAAA,QAAA,KAAA,YAAzDN,GAAG,0CAA0CG,MAAMG,MAAM,IAAA,OAAAC,OAAzDP,GAAG,0CAA0CG,MAAMG,MAAM,CAAA,GAAA,IAAAE,MAAA,CAAA,GAAA;;;sBAC7E;AAAA,OAAA,OAAAE,aAAA,YAAA,QAAAC,KAAAA;GAAA,IAAAC,IAAAF,SAAAG,cAAA,WAAA;AAAAD,KAAAE,YAAA;AAAA,UAAAF;MAAA;;CAAAG,kBAAA;EAAA,MAAAX,OAAA,KAAAC;EAAA,IAAAI,QAAA,KAAAO,YAAAP;AAAA,MAAA,CAAAA,MAAA,OAAA,IAAAQ,MAAA,yCAAA;EAAA,IAAAC,SAAAT,MAAAU,QAAAC,kBAAAC,UAAA,KAAA;AAAAH,SAAAb,KAAAD;AAAAc,SAAAI,aADoBtB,GAAG,0CAA0CG,MAAMG,MAAM,IAAA,OAAAC,OAAzDP,GAAG,0CAA0CG,MAAMG,MAAM,CAAA,GAAA,IAAAE,MAAA;AAAA,SAAAU;;CAJhFK,eAAsBC,KAAKC,OAAK;AAAA,MAAAD,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAA9D;AAGX,QAAAuC;GAAA,MAAAwB,eACE3B,GAAG,0CAAwCyB,MAAA;AAAA,OAAAC,MAAA;IAAA,MAAAE,cAAAD,gBAAA,OAAApB,OAAAoB,aAAA,GAAA,IAAAnB,MAAA;AAAA,QAAAkB,KAAAJ,cAAAM,WAAAF,MAAAJ,YAAAM"}
@@ -0,0 +1,44 @@
1
+ import { n as ZagComponent } from "./zag-component.mjs";
2
+ import * as slider from "@zag-js/slider";
3
+ import * as _$_zag_js_types0 from "@zag-js/types";
4
+
5
+ //#region src/components/slider.d.ts
6
+ declare class Slider extends ZagComponent {
7
+ value: number[];
8
+ createMachine(_props: any): any;
9
+ getMachineProps(props: any): {
10
+ id: any;
11
+ value: any;
12
+ defaultValue: any;
13
+ min: any;
14
+ max: any;
15
+ step: any;
16
+ orientation: any;
17
+ thumbAlignment: any;
18
+ disabled: any;
19
+ readOnly: any;
20
+ name: any;
21
+ 'aria-label': any;
22
+ onValueChange: (details: slider.ValueChangeDetails) => void;
23
+ onValueChangeEnd: any;
24
+ };
25
+ connectApi(service: any): slider.Api<_$_zag_js_types0.PropTypes<{
26
+ [x: string]: any;
27
+ }>>;
28
+ getSpreadMap(): {
29
+ '[data-part="root"]': string;
30
+ '[data-part="label"]': string;
31
+ '[data-part="control"]': string;
32
+ '[data-part="track"]': string;
33
+ '[data-part="range"]': string;
34
+ '[data-part="thumb"]': (api: any, el: any) => any;
35
+ '[data-part="hidden-input"]': (api: any, el: any) => any;
36
+ };
37
+ _syncThumbs(): void;
38
+ syncState(api: any): void;
39
+ _applyAllSpreads(): void;
40
+ template(props: any): string;
41
+ }
42
+ //#endregion
43
+ export { Slider as default };
44
+ //# sourceMappingURL=slider.d.mts.map
@@ -0,0 +1,117 @@
1
+ import { t as ZagComponent } from "./zag-component.mjs";
2
+ import { Component, GEA_CTOR_TAG_NAME, GEA_ELEMENT, GEA_PATCH_COND, GEA_REGISTER_COND, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
3
+ import { normalizeProps } from "@zag-js/vanilla";
4
+ import * as slider from "@zag-js/slider";
5
+ //#region src/components/slider.tsx
6
+ const THUMB_CLASS = "slider-thumb block h-5 w-5 rounded-full border-2 border-primary bg-background shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2";
7
+ var Slider = class extends ZagComponent {
8
+ static {
9
+ this[GEA_CTOR_TAG_NAME] = "slider";
10
+ }
11
+ constructor(...args) {
12
+ super(...args);
13
+ this.props;
14
+ this[geaCondValueSymbol(0)] = !!this.props.label;
15
+ this[GEA_REGISTER_COND](0, "c0", () => {
16
+ this.props;
17
+ return this.props.label;
18
+ }, () => {
19
+ this.props;
20
+ return `<div class="flex justify-between mb-2"><label data-part="label" class="slider-label text-sm font-medium">${geaEscapeHtml(String(this.props.label))}</label></div>`;
21
+ }, null);
22
+ }
23
+ createMachine(_props) {
24
+ return slider.machine;
25
+ }
26
+ getMachineProps(props) {
27
+ return {
28
+ id: this.id,
29
+ value: props.value,
30
+ defaultValue: props.defaultValue ?? [50],
31
+ min: props.min ?? 0,
32
+ max: props.max ?? 100,
33
+ step: props.step ?? 1,
34
+ orientation: props.orientation ?? "horizontal",
35
+ thumbAlignment: props.thumbAlignment ?? "center",
36
+ disabled: props.disabled,
37
+ readOnly: props.readOnly,
38
+ name: props.name,
39
+ "aria-label": props["aria-label"],
40
+ onValueChange: (details) => {
41
+ this.value = details.value;
42
+ props.onValueChange?.(details);
43
+ },
44
+ onValueChangeEnd: props.onValueChangeEnd
45
+ };
46
+ }
47
+ connectApi(service) {
48
+ return slider.connect(service, normalizeProps);
49
+ }
50
+ getSpreadMap() {
51
+ return {
52
+ "[data-part=\"root\"]": "getRootProps",
53
+ "[data-part=\"label\"]": "getLabelProps",
54
+ "[data-part=\"control\"]": "getControlProps",
55
+ "[data-part=\"track\"]": "getTrackProps",
56
+ "[data-part=\"range\"]": "getRangeProps",
57
+ "[data-part=\"thumb\"]": (api, el) => {
58
+ const index = parseInt(el.dataset.index || "0", 10);
59
+ return api.getThumbProps({ index });
60
+ },
61
+ "[data-part=\"hidden-input\"]": (api, el) => {
62
+ const index = parseInt(el.dataset.index || "0", 10);
63
+ return api.getHiddenInputProps({ index });
64
+ }
65
+ };
66
+ }
67
+ _syncThumbs() {
68
+ if (!this._api || !this.el) return;
69
+ const control = this.el.querySelector("[data-part=\"control\"]");
70
+ if (!control) return;
71
+ const thumbCount = this._api.value.length;
72
+ const existing = control.querySelectorAll(":scope > [data-part=\"thumb\"]");
73
+ if (existing.length === thumbCount) return;
74
+ if (existing.length < thumbCount) for (let i = existing.length; i < thumbCount; i++) {
75
+ const thumb = document.createElement("div");
76
+ thumb.setAttribute("data-part", "thumb");
77
+ thumb.setAttribute("data-index", String(i));
78
+ thumb.className = THUMB_CLASS;
79
+ const input = document.createElement("input");
80
+ input.setAttribute("data-part", "hidden-input");
81
+ input.setAttribute("data-index", String(i));
82
+ input.type = "hidden";
83
+ thumb.appendChild(input);
84
+ control.appendChild(thumb);
85
+ }
86
+ else for (let i = existing.length - 1; i >= thumbCount; i--) existing[i].remove();
87
+ }
88
+ syncState(api) {
89
+ this.value = api.value;
90
+ }
91
+ _applyAllSpreads() {
92
+ this._syncThumbs();
93
+ this._elementCache?.clear();
94
+ super._applyAllSpreads();
95
+ }
96
+ template(props) {
97
+ const __id = this.id;
98
+ Component._register(ZagComponent, "zag-component");
99
+ return `<div id="${__id}" data-part="root"${"w-full " + (props.class || "") == null || "w-full " + (props.class || "") === false ? "" : ` class="${("w-full " + (props.class || "") != null ? String("w-full " + (props.class || "")) : "").trim()}"`}><!--${__id + "-c0"}-->${props.label && `<div class="flex justify-between mb-2"><label data-part="label" class="slider-label text-sm font-medium">${geaEscapeHtml(String(props.label))}</label></div>` || ""}<!--${__id + "-c0-end"}--><div data-part="control" class="slider-control relative flex items-center"><div data-part="track" class="slider-track relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20"><div data-part="range" class="slider-range absolute h-full bg-primary"></div></div><div data-part="thumb" data-index="0"${THUMB_CLASS == null || THUMB_CLASS === false ? "" : ` class="${(THUMB_CLASS != null ? String(THUMB_CLASS) : "").trim()}"`}><input data-part="hidden-input" data-index="0" type="hidden" /></div></div></div>`;
100
+ }
101
+ __onPropChange(key, value) {
102
+ if (key === "class") {
103
+ const __el = this[GEA_ELEMENT];
104
+ this.props;
105
+ const __boundValue = "w-full " + (value || "");
106
+ if (__el) {
107
+ const __newClass = (__boundValue != null ? String(__boundValue) : "").trim();
108
+ if (__el.className !== __newClass) __el.className = __newClass;
109
+ }
110
+ }
111
+ if (key === "label") this[GEA_PATCH_COND](0);
112
+ }
113
+ };
114
+ //#endregion
115
+ export { Slider as default };
116
+
117
+ //# sourceMappingURL=slider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.mjs","names":["slider","normalizeProps","ZagComponent","THUMB_CLASS","Slider","GEA_CTOR_TAG_NAME","constructor","args","props","geaCondValueSymbol","label","GEA_REGISTER_COND","geaEscapeHtml","String","value","createMachine","_props","machine","getMachineProps","id","defaultValue","min","max","step","orientation","thumbAlignment","disabled","readOnly","name","onValueChange","details","ValueChangeDetails","onValueChangeEnd","connectApi","service","connect","getSpreadMap","[data-part=\"thumb\"]","api","el","index","parseInt","HTMLElement","dataset","getThumbProps","[data-part=\"hidden-input\"]","getHiddenInputProps","_syncThumbs","_api","control","querySelector","thumbCount","length","existing","querySelectorAll","i","thumb","document","createElement","setAttribute","className","input","type","appendChild","remove","syncState","_applyAllSpreads","_elementCache","clear","template","__id","Component","_register","class","trim","__onPropChange","key","__el","GEA_ELEMENT","__boundValue","__newClass","GEA_PATCH_COND"],"sources":["../src/components/slider.tsx"],"sourcesContent":["import * as slider from '@zag-js/slider'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nconst THUMB_CLASS =\n 'slider-thumb block h-5 w-5 rounded-full border-2 border-primary bg-background shadow ' +\n 'ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 ' +\n 'focus-visible:ring-ring focus-visible:ring-offset-2'\n\nexport default class Slider extends ZagComponent {\n declare value: number[]\n\n createMachine(_props: any): any {\n return slider.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue ?? [50],\n min: props.min ?? 0,\n max: props.max ?? 100,\n step: props.step ?? 1,\n orientation: props.orientation ?? 'horizontal',\n thumbAlignment: props.thumbAlignment ?? 'center',\n disabled: props.disabled,\n readOnly: props.readOnly,\n name: props.name,\n 'aria-label': props['aria-label'],\n onValueChange: (details: slider.ValueChangeDetails) => {\n this.value = details.value\n props.onValueChange?.(details)\n },\n onValueChangeEnd: props.onValueChangeEnd,\n }\n }\n\n connectApi(service: any) {\n return slider.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"track\"]': 'getTrackProps',\n '[data-part=\"range\"]': 'getRangeProps',\n '[data-part=\"thumb\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getThumbProps({ index })\n },\n '[data-part=\"hidden-input\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getHiddenInputProps({ index })\n },\n }\n }\n\n _syncThumbs() {\n if (!this._api || !this.el) return\n const control = this.el.querySelector('[data-part=\"control\"]')\n if (!control) return\n\n const thumbCount = this._api.value.length\n const existing = control.querySelectorAll(':scope > [data-part=\"thumb\"]')\n\n if (existing.length === thumbCount) return\n\n if (existing.length < thumbCount) {\n for (let i = existing.length; i < thumbCount; i++) {\n const thumb = document.createElement('div')\n thumb.setAttribute('data-part', 'thumb')\n thumb.setAttribute('data-index', String(i))\n thumb.className = THUMB_CLASS\n\n const input = document.createElement('input')\n input.setAttribute('data-part', 'hidden-input')\n input.setAttribute('data-index', String(i))\n input.type = 'hidden'\n thumb.appendChild(input)\n\n control.appendChild(thumb)\n }\n } else {\n for (let i = existing.length - 1; i >= thumbCount; i--) {\n existing[i].remove()\n }\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n }\n\n _applyAllSpreads() {\n this._syncThumbs()\n this._elementCache?.clear()\n super._applyAllSpreads()\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={'w-full ' + (props.class || '')}>\n {props.label && (\n <div class=\"flex justify-between mb-2\">\n <label data-part=\"label\" class=\"slider-label text-sm font-medium\">\n {props.label}\n </label>\n </div>\n )}\n <div data-part=\"control\" class=\"slider-control relative flex items-center\">\n <div\n data-part=\"track\"\n class=\"slider-track relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\"\n >\n <div data-part=\"range\" class=\"slider-range absolute h-full bg-primary\"></div>\n </div>\n <div data-part=\"thumb\" data-index=\"0\" class={THUMB_CLASS}>\n <input data-part=\"hidden-input\" data-index=\"0\" type=\"hidden\" />\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}