import { create } from 'zustand'
import { persist } from 'zustand/middleware'

// Must stay in sync with waiter_pwa/src/store/tableColourStore.js DEFAULT_COLOURS.
// The PWA uses these as its hardcoded fallback; the manager uses them for "reset to defaults".

export const DEFAULT_COLOURS = {
  light: {
    free: {
      cardBg:    '#dde5ef',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#3d5270',
      badgeText: '#3d5270',
    },
    mine: {
      cardBg:    '#e8610a',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#e8610a',
    },
    open: {
      cardBg:    '#FF8F60',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#FF8F60',
    },
    partially_paid: {
      cardBg:    '#FFDC67',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#d4a800',
    },
    paid: {
      cardBg:    '#81D264',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#81D264',
    },
    kds_ready: {
      cardBg:    '#5dc936',
      cardBg2:   '#FFDC67',
      badgeBg:   'rgba(255,255,255,0.57)',
      badgeBg2:  'rgba(255,255,255,0.57)',
      nameText:  '#ffffff',
      nameText2: '#ffffff',
      badgeText: 'rgba(45,71,36,0.63)',
      badgeText2:'rgba(45,71,36,0.63)',
      flash:     true,
    },
  },
  dark: {
    free: {
      cardBg:    '#243044',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#94b8d4',
      badgeText: '#94b8d4',
    },
    mine: {
      cardBg:    '#e8610a',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#e8610a',
    },
    open: {
      cardBg:    '#FF8F60',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#FF8F60',
    },
    partially_paid: {
      cardBg:    '#FFDC67',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#d4a800',
    },
    paid: {
      cardBg:    '#81D264',
      badgeBg:   'rgba(255,255,255,0.92)',
      nameText:  '#ffffff',
      badgeText: '#81D264',
    },
    kds_ready: {
      cardBg:    '#5dc936',
      cardBg2:   '#FFDC67',
      badgeBg:   'rgba(255,255,255,0.57)',
      badgeBg2:  'rgba(255,255,255,0.57)',
      nameText:  '#ffffff',
      nameText2: '#ffffff',
      badgeText: 'rgba(45,71,36,0.63)',
      badgeText2:'rgba(45,71,36,0.63)',
      flash:     true,
    },
  },
}

const useTableColourStore = create(persist(
  (set) => ({
    colours: DEFAULT_COLOURS,
    setColour: (mode, status, slot, value) =>
      set(s => ({
        colours: {
          ...s.colours,
          [mode]: {
            ...s.colours[mode],
            [status]: {
              ...s.colours[mode][status],
              [slot]: value,
            },
          },
        },
      })),
    resetAll: () => set({ colours: DEFAULT_COLOURS }),
  }),
  { name: 'pos-table-colours-v2' }
))

export default useTableColourStore
