@propriety/court-calendar 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.editorconfig +26 -0
  2. package/README.md +0 -0
  3. package/biome.json +302 -0
  4. package/dev/App.tsx +51 -0
  5. package/dev/main.tsx +10 -0
  6. package/index.html +12 -0
  7. package/package.json +54 -0
  8. package/public/vite.svg +1 -0
  9. package/src/_components/CCalendar.css +463 -0
  10. package/src/_components/CCalendar.tsx +726 -0
  11. package/src/_components/List/CalendarList.tsx +288 -0
  12. package/src/_components/Modal/CaseDetails/CaseDetails.tsx +414 -0
  13. package/src/_components/Modal/CaseDetails/EvidenceRow.tsx +83 -0
  14. package/src/_components/Modal/CaseDetails/EvidenceSection.tsx +94 -0
  15. package/src/_components/Modal/CreateEdit/CreateEditCase.tsx +241 -0
  16. package/src/_components/Modal/CreateEdit/DateSelector.tsx +42 -0
  17. package/src/_components/Modal/CreateEdit/EditUserFieldDropdown.tsx +54 -0
  18. package/src/_components/Modal/CreateEdit/EnumDropdown.tsx +54 -0
  19. package/src/_components/Modal/CreateEdit/HearingOfficerDropdown.tsx +48 -0
  20. package/src/_components/Modal/CreateEdit/TextFieldList.tsx +186 -0
  21. package/src/_components/Modal/CreateEdit/ToggleableTextField.tsx +91 -0
  22. package/src/_components/Modal/Modal.css +15 -0
  23. package/src/_components/Modal/Modal.tsx +325 -0
  24. package/src/_components/Modal/ModalActions.tsx +99 -0
  25. package/src/_components/Modal/View/CaseToolbar.tsx +81 -0
  26. package/src/_components/Modal/View/CaseViewer.tsx +237 -0
  27. package/src/_components/Modal/View/DateDetails.tsx +138 -0
  28. package/src/_components/Modal/View/InfoBox.tsx +22 -0
  29. package/src/_components/Modal/View/InfoBoxBtn.css +39 -0
  30. package/src/_components/Modal/View/InfoBoxBtn.tsx +29 -0
  31. package/src/_components/Modal/View/NoticeFileLink.tsx +44 -0
  32. package/src/_components/Shared/FirstSecondChairIcons.tsx +247 -0
  33. package/src/_components/Shared/FormRow.tsx +37 -0
  34. package/src/_components/Shared/MuniDropdown.tsx +94 -0
  35. package/src/_components/Shared/SearchBar.tsx +87 -0
  36. package/src/_components/Toolbar/CaseFilter.tsx +77 -0
  37. package/src/_components/Toolbar/DateTypeFilter.tsx +63 -0
  38. package/src/_components/Toolbar/HearingTypeFilter.tsx +63 -0
  39. package/src/_components/Toolbar/Toolbar.tsx +159 -0
  40. package/src/_components/Toolbar/UserFilter.tsx +105 -0
  41. package/src/_components/Toolbar/ViewFilter.tsx +48 -0
  42. package/src/helpers/cache.ts +89 -0
  43. package/src/helpers/cases.ts +79 -0
  44. package/src/helpers/courtDates.ts +139 -0
  45. package/src/helpers/formatter.ts +16 -0
  46. package/src/helpers/munis.ts +44 -0
  47. package/src/helpers/people.ts +46 -0
  48. package/src/index.ts +2 -0
  49. package/src/types.ts +129 -0
  50. package/tsconfig.app.json +32 -0
  51. package/tsconfig.json +4 -0
  52. package/tsconfig.node.json +30 -0
  53. package/vite.config.ts +27 -0
