@mieweb/ui 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +28 -0
  2. package/dist/ag-grid.cjs +5 -5
  3. package/dist/ag-grid.js +1 -1
  4. package/dist/brands/bluehive.css +20 -0
  5. package/dist/brands/enterprise-health.css +32 -4
  6. package/dist/brands/index.d.cts +1 -1
  7. package/dist/brands/index.d.ts +1 -1
  8. package/dist/brands/mieweb.css +20 -0
  9. package/dist/brands/ozwell.css +20 -0
  10. package/dist/brands/waggleline.css +46 -0
  11. package/dist/brands/webchart.css +20 -0
  12. package/dist/chunk-EYH7OUX5.js +445 -0
  13. package/dist/chunk-EYH7OUX5.js.map +1 -0
  14. package/dist/{chunk-WN2FJE23.js → chunk-KWDTTGH2.js} +3 -3
  15. package/dist/{chunk-WN2FJE23.js.map → chunk-KWDTTGH2.js.map} +1 -1
  16. package/dist/{chunk-MKJDBXX4.cjs → chunk-PEH4ZOEM.cjs} +4 -4
  17. package/dist/{chunk-MKJDBXX4.cjs.map → chunk-PEH4ZOEM.cjs.map} +1 -1
  18. package/dist/{chunk-D3BUYVLN.cjs → chunk-QUA7WVHK.cjs} +70 -2
  19. package/dist/{chunk-D3BUYVLN.cjs.map → chunk-QUA7WVHK.cjs.map} +1 -1
  20. package/dist/chunk-SSKI6VTW.cjs +449 -0
  21. package/dist/chunk-SSKI6VTW.cjs.map +1 -0
  22. package/dist/{chunk-SN52QMRT.js → chunk-TPGT236K.js} +28 -24
  23. package/dist/chunk-TPGT236K.js.map +1 -0
  24. package/dist/{chunk-N5EKL4DH.js → chunk-VBHPXSCV.js} +4 -4
  25. package/dist/{chunk-N5EKL4DH.js.map → chunk-VBHPXSCV.js.map} +1 -1
  26. package/dist/{chunk-B7DA35BY.cjs → chunk-VZUVYJFU.cjs} +14 -14
  27. package/dist/{chunk-B7DA35BY.cjs.map → chunk-VZUVYJFU.cjs.map} +1 -1
  28. package/dist/{chunk-KMN7JX2X.cjs → chunk-WH6I7CMP.cjs} +28 -24
  29. package/dist/chunk-WH6I7CMP.cjs.map +1 -0
  30. package/dist/chunk-Y22SOAJM.js +3 -0
  31. package/dist/{chunk-K5T2PT4M.js.map → chunk-Y22SOAJM.js.map} +1 -1
  32. package/dist/components/Button/index.cjs +3 -3
  33. package/dist/components/Button/index.js +1 -1
  34. package/dist/components/DateInput/index.cjs +3 -3
  35. package/dist/components/DateInput/index.js +2 -2
  36. package/dist/index.cjs +2817 -1078
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.cts +250 -3
  39. package/dist/index.d.ts +250 -3
  40. package/dist/index.js +2665 -933
  41. package/dist/index.js.map +1 -1
  42. package/dist/styles.css +2 -2
  43. package/dist/tailwind-preset.cjs +4 -4
  44. package/dist/tailwind-preset.js +1 -1
  45. package/dist/utils/index.cjs +9 -9
  46. package/dist/utils/index.js +1 -1
  47. package/package.json +42 -38
  48. package/dist/chunk-5YRTFJ7K.js +0 -247
  49. package/dist/chunk-5YRTFJ7K.js.map +0 -1
  50. package/dist/chunk-ERIGUDFS.cjs +0 -251
  51. package/dist/chunk-ERIGUDFS.cjs.map +0 -1
  52. package/dist/chunk-K5T2PT4M.js +0 -3
  53. package/dist/chunk-KMN7JX2X.cjs.map +0 -1
  54. package/dist/chunk-SN52QMRT.js.map +0 -1
