@skalfa/skalfa-component 1.0.8 → 1.0.9

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 (87) hide show
  1. package/dist/accordion/Accordion.component.js +2 -3
  2. package/dist/breadcrumb/Breadcrumb.component.js +2 -3
  3. package/dist/button/Button.component.d.ts +2 -1
  4. package/dist/button/Button.component.js +2 -2
  5. package/dist/carousel/Carousel.component.js +2 -3
  6. package/dist/chip/Chip.component.js +2 -3
  7. package/dist/contexts-mock.d.ts +2 -0
  8. package/dist/contexts-mock.js +10 -0
  9. package/dist/input/Checkbox.component.js +2 -3
  10. package/dist/input/Input.component.d.ts +3 -2
  11. package/dist/input/Input.component.js +3 -3
  12. package/dist/input/InputCheckbox.component.js +1 -1
  13. package/dist/input/InputCurrency.component.d.ts +3 -2
  14. package/dist/input/InputCurrency.component.js +3 -3
  15. package/dist/input/InputDate.component.js +4 -5
  16. package/dist/input/InputDatetime.component.d.ts +3 -2
  17. package/dist/input/InputDatetime.component.js +3 -3
  18. package/dist/input/InputDocument.component.js +7 -8
  19. package/dist/input/InputImage.component.js +3 -4
  20. package/dist/input/InputNumber.component.js +3 -4
  21. package/dist/input/InputPassword.component.js +3 -3
  22. package/dist/input/InputRadio.component.js +1 -1
  23. package/dist/input/InputTime.component.js +3 -3
  24. package/dist/input/InputValues.component.js +3 -4
  25. package/dist/input/Select.component.js +6 -7
  26. package/dist/modal/FloatingPage.component.d.ts +3 -1
  27. package/dist/modal/FloatingPage.component.js +7 -3
  28. package/dist/modal/Modal.component.js +1 -2
  29. package/dist/modal/ModalConfirm.component.d.ts +2 -2
  30. package/dist/modal/ModalConfirm.component.js +14 -12
  31. package/dist/modal/Toast.component.js +1 -2
  32. package/dist/nav/Bottombar.component.d.ts +2 -2
  33. package/dist/nav/Bottombar.component.js +7 -8
  34. package/dist/nav/Footer.component.d.ts +2 -2
  35. package/dist/nav/Footer.component.js +6 -7
  36. package/dist/nav/Headbar.component.js +2 -3
  37. package/dist/nav/Navbar.component.d.ts +2 -2
  38. package/dist/nav/Navbar.component.js +3 -4
  39. package/dist/nav/Sidebar.component.d.ts +3 -7
  40. package/dist/nav/Sidebar.component.js +14 -17
  41. package/dist/supervision/FormSupervision.component.d.ts +4 -29
  42. package/dist/supervision/FormSupervision.component.js +84 -136
  43. package/dist/supervision/TableSupervision.component.d.ts +17 -26
  44. package/dist/supervision/TableSupervision.component.js +207 -193
  45. package/dist/table/ControlBar.component.js +15 -16
  46. package/dist/table/FilterComponent.js +4 -6
  47. package/dist/table/Pagination.component.js +2 -3
  48. package/dist/table/Table.component.js +3 -4
  49. package/dist/wrap/Swipe.component.js +2 -2
  50. package/package.json +18 -10
  51. package/src/accordion/Accordion.component.tsx +3 -3
  52. package/src/breadcrumb/Breadcrumb.component.tsx +4 -4
  53. package/src/button/Button.component.tsx +3 -3
  54. package/src/carousel/Carousel.component.tsx +4 -4
  55. package/src/chip/Chip.component.tsx +3 -4
  56. package/src/contexts-mock.ts +6 -0
  57. package/src/input/Checkbox.component.tsx +3 -3
  58. package/src/input/Input.component.tsx +6 -6
  59. package/src/input/InputCheckbox.component.tsx +1 -1
  60. package/src/input/InputCurrency.component.tsx +6 -6
  61. package/src/input/InputDate.component.tsx +6 -7
  62. package/src/input/InputDatetime.component.tsx +6 -6
  63. package/src/input/InputDocument.component.tsx +9 -9
  64. package/src/input/InputImage.component.tsx +4 -5
  65. package/src/input/InputNumber.component.tsx +7 -8
  66. package/src/input/InputPassword.component.tsx +4 -4
  67. package/src/input/InputRadio.component.tsx +1 -1
  68. package/src/input/InputTime.component.tsx +4 -4
  69. package/src/input/InputValues.component.tsx +5 -6
  70. package/src/input/Select.component.tsx +10 -10
  71. package/src/modal/FloatingPage.component.tsx +33 -3
  72. package/src/modal/Modal.component.tsx +1 -2
  73. package/src/modal/ModalConfirm.component.tsx +34 -49
  74. package/src/modal/Toast.component.tsx +1 -2
  75. package/src/nav/Bottombar.component.tsx +9 -10
  76. package/src/nav/Footer.component.tsx +8 -9
  77. package/src/nav/Headbar.component.tsx +3 -3
  78. package/src/nav/Navbar.component.tsx +9 -10
  79. package/src/nav/Sidebar.component.tsx +55 -46
  80. package/src/supervision/FormSupervision.component.tsx +203 -224
  81. package/src/supervision/TableSupervision.component.tsx +420 -455
  82. package/src/table/ControlBar.component.tsx +16 -16
  83. package/src/table/FilterComponent.tsx +9 -11
  84. package/src/table/Pagination.component.tsx +6 -6
  85. package/src/table/Table.component.tsx +5 -5
  86. package/src/wrap/Swipe.component.tsx +3 -3
  87. package/src/types.d.ts +0 -7
