shad-m 1.0.0 → 1.0.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.
- package/dist/common/interactive/list.d.ts +1 -1
- package/dist/common/interactive/select/variants.d.ts +1 -1
- package/dist/components/alert-dialog.d.ts +2 -2
- package/dist/components/badge.d.ts +3 -3
- package/dist/components/button.d.ts +4 -4
- package/dist/components/chip.d.ts +2 -2
- package/dist/components/command.d.ts +7 -7
- package/dist/components/dialog.d.ts +2 -2
- package/dist/components/input-otp.d.ts +2 -2
- package/dist/components/resizable.d.ts +1 -1
- package/dist/components/sidebar.d.ts +1 -1
- package/dist/components/spinner.d.ts +2 -2
- package/dist/components/stepper.d.ts +3 -3
- package/dist/components/toggle-group.d.ts +2 -2
- package/dist/components/toggle.d.ts +2 -2
- package/dist/index.css +43 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8189 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7846 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +34 -2
- package/dist/assets/Animation/index.js +0 -180
- package/dist/assets/Animation/index.js.map +0 -1
- package/dist/assets/Animation/index.mjs +0 -79
- package/dist/assets/Animation/index.mjs.map +0 -1
- package/dist/assets/Icon/index.js +0 -2102
- package/dist/assets/Icon/index.js.map +0 -1
- package/dist/assets/Icon/index.mjs +0 -421
- package/dist/assets/Icon/index.mjs.map +0 -1
- package/dist/assets/Image/index.js +0 -755
- package/dist/assets/Image/index.js.map +0 -1
- package/dist/assets/Image/index.mjs +0 -150
- package/dist/assets/Image/index.mjs.map +0 -1
- package/dist/common/display/countdown.js +0 -68
- package/dist/common/display/countdown.js.map +0 -1
- package/dist/common/display/countdown.mjs +0 -46
- package/dist/common/display/countdown.mjs.map +0 -1
- package/dist/common/display/display-field-group.js +0 -91
- package/dist/common/display/display-field-group.js.map +0 -1
- package/dist/common/display/display-field-group.mjs +0 -89
- package/dist/common/display/display-field-group.mjs.map +0 -1
- package/dist/common/display/display-field.js +0 -46
- package/dist/common/display/display-field.js.map +0 -1
- package/dist/common/display/display-field.mjs +0 -40
- package/dist/common/display/display-field.mjs.map +0 -1
- package/dist/common/display/display-html-string.js +0 -52
- package/dist/common/display/display-html-string.js.map +0 -1
- package/dist/common/display/display-html-string.mjs +0 -30
- package/dist/common/display/display-html-string.mjs.map +0 -1
- package/dist/common/display/index.js +0 -59
- package/dist/common/display/index.js.map +0 -1
- package/dist/common/display/index.mjs +0 -10
- package/dist/common/display/index.mjs.map +0 -1
- package/dist/common/display/page-breadcrumb.js +0 -43
- package/dist/common/display/page-breadcrumb.js.map +0 -1
- package/dist/common/display/page-breadcrumb.mjs +0 -37
- package/dist/common/display/page-breadcrumb.mjs.map +0 -1
- package/dist/common/display/page-v2.js +0 -58
- package/dist/common/display/page-v2.js.map +0 -1
- package/dist/common/display/page-v2.mjs +0 -20
- package/dist/common/display/page-v2.mjs.map +0 -1
- package/dist/common/display/page.js +0 -155
- package/dist/common/display/page.js.map +0 -1
- package/dist/common/display/page.mjs +0 -138
- package/dist/common/display/page.mjs.map +0 -1
- package/dist/common/display/score-meter.js +0 -161
- package/dist/common/display/score-meter.js.map +0 -1
- package/dist/common/display/score-meter.mjs +0 -140
- package/dist/common/display/score-meter.mjs.map +0 -1
- package/dist/common/display/sidebar/app-sidebar.js +0 -114
- package/dist/common/display/sidebar/app-sidebar.js.map +0 -1
- package/dist/common/display/sidebar/app-sidebar.mjs +0 -92
- package/dist/common/display/sidebar/app-sidebar.mjs.map +0 -1
- package/dist/common/display/sidebar/index.js +0 -89
- package/dist/common/display/sidebar/index.js.map +0 -1
- package/dist/common/display/sidebar/index.mjs +0 -81
- package/dist/common/display/sidebar/index.mjs.map +0 -1
- package/dist/common/display/sidebar/nav-main.js +0 -406
- package/dist/common/display/sidebar/nav-main.js.map +0 -1
- package/dist/common/display/sidebar/nav-main.mjs +0 -400
- package/dist/common/display/sidebar/nav-main.mjs.map +0 -1
- package/dist/common/display/sidebar/sidebar-sheet.js +0 -140
- package/dist/common/display/sidebar/sidebar-sheet.js.map +0 -1
- package/dist/common/display/sidebar/sidebar-sheet.mjs +0 -118
- package/dist/common/display/sidebar/sidebar-sheet.mjs.map +0 -1
- package/dist/common/display/sidebar/types.js +0 -4
- package/dist/common/display/sidebar/types.js.map +0 -1
- package/dist/common/display/sidebar/types.mjs +0 -3
- package/dist/common/display/sidebar/types.mjs.map +0 -1
- package/dist/common/display/status-state.js +0 -97
- package/dist/common/display/status-state.js.map +0 -1
- package/dist/common/display/status-state.mjs +0 -88
- package/dist/common/display/status-state.mjs.map +0 -1
- package/dist/common/forms/auto-form.js +0 -101
- package/dist/common/forms/auto-form.js.map +0 -1
- package/dist/common/forms/auto-form.mjs +0 -78
- package/dist/common/forms/auto-form.mjs.map +0 -1
- package/dist/common/forms/form-field.js +0 -58
- package/dist/common/forms/form-field.js.map +0 -1
- package/dist/common/forms/form-field.mjs +0 -56
- package/dist/common/forms/form-field.mjs.map +0 -1
- package/dist/common/forms/form-input-field.js +0 -64
- package/dist/common/forms/form-input-field.js.map +0 -1
- package/dist/common/forms/form-input-field.mjs +0 -62
- package/dist/common/forms/form-input-field.mjs.map +0 -1
- package/dist/common/forms/index.js +0 -22
- package/dist/common/forms/index.js.map +0 -1
- package/dist/common/forms/index.mjs +0 -5
- package/dist/common/forms/index.mjs.map +0 -1
- package/dist/common/forms/switch-field.js +0 -106
- package/dist/common/forms/switch-field.js.map +0 -1
- package/dist/common/forms/switch-field.mjs +0 -104
- package/dist/common/forms/switch-field.mjs.map +0 -1
- package/dist/common/interactive/alert-dialog-wrapper.js +0 -141
- package/dist/common/interactive/alert-dialog-wrapper.js.map +0 -1
- package/dist/common/interactive/alert-dialog-wrapper.mjs +0 -119
- package/dist/common/interactive/alert-dialog-wrapper.mjs.map +0 -1
- package/dist/common/interactive/autocomplete.js +0 -178
- package/dist/common/interactive/autocomplete.js.map +0 -1
- package/dist/common/interactive/autocomplete.mjs +0 -157
- package/dist/common/interactive/autocomplete.mjs.map +0 -1
- package/dist/common/interactive/copy-tooltip.js +0 -152
- package/dist/common/interactive/copy-tooltip.js.map +0 -1
- package/dist/common/interactive/copy-tooltip.mjs +0 -143
- package/dist/common/interactive/copy-tooltip.mjs.map +0 -1
- package/dist/common/interactive/date-field.js +0 -303
- package/dist/common/interactive/date-field.js.map +0 -1
- package/dist/common/interactive/date-field.mjs +0 -281
- package/dist/common/interactive/date-field.mjs.map +0 -1
- package/dist/common/interactive/date-input/date-input.js +0 -68
- package/dist/common/interactive/date-input/date-input.js.map +0 -1
- package/dist/common/interactive/date-input/date-input.mjs +0 -62
- package/dist/common/interactive/date-input/date-input.mjs.map +0 -1
- package/dist/common/interactive/date-input/index.js +0 -17
- package/dist/common/interactive/date-input/index.js.map +0 -1
- package/dist/common/interactive/date-input/index.mjs +0 -4
- package/dist/common/interactive/date-input/index.mjs.map +0 -1
- package/dist/common/interactive/date-input/types.js +0 -4
- package/dist/common/interactive/date-input/types.js.map +0 -1
- package/dist/common/interactive/date-input/types.mjs +0 -3
- package/dist/common/interactive/date-input/types.mjs.map +0 -1
- package/dist/common/interactive/date-input/use-typed-date.js +0 -478
- package/dist/common/interactive/date-input/use-typed-date.js.map +0 -1
- package/dist/common/interactive/date-input/use-typed-date.mjs +0 -476
- package/dist/common/interactive/date-input/use-typed-date.mjs.map +0 -1
- package/dist/common/interactive/date-input/utils.js +0 -34
- package/dist/common/interactive/date-input/utils.js.map +0 -1
- package/dist/common/interactive/date-input/utils.mjs +0 -29
- package/dist/common/interactive/date-input/utils.mjs.map +0 -1
- package/dist/common/interactive/date-picker.js +0 -616
- package/dist/common/interactive/date-picker.js.map +0 -1
- package/dist/common/interactive/date-picker.mjs +0 -594
- package/dist/common/interactive/date-picker.mjs.map +0 -1
- package/dist/common/interactive/date-range-input/date-range-input.js +0 -82
- package/dist/common/interactive/date-range-input/date-range-input.js.map +0 -1
- package/dist/common/interactive/date-range-input/date-range-input.mjs +0 -76
- package/dist/common/interactive/date-range-input/date-range-input.mjs.map +0 -1
- package/dist/common/interactive/date-range-input/index.js +0 -12
- package/dist/common/interactive/date-range-input/index.js.map +0 -1
- package/dist/common/interactive/date-range-input/index.mjs +0 -3
- package/dist/common/interactive/date-range-input/index.mjs.map +0 -1
- package/dist/common/interactive/date-range-input/types.js +0 -4
- package/dist/common/interactive/date-range-input/types.js.map +0 -1
- package/dist/common/interactive/date-range-input/types.mjs +0 -3
- package/dist/common/interactive/date-range-input/types.mjs.map +0 -1
- package/dist/common/interactive/date-range-input/use-typed-date-range.js +0 -602
- package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +0 -1
- package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +0 -600
- package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +0 -1
- package/dist/common/interactive/date-time-picker.js +0 -215
- package/dist/common/interactive/date-time-picker.js.map +0 -1
- package/dist/common/interactive/date-time-picker.mjs +0 -213
- package/dist/common/interactive/date-time-picker.mjs.map +0 -1
- package/dist/common/interactive/dialog-wrapper.js +0 -124
- package/dist/common/interactive/dialog-wrapper.js.map +0 -1
- package/dist/common/interactive/dialog-wrapper.mjs +0 -102
- package/dist/common/interactive/dialog-wrapper.mjs.map +0 -1
- package/dist/common/interactive/filter.js +0 -287
- package/dist/common/interactive/filter.js.map +0 -1
- package/dist/common/interactive/filter.mjs +0 -280
- package/dist/common/interactive/filter.mjs.map +0 -1
- package/dist/common/interactive/index.js +0 -235
- package/dist/common/interactive/index.js.map +0 -1
- package/dist/common/interactive/index.mjs +0 -24
- package/dist/common/interactive/index.mjs.map +0 -1
- package/dist/common/interactive/list.js +0 -160
- package/dist/common/interactive/list.js.map +0 -1
- package/dist/common/interactive/list.mjs +0 -134
- package/dist/common/interactive/list.mjs.map +0 -1
- package/dist/common/interactive/otp-dialog/index.js +0 -35
- package/dist/common/interactive/otp-dialog/index.js.map +0 -1
- package/dist/common/interactive/otp-dialog/index.mjs +0 -6
- package/dist/common/interactive/otp-dialog/index.mjs.map +0 -1
- package/dist/common/interactive/otp-dialog/otp-dialog.js +0 -325
- package/dist/common/interactive/otp-dialog/otp-dialog.js.map +0 -1
- package/dist/common/interactive/otp-dialog/otp-dialog.mjs +0 -303
- package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +0 -1
- package/dist/common/interactive/otp-dialog/reducer.js +0 -40
- package/dist/common/interactive/otp-dialog/reducer.js.map +0 -1
- package/dist/common/interactive/otp-dialog/reducer.mjs +0 -37
- package/dist/common/interactive/otp-dialog/reducer.mjs.map +0 -1
- package/dist/common/interactive/otp-dialog/types.js +0 -15
- package/dist/common/interactive/otp-dialog/types.js.map +0 -1
- package/dist/common/interactive/otp-dialog/types.mjs +0 -13
- package/dist/common/interactive/otp-dialog/types.mjs.map +0 -1
- package/dist/common/interactive/otp-dialog/utils.js +0 -24
- package/dist/common/interactive/otp-dialog/utils.js.map +0 -1
- package/dist/common/interactive/otp-dialog/utils.mjs +0 -21
- package/dist/common/interactive/otp-dialog/utils.mjs.map +0 -1
- package/dist/common/interactive/pagination/PaginationSkeleton.js +0 -51
- package/dist/common/interactive/pagination/PaginationSkeleton.js.map +0 -1
- package/dist/common/interactive/pagination/PaginationSkeleton.mjs +0 -49
- package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +0 -1
- package/dist/common/interactive/pagination/index.js +0 -235
- package/dist/common/interactive/pagination/index.js.map +0 -1
- package/dist/common/interactive/pagination/index.mjs +0 -223
- package/dist/common/interactive/pagination/index.mjs.map +0 -1
- package/dist/common/interactive/pagination/usePagination.js +0 -28
- package/dist/common/interactive/pagination/usePagination.js.map +0 -1
- package/dist/common/interactive/pagination/usePagination.mjs +0 -25
- package/dist/common/interactive/pagination/usePagination.mjs.map +0 -1
- package/dist/common/interactive/popover-wrapper.js +0 -138
- package/dist/common/interactive/popover-wrapper.js.map +0 -1
- package/dist/common/interactive/popover-wrapper.mjs +0 -116
- package/dist/common/interactive/popover-wrapper.mjs.map +0 -1
- package/dist/common/interactive/pressable.js +0 -84
- package/dist/common/interactive/pressable.js.map +0 -1
- package/dist/common/interactive/pressable.mjs +0 -62
- package/dist/common/interactive/pressable.mjs.map +0 -1
- package/dist/common/interactive/select/context.js +0 -38
- package/dist/common/interactive/select/context.js.map +0 -1
- package/dist/common/interactive/select/context.mjs +0 -14
- package/dist/common/interactive/select/context.mjs.map +0 -1
- package/dist/common/interactive/select/index.js +0 -123
- package/dist/common/interactive/select/index.js.map +0 -1
- package/dist/common/interactive/select/index.mjs +0 -18
- package/dist/common/interactive/select/index.mjs.map +0 -1
- package/dist/common/interactive/select/select-body.js +0 -89
- package/dist/common/interactive/select/select-body.js.map +0 -1
- package/dist/common/interactive/select/select-body.mjs +0 -67
- package/dist/common/interactive/select/select-body.mjs.map +0 -1
- package/dist/common/interactive/select/select-close.js +0 -38
- package/dist/common/interactive/select/select-close.js.map +0 -1
- package/dist/common/interactive/select/select-close.mjs +0 -16
- package/dist/common/interactive/select/select-close.mjs.map +0 -1
- package/dist/common/interactive/select/select-content-auto-layout.js +0 -221
- package/dist/common/interactive/select/select-content-auto-layout.js.map +0 -1
- package/dist/common/interactive/select/select-content-auto-layout.mjs +0 -199
- package/dist/common/interactive/select/select-content-auto-layout.mjs.map +0 -1
- package/dist/common/interactive/select/select-content-group-auto-layout.js +0 -411
- package/dist/common/interactive/select/select-content-group-auto-layout.js.map +0 -1
- package/dist/common/interactive/select/select-content-group-auto-layout.mjs +0 -389
- package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +0 -1
- package/dist/common/interactive/select/select-content.js +0 -187
- package/dist/common/interactive/select/select-content.js.map +0 -1
- package/dist/common/interactive/select/select-content.mjs +0 -165
- package/dist/common/interactive/select/select-content.mjs.map +0 -1
- package/dist/common/interactive/select/select-footer.js +0 -82
- package/dist/common/interactive/select/select-footer.js.map +0 -1
- package/dist/common/interactive/select/select-footer.mjs +0 -60
- package/dist/common/interactive/select/select-footer.mjs.map +0 -1
- package/dist/common/interactive/select/select-item.js +0 -214
- package/dist/common/interactive/select/select-item.js.map +0 -1
- package/dist/common/interactive/select/select-item.mjs +0 -191
- package/dist/common/interactive/select/select-item.mjs.map +0 -1
- package/dist/common/interactive/select/select-layout.js +0 -66
- package/dist/common/interactive/select/select-layout.js.map +0 -1
- package/dist/common/interactive/select/select-layout.mjs +0 -41
- package/dist/common/interactive/select/select-layout.mjs.map +0 -1
- package/dist/common/interactive/select/select-search.js +0 -55
- package/dist/common/interactive/select/select-search.js.map +0 -1
- package/dist/common/interactive/select/select-search.mjs +0 -33
- package/dist/common/interactive/select/select-search.mjs.map +0 -1
- package/dist/common/interactive/select/select-states.js +0 -57
- package/dist/common/interactive/select/select-states.js.map +0 -1
- package/dist/common/interactive/select/select-states.mjs +0 -34
- package/dist/common/interactive/select/select-states.mjs.map +0 -1
- package/dist/common/interactive/select/select-trigger.js +0 -310
- package/dist/common/interactive/select/select-trigger.js.map +0 -1
- package/dist/common/interactive/select/select-trigger.mjs +0 -286
- package/dist/common/interactive/select/select-trigger.mjs.map +0 -1
- package/dist/common/interactive/select/select-value.js +0 -52
- package/dist/common/interactive/select/select-value.js.map +0 -1
- package/dist/common/interactive/select/select-value.mjs +0 -30
- package/dist/common/interactive/select/select-value.mjs.map +0 -1
- package/dist/common/interactive/select/select.js +0 -184
- package/dist/common/interactive/select/select.js.map +0 -1
- package/dist/common/interactive/select/select.mjs +0 -162
- package/dist/common/interactive/select/select.mjs.map +0 -1
- package/dist/common/interactive/select/types.js +0 -4
- package/dist/common/interactive/select/types.js.map +0 -1
- package/dist/common/interactive/select/types.mjs +0 -3
- package/dist/common/interactive/select/types.mjs.map +0 -1
- package/dist/common/interactive/select/utils.js +0 -31
- package/dist/common/interactive/select/utils.js.map +0 -1
- package/dist/common/interactive/select/utils.mjs +0 -28
- package/dist/common/interactive/select/utils.mjs.map +0 -1
- package/dist/common/interactive/select/variants.js +0 -27
- package/dist/common/interactive/select/variants.js.map +0 -1
- package/dist/common/interactive/select/variants.mjs +0 -25
- package/dist/common/interactive/select/variants.mjs.map +0 -1
- package/dist/common/interactive/select-chip.js +0 -76
- package/dist/common/interactive/select-chip.js.map +0 -1
- package/dist/common/interactive/select-chip.mjs +0 -74
- package/dist/common/interactive/select-chip.mjs.map +0 -1
- package/dist/common/interactive/select-level.js +0 -236
- package/dist/common/interactive/select-level.js.map +0 -1
- package/dist/common/interactive/select-level.mjs +0 -230
- package/dist/common/interactive/select-level.mjs.map +0 -1
- package/dist/common/interactive/select-range.js +0 -211
- package/dist/common/interactive/select-range.js.map +0 -1
- package/dist/common/interactive/select-range.mjs +0 -209
- package/dist/common/interactive/select-range.mjs.map +0 -1
- package/dist/common/interactive/select-with-api.js +0 -767
- package/dist/common/interactive/select-with-api.js.map +0 -1
- package/dist/common/interactive/select-with-api.mjs +0 -758
- package/dist/common/interactive/select-with-api.mjs.map +0 -1
- package/dist/common/interactive/select.js +0 -15
- package/dist/common/interactive/select.js.map +0 -1
- package/dist/common/interactive/select.mjs +0 -4
- package/dist/common/interactive/select.mjs.map +0 -1
- package/dist/common/interactive/sheet-wrapper.js +0 -105
- package/dist/common/interactive/sheet-wrapper.js.map +0 -1
- package/dist/common/interactive/sheet-wrapper.mjs +0 -83
- package/dist/common/interactive/sheet-wrapper.mjs.map +0 -1
- package/dist/common/interactive/table/enhanced-table.js +0 -390
- package/dist/common/interactive/table/enhanced-table.js.map +0 -1
- package/dist/common/interactive/table/enhanced-table.mjs +0 -388
- package/dist/common/interactive/table/enhanced-table.mjs.map +0 -1
- package/dist/common/interactive/table/index.js +0 -83
- package/dist/common/interactive/table/index.js.map +0 -1
- package/dist/common/interactive/table/index.mjs +0 -68
- package/dist/common/interactive/table/index.mjs.map +0 -1
- package/dist/common/interactive/table/table-pagination.js +0 -12
- package/dist/common/interactive/table/table-pagination.js.map +0 -1
- package/dist/common/interactive/table/table-pagination.mjs +0 -10
- package/dist/common/interactive/table/table-pagination.mjs.map +0 -1
- package/dist/common/interactive/table/types.js +0 -4
- package/dist/common/interactive/table/types.js.map +0 -1
- package/dist/common/interactive/table/types.mjs +0 -3
- package/dist/common/interactive/table/types.mjs.map +0 -1
- package/dist/common/interactive/time-picker.js +0 -313
- package/dist/common/interactive/time-picker.js.map +0 -1
- package/dist/common/interactive/time-picker.mjs +0 -307
- package/dist/common/interactive/time-picker.mjs.map +0 -1
- package/dist/common/interactive/types.js +0 -4
- package/dist/common/interactive/types.js.map +0 -1
- package/dist/common/interactive/types.mjs +0 -3
- package/dist/common/interactive/types.mjs.map +0 -1
- package/dist/common/pages/page-404.js +0 -16
- package/dist/common/pages/page-404.js.map +0 -1
- package/dist/common/pages/page-404.mjs +0 -11
- package/dist/common/pages/page-404.mjs.map +0 -1
- package/dist/common/pages/page-500.js +0 -30
- package/dist/common/pages/page-500.js.map +0 -1
- package/dist/common/pages/page-500.mjs +0 -25
- package/dist/common/pages/page-500.mjs.map +0 -1
- package/dist/components/accordion.js +0 -65
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/accordion.mjs +0 -39
- package/dist/components/accordion.mjs.map +0 -1
- package/dist/components/alert-dialog.js +0 -231
- package/dist/components/alert-dialog.js.map +0 -1
- package/dist/components/alert-dialog.mjs +0 -197
- package/dist/components/alert-dialog.mjs.map +0 -1
- package/dist/components/alert.js +0 -97
- package/dist/components/alert.js.map +0 -1
- package/dist/components/alert.mjs +0 -72
- package/dist/components/alert.mjs.map +0 -1
- package/dist/components/aspect-ratio.js +0 -29
- package/dist/components/aspect-ratio.js.map +0 -1
- package/dist/components/aspect-ratio.mjs +0 -7
- package/dist/components/aspect-ratio.mjs.map +0 -1
- package/dist/components/avatar.js +0 -64
- package/dist/components/avatar.js.map +0 -1
- package/dist/components/avatar.mjs +0 -39
- package/dist/components/avatar.mjs.map +0 -1
- package/dist/components/badge.js +0 -72
- package/dist/components/badge.js.map +0 -1
- package/dist/components/badge.mjs +0 -69
- package/dist/components/badge.mjs.map +0 -1
- package/dist/components/breadcrumb.js +0 -109
- package/dist/components/breadcrumb.js.map +0 -1
- package/dist/components/breadcrumb.mjs +0 -81
- package/dist/components/breadcrumb.mjs.map +0 -1
- package/dist/components/button.js +0 -250
- package/dist/components/button.js.map +0 -1
- package/dist/components/button.mjs +0 -226
- package/dist/components/button.mjs.map +0 -1
- package/dist/components/calendar.js +0 -681
- package/dist/components/calendar.js.map +0 -1
- package/dist/components/calendar.mjs +0 -659
- package/dist/components/calendar.mjs.map +0 -1
- package/dist/components/card.js +0 -98
- package/dist/components/card.js.map +0 -1
- package/dist/components/card.mjs +0 -71
- package/dist/components/card.mjs.map +0 -1
- package/dist/components/carousel.js +0 -237
- package/dist/components/carousel.js.map +0 -1
- package/dist/components/carousel.mjs +0 -208
- package/dist/components/carousel.mjs.map +0 -1
- package/dist/components/chart.js +0 -252
- package/dist/components/chart.js.map +0 -1
- package/dist/components/chart.mjs +0 -224
- package/dist/components/chart.mjs.map +0 -1
- package/dist/components/checkbox.js +0 -97
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/checkbox.mjs +0 -74
- package/dist/components/checkbox.mjs.map +0 -1
- package/dist/components/chip.js +0 -88
- package/dist/components/chip.js.map +0 -1
- package/dist/components/chip.mjs +0 -82
- package/dist/components/chip.mjs.map +0 -1
- package/dist/components/collapsible.js +0 -33
- package/dist/components/collapsible.js.map +0 -1
- package/dist/components/collapsible.mjs +0 -9
- package/dist/components/collapsible.mjs.map +0 -1
- package/dist/components/command.js +0 -125
- package/dist/components/command.js.map +0 -1
- package/dist/components/command.mjs +0 -95
- package/dist/components/command.mjs.map +0 -1
- package/dist/components/context-menu.js +0 -168
- package/dist/components/context-menu.js.map +0 -1
- package/dist/components/context-menu.mjs +0 -131
- package/dist/components/context-menu.mjs.map +0 -1
- package/dist/components/dialog.js +0 -192
- package/dist/components/dialog.js.map +0 -1
- package/dist/components/dialog.mjs +0 -159
- package/dist/components/dialog.mjs.map +0 -1
- package/dist/components/drawer.js +0 -98
- package/dist/components/drawer.js.map +0 -1
- package/dist/components/drawer.mjs +0 -67
- package/dist/components/drawer.mjs.map +0 -1
- package/dist/components/dropdown-menu.js +0 -163
- package/dist/components/dropdown-menu.js.map +0 -1
- package/dist/components/dropdown-menu.mjs +0 -126
- package/dist/components/dropdown-menu.mjs.map +0 -1
- package/dist/components/form.js +0 -123
- package/dist/components/form.js.map +0 -1
- package/dist/components/form.mjs +0 -94
- package/dist/components/form.mjs.map +0 -1
- package/dist/components/hover-card.js +0 -50
- package/dist/components/hover-card.js.map +0 -1
- package/dist/components/hover-card.mjs +0 -25
- package/dist/components/hover-card.mjs.map +0 -1
- package/dist/components/input-otp.js +0 -84
- package/dist/components/input-otp.js.map +0 -1
- package/dist/components/input-otp.mjs +0 -59
- package/dist/components/input-otp.mjs.map +0 -1
- package/dist/components/input.js +0 -858
- package/dist/components/input.js.map +0 -1
- package/dist/components/input.mjs +0 -831
- package/dist/components/input.mjs.map +0 -1
- package/dist/components/label.js +0 -38
- package/dist/components/label.js.map +0 -1
- package/dist/components/label.mjs +0 -15
- package/dist/components/label.mjs.map +0 -1
- package/dist/components/lottie.js +0 -59
- package/dist/components/lottie.js.map +0 -1
- package/dist/components/lottie.mjs +0 -49
- package/dist/components/lottie.mjs.map +0 -1
- package/dist/components/menubar.js +0 -195
- package/dist/components/menubar.js.map +0 -1
- package/dist/components/menubar.mjs +0 -157
- package/dist/components/menubar.mjs.map +0 -1
- package/dist/components/navigation-menu.js +0 -126
- package/dist/components/navigation-menu.js.map +0 -1
- package/dist/components/navigation-menu.mjs +0 -95
- package/dist/components/navigation-menu.mjs.map +0 -1
- package/dist/components/pagination.js +0 -112
- package/dist/components/pagination.js.map +0 -1
- package/dist/components/pagination.mjs +0 -84
- package/dist/components/pagination.mjs.map +0 -1
- package/dist/components/popover.js +0 -63
- package/dist/components/popover.js.map +0 -1
- package/dist/components/popover.mjs +0 -38
- package/dist/components/popover.mjs.map +0 -1
- package/dist/components/progress.js +0 -50
- package/dist/components/progress.js.map +0 -1
- package/dist/components/progress.mjs +0 -27
- package/dist/components/progress.mjs.map +0 -1
- package/dist/components/radio-group.js +0 -91
- package/dist/components/radio-group.js.map +0 -1
- package/dist/components/radio-group.mjs +0 -67
- package/dist/components/radio-group.mjs.map +0 -1
- package/dist/components/resizable.js +0 -59
- package/dist/components/resizable.js.map +0 -1
- package/dist/components/resizable.mjs +0 -35
- package/dist/components/resizable.mjs.map +0 -1
- package/dist/components/responsive-popover.js +0 -74
- package/dist/components/responsive-popover.js.map +0 -1
- package/dist/components/responsive-popover.mjs +0 -50
- package/dist/components/responsive-popover.mjs.map +0 -1
- package/dist/components/scroll-area.js +0 -63
- package/dist/components/scroll-area.js.map +0 -1
- package/dist/components/scroll-area.mjs +0 -39
- package/dist/components/scroll-area.mjs.map +0 -1
- package/dist/components/separator.js +0 -47
- package/dist/components/separator.js.map +0 -1
- package/dist/components/separator.mjs +0 -24
- package/dist/components/separator.mjs.map +0 -1
- package/dist/components/sheet.js +0 -239
- package/dist/components/sheet.js.map +0 -1
- package/dist/components/sheet.mjs +0 -206
- package/dist/components/sheet.mjs.map +0 -1
- package/dist/components/sidebar.js +0 -888
- package/dist/components/sidebar.js.map +0 -1
- package/dist/components/sidebar.mjs +0 -842
- package/dist/components/sidebar.mjs.map +0 -1
- package/dist/components/skeleton.js +0 -153
- package/dist/components/skeleton.js.map +0 -1
- package/dist/components/skeleton.mjs +0 -127
- package/dist/components/skeleton.mjs.map +0 -1
- package/dist/components/slider.js +0 -45
- package/dist/components/slider.js.map +0 -1
- package/dist/components/slider.mjs +0 -22
- package/dist/components/slider.mjs.map +0 -1
- package/dist/components/sonner.js +0 -76
- package/dist/components/sonner.js.map +0 -1
- package/dist/components/sonner.mjs +0 -71
- package/dist/components/sonner.mjs.map +0 -1
- package/dist/components/spinner.js +0 -59
- package/dist/components/spinner.js.map +0 -1
- package/dist/components/spinner.mjs +0 -36
- package/dist/components/spinner.mjs.map +0 -1
- package/dist/components/stepper.js +0 -726
- package/dist/components/stepper.js.map +0 -1
- package/dist/components/stepper.mjs +0 -702
- package/dist/components/stepper.mjs.map +0 -1
- package/dist/components/switch.js +0 -85
- package/dist/components/switch.js.map +0 -1
- package/dist/components/switch.mjs +0 -62
- package/dist/components/switch.mjs.map +0 -1
- package/dist/components/table.js +0 -91
- package/dist/components/table.js.map +0 -1
- package/dist/components/table.mjs +0 -62
- package/dist/components/table.mjs.map +0 -1
- package/dist/components/tabs.js +0 -287
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/tabs.mjs +0 -261
- package/dist/components/tabs.mjs.map +0 -1
- package/dist/components/textarea.js +0 -200
- package/dist/components/textarea.js.map +0 -1
- package/dist/components/textarea.mjs +0 -174
- package/dist/components/textarea.mjs.map +0 -1
- package/dist/components/toggle-group.js +0 -67
- package/dist/components/toggle-group.js.map +0 -1
- package/dist/components/toggle-group.mjs +0 -43
- package/dist/components/toggle-group.mjs.map +0 -1
- package/dist/components/toggle.js +0 -63
- package/dist/components/toggle.js.map +0 -1
- package/dist/components/toggle.mjs +0 -39
- package/dist/components/toggle.mjs.map +0 -1
- package/dist/components/tooltip.js +0 -172
- package/dist/components/tooltip.js.map +0 -1
- package/dist/components/tooltip.mjs +0 -145
- package/dist/components/tooltip.mjs.map +0 -1
- package/dist/hooks/index.js +0 -27
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/index.mjs +0 -6
- package/dist/hooks/index.mjs.map +0 -1
- package/dist/hooks/useCopyToClipboard.js +0 -59
- package/dist/hooks/useCopyToClipboard.js.map +0 -1
- package/dist/hooks/useCopyToClipboard.mjs +0 -57
- package/dist/hooks/useCopyToClipboard.mjs.map +0 -1
- package/dist/hooks/useDevice.js +0 -20
- package/dist/hooks/useDevice.js.map +0 -1
- package/dist/hooks/useDevice.mjs +0 -14
- package/dist/hooks/useDevice.mjs.map +0 -1
- package/dist/hooks/useDialogTracking.js +0 -113
- package/dist/hooks/useDialogTracking.js.map +0 -1
- package/dist/hooks/useDialogTracking.mjs +0 -91
- package/dist/hooks/useDialogTracking.mjs.map +0 -1
- package/dist/hooks/useIsMounted.js +0 -15
- package/dist/hooks/useIsMounted.js.map +0 -1
- package/dist/hooks/useIsMounted.mjs +0 -13
- package/dist/hooks/useIsMounted.mjs.map +0 -1
- package/dist/hooks/usePathname.js +0 -85
- package/dist/hooks/usePathname.js.map +0 -1
- package/dist/hooks/usePathname.mjs +0 -83
- package/dist/hooks/usePathname.mjs.map +0 -1
- package/dist/icons.js +0 -14
- package/dist/icons.js.map +0 -1
- package/dist/icons.mjs +0 -3
- package/dist/icons.mjs.map +0 -1
- package/dist/lib/formatCurrency.js +0 -187
- package/dist/lib/formatCurrency.js.map +0 -1
- package/dist/lib/formatCurrency.mjs +0 -185
- package/dist/lib/formatCurrency.mjs.map +0 -1
- package/dist/lib/helpers.js +0 -171
- package/dist/lib/helpers.js.map +0 -1
- package/dist/lib/helpers.mjs +0 -157
- package/dist/lib/helpers.mjs.map +0 -1
- package/dist/lib/index.js +0 -33
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/index.mjs +0 -6
- package/dist/lib/index.mjs.map +0 -1
- package/dist/lib/types.js +0 -11
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/types.mjs +0 -9
- package/dist/lib/types.mjs.map +0 -1
- package/dist/lib/utils.js +0 -24
- package/dist/lib/utils.js.map +0 -1
- package/dist/lib/utils.mjs +0 -19
- package/dist/lib/utils.mjs.map +0 -1
- package/dist/providers/DeviceSizeWatcher/index.js +0 -72
- package/dist/providers/DeviceSizeWatcher/index.js.map +0 -1
- package/dist/providers/DeviceSizeWatcher/index.mjs +0 -47
- package/dist/providers/DeviceSizeWatcher/index.mjs.map +0 -1
- package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +0 -22
- package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +0 -1
- package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +0 -20
- package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +0 -1
- package/dist/providers/UISystemProvider.js +0 -197
- package/dist/providers/UISystemProvider.js.map +0 -1
- package/dist/providers/UISystemProvider.mjs +0 -188
- package/dist/providers/UISystemProvider.mjs.map +0 -1
- package/dist/providers/index.js +0 -24
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/index.mjs +0 -3
- package/dist/providers/index.mjs.map +0 -1
- package/dist/theme.js +0 -333
- package/dist/theme.js.map +0 -1
- package/dist/theme.mjs +0 -327
- package/dist/theme.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/sidebar.tsx"],"names":["open","e"],"mappings":"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","file":"sidebar.mjs","sourcesContent":["'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { TooltipProvider } from '@/components/tooltip';\nimport { useDevice } from '@/hooks/useDevice';\nimport { ArrowRightIcon } from '@/icons';\nimport { cn } from '@/lib/utils';\n\n// Sidebar configuration\nexport interface SidebarConfig {\n storageKey?: string; // Optional: if not provided, state won't be persisted to localStorage\n width: string;\n widthMobile: string;\n widthIcon: string;\n keyboardShortcut: string;\n paddingX: string; // Horizontal padding for sidebar content\n maxWidth?: string; // Maximum width when resizing (in rem), e.g., '19rem', default is '30rem'\n collapsedSize?: {\n width: string; // Width of menu items when collapsed, default is '2.5rem' (40px = w-10)\n height: string; // Height of menu items when collapsed, default is '2.5rem' (40px = h-10)\n };\n enableHoverExpand?: boolean; // Enable hover to expand collapsed sidebar, default is true\n}\n\n// Default sidebar configuration\nexport const defaultSidebarConfig: SidebarConfig = {\n storageKey: 'sidebar:state',\n width: '18rem',\n widthMobile: '18rem',\n widthIcon: '5rem',\n keyboardShortcut: 'b',\n paddingX: '1rem', // Default 1rem = 16px = px-4\n maxWidth: '30rem', // Default max width 30rem = 480px\n collapsedSize: {\n width: '3rem', // Default 2.5rem = 40px = w-10\n height: '2.5rem', // Default 2.5rem = 40px = h-10\n },\n enableHoverExpand: true, // Default enable hover to expand\n};\n\n// Utility functions for localStorage\nconst getSidebarState = (storageKey?: string): boolean => {\n if (!storageKey || typeof window === 'undefined') return false;\n try {\n const saved = localStorage.getItem(storageKey);\n return saved ? JSON.parse(saved) : false;\n } catch {\n return false;\n }\n};\n\nconst setSidebarState = (storageKey: string | undefined, open: boolean): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(storageKey, JSON.stringify(open));\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\nconst getSidebarWidth = (storageKey?: string): number | null => {\n if (!storageKey || typeof window === 'undefined') return null;\n try {\n const saved = localStorage.getItem(`${storageKey}:width`);\n return saved ? parseFloat(saved) : null;\n } catch {\n return null;\n }\n};\n\nconst setSidebarWidth = (storageKey: string | undefined, width: number): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(`${storageKey}:width`, width.toString());\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (_open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (_open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n config: SidebarConfig;\n customWidth: number | null;\n setCustomWidth: (_width: number | null) => void;\n isHovered: boolean;\n setIsHovered: (_hovered: boolean) => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (_open: boolean) => void;\n sidebarConfig?: Partial<SidebarConfig>;\n }\n>(\n (\n {\n defaultOpen = false,\n open: openProp,\n onOpenChange: setOpenProp,\n sidebarConfig: customSidebarConfig,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const { isDesktop } = useDevice();\n\n // Merge custom sidebar config with default\n const sidebarConfig = React.useMemo(\n () => ({\n ...defaultSidebarConfig,\n ...customSidebarConfig,\n }),\n [customSidebarConfig],\n );\n\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // Track if component has mounted to prevent initial animation\n const [hasInitialized, setHasInitialized] = React.useState(false);\n\n // Track hover state for collapsed sidebar expansion\n const [isHovered, setIsHovered] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n // Initialize with saved state from localStorage\n const [_open, _setOpen] = React.useState(() => {\n if (openProp !== undefined) return openProp;\n if (defaultOpen !== undefined) return defaultOpen;\n return getSidebarState(sidebarConfig.storageKey);\n });\n\n // Custom width state for resizable sidebar\n const [customWidth, setCustomWidthState] = React.useState<number | null>(() => {\n return getSidebarWidth(sidebarConfig.storageKey);\n });\n\n const setCustomWidth = React.useCallback(\n (width: number | null) => {\n setCustomWidthState(width);\n if (width !== null) {\n setSidebarWidth(sidebarConfig.storageKey, width);\n }\n },\n [sidebarConfig.storageKey],\n );\n\n // Use a ref to track if we've already synced with localStorage on mount\n const hasSyncedRef = React.useRef(false);\n\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (_value: boolean | ((_value: boolean) => boolean)) => {\n const openState = typeof _value === 'function' ? _value(open) : _value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // Save to localStorage instead of cookie\n setSidebarState(sidebarConfig.storageKey, openState);\n },\n [setOpenProp, open, sidebarConfig.storageKey],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return !isDesktop ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isDesktop, setOpen, setOpenMobile]);\n\n // Sync with localStorage only on mount and when localStorage changes from other tabs\n React.useEffect(() => {\n if (openProp !== undefined) return; // Don't sync if controlled from outside\n if (!sidebarConfig.storageKey) return; // Don't sync if no storageKey\n\n // Only sync once on mount\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true;\n const savedState = getSidebarState(sidebarConfig.storageKey);\n if (savedState !== _open) {\n _setOpen(savedState);\n }\n }\n\n // Listen for localStorage changes from other tabs\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === sidebarConfig.storageKey && e.newValue !== null) {\n try {\n const newState = JSON.parse(e.newValue);\n _setOpen(newState);\n } catch {\n // Ignore invalid JSON\n }\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n return () => window.removeEventListener('storage', handleStorageChange);\n }, [openProp, sidebarConfig.storageKey]); // Remove _open from dependencies to prevent unnecessary re-runs\n\n // Enable transitions after initial mount to prevent animation on load\n React.useEffect(() => {\n // Small delay to ensure initial render is complete\n const timer = setTimeout(() => {\n setHasInitialized(true);\n }, 100);\n\n return () => clearTimeout(timer);\n }, []);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === sidebarConfig.keyboardShortcut && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar, sidebarConfig.keyboardShortcut]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile: !isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n config: sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n setIsHovered,\n }),\n [\n state,\n open,\n setOpen,\n isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n ],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': customWidth ? `${customWidth}px` : sidebarConfig.width,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full',\n !hasInitialized && 'sidebar-no-transition',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n },\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n mobileSheetClassName?: string;\n }\n>(\n (\n {\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n mobileSheetClassName,\n children,\n ...props\n },\n ref,\n ) => {\n const {\n isMobile,\n state,\n openMobile,\n setOpenMobile,\n config: sidebarConfig,\n isHovered,\n } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'bg-sidebar text-ink-500s flex h-full w-[--sidebar-width] flex-col',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} modal={false} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className={cn(\n 'text-ink-500s p-0',\n // Override sheet default width constraints\n '!w-full !max-w-none',\n mobileSheetClassName,\n )}\n style={\n {\n '--sidebar-width': sidebarConfig.widthMobile,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n } as React.CSSProperties\n }\n side={side}\n showCloseButton={false}\n showOverlay={false}\n disableOutsideClick={true}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"text-ink-500s group peer hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-hovered={isHovered}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-500 ease-out',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]',\n )}\n />\n <div\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-all duration-500 ease-out md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-4 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : 'group-data-[side=left]:border-ink-200s group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n // Add shadow when hovered and collapsed\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:w-[--sidebar-width] group-data-[collapsible=icon]:group-data-[hovered=true]:shadow-lg',\n // Make it overlay on top when hovered\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:z-50',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n },\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, open, state, isHovered } = useSidebar();\n\n // Show as \"expanded\" icon when open OR when collapsed but hovered\n const showExpandedIcon = open || (state === 'collapsed' && isHovered);\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"icon\"\n size=\"icon\"\n className={cn('h-8 w-8', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <ArrowRightIcon\n className={cn('h-6 w-6 transition-transform duration-200', {\n 'rotate-180': showExpandedIcon,\n })}\n />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar, state, config, customWidth, setCustomWidth } = useSidebar();\n const [isResizing, setIsResizing] = React.useState(false);\n\n const handleMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n // Only allow resize when sidebar is expanded\n if (state === 'collapsed') {\n toggleSidebar();\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n setIsResizing(true);\n\n const startX = e.clientX;\n const startWidth = customWidth || parseFloat(config.width) * 16; // Convert rem to px (assuming 1rem = 16px)\n\n // Parse min width from config.width (default sidebar width, not icon width)\n const minWidth = parseFloat(config.width) * 16;\n // Max width based on config (default 30rem if not specified)\n const maxWidthValue = config.maxWidth ?? '30rem';\n const maxWidth = maxWidthValue.endsWith('rem')\n ? parseFloat(maxWidthValue) * 16\n : parseFloat(maxWidthValue);\n\n const handleMouseMove = (e: MouseEvent) => {\n const delta = e.clientX - startX;\n const newWidth = Math.max(minWidth, Math.min(maxWidth, startWidth + delta));\n setCustomWidth(newWidth);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [state, toggleSidebar, customWidth, config, setCustomWidth],\n );\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onMouseDown={handleMouseDown}\n title={state === 'collapsed' ? 'Expand Sidebar' : 'Drag to resize'}\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-[1px] after:bg-gray-300 after:transition-all after:duration-200',\n 'hover:after:w-[3px] hover:after:bg-blue-500',\n '[[data-side=left]_&]:cursor-col-resize [[data-side=right]_&]:cursor-col-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n isResizing && 'after:!w-[3px] after:!bg-blue-500 ',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'bg-background relative flex min-h-svh w-full flex-1 flex-col',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn('bg-background w-full shadow-none focus-visible:h-8 ', className)}\n {...props}\n />\n );\n});\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 pt-3',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2', '[padding:var(--sidebar-padding-x)]', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n );\n});\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-auto',\n // Hide scrollbar when collapsed but keep scrolling functionality\n 'group-data-[collapsible=icon]:scrollbar-hide',\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'text-ink-500s flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-none transition-[margin,opacity] duration-300 [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:mt-0 group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform [&>svg]:size-6 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-base', className)}\n {...props}\n />\n ),\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-2', className)}\n {...props}\n />\n ),\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n ),\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md px-3 py-2 text-left text-base outline-none transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!h-[--sidebar-collapsed-height] group-data-[collapsible=icon]:!w-[--sidebar-collapsed-width] group-data-[collapsible=icon]:!justify-start group-data-[collapsible=icon]:!items-center group-data-[collapsible=icon]:group-data-[hovered=true]:!w-full group-data-[collapsible=icon]:group-data-[hovered=true]:!h-10 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!justify-start [&>span]:whitespace-nowrap [&>span]:transition-[opacity,transform] [&>span]:duration-500 [&>span]:ease-out [&>span]:group-data-[collapsible=icon]:opacity-0 [&>span]:group-data-[collapsible=icon]:hidden [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100 [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:inline [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-500',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-10 text-base',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-base group-data-[collapsible=icon]:!p-0 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n className,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-all duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none flex h-5 min-w-5 select-none items-center justify-center rounded-full bg-red-500 px-1 text-xs font-medium tabular-nums text-white transition-all duration-300',\n 'absolute right-1',\n 'peer-hover/menu-button:bg-red-500 peer-data-[active=true]/menu-button:bg-red-500',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!flex',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!relative',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!right-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!top-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:ml-auto',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border ml-5 flex min-w-0 translate-x-px flex-col gap-1 pl-3 pt-2 transition-all duration-300',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ ...props }, ref) => <li ref={ref} {...props} />,\n);\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'sm', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-10 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-3 py-2 outline-none transition-all duration-300 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>span:last-child]:transition-opacity [&>span:last-child]:duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"]}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var utils = require('@/lib/utils');
|
|
6
|
-
|
|
7
|
-
function _interopNamespace(e) {
|
|
8
|
-
if (e && e.__esModule) return e;
|
|
9
|
-
var n = Object.create(null);
|
|
10
|
-
if (e) {
|
|
11
|
-
Object.keys(e).forEach(function (k) {
|
|
12
|
-
if (k !== 'default') {
|
|
13
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () { return e[k]; }
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
n.default = e;
|
|
22
|
-
return Object.freeze(n);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
|
-
|
|
27
|
-
const skeletonVariants = {
|
|
28
|
-
pulse: "animate-pulse",
|
|
29
|
-
wave: "animate-wave",
|
|
30
|
-
none: ""
|
|
31
|
-
};
|
|
32
|
-
const shapeVariants = {
|
|
33
|
-
rectangle: "rounded-md",
|
|
34
|
-
circle: "rounded-full",
|
|
35
|
-
text: "rounded-sm"
|
|
36
|
-
};
|
|
37
|
-
const sizeVariants = {
|
|
38
|
-
sm: "h-4",
|
|
39
|
-
md: "h-6",
|
|
40
|
-
lg: "h-8",
|
|
41
|
-
xl: "h-12"
|
|
42
|
-
};
|
|
43
|
-
const Skeleton = React__namespace.forwardRef(
|
|
44
|
-
({
|
|
45
|
-
className,
|
|
46
|
-
loading = true,
|
|
47
|
-
children,
|
|
48
|
-
skeleton,
|
|
49
|
-
variant = "pulse",
|
|
50
|
-
shape = "rectangle",
|
|
51
|
-
size,
|
|
52
|
-
...props
|
|
53
|
-
}, ref) => {
|
|
54
|
-
if (loading === false && children !== void 0 && children !== null) {
|
|
55
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
56
|
-
}
|
|
57
|
-
if (skeleton) {
|
|
58
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: skeleton });
|
|
59
|
-
}
|
|
60
|
-
if (loading && children) {
|
|
61
|
-
const childElement = React__namespace.isValidElement(children) ? children : null;
|
|
62
|
-
const childClasses = childElement?.props?.className || "";
|
|
63
|
-
const marginClasses = childClasses.split(" ").filter(
|
|
64
|
-
(cls) => cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-")
|
|
65
|
-
).join(" ");
|
|
66
|
-
const childrenWithoutMargin = React__namespace.isValidElement(children) ? React__namespace.cloneElement(children, {
|
|
67
|
-
...children.props,
|
|
68
|
-
className: childClasses.split(" ").filter(
|
|
69
|
-
(cls) => !(cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-"))
|
|
70
|
-
).join(" ")
|
|
71
|
-
}) : children;
|
|
72
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils.cn("relative", marginClasses), ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
73
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none opacity-0", children: childrenWithoutMargin }),
|
|
74
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
75
|
-
"div",
|
|
76
|
-
{
|
|
77
|
-
className: utils.cn(
|
|
78
|
-
"bg-muted absolute inset-0",
|
|
79
|
-
skeletonVariants[variant],
|
|
80
|
-
shapeVariants[shape],
|
|
81
|
-
className
|
|
82
|
-
)
|
|
83
|
-
}
|
|
84
|
-
)
|
|
85
|
-
] }) });
|
|
86
|
-
}
|
|
87
|
-
const skeletonClasses = utils.cn(
|
|
88
|
-
"bg-muted",
|
|
89
|
-
skeletonVariants[variant],
|
|
90
|
-
shapeVariants[shape],
|
|
91
|
-
size && sizeVariants[size],
|
|
92
|
-
// Default dimensions if no size prop and no explicit dimensions
|
|
93
|
-
!size && !className?.includes("h-") && !className?.includes("w-") && "h-4 w-full",
|
|
94
|
-
className
|
|
95
|
-
);
|
|
96
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: skeletonClasses, ...props });
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
Skeleton.displayName = "Skeleton";
|
|
100
|
-
const SkeletonText = React__namespace.forwardRef(
|
|
101
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { ref, shape: "text", className: utils.cn("h-4 w-full", className), ...props })
|
|
102
|
-
);
|
|
103
|
-
SkeletonText.displayName = "SkeletonText";
|
|
104
|
-
const SkeletonAvatar = React__namespace.forwardRef(
|
|
105
|
-
({ className, size = "md", ...props }, ref) => {
|
|
106
|
-
const avatarSizes = {
|
|
107
|
-
sm: "h-8 w-8",
|
|
108
|
-
md: "h-10 w-10",
|
|
109
|
-
lg: "h-12 w-12",
|
|
110
|
-
xl: "h-16 w-16"
|
|
111
|
-
};
|
|
112
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { ref, shape: "circle", className: utils.cn(avatarSizes[size], className), ...props });
|
|
113
|
-
}
|
|
114
|
-
);
|
|
115
|
-
SkeletonAvatar.displayName = "SkeletonAvatar";
|
|
116
|
-
const SkeletonCard = React__namespace.forwardRef(
|
|
117
|
-
({ className, children, loading = true, ...props }, ref) => {
|
|
118
|
-
if (!loading && children) {
|
|
119
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
120
|
-
}
|
|
121
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: utils.cn("space-y-3", className), ...props, children: [
|
|
122
|
-
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-[125px] w-full rounded-xl" }),
|
|
123
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
124
|
-
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }),
|
|
125
|
-
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-4/5" })
|
|
126
|
-
] })
|
|
127
|
-
] });
|
|
128
|
-
}
|
|
129
|
-
);
|
|
130
|
-
SkeletonCard.displayName = "SkeletonCard";
|
|
131
|
-
const SkeletonList = React__namespace.forwardRef(
|
|
132
|
-
({ className, children, loading = true, items = 3, ...props }, ref) => {
|
|
133
|
-
if (!loading && children) {
|
|
134
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
135
|
-
}
|
|
136
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils.cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-4", children: [
|
|
137
|
-
/* @__PURE__ */ jsxRuntime.jsx(SkeletonAvatar, {}),
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }),
|
|
140
|
-
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-4/5" })
|
|
141
|
-
] })
|
|
142
|
-
] }, i)) });
|
|
143
|
-
}
|
|
144
|
-
);
|
|
145
|
-
SkeletonList.displayName = "SkeletonList";
|
|
146
|
-
|
|
147
|
-
exports.Skeleton = Skeleton;
|
|
148
|
-
exports.SkeletonAvatar = SkeletonAvatar;
|
|
149
|
-
exports.SkeletonCard = SkeletonCard;
|
|
150
|
-
exports.SkeletonList = SkeletonList;
|
|
151
|
-
exports.SkeletonText = SkeletonText;
|
|
152
|
-
//# sourceMappingURL=skeleton.js.map
|
|
153
|
-
//# sourceMappingURL=skeleton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/skeleton.tsx"],"names":["React","jsx","cn","jsxs"],"mappings":"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","file":"skeleton.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * When true, shows skeleton. When false, shows children.\n */\n loading?: boolean;\n /**\n * Content to show when loading is false\n */\n children?: React.ReactNode;\n /**\n * Custom skeleton component to use instead of default\n */\n skeleton?: React.ReactNode;\n /**\n * Animation variant\n */\n variant?: 'pulse' | 'wave' | 'none';\n /**\n * Skeleton shape\n */\n shape?: 'rectangle' | 'circle' | 'text';\n /**\n * Size preset for common use cases\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nconst skeletonVariants = {\n pulse: 'animate-pulse',\n wave: 'animate-wave',\n none: '',\n};\n\nconst shapeVariants = {\n rectangle: 'rounded-md',\n circle: 'rounded-full',\n text: 'rounded-sm',\n};\n\nconst sizeVariants = {\n sm: 'h-4',\n md: 'h-6',\n lg: 'h-8',\n xl: 'h-12',\n};\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n loading = true,\n children,\n skeleton,\n variant = 'pulse',\n shape = 'rectangle',\n size,\n ...props\n },\n ref,\n ) => {\n // If loading is false, render children normally\n if (loading === false && children !== undefined && children !== null) {\n return <>{children}</>;\n }\n\n // If custom skeleton is provided, use it\n if (skeleton) {\n return <>{skeleton}</>;\n }\n\n // If we have children, render invisible children with skeleton overlay\n if (loading && children) {\n // Extract the children element to copy its classes\n const childElement = React.isValidElement(children) ? children : null;\n const childClasses = childElement?.props?.className || '';\n\n // Extract margin classes from children\n const marginClasses = childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-'),\n )\n .join(' ');\n\n // Create children without margin classes for accurate content area measurement\n const childrenWithoutMargin = React.isValidElement(children)\n ? React.cloneElement(children, {\n ...children.props,\n className: childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n !(\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-')\n ),\n )\n .join(' '),\n })\n : children;\n\n return (\n <div ref={ref} className={cn('relative', marginClasses)} {...props}>\n {/* Container for content area only - maintains exact content dimensions */}\n <div className=\"relative\">\n {/* Invisible children to maintain exact layout and dimensions */}\n <div className=\"pointer-events-none opacity-0\">{childrenWithoutMargin}</div>\n {/* Skeleton overlay - only covers content area, not margins */}\n <div\n className={cn(\n 'bg-muted absolute inset-0',\n skeletonVariants[variant],\n shapeVariants[shape],\n className,\n )}\n />\n </div>\n </div>\n );\n }\n\n // Default skeleton classes for when no children are provided\n const skeletonClasses = cn(\n 'bg-muted',\n skeletonVariants[variant],\n shapeVariants[shape],\n size && sizeVariants[size],\n // Default dimensions if no size prop and no explicit dimensions\n !size && !className?.includes('h-') && !className?.includes('w-') && 'h-4 w-full',\n className,\n );\n\n return <div ref={ref} className={skeletonClasses} {...props} />;\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton presets for common use cases\nconst SkeletonText = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, ...props }, ref) => (\n <Skeleton ref={ref} shape=\"text\" className={cn('h-4 w-full', className)} {...props} />\n ),\n);\nSkeletonText.displayName = 'SkeletonText';\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, size = 'md', ...props }, ref) => {\n const avatarSizes = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n return (\n <Skeleton ref={ref} shape=\"circle\" className={cn(avatarSizes[size], className)} {...props} />\n );\n },\n);\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, children, loading = true, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n <Skeleton className=\"h-[125px] w-full rounded-xl\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n );\n },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonProps & { items?: number }>(\n ({ className, children, loading = true, items = 3, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4\">\n <SkeletonAvatar />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nSkeletonList.displayName = 'SkeletonList';\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonList };\n"]}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { cn } from '@/lib/utils';
|
|
4
|
-
|
|
5
|
-
const skeletonVariants = {
|
|
6
|
-
pulse: "animate-pulse",
|
|
7
|
-
wave: "animate-wave",
|
|
8
|
-
none: ""
|
|
9
|
-
};
|
|
10
|
-
const shapeVariants = {
|
|
11
|
-
rectangle: "rounded-md",
|
|
12
|
-
circle: "rounded-full",
|
|
13
|
-
text: "rounded-sm"
|
|
14
|
-
};
|
|
15
|
-
const sizeVariants = {
|
|
16
|
-
sm: "h-4",
|
|
17
|
-
md: "h-6",
|
|
18
|
-
lg: "h-8",
|
|
19
|
-
xl: "h-12"
|
|
20
|
-
};
|
|
21
|
-
const Skeleton = React.forwardRef(
|
|
22
|
-
({
|
|
23
|
-
className,
|
|
24
|
-
loading = true,
|
|
25
|
-
children,
|
|
26
|
-
skeleton,
|
|
27
|
-
variant = "pulse",
|
|
28
|
-
shape = "rectangle",
|
|
29
|
-
size,
|
|
30
|
-
...props
|
|
31
|
-
}, ref) => {
|
|
32
|
-
if (loading === false && children !== void 0 && children !== null) {
|
|
33
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
34
|
-
}
|
|
35
|
-
if (skeleton) {
|
|
36
|
-
return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
|
|
37
|
-
}
|
|
38
|
-
if (loading && children) {
|
|
39
|
-
const childElement = React.isValidElement(children) ? children : null;
|
|
40
|
-
const childClasses = childElement?.props?.className || "";
|
|
41
|
-
const marginClasses = childClasses.split(" ").filter(
|
|
42
|
-
(cls) => cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-")
|
|
43
|
-
).join(" ");
|
|
44
|
-
const childrenWithoutMargin = React.isValidElement(children) ? React.cloneElement(children, {
|
|
45
|
-
...children.props,
|
|
46
|
-
className: childClasses.split(" ").filter(
|
|
47
|
-
(cls) => !(cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-"))
|
|
48
|
-
).join(" ")
|
|
49
|
-
}) : children;
|
|
50
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn("relative", marginClasses), ...props, children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
51
|
-
/* @__PURE__ */ jsx("div", { className: "pointer-events-none opacity-0", children: childrenWithoutMargin }),
|
|
52
|
-
/* @__PURE__ */ jsx(
|
|
53
|
-
"div",
|
|
54
|
-
{
|
|
55
|
-
className: cn(
|
|
56
|
-
"bg-muted absolute inset-0",
|
|
57
|
-
skeletonVariants[variant],
|
|
58
|
-
shapeVariants[shape],
|
|
59
|
-
className
|
|
60
|
-
)
|
|
61
|
-
}
|
|
62
|
-
)
|
|
63
|
-
] }) });
|
|
64
|
-
}
|
|
65
|
-
const skeletonClasses = cn(
|
|
66
|
-
"bg-muted",
|
|
67
|
-
skeletonVariants[variant],
|
|
68
|
-
shapeVariants[shape],
|
|
69
|
-
size && sizeVariants[size],
|
|
70
|
-
// Default dimensions if no size prop and no explicit dimensions
|
|
71
|
-
!size && !className?.includes("h-") && !className?.includes("w-") && "h-4 w-full",
|
|
72
|
-
className
|
|
73
|
-
);
|
|
74
|
-
return /* @__PURE__ */ jsx("div", { ref, className: skeletonClasses, ...props });
|
|
75
|
-
}
|
|
76
|
-
);
|
|
77
|
-
Skeleton.displayName = "Skeleton";
|
|
78
|
-
const SkeletonText = React.forwardRef(
|
|
79
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx(Skeleton, { ref, shape: "text", className: cn("h-4 w-full", className), ...props })
|
|
80
|
-
);
|
|
81
|
-
SkeletonText.displayName = "SkeletonText";
|
|
82
|
-
const SkeletonAvatar = React.forwardRef(
|
|
83
|
-
({ className, size = "md", ...props }, ref) => {
|
|
84
|
-
const avatarSizes = {
|
|
85
|
-
sm: "h-8 w-8",
|
|
86
|
-
md: "h-10 w-10",
|
|
87
|
-
lg: "h-12 w-12",
|
|
88
|
-
xl: "h-16 w-16"
|
|
89
|
-
};
|
|
90
|
-
return /* @__PURE__ */ jsx(Skeleton, { ref, shape: "circle", className: cn(avatarSizes[size], className), ...props });
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
SkeletonAvatar.displayName = "SkeletonAvatar";
|
|
94
|
-
const SkeletonCard = React.forwardRef(
|
|
95
|
-
({ className, children, loading = true, ...props }, ref) => {
|
|
96
|
-
if (!loading && children) {
|
|
97
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
98
|
-
}
|
|
99
|
-
return /* @__PURE__ */ jsxs("div", { ref, className: cn("space-y-3", className), ...props, children: [
|
|
100
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-[125px] w-full rounded-xl" }),
|
|
101
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
102
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
|
|
103
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-4/5" })
|
|
104
|
-
] })
|
|
105
|
-
] });
|
|
106
|
-
}
|
|
107
|
-
);
|
|
108
|
-
SkeletonCard.displayName = "SkeletonCard";
|
|
109
|
-
const SkeletonList = React.forwardRef(
|
|
110
|
-
({ className, children, loading = true, items = 3, ...props }, ref) => {
|
|
111
|
-
if (!loading && children) {
|
|
112
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
113
|
-
}
|
|
114
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-4", children: [
|
|
115
|
-
/* @__PURE__ */ jsx(SkeletonAvatar, {}),
|
|
116
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
117
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
|
|
118
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-4/5" })
|
|
119
|
-
] })
|
|
120
|
-
] }, i)) });
|
|
121
|
-
}
|
|
122
|
-
);
|
|
123
|
-
SkeletonList.displayName = "SkeletonList";
|
|
124
|
-
|
|
125
|
-
export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, SkeletonText };
|
|
126
|
-
//# sourceMappingURL=skeleton.mjs.map
|
|
127
|
-
//# sourceMappingURL=skeleton.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"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","file":"skeleton.mjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * When true, shows skeleton. When false, shows children.\n */\n loading?: boolean;\n /**\n * Content to show when loading is false\n */\n children?: React.ReactNode;\n /**\n * Custom skeleton component to use instead of default\n */\n skeleton?: React.ReactNode;\n /**\n * Animation variant\n */\n variant?: 'pulse' | 'wave' | 'none';\n /**\n * Skeleton shape\n */\n shape?: 'rectangle' | 'circle' | 'text';\n /**\n * Size preset for common use cases\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nconst skeletonVariants = {\n pulse: 'animate-pulse',\n wave: 'animate-wave',\n none: '',\n};\n\nconst shapeVariants = {\n rectangle: 'rounded-md',\n circle: 'rounded-full',\n text: 'rounded-sm',\n};\n\nconst sizeVariants = {\n sm: 'h-4',\n md: 'h-6',\n lg: 'h-8',\n xl: 'h-12',\n};\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n loading = true,\n children,\n skeleton,\n variant = 'pulse',\n shape = 'rectangle',\n size,\n ...props\n },\n ref,\n ) => {\n // If loading is false, render children normally\n if (loading === false && children !== undefined && children !== null) {\n return <>{children}</>;\n }\n\n // If custom skeleton is provided, use it\n if (skeleton) {\n return <>{skeleton}</>;\n }\n\n // If we have children, render invisible children with skeleton overlay\n if (loading && children) {\n // Extract the children element to copy its classes\n const childElement = React.isValidElement(children) ? children : null;\n const childClasses = childElement?.props?.className || '';\n\n // Extract margin classes from children\n const marginClasses = childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-'),\n )\n .join(' ');\n\n // Create children without margin classes for accurate content area measurement\n const childrenWithoutMargin = React.isValidElement(children)\n ? React.cloneElement(children, {\n ...children.props,\n className: childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n !(\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-')\n ),\n )\n .join(' '),\n })\n : children;\n\n return (\n <div ref={ref} className={cn('relative', marginClasses)} {...props}>\n {/* Container for content area only - maintains exact content dimensions */}\n <div className=\"relative\">\n {/* Invisible children to maintain exact layout and dimensions */}\n <div className=\"pointer-events-none opacity-0\">{childrenWithoutMargin}</div>\n {/* Skeleton overlay - only covers content area, not margins */}\n <div\n className={cn(\n 'bg-muted absolute inset-0',\n skeletonVariants[variant],\n shapeVariants[shape],\n className,\n )}\n />\n </div>\n </div>\n );\n }\n\n // Default skeleton classes for when no children are provided\n const skeletonClasses = cn(\n 'bg-muted',\n skeletonVariants[variant],\n shapeVariants[shape],\n size && sizeVariants[size],\n // Default dimensions if no size prop and no explicit dimensions\n !size && !className?.includes('h-') && !className?.includes('w-') && 'h-4 w-full',\n className,\n );\n\n return <div ref={ref} className={skeletonClasses} {...props} />;\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton presets for common use cases\nconst SkeletonText = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, ...props }, ref) => (\n <Skeleton ref={ref} shape=\"text\" className={cn('h-4 w-full', className)} {...props} />\n ),\n);\nSkeletonText.displayName = 'SkeletonText';\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, size = 'md', ...props }, ref) => {\n const avatarSizes = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n return (\n <Skeleton ref={ref} shape=\"circle\" className={cn(avatarSizes[size], className)} {...props} />\n );\n },\n);\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, children, loading = true, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n <Skeleton className=\"h-[125px] w-full rounded-xl\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n );\n },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonProps & { items?: number }>(\n ({ className, children, loading = true, items = 3, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4\">\n <SkeletonAvatar />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nSkeletonList.displayName = 'SkeletonList';\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonList };\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var SliderPrimitive = require('@radix-ui/react-slider');
|
|
6
|
-
var utils = require('@/lib/utils');
|
|
7
|
-
|
|
8
|
-
function _interopNamespace(e) {
|
|
9
|
-
if (e && e.__esModule) return e;
|
|
10
|
-
var n = Object.create(null);
|
|
11
|
-
if (e) {
|
|
12
|
-
Object.keys(e).forEach(function (k) {
|
|
13
|
-
if (k !== 'default') {
|
|
14
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function () { return e[k]; }
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
n.default = e;
|
|
23
|
-
return Object.freeze(n);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
|
-
var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
|
|
28
|
-
|
|
29
|
-
const Slider = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
30
|
-
SliderPrimitive__namespace.Root,
|
|
31
|
-
{
|
|
32
|
-
ref,
|
|
33
|
-
className: utils.cn("relative flex w-full touch-none select-none items-center", className),
|
|
34
|
-
...props,
|
|
35
|
-
children: [
|
|
36
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "bg-muted relative h-2 w-full grow overflow-hidden rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "bg-primary absolute h-full" }) }),
|
|
37
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
));
|
|
41
|
-
Slider.displayName = SliderPrimitive__namespace.Root.displayName;
|
|
42
|
-
|
|
43
|
-
exports.Slider = Slider;
|
|
44
|
-
//# sourceMappingURL=slider.js.map
|
|
45
|
-
//# sourceMappingURL=slider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/slider.tsx"],"names":["React","jsxs","SliderPrimitive","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,MAAA,GAASA,iBAAM,UAAA,CAGnB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,eAAA;AAAA,EAACC,0BAAA,CAAgB,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,QAAA,CAAG,0DAAA,EAA4D,SAAS,CAAA;AAAA,IAClF,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,gEAAA,EAC/B,QAAA,kBAAAE,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACAE,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAU,gKAAA,EAAiK;AAAA;AAAA;AACpM,CACD;AACD,MAAA,CAAO,WAAA,GAAcA,2BAAgB,IAAA,CAAK,WAAA","file":"slider.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-muted relative h-2 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-primary absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
4
|
-
import { cn } from '@/lib/utils';
|
|
5
|
-
|
|
6
|
-
const Slider = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7
|
-
SliderPrimitive.Root,
|
|
8
|
-
{
|
|
9
|
-
ref,
|
|
10
|
-
className: cn("relative flex w-full touch-none select-none items-center", className),
|
|
11
|
-
...props,
|
|
12
|
-
children: [
|
|
13
|
-
/* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "bg-muted relative h-2 w-full grow overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "bg-primary absolute h-full" }) }),
|
|
14
|
-
/* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
));
|
|
18
|
-
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
19
|
-
|
|
20
|
-
export { Slider };
|
|
21
|
-
//# sourceMappingURL=slider.mjs.map
|
|
22
|
-
//# sourceMappingURL=slider.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/slider.tsx"],"names":[],"mappings":";;;;;AAOA,MAAM,MAAA,GAAS,MAAM,UAAA,CAGnB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B,IAAA;AAAA,EAAC,eAAA,CAAgB,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0DAAA,EAA4D,SAAS,CAAA;AAAA,IAClF,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,gEAAA,EAC/B,QAAA,kBAAA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAU,gKAAA,EAAiK;AAAA;AAAA;AACpM,CACD;AACD,MAAA,CAAO,WAAA,GAAc,gBAAgB,IAAA,CAAK,WAAA","file":"slider.mjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-muted relative h-2 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-primary absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"]}
|