@arkyn/components 3.0.1-beta.201 → 3.0.1-beta.204
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/LICENSE.txt +184 -1
- package/README.md +12 -1
- package/dist/components/alert/alertContainer/index.d.ts.map +1 -1
- package/dist/components/cardTab/cardTabContext.d.ts.map +1 -1
- package/dist/components/drawer/drawerContext.d.ts.map +1 -1
- package/dist/components/modal/modalContext.d.ts.map +1 -1
- package/dist/components/tab/tabContext.d.ts.map +1 -1
- package/dist/index.js +85 -62
- package/dist/index.js.map +1 -0
- package/dist/modules/components/alert/alertContainer/index.js +17 -15
- package/dist/modules/components/alert/alertContainer/index.js.map +1 -0
- package/dist/modules/components/alert/alertContainer/styles.css +3 -0
- package/dist/modules/components/alert/alertContent/index.js +2 -0
- package/dist/modules/components/alert/alertContent/index.js.map +1 -0
- package/dist/modules/components/alert/alertContent/styles.css +1 -0
- package/dist/modules/components/alert/alertDescription/index.js +2 -0
- package/dist/modules/components/alert/alertDescription/index.js.map +1 -0
- package/dist/modules/components/alert/alertDescription/styles.css +1 -0
- package/dist/modules/components/alert/alertIcon/index.js +2 -0
- package/dist/modules/components/alert/alertIcon/index.js.map +1 -0
- package/dist/modules/components/alert/alertIcon/styles.css +7 -0
- package/dist/modules/components/alert/alertTitle/index.js +2 -0
- package/dist/modules/components/alert/alertTitle/index.js.map +1 -0
- package/dist/modules/components/alert/alertTitle/styles.css +1 -0
- package/dist/modules/components/audioPlayer/index.js +2 -0
- package/dist/modules/components/audioPlayer/index.js.map +1 -0
- package/dist/modules/components/audioPlayer/styles.css +3 -0
- package/dist/modules/components/audioUpload/hasFileContent/index.js +2 -0
- package/dist/modules/components/audioUpload/hasFileContent/index.js.map +1 -0
- package/dist/modules/components/audioUpload/hasFileContent/styles.css +1 -0
- package/dist/modules/components/audioUpload/index.js +2 -0
- package/dist/modules/components/audioUpload/index.js.map +1 -0
- package/dist/modules/components/audioUpload/noFileContent/index.js +2 -0
- package/dist/modules/components/audioUpload/noFileContent/index.js.map +1 -0
- package/dist/modules/components/audioUpload/noFileContent/styles.css +1 -0
- package/dist/modules/components/audioUpload/styles.css +25 -0
- package/dist/modules/components/badge/index.js +2 -0
- package/dist/modules/components/badge/index.js.map +1 -0
- package/dist/modules/components/badge/styles.css +1 -0
- package/dist/modules/components/button/index.js +2 -0
- package/dist/modules/components/button/index.js.map +1 -0
- package/dist/modules/components/button/styles.css +1 -0
- package/dist/modules/components/calendar/_calendarProvider.js +2 -0
- package/dist/modules/components/calendar/_calendarProvider.js.map +1 -0
- package/dist/modules/components/calendar/_viewService.js +2 -0
- package/dist/modules/components/calendar/_viewService.js.map +1 -0
- package/dist/modules/components/calendar/calendarContainer/index.js +2 -0
- package/dist/modules/components/calendar/calendarContainer/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarContainer/styles.css +1 -0
- package/dist/modules/components/calendar/calendarHeader/index.js +2 -0
- package/dist/modules/components/calendar/calendarHeader/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarHeader/styles.css +1 -0
- package/dist/modules/components/calendar/calendarTableBody/index.js +2 -0
- package/dist/modules/components/calendar/calendarTableBody/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarTableBody/styles.css +1 -0
- package/dist/modules/components/calendar/calendarTableContainer/index.js +2 -0
- package/dist/modules/components/calendar/calendarTableContainer/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarTableContainer/styles.css +1 -0
- package/dist/modules/components/calendar/calendarTableHeader/index.js +2 -0
- package/dist/modules/components/calendar/calendarTableHeader/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarTableHeader/styles.css +1 -0
- package/dist/modules/components/calendar/calendarTableTd/index.js +2 -0
- package/dist/modules/components/calendar/calendarTableTd/index.js.map +1 -0
- package/dist/modules/components/calendar/calendarTableTd/styles.css +1 -0
- package/dist/modules/components/calendar/index.js +2 -0
- package/dist/modules/components/calendar/index.js.map +1 -0
- package/dist/modules/components/calendar/styles.css +33 -0
- package/dist/modules/components/cardTab/cardTabButton/index.js +2 -0
- package/dist/modules/components/cardTab/cardTabButton/index.js.map +1 -0
- package/dist/modules/components/cardTab/cardTabButton/styles.css +1 -0
- package/dist/modules/components/cardTab/cardTabContainer/index.js +2 -0
- package/dist/modules/components/cardTab/cardTabContainer/index.js.map +1 -0
- package/dist/modules/components/cardTab/cardTabContainer/styles.css +1 -0
- package/dist/modules/components/cardTab/cardTabContext.js +20 -9
- package/dist/modules/components/cardTab/cardTabContext.js.map +1 -0
- package/dist/modules/components/checkbox/index.js +2 -0
- package/dist/modules/components/checkbox/index.js.map +1 -0
- package/dist/modules/components/checkbox/styles.css +7 -0
- package/dist/modules/components/clientOnly.js +2 -0
- package/dist/modules/components/clientOnly.js.map +1 -0
- package/dist/modules/components/currencyInput/index.js +2 -0
- package/dist/modules/components/currencyInput/index.js.map +1 -0
- package/dist/modules/components/currencyInput/style.css +1 -0
- package/dist/modules/components/currencyInput/styles.css +7 -0
- package/dist/modules/components/divider/index.js +2 -0
- package/dist/modules/components/divider/index.js.map +1 -0
- package/dist/modules/components/divider/styles.css +1 -0
- package/dist/modules/components/drawer/drawerContainer/index.js +2 -0
- package/dist/modules/components/drawer/drawerContainer/index.js.map +1 -0
- package/dist/modules/components/drawer/drawerContainer/styles.css +1 -0
- package/dist/modules/components/drawer/drawerContext.js +12 -9
- package/dist/modules/components/drawer/drawerContext.js.map +1 -0
- package/dist/modules/components/drawer/drawerHeader/index.js +2 -0
- package/dist/modules/components/drawer/drawerHeader/index.js.map +1 -0
- package/dist/modules/components/drawer/drawerHeader/styles.css +1 -0
- package/dist/modules/components/facebookPixel/facebookPixel.client.js +2 -0
- package/dist/modules/components/facebookPixel/facebookPixel.client.js.map +1 -0
- package/dist/modules/components/facebookPixel/index.js +2 -0
- package/dist/modules/components/facebookPixel/index.js.map +1 -0
- package/dist/modules/components/facebookPixel/pixel.js +2 -0
- package/dist/modules/components/facebookPixel/pixel.js.map +1 -0
- package/dist/modules/components/fieldError/index.js +2 -0
- package/dist/modules/components/fieldError/index.js.map +1 -0
- package/dist/modules/components/fieldError/styles.css +1 -0
- package/dist/modules/components/fieldLabel/index.js +2 -0
- package/dist/modules/components/fieldLabel/index.js.map +1 -0
- package/dist/modules/components/fieldLabel/styles.css +1 -0
- package/dist/modules/components/fieldWrapper/index.js +2 -0
- package/dist/modules/components/fieldWrapper/index.js.map +1 -0
- package/dist/modules/components/fieldWrapper/styles.css +1 -0
- package/dist/modules/components/fileUpload/hasFileContent/index.js +2 -0
- package/dist/modules/components/fileUpload/hasFileContent/index.js.map +1 -0
- package/dist/modules/components/fileUpload/hasFileContent/styles.css +1 -0
- package/dist/modules/components/fileUpload/index.js +2 -0
- package/dist/modules/components/fileUpload/index.js.map +1 -0
- package/dist/modules/components/fileUpload/noFileContent/index.js +2 -0
- package/dist/modules/components/fileUpload/noFileContent/index.js.map +1 -0
- package/dist/modules/components/fileUpload/noFileContent/styles.css +1 -0
- package/dist/modules/components/fileUpload/styles.css +19 -0
- package/dist/modules/components/fullCalendar/_fullCalendarProvider.js +2 -0
- package/dist/modules/components/fullCalendar/_fullCalendarProvider.js.map +1 -0
- package/dist/modules/components/fullCalendar/_viewService.js +2 -0
- package/dist/modules/components/fullCalendar/_viewService.js.map +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarContainer/index.js +2 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarContainer/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarContainer/styles.css +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarEvent/index.js +2 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarEvent/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarEvent/styles.css +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarRow/index.js +2 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarRow/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/dayCalendarRow/styles.css +1 -0
- package/dist/modules/components/fullCalendar/dayCalendar/index.js +2 -0
- package/dist/modules/components/fullCalendar/dayCalendar/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/fullCalendarContainer/index.js +2 -0
- package/dist/modules/components/fullCalendar/fullCalendarContainer/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/fullCalendarContainer/styles.css +1 -0
- package/dist/modules/components/fullCalendar/fullCalendarHeader/index.js +2 -0
- package/dist/modules/components/fullCalendar/fullCalendarHeader/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/fullCalendarHeader/styles.css +1 -0
- package/dist/modules/components/fullCalendar/index.js +2 -0
- package/dist/modules/components/fullCalendar/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarEvent/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarEvent/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarEvent/styles.css +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableBody/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableBody/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableBody/styles.css +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableContainer/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableContainer/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableContainer/styles.css +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableHeader/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableHeader/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableHeader/styles.css +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableTd/index.js +2 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableTd/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/monthlyCalendar/monthlyCalendarTableTd/styles.css +1 -0
- package/dist/modules/components/fullCalendar/styles.css +35 -0
- package/dist/modules/components/fullCalendar/weekCalendar/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarEvent/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarEvent/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarEvent/styles.css +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableBody/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableBody/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableBody/styles.css +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableContainer/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableContainer/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableContainer/styles.css +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableHeader/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableHeader/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableHeader/styles.css +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableTd/index.js +2 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableTd/index.js.map +1 -0
- package/dist/modules/components/fullCalendar/weekCalendar/weekCalendarTableTd/styles.css +1 -0
- package/dist/modules/components/googleAnalytics/googleAnalytics.client.js +2 -0
- package/dist/modules/components/googleAnalytics/googleAnalytics.client.js.map +1 -0
- package/dist/modules/components/googleAnalytics/googleAnalytics.js +2 -0
- package/dist/modules/components/googleAnalytics/googleAnalytics.js.map +1 -0
- package/dist/modules/components/googleAnalytics/index.js +2 -0
- package/dist/modules/components/googleAnalytics/index.js.map +1 -0
- package/dist/modules/components/googleAnalytics/snippets/generateGAElements.js +2 -0
- package/dist/modules/components/googleAnalytics/snippets/generateGAElements.js.map +1 -0
- package/dist/modules/components/googleTagManager/googleTagManager.client.js +2 -0
- package/dist/modules/components/googleTagManager/googleTagManager.client.js.map +1 -0
- package/dist/modules/components/googleTagManager/googleTagManager.js +2 -0
- package/dist/modules/components/googleTagManager/googleTagManager.js.map +1 -0
- package/dist/modules/components/googleTagManager/index.js +2 -0
- package/dist/modules/components/googleTagManager/index.js.map +1 -0
- package/dist/modules/components/googleTagManager/snippets/appendToDataLayer.js +2 -0
- package/dist/modules/components/googleTagManager/snippets/appendToDataLayer.js.map +1 -0
- package/dist/modules/components/googleTagManager/snippets/generateGTMElements.js +2 -0
- package/dist/modules/components/googleTagManager/snippets/generateGTMElements.js.map +1 -0
- package/dist/modules/components/iconButton/index.js +2 -0
- package/dist/modules/components/iconButton/index.js.map +1 -0
- package/dist/modules/components/iconButton/styles.css +1 -0
- package/dist/modules/components/imageUpload/hasFileContent/index.js +2 -0
- package/dist/modules/components/imageUpload/hasFileContent/index.js.map +1 -0
- package/dist/modules/components/imageUpload/hasFileContent/styles.css +1 -0
- package/dist/modules/components/imageUpload/index.js +2 -0
- package/dist/modules/components/imageUpload/index.js.map +1 -0
- package/dist/modules/components/imageUpload/noFileContent/index.js +2 -0
- package/dist/modules/components/imageUpload/noFileContent/index.js.map +1 -0
- package/dist/modules/components/imageUpload/noFileContent/styles.css +1 -0
- package/dist/modules/components/imageUpload/styles.css +17 -0
- package/dist/modules/components/input/index.js +2 -0
- package/dist/modules/components/input/index.js.map +1 -0
- package/dist/modules/components/input/style.css +1 -0
- package/dist/modules/components/input/styles.css +7 -0
- package/dist/modules/components/mapView/index.js +2 -0
- package/dist/modules/components/mapView/index.js.map +1 -0
- package/dist/modules/components/mapView/mapView.client.js +2 -0
- package/dist/modules/components/mapView/mapView.client.js.map +1 -0
- package/dist/modules/components/mapView/mapbox.css +1 -0
- package/dist/modules/components/mapView/styles.css +1 -0
- package/dist/modules/components/maskedInput/index.js +2 -0
- package/dist/modules/components/maskedInput/index.js.map +1 -0
- package/dist/modules/components/maskedInput/style.css +1 -0
- package/dist/modules/components/maskedInput/styles.css +7 -0
- package/dist/modules/components/modal/modalContainer/index.js +2 -0
- package/dist/modules/components/modal/modalContainer/index.js.map +1 -0
- package/dist/modules/components/modal/modalContainer/styles.css +1 -0
- package/dist/modules/components/modal/modalContext.js +12 -9
- package/dist/modules/components/modal/modalContext.js.map +1 -0
- package/dist/modules/components/modal/modalFooter/index.js +2 -0
- package/dist/modules/components/modal/modalFooter/index.js.map +1 -0
- package/dist/modules/components/modal/modalFooter/styles.css +1 -0
- package/dist/modules/components/modal/modalHeader/index.js +2 -0
- package/dist/modules/components/modal/modalHeader/index.js.map +1 -0
- package/dist/modules/components/modal/modalHeader/styles.css +1 -0
- package/dist/modules/components/multiSelect/index.js +2 -0
- package/dist/modules/components/multiSelect/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectChevron/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectChevron/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectChevron/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectContainer/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectContainer/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectContainer/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectContent/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectContent/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectContent/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectMark/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectMark/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectMark/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectOption/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectOption/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectOption/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectOptionsContainer/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectOptionsContainer/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectOptionsContainer/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectOverlay/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectOverlay/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectOverlay/styles.css +1 -0
- package/dist/modules/components/multiSelect/multiSelectSpinner/index.js +2 -0
- package/dist/modules/components/multiSelect/multiSelectSpinner/index.js.map +1 -0
- package/dist/modules/components/multiSelect/multiSelectSpinner/styles.css +1 -0
- package/dist/modules/components/multiSelect/styles.css +31 -0
- package/dist/modules/components/pagination/chevronButton/index.js +2 -0
- package/dist/modules/components/pagination/chevronButton/index.js.map +1 -0
- package/dist/modules/components/pagination/chevronButton/styles.css +1 -0
- package/dist/modules/components/pagination/currentButton/index.js +2 -0
- package/dist/modules/components/pagination/currentButton/index.js.map +1 -0
- package/dist/modules/components/pagination/currentButton/styles.css +1 -0
- package/dist/modules/components/pagination/index.js +2 -0
- package/dist/modules/components/pagination/index.js.map +1 -0
- package/dist/modules/components/pagination/pageButton/index.js +2 -0
- package/dist/modules/components/pagination/pageButton/index.js.map +1 -0
- package/dist/modules/components/pagination/pageButton/styles.css +1 -0
- package/dist/modules/components/pagination/paginationService.js +2 -0
- package/dist/modules/components/pagination/paginationService.js.map +1 -0
- package/dist/modules/components/pagination/spread/index.js +2 -0
- package/dist/modules/components/pagination/spread/index.js.map +1 -0
- package/dist/modules/components/pagination/spread/styles.css +1 -0
- package/dist/modules/components/pagination/styles.css +9 -0
- package/dist/modules/components/phoneInput/index.js +2 -0
- package/dist/modules/components/phoneInput/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputContainer/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputContainer/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputContainer/styles.css +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountriesOverlay/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputCountriesOverlay/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountriesOverlay/styles.css +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOption/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOption/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOption/styles.css +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOptionsContainer/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOptionsContainer/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountryOptionsContainer/styles.css +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountrySelector/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputCountrySelector/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputCountrySelector/styles.css +1 -0
- package/dist/modules/components/phoneInput/phoneInputMask/index.js +2 -0
- package/dist/modules/components/phoneInput/phoneInputMask/index.js.map +1 -0
- package/dist/modules/components/phoneInput/phoneInputMask/style.css +1 -0
- package/dist/modules/components/phoneInput/styles.css +19 -0
- package/dist/modules/components/popover/index.js +2 -0
- package/dist/modules/components/popover/index.js.map +1 -0
- package/dist/modules/components/popover/styles.css +1 -0
- package/dist/modules/components/radio/radioBox/index.js +2 -0
- package/dist/modules/components/radio/radioBox/index.js.map +1 -0
- package/dist/modules/components/radio/radioBox/styles.css +1 -0
- package/dist/modules/components/radio/radioContext.js +2 -0
- package/dist/modules/components/radio/radioContext.js.map +1 -0
- package/dist/modules/components/radio/radioGroup/index.js +2 -0
- package/dist/modules/components/radio/radioGroup/index.js.map +1 -0
- package/dist/modules/components/radio/radioGroup/styles.css +7 -0
- package/dist/modules/components/richText/blockButton/index.js +2 -0
- package/dist/modules/components/richText/blockButton/index.js.map +1 -0
- package/dist/modules/components/richText/blockButton/styles.css +1 -0
- package/dist/modules/components/richText/element/index.js +2 -0
- package/dist/modules/components/richText/element/index.js.map +1 -0
- package/dist/modules/components/richText/element/styles.css +1 -0
- package/dist/modules/components/richText/index.js +2 -0
- package/dist/modules/components/richText/index.js.map +1 -0
- package/dist/modules/components/richText/insertImage/index.js +2 -0
- package/dist/modules/components/richText/insertImage/index.js.map +1 -0
- package/dist/modules/components/richText/insertImage/styles.css +1 -0
- package/dist/modules/components/richText/insertVideo/index.js +2 -0
- package/dist/modules/components/richText/insertVideo/index.js.map +1 -0
- package/dist/modules/components/richText/insertVideo/styles.css +1 -0
- package/dist/modules/components/richText/leaf/index.js +2 -0
- package/dist/modules/components/richText/leaf/index.js.map +1 -0
- package/dist/modules/components/richText/markButton/index.js +2 -0
- package/dist/modules/components/richText/markButton/index.js.map +1 -0
- package/dist/modules/components/richText/markButton/styles.css +1 -0
- package/dist/modules/components/richText/styles.css +67 -0
- package/dist/modules/components/richText/toolbar/index.js +2 -0
- package/dist/modules/components/richText/toolbar/index.js.map +1 -0
- package/dist/modules/components/richText/toolbar/styles.css +1 -0
- package/dist/modules/components/searchPlaces.js +2 -0
- package/dist/modules/components/searchPlaces.js.map +1 -0
- package/dist/modules/components/select/index.js +2 -0
- package/dist/modules/components/select/index.js.map +1 -0
- package/dist/modules/components/select/selectChevron/index.js +2 -0
- package/dist/modules/components/select/selectChevron/index.js.map +1 -0
- package/dist/modules/components/select/selectChevron/styles.css +1 -0
- package/dist/modules/components/select/selectContainer/index.js +2 -0
- package/dist/modules/components/select/selectContainer/index.js.map +1 -0
- package/dist/modules/components/select/selectContainer/styles.css +1 -0
- package/dist/modules/components/select/selectContent/index.js +2 -0
- package/dist/modules/components/select/selectContent/index.js.map +1 -0
- package/dist/modules/components/select/selectContent/styles.css +1 -0
- package/dist/modules/components/select/selectOption/index.js +2 -0
- package/dist/modules/components/select/selectOption/index.js.map +1 -0
- package/dist/modules/components/select/selectOption/styles.css +1 -0
- package/dist/modules/components/select/selectOptionsContainer/index.js +2 -0
- package/dist/modules/components/select/selectOptionsContainer/index.js.map +1 -0
- package/dist/modules/components/select/selectOptionsContainer/styles.css +1 -0
- package/dist/modules/components/select/selectOverlay/index.js +2 -0
- package/dist/modules/components/select/selectOverlay/index.js.map +1 -0
- package/dist/modules/components/select/selectOverlay/styles.css +1 -0
- package/dist/modules/components/select/selectSpinner/index.js +2 -0
- package/dist/modules/components/select/selectSpinner/index.js.map +1 -0
- package/dist/modules/components/select/selectSpinner/styles.css +1 -0
- package/dist/modules/components/select/styles.css +29 -0
- package/dist/modules/components/slider/index.js +2 -0
- package/dist/modules/components/slider/index.js.map +1 -0
- package/dist/modules/components/slider/styles.css +1 -0
- package/dist/modules/components/switch/index.js +2 -0
- package/dist/modules/components/switch/index.js.map +1 -0
- package/dist/modules/components/switch/styles.css +7 -0
- package/dist/modules/components/tab/tabButton/index.js +2 -0
- package/dist/modules/components/tab/tabButton/index.js.map +1 -0
- package/dist/modules/components/tab/tabButton/styles.css +1 -0
- package/dist/modules/components/tab/tabContainer/index.js +2 -0
- package/dist/modules/components/tab/tabContainer/index.js.map +1 -0
- package/dist/modules/components/tab/tabContainer/styles.css +1 -0
- package/dist/modules/components/tab/tabContext.js +20 -9
- package/dist/modules/components/tab/tabContext.js.map +1 -0
- package/dist/modules/components/table/tableBody/index.js +2 -0
- package/dist/modules/components/table/tableBody/index.js.map +1 -0
- package/dist/modules/components/table/tableBody/styles.css +1 -0
- package/dist/modules/components/table/tableCaption/index.js +2 -0
- package/dist/modules/components/table/tableCaption/index.js.map +1 -0
- package/dist/modules/components/table/tableCaption/styles.css +1 -0
- package/dist/modules/components/table/tableContainer/index.js +2 -0
- package/dist/modules/components/table/tableContainer/index.js.map +1 -0
- package/dist/modules/components/table/tableContainer/styles.css +1 -0
- package/dist/modules/components/table/tableFooter/index.js +2 -0
- package/dist/modules/components/table/tableFooter/index.js.map +1 -0
- package/dist/modules/components/table/tableFooter/styles.css +1 -0
- package/dist/modules/components/table/tableHeader/index.js +2 -0
- package/dist/modules/components/table/tableHeader/index.js.map +1 -0
- package/dist/modules/components/table/tableHeader/styles.css +1 -0
- package/dist/modules/components/textarea/index.js +2 -0
- package/dist/modules/components/textarea/index.js.map +1 -0
- package/dist/modules/components/textarea/styles.css +7 -0
- package/dist/modules/components/tooltip/index.js +2 -0
- package/dist/modules/components/tooltip/index.js.map +1 -0
- package/dist/modules/components/tooltip/styles.css +1 -0
- package/dist/modules/hooks/useAutomation.js +2 -0
- package/dist/modules/hooks/useAutomation.js.map +1 -0
- package/dist/modules/hooks/useDrawer.js +2 -0
- package/dist/modules/hooks/useDrawer.js.map +1 -0
- package/dist/modules/hooks/useForm.js +2 -0
- package/dist/modules/hooks/useForm.js.map +1 -0
- package/dist/modules/hooks/useHydrated.js +2 -0
- package/dist/modules/hooks/useHydrated.js.map +1 -0
- package/dist/modules/hooks/useModal.js +2 -0
- package/dist/modules/hooks/useModal.js.map +1 -0
- package/dist/modules/hooks/useScopedParams.js +2 -0
- package/dist/modules/hooks/useScopedParams.js.map +1 -0
- package/dist/modules/hooks/useScrollLock.js +2 -0
- package/dist/modules/hooks/useScrollLock.js.map +1 -0
- package/dist/modules/hooks/useSearchAutomation.js +2 -0
- package/dist/modules/hooks/useSearchAutomation.js.map +1 -0
- package/dist/modules/hooks/useSlider.js +2 -0
- package/dist/modules/hooks/useSlider.js.map +1 -0
- package/dist/modules/hooks/useToast.js +2 -0
- package/dist/modules/hooks/useToast.js.map +1 -0
- package/dist/modules/providers/drawerProvider.js +2 -0
- package/dist/modules/providers/drawerProvider.js.map +1 -0
- package/dist/modules/providers/formProvider.js +11 -9
- package/dist/modules/providers/formProvider.js.map +1 -0
- package/dist/modules/providers/modalProvider.js +2 -0
- package/dist/modules/providers/modalProvider.js.map +1 -0
- package/dist/modules/providers/placesProvider.js +2 -0
- package/dist/modules/providers/placesProvider.js.map +1 -0
- package/dist/modules/providers/toastProvider.js +41 -38
- package/dist/modules/providers/toastProvider.js.map +1 -0
- package/dist/modules/services/extractTextFromNode.js +2 -0
- package/dist/modules/services/extractTextFromNode.js.map +1 -0
- package/dist/modules/services/fieldTemplate.js +2 -0
- package/dist/modules/services/fieldTemplate.js.map +1 -0
- package/dist/modules/services/iconRenderer.js +2 -0
- package/dist/modules/services/iconRenderer.js.map +1 -0
- package/dist/modules/services/isBlockActive.js +2 -0
- package/dist/modules/services/isBlockActive.js.map +1 -0
- package/dist/modules/services/isMarkActive.js +2 -0
- package/dist/modules/services/isMarkActive.js.map +1 -0
- package/dist/modules/services/maskCurrencyValues.js +2 -0
- package/dist/modules/services/maskCurrencyValues.js.map +1 -0
- package/dist/modules/services/toHtml.js +2 -0
- package/dist/modules/services/toHtml.js.map +1 -0
- package/dist/modules/services/toRichTextValue.js +2 -0
- package/dist/modules/services/toRichTextValue.js.map +1 -0
- package/dist/modules/services/toggleBlock.js +2 -0
- package/dist/modules/services/toggleBlock.js.map +1 -0
- package/dist/modules/services/toggleMark.js +2 -0
- package/dist/modules/services/toggleMark.js.map +1 -0
- package/dist/modules/templates/badResponses.js +2 -0
- package/dist/modules/templates/badResponses.js.map +1 -0
- package/dist/modules/templates/richTextTemplates.js +2 -0
- package/dist/modules/templates/richTextTemplates.js.map +1 -0
- package/dist/modules/templates/successResponses.js +2 -0
- package/dist/modules/templates/successResponses.js.map +1 -0
- package/dist/modules/utils/phoneInputUtilities.js +2 -0
- package/dist/modules/utils/phoneInputUtilities.js.map +1 -0
- package/dist/modules/utils/richTextUtilities.js +2 -0
- package/dist/modules/utils/richTextUtilities.js.map +1 -0
- package/dist/providers/formProvider.d.ts.map +1 -1
- package/dist/providers/toastProvider.d.ts.map +1 -1
- package/dist/style.css +0 -1
- package/package.json +637 -8
- package/dist/modules/index.js +0 -72
- package/dist/modules/style.css +0 -2
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { AlertTitle as e } from "../alertTitle/index.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import { createContext as t, useContext as n } from "react";
|
|
4
|
-
import { jsx as
|
|
3
|
+
import { createContext as t, useContext as n, useMemo as r } from "react";
|
|
4
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/alert/alertContainer/index.tsx
|
|
6
|
-
var
|
|
7
|
-
function
|
|
8
|
-
return n(
|
|
6
|
+
var a = t({});
|
|
7
|
+
function o() {
|
|
8
|
+
return n(a);
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
let { scheme: n, children:
|
|
10
|
+
function s(t) {
|
|
11
|
+
let { scheme: n, children: o, className: s, ...c } = t, l = `arkynAlertContainer ${n} ${((t) => {
|
|
12
12
|
let n = !1, r = (t) => {
|
|
13
13
|
Array.isArray(t) ? t.forEach(r) : t && typeof t == "object" && "type" in t && (t.type === e ? n = !0 : t.props && typeof t.props == "object" && t.props !== null && "children" in t.props && r(t.props.children));
|
|
14
14
|
};
|
|
15
15
|
return r(t), n;
|
|
16
|
-
})(
|
|
17
|
-
return /* @__PURE__ */
|
|
18
|
-
value:
|
|
19
|
-
children: /* @__PURE__ */
|
|
20
|
-
className:
|
|
21
|
-
...
|
|
22
|
-
children:
|
|
16
|
+
})(o) ? "existsAlertTitle" : "nonExistsAlertTitle"} ${s}`, u = r(() => ({ scheme: n }), [n]);
|
|
17
|
+
return /* @__PURE__ */ i(a.Provider, {
|
|
18
|
+
value: u,
|
|
19
|
+
children: /* @__PURE__ */ i("div", {
|
|
20
|
+
className: l.trim(),
|
|
21
|
+
...c,
|
|
22
|
+
children: o
|
|
23
23
|
})
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
//#endregion
|
|
27
|
-
export {
|
|
27
|
+
export { s as AlertContainer, o as useAlertContainer };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/alert/alertContainer/index.tsx"],"sourcesContent":["import {\n\tcreateContext,\n\ttype HTMLAttributes,\n\ttype JSX,\n\ttype ReactNode,\n\tuseContext,\n\tuseMemo,\n} from \"react\";\nimport { AlertTitle } from \"../alertTitle\";\nimport \"./styles.css\";\n\ntype AlertContainerProps = {\n\t/**\n\t * Visual style and semantic meaning.\n\t * - `success`: green — operation completed.\n\t * - `danger`: red — error or destructive action.\n\t * - `warning`: yellow — caution required.\n\t * - `info`: blue — informational message.\n\t */\n\tscheme: \"success\" | \"danger\" | \"warning\" | \"info\";\n} & HTMLAttributes<HTMLDivElement>;\n\nconst AlertContainerContext = createContext({} as AlertContainerProps);\n\n/** @internal Accesses the schema and HTML props of the enclosing `AlertContainer`. */\nfunction useAlertContainer(): AlertContainerProps {\n\treturn useContext(AlertContainerContext);\n}\n\n/**\n * AlertContainer — root wrapper for the Alert component set. Provides schema context to child components.\n *\n * Automatically detects whether an `AlertTitle` is present among children and adjusts layout:\n * centered when no title, left-aligned when a title is present.\n *\n * @param props.scheme - Visual style variant. Required.\n * @param props.children - Alert sub-components: `AlertIcon`, `AlertContent`, `AlertTitle`, `AlertDescription`.\n *\n * **...Other valid HTML properties for `<div>`**\n *\n * @returns AlertContainer JSX element.\n *\n * @example\n * ```tsx\n * // Inline alert — no title, centered layout\n * <AlertContainer scheme=\"success\">\n * <AlertIcon />\n * <AlertContent>Your subscription has been activated.</AlertContent>\n * </AlertContainer>\n *\n * // Full alert with title and description — left-aligned layout\n * <AlertContainer scheme=\"danger\">\n * <AlertIcon />\n * <AlertContent>\n * <AlertTitle>Payment failed</AlertTitle>\n * <AlertDescription>Please check your card details and try again.</AlertDescription>\n * </AlertContent>\n * </AlertContainer>\n * ```\n */\n\nfunction AlertContainer(props: AlertContainerProps): JSX.Element {\n\tconst { scheme, children, className: baseClassName, ...rest } = props;\n\n\tconst hasAlertTitle = (children: ReactNode): boolean => {\n\t\tlet found = false;\n\t\tconst searchForAlertTitle = (nodes: ReactNode) => {\n\t\t\tif (Array.isArray(nodes)) {\n\t\t\t\tnodes.forEach(searchForAlertTitle);\n\t\t\t} else if (nodes && typeof nodes === \"object\" && \"type\" in nodes) {\n\t\t\t\tif (nodes.type === AlertTitle) {\n\t\t\t\t\tfound = true;\n\t\t\t\t} else if (\n\t\t\t\t\tnodes.props &&\n\t\t\t\t\ttypeof nodes.props === \"object\" &&\n\t\t\t\t\tnodes.props !== null &&\n\t\t\t\t\t\"children\" in nodes.props\n\t\t\t\t) {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: intentional\n\t\t\t\t\tsearchForAlertTitle((nodes.props as any).children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tsearchForAlertTitle(children);\n\t\treturn found;\n\t};\n\n\tconst shouldAlignCenter = !hasAlertTitle(children);\n\tconst finalClassName = shouldAlignCenter\n\t\t? \"nonExistsAlertTitle\"\n\t\t: \"existsAlertTitle\";\n\n\tconst className = `arkynAlertContainer ${scheme} ${finalClassName} ${baseClassName}`;\n\n\tconst value = useMemo(() => ({ scheme }), [scheme]);\n\n\treturn (\n\t\t<AlertContainerContext.Provider value={value}>\n\t\t\t<div className={className.trim()} {...rest}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</AlertContainerContext.Provider>\n\t);\n}\n\nexport { AlertContainer, useAlertContainer };\n"],"mappings":";;;;;AAsBA,IAAM,IAAwB,EAAc,CAAC,CAAwB;AAGrE,SAAS,IAAyC;CACjD,OAAO,EAAW,CAAqB;AACxC;AAkCA,SAAS,EAAe,GAAyC;CAChE,IAAM,EAAE,WAAQ,aAAU,WAAW,GAAe,GAAG,MAAS,GA8B1D,IAAY,uBAAuB,EAAO,KA5BzB,MAAiC;EACvD,IAAI,IAAQ,IACN,KAAuB,MAAqB;GACjD,AAAI,MAAM,QAAQ,CAAK,IACtB,EAAM,QAAQ,CAAmB,IACvB,KAAS,OAAO,KAAU,YAAY,UAAU,MACtD,EAAM,SAAS,IAClB,IAAQ,KAER,EAAM,SACN,OAAO,EAAM,SAAU,YACvB,EAAM,UAAU,QAChB,cAAc,EAAM,SAGpB,EAAqB,EAAM,MAAc,QAAQ;EAGpD;EAEA,OADA,EAAoB,CAAQ,GACrB;CACR,EAE2B,CAAc,CAAQ,IAG9C,qBADA,sBAG+D,GAAG,KAE/D,IAAQ,SAAe,EAAE,UAAO,IAAI,CAAC,CAAM,CAAC;CAElD,OACC,kBAAC,EAAsB,UAAvB;EAAuC;YACtC,kBAAC,OAAD;GAAK,WAAW,EAAU,KAAK;GAAG,GAAI;GACpC;EACG,CAAA;CAC0B,CAAA;AAElC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
@layer arkyn{.arkynAlertContainer{border:1px solid #0000;border-radius:6px;align-items:start;gap:16px;padding:16px;display:flex}.arkynAlertContainer.nonExistsAlertTitle{align-items:center}.arkynAlertContainer.danger{background:rgb(var(--spotlight-danger-foreground));border-color:rgb(var(--spotlight-danger))}.arkynAlertContainer.success{background:rgb(var(--spotlight-success-foreground));border-color:rgb(var(--spotlight-success))}.arkynAlertContainer.info{background:rgb(var(--spotlight-info-foreground));border-color:rgb(var(--spotlight-info))}.arkynAlertContainer.warning{background:rgb(var(--spotlight-warning-foreground));border-color:rgb(var(--spotlight-warning))}}
|
|
2
|
+
|
|
3
|
+
@layer arkyn{.arkynAlertTitle{text-align:left;color:var(--text-heading);font-size:16px;font-weight:600;line-height:130%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/alert/alertContent/index.tsx"],"sourcesContent":["import type { HTMLAttributes, JSX } from \"react\";\nimport \"./styles.css\";\n\ntype AlertContentProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * AlertContent — text/content area inside an `AlertContainer`. Wraps `AlertTitle` and `AlertDescription`.\n *\n * Accepts all standard `<div>` HTML attributes.\n *\n * @returns AlertContent JSX element.\n *\n * @example\n * ```tsx\n * <AlertContainer scheme=\"warning\">\n * <AlertIcon />\n * <AlertContent>\n * <AlertTitle>Session expiring</AlertTitle>\n * <AlertDescription>You will be logged out in 5 minutes.</AlertDescription>\n * </AlertContent>\n * </AlertContainer>\n * ```\n */\n\nfunction AlertContent(props: AlertContentProps): JSX.Element {\n\tconst { className: baseClassName, ...rest } = props;\n\tconst className = `arkynAlertContent ${baseClassName}`;\n\n\treturn <div className={className.trim()} {...rest} />;\n}\n\nexport { AlertContent };\n"],"mappings":";;;AAwBA,SAAS,EAAa,GAAuC;CAC5D,IAAM,EAAE,WAAW,GAAe,GAAG,MAAS;CAG9C,OAAO,kBAAC,OAAD;EAAK,WAAW,qBAFgB,IAEN,KAAK;EAAG,GAAI;CAAO,CAAA;AACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynAlertContent{flex-direction:column;gap:8px;display:flex}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/alert/alertDescription/index.tsx"],"sourcesContent":["import type { HTMLAttributes, JSX } from \"react\";\nimport \"./styles.css\";\n\ntype AlertDescriptionProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * AlertDescription — body text for an alert. Place inside `AlertContent`.\n *\n * Accepts all standard `<div>` HTML attributes.\n *\n * @returns AlertDescription JSX element.\n *\n * @example\n * ```tsx\n * <AlertContainer scheme=\"info\">\n * <AlertContent>\n * <AlertTitle>Maintenance scheduled</AlertTitle>\n * <AlertDescription>The service will be unavailable on Sunday from 2–4 AM UTC.</AlertDescription>\n * </AlertContent>\n * </AlertContainer>\n * ```\n */\n\nfunction AlertDescription(props: AlertDescriptionProps): JSX.Element {\n\tconst { className: baseClassName, ...rest } = props;\n\tconst className = `arkynAlertDescription ${baseClassName}`;\n\n\treturn <div className={className.trim()} {...rest} />;\n}\n\nexport { AlertDescription };\n"],"mappings":";;;AAuBA,SAAS,EAAiB,GAA2C;CACpE,IAAM,EAAE,WAAW,GAAe,GAAG,MAAS;CAG9C,OAAO,kBAAC,OAAD;EAAK,WAAW,yBAFoB,IAEV,KAAK;EAAG,GAAI;CAAO,CAAA;AACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynAlertDescription{text-align:left;color:var(--text-body);font-size:14px;font-weight:400;line-height:130%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/alert/alertIcon/index.tsx"],"sourcesContent":["import {\n\tAlertTriangle,\n\tCheckCircle2,\n\tInfo,\n\ttype LucideProps,\n\tXCircle,\n} from \"lucide-react\";\n\nimport type { JSX } from \"react\";\nimport { useAlertContainer } from \"../alertContainer\";\nimport \"./styles.css\";\n\ntype AlertIconProps = LucideProps;\n\n/**\n * AlertIcon — renders a scheme-appropriate icon from `AlertContainer` context.\n *\n * - `success` → `CheckCircle2`\n * - `danger` → `XCircle`\n * - `warning` → `AlertTriangle`\n * - `info` → `Info`\n *\n * Must be placed inside an `AlertContainer`. Accepts all Lucide icon props.\n *\n * @returns The scheme-matched Lucide icon element.\n *\n * @example\n * ```tsx\n * <AlertContainer scheme=\"danger\">\n * <AlertIcon />\n * <AlertContent>\n * <AlertTitle>Payment failed</AlertTitle>\n * <AlertDescription>Please check your card details.</AlertDescription>\n * </AlertContent>\n * </AlertContainer>\n * ```\n */\nfunction AlertIcon(props: AlertIconProps): JSX.Element {\n\tconst { className: baseClassName, ...rest } = props;\n\tconst { scheme } = useAlertContainer();\n\n\tconst className = `arkynAlertIcon ${scheme} ${baseClassName}`;\n\n\tswitch (scheme) {\n\t\tcase \"success\":\n\t\t\treturn <CheckCircle2 className={className} {...rest} />;\n\t\tcase \"danger\":\n\t\t\treturn <XCircle className={className} {...rest} />;\n\t\tcase \"warning\":\n\t\t\treturn <AlertTriangle className={className} {...rest} />;\n\t\tcase \"info\":\n\t\t\treturn <Info className={className} {...rest} />;\n\t}\n}\n\nexport { AlertIcon };\n"],"mappings":";;;;;AAqCA,SAAS,EAAU,GAAoC;CACtD,IAAM,EAAE,WAAW,GAAe,GAAG,MAAS,GACxC,EAAE,cAAW,EAAkB,GAE/B,IAAY,kBAAkB,EAAO,GAAG;CAE9C,QAAQ,GAAR;EACC,KAAK,WACJ,OAAO,kBAAC,GAAD;GAAyB;GAAW,GAAI;EAAO,CAAA;EACvD,KAAK,UACJ,OAAO,kBAAC,GAAD;GAAoB;GAAW,GAAI;EAAO,CAAA;EAClD,KAAK,WACJ,OAAO,kBAAC,GAAD;GAA0B;GAAW,GAAI;EAAO,CAAA;EACxD,KAAK,QACJ,OAAO,kBAAC,GAAD;GAAiB;GAAW,GAAI;EAAO,CAAA;CAChD;AACD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
@layer arkyn{.arkynAlertIcon{min-width:28px;max-width:28px;min-height:28px;max-height:28px}.arkynAlertIcon.danger{color:rgb(var(--spotlight-danger))}.arkynAlertIcon.success{color:rgb(var(--spotlight-success))}.arkynAlertIcon.info{color:rgb(var(--spotlight-info))}.arkynAlertIcon.warning{color:rgb(var(--spotlight-warning))}}
|
|
2
|
+
|
|
3
|
+
@layer arkyn{.arkynAlertContainer{border:1px solid #0000;border-radius:6px;align-items:start;gap:16px;padding:16px;display:flex}.arkynAlertContainer.nonExistsAlertTitle{align-items:center}.arkynAlertContainer.danger{background:rgb(var(--spotlight-danger-foreground));border-color:rgb(var(--spotlight-danger))}.arkynAlertContainer.success{background:rgb(var(--spotlight-success-foreground));border-color:rgb(var(--spotlight-success))}.arkynAlertContainer.info{background:rgb(var(--spotlight-info-foreground));border-color:rgb(var(--spotlight-info))}.arkynAlertContainer.warning{background:rgb(var(--spotlight-warning-foreground));border-color:rgb(var(--spotlight-warning))}}
|
|
4
|
+
|
|
5
|
+
@layer arkyn{.arkynAlertTitle{text-align:left;color:var(--text-heading);font-size:16px;font-weight:600;line-height:130%}}
|
|
6
|
+
|
|
7
|
+
@layer arkyn{.arkynAlertTitle{text-align:left;color:var(--text-heading);font-size:16px;font-weight:600;line-height:130%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/alert/alertTitle/index.tsx"],"sourcesContent":["import type { HTMLAttributes, JSX } from \"react\";\nimport \"./styles.css\";\n\ntype AlertTitleProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * AlertTitle — bold heading for an alert. Place inside `AlertContent`.\n *\n * Its presence is detected by `AlertContainer` to switch the layout from centered to left-aligned.\n * Accepts all standard `<div>` HTML attributes.\n *\n * @returns AlertTitle JSX element.\n *\n * @example\n * ```tsx\n * <AlertContainer scheme=\"danger\">\n * <AlertIcon />\n * <AlertContent>\n * <AlertTitle>Access denied</AlertTitle>\n * <AlertDescription>You don't have permission to view this page.</AlertDescription>\n * </AlertContent>\n * </AlertContainer>\n * ```\n */\nfunction AlertTitle(props: AlertTitleProps): JSX.Element {\n\tconst { className: baseClassName, ...rest } = props;\n\tconst className = `arkynAlertTitle ${baseClassName}`;\n\n\treturn <div className={className.trim()} {...rest} />;\n}\n\nexport { AlertTitle };\n"],"mappings":";;;AAwBA,SAAS,EAAW,GAAqC;CACxD,IAAM,EAAE,WAAW,GAAe,GAAG,MAAS;CAG9C,OAAO,kBAAC,OAAD;EAAK,WAAW,mBAFc,IAEJ,KAAK;EAAG,GAAI;CAAO,CAAA;AACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynAlertTitle{text-align:left;color:var(--text-heading);font-size:16px;font-weight:600;line-height:130%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/audioPlayer/index.tsx"],"sourcesContent":["import { Pause, Play } from \"lucide-react\";\nimport {\n\ttype AudioHTMLAttributes,\n\ttype JSX,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from \"react\";\n\nimport { useSlider } from \"../../hooks/useSlider\";\nimport { Slider } from \"../slider\";\nimport \"./styles.css\";\n\n/** Audio state snapshot passed to play/pause callbacks. */\ntype AudioInformationProps = {\n\t/** Current playback position in seconds. */\n\tcurrentTime: number;\n\t/** Total audio duration in seconds. */\n\ttotalTime: number;\n\t/** Current position formatted as `MM:SS`. */\n\tformattedCurrentTime: string;\n\t/** Total duration formatted as `MM:SS`. */\n\tformattedTotalTime: string;\n};\n\ntype AudioPlayerProps = Omit<\n\tAudioHTMLAttributes<HTMLAudioElement>,\n\t\"onEnded\" | \"src\"\n> & {\n\t/** Audio file URL. Required. */\n\tsrc: string;\n\t/** Disables the play/pause button and the progress slider. @default false */\n\tdisabled?: boolean;\n\t/** Callback fired when playback starts. Receives the current audio state. */\n\tonPlayAudio?: (props: AudioInformationProps) => void;\n\t/** Callback fired when playback is paused. Receives the current audio state. */\n\tonPauseAudio?: (props: AudioInformationProps) => void;\n};\n\n/**\n * AudioPlayer — play/pause controls, a scrubable progress bar, and elapsed/total time display.\n *\n * @param props.src - Audio file URL. Required.\n * @param props.disabled - Disables controls. Default: false\n * @param props.onPlayAudio - Callback fired when playback starts.\n * @param props.onPauseAudio - Callback fired when playback is paused.\n *\n * **...Other valid HTML properties for `<audio>` (except `onEnded` and `src`)**\n *\n * @returns AudioPlayer JSX element.\n *\n * @example\n * ```tsx\n * // Basic\n * <AudioPlayer src=\"/audio/episode.mp3\" />\n *\n * // With play/pause callbacks\n * <AudioPlayer\n * src=\"/audio/episode.mp3\"\n * onPlayAudio={(info) => console.log(\"Playing at\", info.formattedCurrentTime)}\n * onPauseAudio={(info) => console.log(\"Paused at\", info.formattedCurrentTime)}\n * />\n * ```\n */\nfunction AudioPlayer(props: AudioPlayerProps): JSX.Element {\n\tconst { onPlayAudio, onPauseAudio, disabled, style, ...rest } = props;\n\n\tconst [sliderValue, setSliderValue] = useSlider(0);\n\tconst [isPlaying, setIsPlaying] = useState(false);\n\tconst [isDragging, setIsDragging] = useState(false);\n\n\tconst audioReference = useRef<HTMLAudioElement>(null);\n\n\tconst currentTime = audioReference.current?.currentTime || 0;\n\tconst totalTime = audioReference.current?.duration || 0;\n\n\tconst formattedCurrentTime = formatTime(currentTime);\n\tconst formattedTotalTime = formatTime(totalTime);\n\n\tconst audioInformation: AudioInformationProps = {\n\t\ttotalTime,\n\t\tcurrentTime,\n\t\tformattedCurrentTime,\n\t\tformattedTotalTime,\n\t};\n\n\tfunction formatTime(time?: number): string {\n\t\tif (!time) return \"00:00\";\n\n\t\tconst minutes = Math.floor(time / 60);\n\t\tconst seconds = Math.floor(time % 60);\n\n\t\tconst formattedMinutes = String(minutes).padStart(2, \"0\");\n\t\tconst formattedSeconds = String(seconds).padStart(2, \"0\");\n\n\t\treturn `${formattedMinutes}:${formattedSeconds}`;\n\t}\n\n\tfunction handlePlayAudio(): void {\n\t\tconst audioElement = audioReference.current;\n\t\tif (!audioElement) return;\n\t\tif (props.onPlayAudio) props.onPlayAudio(audioInformation);\n\t\taudioElement.play();\n\t\tsetIsPlaying(true);\n\t}\n\n\tfunction handlePauseAudio(): void {\n\t\tconst audioElement = audioReference.current;\n\t\tif (!audioElement) return;\n\t\tif (props.onPauseAudio) props.onPauseAudio(audioInformation);\n\t\taudioElement.pause();\n\t\tsetIsPlaying(false);\n\t}\n\n\tfunction handleToggleAudio(): void {\n\t\tif (isPlaying) handlePauseAudio();\n\t\telse handlePlayAudio();\n\t}\n\n\tfunction handleSliderChange(value: number): void {\n\t\tconst audioElement = audioReference.current;\n\t\tif (!audioElement) return;\n\n\t\tconst totalTime = audioElement.duration;\n\t\tconst currentTime = (value / 100) * totalTime;\n\n\t\taudioElement.currentTime = currentTime;\n\t}\n\n\tif (isDragging || !isPlaying) {\n\t\taudioReference.current?.pause();\n\t} else if (isPlaying) {\n\t\taudioReference.current?.play();\n\t}\n\n\tuseEffect(() => {\n\t\tconst audioElement = audioReference.current;\n\t\tif (!audioElement) return;\n\n\t\tconst handleTimeUpdate = () => {\n\t\t\tconst totalTime = audioElement.duration;\n\t\t\tconst currentTime = audioElement.currentTime;\n\n\t\t\tconst value = (currentTime / totalTime) * 100;\n\t\t\tsetSliderValue(value);\n\t\t};\n\n\t\taudioElement.addEventListener(\"timeupdate\", handleTimeUpdate);\n\n\t\treturn () => {\n\t\t\taudioElement.removeEventListener(\"timeupdate\", handleTimeUpdate);\n\t\t};\n\t}, [setSliderValue]);\n\n\treturn (\n\t\t<div className=\"arkynAudioPlayer\" style={style}>\n\t\t\t<audio\n\t\t\t\t{...rest}\n\t\t\t\tref={audioReference}\n\t\t\t\tsrc={props.src || undefined}\n\t\t\t\tonEnded={handlePauseAudio}\n\t\t\t/>\n\n\t\t\t<button type=\"button\" disabled={disabled} onClick={handleToggleAudio}>\n\t\t\t\t{isPlaying && <Pause />}\n\t\t\t\t{!isPlaying && <Play />}\n\t\t\t</button>\n\n\t\t\t<p>{formattedCurrentTime}</p>\n\n\t\t\t<Slider\n\t\t\t\tvalue={sliderValue}\n\t\t\t\tonChange={handleSliderChange}\n\t\t\t\tonDragging={setIsDragging}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\n\t\t\t<p>{formattedTotalTime}</p>\n\t\t</div>\n\t);\n}\n\nexport { AudioPlayer };\n"],"mappings":";;;;;;;AAgEA,SAAS,EAAY,GAAsC;CAC1D,IAAM,EAAE,gBAAa,iBAAc,aAAU,UAAO,GAAG,MAAS,GAE1D,CAAC,GAAa,KAAkB,EAAU,CAAC,GAC3C,CAAC,GAAW,KAAgB,EAAS,EAAK,GAC1C,CAAC,GAAY,KAAiB,EAAS,EAAK,GAE5C,IAAiB,EAAyB,IAAI,GAE9C,IAAc,EAAe,SAAS,eAAe,GACrD,IAAY,EAAe,SAAS,YAAY,GAEhD,IAAuB,EAAW,CAAW,GAC7C,IAAqB,EAAW,CAAS,GAEzC,IAA0C;EAC/C;EACA;EACA;EACA;CACD;CAEA,SAAS,EAAW,GAAuB;EAC1C,IAAI,CAAC,GAAM,OAAO;EAElB,IAAM,IAAU,KAAK,MAAM,IAAO,EAAE,GAC9B,IAAU,KAAK,MAAM,IAAO,EAAE;EAKpC,OAAO,GAHkB,OAAO,CAAO,CAAC,CAAC,SAAS,GAAG,GAG3C,EAAiB,GAFF,OAAO,CAAO,CAAC,CAAC,SAAS,GAAG,GAEvB;CAC/B;CAEA,SAAS,IAAwB;EAChC,IAAM,IAAe,EAAe;EAC/B,MACD,EAAM,eAAa,EAAM,YAAY,CAAgB,GACzD,EAAa,KAAK,GAClB,EAAa,EAAI;CAClB;CAEA,SAAS,IAAyB;EACjC,IAAM,IAAe,EAAe;EAC/B,MACD,EAAM,gBAAc,EAAM,aAAa,CAAgB,GAC3D,EAAa,MAAM,GACnB,EAAa,EAAK;CACnB;CAEA,SAAS,IAA0B;EAClC,AAAI,IAAW,EAAiB,IAC3B,EAAgB;CACtB;CAEA,SAAS,EAAmB,GAAqB;EAChD,IAAM,IAAe,EAAe;EACpC,IAAI,CAAC,GAAc;EAEnB,IAAM,IAAY,EAAa;EAG/B,EAAa,cAFQ,IAAQ,MAAO;CAGrC;CA2BA,OAzBI,KAAc,CAAC,IAClB,EAAe,SAAS,MAAM,IACpB,KACV,EAAe,SAAS,KAAK,GAG9B,QAAgB;EACf,IAAM,IAAe,EAAe;EACpC,IAAI,CAAC,GAAc;EAEnB,IAAM,UAAyB;GAC9B,IAAM,IAAY,EAAa;GAI/B,EAHoB,EAAa,cAEJ,IAAa,GACtB;EACrB;EAIA,OAFA,EAAa,iBAAiB,cAAc,CAAgB,SAE/C;GACZ,EAAa,oBAAoB,cAAc,CAAgB;EAChE;CACD,GAAG,CAAC,CAAc,CAAC,GAGlB,kBAAC,OAAD;EAAK,WAAU;EAA0B;YAAzC;GACC,kBAAC,SAAD;IACC,GAAI;IACJ,KAAK;IACL,KAAK,EAAM,OAAO,KAAA;IAClB,SAAS;GACT,CAAA;GAED,kBAAC,UAAD;IAAQ,MAAK;IAAmB;IAAU,SAAS;cAAnD,CACE,KAAa,kBAAC,GAAD,CAAQ,CAAA,GACrB,CAAC,KAAa,kBAAC,GAAD,CAAO,CAAA,CACf;;GAER,kBAAC,KAAD,EAAA,UAAI,EAAwB,CAAA;GAE5B,kBAAC,GAAD;IACC,OAAO;IACP,UAAU;IACV,YAAY;IACF;GACV,CAAA;GAED,kBAAC,KAAD,EAAA,UAAI,EAAsB,CAAA;EACtB;;AAEP"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
@layer arkyn{.arkynAudioPlayer{align-items:center;gap:8px;min-width:280px;display:flex}.arkynAudioPlayer button{background-color:rgb(var(--spotlight-primary));border:none;border-radius:50%;justify-content:center;align-items:center;min-width:40px;max-width:40px;min-height:40px;max-height:40px;display:flex}.arkynAudioPlayer button:hover:not(:disabled){cursor:pointer;filter:brightness(.95);transition:all .3s}.arkynAudioPlayer button:disabled{cursor:not-allowed;opacity:.2}.arkynAudioPlayer button svg{fill:var(--white);stroke:var(--white);min-width:20px;max-width:20px;min-height:20px;max-height:20px}.arkynAudioPlayer p{text-align:left;color:var(--text-body);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:400;line-height:12px}}
|
|
2
|
+
|
|
3
|
+
@layer arkyn{.arkynSliderTrack{border:1px solid var(--border);background:var(--input-background);cursor:pointer;border-radius:5px;width:100%;max-width:400px;height:6px;position:relative}.arkynSliderTrack.isDragging{cursor:grabbing}.arkynSliderTrack.isDisabled{cursor:not-allowed;opacity:.5}.arkynSliderFill{background:rgb(var(--spotlight-primary));border-radius:5px;height:100%}.arkynSliderThumb{background:rgb(var(--spotlight-primary));border-radius:50%;width:12px;height:12px;position:absolute;top:50%;transform:translate(-50%,-50%)}.arkynSliderTrack.isEnabled .arkynSliderThumb{cursor:grab}.arkynSliderValue{margin-top:10px;font-size:18px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/audioUpload/hasFileContent/index.tsx"],"sourcesContent":["import { RefreshCw } from \"lucide-react\";\n\nimport { AudioPlayer } from \"../../audioPlayer\";\nimport { Button } from \"../../button\";\nimport { Divider } from \"../../divider\";\nimport { IconButton } from \"../../iconButton\";\nimport { Tooltip } from \"../../tooltip\";\n\nimport \"./styles.css\";\n\ntype HasFileContentProps = {\n\tfilePath: string;\n\tdisabled: boolean;\n\tacceptAudio: string;\n\tisLoading: boolean;\n\thandleSelectFile: (file: File) => void;\n\treSendAudio?: () => void;\n\tchangeAudioButtonText: string;\n};\n\nfunction HasFileContent(props: HasFileContentProps) {\n\tconst {\n\t\tfilePath,\n\t\tdisabled,\n\t\tacceptAudio,\n\t\thandleSelectFile,\n\t\tisLoading,\n\t\treSendAudio,\n\t\tchangeAudioButtonText,\n\t} = props;\n\n\tfunction handleClick() {\n\t\tif (disabled) return;\n\n\t\tconst input = document.createElement(\"input\");\n\n\t\tinput.type = \"file\";\n\t\tinput.accept = acceptAudio;\n\n\t\tinput.onchange = (event) => {\n\t\t\tconst file = (event.target as HTMLInputElement).files?.[0];\n\t\t\tif (file) handleSelectFile(file);\n\t\t};\n\n\t\tinput.click();\n\t}\n\n\treturn (\n\t\t<div className=\"arkynAudioUploadHasFileContentContainer\">\n\t\t\t<AudioPlayer src={filePath} />\n\t\t\t<Divider />\n\n\t\t\t<div className=\"arkynAudioUploadButtonsContainer\">\n\t\t\t\t{!!reSendAudio && (\n\t\t\t\t\t<Tooltip orientation=\"bottom\" text=\"Reenviar áudio\">\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"resend image\"\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\tscheme=\"danger\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\tonClick={reSendAudio}\n\t\t\t\t\t\t\ticon={RefreshCw}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\n\t\t\t\t<Button\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t>\n\t\t\t\t\t{changeAudioButtonText}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport { HasFileContent };\n"],"mappings":";;;;;;;;;AAoBA,SAAS,EAAe,GAA4B;CACnD,IAAM,EACL,aACA,aACA,gBACA,qBACA,cACA,gBACA,6BACG;CAEJ,SAAS,IAAc;EACtB,IAAI,GAAU;EAEd,IAAM,IAAQ,SAAS,cAAc,OAAO;EAU5C,AARA,EAAM,OAAO,QACb,EAAM,SAAS,GAEf,EAAM,YAAY,MAAU;GAC3B,IAAM,IAAQ,EAAM,OAA4B,QAAQ;GACxD,AAAI,KAAM,EAAiB,CAAI;EAChC,GAEA,EAAM,MAAM;CACb;CAEA,OACC,kBAAC,OAAD;EAAK,WAAU;YAAf;GACC,kBAAC,GAAD,EAAa,KAAK,EAAW,CAAA;GAC7B,kBAAC,GAAD,CAAU,CAAA;GAEV,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,CAAC,CAAC,KACF,kBAAC,GAAD;KAAS,aAAY;KAAS,MAAK;eAClC,kBAAC,GAAD;MACC,MAAK;MACL,cAAW;MACX,SAAQ;MACR,QAAO;MACP,MAAK;MACM;MACX,SAAS;MACT,MAAM;MACI;KACV,CAAA;IACO,CAAA,GAGV,kBAAC,GAAD;KACY;KACX,SAAS;KACT,SAAQ;KACR,MAAK;KACL,MAAK;KACK;eAET;IACM,CAAA,CACJ;;EACD;;AAEP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynAudioUploadHasFileContentContainer{flex-direction:column;gap:16px;padding:16px;display:flex}.arkynAudioUploadAudioPlayer{align-items:center;gap:8px;display:flex}.arkynAudioUploadAudioPlayer button{background-color:rgb(var(--spotlight-primary));border:none;border-radius:50%;justify-content:center;align-items:center;min-width:40px;max-width:40px;min-height:40px;max-height:40px;display:flex}.arkynAudioUploadAudioPlayer p{text-align:left;color:var(--text-body);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:400;line-height:12px}.arkynAudioUploadButtonsContainer{justify-content:end;align-items:center;gap:8px;display:flex}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/audioUpload/index.tsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport { useForm } from \"../../hooks/useForm\";\nimport { FieldError } from \"../fieldError\";\nimport { FieldLabel } from \"../fieldLabel\";\nimport { FieldWrapper } from \"../fieldWrapper\";\n\nimport { HasFileContent } from \"./hasFileContent\";\nimport { NoFileContent } from \"./noFileContent\";\nimport \"./styles.css\";\n\ntype AudioUploadProps = {\n\t/** Field name for form submission (stores the uploaded audio URL). Required. */\n\tname: string;\n\t/** Server endpoint URL that receives the `multipart/form-data` upload request. Required. */\n\taction: string;\n\t/** Form-data field name used for the file. @default \"file\" */\n\tfileName?: string;\n\t/** HTTP method for the upload request. @default \"POST\" */\n\tmethod?: string;\n\t/** Accepted audio MIME types or extensions (e.g. `\"audio/mp3,audio/wav\"`). @default \"audio/*\" */\n\tacceptAudio?: string;\n\t/** Text displayed in the drag-and-drop zone. @default \"Ou arraste e solte um arquivo de áudio aqui\" */\n\tdropAudioText?: string;\n\t/** Label for the file-picker button before a file is selected. @default \"Selecionar arquivo de áudio\" */\n\tselectAudioButtonText?: string;\n\t/** Label for the file-picker button after a file is selected. @default \"Trocar arquivo de áudio\" */\n\tchangeAudioButtonText?: string;\n\t/** Callback fired after a successful upload. Receives the URL returned by the server. */\n\tonChange?: (url?: string) => void;\n\t/** Property name in the server response that contains the file URL. @default \"url\" */\n\tfileResponseName?: string;\n\t/** Optional label text displayed above the upload area. */\n\tlabel?: string;\n\t/** Displays an asterisk on the label to signal a required field. @default false */\n\tshowAsterisk?: boolean;\n\t/** Disables file selection and upload. @default false */\n\tdisabled?: boolean;\n\t/** Pre-populated audio URL (e.g. an existing recording). @default \"\" */\n\tdefaultValue?: string;\n};\n\n/**\n * AudioUpload — drag-and-drop audio file uploader with server upload and playback preview.\n *\n * Sends the file via `fetch` as `multipart/form-data` and stores the returned URL\n * in a hidden `<input>` for form submission.\n * Integrates with `useForm` to display validation errors by field name.\n *\n * @param props.name - Field name for form submission. Required.\n * @param props.action - Upload endpoint URL. Required.\n * @param props.fileName - Form-data field name for the file. Default: \"file\"\n * @param props.method - HTTP method. Default: \"POST\"\n * @param props.acceptAudio - Accepted MIME types / extensions. Default: \"audio/*\"\n * @param props.onChange - Callback fired after a successful upload — receives the audio URL.\n * @param props.fileResponseName - Server response property containing the URL. Default: \"url\"\n * @param props.label - Label text displayed above the upload area.\n * @param props.showAsterisk - Appends `*` to the label. Default: false\n * @param props.disabled - Disables file selection and upload. Default: false\n * @param props.defaultValue - Pre-populated audio URL.\n *\n * @returns AudioUpload JSX element wrapped in `FieldWrapper`.\n *\n * @example\n * ```tsx\n * // Basic\n * <AudioUpload name=\"audio\" action=\"/api/upload\" />\n *\n * // With label and custom texts\n * <AudioUpload\n * name=\"podcast\"\n * action=\"/api/upload/podcast\"\n * label=\"Podcast Episode\"\n * showAsterisk\n * selectAudioButtonText=\"Choose audio file\"\n * onChange={(url) => setPodcastUrl(url)}\n * />\n * ```\n */\n\nfunction AudioUpload(props: AudioUploadProps) {\n\tconst {\n\t\tname,\n\t\tlabel,\n\t\tfileName = \"file\",\n\t\tmethod = \"POST\",\n\t\tonChange,\n\t\tfileResponseName = \"url\",\n\t\tselectAudioButtonText = \"Selecionar arquivo de áudio\",\n\t\tdropAudioText = \"Ou arraste e solte um arquivo de áudio aqui\",\n\t\tchangeAudioButtonText = \"Trocar arquivo de áudio\",\n\t\tacceptAudio = \"audio/*\",\n\t\taction,\n\t\tdefaultValue = \"\",\n\t\tshowAsterisk = false,\n\t\tdisabled = false,\n\t} = props;\n\n\tconst { fieldErrors } = useForm();\n\tconst fieldError = fieldErrors?.[name];\n\n\tconst [value, setValue] = useState(defaultValue);\n\tconst [error, setError] = useState(\"\");\n\tconst [file, setFile] = useState<File | null>(null);\n\tconst [filePath, setFilePath] = useState(defaultValue);\n\tconst [isLoading, setIsLoading] = useState(false);\n\n\tasync function handleUploadAudio(file: File) {\n\t\tif (disabled) return;\n\n\t\tsetIsLoading(true);\n\t\tsetFile(file);\n\t\tsetError(\"\");\n\n\t\tconst formData = new FormData();\n\t\tformData.append(fileName, file);\n\n\t\tawait fetch(action, { method: method, body: formData })\n\t\t\t.then(async (response) => await response.json())\n\t\t\t.then((response) => {\n\t\t\t\tif (response?.error) setError(response.error);\n\t\t\t\telse setValue(response?.[fileResponseName]);\n\t\t\t\tonChange?.(response?.[fileResponseName]);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tsetError(\"Erro ao enviar audio\");\n\t\t\t})\n\t\t\t.finally(() => setIsLoading(false));\n\t}\n\n\tfunction handleSelectFile(file: File) {\n\t\tif (disabled) return;\n\n\t\tif (file.type.indexOf(\"audio\") === -1) {\n\t\t\tsetError(\"O arquivo selecionado não é um arquivo de áudio\");\n\t\t\treturn;\n\t\t}\n\n\t\tsetFilePath(URL.createObjectURL(file));\n\t\thandleUploadAudio(file);\n\t}\n\n\tconst errorMessage = fieldError || error;\n\n\tconst hasErrorClassName = errorMessage ? \"hasError\" : \"noHasError\";\n\tconst hasImageClassName = filePath ? \"hasAudio\" : \"noHasAudio\";\n\tconst className = `arkynAudioUpload ${hasErrorClassName} ${hasImageClassName}`;\n\n\treturn (\n\t\t<FieldWrapper>\n\t\t\t{label && <FieldLabel showAsterisk={showAsterisk}>{label}</FieldLabel>}\n\n\t\t\t<div className={className}>\n\t\t\t\t<input type=\"hidden\" name={name} value={value || \"\"} />\n\n\t\t\t\t{!filePath && (\n\t\t\t\t\t<NoFileContent\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\tacceptAudio={acceptAudio}\n\t\t\t\t\t\tdropAudioText={dropAudioText}\n\t\t\t\t\t\thandleSelectFile={handleSelectFile}\n\t\t\t\t\t\tselectAudioButtonText={selectAudioButtonText}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{filePath && (\n\t\t\t\t\t<HasFileContent\n\t\t\t\t\t\tfilePath={filePath}\n\t\t\t\t\t\tacceptAudio={acceptAudio}\n\t\t\t\t\t\tchangeAudioButtonText={changeAudioButtonText}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\thandleSelectFile={handleSelectFile}\n\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\treSendAudio={\n\t\t\t\t\t\t\terrorMessage && file ? () => handleUploadAudio(file) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{errorMessage && <FieldError>{errorMessage}</FieldError>}\n\t\t</FieldWrapper>\n\t);\n}\n\nexport { AudioUpload };\n"],"mappings":";;;;;;;;;;AAgFA,SAAS,EAAY,GAAyB;CAC7C,IAAM,EACL,SACA,UACA,cAAW,QACX,YAAS,QACT,aACA,sBAAmB,OACnB,2BAAwB,+BACxB,mBAAgB,+CAChB,2BAAwB,2BACxB,iBAAc,WACd,WACA,kBAAe,IACf,kBAAe,IACf,cAAW,OACR,GAEE,EAAE,mBAAgB,EAAQ,GAC1B,IAAa,IAAc,IAE3B,CAAC,GAAO,KAAY,EAAS,CAAY,GACzC,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,GAAM,KAAW,EAAsB,IAAI,GAC5C,CAAC,GAAU,KAAe,EAAS,CAAY,GAC/C,CAAC,GAAW,KAAgB,EAAS,EAAK;CAEhD,eAAe,EAAkB,GAAY;EAC5C,IAAI,GAAU;EAId,AAFA,EAAa,EAAI,GACjB,EAAQ,CAAI,GACZ,EAAS,EAAE;EAEX,IAAM,IAAW,IAAI,SAAS;EAG9B,AAFA,EAAS,OAAO,GAAU,CAAI,GAE9B,MAAM,MAAM,GAAQ;GAAU;GAAQ,MAAM;EAAS,CAAC,CAAC,CACrD,KAAK,OAAO,MAAa,MAAM,EAAS,KAAK,CAAC,CAAC,CAC/C,MAAM,MAAa;GAGnB,AAFI,GAAU,QAAO,EAAS,EAAS,KAAK,IACvC,EAAS,IAAW,EAAiB,GAC1C,IAAW,IAAW,EAAiB;EACxC,CAAC,CAAC,CACD,OAAO,MAAU;GAEjB,AADA,QAAQ,MAAM,CAAK,GACnB,EAAS,sBAAsB;EAChC,CAAC,CAAC,CACD,cAAc,EAAa,EAAK,CAAC;CACpC;CAEA,SAAS,EAAiB,GAAY;EACjC,QAEJ;OAAI,EAAK,KAAK,QAAQ,OAAO,MAAM,IAAI;IACtC,EAAS,iDAAiD;IAC1D;GACD;GAGA,AADA,EAAY,IAAI,gBAAgB,CAAI,CAAC,GACrC,EAAkB,CAAI;EAHtB;CAID;CAEA,IAAM,IAAe,KAAc;CAMnC,OACC,kBAAC,GAAD,EAAA,UAAA;EACE,KAAS,kBAAC,GAAD;GAA0B;aAAe;EAAkB,CAAA;EAErE,kBAAC,OAAD;GAAgB,WAAA,oBARQ,IAAe,aAAa,aAEE,GAD9B,IAAW,aAAa;aAOhD;IACC,kBAAC,SAAD;KAAO,MAAK;KAAe;KAAM,OAAO,KAAS;IAAK,CAAA;IAErD,CAAC,KACD,kBAAC,GAAD;KACW;KACC;KACE;KACE;KACG;KACK;IACvB,CAAA;IAGD,KACA,kBAAC,GAAD;KACW;KACG;KACU;KACb;KACQ;KACP;KACX,aACC,KAAgB,UAAa,EAAkB,CAAI,IAAI,KAAA;IAExD,CAAA;GAEE;;EAEJ,KAAgB,kBAAC,GAAD,EAAA,UAAa,EAAyB,CAAA;CAC1C,EAAA,CAAA;AAEhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/audioUpload/noFileContent/index.tsx"],"sourcesContent":["import type { DragEvent } from \"react\";\n\nimport { Button } from \"../../button\";\nimport \"./styles.css\";\n\ntype NoFileContentProps = {\n\tdisabled: boolean;\n\tacceptAudio: string;\n\tisLoading: boolean;\n\tselectAudioButtonText: string;\n\tdropAudioText: string;\n\thandleSelectFile: (file: File) => void;\n};\n\nfunction NoFileContent(props: NoFileContentProps) {\n\tconst {\n\t\tdropAudioText,\n\t\tisLoading,\n\t\tacceptAudio,\n\t\thandleSelectFile,\n\t\tselectAudioButtonText,\n\t\tdisabled,\n\t} = props;\n\n\tfunction handleDrop(event: DragEvent<HTMLDivElement>) {\n\t\tif (disabled) return;\n\n\t\tevent.preventDefault();\n\t\tconst file = event.dataTransfer.files[0];\n\t\tif (file) handleSelectFile(file);\n\t}\n\n\tfunction handleClick() {\n\t\tif (disabled) return;\n\n\t\tconst input = document.createElement(\"input\");\n\n\t\tinput.type = \"file\";\n\t\tinput.accept = acceptAudio;\n\n\t\tinput.onchange = (event) => {\n\t\t\tconst file = (event.target as HTMLInputElement).files?.[0];\n\t\t\tif (file) handleSelectFile(file);\n\t\t};\n\n\t\tinput.click();\n\t}\n\n\treturn (\n\t\t<div onDrop={handleDrop} className=\"arkynAudioUploadNoFileContent\">\n\t\t\t<Button\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tonClick={handleClick}\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{selectAudioButtonText}\n\t\t\t</Button>\n\n\t\t\t<p>{dropAudioText}</p>\n\t\t</div>\n\t);\n}\n\nexport { NoFileContent };\n"],"mappings":";;;;AAcA,SAAS,EAAc,GAA2B;CACjD,IAAM,EACL,kBACA,cACA,gBACA,qBACA,0BACA,gBACG;CAEJ,SAAS,EAAW,GAAkC;EACrD,IAAI,GAAU;EAEd,EAAM,eAAe;EACrB,IAAM,IAAO,EAAM,aAAa,MAAM;EACtC,AAAI,KAAM,EAAiB,CAAI;CAChC;CAEA,SAAS,IAAc;EACtB,IAAI,GAAU;EAEd,IAAM,IAAQ,SAAS,cAAc,OAAO;EAU5C,AARA,EAAM,OAAO,QACb,EAAM,SAAS,GAEf,EAAM,YAAY,MAAU;GAC3B,IAAM,IAAQ,EAAM,OAA4B,QAAQ;GACxD,AAAI,KAAM,EAAiB,CAAI;EAChC,GAEA,EAAM,MAAM;CACb;CAEA,OACC,kBAAC,OAAD;EAAK,QAAQ;EAAY,WAAU;YAAnC,CACC,kBAAC,GAAD;GACY;GACX,SAAS;GACT,SAAQ;GACR,MAAK;GACL,MAAK;GACK;aAET;EACM,CAAA,GAER,kBAAC,KAAD,EAAA,UAAI,EAAiB,CAAA,CACjB;;AAEP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynAudioUploadNoFileContent{flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;height:100%;display:flex}.arkynAudioUploadNoFileContent>p{text-align:center;white-space:nowrap;color:var(--text-body);padding:0 24px;font-size:12px;font-weight:400;line-height:12px}}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@layer arkyn{.arkynAudioUpload{border-width:1px;border-color:var(--border);background:var(--input-background);border-radius:8px;outline:1px solid #0000;width:100%;max-width:475px;height:137px}.arkynAudioUpload.hasAudio{border-style:solid}.arkynAudioUpload.noHasAudio{border-style:dashed}.arkynAudioUpload.hasError{border-color:rgb(var(--spotlight-danger));outline-color:rgb(var(--spotlight-danger))}}
|
|
2
|
+
|
|
3
|
+
@layer arkyn{.arkynFieldError{color:rgb(var(--spotlight-danger));font-size:12px;font-weight:600;line-height:12px}}
|
|
4
|
+
|
|
5
|
+
@layer arkyn{.arkynFieldLabel{color:var(--text-body);font-size:14px;font-weight:600;line-height:19.07px}.arkynFieldLabel.asteriskTrue:before{content:"* ";text-align:left;color:rgb(var(--spotlight-danger));font-size:12px;font-weight:600;line-height:16.34px}}
|
|
6
|
+
|
|
7
|
+
@layer arkyn{.arkynFieldWrapper{gap:6px;height:max-content;display:flex}.arkynFieldWrapper.horizontal{flex-direction:row;align-items:center}.arkynFieldWrapper.horizontalReverse{flex-direction:row-reverse;align-items:center;margin-right:auto}.arkynFieldWrapper.vertical{flex-direction:column;align-items:flex-start}}
|
|
8
|
+
|
|
9
|
+
@layer arkyn{.arkynAudioUploadHasFileContentContainer{flex-direction:column;gap:16px;padding:16px;display:flex}.arkynAudioUploadAudioPlayer{align-items:center;gap:8px;display:flex}.arkynAudioUploadAudioPlayer button{background-color:rgb(var(--spotlight-primary));border:none;border-radius:50%;justify-content:center;align-items:center;min-width:40px;max-width:40px;min-height:40px;max-height:40px;display:flex}.arkynAudioUploadAudioPlayer p{text-align:left;color:var(--text-body);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:400;line-height:12px}.arkynAudioUploadButtonsContainer{justify-content:end;align-items:center;gap:8px;display:flex}}
|
|
10
|
+
|
|
11
|
+
@layer arkyn{.arkynAudioPlayer{align-items:center;gap:8px;min-width:280px;display:flex}.arkynAudioPlayer button{background-color:rgb(var(--spotlight-primary));border:none;border-radius:50%;justify-content:center;align-items:center;min-width:40px;max-width:40px;min-height:40px;max-height:40px;display:flex}.arkynAudioPlayer button:hover:not(:disabled){cursor:pointer;filter:brightness(.95);transition:all .3s}.arkynAudioPlayer button:disabled{cursor:not-allowed;opacity:.2}.arkynAudioPlayer button svg{fill:var(--white);stroke:var(--white);min-width:20px;max-width:20px;min-height:20px;max-height:20px}.arkynAudioPlayer p{text-align:left;color:var(--text-body);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:400;line-height:12px}}
|
|
12
|
+
|
|
13
|
+
@layer arkyn{.arkynSliderTrack{border:1px solid var(--border);background:var(--input-background);cursor:pointer;border-radius:5px;width:100%;max-width:400px;height:6px;position:relative}.arkynSliderTrack.isDragging{cursor:grabbing}.arkynSliderTrack.isDisabled{cursor:not-allowed;opacity:.5}.arkynSliderFill{background:rgb(var(--spotlight-primary));border-radius:5px;height:100%}.arkynSliderThumb{background:rgb(var(--spotlight-primary));border-radius:50%;width:12px;height:12px;position:absolute;top:50%;transform:translate(-50%,-50%)}.arkynSliderTrack.isEnabled .arkynSliderThumb{cursor:grab}.arkynSliderValue{margin-top:10px;font-size:18px}}
|
|
14
|
+
|
|
15
|
+
@layer arkyn{.arkynSliderTrack{border:1px solid var(--border);background:var(--input-background);cursor:pointer;border-radius:5px;width:100%;max-width:400px;height:6px;position:relative}.arkynSliderTrack.isDragging{cursor:grabbing}.arkynSliderTrack.isDisabled{cursor:not-allowed;opacity:.5}.arkynSliderFill{background:rgb(var(--spotlight-primary));border-radius:5px;height:100%}.arkynSliderThumb{background:rgb(var(--spotlight-primary));border-radius:50%;width:12px;height:12px;position:absolute;top:50%;transform:translate(-50%,-50%)}.arkynSliderTrack.isEnabled .arkynSliderThumb{cursor:grab}.arkynSliderValue{margin-top:10px;font-size:18px}}
|
|
16
|
+
|
|
17
|
+
@layer arkyn{.arkynButton{background:0 0;border:1px solid #0000;outline:1px solid #0000;position:relative}.arkynButton:hover{cursor:pointer;filter:brightness(.95);transition:all .3s}html.dark .arkynButton:hover{cursor:pointer;filter:brightness(1.2)}.arkynButton:disabled{cursor:not-allowed;opacity:.5}.arkynButton .arkynButtonContent{white-space:nowrap;justify-content:center;align-items:center;display:flex}.arkynButton .arkynButtonSpinner{white-space:nowrap;opacity:0;justify-content:center;align-items:center;display:flex}.arkynButton.solid{color:var(--white)}.arkynButton.solid.primary{background-color:rgb(var(--spotlight-primary))}.arkynButton.solid.secondary{background-color:rgb(var(--spotlight-secondary))}.arkynButton.solid.danger{background-color:rgb(var(--spotlight-danger))}.arkynButton.solid.success{background-color:rgb(var(--spotlight-success))}.arkynButton.solid.warning{background-color:rgb(var(--spotlight-warning))}.arkynButton.solid.info{background-color:rgb(var(--spotlight-info))}.arkynButton.outline{background-color:var(--background-underground);border-color:var(--border)}.arkynButton.outline.primary{color:rgb(var(--spotlight-primary))}.arkynButton.outline.secondary{color:rgb(var(--spotlight-secondary))}.arkynButton.outline.danger{color:rgb(var(--spotlight-danger))}.arkynButton.outline.success{color:rgb(var(--spotlight-success))}.arkynButton.outline.warning{color:rgb(var(--spotlight-warning))}.arkynButton.outline.info{color:rgb(var(--spotlight-info))}.arkynButton.ghost.primary{color:rgb(var(--spotlight-primary));background-color:rgb(var(--spotlight-primary-foreground))}.arkynButton.ghost.secondary{color:rgb(var(--spotlight-secondary));background-color:rgb(var(--spotlight-secondary-foreground))}.arkynButton.ghost.danger{color:rgb(var(--spotlight-danger));background-color:rgb(var(--spotlight-danger-foreground))}.arkynButton.ghost.success{color:rgb(var(--spotlight-success));background-color:rgb(var(--spotlight-success-foreground))}.arkynButton.ghost.warning{color:rgb(var(--spotlight-warning));background-color:rgb(var(--spotlight-warning-foreground))}.arkynButton.ghost.info{color:rgb(var(--spotlight-info));background-color:rgb(var(--spotlight-info-foreground))}.arkynButton.invisible.primary{color:rgb(var(--spotlight-primary))}.arkynButton.invisible.secondary{color:rgb(var(--spotlight-secondary))}.arkynButton.invisible.danger{color:rgb(var(--spotlight-danger))}.arkynButton.invisible.success{color:rgb(var(--spotlight-success))}.arkynButton.invisible.warning{color:rgb(var(--spotlight-warning))}.arkynButton.invisible.info{color:rgb(var(--spotlight-info))}.arkynButton.lg{border-radius:8px;height:44px;padding:0 20px;font-size:14px;font-weight:600;line-height:14px}.arkynButton.lg .arkynButtonContent,.arkynButton.lg .arkynButtonSpinner{gap:16px}.arkynButton.md{border-radius:8px;gap:16px;height:40px;padding:0 16px;font-size:14px;font-weight:600;line-height:14px}.arkynButton.md .arkynButtonContent,.arkynButton.md .arkynButtonSpinner{gap:14px}.arkynButton.sm{border-radius:6px;height:32px;padding:0 16px;font-size:12px;font-weight:600;line-height:12px}.arkynButton.sm .arkynButtonContent,.arkynButton.sm .arkynButtonSpinner{gap:12px}.arkynButton.xs{border-radius:4px;height:24px;padding:0 16px;font-size:10px;font-weight:600;line-height:10px}.arkynButton.xs .arkynButtonContent,.arkynButton.xs .arkynButtonSpinner{gap:8px}.arkynButton .arkynButtonSpinner>svg{animation:2s linear infinite spin}.arkynButton.loadingTextFalse .arkynButtonSpinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.arkynButton.loadingTextTrue .arkynButtonSpinner{max-height:0}.arkynButton.loadingTrue .arkynButtonContent{opacity:0;max-height:0}.arkynButton.loadingTrue .arkynButtonSpinner{opacity:1;max-height:unset}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}
|
|
18
|
+
|
|
19
|
+
@layer arkyn{.arkynDivider{background-color:var(--border);flex:1;display:block}.arkynDivider.horizontal{width:100%;min-height:1px;max-height:1px}.arkynDivider.vertical{min-width:1px;max-width:1px;height:100%}}
|
|
20
|
+
|
|
21
|
+
@layer arkyn{.arkynIconButton{background:0 0;border:1px solid #0000;outline:1px solid #0000;position:relative}.arkynIconButton:hover{cursor:pointer;filter:brightness(.9);transition:all .15s ease-out}html.dark .arkynIconButton:hover{cursor:pointer;filter:brightness(1.2)}.arkynIconButton:disabled{cursor:not-allowed;opacity:.5}.arkynIconButtonContent{justify-content:center;align-items:center;display:flex}.arkynIconButton.solid{color:var(--white)}.arkynIconButton.solid.primary{background-color:rgb(var(--spotlight-primary))}.arkynIconButton.solid.secondary{background-color:rgb(var(--spotlight-secondary))}.arkynIconButton.solid.danger{background-color:rgb(var(--spotlight-danger))}.arkynIconButton.solid.success{background-color:rgb(var(--spotlight-success))}.arkynIconButton.solid.warning{background-color:rgb(var(--spotlight-warning))}.arkynIconButton.solid.info{background-color:rgb(var(--spotlight-info))}.arkynIconButton.outline{background-color:var(--background-underground);border-color:var(--border)}.arkynIconButton.outline.primary{color:rgb(var(--spotlight-primary))}.arkynIconButton.outline.secondary{color:rgb(var(--spotlight-secondary))}.arkynIconButton.outline.danger{color:rgb(var(--spotlight-danger))}.arkynIconButton.outline.success{color:rgb(var(--spotlight-success))}.arkynIconButton.outline.warning{color:rgb(var(--spotlight-warning))}.arkynIconButton.outline.info{color:rgb(var(--spotlight-info))}.arkynIconButton.ghost:hover{filter:brightness(.8)}.arkynIconButton.ghost.primary{color:rgb(var(--spotlight-primary));background-color:rgb(var(--spotlight-primary-foreground))}.arkynIconButton.ghost.secondary{color:rgb(var(--spotlight-secondary));background-color:rgb(var(--spotlight-secondary-foreground))}.arkynIconButton.ghost.danger{color:rgb(var(--spotlight-danger));background-color:rgb(var(--spotlight-danger-foreground))}.arkynIconButton.ghost.success{color:rgb(var(--spotlight-success));background-color:rgb(var(--spotlight-success-foreground))}.arkynIconButton.ghost.warning{color:rgb(var(--spotlight-warning));background-color:rgb(var(--spotlight-warning-foreground))}.arkynIconButton.ghost.info{color:rgb(var(--spotlight-info));background-color:rgb(var(--spotlight-info-foreground))}.arkynIconButton.invisible.primary{color:rgb(var(--spotlight-primary))}.arkynIconButton.invisible.secondary{color:rgb(var(--spotlight-secondary))}.arkynIconButton.invisible.danger{color:rgb(var(--spotlight-danger))}.arkynIconButton.invisible.success{color:rgb(var(--spotlight-success))}.arkynIconButton.invisible.warning{color:rgb(var(--spotlight-warning))}.arkynIconButton.invisible.info{color:rgb(var(--spotlight-info))}.arkynIconButton.lg{border-radius:6px;width:44px;height:44px}.arkynIconButton.md{border-radius:6px;width:40px;height:40px}.arkynIconButton.sm{border-radius:6px;width:32px;height:32px}.arkynIconButton.xs{border-radius:4px;width:24px;height:24px}.arkynIconButtonSpinner{opacity:0;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.arkynIconButtonSpinner>svg{animation:2s linear infinite spin}.arkynIconButton.loadingTrue .arkynIconButtonSpinner{opacity:1}.arkynIconButton.loadingTrue .arkynIconButtonContent{opacity:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}
|
|
22
|
+
|
|
23
|
+
@layer arkyn{.arkynTooltip{display:block;position:relative}.arkynTooltipText{visibility:hidden;opacity:0;white-space:nowrap;color:var(--tooltip-text);background-color:var(--tooltip-background);z-index:9999;border-radius:4px;justify-content:center;align-items:center;font-weight:400;transition:all .15s ease-out;display:flex;position:absolute;transform:translate(-50%,-50%)}.arkynTooltip.lg .arkynTooltipText{padding:8px 12px;font-size:14px;line-height:130%}.arkynTooltip.md .arkynTooltipText{padding:8px 12px;font-size:12px;line-height:130%}.arkynTooltip:hover .arkynTooltipText{opacity:1;visibility:visible}.arkynTooltip.top .arkynTooltipText{bottom:calc(100% + 10px);left:50%;transform:translate(-50%)}.arkynTooltip.top .arkynTooltipText:before{content:"";border-style:solid;border-color:var(--tooltip-background) transparent;border-width:6px 6px 0;position:absolute;top:100%;bottom:20px;left:50%;transform:translate(-50%)}.arkynTooltip.left .arkynTooltipText{top:50%;right:calc(100% + 10px);transform:translateY(-50%)}.arkynTooltip.left .arkynTooltipText:before{content:"";border-style:solid;border-color:transparent var(--tooltip-background);border-width:6px 0 6px 6px;position:absolute;top:50%;left:100%;transform:translateY(-50%)}.arkynTooltip.right .arkynTooltipText{top:50%;left:calc(100% + 10px);transform:translateY(-50%)}.arkynTooltip.right .arkynTooltipText:before{content:"";border-style:solid;border-color:transparent var(--tooltip-background);border-width:6px 6px 6px 0;position:absolute;top:50%;left:0;transform:translate(-100%,-50%)}.arkynTooltip.bottom .arkynTooltipText{top:calc(100% + 10px);left:50%;transform:translate(-50%)}.arkynTooltip.bottom .arkynTooltipText:before{content:"";border-style:solid;border-color:var(--tooltip-background) transparent;border-width:0 6px 6px;position:absolute;top:0;left:50%;transform:translate(-50%,-100%)}}
|
|
24
|
+
|
|
25
|
+
@layer arkyn{.arkynAudioUploadNoFileContent{flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;height:100%;display:flex}.arkynAudioUploadNoFileContent>p{text-align:center;white-space:nowrap;color:var(--text-body);padding:0 24px;font-size:12px;font-weight:400;line-height:12px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/badge/index.tsx"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { IconRenderer } from \"../../services/iconRenderer\";\nimport \"./styles.css\";\n\ntype BadgeProps = HTMLAttributes<HTMLDivElement> & {\n\t/**\n\t * Badge size.\n\t * @default \"lg\"\n\t */\n\tsize?: \"md\" | \"lg\";\n\t/**\n\t * Visual style variant.\n\t * - `solid`: filled background.\n\t * - `outline`: bordered, transparent background.\n\t * - `ghost`: no border, subtle background on hover.\n\t * @default \"ghost\"\n\t */\n\tvariant?: \"solid\" | \"outline\" | \"ghost\";\n\t/**\n\t * Color scheme applied to the badge.\n\t * @default \"primary\"\n\t */\n\tscheme?: \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\t/** Lucide icon rendered to the left of the label. */\n\tleftIcon?: LucideIcon;\n\t/** Lucide icon rendered to the right of the label. */\n\trightIcon?: LucideIcon;\n};\n\n/**\n * Badge — displays labels, statuses, and categorization tags.\n *\n * @param props.size - Badge size (`md` | `lg`). Default: \"lg\"\n * @param props.variant - Visual style variant. Default: \"ghost\"\n * @param props.scheme - Color scheme. Default: \"primary\"\n * @param props.leftIcon - Lucide icon rendered to the left of the label.\n * @param props.rightIcon - Lucide icon rendered to the right of the label.\n *\n * **...Other valid HTML properties for `<div>`**\n *\n * @returns Badge JSX element.\n *\n * @example\n * ```tsx\n * // Basic badge\n * <Badge>New</Badge>\n *\n * // With color scheme\n * <Badge scheme=\"success\">Approved</Badge>\n *\n * // With icon\n * <Badge leftIcon={CheckIcon} scheme=\"success\">Completed</Badge>\n *\n * // Custom size, variant and scheme\n * <Badge size=\"lg\" variant=\"solid\" scheme=\"warning\" rightIcon={AlertIcon}>\n * Warning\n * </Badge>\n * ```\n */\n\nfunction Badge(props: BadgeProps) {\n\tconst {\n\t\tvariant = \"ghost\",\n\t\tscheme = \"primary\",\n\t\tsize = \"lg\",\n\t\tleftIcon,\n\t\trightIcon,\n\t\tclassName: baseClassName = \"\",\n\t\tchildren,\n\t\t...rest\n\t} = props;\n\n\tconst iconSizes = { md: 12, lg: 14 };\n\tconst iconSize = iconSizes[size];\n\n\tconst className = `arkynBadge ${variant} ${scheme} ${size} ${baseClassName}`;\n\n\treturn (\n\t\t<div className={className.trim()} {...rest}>\n\t\t\t<IconRenderer iconSize={iconSize} icon={leftIcon} />\n\t\t\t<p>{children}</p>\n\t\t\t<IconRenderer iconSize={iconSize} icon={rightIcon} />\n\t\t</div>\n\t);\n}\n\nexport { Badge };\n"],"mappings":";;;;AA8DA,SAAS,EAAM,GAAmB;CACjC,IAAM,EACL,aAAU,SACV,YAAS,WACT,UAAO,MACP,aACA,cACA,WAAW,IAAgB,IAC3B,aACA,GAAG,MACA,GAGE,IAAW;EADG,IAAI;EAAI,IAAI;CACf,EAAU;CAI3B,OACC,kBAAC,OAAD;EAAK,WAAW,cAHe,EAAQ,GAAG,EAAO,GAAG,EAAK,GAAG,IAGlC,KAAK;EAAG,GAAI;YAAtC;GACC,kBAAC,GAAD;IAAwB;IAAU,MAAM;GAAW,CAAA;GACnD,kBAAC,KAAD,EAAI,YAAY,CAAA;GAChB,kBAAC,GAAD;IAAwB;IAAU,MAAM;GAAY,CAAA;EAChD;;AAEP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynBadge{white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:4px;width:min-content;display:flex}.arkynBadge.lg{border-radius:12px;height:24px;padding:0 16px}.arkynBadge.lg p{font-size:12px;font-weight:400;line-height:12px}.arkynBadge.md{border-radius:10px;height:20px;padding:0 12px}.arkynBadge.md p{font-size:10px;font-weight:400;line-height:10px}.arkynBadge.solid{color:#fff}.arkynBadge.solid.primary{background-color:rgb(var(--spotlight-primary))}.arkynBadge.solid.secondary{background-color:rgb(var(--spotlight-secondary))}.arkynBadge.solid.danger{background-color:rgb(var(--spotlight-danger))}.arkynBadge.solid.success{background-color:rgb(var(--spotlight-success))}.arkynBadge.solid.warning{background-color:rgb(var(--spotlight-warning))}.arkynBadge.solid.info{background-color:rgb(var(--spotlight-info))}.arkynBadge.outline.primary{border-color:rgb(var(--spotlight-primary))}.arkynBadge.outline.primary p,.arkynBadge.outline.primary svg{color:rgb(var(--spotlight-primary))}.arkynBadge.outline.secondary{border-color:rgb(var(--spotlight-secondary))}.arkynBadge.outline.secondary p,.arkynBadge.outline.secondary svg{color:rgb(var(--spotlight-secondary))}.arkynBadge.outline.danger{border-color:rgb(var(--spotlight-danger))}.arkynBadge.outline.danger p,.arkynBadge.outline.danger svg{color:rgb(var(--spotlight-danger))}.arkynBadge.outline.success{border-color:rgb(var(--spotlight-success))}.arkynBadge.outline.success p,.arkynBadge.outline.success svg{color:rgb(var(--spotlight-success))}.arkynBadge.outline.warning{border-color:rgb(var(--spotlight-warning))}.arkynBadge.outline.warning p,.arkynBadge.outline.warning svg{color:rgb(var(--spotlight-warning))}.arkynBadge.outline.info{border-color:rgb(var(--spotlight-info))}.arkynBadge.outline.info p,.arkynBadge.outline.info svg{color:rgb(var(--spotlight-info))}.arkynBadge.ghost.primary{background-color:rgb(var(--spotlight-primary-foreground))}.arkynBadge.ghost.primary p,.arkynBadge.ghost.primary svg{color:rgb(var(--spotlight-primary))}.arkynBadge.ghost.secondary{background-color:rgb(var(--spotlight-secondary-foreground))}.arkynBadge.ghost.secondary p,.arkynBadge.ghost.secondary svg{color:rgb(var(--spotlight-secondary))}.arkynBadge.ghost.danger{background-color:rgb(var(--spotlight-danger-foreground))}.arkynBadge.ghost.danger p,.arkynBadge.ghost.danger svg{color:rgb(var(--spotlight-danger))}.arkynBadge.ghost.success{background-color:rgb(var(--spotlight-success-foreground))}.arkynBadge.ghost.success p,.arkynBadge.ghost.success svg{color:rgb(var(--spotlight-success))}.arkynBadge.ghost.warning{background-color:rgb(var(--spotlight-warning-foreground))}.arkynBadge.ghost.warning p,.arkynBadge.ghost.warning svg{color:rgb(var(--spotlight-warning))}.arkynBadge.ghost.info{background-color:rgb(var(--spotlight-info-foreground))}.arkynBadge.ghost.info p,.arkynBadge.ghost.info svg{color:rgb(var(--spotlight-info))}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/button/index.tsx"],"sourcesContent":["import { Loader2, type LucideIcon } from \"lucide-react\";\nimport type { ButtonHTMLAttributes } from \"react\";\n\nimport { IconRenderer } from \"../../services/iconRenderer\";\nimport \"./styles.css\";\n\ntype ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n\t/** Shows a spinner and disables the button during async operations. @default false */\n\tisLoading?: boolean;\n\t/** Text displayed beside the spinner when `isLoading` is true. */\n\tloadingText?: string;\n\t/**\n\t * Button size.\n\t * @default \"md\"\n\t */\n\tsize?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n\t/**\n\t * Visual style variant.\n\t * - `solid`: filled background.\n\t * - `outline`: bordered, transparent background.\n\t * - `ghost`: no border, subtle hover.\n\t * - `invisible`: no visual styling.\n\t * @default \"solid\"\n\t */\n\tvariant?: \"solid\" | \"outline\" | \"ghost\" | \"invisible\";\n\t/**\n\t * Color scheme applied to the button.\n\t * @default \"primary\"\n\t */\n\tscheme?: \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\t/** Lucide icon rendered to the left of the label. */\n\tleftIcon?: LucideIcon;\n\t/** Lucide icon rendered to the right of the label. */\n\trightIcon?: LucideIcon;\n};\n\n/**\n * Button — used for user interactions and form submissions.\n *\n * @param props.isLoading - Shows a spinner and disables the button. Default: false\n * @param props.loadingText - Text displayed beside the spinner when loading.\n * @param props.size - Button size (`xs` | `sm` | `md` | `lg`). Default: \"md\"\n * @param props.variant - Visual style variant. Default: \"solid\"\n * @param props.scheme - Color scheme. Default: \"primary\"\n * @param props.leftIcon - Lucide icon rendered to the left of the label.\n * @param props.rightIcon - Lucide icon rendered to the right of the label.\n *\n * **...Other valid HTML properties for `<button>`**\n *\n * @returns Button JSX element.\n *\n * @example\n * ```tsx\n * // Basic button\n * <Button>Click me</Button>\n *\n * // With color scheme\n * <Button scheme=\"success\">Save</Button>\n *\n * // With loading state\n * <Button isLoading loadingText=\"Saving...\">Save</Button>\n *\n * // With icons\n * <Button leftIcon={SaveIcon} scheme=\"success\">Save</Button>\n *\n * // Custom size, variant and scheme\n * <Button size=\"lg\" variant=\"outline\" scheme=\"danger\" rightIcon={TrashIcon}>\n * Delete\n * </Button>\n * ```\n */\n\nfunction Button(props: ButtonProps) {\n\tconst {\n\t\tisLoading = false,\n\t\tscheme = \"primary\",\n\t\tvariant = \"solid\",\n\t\tloadingText,\n\t\tsize = \"md\",\n\t\tleftIcon,\n\t\trightIcon,\n\t\tdisabled,\n\t\tclassName: baseClassName = \"\",\n\t\tchildren,\n\t\t...rest\n\t} = props;\n\n\tconst iconSizes = { xs: 12, sm: 16, md: 20, lg: 24 };\n\tconst iconSize = iconSizes[size];\n\n\tconst loadingClass = isLoading ? \"loadingTrue\" : \"loadingFalse\";\n\tconst loadingTextClass = loadingText ? \"loadingTextTrue\" : \"loadingTextFalse\";\n\n\tconst className = `arkynButton ${loadingClass} ${variant} ${scheme} ${size} ${loadingTextClass} ${baseClassName}`;\n\n\treturn (\n\t\t<button className={className} disabled={disabled || isLoading} {...rest}>\n\t\t\t<div className=\"arkynButtonSpinner\">\n\t\t\t\t<Loader2 size={iconSize} strokeWidth={2.5} />\n\t\t\t\t{loadingText && loadingText}\n\t\t\t</div>\n\n\t\t\t<div className=\"arkynButtonContent\">\n\t\t\t\t<IconRenderer iconSize={iconSize} icon={leftIcon} />\n\t\t\t\t{children}\n\t\t\t\t<IconRenderer iconSize={iconSize} icon={rightIcon} />\n\t\t\t</div>\n\t\t</button>\n\t);\n}\n\nexport { Button };\n"],"mappings":";;;;;AAwEA,SAAS,EAAO,GAAoB;CACnC,IAAM,EACL,eAAY,IACZ,YAAS,WACT,aAAU,SACV,gBACA,UAAO,MACP,aACA,cACA,aACA,WAAW,IAAgB,IAC3B,aACA,GAAG,MACA,GAGE,IAAW;EADG,IAAI;EAAI,IAAI;EAAI,IAAI;EAAI,IAAI;CAC/B,EAAU;CAO3B,OACC,kBAAC,UAAD;EAAmB,WAAA,eANC,IAAY,gBAAgB,eAGH,GAAG,EAAQ,GAAG,EAAO,GAAG,EAAK,GAFlD,IAAc,oBAAoB,mBAEoC,GAAG;EAGnE,UAAU,KAAY;EAAW,GAAI;YAAnE,CACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,GAAD;IAAS,MAAM;IAAU,aAAa;GAAM,CAAA,GAC3C,KAAe,CACZ;MAEL,kBAAC,OAAD;GAAK,WAAU;aAAf;IACC,kBAAC,GAAD;KAAwB;KAAU,MAAM;IAAW,CAAA;IAClD;IACD,kBAAC,GAAD;KAAwB;KAAU,MAAM;IAAY,CAAA;GAChD;IACE;;AAEV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynButton{background:0 0;border:1px solid #0000;outline:1px solid #0000;position:relative}.arkynButton:hover{cursor:pointer;filter:brightness(.95);transition:all .3s}html.dark .arkynButton:hover{cursor:pointer;filter:brightness(1.2)}.arkynButton:disabled{cursor:not-allowed;opacity:.5}.arkynButton .arkynButtonContent{white-space:nowrap;justify-content:center;align-items:center;display:flex}.arkynButton .arkynButtonSpinner{white-space:nowrap;opacity:0;justify-content:center;align-items:center;display:flex}.arkynButton.solid{color:var(--white)}.arkynButton.solid.primary{background-color:rgb(var(--spotlight-primary))}.arkynButton.solid.secondary{background-color:rgb(var(--spotlight-secondary))}.arkynButton.solid.danger{background-color:rgb(var(--spotlight-danger))}.arkynButton.solid.success{background-color:rgb(var(--spotlight-success))}.arkynButton.solid.warning{background-color:rgb(var(--spotlight-warning))}.arkynButton.solid.info{background-color:rgb(var(--spotlight-info))}.arkynButton.outline{background-color:var(--background-underground);border-color:var(--border)}.arkynButton.outline.primary{color:rgb(var(--spotlight-primary))}.arkynButton.outline.secondary{color:rgb(var(--spotlight-secondary))}.arkynButton.outline.danger{color:rgb(var(--spotlight-danger))}.arkynButton.outline.success{color:rgb(var(--spotlight-success))}.arkynButton.outline.warning{color:rgb(var(--spotlight-warning))}.arkynButton.outline.info{color:rgb(var(--spotlight-info))}.arkynButton.ghost.primary{color:rgb(var(--spotlight-primary));background-color:rgb(var(--spotlight-primary-foreground))}.arkynButton.ghost.secondary{color:rgb(var(--spotlight-secondary));background-color:rgb(var(--spotlight-secondary-foreground))}.arkynButton.ghost.danger{color:rgb(var(--spotlight-danger));background-color:rgb(var(--spotlight-danger-foreground))}.arkynButton.ghost.success{color:rgb(var(--spotlight-success));background-color:rgb(var(--spotlight-success-foreground))}.arkynButton.ghost.warning{color:rgb(var(--spotlight-warning));background-color:rgb(var(--spotlight-warning-foreground))}.arkynButton.ghost.info{color:rgb(var(--spotlight-info));background-color:rgb(var(--spotlight-info-foreground))}.arkynButton.invisible.primary{color:rgb(var(--spotlight-primary))}.arkynButton.invisible.secondary{color:rgb(var(--spotlight-secondary))}.arkynButton.invisible.danger{color:rgb(var(--spotlight-danger))}.arkynButton.invisible.success{color:rgb(var(--spotlight-success))}.arkynButton.invisible.warning{color:rgb(var(--spotlight-warning))}.arkynButton.invisible.info{color:rgb(var(--spotlight-info))}.arkynButton.lg{border-radius:8px;height:44px;padding:0 20px;font-size:14px;font-weight:600;line-height:14px}.arkynButton.lg .arkynButtonContent,.arkynButton.lg .arkynButtonSpinner{gap:16px}.arkynButton.md{border-radius:8px;gap:16px;height:40px;padding:0 16px;font-size:14px;font-weight:600;line-height:14px}.arkynButton.md .arkynButtonContent,.arkynButton.md .arkynButtonSpinner{gap:14px}.arkynButton.sm{border-radius:6px;height:32px;padding:0 16px;font-size:12px;font-weight:600;line-height:12px}.arkynButton.sm .arkynButtonContent,.arkynButton.sm .arkynButtonSpinner{gap:12px}.arkynButton.xs{border-radius:4px;height:24px;padding:0 16px;font-size:10px;font-weight:600;line-height:10px}.arkynButton.xs .arkynButtonContent,.arkynButton.xs .arkynButtonSpinner{gap:8px}.arkynButton .arkynButtonSpinner>svg{animation:2s linear infinite spin}.arkynButton.loadingTextFalse .arkynButtonSpinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.arkynButton.loadingTextTrue .arkynButtonSpinner{max-height:0}.arkynButton.loadingTrue .arkynButtonContent{opacity:0;max-height:0}.arkynButton.loadingTrue .arkynButtonSpinner{opacity:1;max-height:unset}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_calendarProvider.js","names":[],"sources":["../../../../src/components/calendar/_calendarProvider.tsx"],"sourcesContent":["import { createContext, type ReactNode, useContext, useState } from \"react\";\nimport { type CalendarMatrix, ViewService } from \"./_viewService\";\n\ntype CalendarContextProps = {\n\tvalueDate: Date[];\n\tviewDate: Date;\n\tcurrentDate: string;\n\tcurrentDay: string;\n\tcurrentMonth: string;\n\tcurrentYear: string;\n\tlistWeek: string[];\n\tlistMonths: { label: string; value: string }[];\n\tlistYears: { label: string; value: string }[];\n\tlistMatrix: CalendarMatrix;\n\tchangeDay: (day: number, month: number, year: number) => void;\n\tchangeMonth: (month: number) => void;\n\tchangeYear: (year: number) => void;\n\tnextMonth: () => void;\n\tpreviousMonth: () => void;\n};\n\ntype SingleCalendarProviderProps = {\n\tchildren: ReactNode;\n\tcalendarType: \"single\";\n\tlanguage?: string;\n\tonChangeView?: (date: Date) => void;\n\tdefaultValue?: Date;\n\tonChange?: (date: Date) => void;\n\tvalue?: Date;\n\tviewValue?: Date;\n\tdefaultViewValue?: Date;\n};\n\ntype RangeCalendarProviderProps = {\n\tchildren: ReactNode;\n\tcalendarType: \"range\";\n\tlanguage?: string;\n\tonChangeView?: (date: Date) => void;\n\tdefaultValue?: [Date, Date];\n\tonChange?: (date: [Date, Date]) => void;\n\tvalue?: [Date, Date];\n\tviewValue?: Date;\n\tdefaultViewValue?: Date;\n};\n\ntype CalendarProviderProps =\n\t| SingleCalendarProviderProps\n\t| RangeCalendarProviderProps;\n\nconst CalendarContext = createContext({} as CalendarContextProps);\n\nfunction useCalendar() {\n\treturn useContext(CalendarContext);\n}\n\nfunction CalendarProvider(props: CalendarProviderProps) {\n\tconst {\n\t\tcalendarType,\n\t\tchildren,\n\t\tdefaultValue: rawDefaultValue,\n\t\tdefaultViewValue = new Date(),\n\t\tlanguage = \"pt-BR\",\n\t\tonChange,\n\t\tonChangeView,\n\t\tvalue,\n\t\tviewValue,\n\t} = props;\n\n\tconst defaultValue: [Date, Date] =\n\t\tcalendarType === \"single\"\n\t\t\t? [rawDefaultValue || new Date(), rawDefaultValue || new Date()]\n\t\t\t: rawDefaultValue || [new Date(), new Date()];\n\n\tconst [rawViewDate, rawSetViewDate] = useState(defaultViewValue);\n\tconst [rawValueDate, rawSetValueDate] = useState<[Date, Date]>(defaultValue);\n\n\tconst viewDate = viewValue || rawViewDate;\n\tconst valueDate: [Date, Date] = value\n\t\t? calendarType === \"single\"\n\t\t\t? [value, value]\n\t\t\t: value\n\t\t: rawValueDate;\n\n\tconst viewService = new ViewService();\n\n\tfunction setValueDate(value: [Date, Date]) {\n\t\tconst normalizedValue: [Date, Date] = [\n\t\t\tnew Date(value[0]),\n\t\t\tnew Date(value[1]),\n\t\t];\n\n\t\tif (onChange && calendarType === \"range\") {\n\t\t\tonChange(normalizedValue);\n\t\t}\n\n\t\tif (onChange && calendarType === \"single\") {\n\t\t\tonChange(normalizedValue[0]);\n\t\t}\n\n\t\trawSetValueDate(normalizedValue);\n\t}\n\n\tfunction setViewDate(date: Date) {\n\t\tif (onChangeView) onChangeView(date);\n\t\trawSetViewDate(date);\n\t}\n\n\treturn (\n\t\t<CalendarContext.Provider\n\t\t\tvalue={{\n\t\t\t\tvalueDate,\n\t\t\t\tviewDate,\n\t\t\t\tcurrentDate: viewDate.toLocaleDateString(language).slice(3),\n\t\t\t\tcurrentDay: viewService.currentDay(viewDate),\n\t\t\t\tcurrentMonth: viewService.currentMonth(viewDate),\n\t\t\t\tcurrentYear: viewService.currentYear(viewDate),\n\t\t\t\tlistWeek: viewService.listWeek(language),\n\t\t\t\tlistMonths: viewService.listMonths(viewDate, language),\n\t\t\t\tlistYears: viewService.listYears(100),\n\t\t\t\tlistMatrix: viewService.listMatrix(viewDate, valueDate),\n\t\t\t\tchangeDay: (day, month, year) =>\n\t\t\t\t\tviewService.changeDay(\n\t\t\t\t\t\tday,\n\t\t\t\t\t\tmonth,\n\t\t\t\t\t\tyear,\n\t\t\t\t\t\tcalendarType,\n\t\t\t\t\t\tvalueDate,\n\t\t\t\t\t\tsetValueDate,\n\t\t\t\t\t\tsetViewDate,\n\t\t\t\t\t),\n\t\t\t\tchangeMonth: (month) =>\n\t\t\t\t\tviewService.changeMonth(month, viewDate, setViewDate),\n\t\t\t\tchangeYear: (year) =>\n\t\t\t\t\tviewService.changeYear(year, viewDate, setViewDate),\n\t\t\t\tnextMonth: () => viewService.nextMonth(viewDate, setViewDate),\n\t\t\t\tpreviousMonth: () => viewService.previousMonth(viewDate, setViewDate),\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</CalendarContext.Provider>\n\t);\n}\n\nexport { CalendarProvider, useCalendar };\n"],"mappings":";;;;AAiDA,IAAM,IAAkB,EAAc,CAAC,CAAyB;AAEhE,SAAS,IAAc;CACtB,OAAO,EAAW,CAAe;AAClC;AAEA,SAAS,EAAiB,GAA8B;CACvD,IAAM,EACL,iBACA,aACA,cAAc,GACd,sCAAmB,IAAI,KAAK,GAC5B,cAAW,SACX,aACA,iBACA,UACA,iBACG,GAEE,IACL,MAAiB,WACd,CAAC,qBAAmB,IAAI,KAAK,GAAG,qBAAmB,IAAI,KAAK,CAAC,IAC7D,KAAmB,iBAAC,IAAI,KAAK,mBAAG,IAAI,KAAK,CAAC,GAExC,CAAC,GAAa,KAAkB,EAAS,CAAgB,GACzD,CAAC,GAAc,KAAmB,EAAuB,CAAY,GAErE,IAAW,KAAa,GACxB,IAA0B,IAC7B,MAAiB,WAChB,CAAC,GAAO,CAAK,IACb,IACD,GAEG,IAAc,IAAI,EAAY;CAEpC,SAAS,EAAa,GAAqB;EAC1C,IAAM,IAAgC,CACrC,IAAI,KAAK,EAAM,EAAE,GACjB,IAAI,KAAK,EAAM,EAAE,CAClB;EAUA,AARI,KAAY,MAAiB,WAChC,EAAS,CAAe,GAGrB,KAAY,MAAiB,YAChC,EAAS,EAAgB,EAAE,GAG5B,EAAgB,CAAe;CAChC;CAEA,SAAS,EAAY,GAAY;EAEhC,AADI,KAAc,EAAa,CAAI,GACnC,EAAe,CAAI;CACpB;CAEA,OACC,kBAAC,EAAgB,UAAjB;EACC,OAAO;GACN;GACA;GACA,aAAa,EAAS,mBAAmB,CAAQ,CAAC,CAAC,MAAM,CAAC;GAC1D,YAAY,EAAY,WAAW,CAAQ;GAC3C,cAAc,EAAY,aAAa,CAAQ;GAC/C,aAAa,EAAY,YAAY,CAAQ;GAC7C,UAAU,EAAY,SAAS,CAAQ;GACvC,YAAY,EAAY,WAAW,GAAU,CAAQ;GACrD,WAAW,EAAY,UAAU,GAAG;GACpC,YAAY,EAAY,WAAW,GAAU,CAAS;GACtD,YAAY,GAAK,GAAO,MACvB,EAAY,UACX,GACA,GACA,GACA,GACA,GACA,GACA,CACD;GACD,cAAc,MACb,EAAY,YAAY,GAAO,GAAU,CAAW;GACrD,aAAa,MACZ,EAAY,WAAW,GAAM,GAAU,CAAW;GACnD,iBAAiB,EAAY,UAAU,GAAU,CAAW;GAC5D,qBAAqB,EAAY,cAAc,GAAU,CAAW;EACrE;EAEC;CACwB,CAAA;AAE5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_viewService.js","names":[],"sources":["../../../../src/components/calendar/_viewService.ts"],"sourcesContent":["import { formatToCapitalizeFirstWordLetter } from \"@arkyn/shared\";\n\ntype CalendarCell = {\n\tday: number;\n\tmonth: number;\n\tyear: number;\n\tdayType: \"checkedDay\" | \"middleDay\" | \"uncheckedDay\";\n\tdayOwner: \"previous\" | \"current\" | \"next\";\n};\n\ntype CalendarMatrix = CalendarCell[][];\n\nclass ViewService {\n\tcurrentDay(viewDate: Date) {\n\t\treturn String(viewDate.getDate()).padStart(2, \"0\");\n\t}\n\n\tcurrentMonth(viewDate: Date) {\n\t\treturn String(viewDate.getMonth() + 1).padStart(2, \"0\");\n\t}\n\n\tcurrentYear(viewDate: Date) {\n\t\treturn String(viewDate.getFullYear());\n\t}\n\n\tcapitalize(text: string) {\n\t\treturn formatToCapitalizeFirstWordLetter(text);\n\t}\n\n\tparseDayType(\n\t\tday: number,\n\t\tmonth: number,\n\t\tyear: number,\n\t\tvalueDate: [Date, Date],\n\t): \"checkedDay\" | \"middleDay\" | \"uncheckedDay\" {\n\t\tconst firstDateDay = valueDate[0].getDate();\n\t\tconst firstDateMonth = valueDate[0].getMonth();\n\t\tconst firstDateYear = valueDate[0].getFullYear();\n\n\t\tconst secondDateDay = valueDate[1].getDate();\n\t\tconst secondDateMonth = valueDate[1].getMonth();\n\t\tconst secondDateYear = valueDate[1].getFullYear();\n\n\t\tconst firstDate = new Date(firstDateYear, firstDateMonth, firstDateDay);\n\t\tconst secondDate = new Date(secondDateYear, secondDateMonth, secondDateDay);\n\t\tconst currentDate = new Date(year, month, day);\n\n\t\tif (firstDate.getTime() === currentDate.getTime()) return \"checkedDay\";\n\t\tif (secondDate.getTime() === currentDate.getTime()) return \"checkedDay\";\n\t\tif (currentDate > firstDate && currentDate < secondDate) return \"middleDay\";\n\t\treturn \"uncheckedDay\";\n\t}\n\n\tlistWeek(language: string) {\n\t\tconst weekDays = [];\n\t\tconst firstSundayUtc = new Date(Date.UTC(2023, 0, 1));\n\n\t\tfor (let i = 0; i < 7; i++) {\n\t\t\tconst day = new Date(firstSundayUtc);\n\t\t\tday.setUTCDate(firstSundayUtc.getUTCDate() + i);\n\t\t\tconst dayName = day.toLocaleDateString(language, {\n\t\t\t\tweekday: \"short\",\n\t\t\t\ttimeZone: \"UTC\",\n\t\t\t});\n\t\t\tweekDays.push(dayName);\n\t\t}\n\n\t\treturn weekDays;\n\t}\n\n\tlistMonths(viewDate: Date, language: string) {\n\t\tconst monthsByNavigatorLanguage = new Intl.DateTimeFormat(language, {\n\t\t\tmonth: \"long\",\n\t\t});\n\n\t\treturn Array.from({ length: 12 }, (_, i) => {\n\t\t\tconst date = new Date(viewDate.getFullYear(), i, 1);\n\t\t\tconst label = monthsByNavigatorLanguage.format(date);\n\t\t\treturn {\n\t\t\t\tlabel: this.capitalize(label),\n\t\t\t\tvalue: String(i).padStart(2, \"0\"),\n\t\t\t};\n\t\t});\n\t}\n\n\tlistYears(lastYears: number) {\n\t\tconst currentYear = new Date().getFullYear();\n\n\t\treturn Array.from({ length: lastYears + 1 }, (_, i) => {\n\t\t\tconst year = currentYear - lastYears + i;\n\t\t\treturn { label: String(year), value: String(year) };\n\t\t}).reverse();\n\t}\n\n\tlistMatrix(viewDate: Date, valueDate: [Date, Date]) {\n\t\tconst year = viewDate.getFullYear();\n\t\tconst monthIndex = viewDate.getMonth();\n\n\t\tconst firstDayOfMonth = new Date(year, monthIndex, 1);\n\t\tconst firstWeekday = firstDayOfMonth.getDay();\n\n\t\tconst daysInCurrentMonth = new Date(year, monthIndex + 1, 0).getDate();\n\t\tconst daysInPreviousMonth = new Date(year, monthIndex, 0).getDate();\n\n\t\tconst totalCells = Math.ceil((firstWeekday + daysInCurrentMonth) / 7) * 7;\n\n\t\tconst weeks: CalendarMatrix = [];\n\t\tlet currentMonthDay = 1;\n\t\tlet nextMonthDay = 1;\n\n\t\tfor (let i = 0; i < totalCells; i++) {\n\t\t\tconst weekIndex = Math.floor(i / 7);\n\t\t\tif (!weeks[weekIndex]) weeks[weekIndex] = [];\n\n\t\t\tif (i < firstWeekday) {\n\t\t\t\tconst day = daysInPreviousMonth - (firstWeekday - i - 1);\n\t\t\t\tconst month = monthIndex === 0 ? 11 : monthIndex - 1;\n\t\t\t\tconst cellYear = monthIndex === 0 ? year - 1 : year;\n\n\t\t\t\tweeks[weekIndex].push({\n\t\t\t\t\tday,\n\t\t\t\t\tmonth,\n\t\t\t\t\tyear: cellYear,\n\t\t\t\t\tdayOwner: \"previous\",\n\t\t\t\t\tdayType: this.parseDayType(day, month, cellYear, valueDate),\n\t\t\t\t});\n\t\t\t} else if (currentMonthDay <= daysInCurrentMonth) {\n\t\t\t\tweeks[weekIndex].push({\n\t\t\t\t\tday: currentMonthDay,\n\t\t\t\t\tmonth: monthIndex,\n\t\t\t\t\tyear: year,\n\t\t\t\t\tdayOwner: \"current\",\n\t\t\t\t\tdayType: this.parseDayType(\n\t\t\t\t\t\tcurrentMonthDay,\n\t\t\t\t\t\tmonthIndex,\n\t\t\t\t\t\tyear,\n\t\t\t\t\t\tvalueDate,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t\tcurrentMonthDay++;\n\t\t\t} else {\n\t\t\t\tconst month = monthIndex === 11 ? 0 : monthIndex + 1;\n\t\t\t\tconst cellYear = monthIndex === 11 ? year + 1 : year;\n\n\t\t\t\tweeks[weekIndex].push({\n\t\t\t\t\tday: nextMonthDay,\n\t\t\t\t\tmonth,\n\t\t\t\t\tyear: cellYear,\n\t\t\t\t\tdayOwner: \"next\",\n\t\t\t\t\tdayType: this.parseDayType(nextMonthDay, month, cellYear, valueDate),\n\t\t\t\t});\n\t\t\t\tnextMonthDay++;\n\t\t\t}\n\t\t}\n\n\t\treturn weeks;\n\t}\n\n\tchangeDay(\n\t\tday: number,\n\t\tmonth: number,\n\t\tyear: number,\n\t\tcalendarType: \"single\" | \"range\",\n\t\tvalueDate: [Date, Date],\n\t\tsetValueDate: (date: [Date, Date]) => void,\n\t\tsetViewDate: (date: Date) => void,\n\t) {\n\t\tconst normalizeDate = (date: Date) =>\n\t\t\tnew Date(date.getFullYear(), date.getMonth(), date.getDate());\n\n\t\tconst newDate = normalizeDate(new Date(year, month, day));\n\t\tsetViewDate(newDate);\n\n\t\tif (calendarType === \"single\") {\n\t\t\tsetValueDate([newDate, newDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst startDate = normalizeDate(valueDate[0]);\n\t\tconst endDate = normalizeDate(valueDate[1]);\n\n\t\tconst newDateTime = newDate.getTime();\n\t\tconst startDateTime = startDate.getTime();\n\t\tconst endDateTime = endDate.getTime();\n\n\t\tif (newDateTime === startDateTime) {\n\t\t\tsetValueDate([newDate, newDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (newDateTime === endDateTime) {\n\t\t\tsetValueDate([newDate, newDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (newDate < startDate) {\n\t\t\tsetValueDate([newDate, endDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (newDate > endDate) {\n\t\t\tsetValueDate([startDate, newDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst distanceToStart = Math.abs(newDateTime - startDateTime);\n\t\tconst distanceToEnd = Math.abs(endDateTime - newDateTime);\n\n\t\tif (distanceToStart <= distanceToEnd) {\n\t\t\tsetValueDate([newDate, endDate]);\n\t\t\treturn;\n\t\t}\n\n\t\tsetValueDate([startDate, newDate]);\n\t}\n\n\tchangeMonth(\n\t\tmonth: number,\n\t\tviewDate: Date,\n\t\tsetViewDate: (date: Date) => void,\n\t) {\n\t\tconst nextViewDate = new Date(viewDate);\n\t\tnextViewDate.setMonth(month);\n\t\tsetViewDate(nextViewDate);\n\t}\n\n\tchangeYear(year: number, viewDate: Date, setViewDate: (date: Date) => void) {\n\t\tconst nextViewDate = new Date(viewDate);\n\t\tnextViewDate.setFullYear(year);\n\t\tsetViewDate(nextViewDate);\n\t}\n\n\tnextMonth(viewDate: Date, setViewDate: (date: Date) => void) {\n\t\tconst nextViewDate = new Date(viewDate);\n\t\tnextViewDate.setDate(1);\n\t\tnextViewDate.setMonth(nextViewDate.getMonth() + 1);\n\t\tsetViewDate(nextViewDate);\n\t}\n\n\tpreviousMonth(viewDate: Date, setViewDate: (date: Date) => void) {\n\t\tconst nextViewDate = new Date(viewDate);\n\t\tnextViewDate.setDate(1);\n\t\tnextViewDate.setMonth(nextViewDate.getMonth() - 1);\n\t\tsetViewDate(nextViewDate);\n\t}\n}\n\nexport { type CalendarMatrix, ViewService };\n"],"mappings":";;AAYA,IAAM,IAAN,MAAkB;CACjB,WAAW,GAAgB;EAC1B,OAAO,OAAO,EAAS,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;CAClD;CAEA,aAAa,GAAgB;EAC5B,OAAO,OAAO,EAAS,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;CACvD;CAEA,YAAY,GAAgB;EAC3B,OAAO,OAAO,EAAS,YAAY,CAAC;CACrC;CAEA,WAAW,GAAc;EACxB,OAAO,EAAkC,CAAI;CAC9C;CAEA,aACC,GACA,GACA,GACA,GAC8C;EAC9C,IAAM,IAAe,EAAU,EAAE,CAAC,QAAQ,GACpC,IAAiB,EAAU,EAAE,CAAC,SAAS,GACvC,IAAgB,EAAU,EAAE,CAAC,YAAY,GAEzC,IAAgB,EAAU,EAAE,CAAC,QAAQ,GACrC,IAAkB,EAAU,EAAE,CAAC,SAAS,GACxC,IAAiB,EAAU,EAAE,CAAC,YAAY,GAE1C,IAAY,IAAI,KAAK,GAAe,GAAgB,CAAY,GAChE,IAAa,IAAI,KAAK,GAAgB,GAAiB,CAAa,GACpE,IAAc,IAAI,KAAK,GAAM,GAAO,CAAG;EAK7C,OAHI,EAAU,QAAQ,MAAM,EAAY,QAAQ,KAC5C,EAAW,QAAQ,MAAM,EAAY,QAAQ,IAAU,eACvD,IAAc,KAAa,IAAc,IAAmB,cACzD;CACR;CAEA,SAAS,GAAkB;EAC1B,IAAM,IAAW,CAAC,GACZ,IAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;EAEpD,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;GAC3B,IAAM,IAAM,IAAI,KAAK,CAAc;GACnC,EAAI,WAAW,EAAe,WAAW,IAAI,CAAC;GAC9C,IAAM,IAAU,EAAI,mBAAmB,GAAU;IAChD,SAAS;IACT,UAAU;GACX,CAAC;GACD,EAAS,KAAK,CAAO;EACtB;EAEA,OAAO;CACR;CAEA,WAAW,GAAgB,GAAkB;EAC5C,IAAM,IAA4B,IAAI,KAAK,eAAe,GAAU,EACnE,OAAO,OACR,CAAC;EAED,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;GAC3C,IAAM,IAAO,IAAI,KAAK,EAAS,YAAY,GAAG,GAAG,CAAC,GAC5C,IAAQ,EAA0B,OAAO,CAAI;GACnD,OAAO;IACN,OAAO,KAAK,WAAW,CAAK;IAC5B,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;GACjC;EACD,CAAC;CACF;CAEA,UAAU,GAAmB;EAC5B,IAAM,qBAAc,IAAI,KAAK,EAAA,CAAE,YAAY;EAE3C,OAAO,MAAM,KAAK,EAAE,QAAQ,IAAY,EAAE,IAAI,GAAG,MAAM;GACtD,IAAM,IAAO,IAAc,IAAY;GACvC,OAAO;IAAE,OAAO,OAAO,CAAI;IAAG,OAAO,OAAO,CAAI;GAAE;EACnD,CAAC,CAAC,CAAC,QAAQ;CACZ;CAEA,WAAW,GAAgB,GAAyB;EACnD,IAAM,IAAO,EAAS,YAAY,GAC5B,IAAa,EAAS,SAAS,GAG/B,IAAe,IADO,KAAK,GAAM,GAAY,CAC9B,CAAA,CAAgB,OAAO,GAEtC,IAAqB,IAAI,KAAK,GAAM,IAAa,GAAG,CAAC,CAAC,CAAC,QAAQ,GAC/D,IAAsB,IAAI,KAAK,GAAM,GAAY,CAAC,CAAC,CAAC,QAAQ,GAE5D,IAAa,KAAK,MAAM,IAAe,KAAsB,CAAC,IAAI,GAElE,IAAwB,CAAC,GAC3B,IAAkB,GAClB,IAAe;EAEnB,KAAK,IAAI,IAAI,GAAG,IAAI,GAAY,KAAK;GACpC,IAAM,IAAY,KAAK,MAAM,IAAI,CAAC;GAGlC,IAFK,EAAM,OAAY,EAAM,KAAa,CAAC,IAEvC,IAAI,GAAc;IACrB,IAAM,IAAM,KAAuB,IAAe,IAAI,IAChD,IAAQ,MAAe,IAAI,KAAK,IAAa,GAC7C,IAAW,MAAe,IAAI,IAAO,IAAI;IAE/C,EAAM,EAAU,CAAC,KAAK;KACrB;KACA;KACA,MAAM;KACN,UAAU;KACV,SAAS,KAAK,aAAa,GAAK,GAAO,GAAU,CAAS;IAC3D,CAAC;GACF,OAAO,IAAI,KAAmB,GAa7B,AAZA,EAAM,EAAU,CAAC,KAAK;IACrB,KAAK;IACL,OAAO;IACD;IACN,UAAU;IACV,SAAS,KAAK,aACb,GACA,GACA,GACA,CACD;GACD,CAAC,GACD;QACM;IACN,IAAM,IAAQ,MAAe,KAAK,IAAI,IAAa,GAC7C,IAAW,MAAe,KAAK,IAAO,IAAI;IAShD,AAPA,EAAM,EAAU,CAAC,KAAK;KACrB,KAAK;KACL;KACA,MAAM;KACN,UAAU;KACV,SAAS,KAAK,aAAa,GAAc,GAAO,GAAU,CAAS;IACpE,CAAC,GACD;GACD;EACD;EAEA,OAAO;CACR;CAEA,UACC,GACA,GACA,GACA,GACA,GACA,GACA,GACC;EACD,IAAM,KAAiB,MACtB,IAAI,KAAK,EAAK,YAAY,GAAG,EAAK,SAAS,GAAG,EAAK,QAAQ,CAAC,GAEvD,IAAU,EAAc,IAAI,KAAK,GAAM,GAAO,CAAG,CAAC;EAGxD,IAFA,EAAY,CAAO,GAEf,MAAiB,UAAU;GAC9B,EAAa,CAAC,GAAS,CAAO,CAAC;GAC/B;EACD;EAEA,IAAM,IAAY,EAAc,EAAU,EAAE,GACtC,IAAU,EAAc,EAAU,EAAE,GAEpC,IAAc,EAAQ,QAAQ,GAC9B,IAAgB,EAAU,QAAQ,GAClC,IAAc,EAAQ,QAAQ;EAEpC,IAAI,MAAgB,GAAe;GAClC,EAAa,CAAC,GAAS,CAAO,CAAC;GAC/B;EACD;EAEA,IAAI,MAAgB,GAAa;GAChC,EAAa,CAAC,GAAS,CAAO,CAAC;GAC/B;EACD;EAEA,IAAI,IAAU,GAAW;GACxB,EAAa,CAAC,GAAS,CAAO,CAAC;GAC/B;EACD;EAEA,IAAI,IAAU,GAAS;GACtB,EAAa,CAAC,GAAW,CAAO,CAAC;GACjC;EACD;EAKA,IAHwB,KAAK,IAAI,IAAc,CAG3C,KAFkB,KAAK,IAAI,IAAc,CAEtB,GAAe;GACrC,EAAa,CAAC,GAAS,CAAO,CAAC;GAC/B;EACD;EAEA,EAAa,CAAC,GAAW,CAAO,CAAC;CAClC;CAEA,YACC,GACA,GACA,GACC;EACD,IAAM,IAAe,IAAI,KAAK,CAAQ;EAEtC,AADA,EAAa,SAAS,CAAK,GAC3B,EAAY,CAAY;CACzB;CAEA,WAAW,GAAc,GAAgB,GAAmC;EAC3E,IAAM,IAAe,IAAI,KAAK,CAAQ;EAEtC,AADA,EAAa,YAAY,CAAI,GAC7B,EAAY,CAAY;CACzB;CAEA,UAAU,GAAgB,GAAmC;EAC5D,IAAM,IAAe,IAAI,KAAK,CAAQ;EAGtC,AAFA,EAAa,QAAQ,CAAC,GACtB,EAAa,SAAS,EAAa,SAAS,IAAI,CAAC,GACjD,EAAY,CAAY;CACzB;CAEA,cAAc,GAAgB,GAAmC;EAChE,IAAM,IAAe,IAAI,KAAK,CAAQ;EAGtC,AAFA,EAAa,QAAQ,CAAC,GACtB,EAAa,SAAS,EAAa,SAAS,IAAI,CAAC,GACjD,EAAY,CAAY;CACzB;AACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarContainer/index.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport \"./styles.css\";\n\ntype CalendarContainerProps = {\n\tchildren?: ReactNode;\n};\n\nfunction CalendarContainer({ children }: CalendarContainerProps) {\n\treturn <div className={`arkynCalendarContainer`}>{children}</div>;\n}\n\nexport { CalendarContainer };\n"],"mappings":";;;AAOA,SAAS,EAAkB,EAAE,eAAoC;CAChE,OAAO,kBAAC,OAAD;EAAK,WAAW;EAA2B;CAAc,CAAA;AACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarContainer{border:1px solid var(--border);background-color:var(--background-foreground);border-radius:8px;flex-direction:column;gap:32px;max-width:400px;padding:16px;display:flex}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarHeader/index.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { Select } from \"../../select\";\nimport { useCalendar } from \"../_calendarProvider\";\nimport \"./styles.css\";\n\ntype CalendarHeaderProps = {\n\tbasicMode: boolean;\n};\n\nfunction CalendarHeader({ basicMode }: CalendarHeaderProps) {\n\tconst calendar = useCalendar();\n\n\tif (basicMode) {\n\t\treturn (\n\t\t\t<div className={`arkynCalendarHeader`}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"arkynCalendarButton\"\n\t\t\t\t\tonClick={() => calendar.previousMonth()}\n\t\t\t\t>\n\t\t\t\t\t<ChevronLeft />\n\t\t\t\t</button>\n\n\t\t\t\t<p>{calendar.currentDate}</p>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"arkynCalendarButton\"\n\t\t\t\t\tonClick={() => calendar.nextMonth()}\n\t\t\t\t>\n\t\t\t\t\t<ChevronRight />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={`arkynCalendarHeader`}>\n\t\t\t<div>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"arkynCalendarButton\"\n\t\t\t\t\tonClick={() => calendar.previousMonth()}\n\t\t\t\t>\n\t\t\t\t\t<ChevronLeft />\n\t\t\t\t</button>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"arkynCalendarButton\"\n\t\t\t\t\tonClick={() => calendar.nextMonth()}\n\t\t\t\t>\n\t\t\t\t\t<ChevronRight />\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div>\n\t\t\t\t<Select\n\t\t\t\t\tname=\"calendarMonth\"\n\t\t\t\t\tvariant=\"underline\"\n\t\t\t\t\tclassName=\"calendarMonthSelect\"\n\t\t\t\t\tvalue={calendar.currentMonth}\n\t\t\t\t\toptions={calendar.listMonths}\n\t\t\t\t\tonChange={(value) => calendar.changeMonth(+value)}\n\t\t\t\t/>\n\n\t\t\t\t<Select\n\t\t\t\t\tname=\"calendarYear\"\n\t\t\t\t\tvariant=\"underline\"\n\t\t\t\t\tclassName=\"calendarYearSelect\"\n\t\t\t\t\tvalue={calendar.currentYear}\n\t\t\t\t\toptions={calendar.listYears}\n\t\t\t\t\tonChange={(value) => calendar.changeYear(+value)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport { CalendarHeader };\n"],"mappings":";;;;;;AAUA,SAAS,EAAe,EAAE,gBAAkC;CAC3D,IAAM,IAAW,EAAY;CA0B7B,OAxBI,IAEF,kBAAC,OAAD;EAAK,WAAW;YAAhB;GACC,kBAAC,UAAD;IACC,MAAK;IACL,WAAU;IACV,eAAe,EAAS,cAAc;cAEtC,kBAAC,GAAD,CAAc,CAAA;GACP,CAAA;GAER,kBAAC,KAAD,EAAA,UAAI,EAAS,YAAe,CAAA;GAE5B,kBAAC,UAAD;IACC,MAAK;IACL,WAAU;IACV,eAAe,EAAS,UAAU;cAElC,kBAAC,GAAD,CAAe,CAAA;GACR,CAAA;EACJ;MAKN,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACC,kBAAC,OAAD,EAAA,UAAA,CACC,kBAAC,UAAD;GACC,MAAK;GACL,WAAU;GACV,eAAe,EAAS,cAAc;aAEtC,kBAAC,GAAD,CAAc,CAAA;EACP,CAAA,GAER,kBAAC,UAAD;GACC,MAAK;GACL,WAAU;GACV,eAAe,EAAS,UAAU;aAElC,kBAAC,GAAD,CAAe,CAAA;EACR,CAAA,CACJ,EAAA,CAAA,GAEL,kBAAC,OAAD,EAAA,UAAA,CACC,kBAAC,GAAD;GACC,MAAK;GACL,SAAQ;GACR,WAAU;GACV,OAAO,EAAS;GAChB,SAAS,EAAS;GAClB,WAAW,MAAU,EAAS,YAAY,CAAC,CAAK;EAChD,CAAA,GAED,kBAAC,GAAD;GACC,MAAK;GACL,SAAQ;GACR,WAAU;GACV,OAAO,EAAS;GAChB,SAAS,EAAS;GAClB,WAAW,MAAU,EAAS,WAAW,CAAC,CAAK;EAC/C,CAAA,CACG,EAAA,CAAA,CACD;;AAEP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarHeader{justify-content:space-between;align-items:center;gap:16px;display:flex}.arkynCalendarHeader>p{color:var(--text-body);font-size:14px;font-weight:500}.arkynCalendarHeader .arkynCalendarButton{border:unset;background-color:unset;color:var(--text-muted);cursor:pointer;align-items:center;gap:4px;display:flex}.arkynCalendarHeader .arkynCalendarButton:hover svg{color:rgb(var(--spotlight-primary))}.arkynCalendarHeader>div{align-items:center;gap:12px;display:flex}.arkynCalendarHeader div .arkynSelectContainer{padding:unset;min-width:70px;min-height:24px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarTableBody/index.tsx"],"sourcesContent":["import { useCalendar } from \"../_calendarProvider\";\nimport { CalendarTableTd } from \"../calendarTableTd\";\nimport \"./styles.css\";\n\nfunction CalendarTableBody() {\n\tconst calendar = useCalendar();\n\n\treturn (\n\t\t<tbody className=\"arkynCalendarTableBody\">\n\t\t\t{calendar.listMatrix.map((week, weekIndex) => (\n\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: week position is stable in monthly matrix\n\t\t\t\t<tr key={`week-${weekIndex}`}>\n\t\t\t\t\t{week.map((props, dayIndex) => (\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: day position is stable in week\n\t\t\t\t\t\t<CalendarTableTd key={`day-${weekIndex}-${dayIndex}`} {...props} />\n\t\t\t\t\t))}\n\t\t\t\t</tr>\n\t\t\t))}\n\t\t</tbody>\n\t);\n}\n\nexport { CalendarTableBody };\n"],"mappings":";;;;;AAIA,SAAS,IAAoB;CAG5B,OACC,kBAAC,SAAD;EAAO,WAAU;YAHD,EAId,CAAA,CAAS,WAAW,KAAK,GAAM,MAE/B,kBAAC,MAAD,EAAA,UACE,EAAK,KAAK,GAAO,MAEjB,kBAAC,GAAD,EAAsD,GAAI,EAAQ,GAA5C,OAAO,EAAU,GAAG,GAAwB,CAClE,EACE,GALK,QAAQ,GAKb,CACJ;CACK,CAAA;AAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarTableBody{border-collapse:collapse;border-spacing:0}.arkynCalendarTableBody td p{text-align:center;padding:16px;font-size:14px}.arkynCalendarTableBody tr:first-child td{padding-top:8px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarTableContainer/index.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport \"./styles.css\";\n\ntype CalendarTableContainerProps = {\n\tchildren: ReactNode;\n};\n\nfunction CalendarTableContainer({ children }: CalendarTableContainerProps) {\n\treturn <table className=\"arkynCalendarTableContainer\">{children}</table>;\n}\n\nexport { CalendarTableContainer };\n"],"mappings":";;;AAOA,SAAS,EAAuB,EAAE,eAAyC;CAC1E,OAAO,kBAAC,SAAD;EAAO,WAAU;EAA+B;CAAgB,CAAA;AACxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarTableContainer{border-collapse:collapse;border-spacing:0}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarTableHeader/index.tsx"],"sourcesContent":["import { formatToCapitalizeFirstWordLetter } from \"@arkyn/shared\";\nimport { useCalendar } from \"../_calendarProvider\";\nimport \"./styles.css\";\n\nfunction CalendarTableHeader() {\n\tconst { listWeek } = useCalendar();\n\n\treturn (\n\t\t<thead className=\"arkynCalendarTableHeader\">\n\t\t\t<tr>\n\t\t\t\t{listWeek.map((day) => (\n\t\t\t\t\t<th key={day}>{formatToCapitalizeFirstWordLetter(day)}</th>\n\t\t\t\t))}\n\t\t\t</tr>\n\t\t</thead>\n\t);\n}\n\nexport { CalendarTableHeader };\n"],"mappings":";;;;;AAIA,SAAS,IAAsB;CAC9B,IAAM,EAAE,gBAAa,EAAY;CAEjC,OACC,kBAAC,SAAD;EAAO,WAAU;YAChB,kBAAC,MAAD,EAAA,UACE,EAAS,KAAK,MACd,kBAAC,MAAD,EAAA,UAAe,EAAkC,CAAG,EAAM,GAAjD,CAAiD,CAC1D,EACE,CAAA;CACE,CAAA;AAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarTableHeader th{color:var(--text-muted);padding-bottom:8px;font-size:14px;font-weight:500}.arkynCalendarTableHeader{border-bottom:1px solid var(--border)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/calendar/calendarTableTd/index.tsx"],"sourcesContent":["import { useCalendar } from \"../_calendarProvider\";\nimport \"./styles.css\";\n\ntype CalendarTableTdProps = {\n\tday: number;\n\tmonth: number;\n\tyear: number;\n\tdayType: \"checkedDay\" | \"middleDay\" | \"uncheckedDay\";\n\tdayOwner: \"previous\" | \"current\" | \"next\";\n};\n\nfunction CalendarTableTd(props: CalendarTableTdProps) {\n\tconst { day, month, year, dayOwner, dayType } = props;\n\tconst { changeDay } = useCalendar();\n\n\tfunction isToday() {\n\t\tconst today = new Date();\n\t\treturn (\n\t\t\tday === today.getDate() &&\n\t\t\tmonth === today.getMonth() &&\n\t\t\tyear === today.getFullYear()\n\t\t);\n\t}\n\n\treturn (\n\t\t<td\n\t\t\tonClick={() => changeDay(day, month, year)}\n\t\t\tclassName={`arkynCalendarTableTd ${dayOwner} ${dayType} ${isToday() ? \"today\" : \"\"}`}\n\t\t>\n\t\t\t<div className=\"textGroup\">\n\t\t\t\t<span />\n\t\t\t\t<p>{day}</p>\n\t\t\t</div>\n\t\t</td>\n\t);\n}\n\nexport { CalendarTableTd };\n"],"mappings":";;;;AAWA,SAAS,EAAgB,GAA6B;CACrD,IAAM,EAAE,QAAK,UAAO,SAAM,aAAU,eAAY,GAC1C,EAAE,iBAAc,EAAY;CAElC,SAAS,IAAU;EAClB,IAAM,oBAAQ,IAAI,KAAK;EACvB,OACC,MAAQ,EAAM,QAAQ,KACtB,MAAU,EAAM,SAAS,KACzB,MAAS,EAAM,YAAY;CAE7B;CAEA,OACC,kBAAC,MAAD;EACC,eAAe,EAAU,GAAK,GAAO,CAAI;EACzC,WAAW,wBAAwB,EAAS,GAAG,EAAQ,GAAG,EAAQ,IAAI,UAAU;YAEhF,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,QAAD,CAAO,CAAA,GACP,kBAAC,KAAD,EAAA,UAAI,EAAO,CAAA,CACP;;CACF,CAAA;AAEN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer arkyn{.arkynCalendarTableTd{-webkit-user-select:none;user-select:none;cursor:pointer}.arkynCalendarTableTd p{text-align:center;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;margin:auto;font-size:14px;display:flex}.arkynCalendarTableTd.previous p,.arkynCalendarTableTd.next p{color:var(--text-muted)}.arkynCalendarTableTd.current p{color:var(--text-body)}.arkynCalendarTableTd:hover p{color:rgb(var(--spotlight-primary))}.arkynCalendarTableTd.today:not(.checkedDay) p{color:var(--text-body);background-color:var(--background-underground);filter:brightness(.97);font-weight:500}.arkynCalendarTableTd .textGroup{width:40px;height:40px;margin:auto;position:relative}.arkynCalendarTableTd.checkedDay .textGroup span{content:" ";background-color:rgb(var(--spotlight-primary));z-index:2;border-radius:8px;position:absolute;inset:0}.arkynCalendarTableTd.checkedDay .textGroup p{color:var(--white);z-index:3;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.arkynCalendarTableTd.middleDay .textGroup span{content:" ";background-color:var(--background-underground);filter:brightness(.95);z-index:1;position:absolute;inset:0 -15px}.arkynCalendarTableTd:first-child.middleDay .textGroup span{border-top-left-radius:6px;border-bottom-left-radius:6px;left:0;right:-15px}.arkynCalendarTableTd:last-child.middleDay .textGroup span{border-top-right-radius:6px;border-bottom-right-radius:6px;left:-15px;right:0}.arkynCalendarTableTd.middleDay .textGroup p{color:var(--text-muted);z-index:2;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.arkynCalendarTableTd.current.middleDay .textGroup p{color:var(--text-body)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/calendar/index.tsx"],"sourcesContent":["import { CalendarProvider } from \"./_calendarProvider\";\nimport { CalendarContainer } from \"./calendarContainer\";\nimport { CalendarHeader } from \"./calendarHeader\";\nimport { CalendarTableBody } from \"./calendarTableBody\";\nimport { CalendarTableContainer } from \"./calendarTableContainer\";\nimport { CalendarTableHeader } from \"./calendarTableHeader\";\n\n/**\n * Props for Calendar single-date selection mode.\n */\ntype SingleCalendarProps = {\n\t/** Sets single-date selection mode. */\n\ttype: \"single\";\n\t/**\n\t * Defines the visual/behavioral variant.\n\t * - `basic`: simplified header.\n\t * - `complete`: full navigation experience.\n\t *\n\t * @default \"complete\"\n\t */\n\tvariant?: \"basic\" | \"complete\";\n\t/** Currently selected date. */\n\tvalue?: Date;\n\t/** Initial selected date. */\n\tdefaultValue?: Date;\n\t/** Callback fired when the selected date changes. */\n\tonChange?: (date: Date) => void;\n\t/** Currently focused view date. */\n\tviewValue?: Date;\n\t/** Initial focused view date. */\n\tdefaultViewValue?: Date;\n\t/** Callback fired when the view (month/year) changes. */\n\tonChangeView?: (date: Date) => void;\n};\n\n/**\n * Props for Calendar range selection mode.\n */\ntype RangeCalendarProps = {\n\t/** Sets range selection mode. */\n\ttype: \"range\";\n\t/**\n\t * Defines the visual/behavioral variant.\n\t * - `basic`: simplified header.\n\t * - `complete`: full navigation experience.\n\t *\n\t * @default \"complete\"\n\t */\n\tvariant?: \"basic\" | \"complete\";\n\t/** Currently selected range in `[start, end]` format. */\n\tvalue?: [Date, Date];\n\t/** Initial selected range in `[start, end]` format. */\n\tdefaultValue?: [Date, Date];\n\t/** Callback fired when the selected range changes. */\n\tonChange?: (date: [Date, Date]) => void;\n\t/** Currently focused view date. */\n\tviewValue?: Date;\n\t/** Initial focused view date. */\n\tdefaultViewValue?: Date;\n\t/** Callback fired when the view (month/year) changes. */\n\tonChangeView?: (date: Date) => void;\n};\n\n/**\n * Discriminated union of Calendar props.\n */\ntype CalendarProps = SingleCalendarProps | RangeCalendarProps;\n\n/**\n * Reusable calendar component with support for two selection modes:\n * single date (`single`) and range (`range`).\n *\n * The component encapsulates calendar state and navigation rules through\n * `CalendarProvider`, exposing a simple API for forms, filters,\n * and scheduling flows.\n *\n * @param props Calendar properties (`single` or `range` mode).\n * @returns Calendar UI structure with header and date grid.\n *\n * @example\n * // Single-date selection\n * <Calendar\n * type=\"single\"\n * variant=\"complete\"\n * defaultValue={new Date()}\n * onChange={(date) => {\n * console.log(\"Selected date:\", date);\n * }}\n * onChangeView={(viewDate) => {\n * console.log(\"Current view:\", viewDate);\n * }}\n * />\n *\n * @example\n * // Range selection\n * <Calendar\n * type=\"range\"\n * variant=\"basic\"\n * defaultValue={[new Date(2026, 5, 1), new Date(2026, 5, 15)]}\n * onChange={([start, end]) => {\n * console.log(\"Range:\", start, end);\n * }}\n * onChangeView={(viewDate) => {\n * console.log(\"Focused month:\", viewDate);\n * }}\n * />\n */\nfunction Calendar(props: CalendarProps) {\n\tconst variant = props.variant || \"complete\";\n\n\tif (props.type === \"range\") {\n\t\treturn (\n\t\t\t<CalendarProvider\n\t\t\t\tvalue={props.value}\n\t\t\t\tviewValue={props.viewValue}\n\t\t\t\tdefaultViewValue={props.defaultViewValue}\n\t\t\t\tdefaultValue={props.defaultValue}\n\t\t\t\tcalendarType=\"range\"\n\t\t\t\tonChange={props.onChange}\n\t\t\t\tonChangeView={props.onChangeView}\n\t\t\t>\n\t\t\t\t<CalendarContainer>\n\t\t\t\t\t<CalendarHeader basicMode={variant.includes(\"basic\")} />\n\t\t\t\t\t<CalendarTableContainer>\n\t\t\t\t\t\t<CalendarTableHeader />\n\t\t\t\t\t\t<CalendarTableBody />\n\t\t\t\t\t</CalendarTableContainer>\n\t\t\t\t</CalendarContainer>\n\t\t\t</CalendarProvider>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CalendarProvider\n\t\t\tvalue={props.value}\n\t\t\tviewValue={props.viewValue}\n\t\t\tdefaultViewValue={props.defaultViewValue}\n\t\t\tdefaultValue={props.defaultValue}\n\t\t\tcalendarType=\"single\"\n\t\t\tonChange={props.onChange}\n\t\t\tonChangeView={props.onChangeView}\n\t\t>\n\t\t\t<CalendarContainer>\n\t\t\t\t<CalendarHeader basicMode={variant.includes(\"basic\")} />\n\t\t\t\t<CalendarTableContainer>\n\t\t\t\t\t<CalendarTableHeader />\n\t\t\t\t\t<CalendarTableBody />\n\t\t\t\t</CalendarTableContainer>\n\t\t\t</CalendarContainer>\n\t\t</CalendarProvider>\n\t);\n}\n\nexport { Calendar };\n"],"mappings":";;;;;;;;AA2GA,SAAS,EAAS,GAAsB;CACvC,IAAM,IAAU,EAAM,WAAW;CAwBjC,OAtBI,EAAM,SAAS,UAEjB,kBAAC,GAAD;EACC,OAAO,EAAM;EACb,WAAW,EAAM;EACjB,kBAAkB,EAAM;EACxB,cAAc,EAAM;EACpB,cAAa;EACb,UAAU,EAAM;EAChB,cAAc,EAAM;YAEpB,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD,EAAgB,WAAW,EAAQ,SAAS,OAAO,EAAI,CAAA,GACvD,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD,CAAsB,CAAA,GACtB,kBAAC,GAAD,CAAoB,CAAA,CACG,EAAA,CAAA,CACN,EAAA,CAAA;CACF,CAAA,IAKnB,kBAAC,GAAD;EACC,OAAO,EAAM;EACb,WAAW,EAAM;EACjB,kBAAkB,EAAM;EACxB,cAAc,EAAM;EACpB,cAAa;EACb,UAAU,EAAM;EAChB,cAAc,EAAM;YAEpB,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD,EAAgB,WAAW,EAAQ,SAAS,OAAO,EAAI,CAAA,GACvD,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD,CAAsB,CAAA,GACtB,kBAAC,GAAD,CAAoB,CAAA,CACG,EAAA,CAAA,CACN,EAAA,CAAA;CACF,CAAA;AAEpB"}
|