svelte-comp 1.2.5 → 1.2.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.

Potentially problematic release.


This version of svelte-comp might be problematic. Click here for more details.

Files changed (84) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/dist/App.svelte +0 -551
  4. package/dist/App.svelte.d.ts +0 -3
  5. package/dist/Container.svelte +0 -60
  6. package/dist/Container.svelte.d.ts +0 -12
  7. package/dist/app.css +0 -235
  8. package/dist/index.d.ts +0 -5
  9. package/dist/index.js +0 -6
  10. package/dist/lang.d.ts +0 -1081
  11. package/dist/lang.js +0 -1096
  12. package/dist/lib/Accordion.svelte +0 -155
  13. package/dist/lib/Accordion.svelte.d.ts +0 -40
  14. package/dist/lib/Button.svelte +0 -170
  15. package/dist/lib/Button.svelte.d.ts +0 -53
  16. package/dist/lib/Card.svelte +0 -103
  17. package/dist/lib/Card.svelte.d.ts +0 -42
  18. package/dist/lib/Carousel.svelte +0 -293
  19. package/dist/lib/Carousel.svelte.d.ts +0 -13
  20. package/dist/lib/CheckBox.svelte +0 -210
  21. package/dist/lib/CheckBox.svelte.d.ts +0 -53
  22. package/dist/lib/CodeView.svelte +0 -307
  23. package/dist/lib/CodeView.svelte.d.ts +0 -64
  24. package/dist/lib/ColorPicker.svelte +0 -161
  25. package/dist/lib/ColorPicker.svelte.d.ts +0 -40
  26. package/dist/lib/DatePicker.svelte +0 -170
  27. package/dist/lib/DatePicker.svelte.d.ts +0 -53
  28. package/dist/lib/Dialog.svelte +0 -235
  29. package/dist/lib/Dialog.svelte.d.ts +0 -58
  30. package/dist/lib/Field.svelte +0 -299
  31. package/dist/lib/Field.svelte.d.ts +0 -8
  32. package/dist/lib/FilePicker.svelte +0 -241
  33. package/dist/lib/FilePicker.svelte.d.ts +0 -52
  34. package/dist/lib/Form.svelte +0 -438
  35. package/dist/lib/Form.svelte.d.ts +0 -20
  36. package/dist/lib/Hamburger.svelte +0 -211
  37. package/dist/lib/Hamburger.svelte.d.ts +0 -52
  38. package/dist/lib/Menu.svelte +0 -623
  39. package/dist/lib/Menu.svelte.d.ts +0 -33
  40. package/dist/lib/PaginatedCard.svelte +0 -73
  41. package/dist/lib/PaginatedCard.svelte.d.ts +0 -11
  42. package/dist/lib/Pagination.svelte +0 -119
  43. package/dist/lib/Pagination.svelte.d.ts +0 -9
  44. package/dist/lib/PrimaryColorSelect.svelte +0 -113
  45. package/dist/lib/PrimaryColorSelect.svelte.d.ts +0 -9
  46. package/dist/lib/ProgressBar.svelte +0 -141
  47. package/dist/lib/ProgressBar.svelte.d.ts +0 -48
  48. package/dist/lib/ProgressCircle.svelte +0 -192
  49. package/dist/lib/ProgressCircle.svelte.d.ts +0 -39
  50. package/dist/lib/Radio.svelte +0 -189
  51. package/dist/lib/Radio.svelte.d.ts +0 -55
  52. package/dist/lib/SearchInput.svelte +0 -106
  53. package/dist/lib/SearchInput.svelte.d.ts +0 -13
  54. package/dist/lib/Select.svelte +0 -524
  55. package/dist/lib/Select.svelte.d.ts +0 -21
  56. package/dist/lib/Slider.svelte +0 -253
  57. package/dist/lib/Slider.svelte.d.ts +0 -56
  58. package/dist/lib/Splitter.svelte +0 -150
  59. package/dist/lib/Splitter.svelte.d.ts +0 -43
  60. package/dist/lib/Switch.svelte +0 -167
  61. package/dist/lib/Switch.svelte.d.ts +0 -42
  62. package/dist/lib/Table.svelte +0 -299
  63. package/dist/lib/Table.svelte.d.ts +0 -17
  64. package/dist/lib/Tabs.svelte +0 -213
  65. package/dist/lib/Tabs.svelte.d.ts +0 -48
  66. package/dist/lib/ThemeToggle.svelte +0 -127
  67. package/dist/lib/ThemeToggle.svelte.d.ts +0 -32
  68. package/dist/lib/TimePicker.svelte +0 -269
  69. package/dist/lib/TimePicker.svelte.d.ts +0 -48
  70. package/dist/lib/Toast.svelte +0 -226
  71. package/dist/lib/Toast.svelte.d.ts +0 -14
  72. package/dist/lib/Tooltip.svelte +0 -110
  73. package/dist/lib/Tooltip.svelte.d.ts +0 -40
  74. package/dist/lib/index.d.ts +0 -32
  75. package/dist/lib/index.js +0 -33
  76. package/dist/lib/lang.d.ts +0 -158
  77. package/dist/lib/lang.js +0 -150
  78. package/dist/lib/types/index.d.ts +0 -111
  79. package/dist/lib/types/index.js +0 -26
  80. package/dist/main.d.ts +0 -3
  81. package/dist/main.js +0 -7
  82. package/dist/styles.css +0 -232
  83. package/dist/utils/index.d.ts +0 -34
  84. package/dist/utils/index.js +0 -268
