@loadspark/core 0.0.1
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.md +71 -0
- package/README.md +628 -0
- package/dist/access/accessors.d.ts +22 -0
- package/dist/access/accessors.d.ts.map +1 -0
- package/dist/access/accessors.js +20 -0
- package/dist/access/accessors.js.map +1 -0
- package/dist/access/builders.d.ts +4 -0
- package/dist/access/builders.d.ts.map +1 -0
- package/dist/access/builders.js +26 -0
- package/dist/access/builders.js.map +1 -0
- package/dist/access/index.d.ts +4 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +5 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/roles.d.ts +38 -0
- package/dist/access/roles.d.ts.map +1 -0
- package/dist/access/roles.js +33 -0
- package/dist/access/roles.js.map +1 -0
- package/dist/collections/users/access.d.ts +30 -0
- package/dist/collections/users/access.d.ts.map +1 -0
- package/dist/collections/users/access.js +96 -0
- package/dist/collections/users/access.js.map +1 -0
- package/dist/collections/users/config.d.ts +9 -0
- package/dist/collections/users/config.d.ts.map +1 -0
- package/dist/collections/users/config.js +55 -0
- package/dist/collections/users/config.js.map +1 -0
- package/dist/collections/users/fields.d.ts +4 -0
- package/dist/collections/users/fields.d.ts.map +1 -0
- package/dist/collections/users/fields.js +97 -0
- package/dist/collections/users/fields.js.map +1 -0
- package/dist/collections/users/hooks.d.ts +25 -0
- package/dist/collections/users/hooks.d.ts.map +1 -0
- package/dist/collections/users/hooks.js +50 -0
- package/dist/collections/users/hooks.js.map +1 -0
- package/dist/collections/users/types.d.ts +18 -0
- package/dist/collections/users/types.d.ts.map +1 -0
- package/dist/collections/users/types.js +8 -0
- package/dist/collections/users/types.js.map +1 -0
- package/dist/constants.d.ts +45 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +46 -0
- package/dist/constants.js.map +1 -0
- package/dist/exports/access/index.d.ts +2 -0
- package/dist/exports/access/index.d.ts.map +1 -0
- package/dist/exports/access/index.js +3 -0
- package/dist/exports/access/index.js.map +1 -0
- package/dist/exports/fields/AlertBox/client.d.ts +2 -0
- package/dist/exports/fields/AlertBox/client.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/client.js +3 -0
- package/dist/exports/fields/AlertBox/client.js.map +1 -0
- package/dist/exports/fields/AlertBox/index.d.ts +2 -0
- package/dist/exports/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/index.js +3 -0
- package/dist/exports/fields/AlertBox/index.js.map +1 -0
- package/dist/exports/fields/ColourText/client.d.ts +2 -0
- package/dist/exports/fields/ColourText/client.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/client.js +3 -0
- package/dist/exports/fields/ColourText/client.js.map +1 -0
- package/dist/exports/fields/ColourText/index.d.ts +2 -0
- package/dist/exports/fields/ColourText/index.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/index.js +3 -0
- package/dist/exports/fields/ColourText/index.js.map +1 -0
- package/dist/exports/fields/Combo/client.d.ts +2 -0
- package/dist/exports/fields/Combo/client.d.ts.map +1 -0
- package/dist/exports/fields/Combo/client.js +3 -0
- package/dist/exports/fields/Combo/client.js.map +1 -0
- package/dist/exports/fields/Combo/index.d.ts +2 -0
- package/dist/exports/fields/Combo/index.d.ts.map +1 -0
- package/dist/exports/fields/Combo/index.js +3 -0
- package/dist/exports/fields/Combo/index.js.map +1 -0
- package/dist/exports/fields/Countries/index.d.ts +2 -0
- package/dist/exports/fields/Countries/index.d.ts.map +1 -0
- package/dist/exports/fields/Countries/index.js +3 -0
- package/dist/exports/fields/Countries/index.js.map +1 -0
- package/dist/exports/fields/Number/client.d.ts +2 -0
- package/dist/exports/fields/Number/client.d.ts.map +1 -0
- package/dist/exports/fields/Number/client.js +3 -0
- package/dist/exports/fields/Number/client.js.map +1 -0
- package/dist/exports/fields/Number/index.d.ts +2 -0
- package/dist/exports/fields/Number/index.d.ts.map +1 -0
- package/dist/exports/fields/Number/index.js +3 -0
- package/dist/exports/fields/Number/index.js.map +1 -0
- package/dist/exports/fields/OpeningHours/client.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/client.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/client.js +3 -0
- package/dist/exports/fields/OpeningHours/client.js.map +1 -0
- package/dist/exports/fields/OpeningHours/index.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/index.js +3 -0
- package/dist/exports/fields/OpeningHours/index.js.map +1 -0
- package/dist/exports/fields/Pattern/client.d.ts +2 -0
- package/dist/exports/fields/Pattern/client.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/client.js +3 -0
- package/dist/exports/fields/Pattern/client.js.map +1 -0
- package/dist/exports/fields/Pattern/index.d.ts +2 -0
- package/dist/exports/fields/Pattern/index.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/index.js +3 -0
- package/dist/exports/fields/Pattern/index.js.map +1 -0
- package/dist/exports/fields/Range/client.d.ts +2 -0
- package/dist/exports/fields/Range/client.d.ts.map +1 -0
- package/dist/exports/fields/Range/client.js +3 -0
- package/dist/exports/fields/Range/client.js.map +1 -0
- package/dist/exports/fields/Range/index.d.ts +2 -0
- package/dist/exports/fields/Range/index.d.ts.map +1 -0
- package/dist/exports/fields/Range/index.js +3 -0
- package/dist/exports/fields/Range/index.js.map +1 -0
- package/dist/exports/fields/Telephone/client.d.ts +2 -0
- package/dist/exports/fields/Telephone/client.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/client.js +3 -0
- package/dist/exports/fields/Telephone/client.js.map +1 -0
- package/dist/exports/fields/Telephone/index.d.ts +2 -0
- package/dist/exports/fields/Telephone/index.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/index.js +3 -0
- package/dist/exports/fields/Telephone/index.js.map +1 -0
- package/dist/exports/fields/client.d.ts +2 -0
- package/dist/exports/fields/client.d.ts.map +1 -0
- package/dist/exports/fields/client.js +2 -0
- package/dist/exports/fields/client.js.map +1 -0
- package/dist/exports/fields/index.d.ts +10 -0
- package/dist/exports/fields/index.d.ts.map +1 -0
- package/dist/exports/fields/index.js +11 -0
- package/dist/exports/fields/index.js.map +1 -0
- package/dist/exports/translations/index.d.ts +2 -0
- package/dist/exports/translations/index.d.ts.map +1 -0
- package/dist/exports/translations/index.js +3 -0
- package/dist/exports/translations/index.js.map +1 -0
- package/dist/exports/users/index.d.ts +4 -0
- package/dist/exports/users/index.d.ts.map +1 -0
- package/dist/exports/users/index.js +5 -0
- package/dist/exports/users/index.js.map +1 -0
- package/dist/exports/validations/index.d.ts +4 -0
- package/dist/exports/validations/index.d.ts.map +1 -0
- package/dist/exports/validations/index.js +5 -0
- package/dist/exports/validations/index.js.map +1 -0
- package/dist/fields/AlertBox/Component.d.ts +14 -0
- package/dist/fields/AlertBox/Component.d.ts.map +1 -0
- package/dist/fields/AlertBox/Component.js +32 -0
- package/dist/fields/AlertBox/Component.js.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js +27 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js +35 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js +29 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js.map +1 -0
- package/dist/fields/AlertBox/index.d.ts +76 -0
- package/dist/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/fields/AlertBox/index.js +64 -0
- package/dist/fields/AlertBox/index.js.map +1 -0
- package/dist/fields/AlertBox/styles.css +42 -0
- package/dist/fields/ColourText/Component.d.ts +8 -0
- package/dist/fields/ColourText/Component.d.ts.map +1 -0
- package/dist/fields/ColourText/Component.js +102 -0
- package/dist/fields/ColourText/Component.js.map +1 -0
- package/dist/fields/ColourText/index.d.ts +35 -0
- package/dist/fields/ColourText/index.d.ts.map +1 -0
- package/dist/fields/ColourText/index.js +41 -0
- package/dist/fields/ColourText/index.js.map +1 -0
- package/dist/fields/ColourText/styles.css +21 -0
- package/dist/fields/ColourText/validate.d.ts +3 -0
- package/dist/fields/ColourText/validate.d.ts.map +1 -0
- package/dist/fields/ColourText/validate.js +30 -0
- package/dist/fields/ColourText/validate.js.map +1 -0
- package/dist/fields/Combo/Component.d.ts +16 -0
- package/dist/fields/Combo/Component.d.ts.map +1 -0
- package/dist/fields/Combo/Component.js +105 -0
- package/dist/fields/Combo/Component.js.map +1 -0
- package/dist/fields/Combo/beforeValidate.d.ts +4 -0
- package/dist/fields/Combo/beforeValidate.d.ts.map +1 -0
- package/dist/fields/Combo/beforeValidate.js +30 -0
- package/dist/fields/Combo/beforeValidate.js.map +1 -0
- package/dist/fields/Combo/index.d.ts +58 -0
- package/dist/fields/Combo/index.d.ts.map +1 -0
- package/dist/fields/Combo/index.js +74 -0
- package/dist/fields/Combo/index.js.map +1 -0
- package/dist/fields/Countries/index.d.ts +49 -0
- package/dist/fields/Countries/index.d.ts.map +1 -0
- package/dist/fields/Countries/index.js +59 -0
- package/dist/fields/Countries/index.js.map +1 -0
- package/dist/fields/Number/Component.d.ts +14 -0
- package/dist/fields/Number/Component.d.ts.map +1 -0
- package/dist/fields/Number/Component.js +108 -0
- package/dist/fields/Number/Component.js.map +1 -0
- package/dist/fields/Number/index.d.ts +64 -0
- package/dist/fields/Number/index.d.ts.map +1 -0
- package/dist/fields/Number/index.js +66 -0
- package/dist/fields/Number/index.js.map +1 -0
- package/dist/fields/Number/styles.css +0 -0
- package/dist/fields/OpeningHours/Component.d.ts +7 -0
- package/dist/fields/OpeningHours/Component.d.ts.map +1 -0
- package/dist/fields/OpeningHours/Component.js +161 -0
- package/dist/fields/OpeningHours/Component.js.map +1 -0
- package/dist/fields/OpeningHours/index.d.ts +51 -0
- package/dist/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/fields/OpeningHours/index.js +49 -0
- package/dist/fields/OpeningHours/index.js.map +1 -0
- package/dist/fields/OpeningHours/styles.css +124 -0
- package/dist/fields/OpeningHours/validate.d.ts +3 -0
- package/dist/fields/OpeningHours/validate.d.ts.map +1 -0
- package/dist/fields/OpeningHours/validate.js +39 -0
- package/dist/fields/OpeningHours/validate.js.map +1 -0
- package/dist/fields/Pattern/Component.d.ts +14 -0
- package/dist/fields/Pattern/Component.d.ts.map +1 -0
- package/dist/fields/Pattern/Component.js +88 -0
- package/dist/fields/Pattern/Component.js.map +1 -0
- package/dist/fields/Pattern/index.d.ts +59 -0
- package/dist/fields/Pattern/index.d.ts.map +1 -0
- package/dist/fields/Pattern/index.js +55 -0
- package/dist/fields/Pattern/index.js.map +1 -0
- package/dist/fields/Pattern/styles.css +34 -0
- package/dist/fields/Range/Component.d.ts +13 -0
- package/dist/fields/Range/Component.d.ts.map +1 -0
- package/dist/fields/Range/Component.js +138 -0
- package/dist/fields/Range/Component.js.map +1 -0
- package/dist/fields/Range/index.d.ts +82 -0
- package/dist/fields/Range/index.d.ts.map +1 -0
- package/dist/fields/Range/index.js +63 -0
- package/dist/fields/Range/index.js.map +1 -0
- package/dist/fields/Range/range.scss +138 -0
- package/dist/fields/Range/types.d.ts +5 -0
- package/dist/fields/Range/types.d.ts.map +1 -0
- package/dist/fields/Range/types.js +3 -0
- package/dist/fields/Range/types.js.map +1 -0
- package/dist/fields/Telephone/Component.d.ts +13 -0
- package/dist/fields/Telephone/Component.d.ts.map +1 -0
- package/dist/fields/Telephone/Component.js +92 -0
- package/dist/fields/Telephone/Component.js.map +1 -0
- package/dist/fields/Telephone/index.d.ts +99 -0
- package/dist/fields/Telephone/index.d.ts.map +1 -0
- package/dist/fields/Telephone/index.js +59 -0
- package/dist/fields/Telephone/index.js.map +1 -0
- package/dist/fields/Telephone/validate.d.ts +3 -0
- package/dist/fields/Telephone/validate.d.ts.map +1 -0
- package/dist/fields/Telephone/validate.js +13 -0
- package/dist/fields/Telephone/validate.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/translations/index.d.ts +6 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +92 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/languages/ar.d.ts +576 -0
- package/dist/translations/languages/ar.d.ts.map +1 -0
- package/dist/translations/languages/ar.js +329 -0
- package/dist/translations/languages/ar.js.map +1 -0
- package/dist/translations/languages/az.d.ts +576 -0
- package/dist/translations/languages/az.d.ts.map +1 -0
- package/dist/translations/languages/az.js +329 -0
- package/dist/translations/languages/az.js.map +1 -0
- package/dist/translations/languages/bg.d.ts +576 -0
- package/dist/translations/languages/bg.d.ts.map +1 -0
- package/dist/translations/languages/bg.js +329 -0
- package/dist/translations/languages/bg.js.map +1 -0
- package/dist/translations/languages/bnBd.d.ts +576 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +329 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +576 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +329 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts +576 -0
- package/dist/translations/languages/ca.d.ts.map +1 -0
- package/dist/translations/languages/ca.js +329 -0
- package/dist/translations/languages/ca.js.map +1 -0
- package/dist/translations/languages/cs.d.ts +576 -0
- package/dist/translations/languages/cs.d.ts.map +1 -0
- package/dist/translations/languages/cs.js +329 -0
- package/dist/translations/languages/cs.js.map +1 -0
- package/dist/translations/languages/da.d.ts +576 -0
- package/dist/translations/languages/da.d.ts.map +1 -0
- package/dist/translations/languages/da.js +329 -0
- package/dist/translations/languages/da.js.map +1 -0
- package/dist/translations/languages/de.d.ts +576 -0
- package/dist/translations/languages/de.d.ts.map +1 -0
- package/dist/translations/languages/de.js +329 -0
- package/dist/translations/languages/de.js.map +1 -0
- package/dist/translations/languages/en.d.ts +576 -0
- package/dist/translations/languages/en.d.ts.map +1 -0
- package/dist/translations/languages/en.js +329 -0
- package/dist/translations/languages/en.js.map +1 -0
- package/dist/translations/languages/es.d.ts +576 -0
- package/dist/translations/languages/es.d.ts.map +1 -0
- package/dist/translations/languages/es.js +329 -0
- package/dist/translations/languages/es.js.map +1 -0
- package/dist/translations/languages/et.d.ts +576 -0
- package/dist/translations/languages/et.d.ts.map +1 -0
- package/dist/translations/languages/et.js +329 -0
- package/dist/translations/languages/et.js.map +1 -0
- package/dist/translations/languages/fa.d.ts +576 -0
- package/dist/translations/languages/fa.d.ts.map +1 -0
- package/dist/translations/languages/fa.js +329 -0
- package/dist/translations/languages/fa.js.map +1 -0
- package/dist/translations/languages/fr.d.ts +576 -0
- package/dist/translations/languages/fr.d.ts.map +1 -0
- package/dist/translations/languages/fr.js +329 -0
- package/dist/translations/languages/fr.js.map +1 -0
- package/dist/translations/languages/he.d.ts +576 -0
- package/dist/translations/languages/he.d.ts.map +1 -0
- package/dist/translations/languages/he.js +329 -0
- package/dist/translations/languages/he.js.map +1 -0
- package/dist/translations/languages/hr.d.ts +576 -0
- package/dist/translations/languages/hr.d.ts.map +1 -0
- package/dist/translations/languages/hr.js +329 -0
- package/dist/translations/languages/hr.js.map +1 -0
- package/dist/translations/languages/hu.d.ts +576 -0
- package/dist/translations/languages/hu.d.ts.map +1 -0
- package/dist/translations/languages/hu.js +329 -0
- package/dist/translations/languages/hu.js.map +1 -0
- package/dist/translations/languages/hy.d.ts +576 -0
- package/dist/translations/languages/hy.d.ts.map +1 -0
- package/dist/translations/languages/hy.js +329 -0
- package/dist/translations/languages/hy.js.map +1 -0
- package/dist/translations/languages/id.d.ts +576 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +329 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts +576 -0
- package/dist/translations/languages/is.d.ts.map +1 -0
- package/dist/translations/languages/is.js +329 -0
- package/dist/translations/languages/is.js.map +1 -0
- package/dist/translations/languages/it.d.ts +576 -0
- package/dist/translations/languages/it.d.ts.map +1 -0
- package/dist/translations/languages/it.js +329 -0
- package/dist/translations/languages/it.js.map +1 -0
- package/dist/translations/languages/ja.d.ts +576 -0
- package/dist/translations/languages/ja.d.ts.map +1 -0
- package/dist/translations/languages/ja.js +329 -0
- package/dist/translations/languages/ja.js.map +1 -0
- package/dist/translations/languages/ko.d.ts +576 -0
- package/dist/translations/languages/ko.d.ts.map +1 -0
- package/dist/translations/languages/ko.js +329 -0
- package/dist/translations/languages/ko.js.map +1 -0
- package/dist/translations/languages/lt.d.ts +576 -0
- package/dist/translations/languages/lt.d.ts.map +1 -0
- package/dist/translations/languages/lt.js +329 -0
- package/dist/translations/languages/lt.js.map +1 -0
- package/dist/translations/languages/lv.d.ts +576 -0
- package/dist/translations/languages/lv.d.ts.map +1 -0
- package/dist/translations/languages/lv.js +329 -0
- package/dist/translations/languages/lv.js.map +1 -0
- package/dist/translations/languages/my.d.ts +576 -0
- package/dist/translations/languages/my.d.ts.map +1 -0
- package/dist/translations/languages/my.js +329 -0
- package/dist/translations/languages/my.js.map +1 -0
- package/dist/translations/languages/nb.d.ts +576 -0
- package/dist/translations/languages/nb.d.ts.map +1 -0
- package/dist/translations/languages/nb.js +329 -0
- package/dist/translations/languages/nb.js.map +1 -0
- package/dist/translations/languages/nl.d.ts +576 -0
- package/dist/translations/languages/nl.d.ts.map +1 -0
- package/dist/translations/languages/nl.js +329 -0
- package/dist/translations/languages/nl.js.map +1 -0
- package/dist/translations/languages/pl.d.ts +576 -0
- package/dist/translations/languages/pl.d.ts.map +1 -0
- package/dist/translations/languages/pl.js +329 -0
- package/dist/translations/languages/pl.js.map +1 -0
- package/dist/translations/languages/pt.d.ts +576 -0
- package/dist/translations/languages/pt.d.ts.map +1 -0
- package/dist/translations/languages/pt.js +329 -0
- package/dist/translations/languages/pt.js.map +1 -0
- package/dist/translations/languages/ro.d.ts +576 -0
- package/dist/translations/languages/ro.d.ts.map +1 -0
- package/dist/translations/languages/ro.js +329 -0
- package/dist/translations/languages/ro.js.map +1 -0
- package/dist/translations/languages/rs.d.ts +576 -0
- package/dist/translations/languages/rs.d.ts.map +1 -0
- package/dist/translations/languages/rs.js +329 -0
- package/dist/translations/languages/rs.js.map +1 -0
- package/dist/translations/languages/rsLatin.d.ts +576 -0
- package/dist/translations/languages/rsLatin.d.ts.map +1 -0
- package/dist/translations/languages/rsLatin.js +329 -0
- package/dist/translations/languages/rsLatin.js.map +1 -0
- package/dist/translations/languages/ru.d.ts +576 -0
- package/dist/translations/languages/ru.d.ts.map +1 -0
- package/dist/translations/languages/ru.js +329 -0
- package/dist/translations/languages/ru.js.map +1 -0
- package/dist/translations/languages/sk.d.ts +576 -0
- package/dist/translations/languages/sk.d.ts.map +1 -0
- package/dist/translations/languages/sk.js +329 -0
- package/dist/translations/languages/sk.js.map +1 -0
- package/dist/translations/languages/sl.d.ts +576 -0
- package/dist/translations/languages/sl.d.ts.map +1 -0
- package/dist/translations/languages/sl.js +329 -0
- package/dist/translations/languages/sl.js.map +1 -0
- package/dist/translations/languages/sv.d.ts +576 -0
- package/dist/translations/languages/sv.d.ts.map +1 -0
- package/dist/translations/languages/sv.js +329 -0
- package/dist/translations/languages/sv.js.map +1 -0
- package/dist/translations/languages/ta.d.ts +576 -0
- package/dist/translations/languages/ta.d.ts.map +1 -0
- package/dist/translations/languages/ta.js +329 -0
- package/dist/translations/languages/ta.js.map +1 -0
- package/dist/translations/languages/th.d.ts +576 -0
- package/dist/translations/languages/th.d.ts.map +1 -0
- package/dist/translations/languages/th.js +329 -0
- package/dist/translations/languages/th.js.map +1 -0
- package/dist/translations/languages/tr.d.ts +576 -0
- package/dist/translations/languages/tr.d.ts.map +1 -0
- package/dist/translations/languages/tr.js +329 -0
- package/dist/translations/languages/tr.js.map +1 -0
- package/dist/translations/languages/uk.d.ts +576 -0
- package/dist/translations/languages/uk.d.ts.map +1 -0
- package/dist/translations/languages/uk.js +329 -0
- package/dist/translations/languages/uk.js.map +1 -0
- package/dist/translations/languages/vi.d.ts +576 -0
- package/dist/translations/languages/vi.d.ts.map +1 -0
- package/dist/translations/languages/vi.js +329 -0
- package/dist/translations/languages/vi.js.map +1 -0
- package/dist/translations/languages/zh.d.ts +576 -0
- package/dist/translations/languages/zh.d.ts.map +1 -0
- package/dist/translations/languages/zh.js +329 -0
- package/dist/translations/languages/zh.js.map +1 -0
- package/dist/translations/languages/zhTw.d.ts +576 -0
- package/dist/translations/languages/zhTw.d.ts.map +1 -0
- package/dist/translations/languages/zhTw.js +329 -0
- package/dist/translations/languages/zhTw.js.map +1 -0
- package/dist/types.d.ts +269 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +257 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +32 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +82 -0
- package/dist/utils.js.map +1 -0
- package/dist/validations/dates.d.ts +230 -0
- package/dist/validations/dates.d.ts.map +1 -0
- package/dist/validations/dates.js +254 -0
- package/dist/validations/dates.js.map +1 -0
- package/dist/validations/numbers.d.ts +118 -0
- package/dist/validations/numbers.d.ts.map +1 -0
- package/dist/validations/numbers.js +151 -0
- package/dist/validations/numbers.js.map +1 -0
- package/dist/validations/relationLinkedUser.d.ts +43 -0
- package/dist/validations/relationLinkedUser.d.ts.map +1 -0
- package/dist/validations/relationLinkedUser.js +54 -0
- package/dist/validations/relationLinkedUser.js.map +1 -0
- package/package.json +228 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Copyright (c) 2025 Welle Digital Solutions
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any individual or legal entity
|
|
4
|
+
(the "Licensee") obtaining a copy of this software and associated documentation
|
|
5
|
+
files (the "Software"), to use, copy, modify, merge, publish, and distribute the
|
|
6
|
+
Software, subject to the terms outlined below.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
1. LICENSE GRANT
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
1.1 Free License for Eligible Licensees
|
|
15
|
+
The Software may be used, modified, and distributed at no charge by any
|
|
16
|
+
Licensee whose total annual gross revenue does not exceed USD 250,000.
|
|
17
|
+
|
|
18
|
+
1.2 Commercial License Requirement
|
|
19
|
+
If the Licensee’s annual gross revenue exceeds USD 250,000, the Licensee
|
|
20
|
+
must obtain a paid commercial license. To acquire a commercial license,
|
|
21
|
+
contact: welledigital882@gmail.com
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
2. DEFINITION OF LICENSEE
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
2.1 Individual Licensee
|
|
30
|
+
A natural person using the Software personally or as a sole proprietor.
|
|
31
|
+
|
|
32
|
+
2.2 Entity Licensee
|
|
33
|
+
A company, corporation, partnership, organization, or other legal entity,
|
|
34
|
+
including any subsidiaries, divisions, or other organizational components
|
|
35
|
+
under its ownership or control.
|
|
36
|
+
|
|
37
|
+
2.3 Revenue Attribution
|
|
38
|
+
For entity Licensees, total annual gross revenue shall be calculated at the
|
|
39
|
+
level of the entire legal entity, including all controlled subsidiaries.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
3. ATTRIBUTION REQUIREMENTS
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
3.1 Credit
|
|
48
|
+
The original author(s) must be credited in any public distribution of the
|
|
49
|
+
Software, documentation, or derivative works.
|
|
50
|
+
|
|
51
|
+
3.2 Modifications
|
|
52
|
+
Licensees modifying the Software must clearly indicate that changes have
|
|
53
|
+
been made.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
4. WARRANTY DISCLAIMER
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
62
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
63
|
+
FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
64
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER
|
|
65
|
+
IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN
|
|
66
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
This License constitutes the entire agreement between the parties regarding the
|
|
71
|
+
Software and supersedes all prior or contemporaneous communications.
|
package/README.md
ADDED
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
# @loadspark/core
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
**A comprehensive core plugin for PayloadCMS v3 providing reusable custom fields, access control, validations, translations, and utilities for the loadspark ecosystem.**
|
|
6
|
+
|
|
7
|
+
<br />
|
|
8
|
+
|
|
9
|
+
[](LICENSE.md)
|
|
10
|
+
[](https://loadspark.dev)
|
|
11
|
+
[](https://loadspark.dev)
|
|
12
|
+
|
|
13
|
+
**Quick Links:** [License](#license) • [Documentation](https://loadspark.dev/docs) • [Website](https://loadspark.dev)
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Table of Contents
|
|
20
|
+
|
|
21
|
+
- [Introduction](#introduction)
|
|
22
|
+
- [Features](#features)
|
|
23
|
+
- [Getting Started](#getting-started)
|
|
24
|
+
- [Installation](#installation)
|
|
25
|
+
- [Basic Usage](#basic-usage)
|
|
26
|
+
- [Components](#components)
|
|
27
|
+
- [Custom Fields](#custom-fields)
|
|
28
|
+
- [Access Control](#access-control)
|
|
29
|
+
- [Validations](#validations)
|
|
30
|
+
- [Translations](#translations)
|
|
31
|
+
- [Collections](#collections)
|
|
32
|
+
- [Constants](#constants)
|
|
33
|
+
- [Utils](#utils)
|
|
34
|
+
- [Overrides & Customization](#overrides--customization)
|
|
35
|
+
- [Documentation](#documentation)
|
|
36
|
+
- [Contributing](#contributing)
|
|
37
|
+
- [License](#license)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Introduction
|
|
42
|
+
|
|
43
|
+
`@loadspark/core` is a powerful, production-ready core plugin for **PayloadCMS v3** that provides a comprehensive set of reusable components designed to accelerate development and ensure consistency across loadspark projects. Built with extensibility and type-safety in mind, this plugin serves as the foundation for building robust PayloadCMS applications.
|
|
44
|
+
|
|
45
|
+
The plugin is architected to be **fully overridable** at every level, allowing you to customize and extend functionality while maintaining a solid base. All components are built on top of PayloadCMS's native APIs and follow best practices for type safety, internationalization, and accessibility.
|
|
46
|
+
|
|
47
|
+
### Key Principles
|
|
48
|
+
|
|
49
|
+
- **🔧 Fully Overridable**: Every component can be customized or extended
|
|
50
|
+
- **🌍 i18n Ready**: Built-in support for multiple languages
|
|
51
|
+
- **🛡️ Type Safe**: Full TypeScript support with comprehensive type definitions
|
|
52
|
+
- **♿ Accessible**: Components follow accessibility best practices
|
|
53
|
+
- **📦 Modular**: Import only what you need via subpath exports
|
|
54
|
+
- **🔄 Reusable**: Designed to be the foundation for other loadspark plugins
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
### 🎨 Custom Fields
|
|
61
|
+
|
|
62
|
+
A collection of production-ready custom fields built on top of the [Nouncelabs Custom Fields Plugin](https://github.com/NouanceLabs/payload-better-fields-plugin), each with:
|
|
63
|
+
|
|
64
|
+
- Type-safe configurations
|
|
65
|
+
- Default sensible settings
|
|
66
|
+
- Full override capabilities
|
|
67
|
+
- Comprehensive documentation
|
|
68
|
+
- Built-in validation
|
|
69
|
+
- Accessible UI components
|
|
70
|
+
|
|
71
|
+
### 👥 User Management
|
|
72
|
+
|
|
73
|
+
Pre-configured Users collection with:
|
|
74
|
+
|
|
75
|
+
- Role-based access control (admin, editor, user, system)
|
|
76
|
+
- Overridable field configurations
|
|
77
|
+
- Built-in access rules
|
|
78
|
+
- Automatic first-user admin assignment
|
|
79
|
+
- System user support
|
|
80
|
+
|
|
81
|
+
### 🔐 Access Control
|
|
82
|
+
|
|
83
|
+
Reusable access control functions and builders:
|
|
84
|
+
|
|
85
|
+
- Role-based access checks
|
|
86
|
+
- Field-level access control
|
|
87
|
+
- Collection-level access rules
|
|
88
|
+
- System permission handling
|
|
89
|
+
- Flexible access builders
|
|
90
|
+
|
|
91
|
+
### ✅ Validations
|
|
92
|
+
|
|
93
|
+
Ready-to-use validation functions:
|
|
94
|
+
|
|
95
|
+
- Date validations (past, future, before, after, etc.)
|
|
96
|
+
- Number validations (greater than, less than, etc.)
|
|
97
|
+
- Relation validations
|
|
98
|
+
- i18n-ready error messages
|
|
99
|
+
- Programmatic override support to conditionally skip validations
|
|
100
|
+
|
|
101
|
+
### 🌐 Translations
|
|
102
|
+
|
|
103
|
+
Comprehensive translation system:
|
|
104
|
+
|
|
105
|
+
- Pre-translated labels and messages
|
|
106
|
+
- Support for German, English
|
|
107
|
+
- Validation error translations
|
|
108
|
+
- Field label translations
|
|
109
|
+
- Easy to extend with additional languages
|
|
110
|
+
|
|
111
|
+
### 📊 Constants
|
|
112
|
+
|
|
113
|
+
Reusable constants:
|
|
114
|
+
|
|
115
|
+
- Country codes and labels
|
|
116
|
+
- Common enumerations
|
|
117
|
+
- Type definitions
|
|
118
|
+
|
|
119
|
+
### 🛠️ Utilities
|
|
120
|
+
|
|
121
|
+
Helper functions for common tasks:
|
|
122
|
+
|
|
123
|
+
- Nested object accessors
|
|
124
|
+
- Override rule checking
|
|
125
|
+
- Logging utilities
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Getting Started
|
|
130
|
+
|
|
131
|
+
### Installation
|
|
132
|
+
|
|
133
|
+
Install the package using your preferred package manager:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Using pnpm (recommended)
|
|
137
|
+
pnpm add @loadspark/core
|
|
138
|
+
|
|
139
|
+
# Using npm
|
|
140
|
+
npm install @loadspark/core
|
|
141
|
+
|
|
142
|
+
# Using yarn
|
|
143
|
+
yarn add @loadspark/core
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Peer Dependencies
|
|
147
|
+
|
|
148
|
+
This plugin requires the following peer dependencies:
|
|
149
|
+
|
|
150
|
+
- `payload@3.69.0`
|
|
151
|
+
- `@payloadcms/translations@3.69.0`
|
|
152
|
+
|
|
153
|
+
### Basic Usage
|
|
154
|
+
|
|
155
|
+
#### 1. Add the Plugin to Your Payload Config
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { loadsparkCorePlugin } from '@loadspark/core'
|
|
159
|
+
import { buildConfig } from 'payload'
|
|
160
|
+
|
|
161
|
+
export default buildConfig({
|
|
162
|
+
plugins: [
|
|
163
|
+
loadsparkCorePlugin,
|
|
164
|
+
],
|
|
165
|
+
})
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
#### 2. Use Custom Fields in Your Collections
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import { AlertBoxField, TelephoneField } from '@loadspark/core/fields'
|
|
172
|
+
|
|
173
|
+
export const MyCollection: CollectionConfig = {
|
|
174
|
+
slug: 'my-collection',
|
|
175
|
+
fields: [
|
|
176
|
+
AlertBoxField({
|
|
177
|
+
config: {
|
|
178
|
+
type: 'info',
|
|
179
|
+
message: 'This is an informational alert',
|
|
180
|
+
},
|
|
181
|
+
overrides: {
|
|
182
|
+
name: 'infoAlert',
|
|
183
|
+
},
|
|
184
|
+
}),
|
|
185
|
+
TelephoneField({
|
|
186
|
+
config: {
|
|
187
|
+
defaultCountry: 'us',
|
|
188
|
+
},
|
|
189
|
+
overrides: {
|
|
190
|
+
name: 'phone',
|
|
191
|
+
label: { en: 'Phone Number', de: 'Telefonnummer' },
|
|
192
|
+
},
|
|
193
|
+
}),
|
|
194
|
+
],
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### 3. Use Access Control Functions
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
import { hasAdminPermissions, hasEditorPermissions } from '@loadspark/core/access'
|
|
202
|
+
|
|
203
|
+
export const MyCollection: CollectionConfig = {
|
|
204
|
+
slug: 'my-collection',
|
|
205
|
+
access: {
|
|
206
|
+
read: ({ req: { user } }) => {
|
|
207
|
+
return hasEditorPermissions(user)
|
|
208
|
+
},
|
|
209
|
+
update: ({ req: { user } }) => {
|
|
210
|
+
return hasAdminPermissions(user)
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
#### 4. Use Validations
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
import { future, greaterThan } from '@loadspark/core/validations'
|
|
220
|
+
|
|
221
|
+
export const MyCollection: CollectionConfig = {
|
|
222
|
+
slug: 'my-collection',
|
|
223
|
+
fields: [
|
|
224
|
+
{
|
|
225
|
+
name: 'startDate',
|
|
226
|
+
type: 'date',
|
|
227
|
+
validate: [future()],
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'maxValue',
|
|
231
|
+
type: 'number',
|
|
232
|
+
validate: [
|
|
233
|
+
greaterThan(
|
|
234
|
+
{
|
|
235
|
+
field: 'minValue',
|
|
236
|
+
labels: { en: 'Minimum Value', de: 'Mindestwert' },
|
|
237
|
+
},
|
|
238
|
+
{ override: false },
|
|
239
|
+
),
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Components
|
|
249
|
+
|
|
250
|
+
### Custom Fields
|
|
251
|
+
|
|
252
|
+
The plugin provides a comprehensive set of custom fields, each designed to solve common use cases while remaining fully customizable.
|
|
253
|
+
|
|
254
|
+
| Field Name | Type | Description | Documentation |
|
|
255
|
+
| ---------------- | --------- | ------------------------------------------------- | ---------------------------- |
|
|
256
|
+
| **AlertBox** | custom | Display styled alerts with custom types | [Docs](docs/AlertBox.md) |
|
|
257
|
+
| **ColourText** | text | Text field with color-specific options | [Docs](docs/ColourText.md) |
|
|
258
|
+
| **Combo** | composite | Combine multiple subfields into one field | [Docs](docs/Combo.md) |
|
|
259
|
+
| **Number** | number | Enhanced numeric field with validation | [Docs](docs/Number.md) |
|
|
260
|
+
| **OpeningHours** | custom | Structured opening hours for schedules | [Docs](docs/OpeningHours.md) |
|
|
261
|
+
| **Pattern** | text | Regex-based input validation | [Docs](docs/Pattern.md) |
|
|
262
|
+
| **Range** | number | Slider-based numeric range input | [Docs](docs/Range.md) |
|
|
263
|
+
| **Slug** | text | Auto-generated URL slug with formatting | [Docs](docs/Slug.md) |
|
|
264
|
+
| **Telephone** | text | Phone number field with formatting and validation | [Docs](docs/Telephone.md) |
|
|
265
|
+
|
|
266
|
+
#### Field Override Pattern
|
|
267
|
+
|
|
268
|
+
All custom fields follow a consistent pattern that allows full customization:
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
FieldName({
|
|
272
|
+
config: {
|
|
273
|
+
// Field-specific configuration
|
|
274
|
+
},
|
|
275
|
+
overrides: {
|
|
276
|
+
// Any Payload field property can be overridden
|
|
277
|
+
name: 'customFieldName',
|
|
278
|
+
label: { en: 'Custom Label', de: 'Benutzerdefiniertes Label' },
|
|
279
|
+
admin: {
|
|
280
|
+
condition: (data) => data.someField === 'value',
|
|
281
|
+
},
|
|
282
|
+
// ... any other field properties
|
|
283
|
+
},
|
|
284
|
+
})
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Key Points:**
|
|
288
|
+
|
|
289
|
+
- All fields are **fully overridable** - you can override any Payload field property
|
|
290
|
+
- Field-specific configuration is separated from general field properties
|
|
291
|
+
- Type-safe with full TypeScript support
|
|
292
|
+
- Each field has detailed documentation in the `docs/` folder
|
|
293
|
+
|
|
294
|
+
#### Importing Fields
|
|
295
|
+
|
|
296
|
+
Fields can be imported individually or as a group:
|
|
297
|
+
|
|
298
|
+
```typescript
|
|
299
|
+
// Individual field import
|
|
300
|
+
import { AlertBoxField } from '@loadspark/core/fields/Alox'
|
|
301
|
+
|
|
302
|
+
// All fields
|
|
303
|
+
import { AlertBoxField, TelephoneField, SlugField } from '@loadspark/core/fields'
|
|
304
|
+
|
|
305
|
+
// Client-side components (if needed)
|
|
306
|
+
import { AlertBoxClient } from '@loadspark/core/fields/AlertBox/client'
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Validations
|
|
310
|
+
|
|
311
|
+
The plugin provides reusable validation functions for dates, numbers, and relations.
|
|
312
|
+
|
|
313
|
+
#### Date Validations
|
|
314
|
+
|
|
315
|
+
```typescript
|
|
316
|
+
import {
|
|
317
|
+
after,
|
|
318
|
+
afterOrEqual,
|
|
319
|
+
before,
|
|
320
|
+
beforeOrEqual,
|
|
321
|
+
future,
|
|
322
|
+
futureOrEqual,
|
|
323
|
+
past,
|
|
324
|
+
pastOrEqual,
|
|
325
|
+
} from '@loadspark/core/validations'
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Field vs Field:**
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
{
|
|
332
|
+
name: 'endDate',
|
|
333
|
+
type: 'date',
|
|
334
|
+
validate: [
|
|
335
|
+
after({
|
|
336
|
+
field: 'startDate',
|
|
337
|
+
labels: { en: 'Start Date', de: 'Startdatum' },
|
|
338
|
+
}),
|
|
339
|
+
],
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**Field vs Now:**
|
|
344
|
+
|
|
345
|
+
```typescript
|
|
346
|
+
{
|
|
347
|
+
name: 'publishDate',
|
|
348
|
+
type: 'date',
|
|
349
|
+
validate: [future()], // Must be in the future
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**With Programmatic Override:**
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
{
|
|
357
|
+
name: 'eventDate',
|
|
358
|
+
type: 'date',
|
|
359
|
+
validate: (val, ctx) => {
|
|
360
|
+
return past(undefined, {
|
|
361
|
+
override: ctx.req?.user?.role === 'admin' // Skip validation for admins
|
|
362
|
+
})(val, ctx)
|
|
363
|
+
},
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### Number Validations
|
|
368
|
+
|
|
369
|
+
```typescript
|
|
370
|
+
import {
|
|
371
|
+
greaterThan,
|
|
372
|
+
greaterThanOrEqual,
|
|
373
|
+
lessThan,
|
|
374
|
+
lessThanOrEqual,
|
|
375
|
+
} from '@loadspark/core/validations'
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**Example:**
|
|
379
|
+
|
|
380
|
+
```typescript
|
|
381
|
+
{
|
|
382
|
+
name: 'maxValue',
|
|
383
|
+
type: 'number',
|
|
384
|
+
validate: (val, ctx) => {
|
|
385
|
+
return greaterThan(
|
|
386
|
+
{
|
|
387
|
+
field: 'minValue',
|
|
388
|
+
labels: { en: 'Minimum Value', de: 'Mindestwert' },
|
|
389
|
+
},
|
|
390
|
+
{ override: ctx.req?.user?.role === 'admin' }, // Skip validation conditionally
|
|
391
|
+
)(val, ctx)
|
|
392
|
+
},
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
#### Relation Validations
|
|
397
|
+
|
|
398
|
+
```typescript
|
|
399
|
+
import { relationLinkedUser } from '@loadspark/core/validations'
|
|
400
|
+
|
|
401
|
+
{
|
|
402
|
+
name: 'assignedUser',
|
|
403
|
+
type: 'relationship',
|
|
404
|
+
relationTo: 'users',
|
|
405
|
+
validate: [relationLinkedUser()],
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Key Features:**
|
|
410
|
+
|
|
411
|
+
- All validations support i18n error messages
|
|
412
|
+
- Programmatic override support to conditionally skip validations
|
|
413
|
+
- Type-safe with full TypeScript support
|
|
414
|
+
- Can compare fields to other fields or constants
|
|
415
|
+
|
|
416
|
+
### Translations
|
|
417
|
+
|
|
418
|
+
The plugin includes comprehensive translations all payload supported languages
|
|
419
|
+
|
|
420
|
+
#### Using Translations
|
|
421
|
+
|
|
422
|
+
Translations are automatically merged when you use the plugin:
|
|
423
|
+
|
|
424
|
+
#### Translation Keys
|
|
425
|
+
|
|
426
|
+
Translation object shapes can be found in language files e.g `src/translations/languages/en.ts`
|
|
427
|
+
These keys are easily overridable by providing the custom translations to payloadcms as
|
|
428
|
+
|
|
429
|
+
```typescript
|
|
430
|
+
const customEnTranslations = {
|
|
431
|
+
'loadspark-core': {
|
|
432
|
+
users: {
|
|
433
|
+
roles: {
|
|
434
|
+
options: {
|
|
435
|
+
admin: 'Custom Admin Label',
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
i18n: {
|
|
444
|
+
fallbackLanguage: 'en',
|
|
445
|
+
supportedLanguages: {
|
|
446
|
+
en,
|
|
447
|
+
},
|
|
448
|
+
translations: {
|
|
449
|
+
en: customEnTranslations,
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Collections
|
|
455
|
+
|
|
456
|
+
#### Users Collection
|
|
457
|
+
|
|
458
|
+
The plugin provides a pre-configured Users collection with sensible defaults.
|
|
459
|
+
|
|
460
|
+
**Features:**
|
|
461
|
+
|
|
462
|
+
- Role-based access control
|
|
463
|
+
- System user support
|
|
464
|
+
- Automatic first-user admin assignment
|
|
465
|
+
- Overridable fields and configuration
|
|
466
|
+
- Built-in hooks for user management
|
|
467
|
+
|
|
468
|
+
**Default Fields:**
|
|
469
|
+
|
|
470
|
+
- `email` - User email (required)
|
|
471
|
+
- `role` - User role (user, admin, super-admin)
|
|
472
|
+
|
|
473
|
+
**Accessing User Collection Utilities:**
|
|
474
|
+
|
|
475
|
+
```typescript
|
|
476
|
+
import {
|
|
477
|
+
getUserFields,
|
|
478
|
+
createUserAccess,
|
|
479
|
+
readUserAccess,
|
|
480
|
+
updateUserAccess,
|
|
481
|
+
deleteUserAccess,
|
|
482
|
+
} from '@loadspark/core/users'
|
|
483
|
+
```
|
|
484
|
+
#### Types
|
|
485
|
+
|
|
486
|
+
```typescript
|
|
487
|
+
import type { CorePluginConfig, UserFieldOverrides } from '@loadspark/core/types'
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Utils
|
|
491
|
+
|
|
492
|
+
Utility functions for common operations
|
|
493
|
+
|
|
494
|
+
```typescript
|
|
495
|
+
import { getItemInNestedObject } from '@loadspark/core/utils'
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
## Overrides & Customization
|
|
500
|
+
|
|
501
|
+
One of the core principles of this plugin is that **everything is overridable**. This allows you to customize the plugin to your needs while maintaining a solid foundation
|
|
502
|
+
|
|
503
|
+
### Field-Level Overrides
|
|
504
|
+
|
|
505
|
+
All custom fields support overriding any Payload field property:
|
|
506
|
+
|
|
507
|
+
```typescript
|
|
508
|
+
AlertBoxField({
|
|
509
|
+
config: {
|
|
510
|
+
// Field-specific config
|
|
511
|
+
},
|
|
512
|
+
overrides: {
|
|
513
|
+
name: 'customName',
|
|
514
|
+
label: { en: 'Custom', de: 'Benutzerdefiniert' },
|
|
515
|
+
admin: {
|
|
516
|
+
condition: (data) => data.showAlert,
|
|
517
|
+
position: 'sidebar',
|
|
518
|
+
},
|
|
519
|
+
// Any other field property
|
|
520
|
+
},
|
|
521
|
+
})
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Access Overrides
|
|
525
|
+
|
|
526
|
+
Access rules can be overridden at the field or collection level
|
|
527
|
+
|
|
528
|
+
### Validation Overrides
|
|
529
|
+
|
|
530
|
+
Validations support programmatic override conditions that allow you to skip validation based on any condition:
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
{
|
|
534
|
+
name: 'publishDate',
|
|
535
|
+
type: 'date',
|
|
536
|
+
validate: (val, ctx) => {
|
|
537
|
+
return future(undefined, {
|
|
538
|
+
override: ctx.req?.user?.role === 'admin' // Conditionally skip validation
|
|
539
|
+
})(val, ctx)
|
|
540
|
+
},
|
|
541
|
+
}
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
The `override` option accepts a boolean value that you can set programmatically based on any condition (user role, field values, etc.). When `override: true`, the validation is skipped entirely.
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
## Documentation
|
|
549
|
+
|
|
550
|
+
### Field Documentation
|
|
551
|
+
|
|
552
|
+
Each custom field has detailed documentation in the `docs/` folder:
|
|
553
|
+
|
|
554
|
+
- [AlertBox](docs/AlertBox.md) - Display styled alerts
|
|
555
|
+
- [ColourText](docs/ColourText.md) - Text field with color options
|
|
556
|
+
- [Combo](docs/Combo.md) - Composite field combining multiple subfields
|
|
557
|
+
- [Number](docs/Number.md) - Enhanced number field
|
|
558
|
+
- [OpeningHours](docs/OpeningHours.md) - Opening hours management
|
|
559
|
+
- [Pattern](docs/Pattern.md) - Regex-based validation
|
|
560
|
+
- [Range](docs/Range.md) - Slider-based range input
|
|
561
|
+
- [Slug](docs/Slug.md) - Auto-generated URL slugs
|
|
562
|
+
- [Telephone](docs/Telephone.md) - Phone number input with validation
|
|
563
|
+
|
|
564
|
+
### Example Collections
|
|
565
|
+
|
|
566
|
+
Working examples of all fields can be found in `dev/collections/`:
|
|
567
|
+
|
|
568
|
+
- `alert-examples.ts`
|
|
569
|
+
- `colour-text-examples.ts`
|
|
570
|
+
- `combo-examples.ts`
|
|
571
|
+
- `number-examples.ts`
|
|
572
|
+
- `opening-hours-examples.ts`
|
|
573
|
+
- `pattern-examples.ts`
|
|
574
|
+
- `range-examples.ts`
|
|
575
|
+
- `slug-examples.ts`
|
|
576
|
+
- `telephone-examples.ts`
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Contributing
|
|
581
|
+
|
|
582
|
+
Contributions are currently **not yet** being accepted due to the rapid development pace and "move quick, break things" philosophy. However, we welcome:
|
|
583
|
+
|
|
584
|
+
- Bug reports
|
|
585
|
+
- Feature suggestions
|
|
586
|
+
- Documentation improvements
|
|
587
|
+
|
|
588
|
+
Once the plugin stabilizes, we'll open up for contributions. In the meantime, feel free to fork and customize for your needs!
|
|
589
|
+
|
|
590
|
+
### Development Setup
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
# Clone the repository
|
|
594
|
+
git clone https://github.com/Welle-IT/loadspark-plugin-core.git
|
|
595
|
+
|
|
596
|
+
# Install dependencies
|
|
597
|
+
pnpm install
|
|
598
|
+
|
|
599
|
+
# Build the project
|
|
600
|
+
pnpm build
|
|
601
|
+
|
|
602
|
+
# Run development server
|
|
603
|
+
pnpm dev
|
|
604
|
+
|
|
605
|
+
# Run tests
|
|
606
|
+
pnpm test
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
---
|
|
610
|
+
|
|
611
|
+
## License
|
|
612
|
+
|
|
613
|
+
This software is provided free of charge for use, modification, and distribution by any individual or legal entity ("Licensee") whose total annual gross revenue does not exceed USD 250,000.
|
|
614
|
+
|
|
615
|
+
If the Licensee’s annual gross revenue exceeds USD 250,000, a paid commercial license is required.
|
|
616
|
+
For commercial licensing, contact the [maintainer](mailto:welledigital882@gmail.com) at welledigital882@gmail.com.
|
|
617
|
+
|
|
618
|
+
See [LICENSE.md](LICENSE.md) for full license details.
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
<div align="center">
|
|
623
|
+
|
|
624
|
+
**Built with ❤️ for the PayloadCMS community**
|
|
625
|
+
|
|
626
|
+
[Website](https://loadspark.dev) • [GitHub](https://github.com/Welle-IT/loadspark-plugin-core) • [Documentation](#documentation)
|
|
627
|
+
|
|
628
|
+
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Access, FieldAccess } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Allows access to all resources if the user is a super-admin or admin but if the user is a regular user, it will only allow access to their own resources.
|
|
4
|
+
*/
|
|
5
|
+
export declare const userLinkedAccess: (opts?: import("payload").Where) => Access;
|
|
6
|
+
/**
|
|
7
|
+
* Allows access to all resources, regardless of authentication status.
|
|
8
|
+
*/
|
|
9
|
+
export declare const hasPublicAccess: Access;
|
|
10
|
+
/**
|
|
11
|
+
* Grants access to the field if the user is a super-admin.
|
|
12
|
+
* @param ctx
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare const hasSuperAdminFieldLevelAccess: FieldAccess;
|
|
16
|
+
/**
|
|
17
|
+
* Grants access to the field if the user is an admin or super-admin.
|
|
18
|
+
* @param ctx
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
export declare const hasAdminFieldLevelAccess: FieldAccess;
|
|
22
|
+
//# sourceMappingURL=accessors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../../src/access/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAKlD;;GAEG;AACH,eAAO,MAAM,gBAAgB,4CAAwB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAe,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAsD,CAAA;AAElG;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,WACwB,CAAA"}
|