@akinon/projectzero 2.0.0-beta.4 → 2.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/app-template/.env.example +3 -0
  3. package/app-template/CHANGELOG.md +46 -0
  4. package/app-template/package.json +21 -20
  5. package/app-template/postcss.config.mjs +8 -0
  6. package/app-template/public/locales/en/common.json +4 -0
  7. package/app-template/public/locales/tr/common.json +4 -0
  8. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/cancellation/page.tsx +93 -4
  9. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/page.tsx +1 -1
  10. package/app-template/src/app/[commerce]/[locale]/[currency]/account/page.tsx +1 -1
  11. package/app-template/src/app/[commerce]/[locale]/[currency]/address/stores/page.tsx +2 -2
  12. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/page.tsx +1 -1
  13. package/app-template/src/app/[commerce]/[locale]/[currency]/basket/page.tsx +2 -2
  14. package/app-template/src/app/[commerce]/[locale]/[currency]/forms/[pk]/generate/page.tsx +1 -1
  15. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/checkout/page.tsx +7 -4
  16. package/app-template/src/assets/globals.scss +162 -34
  17. package/app-template/src/components/__tests__/badge.test.tsx +2 -2
  18. package/app-template/src/components/accordion.tsx +1 -1
  19. package/app-template/src/components/button.tsx +50 -35
  20. package/app-template/src/components/file-input.tsx +44 -2
  21. package/app-template/src/components/input.tsx +3 -3
  22. package/app-template/src/components/modal.tsx +1 -1
  23. package/app-template/src/components/select.tsx +1 -1
  24. package/app-template/src/components/shimmer.tsx +1 -1
  25. package/app-template/src/components/types/index.ts +4 -1
  26. package/app-template/src/middleware.ts +1 -0
  27. package/app-template/src/plugins.js +2 -1
  28. package/app-template/src/views/account/contact-form.tsx +3 -8
  29. package/app-template/src/views/account/content-header.tsx +2 -3
  30. package/app-template/src/views/account/order.tsx +1 -1
  31. package/app-template/src/views/account/orders/order-cancellation-item.tsx +24 -4
  32. package/app-template/src/views/anonymous-tracking/order-detail/index.tsx +1 -1
  33. package/app-template/src/views/category/category-header.tsx +11 -5
  34. package/app-template/src/views/category/category-info.tsx +1 -1
  35. package/app-template/src/views/checkout/auth.tsx +1 -1
  36. package/app-template/src/views/checkout/layout/header.tsx +1 -1
  37. package/app-template/src/views/checkout/steps/payment/options/credit-card/index.tsx +1 -1
  38. package/app-template/src/views/checkout/steps/payment/payment-option-buttons.tsx +4 -4
  39. package/app-template/src/views/checkout/steps/shipping/address-box.tsx +3 -3
  40. package/app-template/src/views/checkout/steps/shipping/addresses.tsx +1 -1
  41. package/app-template/src/views/checkout/summary.tsx +2 -2
  42. package/app-template/src/views/header/band.tsx +2 -2
  43. package/app-template/src/views/header/mini-basket.tsx +2 -2
  44. package/app-template/src/views/header/mobile-menu.tsx +6 -6
  45. package/app-template/src/views/header/navbar.tsx +1 -1
  46. package/app-template/src/views/header/pwa-back-button.tsx +1 -1
  47. package/app-template/src/views/header/search/index.tsx +16 -4
  48. package/app-template/src/views/header/search/results.tsx +1 -1
  49. package/app-template/src/views/header/user-menu.tsx +3 -1
  50. package/app-template/src/views/login/index.tsx +30 -6
  51. package/app-template/src/views/product/product-info.tsx +2 -2
  52. package/app-template/src/views/product/slider.tsx +1 -1
  53. package/app-template/src/views/product-pointer-banner-item.tsx +1 -1
  54. package/app-template/src/views/register/index.tsx +29 -4
  55. package/app-template/src/views/sales-contract-modal/index.tsx +17 -17
  56. package/app-template/src/widgets/footer-info.tsx +1 -1
  57. package/app-template/src/widgets/footer-menu.tsx +1 -1
  58. package/app-template/src/widgets/footer-subscription/index.tsx +1 -1
  59. package/app-template/src/widgets/home-stories-eng.tsx +1 -1
  60. package/app-template/tailwind.config.js +1 -137
  61. package/commands/plugins.ts +4 -0
  62. package/dist/commands/plugins.js +4 -0
  63. package/package.json +1 -1
  64. package/app-template/postcss.config.js +0 -6
