svelte-comp 1.3.3 → 1.3.6

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 (138) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +101 -100
  3. package/dist/App.svelte +507 -507
  4. package/dist/Container.svelte +59 -59
  5. package/dist/app.css +234 -235
  6. package/dist/app.d.ts +10 -0
  7. package/dist/lib/Accordion.svelte +155 -155
  8. package/dist/lib/Badge.svelte +44 -44
  9. package/dist/lib/Button.svelte +185 -170
  10. package/dist/lib/Calendar.svelte +384 -384
  11. package/dist/lib/Card.svelte +103 -103
  12. package/dist/lib/Carousel.svelte +293 -293
  13. package/dist/lib/Carousel.svelte.d.ts +1 -1
  14. package/dist/lib/CheckBox.svelte +210 -210
  15. package/dist/lib/CodeView.svelte +308 -307
  16. package/dist/lib/ColorPicker.svelte +159 -159
  17. package/dist/lib/ContextMenu.svelte +328 -322
  18. package/dist/lib/DatePicker.svelte +246 -246
  19. package/dist/lib/Dialog.svelte +233 -233
  20. package/dist/lib/Field.svelte +299 -299
  21. package/dist/lib/FilePicker.svelte +295 -240
  22. package/dist/lib/FilePicker.svelte.d.ts +6 -1
  23. package/dist/lib/Form.svelte +438 -438
  24. package/dist/lib/Hamburger.svelte +217 -217
  25. package/dist/lib/InstallPWA.svelte +94 -94
  26. package/dist/lib/Menu.svelte +623 -623
  27. package/dist/lib/NoticeBase.svelte +140 -140
  28. package/dist/lib/PaginatedCard.svelte +73 -73
  29. package/dist/lib/Pagination.svelte +119 -119
  30. package/dist/lib/PrimaryColorSelect.svelte +111 -111
  31. package/dist/lib/ProgressBar.svelte +141 -141
  32. package/dist/lib/ProgressCircle.svelte +190 -190
  33. package/dist/lib/Radio.svelte +189 -189
  34. package/dist/lib/SearchInput.svelte +104 -104
  35. package/dist/lib/Select.svelte +524 -524
  36. package/dist/lib/Slider.svelte +253 -253
  37. package/dist/lib/Splitter.svelte +159 -150
  38. package/dist/lib/Switch.svelte +168 -167
  39. package/dist/lib/Table.svelte +299 -299
  40. package/dist/lib/Tabs.svelte +213 -213
  41. package/dist/lib/ThemeToggle.svelte +128 -127
  42. package/dist/lib/TimePicker.svelte +312 -312
  43. package/dist/lib/TimePickerNew.svelte +634 -0
  44. package/dist/lib/TimePickerNew.svelte.d.ts +49 -0
  45. package/dist/lib/Toast.svelte +123 -123
  46. package/dist/lib/Tooltip.svelte +110 -110
  47. package/dist/lib/Topbar.svelte +107 -107
  48. package/dist/lib/__tests__/Accordion.test.d.ts +1 -0
  49. package/dist/lib/__tests__/Accordion.test.js +171 -0
  50. package/dist/lib/__tests__/Badge.test.d.ts +1 -0
  51. package/dist/lib/__tests__/Badge.test.js +41 -0
  52. package/dist/lib/__tests__/Button.test.d.ts +1 -0
  53. package/dist/lib/__tests__/Button.test.js +269 -0
  54. package/dist/lib/__tests__/Calendar.test.d.ts +1 -0
  55. package/dist/lib/__tests__/Calendar.test.js +171 -0
  56. package/dist/lib/__tests__/Card.test.d.ts +1 -0
  57. package/dist/lib/__tests__/Card.test.js +148 -0
  58. package/dist/lib/__tests__/Carousel.test.d.ts +1 -0
  59. package/dist/lib/__tests__/Carousel.test.js +439 -0
  60. package/dist/lib/__tests__/CheckBox.test.d.ts +1 -0
  61. package/dist/lib/__tests__/CheckBox.test.js +152 -0
  62. package/dist/lib/__tests__/CodeView.test.d.ts +1 -0
  63. package/dist/lib/__tests__/CodeView.test.js +157 -0
  64. package/dist/lib/__tests__/ColorPicker.test.d.ts +1 -0
  65. package/dist/lib/__tests__/ColorPicker.test.js +93 -0
  66. package/dist/lib/__tests__/ContextMenu.test.d.ts +1 -0
  67. package/dist/lib/__tests__/ContextMenu.test.js +67 -0
  68. package/dist/lib/__tests__/DatePicker.test.d.ts +1 -0
  69. package/dist/lib/__tests__/DatePicker.test.js +108 -0
  70. package/dist/lib/__tests__/Dialog.test.d.ts +1 -0
  71. package/dist/lib/__tests__/Dialog.test.js +183 -0
  72. package/dist/lib/__tests__/Field.test.d.ts +1 -0
  73. package/dist/lib/__tests__/Field.test.js +190 -0
  74. package/dist/lib/__tests__/FilePicker.test.d.ts +1 -0
  75. package/dist/lib/__tests__/FilePicker.test.js +179 -0
  76. package/dist/lib/__tests__/Form.integration.test.d.ts +1 -0
  77. package/dist/lib/__tests__/Form.integration.test.js +158 -0
  78. package/dist/lib/__tests__/Form.test.d.ts +1 -0
  79. package/dist/lib/__tests__/Form.test.js +463 -0
  80. package/dist/lib/__tests__/Hamburger.test.d.ts +1 -0
  81. package/dist/lib/__tests__/Hamburger.test.js +161 -0
  82. package/dist/lib/__tests__/InstallPWA.test.d.ts +1 -0
  83. package/dist/lib/__tests__/InstallPWA.test.js +15 -0
  84. package/dist/lib/__tests__/Menu.test.d.ts +1 -0
  85. package/dist/lib/__tests__/Menu.test.js +285 -0
  86. package/dist/lib/__tests__/NoticeBase.test.d.ts +1 -0
  87. package/dist/lib/__tests__/NoticeBase.test.js +60 -0
  88. package/dist/lib/__tests__/PaginatedCard.test.d.ts +1 -0
  89. package/dist/lib/__tests__/PaginatedCard.test.js +89 -0
  90. package/dist/lib/__tests__/Pagination.test.d.ts +1 -0
  91. package/dist/lib/__tests__/Pagination.test.js +168 -0
  92. package/dist/lib/__tests__/PrimaryColorSelect.test.d.ts +1 -0
  93. package/dist/lib/__tests__/PrimaryColorSelect.test.js +92 -0
  94. package/dist/lib/__tests__/ProgressBar.test.d.ts +1 -0
  95. package/dist/lib/__tests__/ProgressBar.test.js +69 -0
  96. package/dist/lib/__tests__/ProgressCircle.test.d.ts +1 -0
  97. package/dist/lib/__tests__/ProgressCircle.test.js +71 -0
  98. package/dist/lib/__tests__/Radio.test.d.ts +1 -0
  99. package/dist/lib/__tests__/Radio.test.js +127 -0
  100. package/dist/lib/__tests__/SearchInput.test.d.ts +1 -0
  101. package/dist/lib/__tests__/SearchInput.test.js +80 -0
  102. package/dist/lib/__tests__/Select.test.d.ts +1 -0
  103. package/dist/lib/__tests__/Select.test.js +408 -0
  104. package/dist/lib/__tests__/Slider.test.d.ts +1 -0
  105. package/dist/lib/__tests__/Slider.test.js +213 -0
  106. package/dist/lib/__tests__/Splitter.test.d.ts +1 -0
  107. package/dist/lib/__tests__/Splitter.test.js +87 -0
  108. package/dist/lib/__tests__/Switch.test.d.ts +1 -0
  109. package/dist/lib/__tests__/Switch.test.js +97 -0
  110. package/dist/lib/__tests__/Table.test.d.ts +1 -0
  111. package/dist/lib/__tests__/Table.test.js +349 -0
  112. package/dist/lib/__tests__/Tabs.test.d.ts +1 -0
  113. package/dist/lib/__tests__/Tabs.test.js +262 -0
  114. package/dist/lib/__tests__/ThemeToggle.test.d.ts +1 -0
  115. package/dist/lib/__tests__/ThemeToggle.test.js +84 -0
  116. package/dist/lib/__tests__/TimePicker.test.d.ts +1 -0
  117. package/dist/lib/__tests__/TimePicker.test.js +146 -0
  118. package/dist/lib/__tests__/TimePickerNew.test.d.ts +1 -0
  119. package/dist/lib/__tests__/TimePickerNew.test.js +322 -0
  120. package/dist/lib/__tests__/Toast.test.d.ts +1 -0
  121. package/dist/lib/__tests__/Toast.test.js +135 -0
  122. package/dist/lib/__tests__/Tooltip.test.d.ts +1 -0
  123. package/dist/lib/__tests__/Tooltip.test.js +171 -0
  124. package/dist/lib/__tests__/Topbar.test.d.ts +1 -0
  125. package/dist/lib/__tests__/Topbar.test.js +25 -0
  126. package/dist/lib/__tests__/setupLangContext.d.ts +1 -0
  127. package/dist/lib/__tests__/setupLangContext.js +65 -0
  128. package/dist/lib/__tests__/storage.test.d.ts +1 -0
  129. package/dist/lib/__tests__/storage.test.js +124 -0
  130. package/dist/lib/__tests__/utils.test.d.ts +1 -0
  131. package/dist/lib/__tests__/utils.test.js +11 -0
  132. package/dist/lib/index.d.ts +1 -0
  133. package/dist/lib/index.js +1 -0
  134. package/dist/lib/lang.d.ts +4 -0
  135. package/dist/lib/lang.js +4 -0
  136. package/dist/styles.css +234 -232
  137. package/dist/utils/index.js +15 -4
  138. package/package.json +52 -52