@@ -1,8 +1,8 @@
1
1
  "use client"
2
+ import { Icon, type IconName } from "@skalfa/skalfa-icon";
3
+
2
4
 
3
5
  import { ReactNode, useEffect, useRef } from 'react'
4
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
- import { faArrowDownZA, faArrowUpAZ, faEllipsisV, faEyeLowVision, faMagnifyingGlass, faPlus, faRefresh, faSearch, faSliders, faSort } from '@fortawesome/free-solid-svg-icons';
6
6
  import { ApiFilterType, cn, conversion, shortcut, useResponsive } from '@utils';
7
7
  import { useToggleContext } from '@contexts';
8
8
  import { InputCheckboxComponent } from "../input/InputCheckbox.component";
@@ -121,7 +121,7 @@ export function ControlBarComponent({
121
121
  <>
122
122
  <div className={cn("control-bar", className)}>
123
123
  {(isSm ? [
124
- ...(options?.filter((op, iop) => iop == 0 || op == "REFRESH") || []),
124
+ ...(options?.filter((op) => op == "SEARCH" || op == "REFRESH") || []),
125
125
  ...(options && options?.length > 1 ? ['MOBILE_OPTION'] : [])
126
126
  ] : options)?.map((option: ControlBarOptionType, key: number) => {
127
127
  {
@@ -133,7 +133,7 @@ export function ControlBarComponent({
133
133
  return (
134
134
  <div className="control-bar-create-wrapper" key="button-add">
135
135
  <ButtonComponent
136
- icon={faPlus}
136
+ icon="solid/plus"
137
137
  label="Tambah Data"
138
138
  size="sm"
139
139
  onClick={() => setToggle(`MODAL_FORM_${conversion.strSnake(id).toUpperCase()}`)}
@@ -156,7 +156,7 @@ export function ControlBarComponent({
156
156
  ref={searchRef}
157
157
  name="search"
158
158
  placeholder="Cari disini..."
159
- rightIcon={faMagnifyingGlass}
159
+ rightIcon="solid/magnifying-glass"
160
160
  value={search}
161
161
  onChange={(e) => onSearch?.(e)}
162
162
  className={cn("control-bar-search-input", searchable && "control-bar-search-input-searchable")}
@@ -175,7 +175,7 @@ export function ControlBarComponent({
175
175
  <div className="control-bar-searchable-wrapper" key={key}>
176
176
  <SelectComponent
177
177
  name="searchableColumn"
178
- leftIcon={faSearch}
178
+ leftIcon="solid/search"
179
179
  options={searchableOptions?.map((column) => {
180
180
  return {
181
181
  label: column.label,
@@ -200,7 +200,7 @@ export function ControlBarComponent({
200
200
  return (
201
201
  <div className="control-bar-button-wrapper" key={key}>
202
202
  <ButtonComponent
203
- icon={faEyeLowVision}
203
+ icon="solid/eye-low-vision"
204
204
  variant="outline"
205
205
  className="control-bar-icon-button"
206
206
  onClick={() => setToggle("SELECTABLE")}
@@ -243,7 +243,7 @@ export function ControlBarComponent({
243
243
  return sortableOptions?.length ? (
244
244
  <div className="control-bar-button-wrapper" key={key}>
245
245
  <ButtonComponent
246
- icon={faSort}
246
+ icon="solid/sort"
247
247
  variant="outline"
248
248
  className="control-bar-icon-button"
249
249
  onClick={() => setToggle("SORT")}
@@ -270,7 +270,7 @@ export function ControlBarComponent({
270
270
 
271
271
  {sortBy && (
272
272
  <div className='control-bar-sort-active-icon'>
273
- <FontAwesomeIcon icon={sortBy == "desc" ? faArrowDownZA : faArrowUpAZ} className='control-bar-sort-icon' />
273
+ <Icon icon={sortBy == "desc" ? "solid/arrow-down-z-a" : "solid/arrow-up-a-z"} className='control-bar-sort-icon' />
274
274
  {sort?.length && sort?.length > 1 && <span className='control-bar-sort-badge'>{sort.findIndex((s) => s.split(" ")?.at(0) == option?.selector) + 1}</span>}
275
275
  </div>
276
276
  )}
@@ -293,7 +293,7 @@ export function ControlBarComponent({
293
293
  return (
294
294
  <div className="control-bar-button-wrapper-refresh" key={key}>
295
295
  <ButtonComponent
296
- icon={faRefresh}
296
+ icon="solid/refresh"
297
297
  variant="outline"
298
298
  className="control-bar-icon-button"
299
299
  onClick={() => onRefresh?.()}
@@ -312,7 +312,7 @@ export function ControlBarComponent({
312
312
  return (
313
313
  <div className="control-bar-button-wrapper" key={key}>
314
314
  <ButtonComponent
315
- icon={faSliders}
315
+ icon="solid/sliders"
316
316
  label="Filter"
317
317
  variant="outline"
318
318
  className="control-bar-filter-button"
@@ -332,7 +332,7 @@ export function ControlBarComponent({
332
332
  return (
333
333
  <div className="control-bar-button-wrapper" key={key}>
334
334
  <ButtonComponent
335
- icon={faEllipsisV}
335
+ icon="solid/ellipsis-v"
336
336
  variant="outline"
337
337
  className="control-bar-icon-button"
338
338
  onClick={() => setToggle("MOBILE_OPTION")}
@@ -365,7 +365,7 @@ export function ControlBarComponent({
365
365
  maxSize="98vh"
366
366
  >
367
367
  <div className='control-bar-mobile-container'>
368
- {options?.filter((op, iop) => (iop != 0 && op != "CREATE" && op != "REFRESH"))?.map((option: ControlBarOptionType, key: number) => {
368
+ {options?.filter((op, iop) => (iop != 0 && op != "CREATE" && op != "SEARCH" && op != "REFRESH"))?.map((option: ControlBarOptionType, key: number) => {
369
369
  {
370
370
  // =========================>
371
371
  // ## Search Field
@@ -377,7 +377,7 @@ export function ControlBarComponent({
377
377
  <InputComponent
378
378
  name="search"
379
379
  placeholder="Cari disini..."
380
- rightIcon={faMagnifyingGlass}
380
+ rightIcon="solid/magnifying-glass"
381
381
  value={search}
382
382
  onChange={(e) => onSearch?.(e)}
383
383
  />
@@ -395,7 +395,7 @@ export function ControlBarComponent({
395
395
  <div key={key}>
396
396
  <SelectComponent
397
397
  name="searchableColumn"
398
- leftIcon={faSearch}
398
+ leftIcon="solid/search"
399
399
  options={searchableOptions?.map((column) => {
400
400
  return {
401
401
  label: column.label,
@@ -459,7 +459,7 @@ export function ControlBarComponent({
459
459
 
460
460
  {sortBy && (
461
461
  <div className='text-primary'>
462
- <FontAwesomeIcon icon={sortBy == "desc" ? faArrowDownZA : faArrowUpAZ} className='text-xs' />
462
+ <Icon icon={sortBy == "desc" ? "solid/arrow-down-z-a" : "solid/arrow-up-a-z"} className='text-xs' />
463
463
  {sort?.length && sort?.length > 1 && <span className='text-[9px] ml-1'>{sort.findIndex((s) => s.split(" ")?.at(0) == option?.selector) + 1}</span>}
464
464
  </div>
465
465
  )}
@@ -1,7 +1,6 @@
1
1
  "use client"
2
2
 
3
3
  import { useState, useEffect } from "react";
4
- import { faChevronUp, faEllipsisH, faPlus, faRotate, faTimes } from "@fortawesome/free-solid-svg-icons";
5
4
  import { ApiFilterType, cn, pcn, useResponsive } from "@utils";
6
5
  import { ButtonComponent } from "../button/Button.component";
7
6
  import { ChipComponent } from "../chip/Chip.component";
@@ -12,7 +11,6 @@ import { InputNumberComponent } from "../input/InputNumber.component";
12
11
  import { ModalComponent } from "../modal/Modal.component";
13
12
  import { SelectComponent } from "../input/Select.component";
14
13
  import { useToggleContext } from "@contexts";
15
- import { faBookmark } from "@fortawesome/free-regular-svg-icons";
16
14
 
17
15
  type CT = "base" | "title";
18
16
 
@@ -122,7 +120,7 @@ export function FilterComponent({
122
120
  <div className="filter-panel-controls">
123
121
  <div className="filter-panel-bookmarks-wrapper">
124
122
  <ButtonComponent
125
- icon={faBookmark}
123
+ icon="solid/bookmark"
126
124
  variant="outline"
127
125
  paint="primary"
128
126
  className="filter-panel-bookmark-btn icon::text-slate-400"
@@ -140,7 +138,7 @@ export function FilterComponent({
140
138
 
141
139
  {bookmarks?.length > 5 && (
142
140
  <ButtonComponent
143
- icon={faEllipsisH}
141
+ icon="solid/ellipsis-h"
144
142
  variant="outline"
145
143
  paint="primary"
146
144
  className="filter-panel-bookmark-btn icon::text-slate-400"
@@ -151,7 +149,7 @@ export function FilterComponent({
151
149
  </div>
152
150
 
153
151
  <ButtonComponent
154
- icon={faRotate}
152
+ icon="solid/rotate"
155
153
  label="Bersihkan"
156
154
  variant="outline"
157
155
  paint="primary"
@@ -162,7 +160,7 @@ export function FilterComponent({
162
160
 
163
161
  {onMinimize && (
164
162
  <ButtonComponent
165
- icon={faChevronUp}
163
+ icon="solid/chevron-up"
166
164
  variant="outline"
167
165
  paint="primary"
168
166
  className="filter-panel-bookmark-btn icon::text-slate-400"
@@ -218,7 +216,7 @@ export function FilterComponent({
218
216
 
219
217
  {isSm && (
220
218
  <ButtonComponent
221
- icon={faTimes}
219
+ icon="solid/times"
222
220
  paint="danger"
223
221
  variant="outline"
224
222
  onClick={() => removeFilter(i)}
@@ -244,7 +242,7 @@ export function FilterComponent({
244
242
 
245
243
  {!isSm && (
246
244
  <ButtonComponent
247
- icon={faTimes}
245
+ icon="solid/times"
248
246
  paint="danger"
249
247
  variant="outline"
250
248
  onClick={() => removeFilter(i)}
@@ -257,7 +255,7 @@ export function FilterComponent({
257
255
 
258
256
  <ButtonComponent
259
257
  label="Tambahkan"
260
- icon={faPlus}
258
+ icon="solid/plus"
261
259
  variant="outline"
262
260
  paint="primary"
263
261
  size={isSm ? "xs" : "sm"}
@@ -277,7 +275,7 @@ export function FilterComponent({
277
275
  <p className="filter-bookmark-name">{b.name}</p>
278
276
  <div className="flex gap-2">
279
277
  <ButtonComponent
280
- icon={faPlus}
278
+ icon="solid/plus"
281
279
  variant="outline"
282
280
  paint="primary"
283
281
  className=""
@@ -288,7 +286,7 @@ export function FilterComponent({
288
286
  }}
289
287
  />
290
288
  <ButtonComponent
291
- icon={faTimes}
289
+ icon="solid/times"
292
290
  variant="outline"
293
291
  paint="danger"
294
292
  className=""
@@ -1,8 +1,8 @@
1
1
  "use client"
2
+ import { Icon, type IconName } from "@skalfa/skalfa-icon";
3
+
2
4
 
3
5
  import { useEffect, useState } from "react";
4
- import { faChevronLeft, faChevronRight } from "@fortawesome/free-solid-svg-icons";
5
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
6
6
  import { cn, pcn } from "@utils";
7
7
  import { ButtonComponent } from "../button/Button.component";
8
8
  import { InputRadioComponent } from "../input/InputRadio.component";
@@ -62,7 +62,7 @@ export function PaginationComponent({
62
62
  className="pagination-overflow"
63
63
  onClick={() => onChange?.(totalRow, paginate, page - 1)}
64
64
  >
65
- <FontAwesomeIcon icon={faChevronLeft} />
65
+ <Icon icon="solid/chevron-left" />
66
66
  </button>
67
67
  )}
68
68
 
@@ -111,7 +111,7 @@ export function PaginationComponent({
111
111
  className="pagination-overflow"
112
112
  onClick={() => onChange?.(totalRow, paginate, page + 1)}
113
113
  >
114
- <FontAwesomeIcon icon={faChevronRight} />
114
+ <Icon icon="solid/chevron-right" />
115
115
  </button>
116
116
  )}
117
117
  </div>
@@ -132,14 +132,14 @@ export function PaginationComponent({
132
132
  <div className="pagination-mobile-controls">
133
133
  {page > 1 && (
134
134
  <ButtonComponent
135
- icon={faChevronLeft}
135
+ icon="solid/chevron-left"
136
136
  onClick={() => onChange?.(totalRow, paginate, page - 1)}
137
137
  size="sm"
138
138
  />
139
139
  )}
140
140
  {page < lastPage && (
141
141
  <ButtonComponent
142
- icon={faChevronRight}
142
+ icon="solid/chevron-right"
143
143
  onClick={() => onChange?.(totalRow, paginate, page + 1)}
144
144
  size="sm"
145
145
  />
@@ -1,8 +1,8 @@
1
1
  "use client"
2
+ import { Icon, type IconName } from "@skalfa/skalfa-icon";
3
+
2
4
 
3
5
  import { isValidElement, ReactNode, useEffect, useMemo, useRef, useState } from "react";
4
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
5
- import { faArrowDownZA, faArrowUpAZ, faChevronLeft, faChevronRight } from "@fortawesome/free-solid-svg-icons";
6
6
  import { ApiFilterType, cn, pcn, useLazySearch, useResponsive, conversion } from "@utils";
7
7
  import { ControlBarComponent, ControlBarOptionType } from "./ControlBar.component";
8
8
  import { PaginationComponent, PaginationProps } from "./Pagination.component";
@@ -158,8 +158,8 @@ export function TableComponent({
158
158
  {column.label}
159
159
 
160
160
  {!!sortColumn && (
161
- <FontAwesomeIcon
162
- icon={sortDirection == "desc" ? faArrowDownZA : faArrowUpAZ}
161
+ <Icon
162
+ icon={sortDirection == "desc" ? "solid/arrow-down-z-a" : "solid/arrow-up-a-z"}
163
163
  className="text-light-foreground/70"
164
164
  />
165
165
  )}
@@ -379,7 +379,7 @@ export function TableComponent({
379
379
  }
380
380
  >
381
381
  <div className="table-floating-action-icon-wrapper">
382
- <FontAwesomeIcon icon={floatingActionActive === false || floatingActionActive != key ? faChevronLeft : faChevronRight}/>
382
+ <Icon icon={floatingActionActive === false || floatingActionActive != key ? "solid/chevron-left" : "solid/chevron-right"}/>
383
383
  </div>
384
384
 
385
385
  <div className={cn("table-floating-action-content", floatingActionActive === key && "table-floating-action-content-active")}>
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { ReactNode, useRef, useState } from 'react'
4
4
  import { cn } from '@utils';
5
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
+ import { Icon } from '@skalfa/skalfa-icon';
6
6
 
7
7
 
8
8
  export type SwipeActionType = {
@@ -84,7 +84,7 @@ export function SwipeComponent({
84
84
  offset > 0 ? "opacity-100" : "opacity-0"
85
85
  )}
86
86
  >
87
- {leftActionControl?.icon && <FontAwesomeIcon icon={leftActionControl?.icon} />} {leftActionControl?.label}
87
+ {leftActionControl?.icon && <Icon icon={leftActionControl?.icon} />} {leftActionControl?.label}
88
88
  </div>
89
89
 
90
90
  <div
@@ -95,7 +95,7 @@ export function SwipeComponent({
95
95
  offset < 0 ? "opacity-100" : "opacity-0"
96
96
  )}
97
97
  >
98
- {rightActionControl?.icon && <FontAwesomeIcon icon={rightActionControl?.icon} />} {rightActionControl?.label}
98
+ {rightActionControl?.icon && <Icon icon={rightActionControl?.icon} />} {rightActionControl?.label}
99
99
  </div>
100
100
 
101
101
  <div
package/src/types.d.ts DELETED
@@ -1,7 +0,0 @@
1
- declare module "@contexts" {
2
- export function useToggleContext(): {
3
- setToggle: (key: string, value?: any) => void;
4
- toggle: Record<string, any>;
5
- };
6
- export function useAppContext(): any;
7
- }