package/dist/main.js DELETED
@@ -1,7 +0,0 @@
1
- import { mount } from "svelte";
2
- import "./app.css";
3
- import App from "./App.svelte";
4
- var app = mount(App, {
5
- target: document.getElementById("app"),
6
- });
7
- export default app;
package/dist/styles.css DELETED
@@ -1,232 +0,0 @@
1
- /* src/styles.css */
2
- @source "../node_modules/svelte-comp/**/*";
3
-
4
- @custom-variant dark (&:where(.dark, .dark *));
5
-
6
- @theme {
7
- /* COLORS — TEXT */
8
- --color-text-default: oklch(15% 0 0deg);
9
- --color-text-muted: oklch(60% 0 0deg);
10
- --color-text-danger: oklch(92% 0.05 25deg);
11
- --color-text-success: oklch(92% 0.05 150deg);
12
- --color-text-warning: oklch(95% 0.05 90deg);
13
- --color-text-link: oklch(35% 0.3 250deg);
14
- --color-text-red: oklch(50% 0.25 30deg);
15
-
16
- /* COLORS — BG */
17
- --color-bg-page: oklch(98% 0 0deg);
18
- --color-bg-surface: oklch(100% 0 0deg);
19
- --color-bg-primary: oklch(62.3% 0.214 259.8deg);
20
- --color-primary: var(--color-bg-primary);
21
- --color-bg-secondary: oklch(80% 0 0deg);
22
- --color-bg-danger: oklch(60% 0.25 30deg);
23
- --color-bg-success: oklch(55% 0.2 150deg);
24
- --color-bg-warning: oklch(75% 0.2 70deg);
25
- --color-bg-muted: oklch(90% 0 0deg);
26
-
27
- /* INTERACTION STATES */
28
- --color-bg-hover: oklch(94% 0 0deg);
29
- --color-bg-active: oklch(88% 0 0deg);
30
-
31
- /* BORDER */
32
- --border-color-default: oklch(85% 0 0deg);
33
- --border-color-primary: oklch(50% 0.19 259.8deg);
34
- --border-color-strong: oklch(75% 0 0deg);
35
- --border-color-focus: oklch(68.7% 0.14 237.5deg);
36
-
37
- /* SHADOW */
38
- --shadow-color: oklch(0% 0 0deg / 0.15);
39
-
40
- /* SPACING */
41
- --spacing-xs: 0.25rem;
42
- --spacing-sm: 0.5rem;
43
- --spacing-md: 1rem;
44
- --spacing-lg: 1.5rem;
45
- --spacing-xl: 2rem;
46
-
47
- /* TYPOGRAPHY */
48
- --font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
49
- --font-mono: "Fira Code", "Consolas", "Monaco", monospace;
50
-
51
- /* FONT WEIGHTS */
52
- --font-weight-normal: 400;
53
- --font-weight-medium: 500;
54
- --font-weight-semibold: 600;
55
- --font-weight-bold: 700;
56
-
57
- /* TEXT SIZES */
58
- --text-xs: 0.75rem;
59
- --text-sm: 0.875rem;
60
- --text-md: 1rem;
61
- --text-lg: 1.125rem;
62
- --text-xl: 1.25rem;
63
-
64
- /* LINE HEIGHT & LETTER SPACING */
65
- --line-height-tight: 1.1;
66
- --line-height-normal: 1.4;
67
- --line-height-relaxed: 1.6;
68
- --letter-spacing-tight: -0.01em;
69
- --letter-spacing-normal: 0;
70
- --letter-spacing-wide: 0.02em;
71
-
72
- /* RADIUS */
73
- --radius-sm: 0.125rem;
74
- --radius-md: 0.375rem;
75
- --radius-lg: 0.5rem;
76
- --radius-xl: 0.75rem;
77
- --radius-2xl: 1rem;
78
- --radius-full: 9999px;
79
-
80
- /* TRANSITIONS */
81
- --transition-fast: 150ms;
82
- --transition-normal: 300ms;
83
- --transition-slow: 500ms;
84
- --timing-default: ease-in-out;
85
-
86
- /* OPACITY */
87
- --opacity-disabled: 0.5;
88
- --opacity-hover: 0.9;
89
- --opacity-overlay: 0.7;
90
-
91
- /* Z-INDEX */
92
- --z-base: 0;
93
- --z-dropdown: 10;
94
- --z-overlay: 50;
95
- --z-modal: 100;
96
- --z-toast: 200;
97
- }
98
-
99
- .dark {
100
- /* COLORS — TEXT */
101
- --color-text-default: oklch(98% 0 0deg);
102
- --color-text-muted: oklch(60% 0 0deg);
103
- --color-text-danger: oklch(98% 0.02 25deg);
104
- --color-text-success: oklch(92% 0.05 150deg);
105
- --color-text-warning: oklch(95% 0.05 90deg);
106
- --color-text-link: oklch(65% 0.3 250deg);
107
- --color-text-red: oklch(50% 0.25 30deg);
108
-
109
- /* COLORS — BG */
110
- --color-bg-page: oklch(15% 0 0deg);
111
- --color-bg-surface: oklch(26% 0 0deg);
112
- --color-bg-primary: oklch(42% 0.19 259.8deg);
113
- --color-primary: var(--color-bg-primary);
114
- --color-bg-secondary: oklch(45% 0 0deg);
115
- --color-bg-danger: oklch(50% 0.25 30deg);
116
- --color-bg-success: oklch(45% 0.2 150deg);
117
- --color-bg-warning: oklch(65% 0.2 70deg);
118
- --color-bg-muted: oklch(30% 0 0deg);
119
-
120
- /* INTERACTION STATES */
121
- --color-bg-hover: oklch(25% 0 0deg);
122
- --color-bg-active: oklch(18% 0 0deg);
123
-
124
- /* BORDER */
125
- --border-color-default: oklch(35% 0 0deg);
126
- --border-color-primary: oklch(50% 0.17 259.8deg);
127
- --border-color-strong: oklch(45% 0 0deg);
128
- --border-color-focus: oklch(68.7% 0.14 237.5deg);
129
-
130
- /* SHADOW */
131
- --shadow-color: oklch(0% 0 0deg / 0.6);
132
-
133
- /* OPACITY */
134
- --opacity-disabled: 0.4;
135
- --opacity-hover: 0.85;
136
- --opacity-overlay: 0.6;
137
- }
138
-
139
- /* SCROLLBARS */
140
- ::-webkit-scrollbar {
141
- width: 4px;
142
- height: 4px;
143
- }
144
-
145
- ::-webkit-scrollbar-track {
146
- background: transparent;
147
- }
148
-
149
- ::-webkit-scrollbar-thumb {
150
- background: var(--color-bg-secondary);
151
- border-radius: 3px;
152
- }
153
-
154
- ::-webkit-scrollbar-thumb:hover {
155
- background: oklch(from var(--color-bg-secondary) l c h / 0.8);
156
- }
157
-
158
- @supports (scrollbar-width: thin) {
159
- * {
160
- scrollbar-width: thin;
161
- scrollbar-color: var(--color-bg-secondary) transparent;
162
- }
163
-
164
- .dark * {
165
- scrollbar-color: oklch(from var(--color-bg-secondary) l c h / 0.7)
166
- transparent;
167
- }
168
- }
169
-
170
- .dark ::-webkit-scrollbar-thumb {
171
- background: oklch(from var(--color-bg-secondary) l c h / 0.7);
172
- }
173
-
174
- /* ----------------------------- */
175
- /* 🎨 Primary color palettes */
176
- /* ----------------------------- */
177
-
178
- [data-primary="default"] {
179
- --color-primary: oklch(62.3% 0.214 259.8deg);
180
- --color-bg-primary: var(--color-primary);
181
- --border-color-primary: var(--color-primary);
182
- --border-color-focus: var(--color-primary);
183
- }
184
-
185
- [data-primary="cyan"] {
186
- --color-primary: oklch(86.5% 0.127 207.078);
187
- --color-bg-primary: var(--color-primary);
188
- --border-color-primary: var(--color-primary);
189
- --border-color-focus: var(--color-primary);
190
- }
191
-
192
- [data-primary="red"] {
193
- --color-primary: oklch(58% 0.24 30deg);
194
- --color-bg-primary: var(--color-primary);
195
- --border-color-primary: var(--color-primary);
196
- --border-color-focus: var(--color-primary);
197
- }
198
-
199
- [data-primary="green"] {
200
- --color-primary: oklch(65% 0.22 140deg);
201
- --color-bg-primary: var(--color-primary);
202
- --border-color-primary: var(--color-primary);
203
- --border-color-focus: var(--color-primary);
204
- }
205
-
206
- [data-primary="yellow"] {
207
- --color-primary: oklch(75% 0.18 90deg);
208
- --color-bg-primary: var(--color-primary);
209
- --border-color-primary: var(--color-primary);
210
- --border-color-focus: var(--color-primary);
211
- }
212
-
213
- [data-primary="pink"] {
214
- --color-primary: oklch(70% 0.25 350deg);
215
- --color-bg-primary: var(--color-primary);
216
- --border-color-primary: var(--color-primary);
217
- --border-color-focus: var(--color-primary);
218
- }
219
-
220
- [data-primary="orange"] {
221
- --color-primary: oklch(72% 0.22 60deg);
222
- --color-bg-primary: var(--color-primary);
223
- --border-color-primary: var(--color-primary);
224
- --border-color-focus: var(--color-primary);
225
- }
226
-
227
- [data-primary="purple"] {
228
- --color-primary: oklch(55% 0.22 290deg);
229
- --color-bg-primary: var(--color-primary);
230
- --border-color-primary: var(--color-primary);
231
- --border-color-focus: var(--color-primary);
232
- }
@@ -1,34 +0,0 @@
1
- export declare const uid: (prefix?: string) => string;
2
- type ClassPrimitive = string | number | bigint;
3
- interface ClassDictionary {
4
- [key: string]: boolean | null | undefined;
5
- }
6
- type ClassArray = Array<ClassPrimitive | ClassDictionary | ClassArray | null | boolean | undefined>;
7
- type ClassValue = ClassPrimitive | ClassDictionary | ClassArray | null | boolean | undefined;
8
- export declare function cx(...classes: ClassValue[]): string;
9
- export declare function clamp(value: number, min: number, max: number): number;
10
- export declare function times<T>(count: number, fn: (i: number) => T): T[];
11
- export declare function formatFileSize(bytes: number): string;
12
- export declare function debounce<Args extends unknown[]>(fn: (...args: Args) => void, delay: number): (...args: Args) => void;
13
- export declare function throttle<Args extends unknown[]>(fn: (...args: Args) => void, limit: number): (...args: Args) => void;
14
- export declare const storage: {
15
- get: <T>(key: string, defaultValue: T) => T;
16
- set: <T>(key: string, value: T) => void;
17
- remove: (key: string) => void;
18
- };
19
- import type { ToastVariant } from "../lib/types";
20
- export declare const TOAST_CONFIG: Record<ToastVariant, {
21
- title: string;
22
- message: string;
23
- duration?: number;
24
- }>;
25
- export declare const getToastConfig: (variant: ToastVariant, customMessage?: string) => {
26
- message: string;
27
- title: string;
28
- duration?: number;
29
- };
30
- export declare const formatDate: (value: Date | string | number | null | undefined, locale?: string, options?: Intl.DateTimeFormatOptions) => string;
31
- export declare const formatTime: (value: Date | string | number | null | undefined, locale?: string, options?: Intl.DateTimeFormatOptions) => string;
32
- export declare const focusFirstInteractive: (element: HTMLElement) => void;
33
- export declare const trapFocus: (element: HTMLElement) => (() => void);
34
- export {};
@@ -1,268 +0,0 @@
1
- // src/lib/utils/index.ts
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- // -------------------------------------------------------------------------------
14
- // UID
15
- // -------------------------------------------------------------------------------
16
- export var uid = function (prefix) {
17
- if (prefix === void 0) { prefix = ""; }
18
- var timestamp = Date.now().toString(36);
19
- var random = Math.random().toString(36).slice(2);
20
- return "".concat(prefix).concat(timestamp, "_").concat(random);
21
- };
22
- export function cx() {
23
- var classes = [];
24
- for (var _i = 0; _i < arguments.length; _i++) {
25
- classes[_i] = arguments[_i];
26
- }
27
- var result = [];
28
- var append = function (value) {
29
- if (value === null || value === undefined || value === false) {
30
- return;
31
- }
32
- if (typeof value === "string") {
33
- result.push.apply(result, value.split(/\s+/).filter(Boolean));
34
- return;
35
- }
36
- if (typeof value === "number" || typeof value === "bigint") {
37
- result.push(String(value));
38
- return;
39
- }
40
- if (Array.isArray(value)) {
41
- for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
42
- var entry = value_1[_i];
43
- append(entry);
44
- }
45
- return;
46
- }
47
- if (typeof value === "object") {
48
- for (var _a = 0, _b = Object.entries(value); _a < _b.length; _a++) {
49
- var _c = _b[_a], key = _c[0], condition = _c[1];
50
- if (condition) {
51
- result.push(key);
52
- }
53
- }
54
- }
55
- };
56
- for (var _a = 0, classes_1 = classes; _a < classes_1.length; _a++) {
57
- var cls = classes_1[_a];
58
- append(cls);
59
- }
60
- return result.join(" ");
61
- }
62
- // -------------------------------------------------------------------------------
63
- // CLAMP
64
- // -------------------------------------------------------------------------------
65
- export function clamp(value, min, max) {
66
- return Math.min(max, Math.max(min, value));
67
- }
68
- // -------------------------------------------------------------------------------
69
- // TIMES
70
- // -------------------------------------------------------------------------------
71
- export function times(count, fn) {
72
- return Array.from({ length: count }, function (_, i) { return fn(i); });
73
- }
74
- // -------------------------------------------------------------------------------
75
- // FORMAT FILE SIZE
76
- // -------------------------------------------------------------------------------
77
- export function formatFileSize(bytes) {
78
- if (bytes === 0)
79
- return "0 Bytes";
80
- var k = 1024;
81
- var sizes = ["Bytes", "KB", "MB", "GB"];
82
- var i = Math.floor(Math.log(bytes) / Math.log(k));
83
- return "".concat(parseFloat((bytes / Math.pow(k, i)).toFixed(2)), " ").concat(sizes[i]);
84
- }
85
- // -------------------------------------------------------------------------------
86
- // DEBOUNCE
87
- // -------------------------------------------------------------------------------
88
- export function debounce(fn, delay) {
89
- var timeoutId;
90
- return function () {
91
- var args = [];
92
- for (var _i = 0; _i < arguments.length; _i++) {
93
- args[_i] = arguments[_i];
94
- }
95
- clearTimeout(timeoutId);
96
- timeoutId = setTimeout(function () { return fn.apply(void 0, args); }, delay);
97
- };
98
- }
99
- // -------------------------------------------------------------------------------
100
- // THROTTLE
101
- // -------------------------------------------------------------------------------
102
- export function throttle(fn, limit) {
103
- var inThrottle;
104
- return function () {
105
- var args = [];
106
- for (var _i = 0; _i < arguments.length; _i++) {
107
- args[_i] = arguments[_i];
108
- }
109
- if (!inThrottle) {
110
- fn.apply(void 0, args);
111
- inThrottle = true;
112
- setTimeout(function () { return (inThrottle = false); }, limit);
113
- }
114
- };
115
- }
116
- // -------------------------------------------------------------------------------
117
- // STORAGE HELPERS
118
- // -------------------------------------------------------------------------------
119
- var hasBrowserStorage = typeof window !== "undefined" && !!window.localStorage;
120
- var getLocalStorage = function () { return (hasBrowserStorage ? window.localStorage : null); };
121
- export var storage = {
122
- get: function (key, defaultValue) {
123
- var ls = getLocalStorage();
124
- if (!ls)
125
- return defaultValue;
126
- try {
127
- var item = ls.getItem(key);
128
- return item ? JSON.parse(item) : defaultValue;
129
- }
130
- catch (_a) {
131
- return defaultValue;
132
- }
133
- },
134
- set: function (key, value) {
135
- var ls = getLocalStorage();
136
- if (!ls)
137
- return;
138
- try {
139
- ls.setItem(key, JSON.stringify(value));
140
- }
141
- catch (error) {
142
- console.warn("Storage set failed:", error);
143
- }
144
- },
145
- remove: function (key) {
146
- var ls = getLocalStorage();
147
- if (!ls)
148
- return;
149
- try {
150
- ls.removeItem(key);
151
- }
152
- catch (error) {
153
- console.warn("Storage remove failed:", error);
154
- }
155
- },
156
- };
157
- export var TOAST_CONFIG = {
158
- success: {
159
- title: "Success",
160
- message: "Operation completed successfully!",
161
- duration: 3000,
162
- },
163
- danger: {
164
- title: "Error",
165
- message: "Something went wrong!",
166
- duration: 5000,
167
- },
168
- warning: {
169
- title: "Warning",
170
- message: "Please check your input.",
171
- duration: 4000,
172
- },
173
- info: {
174
- title: "Info",
175
- message: "New update available!",
176
- duration: 3000,
177
- },
178
- };
179
- export var getToastConfig = function (variant, customMessage) { return (__assign(__assign({}, TOAST_CONFIG[variant]), { message: customMessage || TOAST_CONFIG[variant].message })); };
180
- // -------------------------------------------------------------------------------
181
- // DATE HELPERS
182
- // -------------------------------------------------------------------------------
183
- function normalizeDate(value) {
184
- if (value == null)
185
- return null;
186
- if (value instanceof Date) {
187
- return Number.isNaN(value.getTime()) ? null : value;
188
- }
189
- if (typeof value === "number") {
190
- var asDate = new Date(value);
191
- return Number.isNaN(asDate.getTime()) ? null : asDate;
192
- }
193
- if (typeof value === "string") {
194
- var timeOnly = value.includes(":") &&
195
- !value.includes("T") &&
196
- !/^\d{4}-\d{2}-\d{2}/.test(value);
197
- var normalized = timeOnly ? "1970-01-01T".concat(value) : value;
198
- var parsed = new Date(normalized);
199
- return Number.isNaN(parsed.getTime()) ? null : parsed;
200
- }
201
- return null;
202
- }
203
- export var formatDate = function (value, locale, options) {
204
- if (locale === void 0) { locale = "en-US"; }
205
- var date = normalizeDate(value);
206
- if (!date)
207
- return "";
208
- var fmt = options !== null && options !== void 0 ? options : {
209
- year: "numeric",
210
- month: "short",
211
- day: "numeric",
212
- };
213
- try {
214
- return new Intl.DateTimeFormat(locale, fmt).format(date);
215
- }
216
- catch (_a) {
217
- return date.toLocaleDateString();
218
- }
219
- };
220
- export var formatTime = function (value, locale, options) {
221
- if (locale === void 0) { locale = "en-US"; }
222
- var date = normalizeDate(value);
223
- if (!date)
224
- return "";
225
- var fmt = options !== null && options !== void 0 ? options : {
226
- hour: "2-digit",
227
- minute: "2-digit",
228
- };
229
- try {
230
- return new Intl.DateTimeFormat(locale, fmt).format(date);
231
- }
232
- catch (_a) {
233
- return date.toLocaleTimeString();
234
- }
235
- };
236
- // -------------------------------------------------------------------------------
237
- // DOM HELPERS
238
- // -------------------------------------------------------------------------------
239
- export var focusFirstInteractive = function (element) {
240
- var focusable = element.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
241
- focusable === null || focusable === void 0 ? void 0 : focusable.focus();
242
- };
243
- export var trapFocus = function (element) {
244
- var focusableElements = element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
245
- var firstElement = focusableElements[0];
246
- var lastElement = focusableElements[focusableElements.length - 1];
247
- var handleKeyDown = function (e) {
248
- if (e.key !== "Tab")
249
- return;
250
- if (e.shiftKey) {
251
- if (document.activeElement === firstElement) {
252
- e.preventDefault();
253
- lastElement.focus();
254
- }
255
- }
256
- else {
257
- if (document.activeElement === lastElement) {
258
- e.preventDefault();
259
- firstElement.focus();
260
- }
261
- }
262
- };
263
- element.addEventListener("keydown", handleKeyDown);
264
- return function () {
265
- element.removeEventListener("keydown", handleKeyDown);
266
- };
267
- };
268
- // -------------------------------------------------------------------------------