svelte-comp 1.3.3 → 1.3.5

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 (120) hide show
  1. package/README.md +12 -11
  2. package/dist/App.svelte +540 -540
  3. package/dist/app.css +2 -3
  4. package/dist/app.d.ts +10 -0
  5. package/dist/lib/Accordion.svelte +14 -14
  6. package/dist/lib/Button.svelte +23 -8
  7. package/dist/lib/Card.svelte +6 -6
  8. package/dist/lib/Carousel.svelte +16 -16
  9. package/dist/lib/Carousel.svelte.d.ts +1 -1
  10. package/dist/lib/CheckBox.svelte +2 -2
  11. package/dist/lib/CodeView.svelte +6 -5
  12. package/dist/lib/ContextMenu.svelte +19 -13
  13. package/dist/lib/Dialog.svelte +3 -3
  14. package/dist/lib/Field.svelte +1 -1
  15. package/dist/lib/FilePicker.svelte +66 -11
  16. package/dist/lib/FilePicker.svelte.d.ts +6 -1
  17. package/dist/lib/Hamburger.svelte +12 -12
  18. package/dist/lib/Menu.svelte +18 -18
  19. package/dist/lib/NoticeBase.svelte +5 -5
  20. package/dist/lib/Select.svelte +2 -2
  21. package/dist/lib/Slider.svelte +1 -1
  22. package/dist/lib/Splitter.svelte +15 -6
  23. package/dist/lib/Switch.svelte +5 -4
  24. package/dist/lib/Tabs.svelte +6 -6
  25. package/dist/lib/ThemeToggle.svelte +1 -0
  26. package/dist/lib/TimePickerNew.svelte +634 -0
  27. package/dist/lib/TimePickerNew.svelte.d.ts +49 -0
  28. package/dist/lib/Tooltip.svelte +7 -7
  29. package/dist/lib/Topbar.svelte +6 -6
  30. package/dist/lib/__tests__/Accordion.test.d.ts +1 -0
  31. package/dist/lib/__tests__/Accordion.test.js +171 -0
  32. package/dist/lib/__tests__/Badge.test.d.ts +1 -0
  33. package/dist/lib/__tests__/Badge.test.js +41 -0
  34. package/dist/lib/__tests__/Button.test.d.ts +1 -0
  35. package/dist/lib/__tests__/Button.test.js +269 -0
  36. package/dist/lib/__tests__/Calendar.test.d.ts +1 -0
  37. package/dist/lib/__tests__/Calendar.test.js +171 -0
  38. package/dist/lib/__tests__/Card.test.d.ts +1 -0
  39. package/dist/lib/__tests__/Card.test.js +148 -0
  40. package/dist/lib/__tests__/Carousel.test.d.ts +1 -0
  41. package/dist/lib/__tests__/Carousel.test.js +439 -0
  42. package/dist/lib/__tests__/CheckBox.test.d.ts +1 -0
  43. package/dist/lib/__tests__/CheckBox.test.js +152 -0
  44. package/dist/lib/__tests__/CodeView.test.d.ts +1 -0
  45. package/dist/lib/__tests__/CodeView.test.js +157 -0
  46. package/dist/lib/__tests__/ColorPicker.test.d.ts +1 -0
  47. package/dist/lib/__tests__/ColorPicker.test.js +93 -0
  48. package/dist/lib/__tests__/ContextMenu.test.d.ts +1 -0
  49. package/dist/lib/__tests__/ContextMenu.test.js +67 -0
  50. package/dist/lib/__tests__/DatePicker.test.d.ts +1 -0
  51. package/dist/lib/__tests__/DatePicker.test.js +108 -0
  52. package/dist/lib/__tests__/Dialog.test.d.ts +1 -0
  53. package/dist/lib/__tests__/Dialog.test.js +183 -0
  54. package/dist/lib/__tests__/Field.test.d.ts +1 -0
  55. package/dist/lib/__tests__/Field.test.js +190 -0
  56. package/dist/lib/__tests__/FilePicker.test.d.ts +1 -0
  57. package/dist/lib/__tests__/FilePicker.test.js +179 -0
  58. package/dist/lib/__tests__/Form.integration.test.d.ts +1 -0
  59. package/dist/lib/__tests__/Form.integration.test.js +158 -0
  60. package/dist/lib/__tests__/Form.test.d.ts +1 -0
  61. package/dist/lib/__tests__/Form.test.js +463 -0
  62. package/dist/lib/__tests__/Hamburger.test.d.ts +1 -0
  63. package/dist/lib/__tests__/Hamburger.test.js +161 -0
  64. package/dist/lib/__tests__/InstallPWA.test.d.ts +1 -0
  65. package/dist/lib/__tests__/InstallPWA.test.js +15 -0
  66. package/dist/lib/__tests__/Menu.test.d.ts +1 -0
  67. package/dist/lib/__tests__/Menu.test.js +285 -0
  68. package/dist/lib/__tests__/NoticeBase.test.d.ts +1 -0
  69. package/dist/lib/__tests__/NoticeBase.test.js +60 -0
  70. package/dist/lib/__tests__/PaginatedCard.test.d.ts +1 -0
  71. package/dist/lib/__tests__/PaginatedCard.test.js +89 -0
  72. package/dist/lib/__tests__/Pagination.test.d.ts +1 -0
  73. package/dist/lib/__tests__/Pagination.test.js +168 -0
  74. package/dist/lib/__tests__/PrimaryColorSelect.test.d.ts +1 -0
  75. package/dist/lib/__tests__/PrimaryColorSelect.test.js +92 -0
  76. package/dist/lib/__tests__/ProgressBar.test.d.ts +1 -0
  77. package/dist/lib/__tests__/ProgressBar.test.js +69 -0
  78. package/dist/lib/__tests__/ProgressCircle.test.d.ts +1 -0
  79. package/dist/lib/__tests__/ProgressCircle.test.js +71 -0
  80. package/dist/lib/__tests__/Radio.test.d.ts +1 -0
  81. package/dist/lib/__tests__/Radio.test.js +127 -0
  82. package/dist/lib/__tests__/SearchInput.test.d.ts +1 -0
  83. package/dist/lib/__tests__/SearchInput.test.js +80 -0
  84. package/dist/lib/__tests__/Select.test.d.ts +1 -0
  85. package/dist/lib/__tests__/Select.test.js +408 -0
  86. package/dist/lib/__tests__/Slider.test.d.ts +1 -0
  87. package/dist/lib/__tests__/Slider.test.js +213 -0
  88. package/dist/lib/__tests__/Splitter.test.d.ts +1 -0
  89. package/dist/lib/__tests__/Splitter.test.js +87 -0
  90. package/dist/lib/__tests__/Switch.test.d.ts +1 -0
  91. package/dist/lib/__tests__/Switch.test.js +97 -0
  92. package/dist/lib/__tests__/Table.test.d.ts +1 -0
  93. package/dist/lib/__tests__/Table.test.js +349 -0
  94. package/dist/lib/__tests__/Tabs.test.d.ts +1 -0
  95. package/dist/lib/__tests__/Tabs.test.js +262 -0
  96. package/dist/lib/__tests__/ThemeToggle.test.d.ts +1 -0
  97. package/dist/lib/__tests__/ThemeToggle.test.js +84 -0
  98. package/dist/lib/__tests__/TimePicker.test.d.ts +1 -0
  99. package/dist/lib/__tests__/TimePicker.test.js +146 -0
  100. package/dist/lib/__tests__/TimePickerNew.test.d.ts +1 -0
  101. package/dist/lib/__tests__/TimePickerNew.test.js +322 -0
  102. package/dist/lib/__tests__/Toast.test.d.ts +1 -0
  103. package/dist/lib/__tests__/Toast.test.js +135 -0
  104. package/dist/lib/__tests__/Tooltip.test.d.ts +1 -0
  105. package/dist/lib/__tests__/Tooltip.test.js +171 -0
  106. package/dist/lib/__tests__/Topbar.test.d.ts +1 -0
  107. package/dist/lib/__tests__/Topbar.test.js +25 -0
  108. package/dist/lib/__tests__/setupLangContext.d.ts +1 -0
  109. package/dist/lib/__tests__/setupLangContext.js +65 -0
  110. package/dist/lib/__tests__/storage.test.d.ts +1 -0
  111. package/dist/lib/__tests__/storage.test.js +124 -0
  112. package/dist/lib/__tests__/utils.test.d.ts +1 -0
  113. package/dist/lib/__tests__/utils.test.js +11 -0
  114. package/dist/lib/index.d.ts +1 -0
  115. package/dist/lib/index.js +1 -0
  116. package/dist/lib/lang.d.ts +4 -0
  117. package/dist/lib/lang.js +4 -0
  118. package/dist/styles.css +2 -0
  119. package/dist/utils/index.js +15 -4
  120. package/package.json +12 -12
@@ -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 {};