@@ -1,251 +0,0 @@
1
- 'use strict';
2
-
3
- // src/tailwind-preset.ts
4
- var miewebUISafelist = [
5
- // Semantic colors
6
- "border-border",
7
- "border-input",
8
- "ring-ring",
9
- "bg-background",
10
- "bg-card",
11
- "bg-muted",
12
- "bg-primary",
13
- "bg-success",
14
- "bg-warning",
15
- "bg-destructive",
16
- "bg-info",
17
- "text-foreground",
18
- "text-card-foreground",
19
- "text-muted-foreground",
20
- "text-primary",
21
- "text-primary-foreground",
22
- "text-success",
23
- "text-success-foreground",
24
- "text-warning",
25
- "text-warning-foreground",
26
- "text-destructive",
27
- "text-destructive-foreground",
28
- "text-info",
29
- "text-info-foreground",
30
- "focus:ring-ring",
31
- "focus:ring-primary",
32
- "focus:border-transparent",
33
- "focus:ring-destructive",
34
- "border-primary",
35
- "border-destructive",
36
- "border-success",
37
- "focus:ring-success/20",
38
- "focus:ring-destructive/20",
39
- // Opacity-modifier variants for semantic colors used by components
40
- "bg-background/60",
41
- "bg-background/80",
42
- "bg-background/90",
43
- "bg-background/95",
44
- "bg-card/80",
45
- "bg-destructive/5",
46
- "bg-destructive/10",
47
- "bg-foreground/50",
48
- "bg-info/10",
49
- "bg-muted/10",
50
- "bg-muted/30",
51
- "bg-muted/50",
52
- "bg-primary/5",
53
- "bg-primary/10",
54
- "bg-success/10",
55
- "bg-warning/10",
56
- "border-border/80",
57
- "border-destructive/20",
58
- "border-destructive/30",
59
- "border-destructive/50",
60
- "border-info/30",
61
- "border-muted-foreground/25",
62
- "border-muted-foreground/40",
63
- "border-primary/30",
64
- "border-primary/50",
65
- "border-success/30",
66
- "border-success/50",
67
- "border-warning/30",
68
- "hover:bg-destructive/10",
69
- "hover:bg-muted/10",
70
- "hover:bg-muted/20",
71
- "hover:bg-muted/50",
72
- "hover:bg-muted/80",
73
- "hover:bg-primary/5",
74
- "hover:bg-primary/10",
75
- "hover:bg-primary/20",
76
- "hover:bg-primary/90",
77
- "hover:border-border/80",
78
- "hover:border-muted-foreground/50",
79
- "hover:text-destructive/80",
80
- "hover:text-primary/80",
81
- "text-muted-foreground/30",
82
- "text-muted-foreground/40",
83
- "text-muted-foreground/50",
84
- "text-muted-foreground/60",
85
- "text-muted-foreground/70",
86
- "text-primary/80",
87
- "text-primary-foreground/90",
88
- "ring-primary",
89
- "ring-2",
90
- "ring-offset-2",
91
- // Grid classes for QuickAction and responsive layouts
92
- "grid-cols-1",
93
- "grid-cols-2",
94
- "grid-cols-3",
95
- "grid-cols-4",
96
- "grid-cols-6",
97
- "sm:grid-cols-1",
98
- "sm:grid-cols-2",
99
- "sm:grid-cols-3",
100
- "sm:grid-cols-4",
101
- "sm:grid-cols-6",
102
- "md:grid-cols-2",
103
- "md:grid-cols-3",
104
- "md:grid-cols-4",
105
- "lg:grid-cols-2",
106
- "lg:grid-cols-3",
107
- "lg:grid-cols-4",
108
- // Switch component
109
- "bg-neutral-200",
110
- "dark:bg-neutral-700",
111
- "bg-primary-500",
112
- "h-5",
113
- "w-9",
114
- "h-6",
115
- "w-11",
116
- "h-7",
117
- "w-14",
118
- "h-4",
119
- "w-4",
120
- "w-5",
121
- "w-6",
122
- "translate-x-0.5",
123
- "translate-x-4",
124
- "translate-x-5",
125
- "translate-x-7",
126
- // SchedulePicker / overflow handling
127
- "overflow-x-auto",
128
- "overflow-hidden",
129
- // Select component
130
- "truncate"
131
- ];
132
- var miewebUIPreset = {
133
- darkMode: ["class", '[data-theme="dark"]'],
134
- safelist: miewebUISafelist,
135
- theme: {
136
- extend: {
137
- colors: {
138
- // Primary color scale - easily overridable by consumers
139
- primary: {
140
- DEFAULT: "var(--mieweb-primary, var(--mieweb-primary-500, #27aae1))",
141
- 50: "var(--mieweb-primary-50, #f0f9ff)",
142
- 100: "var(--mieweb-primary-100, #e0f4fe)",
143
- 200: "var(--mieweb-primary-200, #b9eafd)",
144
- 300: "var(--mieweb-primary-300, #7cdbfc)",
145
- 400: "var(--mieweb-primary-400, #36c9f8)",
146
- 500: "var(--mieweb-primary-500, #27aae1)",
147
- 600: "var(--mieweb-primary-600, #0c90c9)",
148
- 700: "var(--mieweb-primary-700, #0b73a3)",
149
- 800: "var(--mieweb-primary-800, #0f6086)",
150
- 900: "var(--mieweb-primary-900, #124f6f)",
151
- 950: "var(--mieweb-primary-950, #0c334a)",
152
- foreground: "var(--mieweb-primary-foreground, hsl(210 40% 98%))"
153
- },
154
- // Semantic colors using CSS variables for theming
155
- border: "var(--mieweb-border, hsl(214.3 31.8% 91.4%))",
156
- input: "var(--mieweb-input, hsl(214.3 31.8% 91.4%))",
157
- ring: "var(--mieweb-ring, hsl(221.2 83.2% 53.3%))",
158
- background: "var(--mieweb-background, hsl(0 0% 100%))",
159
- foreground: "var(--mieweb-foreground, hsl(222.2 84% 4.9%))",
160
- // Component-specific semantic colors
161
- card: {
162
- DEFAULT: "var(--mieweb-card, hsl(0 0% 100%))",
163
- foreground: "var(--mieweb-card-foreground, hsl(222.2 84% 4.9%))"
164
- },
165
- muted: {
166
- DEFAULT: "var(--mieweb-muted, hsl(210 40% 96.1%))",
167
- foreground: "var(--mieweb-muted-foreground, hsl(215.4 16.3% 46.9%))"
168
- },
169
- destructive: {
170
- DEFAULT: "var(--mieweb-destructive, hsl(0 84.2% 60.2%))",
171
- foreground: "var(--mieweb-destructive-foreground, hsl(210 40% 98%))"
172
- },
173
- success: {
174
- DEFAULT: "var(--mieweb-success, hsl(142.1 76.2% 36.3%))",
175
- foreground: "var(--mieweb-success-foreground, hsl(355.7 100% 97.3%))"
176
- },
177
- warning: {
178
- DEFAULT: "var(--mieweb-warning, hsl(45.4 93.4% 47.5%))",
179
- foreground: "var(--mieweb-warning-foreground, hsl(26 83.3% 14.1%))"
180
- },
181
- info: {
182
- DEFAULT: "var(--mieweb-info, hsl(204 94% 94%))",
183
- foreground: "var(--mieweb-info-foreground, hsl(213 31% 91%))"
184
- }
185
- },
186
- fontFamily: {
187
- sans: [
188
- "var(--mieweb-font-sans, ui-sans-serif)",
189
- "system-ui",
190
- "sans-serif"
191
- ]
192
- },
193
- borderRadius: {
194
- "2xl": "var(--mieweb-radius-2xl, 1rem)",
195
- lg: "var(--mieweb-radius-lg, 0.75rem)",
196
- md: "var(--mieweb-radius-md, 0.5rem)",
197
- sm: "var(--mieweb-radius-sm, 0.25rem)",
198
- xl: "var(--mieweb-radius-xl, 1rem)"
199
- },
200
- boxShadow: {
201
- card: "var(--mieweb-shadow-card, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1))"
202
- },
203
- keyframes: {
204
- "fade-in": {
205
- "0%": { opacity: "0" },
206
- "100%": { opacity: "1" }
207
- },
208
- "fade-out": {
209
- "0%": { opacity: "1" },
210
- "100%": { opacity: "0" }
211
- },
212
- "slide-in-from-top": {
213
- "0%": { transform: "translateY(-0.5rem)", opacity: "0" },
214
- "100%": { transform: "translateY(0)", opacity: "1" }
215
- },
216
- "slide-in-from-bottom": {
217
- "0%": { transform: "translateY(0.5rem)", opacity: "0" },
218
- "100%": { transform: "translateY(0)", opacity: "1" }
219
- },
220
- "slide-in-right": {
221
- "0%": { transform: "translateX(100%)", opacity: "0" },
222
- "100%": { transform: "translateX(0)", opacity: "1" }
223
- },
224
- "slide-in-left": {
225
- "0%": { transform: "translateX(-100%)", opacity: "0" },
226
- "100%": { transform: "translateX(0)", opacity: "1" }
227
- },
228
- "scale-in": {
229
- "0%": { transform: "scale(0.95)", opacity: "0" },
230
- "100%": { transform: "scale(1)", opacity: "1" }
231
- }
232
- },
233
- animation: {
234
- "fade-in": "fade-in 150ms ease-out",
235
- "fade-out": "fade-out 150ms ease-in",
236
- "slide-in-from-top": "slide-in-from-top 150ms ease-out",
237
- "slide-in-from-bottom": "slide-in-from-bottom 150ms ease-out",
238
- "slide-in-right": "slide-in-right 300ms ease-out",
239
- "slide-in-left": "slide-in-left 300ms ease-out",
240
- "scale-in": "scale-in 150ms ease-out"
241
- }
242
- }
243
- }
244
- };
245
- var tailwind_preset_default = miewebUIPreset;
246
-
247
- exports.miewebUIPreset = miewebUIPreset;
248
- exports.miewebUISafelist = miewebUISafelist;
249
- exports.tailwind_preset_default = tailwind_preset_default;
250
- //# sourceMappingURL=chunk-ERIGUDFS.cjs.map
251
- //# sourceMappingURL=chunk-ERIGUDFS.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tailwind-preset.ts"],"names":[],"mappings":"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","file":"chunk-ERIGUDFS.cjs","sourcesContent":["/**\n * @mieweb/ui Tailwind CSS Preset\n *\n * This preset provides the default theme configuration for @mieweb/ui components.\n * Consumers can extend or override these values in their own tailwind.config.js\n *\n * Usage:\n * ```js\n * // tailwind.config.js\n * module.exports = {\n * presets: [require('@mieweb/ui/tailwind-preset')],\n * theme: {\n * extend: {\n * colors: {\n * primary: {\n * 500: '#your-brand-color',\n * },\n * },\n * },\n * },\n * };\n * ```\n */\n\n/**\n * Safelist of classes used by @mieweb/ui components.\n * These must be safelisted because Tailwind may not detect them when\n * components are imported from node_modules (especially with Tailwind CSS 4).\n */\nexport const miewebUISafelist = [\n // Semantic colors\n 'border-border',\n 'border-input',\n 'ring-ring',\n 'bg-background',\n 'bg-card',\n 'bg-muted',\n 'bg-primary',\n 'bg-success',\n 'bg-warning',\n 'bg-destructive',\n 'bg-info',\n 'text-foreground',\n 'text-card-foreground',\n 'text-muted-foreground',\n 'text-primary',\n 'text-primary-foreground',\n 'text-success',\n 'text-success-foreground',\n 'text-warning',\n 'text-warning-foreground',\n 'text-destructive',\n 'text-destructive-foreground',\n 'text-info',\n 'text-info-foreground',\n 'focus:ring-ring',\n 'focus:ring-primary',\n 'focus:border-transparent',\n 'focus:ring-destructive',\n 'border-primary',\n 'border-destructive',\n 'border-success',\n 'focus:ring-success/20',\n 'focus:ring-destructive/20',\n // Opacity-modifier variants for semantic colors used by components\n 'bg-background/60',\n 'bg-background/80',\n 'bg-background/90',\n 'bg-background/95',\n 'bg-card/80',\n 'bg-destructive/5',\n 'bg-destructive/10',\n 'bg-foreground/50',\n 'bg-info/10',\n 'bg-muted/10',\n 'bg-muted/30',\n 'bg-muted/50',\n 'bg-primary/5',\n 'bg-primary/10',\n 'bg-success/10',\n 'bg-warning/10',\n 'border-border/80',\n 'border-destructive/20',\n 'border-destructive/30',\n 'border-destructive/50',\n 'border-info/30',\n 'border-muted-foreground/25',\n 'border-muted-foreground/40',\n 'border-primary/30',\n 'border-primary/50',\n 'border-success/30',\n 'border-success/50',\n 'border-warning/30',\n 'hover:bg-destructive/10',\n 'hover:bg-muted/10',\n 'hover:bg-muted/20',\n 'hover:bg-muted/50',\n 'hover:bg-muted/80',\n 'hover:bg-primary/5',\n 'hover:bg-primary/10',\n 'hover:bg-primary/20',\n 'hover:bg-primary/90',\n 'hover:border-border/80',\n 'hover:border-muted-foreground/50',\n 'hover:text-destructive/80',\n 'hover:text-primary/80',\n 'text-muted-foreground/30',\n 'text-muted-foreground/40',\n 'text-muted-foreground/50',\n 'text-muted-foreground/60',\n 'text-muted-foreground/70',\n 'text-primary/80',\n 'text-primary-foreground/90',\n 'ring-primary',\n 'ring-2',\n 'ring-offset-2',\n // Grid classes for QuickAction and responsive layouts\n 'grid-cols-1',\n 'grid-cols-2',\n 'grid-cols-3',\n 'grid-cols-4',\n 'grid-cols-6',\n 'sm:grid-cols-1',\n 'sm:grid-cols-2',\n 'sm:grid-cols-3',\n 'sm:grid-cols-4',\n 'sm:grid-cols-6',\n 'md:grid-cols-2',\n 'md:grid-cols-3',\n 'md:grid-cols-4',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n // Switch component\n 'bg-neutral-200',\n 'dark:bg-neutral-700',\n 'bg-primary-500',\n 'h-5',\n 'w-9',\n 'h-6',\n 'w-11',\n 'h-7',\n 'w-14',\n 'h-4',\n 'w-4',\n 'w-5',\n 'w-6',\n 'translate-x-0.5',\n 'translate-x-4',\n 'translate-x-5',\n 'translate-x-7',\n // SchedulePicker / overflow handling\n 'overflow-x-auto',\n 'overflow-hidden',\n // Select component\n 'truncate',\n];\n\nexport interface MiewebUIPreset {\n darkMode: ['class', '[data-theme=\"dark\"]'];\n safelist: string[];\n theme: {\n extend: Record<string, unknown>;\n };\n}\n\nexport const miewebUIPreset: MiewebUIPreset = {\n darkMode: ['class', '[data-theme=\"dark\"]'],\n safelist: miewebUISafelist,\n theme: {\n extend: {\n colors: {\n // Primary color scale - easily overridable by consumers\n primary: {\n DEFAULT: 'var(--mieweb-primary, var(--mieweb-primary-500, #27aae1))',\n 50: 'var(--mieweb-primary-50, #f0f9ff)',\n 100: 'var(--mieweb-primary-100, #e0f4fe)',\n 200: 'var(--mieweb-primary-200, #b9eafd)',\n 300: 'var(--mieweb-primary-300, #7cdbfc)',\n 400: 'var(--mieweb-primary-400, #36c9f8)',\n 500: 'var(--mieweb-primary-500, #27aae1)',\n 600: 'var(--mieweb-primary-600, #0c90c9)',\n 700: 'var(--mieweb-primary-700, #0b73a3)',\n 800: 'var(--mieweb-primary-800, #0f6086)',\n 900: 'var(--mieweb-primary-900, #124f6f)',\n 950: 'var(--mieweb-primary-950, #0c334a)',\n foreground: 'var(--mieweb-primary-foreground, hsl(210 40% 98%))',\n },\n // Semantic colors using CSS variables for theming\n border: 'var(--mieweb-border, hsl(214.3 31.8% 91.4%))',\n input: 'var(--mieweb-input, hsl(214.3 31.8% 91.4%))',\n ring: 'var(--mieweb-ring, hsl(221.2 83.2% 53.3%))',\n background: 'var(--mieweb-background, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-foreground, hsl(222.2 84% 4.9%))',\n // Component-specific semantic colors\n card: {\n DEFAULT: 'var(--mieweb-card, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-card-foreground, hsl(222.2 84% 4.9%))',\n },\n muted: {\n DEFAULT: 'var(--mieweb-muted, hsl(210 40% 96.1%))',\n foreground: 'var(--mieweb-muted-foreground, hsl(215.4 16.3% 46.9%))',\n },\n destructive: {\n DEFAULT: 'var(--mieweb-destructive, hsl(0 84.2% 60.2%))',\n foreground: 'var(--mieweb-destructive-foreground, hsl(210 40% 98%))',\n },\n success: {\n DEFAULT: 'var(--mieweb-success, hsl(142.1 76.2% 36.3%))',\n foreground: 'var(--mieweb-success-foreground, hsl(355.7 100% 97.3%))',\n },\n warning: {\n DEFAULT: 'var(--mieweb-warning, hsl(45.4 93.4% 47.5%))',\n foreground: 'var(--mieweb-warning-foreground, hsl(26 83.3% 14.1%))',\n },\n info: {\n DEFAULT: 'var(--mieweb-info, hsl(204 94% 94%))',\n foreground: 'var(--mieweb-info-foreground, hsl(213 31% 91%))',\n },\n },\n fontFamily: {\n sans: [\n 'var(--mieweb-font-sans, ui-sans-serif)',\n 'system-ui',\n 'sans-serif',\n ],\n },\n borderRadius: {\n '2xl': 'var(--mieweb-radius-2xl, 1rem)',\n lg: 'var(--mieweb-radius-lg, 0.75rem)',\n md: 'var(--mieweb-radius-md, 0.5rem)',\n sm: 'var(--mieweb-radius-sm, 0.25rem)',\n xl: 'var(--mieweb-radius-xl, 1rem)',\n },\n boxShadow: {\n card: 'var(--mieweb-shadow-card, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1))',\n },\n keyframes: {\n 'fade-in': {\n '0%': { opacity: '0' },\n '100%': { opacity: '1' },\n },\n 'fade-out': {\n '0%': { opacity: '1' },\n '100%': { opacity: '0' },\n },\n 'slide-in-from-top': {\n '0%': { transform: 'translateY(-0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n '0%': { transform: 'translateY(0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-right': {\n '0%': { transform: 'translateX(100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'slide-in-left': {\n '0%': { transform: 'translateX(-100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'scale-in': {\n '0%': { transform: 'scale(0.95)', opacity: '0' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 150ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 150ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 150ms ease-out',\n 'slide-in-right': 'slide-in-right 300ms ease-out',\n 'slide-in-left': 'slide-in-left 300ms ease-out',\n 'scale-in': 'scale-in 150ms ease-out',\n },\n },\n },\n};\n\nexport default miewebUIPreset;\n"]}
@@ -1,3 +0,0 @@
1
- export { AlertCircle, ArrowLeft, Building, Calendar, Camera, Check, CheckCircle, ChevronDown, ChevronUp, ClipboardList, Clock, FileText, Globe, Image, Mail, Menu, Paperclip, Pencil, Phone, Plus, RefreshCw, Scan, ScanLine, Stethoscope, Trash2, Upload, Users, X } from 'lucide-react';
2
- //# sourceMappingURL=chunk-K5T2PT4M.js.map
3
- //# sourceMappingURL=chunk-K5T2PT4M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/date.ts"],"names":[],"mappings":"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","file":"chunk-KMN7JX2X.cjs","sourcesContent":["/**\n * Date formatting and validation utilities\n */\n\n/**\n * Formats a date string to MM/DD/YYYY format\n */\nexport function formatDateValue(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length === 0) return '';\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\n/**\n * Parses a date string (MM/DD/YYYY) to a Date object\n * Returns null if the date is invalid\n */\nexport function parseDateValue(value: string): Date | null {\n const digits = value.replace(/\\D/g, '');\n if (digits.length !== 8) return null;\n\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n\n if (month < 1 || month > 12) return null;\n if (day < 1 || day > 31) return null;\n if (year < 1900 || year > 2100) return null;\n\n const date = new Date(year, month - 1, day);\n\n // Verify the date is valid (handles edge cases like Feb 30)\n if (\n date.getMonth() !== month - 1 ||\n date.getDate() !== day ||\n date.getFullYear() !== year\n ) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Validates if a date string is a valid date\n */\nexport function isValidDate(value: string): boolean {\n return parseDateValue(value) !== null;\n}\n\n/**\n * Checks if a date string is empty\n */\nexport function isDateEmpty(value: string): boolean {\n return value.replace(/\\D/g, '').length === 0;\n}\n\n/**\n * Calculates age from a date of birth string (MM/DD/YYYY)\n * Returns null if the date is invalid\n */\nexport function calculateAge(dob: string): number | null {\n const birthDate = parseDateValue(dob);\n if (!birthDate) return null;\n\n const today = new Date();\n let age = today.getFullYear() - birthDate.getFullYear();\n const monthDiff = today.getMonth() - birthDate.getMonth();\n\n if (\n monthDiff < 0 ||\n (monthDiff === 0 && today.getDate() < birthDate.getDate())\n ) {\n age--;\n }\n\n return age;\n}\n\n/**\n * Checks if a date of birth represents a valid driving age (16+)\n */\nexport function isValidDrivingAge(dob: string): boolean {\n const age = calculateAge(dob);\n return age !== null && age >= 16;\n}\n\n/**\n * Checks if a date is in the past\n */\nexport function isDateInPast(value: string): boolean {\n const date = parseDateValue(value);\n if (!date) return false;\n return date < new Date();\n}\n\n/**\n * Checks if a date is in the future\n */\nexport function isDateInFuture(value: string): boolean {\n const date = parseDateValue(value);\n if (!date) return false;\n return date > new Date();\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/date.ts"],"names":[],"mappings":"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","file":"chunk-SN52QMRT.js","sourcesContent":["/**\n * Date formatting and validation utilities\n */\n\n/**\n * Formats a date string to MM/DD/YYYY format\n */\nexport function formatDateValue(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length === 0) return '';\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\n/**\n * Parses a date string (MM/DD/YYYY) to a Date object\n * Returns null if the date is invalid\n */\nexport function parseDateValue(value: string): Date | null {\n const digits = value.replace(/\\D/g, '');\n if (digits.length !== 8) return null;\n\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n\n if (month < 1 || month > 12) return null;\n if (day < 1 || day > 31) return null;\n if (year < 1900 || year > 2100) return null;\n\n const date = new Date(year, month - 1, day);\n\n // Verify the date is valid (handles edge cases like Feb 30)\n if (\n date.getMonth() !== month - 1 ||\n date.getDate() !== day ||\n date.getFullYear() !== year\n ) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Validates if a date string is a valid date\n */\nexport function isValidDate(value: string): boolean {\n return parseDateValue(value) !== null;\n}\n\n/**\n * Checks if a date string is empty\n */\nexport function isDateEmpty(value: string): boolean {\n return value.replace(/\\D/g, '').length === 0;\n}\n\n/**\n * Calculates age from a date of birth string (MM/DD/YYYY)\n * Returns null if the date is invalid\n */\nexport function calculateAge(dob: string): number | null {\n const birthDate = parseDateValue(dob);\n if (!birthDate) return null;\n\n const today = new Date();\n let age = today.getFullYear() - birthDate.getFullYear();\n const monthDiff = today.getMonth() - birthDate.getMonth();\n\n if (\n monthDiff < 0 ||\n (monthDiff === 0 && today.getDate() < birthDate.getDate())\n ) {\n age--;\n }\n\n return age;\n}\n\n/**\n * Checks if a date of birth represents a valid driving age (16+)\n */\nexport function isValidDrivingAge(dob: string): boolean {\n const age = calculateAge(dob);\n return age !== null && age >= 16;\n}\n\n/**\n * Checks if a date is in the past\n */\nexport function isDateInPast(value: string): boolean {\n const date = parseDateValue(value);\n if (!date) return false;\n return date < new Date();\n}\n\n/**\n * Checks if a date is in the future\n */\nexport function isDateInFuture(value: string): boolean {\n const date = parseDateValue(value);\n if (!date) return false;\n return date > new Date();\n}\n"]}