@@ -22,19 +22,31 @@ export default function Search() {
22
22
  if (isSearchOpen) {
23
23
  inputRef.current?.focus();
24
24
  document.body.style.overflow = 'hidden';
25
+
26
+ const handleEscKey = (e: KeyboardEvent) => {
27
+ if (e.key === 'Escape') {
28
+ dispatch(closeSearch());
29
+ }
30
+ };
31
+
32
+ document.addEventListener('keydown', handleEscKey);
33
+ return () => {
34
+ document.removeEventListener('keydown', handleEscKey);
35
+ document.body.style.overflow = 'auto';
36
+ };
25
37
  }
26
38
 
27
39
  return () => {
28
40
  document.body.style.overflow = 'auto';
29
41
  };
30
- }, [isSearchOpen]);
42
+ }, [isSearchOpen, dispatch]);
31
43
 
32
44
  return (
33
45
  <>
34
46
  <div
35
47
  className={clsx(
36
48
  // 177px is the height of the header
37
- 'absolute bg-black opacity-75 w-screen h-screen transition duration-500 left-0 bottom-0 translate-y-full z-30',
49
+ 'absolute bg-black/75 w-screen h-screen transition duration-500 left-0 bottom-0 translate-y-full z-30',
38
50
  isSearchOpen && searchText
39
51
  ? 'visible opacity-100'
40
52
  : 'invisible opacity-0'
@@ -48,7 +60,7 @@ export default function Search() {
48
60
  isSearchOpen ? 'visible opacity-100' : 'invisible opacity-0'
49
61
  )}
50
62
  >
51
- <div className="max-w-screen-2xl mx-auto flex flex-col gap-12">
63
+ <div className="max-w-(--breakpoint-2xl) mx-auto flex flex-col gap-12">
52
64
  <div className="border-b border-gray-400 flex flex-col py-1.5 gap-2 self-center items-center md:flex-row">
53
65
  <span className="text-xl lg:text-2xl">
54
66
  {t('common.search.results_for')}
@@ -62,7 +74,7 @@ export default function Search() {
62
74
  router.push(`${ROUTES.LIST}/?search_text=${searchText}`);
63
75
  }
64
76
  }}
65
- className="border-0 text-2xl outline-none text-secondary placeholder:text-xl placeholder:lg:text-2xl"
77
+ className="border-0 text-2xl outline-hidden text-secondary placeholder:text-xl lg:placeholder:text-2xl"
66
78
  placeholder={t('common.search.placeholder')}
67
79
  ref={inputRef}
68
80
  />