package/.editorconfig ADDED
@@ -0,0 +1,26 @@
1
+ # EditorConfig is awesome: https://EditorConfig.org
2
+
3
+ # top-most EditorConfig file
4
+ root = true
5
+
6
+ # Unix-style newlines with a newline ending every file
7
+ [*]
8
+ end_of_line = lf
9
+ insert_final_newline = true
10
+ charset = utf-8
11
+ trim_trailing_whitespace = true
12
+
13
+ # Indentation for JavaScript/TypeScript files
14
+ [*.{js,jsx,ts,tsx}]
15
+ indent_style = space
16
+ indent_size = 4
17
+
18
+ # Indentation for JSON files
19
+ [*.json]
20
+ indent_style = space
21
+ indent_size = 2
22
+
23
+ # Indentation for CSS files
24
+ [*.css]
25
+ indent_style = space
26
+ indent_size = 4
package/README.md ADDED
File without changes
package/biome.json ADDED
@@ -0,0 +1,302 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
3
+ "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
4
+ "files": { "ignoreUnknown": false },
5
+ "formatter": {
6
+ "enabled": true,
7
+ "indentStyle": "space",
8
+ "indentWidth": 4,
9
+ "lineWidth": 120
10
+ },
11
+ "linter": {
12
+ "enabled": true,
13
+ "rules": { "recommended": false },
14
+ "includes": ["**", "!dist"]
15
+ },
16
+ "javascript": {
17
+ "formatter": { "quoteStyle": "single", "jsxQuoteStyle": "single" }
18
+ },
19
+ "overrides": [
20
+ {
21
+ "includes": ["**/*.{ts,tsx}"],
22
+ "linter": {
23
+ "rules": {
24
+ "complexity": {
25
+ "noAdjacentSpacesInRegex": "error",
26
+ "noExtraBooleanCast": "error",
27
+ "noUselessCatch": "error",
28
+ "noUselessEscapeInRegex": "error"
29
+ },
30
+ "correctness": {
31
+ "noConstAssign": "error",
32
+ "noConstantCondition": "error",
33
+ "noEmptyCharacterClassInRegex": "error",
34
+ "noEmptyPattern": "error",
35
+ "noGlobalObjectCalls": "error",
36
+ "noInvalidBuiltinInstantiation": "error",
37
+ "noInvalidConstructorSuper": "error",
38
+ "noNonoctalDecimalEscape": "error",
39
+ "noPrecisionLoss": "error",
40
+ "noSelfAssign": "error",
41
+ "noSetterReturn": "error",
42
+ "noSwitchDeclarations": "error",
43
+ "noUndeclaredVariables": "error",
44
+ "noUnreachable": "error",
45
+ "noUnreachableSuper": "error",
46
+ "noUnsafeFinally": "error",
47
+ "noUnsafeOptionalChaining": "error",
48
+ "noUnusedLabels": "error",
49
+ "noUnusedPrivateClassMembers": "error",
50
+ "noUnusedVariables": "error",
51
+ "useIsNan": "error",
52
+ "useValidForDirection": "error",
53
+ "useValidTypeof": "error",
54
+ "useYield": "error"
55
+ },
56
+ "suspicious": {
57
+ "noAsyncPromiseExecutor": "error",
58
+ "noCatchAssign": "error",
59
+ "noClassAssign": "error",
60
+ "noCompareNegZero": "error",
61
+ "noConstantBinaryExpressions": "error",
62
+ "noControlCharactersInRegex": "error",
63
+ "noDebugger": "error",
64
+ "noDuplicateCase": "error",
65
+ "noDuplicateClassMembers": "error",
66
+ "noDuplicateElseIf": "error",
67
+ "noDuplicateObjectKeys": "error",
68
+ "noDuplicateParameters": "error",
69
+ "noEmptyBlockStatements": "error",
70
+ "noFallthroughSwitchClause": "error",
71
+ "noFunctionAssign": "error",
72
+ "noGlobalAssign": "error",
73
+ "noImportAssign": "error",
74
+ "noIrregularWhitespace": "error",
75
+ "noMisleadingCharacterClass": "error",
76
+ "noPrototypeBuiltins": "error",
77
+ "noRedeclare": "error",
78
+ "noShadowRestrictedNames": "error",
79
+ "noSparseArray": "error",
80
+ "noUnsafeNegation": "error",
81
+ "noUselessRegexBackrefs": "error",
82
+ "noWith": "error",
83
+ "useGetterReturn": "error"
84
+ }
85
+ }
86
+ }
87
+ },
88
+ { "includes": ["**/*.{ts,tsx}"], "javascript": { "globals": [] } },
89
+ {
90
+ "includes": [
91
+ "**/*.{ts,tsx}",
92
+ "**/*.ts",
93
+ "**/*.{ts,tsx}",
94
+ "**/*.tsx",
95
+ "**/*.{ts,tsx}",
96
+ "**/*.mts",
97
+ "**/*.{ts,tsx}",
98
+ "**/*.cts"
99
+ ],
100
+ "linter": {
101
+ "rules": {
102
+ "complexity": { "noArguments": "error" },
103
+ "correctness": {
104
+ "noConstAssign": "off",
105
+ "noGlobalObjectCalls": "off",
106
+ "noInvalidBuiltinInstantiation": "off",
107
+ "noInvalidConstructorSuper": "off",
108
+ "noSetterReturn": "off",
109
+ "noUndeclaredVariables": "off",
110
+ "noUnreachable": "off",
111
+ "noUnreachableSuper": "off"
112
+ },
113
+ "style": { "useConst": "error" },
114
+ "suspicious": {
115
+ "noClassAssign": "off",
116
+ "noDuplicateClassMembers": "off",
117
+ "noDuplicateObjectKeys": "off",
118
+ "noDuplicateParameters": "off",
119
+ "noFunctionAssign": "off",
120
+ "noImportAssign": "off",
121
+ "noRedeclare": "off",
122
+ "noUnsafeNegation": "off",
123
+ "noVar": "error",
124
+ "noWith": "off",
125
+ "useGetterReturn": "off"
126
+ }
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "includes": ["**/*.{ts,tsx}"],
132
+ "linter": {
133
+ "rules": {
134
+ "complexity": { "noUselessTypeConstraint": "error" },
135
+ "correctness": { "noUnusedVariables": "error" },
136
+ "style": {
137
+ "noCommonJs": "error",
138
+ "noNamespace": "off",
139
+ "useArrayLiterals": "error",
140
+ "useAsConstAssertion": "error"
141
+ },
142
+ "suspicious": {
143
+ "noExplicitAny": "error",
144
+ "noExtraNonNullAssertion": "error",
145
+ "noMisleadingInstantiator": "error",
146
+ "noNonNullAssertedOptionalChain": "error",
147
+ "noUnsafeDeclarationMerging": "error",
148
+ "useNamespaceKeyword": "error"
149
+ }
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "includes": ["**/*.{ts,tsx}"],
155
+ "linter": {
156
+ "rules": {
157
+ "correctness": {
158
+ "useExhaustiveDependencies": "warn",
159
+ "useHookAtTopLevel": "error"
160
+ }
161
+ }
162
+ }
163
+ },
164
+ { "includes": ["**/*.{ts,tsx}"], "linter": { "rules": {} } },
165
+ {
166
+ "includes": ["**/*.{ts,tsx}"],
167
+ "javascript": {
168
+ "globals": [
169
+ "onanimationend",
170
+ "ongamepadconnected",
171
+ "onlostpointercapture",
172
+ "onanimationiteration",
173
+ "onkeyup",
174
+ "onmousedown",
175
+ "onanimationstart",
176
+ "onslotchange",
177
+ "onprogress",
178
+ "ontransitionstart",
179
+ "onpause",
180
+ "onended",
181
+ "onpointerover",
182
+ "onscrollend",
183
+ "onformdata",
184
+ "ontransitionrun",
185
+ "onanimationcancel",
186
+ "ondrag",
187
+ "onchange",
188
+ "onbeforeinstallprompt",
189
+ "onbeforexrselect",
190
+ "onmessage",
191
+ "ontransitioncancel",
192
+ "onpointerdown",
193
+ "onabort",
194
+ "onpointerout",
195
+ "oncuechange",
196
+ "ongotpointercapture",
197
+ "onscrollsnapchanging",
198
+ "onsearch",
199
+ "onsubmit",
200
+ "onstalled",
201
+ "onsuspend",
202
+ "onreset",
203
+ "onerror",
204
+ "onmouseenter",
205
+ "ongamepaddisconnected",
206
+ "onresize",
207
+ "ondragover",
208
+ "onbeforetoggle",
209
+ "onmouseover",
210
+ "onpagehide",
211
+ "onmousemove",
212
+ "onratechange",
213
+ "oncommand",
214
+ "onmessageerror",
215
+ "onwheel",
216
+ "ondevicemotion",
217
+ "onauxclick",
218
+ "ontransitionend",
219
+ "onpaste",
220
+ "onpageswap",
221
+ "ononline",
222
+ "ondeviceorientationabsolute",
223
+ "onkeydown",
224
+ "onclose",
225
+ "onselect",
226
+ "onpageshow",
227
+ "onpointercancel",
228
+ "onbeforematch",
229
+ "onpointerrawupdate",
230
+ "ondragleave",
231
+ "onscrollsnapchange",
232
+ "onseeked",
233
+ "onwaiting",
234
+ "onbeforeunload",
235
+ "onplaying",
236
+ "onvolumechange",
237
+ "ondragend",
238
+ "onstorage",
239
+ "onloadeddata",
240
+ "onfocus",
241
+ "onoffline",
242
+ "onplay",
243
+ "onafterprint",
244
+ "onclick",
245
+ "oncut",
246
+ "onmouseout",
247
+ "ondblclick",
248
+ "oncanplay",
249
+ "onloadstart",
250
+ "onappinstalled",
251
+ "onpointermove",
252
+ "ontoggle",
253
+ "oncontextmenu",
254
+ "onblur",
255
+ "oncancel",
256
+ "onbeforeprint",
257
+ "oncontextrestored",
258
+ "onloadedmetadata",
259
+ "onpointerup",
260
+ "onlanguagechange",
261
+ "oncopy",
262
+ "onselectstart",
263
+ "onscroll",
264
+ "onload",
265
+ "ondragstart",
266
+ "onbeforeinput",
267
+ "oncanplaythrough",
268
+ "oninput",
269
+ "oninvalid",
270
+ "ontimeupdate",
271
+ "ondurationchange",
272
+ "onselectionchange",
273
+ "onmouseup",
274
+ "location",
275
+ "onkeypress",
276
+ "onpointerleave",
277
+ "oncontextlost",
278
+ "ondrop",
279
+ "onsecuritypolicyviolation",
280
+ "oncontentvisibilityautostatechange",
281
+ "ondeviceorientation",
282
+ "onseeking",
283
+ "onrejectionhandled",
284
+ "onunload",
285
+ "onmouseleave",
286
+ "onhashchange",
287
+ "onpointerenter",
288
+ "onmousewheel",
289
+ "onunhandledrejection",
290
+ "ondragenter",
291
+ "onpopstate",
292
+ "onpagereveal",
293
+ "onemptied"
294
+ ]
295
+ }
296
+ }
297
+ ],
298
+ "assist": {
299
+ "enabled": true,
300
+ "actions": { "source": { "organizeImports": "off" } }
301
+ }
302
+ }
package/dev/App.tsx ADDED
@@ -0,0 +1,51 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { CCalendar } from '../src/';
3
+
4
+ function App() {
5
+ function toggleTheme() {
6
+ setCurrentTheme(currentTheme === 'light' ? 'dark' : 'light');
7
+ }
8
+
9
+ const [currentTheme, setCurrentTheme] = useState('dark');
10
+
11
+ useEffect(() => {
12
+ document.body.setAttribute('data-theme', currentTheme);
13
+ }, [currentTheme]);
14
+
15
+ return (
16
+ <div
17
+ style={{
18
+ padding: '2rem',
19
+ backgroundColor: 'var(--bg)',
20
+ color: 'var(--text)',
21
+ }}
22
+ >
23
+ <h1>Court Calendar Demo</h1>
24
+ <div
25
+ style={{
26
+ flexDirection: 'column',
27
+ display: 'flex',
28
+ }}
29
+ >
30
+ <button
31
+ onClick={toggleTheme}
32
+ style={{
33
+ marginBottom: '1rem',
34
+ height: '2rem',
35
+ backgroundColor: 'var(--bg)',
36
+ color: 'var(--text)',
37
+ }}
38
+ >
39
+ Theme toggle
40
+ </button>
41
+ </div>
42
+
43
+ <CCalendar
44
+ apiKey={import.meta.env.VITE_CALENDAR_API_KEY || ''}
45
+ activeUser={27}
46
+ />
47
+ </div>
48
+ );
49
+ }
50
+
51
+ export default App;
package/dev/main.tsx ADDED
@@ -0,0 +1,10 @@
1
+ import { StrictMode } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+
4
+ import App from './App.tsx';
5
+
6
+ createRoot(document.getElementById('root')!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>
10
+ );
package/index.html ADDED
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Component Dev</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/dev/main.tsx"></script>
11
+ </body>
12
+ </html>
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@propriety/court-calendar",
3
+ "private": false,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "scripts": {
17
+ "dev": "vite",
18
+ "build": "tsc -b && vite build",
19
+ "lint": "eslint .",
20
+ "preview": "vite preview"
21
+ },
22
+ "dependencies": {
23
+ "@emotion/react": "^11.14.0",
24
+ "@emotion/styled": "^11.14.1",
25
+ "@fullcalendar/core": "^6.1.19",
26
+ "@fullcalendar/daygrid": "^6.1.19",
27
+ "@fullcalendar/interaction": "^6.1.20",
28
+ "@fullcalendar/list": "^6.1.19",
29
+ "@fullcalendar/react": "^6.1.19",
30
+ "@fullcalendar/timegrid": "^6.1.19",
31
+ "@mui/icons-material": "^7.3.6",
32
+ "@mui/material": "^7.3.6",
33
+ "@mui/x-data-grid": "^8.25.0",
34
+ "@mui/x-date-pickers": "^8.23.0",
35
+ "dayjs": "^1.11.19",
36
+ "dexie": "^4.2.1",
37
+ "node-fetch": "^3.3.2",
38
+ "react": "^19.2.0",
39
+ "react-dom": "^19.2.0",
40
+ "react-tooltip": "^5.30.0"
41
+ },
42
+ "devDependencies": {
43
+ "@biomejs/biome": "2.3.10",
44
+ "@types/node": "^24.10.1",
45
+ "@types/react": "^19.2.5",
46
+ "@types/react-dom": "^19.2.3",
47
+ "@types/react-modal": "^3.16.3",
48
+ "@vitejs/plugin-react-swc": "^4.2.2",
49
+ "typescript": "~5.9.3",
50
+ "typescript-eslint": "^8.46.4",
51
+ "vite": "^7.2.4",
52
+ "vite-plugin-dts": "^4.5.4"
53
+ }
54
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>