@@ -0,0 +1,92 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ // src/lib/__tests__/PrimaryColorSelect.test.ts
38
+ import "./setupLangContext";
39
+ import { render, fireEvent } from "@testing-library/svelte";
40
+ import { describe, it, expect } from "vitest";
41
+ import PrimaryColorSelect from "../PrimaryColorSelect.svelte";
42
+ describe("PrimaryColorSelect", function () {
43
+ it("renders default label and sets data-primary", function () { return __awaiter(void 0, void 0, void 0, function () {
44
+ var getByRole;
45
+ return __generator(this, function (_a) {
46
+ switch (_a.label) {
47
+ case 0:
48
+ localStorage.clear();
49
+ getByRole = render(PrimaryColorSelect).getByRole;
50
+ return [4 /*yield*/, Promise.resolve()];
51
+ case 1:
52
+ _a.sent();
53
+ expect(getByRole("combobox")).toBeTruthy();
54
+ expect(document.documentElement.getAttribute("data-primary")).toBe("default");
55
+ return [2 /*return*/];
56
+ }
57
+ });
58
+ }); });
59
+ it("loads saved primary color from localStorage", function () { return __awaiter(void 0, void 0, void 0, function () {
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0:
63
+ localStorage.setItem("primary", "cyan");
64
+ render(PrimaryColorSelect);
65
+ return [4 /*yield*/, Promise.resolve()];
66
+ case 1:
67
+ _a.sent();
68
+ expect(document.documentElement.getAttribute("data-primary")).toBe("cyan");
69
+ return [2 /*return*/];
70
+ }
71
+ });
72
+ }); });
73
+ it("updates localStorage and html attribute on change", function () { return __awaiter(void 0, void 0, void 0, function () {
74
+ var _a, getByRole, getByText, trigger;
75
+ return __generator(this, function (_b) {
76
+ switch (_b.label) {
77
+ case 0:
78
+ _a = render(PrimaryColorSelect), getByRole = _a.getByRole, getByText = _a.getByText;
79
+ trigger = getByRole("combobox");
80
+ return [4 /*yield*/, fireEvent.click(trigger)];
81
+ case 1:
82
+ _b.sent();
83
+ return [4 /*yield*/, fireEvent.click(getByText("Red"))];
84
+ case 2:
85
+ _b.sent();
86
+ expect(localStorage.getItem("primary")).toBe("red");
87
+ expect(document.documentElement.getAttribute("data-primary")).toBe("red");
88
+ return [2 /*return*/];
89
+ }
90
+ });
91
+ }); });
92
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,69 @@
1
+ // $lib/__tests__/ProgressBar.test.ts
2
+ import { render } from "@testing-library/svelte";
3
+ import { describe, it, expect } from "vitest";
4
+ import ProgressBar from "../ProgressBar.svelte";
5
+ describe("ProgressBar", function () {
6
+ it("renders with default props", function () {
7
+ var container = render(ProgressBar).container;
8
+ var progressBar = container.querySelector('[role="progressbar"]');
9
+ expect(progressBar).toBeDefined();
10
+ expect(progressBar.getAttribute("aria-valuenow")).toBe("0");
11
+ });
12
+ it("shows correct progress value", function () {
13
+ var container = render(ProgressBar, {
14
+ props: { value: 75 },
15
+ }).container;
16
+ var progressBar = container.querySelector('[role="progressbar"]');
17
+ var progressFill = container.querySelector(".transition-\\[width\\]");
18
+ expect(progressBar.getAttribute("aria-valuenow")).toBe("75");
19
+ expect(progressFill.style.width).toBe("75%");
20
+ });
21
+ it("clamps value between 0 and 100", function () {
22
+ var container = render(ProgressBar, {
23
+ props: { value: 150 },
24
+ }).container;
25
+ var progressBar = container.querySelector('[role="progressbar"]');
26
+ var progressFill = container.querySelector(".transition-\\[width\\]");
27
+ expect(progressBar.getAttribute("aria-valuenow")).toBe("100");
28
+ expect(progressFill.style.width).toBe("100%");
29
+ });
30
+ it("handles negative values", function () {
31
+ var container = render(ProgressBar, {
32
+ props: { value: -10 },
33
+ }).container;
34
+ var progressBar = container.querySelector('[role="progressbar"]');
35
+ var progressFill = container.querySelector(".transition-\\[width\\]");
36
+ expect(progressBar.getAttribute("aria-valuenow")).toBe("0");
37
+ expect(progressFill.style.width).toBe("0%");
38
+ });
39
+ it("shows indeterminate state", function () {
40
+ var container = render(ProgressBar, {
41
+ props: { indeterminate: true },
42
+ }).container;
43
+ var progressBar = container.querySelector('[role="progressbar"]');
44
+ var indeterminateElement = container.querySelector(".pb-indet");
45
+ expect(progressBar.getAttribute("aria-valuenow")).toBeNull();
46
+ expect(indeterminateElement).toBeDefined();
47
+ });
48
+ it("applies correct size classes", function () {
49
+ var container = render(ProgressBar, {
50
+ props: { sz: "lg" },
51
+ }).container;
52
+ var track = container.querySelector(".absolute.top-1\\/2.-translate-y-1\\/2.w-full");
53
+ expect(track === null || track === void 0 ? void 0 : track.className).toContain("h-[7px]");
54
+ });
55
+ it("applies correct variant classes", function () {
56
+ var container = render(ProgressBar, {
57
+ props: { variant: "neutral" },
58
+ }).container;
59
+ var progressFill = container.querySelector(".transition-\\[width\\]");
60
+ expect(progressFill === null || progressFill === void 0 ? void 0 : progressFill.className).toContain("bg-[var(--color-bg-secondary)]");
61
+ });
62
+ it("accepts external class", function () {
63
+ var container = render(ProgressBar, {
64
+ props: { class: "custom-class" },
65
+ }).container;
66
+ var progressBar = container.querySelector('[role="progressbar"]');
67
+ expect(progressBar === null || progressBar === void 0 ? void 0 : progressBar.className).toContain("custom-class");
68
+ });
69
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,71 @@
1
+ // $lib/__tests__/ProgressCircle.test.ts
2
+ import { render } from "@testing-library/svelte";
3
+ import { describe, it, expect } from "vitest";
4
+ import ProgressCircle from "../ProgressCircle.svelte";
5
+ describe("ProgressCircle", function () {
6
+ it("renders with default props", function () {
7
+ var container = render(ProgressCircle).container;
8
+ var progress = container.querySelector('[role="progressbar"]');
9
+ var text = container.textContent;
10
+ expect(progress).toBeTruthy();
11
+ expect(progress === null || progress === void 0 ? void 0 : progress.getAttribute("aria-valuenow")).toBe("0");
12
+ expect(text).toContain("0%");
13
+ });
14
+ it("shows correct progress value", function () {
15
+ var _a, _b;
16
+ var container = render(ProgressCircle, { props: { value: 75 } }).container;
17
+ var progress = container.querySelector('[role="progressbar"]');
18
+ var bar = container.querySelector(".pc-bar");
19
+ var circAttr = Number((_b = (_a = bar === null || bar === void 0 ? void 0 : bar.getAttribute("stroke-dasharray")) === null || _a === void 0 ? void 0 : _a.split(" ")[0]) !== null && _b !== void 0 ? _b : 0);
20
+ var expectedOffset = ((100 - 75) / 100) * circAttr;
21
+ expect(progress === null || progress === void 0 ? void 0 : progress.getAttribute("aria-valuenow")).toBe("75");
22
+ expect(Number(bar === null || bar === void 0 ? void 0 : bar.getAttribute("stroke-dashoffset"))).toBeCloseTo(expectedOffset, 4);
23
+ });
24
+ it("clamps values above 100", function () {
25
+ var container = render(ProgressCircle, { props: { value: 150 } }).container;
26
+ var progress = container.querySelector('[role="progressbar"]');
27
+ var bar = container.querySelector(".pc-bar");
28
+ var offset = Number(bar === null || bar === void 0 ? void 0 : bar.getAttribute("stroke-dashoffset"));
29
+ expect(progress === null || progress === void 0 ? void 0 : progress.getAttribute("aria-valuenow")).toBe("100");
30
+ expect(offset).toBeCloseTo(0, 4);
31
+ });
32
+ it("clamps negative values to 0", function () {
33
+ var _a, _b;
34
+ var container = render(ProgressCircle, { props: { value: -25 } }).container;
35
+ var progress = container.querySelector('[role="progressbar"]');
36
+ var bar = container.querySelector(".pc-bar");
37
+ var circAttr = Number((_b = (_a = bar === null || bar === void 0 ? void 0 : bar.getAttribute("stroke-dasharray")) === null || _a === void 0 ? void 0 : _a.split(" ")[0]) !== null && _b !== void 0 ? _b : 0);
38
+ expect(progress === null || progress === void 0 ? void 0 : progress.getAttribute("aria-valuenow")).toBe("0");
39
+ expect(Number(bar === null || bar === void 0 ? void 0 : bar.getAttribute("stroke-dashoffset"))).toBeCloseTo(circAttr, 4);
40
+ });
41
+ it("shows indeterminate state", function () {
42
+ var container = render(ProgressCircle, {
43
+ props: { indeterminate: true },
44
+ }).container;
45
+ var progress = container.querySelector('[role="progressbar"]');
46
+ var indet = container.querySelector(".pc-indet");
47
+ expect(progress === null || progress === void 0 ? void 0 : progress.getAttribute("aria-valuenow")).toBeNull();
48
+ expect(indet).toBeTruthy();
49
+ });
50
+ it("applies size styles", function () {
51
+ var _a, _b;
52
+ var _c = render(ProgressCircle, {
53
+ props: { sz: "md" },
54
+ }), container = _c.container, rerender = _c.rerender;
55
+ var ringWrapper = function () {
56
+ return container.querySelector(".relative.inline-flex.items-center.justify-center");
57
+ };
58
+ var mdWidth = (_a = ringWrapper()) === null || _a === void 0 ? void 0 : _a.style.width;
59
+ rerender({ sz: "lg" });
60
+ var lgWidth = (_b = ringWrapper()) === null || _b === void 0 ? void 0 : _b.style.width;
61
+ expect(mdWidth).not.toBe("");
62
+ expect(lgWidth).not.toBe(mdWidth);
63
+ });
64
+ it("applies neutral variant stroke", function () {
65
+ var container = render(ProgressCircle, {
66
+ props: { variant: "neutral" },
67
+ }).container;
68
+ var bar = container.querySelector(".pc-bar");
69
+ expect(bar === null || bar === void 0 ? void 0 : bar.classList.contains("stroke-[var(--color-bg-secondary)]")).toBe(true);
70
+ });
71
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,127 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ // $lib/__tests__/Radio.test.ts
38
+ import { render, fireEvent } from "@testing-library/svelte";
39
+ import { describe, it, expect, vi } from "vitest";
40
+ import Radio from "../Radio.svelte";
41
+ describe("Radio", function () {
42
+ it("renders with label", function () {
43
+ var getByLabelText = render(Radio, { props: { label: "Choice" } }).getByLabelText;
44
+ expect(getByLabelText("Choice")).toBeTruthy();
45
+ });
46
+ it("sets checked state when clicked", function () { return __awaiter(void 0, void 0, void 0, function () {
47
+ var getByLabelText, radio;
48
+ return __generator(this, function (_a) {
49
+ switch (_a.label) {
50
+ case 0:
51
+ getByLabelText = render(Radio, { props: { label: "Choice" } }).getByLabelText;
52
+ radio = getByLabelText("Choice");
53
+ expect(radio.checked).toBe(false);
54
+ return [4 /*yield*/, fireEvent.click(radio)];
55
+ case 1:
56
+ _a.sent();
57
+ expect(radio.checked).toBe(true);
58
+ return [2 /*return*/];
59
+ }
60
+ });
61
+ }); });
62
+ it("calls onChange with updated checked value", function () { return __awaiter(void 0, void 0, void 0, function () {
63
+ var handleChange, getByLabelText, radio;
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0:
67
+ handleChange = vi.fn();
68
+ getByLabelText = render(Radio, {
69
+ props: { label: "Choice", onChange: handleChange },
70
+ }).getByLabelText;
71
+ radio = getByLabelText("Choice");
72
+ return [4 /*yield*/, fireEvent.click(radio)];
73
+ case 1:
74
+ _a.sent();
75
+ expect(handleChange).toHaveBeenCalledWith(true);
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ }); });
80
+ it("applies size classes correctly", function () {
81
+ var container = render(Radio, {
82
+ props: { label: "Test", sz: "lg" },
83
+ }).container;
84
+ var circle = container.querySelector("span[data-state]");
85
+ expect(circle === null || circle === void 0 ? void 0 : circle.className).toContain("w-[18px]");
86
+ });
87
+ it("shows inner dot when checked", function () {
88
+ var container = render(Radio, {
89
+ props: { label: "Active", checked: true },
90
+ }).container;
91
+ var dot = container.querySelector("span[data-state] span");
92
+ expect(dot === null || dot === void 0 ? void 0 : dot.className).toContain("opacity-100");
93
+ });
94
+ it("applies neutral variant classes", function () {
95
+ var container = render(Radio, {
96
+ props: { label: "Neutral", variant: "neutral" },
97
+ }).container;
98
+ var circle = container.querySelector("span[data-state]");
99
+ expect(circle === null || circle === void 0 ? void 0 : circle.className).toContain("bg-transparent");
100
+ });
101
+ it("respects disabled attribute", function () { return __awaiter(void 0, void 0, void 0, function () {
102
+ var handleChange, getByLabelText, radio;
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0:
106
+ handleChange = vi.fn();
107
+ getByLabelText = render(Radio, {
108
+ props: { label: "Disabled", disabled: true, onChange: handleChange },
109
+ }).getByLabelText;
110
+ radio = getByLabelText("Disabled");
111
+ expect(radio.disabled).toBe(true);
112
+ return [4 /*yield*/, fireEvent.click(radio)];
113
+ case 1:
114
+ _a.sent();
115
+ expect(handleChange).toHaveBeenCalled();
116
+ return [2 /*return*/];
117
+ }
118
+ });
119
+ }); });
120
+ it("passes custom class to root wrapper", function () {
121
+ var container = render(Radio, {
122
+ props: { label: "Styled", class: "custom-radio" },
123
+ }).container;
124
+ var root = container.querySelector("label");
125
+ expect(root === null || root === void 0 ? void 0 : root.className).toContain("custom-radio");
126
+ });
127
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,80 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { describe, expect, it } from "vitest";
38
+ import { fireEvent, render } from "@testing-library/svelte";
39
+ import SearchInput from "../SearchInput.svelte";
40
+ describe("SearchInput", function () {
41
+ it("renders a search input with the default placeholder", function () {
42
+ expect.assertions(3);
43
+ var container = render(SearchInput).container;
44
+ var input = container.querySelector('input[type="search"]');
45
+ expect(input).not.toBeNull();
46
+ if (!input)
47
+ return;
48
+ expect(input.getAttribute("type")).toBe("search");
49
+ expect(input.getAttribute("placeholder")).toBe("Search");
50
+ });
51
+ it("renders a custom label and placeholder", function () {
52
+ expect.assertions(2);
53
+ var _a = render(SearchInput, {
54
+ props: { label: "Find", placeholder: "Search profiles" },
55
+ }), getByText = _a.getByText, container = _a.container;
56
+ expect(getByText("Find")).toBeTruthy();
57
+ var input = container.querySelector("input");
58
+ expect(input === null || input === void 0 ? void 0 : input.getAttribute("placeholder")).toBe("Search profiles");
59
+ });
60
+ it("updates the input value on user typing", function () { return __awaiter(void 0, void 0, void 0, function () {
61
+ var container, input;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ expect.assertions(1);
66
+ container = render(SearchInput, {
67
+ props: { value: "", placeholder: "Search" },
68
+ }).container;
69
+ input = container.querySelector("input");
70
+ if (!input)
71
+ return [2 /*return*/];
72
+ return [4 /*yield*/, fireEvent.input(input, { target: { value: "bolt" } })];
73
+ case 1:
74
+ _a.sent();
75
+ expect(input.value).toBe("bolt");
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ }); });
80
+ });
@@ -0,0 +1 @@
1
+ export {};