@@ -80,7 +80,7 @@ export default function Results(props: ResultsProps) {
80
80
  <div className="grid grid-cols-2 sm:grid-cols-4 gap-8">
81
81
  {products.map((product, index) => (
82
82
  <Link href={product?.url} key={index} className="flex flex-col">
83
- <div className="relative aspect-[315/448]">
83
+ <div className="relative aspect-315/448">
84
84
  {product.extra.image ? (
85
85
  <Image
86
86
  src={product.extra.image}
@@ -36,7 +36,9 @@ export const UserMenu = (props: UserMenuProps) => {
36
36
  <ul
37
37
  className={clsx(
38
38
  'items-center divide-x divide-black',
39
- isMobile ? 'flex pt-2 text-sm pb-6 border-b mx-8' : 'hidden sm:flex'
39
+ isMobile
40
+ ? 'flex pt-2 text-sm pb-6 border-b border-gray-200 mx-8'
41
+ : 'hidden sm:flex'
40
42
  )}
41
43
  id="user-menu"
42
44
  >
@@ -103,10 +103,34 @@ export const Login = () => {
103
103
  )?.data as string[];
104
104
 
105
105
  fieldErrors?.forEach((item) => {
106
- setError(item.name as keyof LoginFormType, {
107
- type: 'custom',
108
- message: item.value.join(', ')
109
- });
106
+ let parsedValue: Record<string, string[]> | string[] = [];
107
+
108
+ if (typeof item.value === 'string') {
109
+ try {
110
+ parsedValue = JSON.parse(item.value);
111
+ } catch {
112
+ parsedValue = [item.value];
113
+ }
114
+ } else {
115
+ parsedValue = item.value;
116
+ }
117
+
118
+ if (Array.isArray(parsedValue)) {
119
+ setError(item.name as keyof LoginFormType, {
120
+ type: 'custom',
121
+ message: parsedValue.join(', '),
122
+ });
123
+ } else {
124
+ Object.keys(parsedValue).forEach((key) => {
125
+ const fieldName = key as keyof LoginFormType;
126
+ const errorMessages = parsedValue[key] as string[];
127
+
128
+ setError(fieldName, {
129
+ type: 'custom',
130
+ message: errorMessages.join(', '),
131
+ });
132
+ });
133
+ }
110
134
  });
111
135
 
112
136
  if (nonFieldErrors?.length) {
@@ -195,7 +219,7 @@ export const Login = () => {
195
219
  {t('auth.login.form.submit')}
196
220
  </Button>
197
221
 
198
- <p className="relative text-gray-600 text-center my-4 before:absolute before:h-[1px] before:w-5/12 before:bg-gray-600 before:bg-opacity-25 before:top-1/2 before:left-0 after:absolute after:h-[1px] after:w-5/12 after:bg-gray-600 after:bg-opacity-25 after:top-1/2 after:right-0">
222
+ <p className="relative text-gray-600 text-center my-4 before:absolute before:h-[1px] before:w-5/12 before:bg-gray-600/25 before:top-1/2 before:left-0 after:absolute after:h-[1px] after:w-5/12 after:bg-gray-600/25 after:top-1/2 after:right-0">
199
223
  {t('auth.login.form.or')}
200
224
  </p>
201
225
 
@@ -224,7 +248,7 @@ export const Login = () => {
224
248
  alt={provider.label}
225
249
  width={provider.label === 'Facebook' ? 10 : 18}
226
250
  height={18}
227
- className="flex-shrink-0"
251
+ className="shrink-0"
228
252
  />
229
253
  )}
230
254
 
@@ -159,7 +159,7 @@ export default function ProductInfo({ data }: ProductPageProps) {
159
159
  <>
160
160
  <div
161
161
  className={clsx(
162
- 'fixed bottom-0 left-0 w-1/2 h-14 z-[20] bg-white mt-0 border-t border-gray-500 items-center justify-center',
162
+ 'fixed bottom-0 left-0 w-1/2 h-14 z-20 bg-white mt-0 border-t border-gray-500 items-center justify-center',
163
163
  'sm:relative sm:flex sm:items-center sm:mt-5 sm:border-none'
164
164
  )}
165
165
  >
@@ -188,7 +188,7 @@ export default function ProductInfo({ data }: ProductPageProps) {
188
188
  <Button
189
189
  disabled={isAddToCartLoading || isAddToStockAlertLoading}
190
190
  className={clsx(
191
- 'fixed bottom-0 right-0 w-1/2 h-14 z-[20] flex items-center justify-center fill-primary-foreground',
191
+ 'fixed bottom-0 right-0 w-1/2 h-14 z-20 flex items-center justify-center fill-primary-foreground',
192
192
  'hover:fill-primary sm:relative sm:w-full sm:mt-3 sm:font-semibold sm:h-12'
193
193
  )}
194
194
  onClick={() => {
@@ -86,7 +86,7 @@ export default function ProductInfoSlider({ product }: ProductSliderItem) {
86
86
  </div>
87
87
 
88
88
  <div className="relative lg:col-span-5">
89
- <FavButton className="absolute right-8 top-6 z-[20] sm:hidden" />
89
+ <FavButton className="absolute right-8 top-6 z-20 sm:hidden" />
90
90
 
91
91
  <CarouselCore
92
92
  responsive={{
@@ -109,7 +109,7 @@ const ProductPointerWidget = (props: ProductPointerWidgetProps) => {
109
109
  hidden: buttonStatus
110
110
  })}
111
111
  >
112
- <div className="w-full h-full flex items-center gap-2 flex-shrink-0">
112
+ <div className="w-full h-full flex items-center gap-2 shrink-0">
113
113
  <Image
114
114
  src={productItem?.kwargs?.value?.card_image?.url}
115
115
  alt={productItem?.value?.alt}
@@ -143,6 +143,7 @@ export const Register = () => {
143
143
  if (registerResponse.error) {
144
144
  const errors: AuthError[] = JSON.parse(registerResponse.error);
145
145
 
146
+
146
147
  if (errors.find((error) => error.type === 'captcha')) {
147
148
  if (await validateCaptcha()) {
148
149
  onSubmit(data);
@@ -164,10 +165,34 @@ export const Register = () => {
164
165
  )?.data as string[];
165
166
 
166
167
  fieldErrors?.forEach((item) => {
167
- setError(item.name as keyof RegisterFormType, {
168
- type: 'custom',
169
- message: item.value.join(', ')
170
- });
168
+ let parsedValue: Record<string, string[]> | string[] = [];
169
+
170
+ if (typeof item.value === 'string') {
171
+ try {
172
+ parsedValue = JSON.parse(item.value);
173
+ } catch {
174
+ parsedValue = [item.value];
175
+ }
176
+ } else {
177
+ parsedValue = item.value;
178
+ }
179
+
180
+ if (Array.isArray(parsedValue)) {
181
+ setError(item.name as keyof RegisterFormType, {
182
+ type: 'custom',
183
+ message: parsedValue.join(', '),
184
+ });
185
+ } else {
186
+ Object.keys(parsedValue).forEach((key) => {
187
+ const fieldName = key as keyof RegisterFormType;
188
+ const errorMessages = parsedValue[key] as string[];
189
+
190
+ setError(fieldName, {
191
+ type: 'custom',
192
+ message: errorMessages.join(', '),
193
+ });
194
+ });
195
+ }
171
196
  });
172
197
 
173
198
  if (nonFieldErrors?.length) {
@@ -169,19 +169,19 @@ export const SalesContractModal = ({ data }: Props) => {
169
169
  </div>
170
170
  </div>
171
171
 
172
- <table className="w-full border">
172
+ <table className="w-full border border-gray-200">
173
173
  <thead className="text-sm">
174
174
  <tr>
175
- <th className="border font-normal text-left py-2 px-3">
175
+ <th className="border border-gray-200 font-normal text-left py-2 px-3">
176
176
  {t('account.sales_contract.product')}
177
177
  </th>
178
- <th className="border font-normal py-2 px-3">
178
+ <th className="border border-gray-200 font-normal py-2 px-3">
179
179
  {t('account.sales_contract.quantity')}
180
180
  </th>
181
- <th className="border font-normal text-left py-2 px-3">
181
+ <th className="border border-gray-200 font-normal text-left py-2 px-3">
182
182
  {t('account.sales_contract.product_price')}
183
183
  </th>
184
- <th className="border font-normal text-left py-2 px-3">
184
+ <th className="border border-gray-200 font-normal text-left py-2 px-3">
185
185
  {t('account.sales_contract.total_price')}
186
186
  </th>
187
187
  </tr>
@@ -191,20 +191,20 @@ export const SalesContractModal = ({ data }: Props) => {
191
191
  {data.orderitem_set.map((value, index) => {
192
192
  return (
193
193
  <tr key={index.toString()}>
194
- <td className="border font-light text-left py-2 px-3">
194
+ <td className="border border-gray-200 font-light text-left py-2 px-3">
195
195
  {value.product.name}
196
196
  </td>
197
- <td className="border font-light text-center py-2 px-3">
197
+ <td className="border border-gray-200 font-light text-center py-2 px-3">
198
198
  {value.quantity ? value.quantity : '1'}
199
199
  </td>
200
- <td className="border font-light text-center py-2 px-3">
200
+ <td className="border border-gray-200 font-light text-center py-2 px-3">
201
201
  <Price
202
202
  value={
203
203
  value.unit_price ? value.unit_price : value.price
204
204
  }
205
205
  />
206
206
  </td>
207
- <td className="border font-light text-right py-2 px-3">
207
+ <td className="border border-gray-200 font-light text-right py-2 px-3">
208
208
  <Price
209
209
  value={
210
210
  value.total_amount
@@ -222,12 +222,12 @@ export const SalesContractModal = ({ data }: Props) => {
222
222
  <tr>
223
223
  <th
224
224
  colSpan={3}
225
- className="border text-left py-2 px-3 font-normal"
225
+ className="border border-gray-200 text-left py-2 px-3 font-normal"
226
226
  >
227
227
  {t('account.sales_contract.products_total')}
228
228
  </th>
229
229
  <td
230
- className="border text-right py-2 px-3 font-light"
230
+ className="border border-gray-200 text-right py-2 px-3 font-light"
231
231
  colSpan={1}
232
232
  >
233
233
  <Price value={data.discount_amount} />
@@ -237,12 +237,12 @@ export const SalesContractModal = ({ data }: Props) => {
237
237
  <tr>
238
238
  <th
239
239
  colSpan={3}
240
- className="border text-left py-2 px-3 font-normal"
240
+ className="border border-gray-200 text-left py-2 px-3 font-normal"
241
241
  >
242
242
  {t('account.sales_contract.shipping_price')}
243
243
  </th>
244
244
  <td
245
- className="border text-right py-2 px-3 font-light"
245
+ className="border border-gray-200 text-right py-2 px-3 font-light"
246
246
  colSpan={1}
247
247
  >
248
248
  <Price value={data.shipping_amount} />
@@ -252,12 +252,12 @@ export const SalesContractModal = ({ data }: Props) => {
252
252
  <tr>
253
253
  <th
254
254
  colSpan={3}
255
- className="border text-left py-2 px-3 font-normal"
255
+ className="border border-gray-200 text-left py-2 px-3 font-normal"
256
256
  >
257
257
  {t('account.sales_contract.payment_type')}
258
258
  </th>
259
259
  <td
260
- className="border text-right py-2 px-3 font-light"
260
+ className="border border-gray-200 text-right py-2 px-3 font-light"
261
261
  colSpan={1}
262
262
  >
263
263
  {data.payment_option_slug}
@@ -267,12 +267,12 @@ export const SalesContractModal = ({ data }: Props) => {
267
267
  <tr>
268
268
  <th
269
269
  colSpan={3}
270
- className="border text-left py-2 px-3 font-normal"
270
+ className="border border-gray-200 text-left py-2 px-3 font-normal"
271
271
  >
272
272
  {t('account.sales_contract.order_total')}
273
273
  </th>
274
274
  <td
275
- className="border text-right py-2 px-3 font-light"
275
+ className="border border-gray-200 text-right py-2 px-3 font-light"
276
276
  colSpan={1}
277
277
  >
278
278
  <Price value={data.amount} />
@@ -19,7 +19,7 @@ export default async function FooterInfo() {
19
19
  const data = await getWidgetData<FooterInfoType>({ slug: 'footer-info' });
20
20
 
21
21
  return (
22
- <div className="flex flex-col w-full mb-4 pb-4 text-xs border-b md:border-b-0 md:pb-0 md:mb-0 md:w-3/12 lg:w-1/6 md:pr-7">
22
+ <div className="flex flex-col w-full mb-4 pb-4 text-xs border-b border-gray-200 md:border-b-0 md:pb-0 md:mb-0 md:w-3/12 lg:w-1/6 md:pr-7">
23
23
  <div className="flex items-center mb-8">
24
24
  <div className="mr-3">
25
25
  <svg
@@ -50,7 +50,7 @@ export default async function FooterMenu() {
50
50
 
51
51
  return (
52
52
  <div className="flex-1">
53
- <div className="hidden justify-between text-xs md:flex md:px-6 md:py-4 md:border-r md:border-l">
53
+ <div className="hidden justify-between text-xs md:flex md:px-6 md:py-4 md:border-r md:border-l md:border-gray-200">
54
54
  <div>
55
55
  <div className="mb-4 font-medium" data-testid="footer-categories">
56
56
  {data?.attributes?.first_column_title?.value}
@@ -19,7 +19,7 @@ export default async function FooterSubscription() {
19
19
  });
20
20
 
21
21
  return (
22
- <div className="py-4 border-t md:border-t-0 lg:pl-7">
22
+ <div className="py-4 border-t border-gray-200 md:border-t-0 lg:pl-7">
23
23
  <h3 className="mb-1 text-xs font-medium">
24
24
  {data?.attributes?.title?.value}
25
25
  </h3>
@@ -82,7 +82,7 @@ export default async function HomeStoriesEng() {
82
82
  {data?.attributes?.stories?.map((story, index) => {
83
83
  return (
84
84
  <div
85
- className="mr-4 flex-shrink-0 first:ms-4 w-32 md:w-32"
85
+ className="mr-4 shrink-0 first:ms-4 w-32 md:w-32"
86
86
  key={`story__${index}`}
87
87
  >
88
88
  <Link href={story?.value?.url} aria-label={story?.value?.alt}>
@@ -1,5 +1,4 @@
1
1
  const deepMerge = require('@akinon/next/utils/deep-merge');
2
- const defaultTheme = require('tailwindcss/defaultTheme');
3
2
  const plugins = require('./src/plugins');
4
3
  const fs = require('fs');
5
4
  const path = require('path');
@@ -19,148 +18,13 @@ if (themeName !== 'default' && fs.existsSync(themeConfigPath)) {
19
18
 
20
19
  const defaultConfig = {
21
20
  content: [
22
- './src/app/**/*.{js,ts,jsx,tsx}',
23
- './src/pages/**/*.{js,ts,jsx,tsx}',
24
- './src/components/**/*.{js,ts,jsx,tsx}',
25
- './src/views/**/*.{js,ts,jsx,tsx}',
26
- './src/widgets/**/*.{js,ts,jsx,tsx}',
27
- './src/hooks/**/*.{js,ts,jsx,tsx}',
28
- './src/utils/**/*.{js,ts,jsx,tsx}',
29
21
  ...plugins
30
22
  .map((plugin) => [
31
23
  `./node_modules/@akinon/${plugin}/**/*.{js,ts,jsx,tsx}`,
32
24
  `../../node_modules/@akinon/${plugin}/**/*.{js,ts,jsx,tsx}`
33
25
  ])
34
26
  .flat()
35
- ],
36
- theme: {
37
- extend: {
38
- fontSize: {
39
- '2xs': '0.5rem'
40
- },
41
- outline: {
42
- off: 'none'
43
- },
44
- width: {
45
- '1/10': '10%',
46
- '2/10': '20%',
47
- '3/10': '30%',
48
- '4/10': '40%',
49
- '5/10': '50%',
50
- '6/10': '60%',
51
- '7/10': '70%',
52
- '8/10': '80%',
53
- '9/10': '90%'
54
- },
55
- transitionProperty: {
56
- 'max-width': 'max-width'
57
- },
58
- backgroundImage: {
59
- 'skeleton-shimmer':
60
- 'linear-gradient(90deg, #d7d7d7 0%, #ebebeb 40%, #eeeeee 60%, #d7d7d7)'
61
- },
62
- keyframes: {
63
- 'skeleton-shimmer': {
64
- '100%': {
65
- transform: 'translateX(100%)'
66
- }
67
- }
68
- },
69
- animation: {
70
- 'skeleton-shimmer': 'skeleton-shimmer 2s linear infinite'
71
- }
72
- },
73
- colors: {
74
- transparent: 'transparent',
75
- white: '#ffffff',
76
- primary: {
77
- DEFAULT: '#000000',
78
- hover: '#181818',
79
- foreground: '#ffffff',
80
- 100: '#525252',
81
- 200: '#404040',
82
- 300: '#3d3d3d',
83
- 400: '#333333',
84
- 500: '#2d2d2d',
85
- 600: '#292929',
86
- 700: '#2b2b2b',
87
- 800: '#181818',
88
- 900: '#000000'
89
- },
90
- secondary: {
91
- DEFAULT: '#e95151',
92
- hover: '#d03838',
93
- foreground: '#ffffff',
94
- 100: '#ffb7b7',
95
- 200: '#ff9e9e',
96
- 300: '#ff8484',
97
- 400: '#ff6b6b',
98
- 500: '#e95151',
99
- 600: '#d72b01',
100
- 700: '#b61e1e',
101
- 800: '#9d0505',
102
- 900: '#830000'
103
- },
104
- black: {
105
- DEFAULT: '#000000',
106
- 100: '#525252',
107
- 200: '#404040',
108
- 300: '#3d3d3d',
109
- 400: '#333333',
110
- 500: '#2d2d2d',
111
- 600: '#292929',
112
- 700: '#2b2b2b',
113
- 800: '#181818',
114
- 900: '#000000'
115
- },
116
- gray: {
117
- DEFAULT: '#ebebeb',
118
- 25: '#fdfdfd',
119
- 50: '#f7f7f7',
120
- 100: '#f5f5f5',
121
- 150: '#f4f4f4',
122
- 200: '#eeeeee',
123
- 300: '#ebebeb',
124
- 400: '#d7d7d7',
125
- 450: '#d4d4d4',
126
- 500: '#c9c9c9',
127
- 600: '#9d9d9d',
128
- 700: '#686868',
129
- 800: '#615f62',
130
- 850: '#58585a',
131
- 900: '#4a4f54',
132
- 950: '#424242'
133
- },
134
- error: {
135
- DEFAULT: '#d72b01',
136
- 100: '#e20008'
137
- },
138
- success: {
139
- DEFAULT: '#7b9d76',
140
- 100: '#7b9d76'
141
- }
142
- },
143
- container: {
144
- center: true,
145
- padding: {
146
- DEFAULT: '0rem',
147
- sm: '2rem',
148
- '2xl': '0rem'
149
- }
150
- },
151
- fontFamily: {
152
- sans: ['Jost'].concat(defaultTheme.fontFamily.sans)
153
- },
154
- screens: {
155
- xs: '575px',
156
- sm: '640px',
157
- md: '768px',
158
- lg: '1024px',
159
- xl: '1170px',
160
- '2xl': '1370px'
161
- }
162
- },
163
- plugins: [require('@tailwindcss/typography')]
27
+ ]
164
28
  };
165
29
 
166
30
  if (Object.keys(themeOverrides).length === 0) {
@@ -113,6 +113,10 @@ export default async () => {
113
113
  {
114
114
  name: 'Tabby Payment Extension',
115
115
  value: 'pz-tabby-extension'
116
+ },
117
+ {
118
+ name: 'Tamara Payment Extension',
119
+ value: 'pz-tamara-extension'
116
120
  }
117
121
  ];
118
122
 
@@ -137,6 +137,10 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
137
137
  {
138
138
  name: 'Tabby Payment Extension',
139
139
  value: 'pz-tabby-extension'
140
+ },
141
+ {
142
+ name: 'Tamara Payment Extension',
143
+ value: 'pz-tamara-extension'
140
144
  }
141
145
  ];
142
146
  const prompt = new Prompt({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akinon/projectzero",
3
- "version": "2.0.0-beta.4",
3
+ "version": "2.0.0-beta.6",
4
4
  "private": false,
5
5
  "description": "CLI tool to manage your Project Zero Next project",
6
6
  "bin": {
@@ -1,6 +0,0 @@
1
- module.exports = {
2
- plugins: {
3
- tailwindcss: {},
4
- autoprefixer: {}
5
- }
6
- };